Skip to content

Conversation

@yulrang
Copy link
Contributor

@yulrang yulrang commented Nov 8, 2024

πŸ”– Issue Ticket

#96

✍️ Description

  • λ“œλ‘­λ‹€μš΄ κ°’ μ„ νƒμ‹œ 포컀슀 아웃 λ˜λ„λ‘ μˆ˜μ •
  • 크루 μƒˆλ‘œ λ§Œλ“€μ–΄μ§€λ©΄ λ§Œλ“€μ–΄μ§„ λ””ν…ŒμΌ νŽ˜μ΄μ§€λ‘œ μ΄λ™μ‹œν‚€κΈ°
  • 약속 작기 -> 약속 λ§Œλ“€κΈ°
  • μΊ˜λ¦°λ” μ‚¬μš©μ‹œ μœ νš¨μ„± 검사 였λ₯˜ μˆ˜μ •
  • κΈ€μž μž…λ ₯μ‹œ λ²¨λ¦¬λ°μ΄μ…˜ 였λ₯˜ μˆ˜μ •
  • 약속 λ§Œλ“€κΈ° 슀크둀 λ‘κ°œλ‘œ λ³΄μ΄λŠ” 문제
  • νžˆμ–΄λ‘œ λ²„νŠΌ 링크둜 ꡐ체
  • 파일 μΈν’‹μ—μ„œ 파일 μ„ νƒμ‹œ ν˜•μ‹, μ‚¬μ΄μ¦ˆ μ œν•œ

λ…Έμ…˜μ— μˆ˜μ •μ‚¬ν•­ 체크 ν‘œμ‹œ ν–ˆμŠ΅λ‹ˆλ‹€!

βœ… Checklist

PR

  • Branch Convention 확인

    feat/ 피쳐, fix/ 버그 μˆ˜μ •, refactor/ κ°œμ„ 

  • Base Branch 확인
  • μ μ ˆν•œ Label μ§€μ •
  • Assignee 및 Reviewer μ§€μ •

Test

  • 둜컬 μž‘λ™ 확인

Summary by CodeRabbit

릴리즈 λ…ΈνŠΈ

  • μ‹ κ·œ κΈ°λŠ₯

    • CreateCrewForm 및 CreateGatheringFormμ—μ„œ μž…λ ₯ μœ νš¨μ„± 검사 κ°œμ„ .
    • CreateCrewPageμ—μ„œ 제좜 ν›„ 크루 상세 νŽ˜μ΄μ§€λ‘œ λ¦¬λ””λ ‰μ…˜ κΈ°λŠ₯ μΆ”κ°€.
    • GatheringDetailModalPresenter의 λͺ¨λ‹¬ 제λͺ© λ³€κ²½ 및 λ ˆμ΄μ•„μ›ƒ κ°œμ„ .
    • DateTimePickerμ—μ„œ κ³Όκ±° λ‚ μ§œ 선택 λΉ„ν™œμ„±ν™” κΈ°λŠ₯ μΆ”κ°€.
  • 버그 μˆ˜μ •

    • μž…λ ₯ ν•„λ“œμ˜ 였λ₯˜ λ©”μ‹œμ§€ ν‘œμ‹œ 방식 κ°œμ„ .
    • FileInput μ»΄ν¬λ„ŒνŠΈμ˜ 미리보기 μƒνƒœ μˆ˜μ •.
  • UI/UX κ°œμ„ 

    • 검색 μž…λ ₯λž€μ˜ ν”Œλ ˆμ΄μŠ€ν™€λ” ν…μŠ€νŠΈ μ—…λ°μ΄νŠΈ.
    • λͺ¨λ‹¬ 및 λ²„νŠΌ μŠ€νƒ€μΌ κ°œμ„ μ„ ν†΅ν•œ μ‚¬μš©μž κ²½ν—˜ ν–₯상.
    • HeroCrew μ»΄ν¬λ„ŒνŠΈμ˜ λ²„νŠΌ κΈ°λŠ₯을 링크둜 ν†΅ν•©ν•˜μ—¬ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ κ°œμ„ .
  • 데이터 μ—…λ°μ΄νŠΈ

    • μ‚¬μš©μž 및 크루 μ •λ³΄μ˜ μƒˆλ‘œμš΄ μƒ˜ν”Œ 데이터 μΆ”κ°€ 및 κΈ°μ‘΄ 데이터 μˆ˜μ •.

@yulrang yulrang added the fix label Nov 8, 2024
@yulrang yulrang self-assigned this Nov 8, 2024
@coderabbitai
Copy link

coderabbitai bot commented Nov 8, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

이 ν’€ λ¦¬ν€˜μŠ€νŠΈλŠ” μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ˜ 폼 처리 및 μœ νš¨μ„± 검사 λ‘œμ§μ„ κ°œμ„ ν•˜λŠ” λ³€κ²½ 사항을 ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. CreateCrewFormκ³Ό CreateGatheringFormμ—μ„œ react-hook-form 라이브러리의 trigger 및 Controller λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯ ν•„λ“œμ˜ μœ νš¨μ„±μ„ μˆ˜λ™μœΌλ‘œ κ²€μ‚¬ν•˜κ³ , 였λ₯˜ λ©”μ‹œμ§€λ₯Ό 각 ν•„λ“œ μ•„λž˜μ— ν‘œμ‹œν•˜λ„λ‘ μ—…λ°μ΄νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λͺ¨λ‹¬ 제λͺ© λ³€κ²½ 및 μŠ€νƒ€μΌ μ‘°μ •, 데이터 ꡬ쑰 ν™•μž₯ λ“±μ˜ μˆ˜μ •μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Changes

파일 경둜 λ³€κ²½ μš”μ•½
src/app/(crew)/crew/_components/create-crew-form/index.tsx CreateCrewForm μ»΄ν¬λ„ŒνŠΈμ˜ μœ νš¨μ„± 검사 둜직 κ°œμ„ , title ν•„λ“œμ˜ trigger λ©”μ†Œλ“œ μ‚¬μš©, subLocation ν•„λ“œ ν•„μˆ˜ν™”, 였λ₯˜ λ©”μ‹œμ§€ ν‘œμ‹œ 방식 μ—…λ°μ΄νŠΈ, isSubmitting μƒνƒœ μΆ”κ°€
src/app/(crew)/crew/_components/create-gathering-form/create-gathering-form.stories.tsx initialValue 객체의 totalCount 속성을 0μ—μ„œ 2둜 λ³€κ²½, λͺ¨λ‹¬ 제λͺ©μ„ "약속 작기"μ—μ„œ "약속 λ§Œλ“€κΈ°"둜 λ³€κ²½
src/app/(crew)/crew/_components/create-gathering-form/index.tsx CreateGatheringFormμ—μ„œ register λ©”μ†Œλ“œλ₯Ό Controller둜 λ³€κ²½, useForm ν›…μ˜ μ΄ˆκΈ°κ°’ μ„€μ • 및 μœ νš¨μ„± 검사 둜직 μ—…λ°μ΄νŠΈ, useWatch ν›… μΆ”κ°€
src/app/(crew)/crew/_components/create-gathering-modal/presenter.tsx λͺ¨λ‹¬ 제λͺ© λ³€κ²½, μŠ€νƒ€μΌ μ—…λ°μ΄νŠΈ, scrollAreaComponent prop μΆ”κ°€, ꡬ쑰 λ‹¨μˆœν™”
src/app/(crew)/crew/_components/gathering-detail-modal/presenter.tsx scrollAreaComponent μΆ”κ°€, λͺ¨λ‹¬ ꡬ쑰 μž¬μ‘°μ •, λ‚ μ§œ 및 μ‹œκ°„ 포맷 μ—…λ°μ΄νŠΈ
src/app/(crew)/crew/create/page.tsx useRouter μΆ”κ°€, handleSubmit ν•¨μˆ˜μ—μ„œ router.push()λ₯Ό μ‚¬μš©ν•˜μ—¬ 제좜 ν›„ νŽ˜μ΄μ§€ 이동
src/app/(crew)/crew/detail/[id]/page.tsx μ„Ήμ…˜ 제λͺ©μ„ "크루 약속 작기"μ—μ„œ "크루 약속"으둜 λ³€κ²½
src/app/(crew)/page.tsx TextInput의 ν”Œλ ˆμ΄μŠ€ν™€λ” ν…μŠ€νŠΈ λ³€κ²½, λ ˆμ΄μ•„μ›ƒ μ‘°μ •
src/app/_components/hero/hero-crew.tsx Button μ»΄ν¬λ„ŒνŠΈμ˜ import 경둜 λ³€κ²½, Link μ»΄ν¬λ„ŒνŠΈλ‘œ λŒ€μ²΄
src/components/common/input/drop-down/index.tsx DropDownProps μΈν„°νŽ˜μ΄μŠ€μ— error prop μΆ”κ°€, 둜컬 error μƒνƒœ 제거
src/components/common/input/file-input-wrap/file-input/index.tsx isBlur prop이 true일 λ•Œ 미리보기 μƒνƒœ μ‘°μ •
src/components/common/input/file-input-wrap/file-sample/index.tsx convertUrlToFile 비동기 ν•¨μˆ˜ 제거
tailwind.config.ts flexBasis 속성 κ°’ λ³€κ²½
mock.json μ‚¬μš©μž κ°€μž…, 둜그인, 크루, λͺ¨μž„ 및 리뷰 데이터 ꡬ쑰 ν™•μž₯
src/mock/review-data.ts 리뷰 λ°μ΄ν„°μ˜ createdAt νƒ€μž„μŠ€νƒ¬ν”„ 포맷 μ—…λ°μ΄νŠΈ
src/utils/is-today.ts λ‚ μ§œ 비ꡐ 둜직 μˆ˜μ •, ν•œκ΅­ μ‹œκ°„λŒ€ 반영
src/components/common/input/date-time-picker/index.tsx Calendar μ»΄ν¬λ„ŒνŠΈμ— excludeDate prop μΆ”κ°€, κ³Όκ±° λ‚ μ§œ 선택 λΉ„ν™œμ„±ν™”

Possibly related PRs

  • Hofix/index pageΒ #91: CreateCrewForm μ»΄ν¬λ„ŒνŠΈμ˜ 폼 μœ νš¨μ„± 검사 및 μƒνƒœ 관리 μ—…λ°μ΄νŠΈμ™€ κ΄€λ ¨λœ λ³€κ²½ 사항.

Suggested labels

pages, api

Suggested reviewers

  • HaeJungg
  • User850413
  • minkyung5x5

🐰 λ³€ν™”μ˜ λ°”λžŒμ΄ λΆˆμ–΄μ™€
폼이 λ”μš± λ˜‘λ˜‘ν•΄μ‘Œμ£ !
였λ₯˜λŠ” 이제 μ•ˆλ…•,
μœ νš¨μ„± κ²€μ‚¬λŠ” μ¦κ±°μ›Œ!
λͺ¨λ‹¬λ„ μƒˆλ‘­κ²Œ λ³€μ‹ ,
μ‚¬μš©μž κ²½ν—˜μ΄ ν•œμΈ΅ 더!
ν•¨κ»˜ λ›°μ–΄λ³΄μ•„μš”, 크루와 ν•¨κ»˜! 🌟

Warning

There were issues while running the following tools:

πŸ”§ eslint
next.config.mjs
Oops! Something went wrong! :(

ESLint: 8.57.1

ESLint couldn't determine the plugin "react-hooks" uniquely.

- /node_modules/eslint-plugin-react-hooks/index.js (loaded in ".eslintrc.js")
- /git/node_modules/eslint-config-next/node_modules/eslint-plugin-react-hooks/index.js (loaded in ".eslintrc.js Β» eslint-config-next/core-web-vitals Β» /home/jailuser/git/node_modules/eslint-config-next/index.js Β» plugin:react-hooks/recommended")

Please remove the "plugins" setting from either config or remove either plugin installation.

If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❀️ Share
πŸͺ§ Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@yulrang yulrang linked an issue Nov 8, 2024 that may be closed by this pull request
7 tasks
@github-actions
Copy link

github-actions bot commented Nov 8, 2024

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

🧹 Outside diff range and nitpick comments (10)
src/app/_components/hero/hero-crew.tsx (1)

24-29: Link μ»΄ν¬λ„ŒνŠΈλ‘œμ˜ μ „ν™˜μ΄ 잘 μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

Button을 Link둜 κ΅μ²΄ν•œ 것은 λ‹€μŒκ³Ό 같은 μž₯점이 μžˆμŠ΅λ‹ˆλ‹€:

  • μ‹œλ§¨ν‹± HTML ꡬ쑰 κ°œμ„ 
  • 인증 μƒνƒœμ— λ”°λ₯Έ 쑰건뢀 λΌμš°νŒ…
  • μŠ€νƒ€μΌλ§ 일관성 μœ μ§€

ν•˜λ‚˜μ˜ κ°œμ„  사항을 μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€:

Link μ»΄ν¬λ„ŒνŠΈμ— aria-label을 μΆ”κ°€ν•˜μ—¬ 접근성을 λ”μš± ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€:

 <Link
   href={isAuth ? '/crew/create' : '/login'}
   className="btn-filled -translate-y-1 items-center rounded-xl px-4 py-2 text-sm font-semibold md:h-11 md:text-lg md:font-bold"
+  aria-label={isAuth ? 'μƒˆλ‘œμš΄ 크루 λ§Œλ“€κΈ°' : 'λ‘œκ·ΈμΈν•˜μ—¬ 크루 λ§Œλ“€κΈ°'}
 >
   크루 λ§Œλ“€κΈ°
 </Link>
src/components/common/input/drop-down/index.tsx (3)

Line range hint 16-32: μ»΄ν¬λ„ŒνŠΈ props에 λŒ€ν•œ λ¬Έμ„œν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

각 prop의 λͺ©μ κ³Ό μ‚¬μš©λ²•μ„ μ„€λͺ…ν•˜λŠ” JSDoc λ¬Έμ„œλ₯Ό μΆ”κ°€ν•˜λ©΄ μ»΄ν¬λ„ŒνŠΈμ˜ μž¬μ‚¬μš©μ„±μ΄ ν–₯상될 것 κ°™μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ:

/**
 * @param variant - λ“œλ‘­λ‹€μš΄μ˜ μŠ€νƒ€μΌ λ³€ν˜•('default' λ˜λŠ” 'sort')
 * @param data - λ“œλ‘­λ‹€μš΄μ— ν‘œμ‹œλ  μ˜΅μ…˜ 데이터
 * @param name - 폼 제좜 μ‹œ μ‚¬μš©λ  ν•„λ“œ 이름
 * ...
 */

33-52: μŠ€νƒ€μΌ 둜직 μ΅œμ ν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

ν˜„μž¬ μŠ€νƒ€μΌ λ‘œμ§μ— μ€‘λ³΅λœ μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μƒμˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ λ‹€μŒκ³Ό 같이 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

const STYLE_VARIANTS = {
  default: {
    focused: 'bg-black text-white placeholder:text-white',
    normal: 'bg-white text-gray-800 placeholder-gray-800'
  },
  sort: {
    focused: 'bg-black text-white placeholder:text-white sort-bg-on pl-10',
    normal: 'bg-white text-gray-800 placeholder-gray-800 sort-bg pl-10'
  }
} as const;

const getFocusStyle = () => {
  const styles = STYLE_VARIANTS[variant];
  return isFocused ? styles.focused : styles.normal;
};

Line range hint 60-102: μ ‘κ·Όμ„± κ°œμ„ μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

ν˜„μž¬ κ΅¬ν˜„μ— λ‹€μŒκ³Ό 같은 μ ‘κ·Όμ„± κ΄€λ ¨ 속성듀이 λˆ„λ½λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

  1. aria-label λ˜λŠ” aria-labelledby 속성 μΆ”κ°€
  2. aria-invalid 속성을 error propκ³Ό 연동
  3. μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό μœ„ν•œ aria-describedby 속성 μΆ”κ°€
<Select
  error={error}
+ aria-label={placeholder}
+ aria-invalid={!!error}
+ aria-describedby={error ? `${name}-error` : undefined}
  // ... κΈ°μ‘΄ props
/>
src/components/common/input/file-input-wrap/file-input/index.tsx (1)

Line range hint 1-124: μ ‘κ·Όμ„± 및 였λ₯˜ 처리 κ°œμ„ μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λ‹€μŒ μ‚¬ν•­λ“€μ˜ κ°œμ„ μ„ κ³ λ €ν•΄ μ£Όμ„Έμš”:

  1. 파일 크기 μ œν•œ 및 검증
  2. 이미지 μ—…λ‘œλ“œ μ‹€νŒ¨ μ‹œ μ‚¬μš©μž ν”Όλ“œλ°±
  3. 슀크린 리더λ₯Ό μœ„ν•œ aria-label μΆ”κ°€
  4. λ‘œλ”© μƒνƒœ ν‘œμ‹œ

λ‹€μŒκ³Ό 같이 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

 export interface FileInputProps {
   value: File | StaticImageData | null;
   onChange: (value: File | StaticImageData | null) => void;
   isBlur: boolean;
+  maxSizeInMB?: number;
+  onError?: (error: string) => void;
 }

-export default function FileInput({ value, isBlur, onChange }: FileInputProps) {
+export default function FileInput({ 
+  value, 
+  isBlur, 
+  onChange, 
+  maxSizeInMB = 5,
+  onError 
+}: FileInputProps) {
   const [preview, setPreview] = useState<string | null>(null);
   const [fileReader, setFileReader] = useState<FileReader | null>(null);
+  const [isLoading, setIsLoading] = useState(false);
   
   const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
     if (e.target.files && e.target.files.length > 0) {
       const file = e.target.files[0];
+      if (file.size > maxSizeInMB * 1024 * 1024) {
+        onError?.(`파일 ν¬κΈ°λŠ” ${maxSizeInMB}MB μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.`);
+        return;
+      }
+      setIsLoading(true);
       onChange(file);
       e.target.value = '';
       debouncedHandleFileLoad(file);
     }
   };

   const handleFileLoad = (file: File) => {
     if (fileReader) {
       fileReader.abort();
     }

     const reader = new FileReader();
     setFileReader(reader);

     reader.onloadend = () => {
       setPreview(reader.result as string);
+      setIsLoading(false);
     };
+    
+    reader.onerror = () => {
+      setIsLoading(false);
+      onError?.('이미지 λ‘œλ“œ 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.');
+    };
     
     reader.readAsDataURL(file);
   };

   return (
     <div className="min-w-1/4 relative flex aspect-square w-1/4 gap-2">
       <label
         htmlFor="item-file"
         className="flex h-full w-full cursor-pointer flex-col items-center justify-center rounded-xl bg-neutral-100"
+        aria-label="이미지 μ—…λ‘œλ“œ"
       >
         {/* ... */}
       </label>
       {/* ... */}
+      {isLoading && (
+        <div className="absolute inset-0 flex items-center justify-center bg-neutral-100/50">
+          <span className="text-sm text-gray-500">λ‘œλ”©μ€‘...</span>
+        </div>
+      )}
     </div>
   );
 }
src/app/(crew)/crew/_components/gathering-detail-modal/presenter.tsx (2)

45-50: 이미지 μ΅œμ ν™”λ₯Ό μœ„ν•œ μ œμ•ˆ

Next.js의 Image μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ΄ μ μ ˆν•˜λ‚˜, μ„±λŠ₯ μ΅œμ ν™”λ₯Ό μœ„ν•΄ λͺ‡ κ°€μ§€ 속성을 μΆ”κ°€ν•˜λ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 μˆ˜μ •μ„ μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€:

 <Image
   src={data?.imageUrl}
   alt="λͺ¨μž„ 이미지"
   fill
   style={{ width: '100%', height: '100%', objectFit: 'cover' }}
+  priority={false}
+  sizes="(max-width: 520px) 100vw, 520px"
+  quality={75}
 />

120-146: 쑰건뢀 λ Œλ”λ§ 둜직 κ°œμ„  ν•„μš”

ν˜„μž¬ λ²„νŠΌλ“€μ˜ 쑰건뢀 λ Œλ”λ§μ΄ μ€‘μ²©λœ 쑰건문으둜 κ΅¬ν˜„λ˜μ–΄ μžˆμ–΄ 가독성이 λ–¨μ–΄μ§‘λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같은 λ¦¬νŒ©ν† λ§μ„ μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€:

-{!data?.isParticipant && (
-  <Button /* ... */ >μ°Έμ—¬ν•˜κΈ°</Button>
-)}
-{data?.isParticipant && !data?.isGatherCaptain && (
-  <Button /* ... */ >νƒˆν‡΄ν•˜κΈ°</Button>
-)}
-{data?.isGatherCaptain && (
-  <Button /* ... */ >μ‚­μ œν•˜κΈ°</Button>
-)}
+{renderActionButton()}

+function renderActionButton() {
+  if (data?.isGatherCaptain) {
+    return <Button onClick={onDelete}>μ‚­μ œν•˜κΈ°</Button>;
+  }
+  if (data?.isParticipant) {
+    return <Button onClick={onExit}>νƒˆν‡΄ν•˜κΈ°</Button>;
+  }
+  return <Button onClick={onJoin}>μ°Έμ—¬ν•˜κΈ°</Button>;
+}
src/app/(crew)/crew/_components/create-gathering-form/index.tsx (2)

29-39: 폼 μ΄ˆκΈ°ν™” 및 μƒνƒœ 관리 κ°œμ„  ν•„μš”

useForm의 섀정이 μ μ ˆν•˜λ‚˜, λ‹€μŒ 사항듀을 κ³ λ €ν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€:

  1. defaultValuesκ°€ λˆ„λ½λœ ν•„λ“œκ°€ μžˆμ„ 경우 controlled/uncontrolled μ»΄ν¬λ„ŒνŠΈ κ²½κ³ κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. mode: 'onBlur'λŠ” μ‚¬μš©μž κ²½ν—˜ μΈ‘λ©΄μ—μ„œ 즉각적인 ν”Όλ“œλ°±μ΄ λΆ€μ‘±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 κ°œμ„ ν•΄λ³΄μ„Έμš”:

const {
  control,
  handleSubmit,
  trigger,
  formState: { errors, isValid },
} = useForm<CreateGatheringRequestType>({
  defaultValues: {
+   title: data.title || '',
+   location: data.location || '',
+   introduce: data.introduce || '',
+   imageUrl: data.imageUrl || '',
+   dateTime: data.dateTime || '',
+   totalCount: data.totalCount || 4,
  },
-  mode: 'onBlur',
+  mode: 'onChange',
});

175-194: 인원 수 μž…λ ₯ ν•„λ“œμ˜ UX κ°œμ„  ν•„μš”

ν˜„μž¬ κ΅¬ν˜„μ—μ„œ λ‹€μŒ 사항듀이 κ°œμ„ λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€:

  1. μ—λŸ¬ λ©”μ‹œμ§€κ°€ μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  2. μ΅œμ†Œ/μ΅œλŒ€ μΈμ›μˆ˜μ— λŒ€ν•œ μ•ˆλ‚΄κ°€ μ—†μŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 κ°œμ„ ν•΄λ³΄μ„Έμš”:

<NumberInput
  {...field}
  id="gathering-totalCount"
  variant="filled"
  min={4}
  max={20}
+ error={errors.totalCount?.message}
+ description="μ΅œμ†Œ 4λͺ…, μ΅œλŒ€ 20λͺ…κΉŒμ§€ μ„€μ • κ°€λŠ₯ν•©λ‹ˆλ‹€."
  classNames={{
    input:
      'h-11 py-2.5 px-4 bg-gray-100 placeholder:text-gray-400 font-pretendard text-base font-medium rounded-xl',
+   error: 'text-red-500 text-sm mt-1',
+   description: 'text-gray-500 text-sm mt-1'
  }}
- placeholder="μžμ„Έν•œ λͺ¨μ§‘ 정원을 μž…λ ₯ν•΄μ£Όμ„Έμš”."
+ placeholder="4-20λͺ…"
/>
src/app/(crew)/crew/_components/create-crew-form/index.tsx (1)

86-91: 제λͺ© μœ νš¨μ„± 검사 둜직 κ°œμ„ μ„ μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€.

ν˜„μž¬ 곡백 제거 및 μ‹€μ‹œκ°„ 검증이 잘 κ΅¬ν˜„λ˜μ–΄ μžˆμœΌλ‚˜, λ‹€μŒκ³Ό 같은 μΆ”κ°€ 검증을 κ³ λ €ν•΄λ³΄μ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€:

  • μ΅œμ†Œ 길이 μ œν•œ (예: 2자 이상)
  • 특수문자 μ œν•œ

λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•΄λ³΄μ‹œλŠ” 건 μ–΄λ–¨κΉŒμš”?:

 rules={{
   required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
   validate: (value) => {
     if (value && value.trim().length > 0) {
+      if (value.trim().length < 2) {
+        return 'μ΅œμ†Œ 2자 이상 μž…λ ₯ν•΄μ£Όμ„Έμš”.';
+      }
+      if (!/^[κ°€-힣a-zA-Z0-9\s]+$/.test(value)) {
+        return 'νŠΉμˆ˜λ¬ΈμžλŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.';
+      }
       return true;
     }
     return 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.';
   },
 }}

Also applies to: 98-101

πŸ“œ Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 564317b and 0683f5a.

πŸ“’ Files selected for processing (14)
  • src/app/(crew)/crew/_components/create-crew-form/index.tsx (6 hunks)
  • src/app/(crew)/crew/_components/create-gathering-form/create-gathering-form.stories.tsx (2 hunks)
  • src/app/(crew)/crew/_components/create-gathering-form/index.tsx (5 hunks)
  • src/app/(crew)/crew/_components/create-gathering-modal/presenter.tsx (1 hunks)
  • src/app/(crew)/crew/_components/gathering-detail-modal/presenter.tsx (1 hunks)
  • src/app/(crew)/crew/create/page.tsx (2 hunks)
  • src/app/(crew)/crew/detail/[id]/page.tsx (1 hunks)
  • src/app/(crew)/page.tsx (2 hunks)
  • src/app/_components/hero/hero-crew.tsx (2 hunks)
  • src/components/common/input/drop-down/index.tsx (5 hunks)
  • src/components/common/input/file-input-wrap/file-input/index.tsx (1 hunks)
  • src/components/common/input/file-input-wrap/file-sample/file-sample.stories.tsx (1 hunks)
  • src/components/common/input/file-input-wrap/file-sample/index.tsx (0 hunks)
  • tailwind.config.ts (1 hunks)
πŸ’€ Files with no reviewable changes (1)
  • src/components/common/input/file-input-wrap/file-sample/index.tsx
βœ… Files skipped from review due to trivial changes (1)
  • src/app/(crew)/crew/detail/[id]/page.tsx
πŸ”‡ Additional comments (16)
src/app/(crew)/crew/_components/create-gathering-modal/presenter.tsx (2)

25-25: LGTM! 타이틀 λ³€κ²½ 및 ꡬ쑰 κ°œμ„ μ΄ 잘 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

"약속 작기"μ—μ„œ "약속 λ§Œλ“€κΈ°"둜의 타이틀 λ³€κ²½κ³Ό μ»΄ν¬λ„ŒνŠΈ ꡬ쑰의 λ‹¨μˆœν™”κ°€ 잘 μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

Also applies to: 40-41


31-31: 슀크둀 λ™μž‘ κ°œμ„ μ΄ 효과적으둜 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

overflow: 'hidden'κ³Ό ScrollArea.Autosize μ»΄ν¬λ„ŒνŠΈλ₯Ό ν™œμš©ν•œ 슀크둀 처리 방식이 이쀑 μŠ€ν¬λ‘€λ°” 문제λ₯Ό 효과적으둜 ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. 특히:

  • Modal content의 overflow: 'hidden'이 μ™ΈλΆ€ μŠ€ν¬λ‘€μ„ μ œν•œ
  • ScrollArea.Autosizeκ°€ λ‚΄λΆ€ μ½˜ν…μΈ μ— 맞좰 μžλ™μœΌλ‘œ 크기 쑰절

Also applies to: 38-38

src/app/_components/hero/hero-crew.tsx (2)

4-4: 둜컬 Button μ»΄ν¬λ„ŒνŠΈλ‘œμ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ μ μ ˆν•©λ‹ˆλ‹€.

Mantine μ»΄ν¬λ„ŒνŠΈμ—μ„œ 둜컬 μ»΄ν¬λ„ŒνŠΈλ‘œμ˜ μ „ν™˜μ΄ 일관성 있게 μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.


11-11: cursor-default μŠ€νƒ€μΌ 적용이 μ μ ˆν•©λ‹ˆλ‹€.

μ„Ήμ…˜ 전체에 cursor-defaultλ₯Ό μ μš©ν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ΄ κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

src/app/(crew)/crew/create/page.tsx (3)

4-4: μ μ ˆν•œ λΌμš°ν„° μž„ν¬νŠΈ μΆ”κ°€

Next.js의 ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜μ„ μœ„ν•œ useRouter μž„ν¬νŠΈκ°€ μ˜¬λ°”λ₯΄κ²Œ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


10-10: λΌμš°ν„° μ΄ˆκΈ°ν™” 확인

μ»΄ν¬λ„ŒνŠΈ μ΅œμƒμœ„ λ ˆλ²¨μ—μ„œ useRouter 훅이 μ˜¬λ°”λ₯΄κ²Œ μ΄ˆκΈ°ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


23-24: πŸ› οΈ Refactor suggestion

API 연동 및 μ—λŸ¬ 처리 κ°œμ„  ν•„μš”

ν˜„μž¬ κ΅¬ν˜„μ—μ„œ λ‹€μŒ 사항듀을 κ°œμ„ ν•˜λ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€:

  1. ν•˜λ“œμ½”λ”©λœ ID 값은 μ‹€μ œ API 연동 μ‹œ μ œκ±°λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  2. λΌμš°νŒ… μ‹€νŒ¨ μ‹œμ˜ μ—λŸ¬ μ²˜λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€.
  3. API 응닡 성곡/μ‹€νŒ¨μ— λ”°λ₯Έ μ‚¬μš©μž ν”Όλ“œλ°±μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 κ°œμ„ ν•˜λŠ” 것을 μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€:

-  const handleSubmit = () => {
+  const handleSubmit = async () => {
     // TODO : POST API μ—°κ²°
-    const response = { id: 1 };
-    router.push(`/crew/detail/${response?.id}`);
+    try {
+      // const response = await createCrew(formData);
+      const response = { id: 1 }; // μž„μ‹œ 응닡
+      await router.push(`/crew/detail/${response?.id}`);
+    } catch (error) {
+      console.error('크루 생성 쀑 였λ₯˜ λ°œμƒ:', error);
+      // μ—λŸ¬ 처리 둜직 μΆ”κ°€ ν•„μš”
+    }
   };

API 연동 μ‹œ λ‹€μŒ 슀크립트둜 κ΄€λ ¨ μ½”λ“œλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€:

βœ… Verification successful

API κ΅¬ν˜„ νŒ¨ν„΄ 확인 및 λ¦¬νŒ©ν† λ§ μ œμ•ˆ 검증 μ™„λ£Œ

κΈ°μ‘΄ μ½”λ“œλ² μ΄μŠ€ 뢄석 κ²°κ³Ό:

  • fetchApi 기반의 API κ΅¬ν˜„ νŒ¨ν„΄μ΄ 확인됨 (get-crew-list.ts, get-crew-detail.ts)
  • μ—λŸ¬ μ²˜λ¦¬κ°€ ν¬ν•¨λœ API 호좜 νŒ¨ν„΄ 쑴재 (get-crew-list.ts의 try-catch ꡬ문)
  • 크루 생성 APIλŠ” 아직 κ΅¬ν˜„λ˜μ§€ μ•ŠμŒ

μ œμ•ˆλœ λ¦¬νŒ©ν† λ§μ€ μ μ ˆν•˜λ©° λ‹€μŒκ³Ό 같이 보완이 ν•„μš”ν•©λ‹ˆλ‹€:

+  const handleSubmit = async () => {
+    try {
+      const response = await fetchApi('/crews', {
+        method: 'POST',
+        headers: { 'Content-Type': 'application/json' },
+        body: JSON.stringify(formData)
+      });
+      await router.push(`/crew/detail/${response.id}`);
+    } catch (error) {
+      console.error('크루 생성 쀑 였λ₯˜ λ°œμƒ:', error);
+      // TODO: ν† μŠ€νŠΈ λ˜λŠ” μ•Œλ¦ΌμœΌλ‘œ μ‚¬μš©μžμ—κ²Œ μ—λŸ¬ ν”Όλ“œλ°± 제곡
+    }
+  };
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: API κ΄€λ ¨ 파일 검색
echo "API κ΄€λ ¨ 파일 검색 쀑..."
rg -t typescript -t javascript "createCrew|postCrew" 

Length of output: 134


Script:

#!/bin/bash
# Search for API-related patterns in all files
echo "Searching for API-related patterns..."
rg "createCrew|postCrew|api.*crew" --type-add 'ts:*.{ts,tsx}' --type ts

# Check for any existing API utility files
echo -e "\nSearching for API utility files..."
fd -e ts -e tsx "api" 

# Look for router.push usage patterns
echo -e "\nSearching for router navigation patterns..."
rg "router\.push.*crew" --type-add 'ts:*.{ts,tsx}' --type ts -A 2

Length of output: 882


Script:

#!/bin/bash
# Check the API structure and implementation patterns
echo "Checking API implementation patterns..."
rg -t typescript "get-crew" -A 5

# Look for existing error handling patterns
echo -e "\nChecking error handling patterns..."
ast-grep --pattern 'try {
  $$$
  router.push($$$)
  $$$
} catch (error) {
  $$$
}'

# Check existing API response handling
echo -e "\nChecking API response handling..."
rg "getCrewDetail|getCrewList" -A 5 --type-add 'ts:*.{ts,tsx}' --type ts

Length of output: 3398

src/app/(crew)/crew/_components/create-gathering-form/create-gathering-form.stories.tsx (2)

12-12: μ΄ˆκΈ°κ°’μœΌλ‘œ 더 μ μ ˆν•œ 인원 수둜 λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λͺ¨μž„μ˜ totalCount μ΄ˆκΈ°κ°’μ„ 0μ—μ„œ 2둜 λ³€κ²½ν•œ 것이 더 ν˜„μ‹€μ μž…λ‹ˆλ‹€. λͺ¨μž„은 μ΅œμ†Œ 2λͺ… 이상이어야 ν•˜λ―€λ‘œ 이 변경은 μ μ ˆν•©λ‹ˆλ‹€.


44-44: μš©μ–΄ 톡일성 확인이 ν•„μš”ν•©λ‹ˆλ‹€.

"약속 작기"μ—μ„œ "약속 λ§Œλ“€κΈ°"둜의 변경이 PR λͺ©ν‘œμ™€ μΌμΉ˜ν•˜λ©° μ μ ˆν•©λ‹ˆλ‹€. λ‹€λ§Œ, λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈλ“€μ—μ„œλ„ λ™μΌν•˜κ²Œ λ³€κ²½λ˜μ—ˆλŠ”μ§€ 확인이 ν•„μš”ν•©λ‹ˆλ‹€.

βœ… Verification successful

μš©μ–΄κ°€ μΌκ΄€λ˜κ²Œ λ³€κ²½λ˜μ—ˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

검색 κ²°κ³Όλ₯Ό 톡해 "약속 작기"κ°€ 더 이상 μ½”λ“œλ² μ΄μŠ€μ— μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©°, "약속 λ§Œλ“€κΈ°"둜 λͺ¨λ“  κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μΌκ΄€λ˜κ²Œ μ‚¬μš©λ˜κ³  μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 변경이 λ‹€μŒ νŒŒμΌλ“€μ—μ„œ μ˜¬λ°”λ₯΄κ²Œ μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€:

  • src/app/(crew)/crew/detail/[id]/page.tsx
  • src/app/(crew)/crew/_components/create-gathering-form/create-gathering-form.stories.tsx
  • src/app/(crew)/crew/detail/[id]/_components/create-gathering.tsx
  • src/app/(crew)/crew/_components/create-gathering-modal/presenter.tsx
  • src/app/(crew)/crew/_components/create-gathering-modal/container.tsx
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: λͺ¨λ“  νŒŒμΌμ—μ„œ "약속 작기"κ°€ "약속 λ§Œλ“€κΈ°"둜 μ˜¬λ°”λ₯΄κ²Œ λ³€κ²½λ˜μ—ˆλŠ”μ§€ 확인

# "약속 작기"λΌλŠ” ν…μŠ€νŠΈκ°€ λ‚¨μ•„μžˆλŠ”μ§€ 확인
echo "검색: 아직 λ³€κ²½λ˜μ§€ μ•Šμ€ '약속 작기' ν…μŠ€νŠΈ"
rg "약속 작기"

# "약속 λ§Œλ“€κΈ°"둜 λ³€κ²½λœ λΆ€λΆ„ 확인
echo -e "\n검색: μƒˆλ‘œ λ³€κ²½λœ '약속 λ§Œλ“€κΈ°' ν…μŠ€νŠΈ"
rg "약속 λ§Œλ“€κΈ°"

Length of output: 795

src/components/common/input/drop-down/index.tsx (1)

Line range hint 1-15: μΈν„°νŽ˜μ΄μŠ€ 변경사항이 μ μ ˆν•΄ λ³΄μž…λ‹ˆλ‹€!

폼 검증을 μœ„ν•œ error prop의 μΆ”κ°€λŠ” PR의 λͺ©ν‘œμ™€ 잘 λΆ€ν•©ν•©λ‹ˆλ‹€. νƒ€μž… μ •μ˜λ„ λͺ…ν™•ν•˜κ²Œ λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.

src/app/(crew)/page.tsx (2)

49-51: 검색 ν•„λ“œμ˜ μ‚¬μš©μ„±μ΄ κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

검색 placeholder ν…μŠ€νŠΈκ°€ 더 ꡬ체적으둜 λ³€κ²½λ˜μ–΄ μ‚¬μš©μžκ°€ μ–΄λ–€ λ‚΄μš©μ„ 검색할 수 μžˆλŠ”μ§€ λͺ…ν™•ν•˜κ²Œ 이해할 수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


53-53: λ ˆμ΄μ•„μ›ƒ 및 λ“œλ‘­λ‹€μš΄ UI κ°œμ„ μ΄ μ μ ˆν•©λ‹ˆλ‹€.

  • md:basis-67둜의 변경은 tailwind.config.ts의 μ—…λ°μ΄νŠΈμ™€ μΌμΉ˜ν•˜λ©° λ°˜μ‘ν˜• λ ˆμ΄μ•„μ›ƒμ„ κ°œμ„ ν•©λ‹ˆλ‹€.
  • λ“œλ‘­λ‹€μš΄ λ„ˆλΉ„λ₯Ό 130px둜 μ¦κ°€μ‹œν‚¨ 것은 μ˜΅μ…˜ ν…μŠ€νŠΈλ₯Ό 더 잘 ν‘œμ‹œν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

Also applies to: 60-60, 72-72

src/components/common/input/file-input-wrap/file-input/index.tsx (1)

80-82: 미리보기 μƒνƒœ 관리 둜직이 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ΄μ „μ—λŠ” isBlurκ°€ true일 λ•Œ 항상 미리보기λ₯Ό μ œκ±°ν–ˆμ§€λ§Œ, μ΄μ œλŠ” valueκ°€ μ‘΄μž¬ν•  λ•Œλ§Œ μ œκ±°ν•˜λ„λ‘ μˆ˜μ •λ˜μ–΄ 더 μ•ˆμ •μ μΈ λ™μž‘μ΄ κ°€λŠ₯ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.

tailwind.config.ts (1)

60-60: flexBasis κ°’ 변경이 λ ˆμ΄μ•„μ›ƒμ— λ―ΈμΉ˜λŠ” 영ν–₯을 ν™•μΈν•΄μ£Όμ„Έμš”.

flexBasis 값이 228pxμ—μ„œ 268px둜 40px μ¦κ°€ν–ˆμŠ΅λ‹ˆλ‹€. 이 변경이 μ˜λ„λœ 것이라면 λ¬Έμ œμ—†μ–΄ λ³΄μ΄λ‚˜, λ‹€μŒ 사항듀을 ν™•μΈν•΄μ£Όμ‹œλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€:

  • λͺ¨λ“  λ°˜μ‘ν˜• λ ˆμ΄μ•„μ›ƒμ—μ„œ μ •μƒμ μœΌλ‘œ ν‘œμ‹œλ˜λŠ”μ§€
  • λ“œλ‘­λ‹€μš΄μ΄λ‚˜ λͺ¨λ‹¬ λ“± κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈλ“€μ˜ 정렬이 κΉ¨μ§€μ§€ μ•ŠλŠ”μ§€

λ‹€μŒ 슀크립트둜 이 값을 μ‚¬μš©ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€:

κ°€λŠ₯ν•˜λ‹€λ©΄ 이 νŠΉμ • κ°’(268px)을 μ„ νƒν•œ 이유λ₯Ό μ£Όμ„μœΌλ‘œ λ¬Έμ„œν™”ν•˜λ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

βœ… Verification successful

The previous command failed because the typescript type wasn't recognized. Let's try a broader search to find any usage of this class or the specific pixel value, and also list UI files to understand what file extensions we should be looking at.


이전 κ²€μƒ‰μ—μ„œ basis-67 ν΄λž˜μŠ€κ°€ src/app/(crew)/page.tsxμ—μ„œ μ‚¬μš©λ˜λŠ” 것을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 이 μ»΄ν¬λ„ŒνŠΈμ˜ λ ˆμ΄μ•„μ›ƒ μ»¨ν…μŠ€νŠΈλ₯Ό 더 μžμ„Ένžˆ νŒŒμ•…ν•˜κΈ° μœ„ν•΄ μΆ”κ°€ 검색을 μ‹€ν–‰ν•˜κ² μŠ΅λ‹ˆλ‹€.


flexBasis κ°’ 변경이 μ•ˆμ „ν•œ κ²ƒμœΌλ‘œ ν™•μΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

검색 κ²°κ³Όλ₯Ό λΆ„μ„ν•œ κ²°κ³Ό, basis-67 ν΄λž˜μŠ€λŠ” λ“œλ‘­λ‹€μš΄ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν¬ν•¨ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‚¬μš©λ˜λ©°, λͺ¨λ°”일(md: λ―Έλ””μ–΄ 쿼리 이상)μ—μ„œλ§Œ μ μš©λ©λ‹ˆλ‹€. 이 μ»¨ν…Œμ΄λ„ˆλŠ” λ‹€μŒκ³Ό 같은 μ•ˆμ „ν•œ λ ˆμ΄μ•„μ›ƒ ꡬ쑰λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€:

  • λΆ€λͺ¨ μš”μ†Œκ°€ flex-colμ—μ„œ md:flex-row둜 μ „ν™˜λ˜λŠ” λ°˜μ‘ν˜• ꡬ쑰
  • ν˜•μ œ μš”μ†Œκ°€ flex-1을 μ‚¬μš©ν•˜μ—¬ 남은 곡간을 μžλ™μœΌλ‘œ 쑰절

λ”°λΌμ„œ 268px둜의 변경이 전체 λ ˆμ΄μ•„μ›ƒμ— 뢀정적인 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ„ κ²ƒμœΌλ‘œ νŒλ‹¨λ©λ‹ˆλ‹€.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Find components using basis-67 class
# Expected: List of files using this Tailwind class

rg "basis-67" --type=typescript --type=tsx

Length of output: 77


Script:

#!/bin/bash
# Search for basis-67 class usage in all files
rg "basis-67"

# Also search for the specific pixel value
rg "268px"

# List all potential UI files to ensure we don't miss any file types
fd -e tsx -e jsx -e vue -e svelte

Length of output: 6640


Script:

#!/bin/bash
# Let's check the context of the basis-67 usage in page.tsx
rg "basis-67" src/app/\(crew\)/page.tsx -B 2 -A 2

# Check the parent component structure
rg "flex|grid" src/app/\(crew\)/page.tsx -B 2 -A 2

Length of output: 899

src/app/(crew)/crew/_components/gathering-detail-modal/presenter.tsx (1)

41-41: 슀크둀 μ˜μ—­ ꡬ성이 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Modal μ»΄ν¬λ„ŒνŠΈμ— ScrollArea.Autosizeλ₯Ό μ μš©ν•˜μ—¬ μ½˜ν…μΈ  크기에 따라 μžλ™μœΌλ‘œ μ‘°μ ˆλ˜λŠ” 슀크둀 μ˜μ—­μ„ κ΅¬ν˜„ν•œ 것이 μ’‹μŠ΅λ‹ˆλ‹€.

src/app/(crew)/crew/_components/create-crew-form/index.tsx (1)

34-35: 폼 검증 둜직이 적절히 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

trigger와 clearErrors λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ„Έλ°€ν•œ 폼 검증 μ œμ–΄κ°€ κ°€λŠ₯ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.


const Template: StoryFn<FileSampleProps> = function FileInputStory(args: FileSampleProps) {
const [selectedFile, setSelectedFile] = useState<File | StaticImageData | null>(null);
const [setSelectedFile] = useState<File | StaticImageData | null>(null);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

μƒνƒœ 관리 λ‘œμ§μ— μ‹¬κ°ν•œ 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

useState μ„ μ–Έμ—μ„œ selectedFile μƒνƒœ λ³€μˆ˜κ°€ λˆ„λ½λ˜μ–΄ μžˆμ–΄ 파일 선택 κΈ°λŠ₯이 μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. handleFileChange ν•¨μˆ˜μ—μ„œ setSelectedFile을 ν˜ΈμΆœν•˜κ³  μžˆμ§€λ§Œ, μ„ νƒλœ 파일의 μƒνƒœκ°€ μΆ”μ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•΄μ£Όμ„Έμš”:

- const [setSelectedFile] = useState<File | StaticImageData | null>(null);
+ const [selectedFile, setSelectedFile] = useState<File | StaticImageData | null>(null);
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const [setSelectedFile] = useState<File | StaticImageData | null>(null);
const [selectedFile, setSelectedFile] = useState<File | StaticImageData | null>(null);

Comment on lines +54 to +58
const handleChange = (newValue: string | null) => {
onChange(newValue);
setIsFocused(false);
inputRef.current?.blur();
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

이벀트 ν•Έλ“€λŸ¬μ— μ—λŸ¬ 처리 둜직 μΆ”κ°€κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

handleChange ν•¨μˆ˜μ—μ„œ inputRef.currentκ°€ null일 κ²½μš°μ— λŒ€ν•œ μ²˜λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€. λ˜ν•œ onChange 호좜 μ‹€νŒ¨ μ‹œμ˜ μ—λŸ¬ μ²˜λ¦¬λ„ κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.

const handleChange = (newValue: string | null) => {
  try {
    onChange(newValue);
    setIsFocused(false);
    inputRef.current?.blur();
  } catch (error) {
    console.error('λ“œλ‘­λ‹€μš΄ κ°’ λ³€κ²½ 쀑 였λ₯˜ λ°œμƒ:', error);
    // μ—λŸ¬ 처리 둜직 μΆ”κ°€
  }
};

Comment on lines +99 to +110
<ScrollArea h={152}>
<ul className="grid grid-cols-2 gap-4">
{data?.participants.map((participant) => (
<li key={participant.id} className="flex items-center gap-2">
<figure className="relative h-10 w-10 overflow-hidden rounded-full">
<Profile imageUrl={participant?.profileImageUrl} />
</figure>
<span className="text-base font-medium">{participant?.nickname}</span>
</li>
))}
</ul>
</ScrollArea>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

μ°Έμ—¬μž λͺ©λ‘μ˜ μ„±λŠ₯ μ΅œμ ν™” μ œμ•ˆ

ν˜„μž¬ κ΅¬ν˜„μ€ μž‘λ™ν•˜μ§€λ§Œ, μ°Έμ—¬μž μˆ˜κ°€ λ§Žμ„ 경우 μ„±λŠ₯ μ΄μŠˆκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같은 μ΅œμ ν™”λ₯Ό μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€:

-<ScrollArea h={152}>
+<ScrollArea h={152} type="always">
   <ul className="grid grid-cols-2 gap-4">
-    {data?.participants.map((participant) => (
+    {data?.participants.slice(0, 20).map((participant) => (
       <li key={participant.id} className="flex items-center gap-2">

μΆ”κ°€λ‘œ λ¬΄ν•œ 슀크둀 κ΅¬ν˜„μ„ κ³ λ €ν•΄λ³΄μ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<ScrollArea h={152}>
<ul className="grid grid-cols-2 gap-4">
{data?.participants.map((participant) => (
<li key={participant.id} className="flex items-center gap-2">
<figure className="relative h-10 w-10 overflow-hidden rounded-full">
<Profile imageUrl={participant?.profileImageUrl} />
</figure>
<span className="text-base font-medium">{participant?.nickname}</span>
</li>
))}
</ul>
</ScrollArea>
<ScrollArea h={152} type="always">
<ul className="grid grid-cols-2 gap-4">
{data?.participants.slice(0, 20).map((participant) => (
<li key={participant.id} className="flex items-center gap-2">
<figure className="relative h-10 w-10 overflow-hidden rounded-full">
<Profile imageUrl={participant?.profileImageUrl} />
</figure>
<span className="text-base font-medium">{participant?.nickname}</span>
</li>
))}
</ul>
</ScrollArea>

Comment on lines 51 to 56
{isToday(data?.dateTime) && (
<strong className="absolute right-0 top-0 flex items-center gap-2 bg-blue-600 px-4 py-2 text-base font-medium text-white">
<Image src={IcoClock} width={15} height={13} alt="μ•„μ΄μ½˜" />
<span>였늘 {new Date(data?.dateTime).getHours()}μ‹œ 마감</span>
</strong>
)}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ’‘ Codebase verification

μ‹œκ°„λŒ€ 처리 κ΄€λ ¨ 잠재적 문제점 발견

ν˜„μž¬ κ΅¬ν˜„μ—μ„œ λ‹€μŒκ³Ό 같은 μ‹œκ°„λŒ€ κ΄€λ ¨ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€:

  • isToday ν•¨μˆ˜λŠ” λ‹¨μˆœνžˆ Date 객체의 κΈ°λ³Έ λ©”μ„œλ“œλ§Œ μ‚¬μš©ν•˜μ—¬ λ‚ μ§œλ₯Ό λΉ„κ΅ν•©λ‹ˆλ‹€.
  • DateTimePicker μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” 'UTC' νƒ€μž„μ‘΄μ„ λͺ…μ‹œμ μœΌλ‘œ μ„€μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • λ‚ μ§œ ν¬λ§·νŒ… μœ ν‹Έλ¦¬ν‹°λ“€λ„ νƒ€μž„μ‘΄μ„ κ³ λ €ν•˜μ§€ μ•Šμ€ 채 κΈ°λ³Έ Date 객체 λ©”μ„œλ“œλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

이둜 인해:

  • μ‚¬μš©μžμ˜ 둜컬 μ‹œκ°„κ³Ό μ„œλ²„ μ‹œκ°„ μ‚¬μ΄μ˜ λΆˆμΌμΉ˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μžμ • λ¬΄λ ΅μ—λŠ” "였늘" νŒλ‹¨μ΄ 잘λͺ»λ  수 μžˆμŠ΅λ‹ˆλ‹€.
πŸ”— Analysis chain

였늘의 λͺ¨μž„ ν‘œμ‹œ 둜직 검증 ν•„μš”

isToday ν•¨μˆ˜λ₯Ό ν†΅ν•œ λ‚ μ§œ 확인은 μ μ ˆν•˜λ‚˜, μ‹œκ°„λŒ€(timezone) μ²˜λ¦¬μ— λŒ€ν•œ 검증이 ν•„μš”ν•΄ λ³΄μž…λ‹ˆλ‹€.


Let me gather more information about the timezone handling in the codebase.


Let me check the format-date utility and other date-related implementations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify timezone handling in isToday function
rg -A 5 "isToday" src/utils/

Length of output: 352


Script:

#!/bin/bash
# Search for any timezone related configurations or utilities
rg -i "timezone|getTimezoneOffset|toLocaleString" 

# Search for date utility functions
fd "date" --type f --exec rg -l "new Date"

Length of output: 613


Script:

#!/bin/bash
# Check format-date utility implementation
cat src/utils/format-date.ts

# Check date-time-picker implementation for timezone handling
cat src/components/common/input/date-time-picker/index.tsx

Length of output: 4779

<Button
type="submit"
disabled={!isFormValid}
disabled={!isValid}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

폼 제좜 λ²„νŠΌμ˜ λΉ„ν™œμ„±ν™” 쑰건 κ°œμ„  ν•„μš”

ν˜„μž¬ isValid μƒνƒœλ§ŒμœΌλ‘œ λ²„νŠΌμ„ λΉ„ν™œμ„±ν™”ν•˜λŠ” 것은 μΆ©λΆ„ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 폼이 제좜 쀑일 λ•Œλ„ λ²„νŠΌμ„ λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

<Button
  type="submit"
- disabled={!isValid}
+ disabled={!isValid || formState.isSubmitting}
  className="btn-filled h-11 flex-1 text-base font-medium disabled:bg-gray-200"
>
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
disabled={!isValid}
disabled={!isValid || formState.isSubmitting}

variant="filled"
onChange={(e) => {
field.onChange(e);
if (errors.location) trigger('title'); // μž…λ ₯ 쀑일 λ•Œ μœ νš¨μ„± 검사 트리거
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

μ˜€νƒ€ μˆ˜μ • ν•„μš”

trigger('title')이 trigger('location')으둜 μˆ˜μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

-if (errors.location) trigger('title');
+if (errors.location) trigger('location');
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (errors.location) trigger('title'); // μž…λ ₯ 쀑일 λ•Œ μœ νš¨μ„± 검사 트리거
if (errors.location) trigger('location'); // μž…λ ₯ 쀑일 λ•Œ μœ νš¨μ„± 검사 트리거

onChange={(date) => {
const formattedDate = date.toLocaleString();
onChange(formattedDate);
trigger('imageUrl'); // μœ νš¨μ„± 검사 μ‹€ν–‰
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

잘λͺ»λœ 트리거 λŒ€μƒ

trigger('imageUrl')이 trigger('dateTime')으둜 μˆ˜μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

-trigger('imageUrl');
+trigger('dateTime');
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
trigger('imageUrl'); // μœ νš¨μ„± 검사 μ‹€ν–‰
trigger('dateTime'); // μœ νš¨μ„± 검사 μ‹€ν–‰

Comment on lines 90 to 103
<Controller
name="imageUrl"
control={control}
rules={{ required: '이미지λ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”.' }}
render={({ field }) => (
<FileInputWrap
{...field}
sample={ImgGatheringSamples}
onChange={(e) => {
field.onChange(e);
trigger('imageUrl'); // μœ νš¨μ„± 검사 μ‹€ν–‰
}}
/>
)}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

이미지 μ—…λ‘œλ“œ μ»΄ν¬λ„ŒνŠΈμ˜ μ—λŸ¬ 처리 κ°œμ„  ν•„μš”

ν˜„μž¬ 이미지 μ—…λ‘œλ“œ μ‹œ λ°œμƒν•  수 μžˆλŠ” λ‹€μ–‘ν•œ μ—λŸ¬ 상황(파일 크기, ν˜•μ‹ λ“±)에 λŒ€ν•œ μ²˜λ¦¬κ°€ λˆ„λ½λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 μ—λŸ¬ 처리λ₯Ό μΆ”κ°€ν•΄λ³΄μ„Έμš”:

rules={{ 
-  required: '이미지λ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”.' 
+  required: '이미지λ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”.',
+  validate: {
+    fileSize: (file) => 
+      file.size <= 5000000 || '파일 ν¬κΈ°λŠ” 5MB μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.',
+    fileType: (file) =>
+      ['image/jpeg', 'image/png'].includes(file.type) || 
+      'JPG, PNG 파일만 μ—…λ‘œλ“œ κ°€λŠ₯ν•©λ‹ˆλ‹€.',
+  }
}}

Committable suggestion skipped: line range outside the PR's diff.

Comment on lines 50 to 82
<span className="text-blue-500">{title.length}</span>/20
</span>
</div>
<TextInput
id="gathering-title"
variant="filled"
value={values.title}
register={{
...register('title', {
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
pattern: /^[γ„±-γ…Ž|ㅏ-γ…£|κ°€-힣|a-z|A-Z|0-9| ]{1,20}$/,
onBlur: () => trigger('title'),
}),
}}
error={errors.title?.message?.toString()}
onChange={(e) =>
setValues((prevValues) => {
if (e.target.value.length <= 20) {
return { ...prevValues, title: e.target.value };
<Controller
name="title"
control={control}
rules={{
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
validate: (value) => {
if (value && value.trim().length > 0) {
return true; // μž…λ ₯이 μžˆμ„ 경우 μ—λŸ¬ ν•΄μ œ
}
return prevValues;
})
}
placeholder="약속 이름을 20자 μ΄λ‚΄λ‘œ μž…λ ₯ν•΄μ£Όμ„Έμš”."
maxLength={20}
classNames={{
input:
'h-11 py-2.5 px-4 bg-gray-100 placeholder:text-gray-400 font-pretendard text-base font-medium rounded-xl aria-[invalid=true]:border-none',
return 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.'; // μž…λ ₯이 λΉ„μ–΄μžˆμ„ 경우 μ—λŸ¬ λ©”μ‹œμ§€ ν‘œμ‹œ
},
}}
render={({ field }) => (
<TextInput
{...field}
id="gathering-title"
variant="filled"
onChange={(e) => {
field.onChange(e);
if (errors.title) trigger('title'); // μž…λ ₯ 쀑일 λ•Œ μœ νš¨μ„± 검사 트리거
}}
error={errors.title?.message}
placeholder="약속λͺ…을 20자 μ΄λ‚΄λ‘œ μž…λ ₯ν•΄μ£Όμ„Έμš”."
maxLength={20}
classNames={{
input:
'h-11 py-2.5 px-4 bg-gray-100 placeholder:text-gray-400 font-pretendard text-base font-medium rounded-xl aria-[invalid=true]:border-none',
}}
/>
)}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

제λͺ© μž…λ ₯ ν•„λ“œμ˜ μœ νš¨μ„± 검사 둜직 κ°œμ„  ν•„μš”

ν˜„μž¬ κ΅¬ν˜„μ—μ„œ λͺ‡ κ°€μ§€ κ°œμ„ μ΄ ν•„μš”ν•œ 뢀뢄이 μžˆμŠ΅λ‹ˆλ‹€:

  1. 곡백만 μž…λ ₯된 κ²½μš°μ— λŒ€ν•œ μ²˜λ¦¬κ°€ μ€‘λ³΅λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  2. μ΅œμ†Œ 길이 μ œν•œμ΄ λˆ„λ½λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 μœ νš¨μ„± 검사 λ‘œμ§μ„ κ°œμ„ ν•΄λ³΄μ„Έμš”:

rules={{
  required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
  validate: (value) => {
-   if (value && value.trim().length > 0) {
-     return true;
-   }
-   return 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.';
+   if (value.trim().length < 2) {
+     return 'μ΅œμ†Œ 2자 이상 μž…λ ₯ν•΄μ£Όμ„Έμš”.';
+   }
+   return true;
  },
}}
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<span className="text-blue-500">{title.length}</span>/20
</span>
</div>
<TextInput
id="gathering-title"
variant="filled"
value={values.title}
register={{
...register('title', {
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
pattern: /^[γ„±-γ…Ž|ㅏ-γ…£|κ°€-힣|a-z|A-Z|0-9| ]{1,20}$/,
onBlur: () => trigger('title'),
}),
}}
error={errors.title?.message?.toString()}
onChange={(e) =>
setValues((prevValues) => {
if (e.target.value.length <= 20) {
return { ...prevValues, title: e.target.value };
<Controller
name="title"
control={control}
rules={{
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
validate: (value) => {
if (value && value.trim().length > 0) {
return true; // μž…λ ₯이 μžˆμ„ 경우 μ—λŸ¬ ν•΄μ œ
}
return prevValues;
})
}
placeholder="약속 이름을 20자 μ΄λ‚΄λ‘œ μž…λ ₯ν•΄μ£Όμ„Έμš”."
maxLength={20}
classNames={{
input:
'h-11 py-2.5 px-4 bg-gray-100 placeholder:text-gray-400 font-pretendard text-base font-medium rounded-xl aria-[invalid=true]:border-none',
return 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.'; // μž…λ ₯이 λΉ„μ–΄μžˆμ„ 경우 μ—λŸ¬ λ©”μ‹œμ§€ ν‘œμ‹œ
},
}}
render={({ field }) => (
<TextInput
{...field}
id="gathering-title"
variant="filled"
onChange={(e) => {
field.onChange(e);
if (errors.title) trigger('title'); // μž…λ ₯ 쀑일 λ•Œ μœ νš¨μ„± 검사 트리거
}}
error={errors.title?.message}
placeholder="약속λͺ…을 20자 μ΄λ‚΄λ‘œ μž…λ ₯ν•΄μ£Όμ„Έμš”."
maxLength={20}
classNames={{
input:
'h-11 py-2.5 px-4 bg-gray-100 placeholder:text-gray-400 font-pretendard text-base font-medium rounded-xl aria-[invalid=true]:border-none',
}}
/>
)}
<span className="text-blue-500">{title.length}</span>/20
</span>
</div>
<Controller
name="title"
control={control}
rules={{
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
validate: (value) => {
if (value.trim().length < 2) {
return 'μ΅œμ†Œ 2자 이상 μž…λ ₯ν•΄μ£Όμ„Έμš”.';
}
return true;
},
}}
render={({ field }) => (
<TextInput
{...field}
id="gathering-title"
variant="filled"
onChange={(e) => {
field.onChange(e);
if (errors.title) trigger('title'); // μž…λ ₯ 쀑일 λ•Œ μœ νš¨μ„± 검사 트리거
}}
error={errors.title?.message}
placeholder="약속λͺ…을 20자 μ΄λ‚΄λ‘œ μž…λ ₯ν•΄μ£Όμ„Έμš”."
maxLength={20}
classNames={{
input:
'h-11 py-2.5 px-4 bg-gray-100 placeholder:text-gray-400 font-pretendard text-base font-medium rounded-xl aria-[invalid=true]:border-none',
}}
/>
)}

<Controller
name="subLocation"
control={control}
rules={{ required: 'μ‹œ/κ΅°/ꡬλ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”.' }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

μ—λŸ¬ λ©”μ‹œμ§€ ν‘œμ‹œ λ°©μ‹μ˜ 일관성 κ°œμ„ μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

ν˜„μž¬ μœ„μΉ˜ κ΄€λ ¨ ν•„λ“œλ“€μ˜ μ—λŸ¬ λ©”μ‹œμ§€ ν‘œμ‹œ 방식이 일관적이지 μ•ŠμŠ΅λ‹ˆλ‹€:

  • mainLocation은 ν•˜λ‹¨μ— λ³„λ„λ‘œ ν‘œμ‹œ
  • subLocation은 λ“œλ‘­λ‹€μš΄ 내뢀에 ν‘œμ‹œ

λ‹€μŒκ³Ό 같이 ν†΅μΌλœ λ°©μ‹μœΌλ‘œ μˆ˜μ •ν•˜λŠ” 것을 μ œμ•ˆλ“œλ¦½λ‹ˆλ‹€:

-          {errors.mainLocation && <p className="text-red-500">{errors.mainLocation.message}</p>}
+          <div className="flex flex-col gap-1">
+            {errors.mainLocation && <p className="text-red-500 text-sm">{errors.mainLocation.message}</p>}
+            {errors.subLocation && <p className="text-red-500 text-sm">{errors.subLocation.message}</p>}
+          </div>

Also applies to: 219-219

@github-actions
Copy link

github-actions bot commented Nov 9, 2024

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Outside diff range and nitpick comments (8)
src/components/common/input/drop-down/index.tsx (2)

42-52: μŠ€νƒ€μΌ 둜직 λ‹¨μˆœν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

getFocusStyle ν•¨μˆ˜μ˜ 쑰건문을 λ‹¨μˆœν™”ν•˜μ—¬ 가독성을 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 κ°œμ„ ν•΄λ³΄μ„Έμš”:

-  const getFocusStyle = () => {
-    if (variant === 'default') {
-      return isFocused
-        ? 'focus:bg-black focus:text-white focus:placeholder:text-white'
-        : 'bg-white text-gray-800 placeholder-gray-800';
-    }
-
-    return isFocused
-      ? 'focus:bg-black focus:text-white focus:placeholder:text-white sort-bg-on pl-10'
-      : 'bg-white text-gray-800 placeholder-gray-800 sort-bg pl-10';
-  };
+  const getFocusStyle = () => {
+    const baseStyle = isFocused
+      ? 'focus:bg-black focus:text-white focus:placeholder:text-white'
+      : 'bg-white text-gray-800 placeholder-gray-800';
+    
+    return variant === 'default'
+      ? baseStyle
+      : `${baseStyle} ${isFocused ? 'sort-bg-on' : 'sort-bg'} pl-10`;
+  };

Line range hint 81-87: μŠ€νƒ€μΌ 클래슀 관리 κ°œμ„ μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λ³΅μž‘ν•œ classNames λ‘œμ§μ„ μƒμˆ˜λ‘œ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜λ©΄ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ΄ ν–₯상될 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 κ°œμ„ ν•΄λ³΄μ„Έμš”:

const BASE_INPUT_CLASSES = 'font-pretendard h-10 md:h-11 text-base font-medium rounded-xl border-0 py-2.5 px-3';
const BASE_OPTION_CLASSES = 'py-1 m-1 px-2 mr-0 rounded-xl font-pretendard text-gray-800 text-base font-medium hover:bg-blue-100';

// μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€
classNames={{
  root: className,
  input: `${getFocusStyle()} ${formStyle} ${BASE_INPUT_CLASSES}`,
  section: `end-1 ${variant === 'sort' && 'data-[position=right]:hidden start-1'}`,
  dropdown: 'rounded-xl shadow-xl p-0 border-0 mt-2',
  option: `${BASE_OPTION_CLASSES} ${variant === 'sort' && 'justify-center'}`,
}}
src/app/(crew)/crew/_components/create-gathering-form/index.tsx (2)

37-39: μ„±λŠ₯ μ΅œμ ν™” μ œμ•ˆ

useWatchλ₯Ό μ‚¬μš©ν•˜μ—¬ 문자 수λ₯Ό κ³„μ‚°ν•˜λŠ” 방식은 λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ„ μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹  λ‹€μŒκ³Ό 같은 μ΅œμ ν™”λœ 방법을 κ³ λ €ν•΄λ³΄μ„Έμš”:

-const title = useWatch({ control, name: 'title' });
-const location = useWatch({ control, name: 'location' });
-const introduce = useWatch({ control, name: 'introduce' });

+const CharacterCount = ({ control, name }: { control: Control<any>; name: string }) => {
+  const value = useWatch({ control, name });
+  return <span className="text-blue-500">{value.length}</span>;
+};

μ΄λ ‡κ²Œ ν•˜λ©΄ κ°œλ³„ ν•„λ“œμ˜ 문자 μˆ˜κ°€ 변경될 λ•Œλ§Œ ν•΄λ‹Ή μΉ΄μš΄ν„° μ»΄ν¬λ„ŒνŠΈκ°€ λ¦¬λ Œλ”λ§λ©λ‹ˆλ‹€.


168-170: λͺ¨μ§‘ μ •μ›μ˜ μ—λŸ¬ λ©”μ‹œμ§€ κ°œμ„  ν•„μš”

ν˜„μž¬ μ—λŸ¬ λ©”μ‹œμ§€κ°€ λ„ˆλ¬΄ λ‹¨μˆœν•©λ‹ˆλ‹€. μ΅œμ†Œ/μ΅œλŒ€ 인원에 λŒ€ν•œ μ•ˆλ‚΄λ„ ν¬ν•¨λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

rules={{
  required: 'λͺ¨μ§‘ 정원을 μž…λ ₯ν•΄μ£Όμ„Έμš”.',
+ min: {
+   value: 4,
+   message: 'μ΅œμ†Œ 4λͺ… 이상 μž…λ ₯ν•΄μ£Όμ„Έμš”.'
+ },
+ max: {
+   value: 20,
+   message: 'μ΅œλŒ€ 20λͺ…κΉŒμ§€ μž…λ ₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.'
+ }
}}
mock.json (4)

375-376: λ‚ μ§œ ν˜•μ‹μ˜ 미래 μ‹œμ  μ„€μ • 문제

λͺ¨λ“  createdDate와 updatedDateκ°€ 2024λ…„ 11μ›”λ‘œ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ λ°μ΄ν„°μ˜ ν˜„μ‹€μ„±μ„ μœ„ν•΄ λ‹€μŒκ³Ό 같이 μˆ˜μ •μ΄ ν•„μš”ν•©λ‹ˆλ‹€:

  • ν˜„μž¬ μ‹œμ  κΈ°μ€€μœΌλ‘œ κ³Όκ±° λ‚ μ§œ μ‚¬μš©
  • createdDate와 updatedDate κ°„μ˜ 논리적 μ‹œκ°„ μˆœμ„œ μœ μ§€

Also applies to: 395-396, 415-416, 435-436, 455-456, 475-476, 495-496, 515-516, 535-536, 555-556


391-391: 이미지 URL의 μ•ˆμ •μ„± 문제

μ™ΈλΆ€ 이미지 URL을 직접 μ°Έμ‘°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 κ°œμ„ μ΄ ꢌμž₯λ©λ‹ˆλ‹€:

  • ν…ŒμŠ€νŠΈμš© 둜컬 이미지 μ‚¬μš©
  • CDN을 ν†΅ν•œ 이미지 제곡
  • 이미지 URL의 μœ νš¨μ„± 검증 둜직 μΆ”κ°€

Also applies to: 411-411, 431-431, 451-451, 471-471, 491-491, 511-511, 531-531, 551-551


575-578: λΆˆμ™„μ „ν•œ μ‚¬μš©μž ν”„λ‘œν•„ 데이터

CrewMembers λ°μ΄ν„°μ—μ„œ 첫 번째 λ©€λ²„μ˜ ν”„λ‘œν•„ 이미지가 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 데이터 일관성을 μœ„ν•΄ λ‹€μŒ 사항을 ν™•μΈν•΄μ£Όμ„Έμš”:

  • λͺ¨λ“  멀버에 λŒ€ν•΄ λ™μΌν•œ 데이터 ꡬ쑰 μœ μ§€
  • ν•„μˆ˜ ν•„λ“œμ— λŒ€ν•œ κΈ°λ³Έκ°’ μ„€μ •

695-695: 리뷰 λ°μ΄ν„°μ˜ μ‹œκ°„ μ •λ ¬ 문제

리뷰 λ°μ΄ν„°μ˜ createdAt νƒ€μž„μŠ€νƒ¬ν”„κ°€ μ‹œκ°„ μˆœμ„œλŒ€λ‘œ μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°μ˜ 일관성을 μœ„ν•΄ λ‹€μŒμ„ μ œμ•ˆν•©λ‹ˆλ‹€:

  • μ‹œκ°„ μˆœμ„œλŒ€λ‘œ 리뷰 데이터 μ •λ ¬
  • 리뷰 ID와 생성 μ‹œκ°„μ˜ μ—°κ΄€μ„± μœ μ§€

Also applies to: 707-707, 719-719, 731-731, 743-743, 755-755, 767-767

πŸ“œ Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 0683f5a and f101987.

πŸ“’ Files selected for processing (8)
  • mock.json (17 hunks)
  • src/app/(crew)/crew/_components/create-crew-form/index.tsx (9 hunks)
  • src/app/(crew)/crew/_components/create-gathering-form/index.tsx (5 hunks)
  • src/app/(crew)/crew/_components/gathering-detail-modal/presenter.tsx (1 hunks)
  • src/app/(crew)/crew/detail/[id]/page.tsx (1 hunks)
  • src/components/common/input/drop-down/index.tsx (5 hunks)
  • src/mock/review-data.ts (27 hunks)
  • src/utils/is-today.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/app/(crew)/crew/_components/create-crew-form/index.tsx
  • src/app/(crew)/crew/_components/gathering-detail-modal/presenter.tsx
  • src/app/(crew)/crew/detail/[id]/page.tsx
πŸ”‡ Additional comments (5)
src/utils/is-today.ts (1)

4-8: ν•œκ΅­ μ‹œκ°„λŒ€ μ²˜λ¦¬κ°€ μ˜¬λ°”λ₯΄κ²Œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

UTC κΈ°μ€€μœΌλ‘œ λ³€ν™˜ ν›„ ν•œκ΅­ μ‹œκ°„λŒ€(UTC+9)둜 μ‘°μ •ν•˜λŠ” 둜직이 μ •ν™•ν•©λ‹ˆλ‹€.

src/components/common/input/drop-down/index.tsx (2)

14-15: Props μΈν„°νŽ˜μ΄μŠ€ κ°œμ„ μ΄ 잘 λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

폼 μœ νš¨μ„± 검사λ₯Ό μœ„ν•œ error propκ³Ό μž…λ ₯ μš”μ†Œ μ°Έμ‘°λ₯Ό μœ„ν•œ ref prop이 μ μ ˆν•˜κ²Œ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


Line range hint 1-101: 폼 μœ νš¨μ„± 검사 톡합 확인이 ν•„μš”ν•©λ‹ˆλ‹€.

μ»΄ν¬λ„ŒνŠΈκ°€ react-hook-form의 μœ νš¨μ„± 검사와 μ˜¬λ°”λ₯΄κ²Œ ν†΅ν•©λ˜λŠ”μ§€ ν™•μΈν•΄μ£Όμ„Έμš”.

βœ… Verification successful

폼 μœ νš¨μ„± 검사가 μ˜¬λ°”λ₯΄κ²Œ κ΅¬ν˜„λ˜μ–΄ μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

검색 κ²°κ³Όλ₯Ό 톡해 λ‹€μŒ 사항듀을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€:

  • create-crew-formμ—μ„œ react-hook-formκ³Ό ν•¨κ»˜ DropDown μ»΄ν¬λ„ŒνŠΈκ°€ μ‚¬μš©λ˜κ³  있으며, error prop을 톡해 μœ νš¨μ„± 검사 였λ₯˜λ₯Ό ν‘œμ‹œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • Controller μ»΄ν¬λ„ŒνŠΈλ₯Ό 톡해 폼 컨트둀이 적절히 μ—°λ™λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • μ„ΈλΆ€ μΉ΄ν…Œκ³ λ¦¬μ™€ μœ„μΉ˜ μ„ νƒμ—μ„œ 였λ₯˜ λ©”μ‹œμ§€κ°€ μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œλ˜λ„λ‘ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check integration with react-hook-form
# Test: Search for DropDown usage within form components
rg -A 5 "DropDown.*error=" src/

Length of output: 33


Script:

#!/bin/bash
# Search for any usage of DropDown component in form contexts
rg -A 10 "<DropDown" src/

# Search for form validation related imports
rg "import.*react-hook-form" src/

# Search for form components that might use DropDown
fd -e tsx -e ts -e jsx -e js --full-path ".*form.*" src/

Length of output: 10511

src/app/(crew)/crew/_components/create-gathering-form/index.tsx (1)

213-213: 폼 제좜 λ²„νŠΌ μƒνƒœ μ²˜λ¦¬κ°€ μ μ ˆν•©λ‹ˆλ‹€

isValid와 isSubmitting μƒνƒœλ₯Ό λͺ¨λ‘ κ³ λ €ν•˜μ—¬ λ²„νŠΌμ˜ λΉ„ν™œμ„±ν™” μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

src/mock/review-data.ts (1)

14-14: νƒ€μž„μŠ€νƒ¬ν”„ ν˜•μ‹μ΄ μ˜¬λ°”λ₯΄κ²Œ μ—…λ°μ΄νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€!

ISO 8601 ν˜•μ‹κ³Ό νƒ€μž„μ‘΄ 정보λ₯Ό ν¬ν•¨ν•˜λ„λ‘ μΌκ΄€λ˜κ²Œ λ³€κ²½λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Also applies to: 26-26, 38-38, 50-50, 62-62, 74-74, 86-86, 98-98, 110-110, 122-122, 134-134, 146-146, 158-158, 170-170, 182-182, 194-194, 206-206

Comment on lines 11 to 15
date.getDate() === koreaNow.getDate() &&
date.getMonth() === koreaNow.getMonth() &&
date.getFullYear() === koreaNow.getFullYear() &&
date.getHours() >= koreaNow.getHours() &&
date.getMinutes() >= koreaNow.getMinutes()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

μ‹œκ°„ 비ꡐ λ‘œμ§μ— μ‹¬κ°ν•œ 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ κ΅¬ν˜„λœ μ‹œκ°„ 비ꡐ λ°©μ‹μ—λŠ” λ‹€μŒκ³Ό 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€:

  • μ‹œκ°„κ³Ό 뢄을 κ°œλ³„μ μœΌλ‘œ λΉ„κ΅ν•˜λ©΄ 잘λͺ»λœ κ²°κ³Όκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 예: ν˜„μž¬ μ‹œκ°μ΄ 14:30이고 μž…λ ₯ μ‹œκ°μ΄ 15:20인 경우, λΆ„ λΉ„κ΅μ—μ„œ falseλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•˜λŠ” 것을 μ œμ•ˆν•©λ‹ˆλ‹€:

  return (
    date.getDate() === koreaNow.getDate() &&
    date.getMonth() === koreaNow.getMonth() &&
    date.getFullYear() === koreaNow.getFullYear() &&
-   date.getHours() >= koreaNow.getHours() &&
-   date.getMinutes() >= koreaNow.getMinutes()
+   date.getTime() >= koreaNow.getTime()
  );
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
date.getDate() === koreaNow.getDate() &&
date.getMonth() === koreaNow.getMonth() &&
date.getFullYear() === koreaNow.getFullYear() &&
date.getHours() >= koreaNow.getHours() &&
date.getMinutes() >= koreaNow.getMinutes()
date.getDate() === koreaNow.getDate() &&
date.getMonth() === koreaNow.getMonth() &&
date.getFullYear() === koreaNow.getFullYear() &&
date.getTime() >= koreaNow.getTime()

Comment on lines +56 to 58
rules={{
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
}}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

제λͺ© ν•„λ“œμ˜ μœ νš¨μ„± 검사 κ°•ν™” ν•„μš”

ν˜„μž¬ ν•„μˆ˜ μž…λ ₯ κ²€μ‚¬λ§Œ λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€. μ΅œμ†Œ 길이 μ œν•œλ„ μΆ”κ°€ν•˜λŠ” 것이 μ’‹κ² μŠ΅λ‹ˆλ‹€.

rules={{
  required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
+ minLength: {
+   value: 2,
+   message: 'μ΅œμ†Œ 2자 이상 μž…λ ₯ν•΄μ£Όμ„Έμš”.'
+ },
+ validate: {
+   notOnlyWhitespace: (value) =>
+     value.trim().length > 0 || 'κ³΅λ°±λ§ŒμœΌλ‘œλŠ” 제λͺ©μ„ μž‘μ„±ν•  수 μ—†μŠ΅λ‹ˆλ‹€.'
+ }
}}
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
rules={{
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
}}
rules={{
required: 'ν•„μˆ˜ μž…λ ₯μ‚¬ν•­μž…λ‹ˆλ‹€.',
minLength: {
value: 2,
message: 'μ΅œμ†Œ 2자 이상 μž…λ ₯ν•΄μ£Όμ„Έμš”.'
},
validate: {
notOnlyWhitespace: (value) =>
value.trim().length > 0 || 'κ³΅λ°±λ§ŒμœΌλ‘œλŠ” 제λͺ©μ„ μž‘μ„±ν•  수 μ—†μŠ΅λ‹ˆλ‹€.'
}
}}

Comment on lines +147 to +156
rules={{ required: 'λ‚ μ§œμ™€ μ‹œκ°„μ„ μ„ νƒν•΄μ£Όμ„Έμš”.' }}
render={({ field: { onChange, ...field } }) => (
<DateTimePicker
{...field}
fullDate={new Date()}
onChange={(date) => {
const formattedDate = date.toLocaleString();
onChange(formattedDate);
trigger('dateTime'); // μœ νš¨μ„± 검사 μ‹€ν–‰
}}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

λ‚ μ§œ μ„ νƒμ˜ μœ νš¨μ„± 검사 κ°•ν™” ν•„μš”

ν˜„μž¬ κ΅¬ν˜„μ—μ„œλŠ” κ³Όκ±° λ‚ μ§œ 선택을 λ°©μ§€ν•˜λŠ” 둜직이 μ—†μŠ΅λ‹ˆλ‹€.

rules={{ 
  required: 'λ‚ μ§œμ™€ μ‹œκ°„μ„ μ„ νƒν•΄μ£Όμ„Έμš”.',
+ validate: {
+   isFuture: (value) => {
+     const selectedDate = new Date(value);
+     return selectedDate > new Date() || 'ν˜„μž¬ μ‹œκ°„ μ΄ν›„λ‘œ μ„ νƒν•΄μ£Όμ„Έμš”.';
+   }
+ }
}}
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
rules={{ required: 'λ‚ μ§œμ™€ μ‹œκ°„μ„ μ„ νƒν•΄μ£Όμ„Έμš”.' }}
render={({ field: { onChange, ...field } }) => (
<DateTimePicker
{...field}
fullDate={new Date()}
onChange={(date) => {
const formattedDate = date.toLocaleString();
onChange(formattedDate);
trigger('dateTime'); // μœ νš¨μ„± 검사 μ‹€ν–‰
}}
rules={{
required: 'λ‚ μ§œμ™€ μ‹œκ°„μ„ μ„ νƒν•΄μ£Όμ„Έμš”.',
validate: {
isFuture: (value) => {
const selectedDate = new Date(value);
return selectedDate > new Date() || 'ν˜„μž¬ μ‹œκ°„ μ΄ν›„λ‘œ μ„ νƒν•΄μ£Όμ„Έμš”.';
}
}
}}
render={({ field: { onChange, ...field } }) => (
<DateTimePicker
{...field}
fullDate={new Date()}
onChange={(date) => {
const formattedDate = date.toLocaleString();
onChange(formattedDate);
trigger('dateTime'); // μœ νš¨μ„± 검사 μ‹€ν–‰
}}

rate: 3,
comment: '리뷰리뷰리뷰리뷰리뷰리뷰리뷰리뷰리뷰리뷰',
createdAt: '2024-10-31T00:56',
createdAt: '2024-11-09T10:09:12.306+09:00',
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

νƒ€μž„μŠ€νƒ¬ν”„ ν˜•μ‹μ˜ 뢈일치λ₯Ό μˆ˜μ •ν•΄ μ£Όμ„Έμš”

MyReviewData λ‚΄μ˜ 일뢀 νƒ€μž„μŠ€νƒ¬ν”„κ°€ μ„œλ‘œ λ‹€λ₯Έ ν˜•μ‹μ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€:

  • μΌλΆ€λŠ” ISO 8601 ν˜•μ‹ μ‚¬μš©: 2024-10-31T10:09:12.306+09:00
  • μΌλΆ€λŠ” 이전 ν˜•μ‹ μ‚¬μš©: 2024-10-31T00:56

μ΄λŸ¬ν•œ λΆˆμΌμΉ˜λŠ” λ‹€μŒκ³Ό 같은 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€:

  • λ‚ μ§œ νŒŒμ‹± 였λ₯˜
  • μ‹œκ°„λŒ€ 처리 문제
  • μ •λ ¬ 및 필터링 μ˜€μž‘λ™

λͺ¨λ“  νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό λ‹€μŒ ISO 8601 ν˜•μ‹μœΌλ‘œ 톡일해 μ£Όμ„Έμš”:

-      createdAt: '2024-10-31T00:56',
+      createdAt: '2024-10-31T00:56:00.000+09:00',

Also applies to: 236-236, 246-246, 276-276, 286-286, 296-296, 306-306, 316-316, 326-326, 336-336

Comment on lines +20 to +166
},
{
"nickname": "ㅁㄴㅇㄹ",
"email": "[email protected]",
"password": "asdfasdf",
"confirmPassword": "asdfasdf",
"id": 8
},
{
"nickname": "ㅁㄴㅇㄹ",
"email": "[email protected]",
"password": "asdfasdf",
"confirmPassword": "asdfasdf",
"id": 9
},
{
"nickname": "율율",
"email": "[email protected]",
"password": "asdfasdf",
"confirmPassword": "asdfasdf",
"id": 10
},
{
"nickname": "율율",
"email": "[email protected]",
"password": "asdfasdf",
"confirmPassword": "asdfasdf",
"id": 11
},
{
"nickname": "율율",
"email": "[email protected]",
"password": "asdfasdf",
"confirmPassword": "asdfasdf",
"id": 12
},
{
"nickname": "율율",
"email": "[email protected]",
"password": "asdfasdf",
"confirmPassword": "asdfasdf",
"id": 13
},
{
"nickname": "호호",
"email": "[email protected]",
"password": "hohohoho1",
"confirmPassword": "hohohoho1",
"id": 14
},
{
"nickname": "minha",
"email": "[email protected]",
"password": "test1234",
"confirmPassword": "test1234",
"id": 15
},
{
"nickname": "lemon",
"email": "[email protected]",
"password": "password1234!",
"confirmPassword": "password1234!",
"id": 16
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 17
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 18
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 19
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 20
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 21
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 22
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 23
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 24
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 25
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 26
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 27
},
{
"nickname": "dddd",
"email": "[email protected]",
"password": "@@a1a2a3",
"confirmPassword": "@@a1a2a3",
"id": 28
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

λ―Όκ°ν•œ μ‚¬μš©μž 데이터 λ…ΈμΆœ 문제

νšŒμ›κ°€μž… 데이터에 μ‹€μ œ 이메일 μ£Όμ†Œμ™€ λΉ„λ°€λ²ˆν˜Έκ°€ ν‰λ¬ΈμœΌλ‘œ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ³΄μ•ˆμƒμ˜ μœ„ν—˜μ΄ μžˆμœΌλ―€λ‘œ λ‹€μŒκ³Ό 같이 κ°œμ„ μ΄ ν•„μš”ν•©λ‹ˆλ‹€:

  • μ‹€μ œ 이메일 μ£Όμ†Œ λŒ€μ‹  κ°€μƒμ˜ 이메일 μ‚¬μš©
  • λΉ„λ°€λ²ˆν˜ΈλŠ” ν•΄μ‹œ 처리된 ν˜•νƒœλ‘œ μ €μž₯
  • ν…ŒμŠ€νŠΈ λ°μ΄ν„°μ˜ 경우 μΌκ΄€λœ νŒ¨ν„΄ μ‚¬μš© (예: [email protected], [email protected])

Comment on lines +174 to +348
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 2
},
{
"email": "[email protected]",
"password": "qwerty1234",
"id": 3
},
{
"email": "[email protected]",
"password": "qwerty1234",
"id": 4
},
{
"email": "[email protected]",
"password": "asdf123456",
"id": 5
},
{
"email": "[email protected]",
"password": "asdf123456",
"id": 6
},
{
"email": "[email protected]",
"password": "ㅁㄴdfasdf",
"id": 7
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 8
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 9
},
{
"email": "[email protected]",
"password": "asdf12345",
"id": 10
},
{
"email": "[email protected]",
"password": "asdfggjk",
"id": 11
},
{
"email": "[email protected]",
"password": "qwerty1234",
"id": 12
},
{
"email": "[email protected]",
"password": "qwerty1234",
"id": 13
},
{
"email": "[email protected]",
"password": "asdf123456",
"id": 14
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 15
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 16
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 17
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 18
},
{
"email": "[email protected]",
"password": "password",
"id": 19
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 20
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 21
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 22
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 23
},
{
"email": "[email protected]",
"password": "qwerty1234",
"id": 24
},
{
"email": "[email protected]",
"password": "qwerty1234",
"id": 25
},
{
"email": "[email protected]",
"password": "fakepassword^^",
"id": 26
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 27
},
{
"email": "[email protected]",
"password": "asdf12345",
"id": 28
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 29
},
{
"email": "[email protected]",
"password": "fakepassword^^",
"id": 30
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 31
},
{
"email": "[email protected]",
"password": "asdfasdf",
"id": 32
},
{
"email": "[email protected]",
"password": "@@a1a2a3",
"id": 33
},
{
"email": "[email protected]",
"password": "@@a1a2a3",
"id": 34
},
{
"email": "[email protected]",
"password": "asdfasdfasdfsd",
"id": 35
},
{
"email": "[email protected]",
"password": "asdfafsd",
"id": 36
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

둜그인 λ°μ΄ν„°μ˜ 쀑볡 μ—”νŠΈλ¦¬ 발견

λ™μΌν•œ 이메일 μ£Όμ†Œλ‘œ μ—¬λŸ¬ 개의 둜그인 기둝이 μ‘΄μž¬ν•©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ λ°μ΄ν„°μ˜ ν’ˆμ§ˆ ν–₯상을 μœ„ν•΄ λ‹€μŒμ„ μ œμ•ˆν•©λ‹ˆλ‹€:

  • 쀑볡 μ—”νŠΈλ¦¬ 제거
  • 각 μ‚¬μš©μžλ‹Ή ν•˜λ‚˜μ˜ 둜그인 기둝만 μœ μ§€
  • ν…ŒμŠ€νŠΈ μ‹œλ‚˜λ¦¬μ˜€λ³„λ‘œ κ΅¬λΆ„λœ 데이터셋 ꡬ성

@github-actions
Copy link

github-actions bot commented Nov 9, 2024

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
src/components/common/input/date-time-picker/index.tsx (1)

Line range hint 29-33: 당일 κ³Όκ±° μ‹œκ°„ 선택 λ°©μ§€ 둜직 ν•„μš”

ν˜„μž¬ λ‚ μ§œκ°€ μ„ νƒλœ 경우, ν˜„μž¬ μ‹œκ°„ μ΄μ „μ˜ μ‹œκ°„μ„ 선택할 수 없도둝 μ²˜λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

μ‹œκ°„ 선택 λ‘œμ§μ„ λ‹€μŒκ³Ό 같이 κ°œμ„ ν•˜λŠ” 것을 μ œμ•ˆν•©λ‹ˆλ‹€:

const handleTime = () => {
+ const now = dayjs();
+ const selectedDateTime = dayjs(selected).hour(Number(hour)).minute(Number(minute));
+ 
+ if (dayjs(selected).isSame(now, 'day') && selectedDateTime.isBefore(now)) {
+   // ν˜„μž¬ μ‹œκ°„λ³΄λ‹€ 이전 μ‹œκ°„μ„ μ„ νƒν•œ 경우 처리
+   return;
+ }
- const newDate = dayjs(selected).hour(Number(hour)).minute(Number(minute)).toDate();
+ const newDate = selectedDateTime.toDate();
  setSelected(newDate);
  onChange(newDate);
};
πŸ“œ Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between f101987 and 51cfe2f.

πŸ“’ Files selected for processing (3)
  • src/components/common/input/date-time-picker/index.tsx (1 hunks)
  • src/mock/review-data.ts (28 hunks)
  • src/utils/is-today.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/mock/review-data.ts
  • src/utils/is-today.ts
πŸ”‡ Additional comments (1)
src/components/common/input/date-time-picker/index.tsx (1)

58-58: κ³Όκ±° λ‚ μ§œ 선택 λ°©μ§€ 둜직 κ²€ν†  ν•„μš”

κ³Όκ±° λ‚ μ§œ 선택을 λ°©μ§€ν•˜λŠ” κΈ°λŠ₯이 μΆ”κ°€λœ 것은 쒋은 κ°œμ„ μ‚¬ν•­μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ λͺ‡ κ°€μ§€ κ³ λ €ν•΄μ•Ό ν•  사항이 μžˆμŠ΅λ‹ˆλ‹€:

  1. νƒ€μž„μ‘΄ 차이둜 μΈν•œ λ‚ μ§œ 비ꡐ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. μ„œλ²„ μΈ‘μ—μ„œλ„ λ™μΌν•œ μœ νš¨μ„± 검사가 ν•„μš”ν•©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 νƒ€μž„μ‘΄μ„ λͺ…μ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” 것을 κ³ λ €ν•΄λ³΄μ„Έμš”:

-excludeDate={(date) => dayjs(date).isBefore(dayjs().startOf('day'))}
+excludeDate={(date) => {
+  const localDate = dayjs(date).local();
+  const today = dayjs().local().startOf('day');
+  return localDate.isBefore(today);
+}}
βœ… Verification successful

Let's analyze the validation patterns across the codebase to better understand how dates are validated both on client and server side.


λ‚ μ§œ 선택 μ œν•œ κΈ°λŠ₯ κ²€ν†  μ™„λ£Œ

ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ λ‚ μ§œ μœ νš¨μ„± 검사가 적절히 κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œλ² μ΄μŠ€ 뢄석 κ²°κ³Ό, ν˜„μž¬ κ΅¬ν˜„λœ excludeDate 둜직이 κ³Όκ±° λ‚ μ§œ 선택을 효과적으둜 λ°©μ§€ν•˜κ³  있으며, μ΄λŠ” μ‚¬μš©μž κ²½ν—˜ μΈ‘λ©΄μ—μ„œ μ μ ˆν•œ μ ‘κ·Ό λ°©μ‹μž…λ‹ˆλ‹€.

νƒ€μž„μ‘΄ κ΄€λ ¨ μ œμ•ˆμ‚¬ν•­μ€ μ² νšŒν•©λ‹ˆλ‹€. dayjs().startOf('day')λŠ” 이미 둜컬 μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ²˜λ¦¬ν•˜λ―€λ‘œ 좔가적인 νƒ€μž„μ‘΄ μ²˜λ¦¬κ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ„œλ²„ μΈ‘ μœ νš¨μ„± κ²€μ‚¬λŠ” λ³„λ„μ˜ PRμ—μ„œ 닀루어져야 ν•  μ‚¬ν•­μœΌλ‘œ νŒλ‹¨λ©λ‹ˆλ‹€.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if server-side validation exists
rg -A 5 "validateDate|dateValidation" 

Length of output: 39


Script:

#!/bin/bash
# Search for date validation patterns in the codebase
rg -A 5 "startOf\('day'\)|isBefore\(|isAfter\(" 

# Search for form validation related to dates
ast-grep --pattern 'const $_ = z.object({
  $$$
  date: $_,
  $$$
})'

# Look for API validation or schema definitions
rg -A 5 "date.*required|date.*validation"

Length of output: 846


Script:

#!/bin/bash
# Look for API endpoints or handlers that process dates
rg -A 5 "POST.*gathering|PUT.*gathering|PATCH.*gathering"

# Search for date-related schema or type definitions
ast-grep --pattern 'interface $_ {
  $$$
  date: $_
  $$$
}'

# Check for date validation in form submissions
rg -A 5 "handleSubmit.*date|onSubmit.*date"

Length of output: 168

Copy link
Contributor

@User850413 User850413 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

λͺ¨λ₯΄κ³  닡변을 μ‚­μ œν•΄λ²„λ Έλ„€μš” μ£„μ†‘ν•©λ‹ˆλ‹Ή πŸ₯Ή

클릭 ν›„ λΈ”λŸ¬μ‹œ ν•˜μœ„λ©”λ‰΄κ°€ μ•ˆμ‚¬λΌμ§„λ‹€κ³  ν•˜μ…¨λŠ”λ°

μ–΄λ–¨ λ•Œ μ•ˆμ‚¬λΌμ§€λŠ”κ±΄μ§€ μžμ„Έν•˜κ²Œ λ§μ”€ν•΄μ£Όμ‹œκ² μ–΄μš”? λ¬Έμ œκ°€ μ•ˆλ³΄μž…λ‹ˆλ‹€ γ… 

@yulrang
Copy link
Contributor Author

yulrang commented Nov 11, 2024

λͺ¨λ₯΄κ³  닡변을 μ‚­μ œν•΄λ²„λ Έλ„€μš” μ£„μ†‘ν•©λ‹ˆλ‹Ή πŸ₯Ή

클릭 ν›„ λΈ”λŸ¬μ‹œ ν•˜μœ„λ©”λ‰΄κ°€ μ•ˆμ‚¬λΌμ§„λ‹€κ³  ν•˜μ…¨λŠ”λ°
μ–΄λ–¨ λ•Œ μ•ˆμ‚¬λΌμ§€λŠ”κ±΄μ§€ μžμ„Έν•˜κ²Œ λ§μ”€ν•΄μ£Όμ‹œκ² μ–΄μš”? λ¬Έμ œκ°€ μ•ˆλ³΄μž…λ‹ˆλ‹€ γ… 

Screenshot 2024-11-11 at 10 55 42

Copy link
Contributor

@User850413 User850413 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

μ •λ§μˆ˜κ³ λ§ŽμœΌμ…¨μŠ΅λ‹ˆλ‹€πŸ₯ΊπŸ˜­

Copy link
Contributor

@HaeJungg HaeJungg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

μˆ˜κ³ ν•˜μ…¨μŠ΄λ‹ˆλ‹€! ν˜Ήμ‹œ μœ„μ— ν΄λ¦­μ‹œ λ“œλ‘­λ‹€μš΄ μœ—λΆ€λΆ„?도 색 변경이 κ°€λŠ₯ν• κΉŒμš”??πŸ‘€

@github-actions
Copy link

@yulrang yulrang merged commit a260208 into develop Nov 11, 2024
yulrang added a commit that referenced this pull request Nov 11, 2024
* πŸ“ docs: 프리티어, tsconfig order μΆ”κ°€

* ✨ feat: λͺ© api λ³€κ²½, μ˜ˆμ‹œ μ½”λ“œ μΆ”κ°€

* ✨ feat: μ—λŸ¬μ²˜λ¦¬ μΆ”κ°€

* ✨ feat: suspenseκ°€ κ°€λŠ₯ν•˜λ„λ‘ μˆ˜μ •

* 🎨 style: eslint changed

* ✨ Feat: auth store μΆ”κ°€, πŸ’„ style: prettier import order μΆ”κ°€

* πŸ’„ style: import order μˆ˜μ •

* πŸ’„ design: λͺ¨λ‹¬ μˆ˜μ •

* 🚧 wip: μ΄μ „μœΌλ‘œ 되돌림

* πŸ› Fix: svgr μ‚¬μš©μœΌλ‘œ src에 넣은 svg νŒŒμΌμ„ 파일 μ£Όμ†Œλ‘œ λ°”κΏˆ

* πŸ’„ design: μ’‹μ•„μš” μ»΄ν¬λ„ŒνŠΈ λ””μžμΈλ³€κ²½

* ✨ feat: ν•˜νŠΈ μ»΄ν¬λ„ŒνŠΈ μ—°κ²°, id μΆ”κ°€

* πŸ—‘οΈ chore: 파일 μœ„μΉ˜λ³€κ²½

* 🎨 style: 글씨체 μ„ μ–Έ λ³€κ²½

* πŸ› fix: λ””ν…ŒμΌ νŽ˜μ΄μ§€μ—μ„œ 클릭 μ•ˆλ˜κ²Œ λ³€κ²½, 약속 데이터 λ³€κ²½, μΊ”μŠ¬ κΈ°λŠ₯μ‚­μ œ(μ™„μ „νžˆ μ‚­μ œλ˜λŠ” 방식)

* πŸ› fix: 데이터 λ³€κ²½

* πŸ› test: μ—†λŠ” ν…ŒμŠ€νŠΈ μ‚­μ œ

* πŸ‘· Chore: svgr.d.ts 파일의 ?url νƒ€μž… μ„€μ • λ³€κ²½ ν›„ Image에 쓰인 svg파일 μ£Όμ†Œ λͺ¨λ‘ μˆ˜μ •

* πŸ› Fix: svgr 제거

* πŸ‘· Chore: storybook의 main.ts νŒŒμΌμ—μ„œ svgr κ΄€λ ¨ μ„€μ • 지움

* ♻️ refactor: 리뷰 데이터 및 리뷰 νƒ€μž… λΉΌκΈ°

* ✨ feat: mock api

* ✨ Feat: login API μΆ”κ°€

* πŸ› fix: 달라진 데이터 νƒ€μž…μ— λ”°λ₯Έ prop μˆ˜μ •

* πŸ§ͺ test: storybook μˆ˜μ •

* ✨ Feat: getUser API μΆ”κ°€

* ✨ Feat: 헀더에 토큰 μΆ”κ°€

* πŸ“¦ chore: add μΌ€λ°₯ μ•„μ΄μ½˜

* πŸ’„ design: ν”„λ‘œν•„ 이미지, ν”„λ‘œν•„ λͺ¨μ€ μ»΄ν¬λ„ŒνŠΈ λ””μžμΈ μˆ˜μ •

* πŸ’„ design: ν¬λ£¨μΉ΄λ“œ λ””μžμΈ λ³€κ²½

* πŸ› fix: 데이터 λ³€κ²½

* πŸ› fix: μŠ€ν† λ¦¬λΆ 였λ₯˜ μˆ˜μ •

* ✨ Feat: 헀더에 λ‘œκ·Έμ•„μ›ƒ κΈ°λŠ₯ μΆ”κ°€

* πŸ› fix: storybookμ—μ„œ isauth arg μ‚­μ œ

* ✨ feat: format-date ν•¨μˆ˜ μΆ”κ°€

* πŸ’„ design: 바뀐 λ””μžμΈ ui 적용

* πŸ“¦ package: merge ν›„ ν•„μš” νŒ¨ν‚€μ§€ μ„€μΉ˜

* ✨ Feat: Signup νŽ˜μ΄μ§€ μΆ”κ°€, λ‚΄λΆ€μ˜ useForm을 μ™ΈλΆ€μ—μ„œ μ„ μ–Έ ν•˜λ„λ‘ λ³€κ²½

* Feat/cr 70/my page (#43)

* ✨ Feat: calendar-filter μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

* πŸ’š CI: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½, νŒ¨ν‚€μ§€ μΆ”κ°€

* πŸ’„ Design : λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

* 🚚 Chore: 폴더 μœ„μΉ˜ λ³€κ²½

* ✨ Feat: λ§ˆμ΄νŽ˜μ΄μ§€ 상단 μž‘μ„±

* 🎨 Style: 프리티어 적용

* πŸ› Fix: data type μˆ˜μ •

* πŸ› Fix: data type μˆ˜μ •

* πŸ› Fix: data type μˆ˜μ •

* πŸ’„ design: λ§ˆμ΄νŽ˜μ΄μ§€μ— 리뷰 리슀트 μ‚½μž…

* πŸ“ docs: 이전 λ‚΄μš© μ‚­μ œ

* ✨ Feat: νšŒμ›κ°€μž… API μΆ”κ°€

* ✨ feat: 리뷰 점수 및 κ·Έλž˜ν”„ μΆ”κ°€

* πŸ’„ Style: μ „μ²΄νŽ˜μ΄μ§€ λ ˆμ΄μ•„μ›ƒ μˆ˜μ •

* πŸ’„ Style: header에 container μΆ”κ°€

* πŸ’„ Style: mantine font pretendard μ„€μ •, ♻️ Refactor: font λ¦¬νŒ©ν† λ§

* πŸ’„ Style: font-pretendard μ‚­μ œ

* ♻️ Refactor: theme /style둜 파일 μœ„μΉ˜ 이동

* ✨ feat: env μ„€μ • μΆ”κ°€

* πŸ› fix: νƒ€μž… μˆ˜μ •

* πŸ› fix: 데이터 이름 μˆ˜μ •

* ✨ feat: λͺ© api μΆ”κ°€

* πŸ”₯ chore: μ‚¬μš©ν•˜μ§€μ•ŠλŠ” λ ˆμ΄μ•„μ›ƒ μ‚­μ œ

* πŸ› fix: 데이터에 맞게 μˆ˜μ •, λΆ„κΈ°μ²˜λ¦¬

* ♻️ refactor: profile μ»΄ν¬λ„ŒνŠΈλ‘œ λŒ€μ²΄

* ✨ feat: μΊλŸ¬μ…€ μ§μ ‘κ΅¬ν˜„

* πŸ› fix: eslint error

* ✨ feat: λ””ν…ŒμΌ νŽ˜μ΄μ§€ 쑰립

* πŸ› fix: λ²„νŠΌμœΌλ‘œ λ³€κ²½ #53

* ♻️ Refactor: auth folder μΆ”κ°€

* Feat/cr 58/create crew page (#41)

* ✨ Feat: calendar-filter μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

* πŸ’š CI: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½, νŒ¨ν‚€μ§€ μΆ”κ°€

* πŸ’„ Design : λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

* 🚚 Chore: 폴더 μœ„μΉ˜ λ³€κ²½

* Update and rename deploy.yml to trigger.yml

* Update dispatch.yml

* Update and rename trigger.yml to deploy.yml

* Update dispatch.yml

* Create dispatch_develop.yml

* Create deploy_develop.yml

* Update dispatch_develop.yml

* Update deploy_develop.yml

* Update deploy.yml

* Update deploy_develop.yml

* Update dispatch.yml

* Update dispatch_develop.yml

* ✨ Feat: ν…μŠ€νŠΈμΈν’‹, λ“œλ‘­λ‹€μš΄, νŒŒμΌμΈν’‹ μΆ”κ°€

* ♻️ Refactor: λ“œλ‘­λ‹€μš΄ μˆ˜μ • 반영

* ✨ Feat: νŽ˜μ΄μ§€ μ΄ˆμ•ˆ μž‘μ„±

* πŸ’„ Style: 프리티어 적용

* πŸ’„ Design: λ””μžμΈ 적용, 파일 이동

* πŸ’„ Design: λ””μžμΈ 적용, 파일 이동

* 🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€κ°€

* πŸ› Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚚 Chore: 파일 이동

* ✨ Feat: μœ νš¨μ„± 검사 μΆ”κ°€

* πŸ”§ Chore: μŠ€ν† λ¦¬λΆ λΉŒλ“œ 였λ₯˜ λ•Œλ¬Έμ— μ„€μ • μˆ˜μ •

* πŸ”§ Chore: μ„€μ • 제거

* πŸ› Fix: dropdown λ‹€λ₯Έ 곳에 영ν–₯ μ•ˆκ°€λ„λ‘ μˆ˜μ •

* πŸ› Fix: onBlur λΉΌλ‚΄κΈ°

* 🚚 Chore: 파일 이동, CSR둜 μ „ν™˜

* 🎨 Style : λ¦°νŠΈν”„λ¦¬ν‹°μ–΄ 적용

* πŸ› Fix: 였λ₯˜ μˆ˜μ •

* πŸ› Fix: λ²„νŠΌ ꡐ체

* πŸ› Fix: TextInput ꡐ체

* πŸ”§ Chore: config λ³€κ²½

* πŸ› Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* πŸ› Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* 🚚 Chore: 파일 이동

* 🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

* πŸ› Fix: 같은 파일 μ—…λ‘œλ“œμ‹œ μ—…λ‘œλ“œ λ˜μ§€ μ•ŠλŠ” 문제 ν•΄κ²°

* πŸ› Fix: ν•œκΈ€μž…λ ₯μ‹œ 21μžμ—μ„œ λ˜λŒμ•„κ°€λŠ” 문제 μˆ˜μ •

* πŸ› Fix: λΈ”λŸ¬μ‹œ ν•¨μˆ˜ 좩돌문제 ν•΄κ²°

* ✨ feat: λ°•μŠ€ μ„€λ„μš° config μΆ”κ°€

* ✨ feat: μ•½μ†νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš©ν•˜λŠ” μΉ΄λ“œ μΆ”κ°€ #53

* πŸ§ͺ test: μŠ€ν† λ¦¬λΆ μž‘μ„± #53

* ♻️ Refactor: (crew) folder μΆ”κ°€

* πŸ’„ design: ν¬λ£¨μΉ΄λ“œμ†Œμ œλͺ© λ³€κ²½

* πŸ› fix: λ²„νŠΌ type μˆ˜μ •

* ✨ feat: cn ν›… μΆ”κ°€

* πŸ’„ design: ui μˆ˜μ •

* πŸ’„ Style: auth layout ui μˆ˜μ •, ♻️ Refactor: layout λ¦¬νŒ©ν† λ§

* ✨ feat: 약속 λ””ν…ŒμΌ λͺ¨λ‹¬ μ—°κ²°

* πŸ’„ design: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈλ‘œ ꡐ체

* ✨ feat: 크루 리뷰뢀뢄 쑰립

* πŸ’„ Style: λ””μžμΈμ— 맞게 λ ˆμ΄μ•„μ›ƒ UI μˆ˜μ •

* ✨ Feat: 둜그인/νšŒμ›κ°€μž… νŽ˜μ΄μ§€ 연결링크 μΆ”κ°€

* πŸ› fix: λ ˆμ΄μ•„μ›ƒ md λ°˜μ‘ν˜• μ•ˆλ˜λŠ” 문제 μˆ˜μ •

* 🚚 chore: 파일 μœ„μΉ˜ λ³€κ²½

* πŸ’„ design: λ ˆμ΄μ•„μ›ƒμ— 따라 μˆ˜μ •

* πŸ’„ design: λ ˆμ΄μ•„μ›ƒμ— 따라 μˆ˜μ •

* ✨ feat: κΈ°λ³Έ ꡬ쑰 μž‘μ„± #57

* πŸ’„ design: 헀더 λ°˜μ‘ν˜• λ””μžμΈ μˆ˜μ •

* πŸ’„ design: my 간격 μΆ”κ°€

* πŸ’„ design: mx 간격 μΆ”κ°€

* πŸ› fix: response값에 λ”°λ₯Έ νƒ€μž…, κ°’λ³€κ²½

* πŸ› fix: response값에 λ”°λ₯Έ νƒ€μž…, κ°’λ³€κ²½

* πŸ“ docs: mock데이터 μΆ”κ°€ #57

* πŸ› fix: νƒ€μž…μ—λŸ¬ μˆ˜μ •

* ✨ feat: mock API μΆ”κ°€ #57

* ✨ feat: notification μΆ”κ°€

* ✨ feat: 데이터 μ‚½μž… #57

* Feat/cr 76/index page (#51)

* ✨ Feat: calendar-filter μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

* πŸ’š CI: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½, νŒ¨ν‚€μ§€ μΆ”κ°€

* πŸ’„ Design : λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

* 🚚 Chore: 폴더 μœ„μΉ˜ λ³€κ²½

* Squashed commit of the following:

commit d7c6625
Author: Lee Youl <[email protected]>
Date:   Mon Nov 4 12:02:47 2024 +0900

    πŸ› Fix: λ™μž‘ 였λ₯˜ μˆ˜μ •

commit 0f8c22d
Author: Lee Youl <[email protected]>
Date:   Mon Nov 4 11:21:24 2024 +0900

    ♻️ Refactor: 쀑볡 제거

commit 16bd2be
Author: Lee Youl <[email protected]>
Date:   Mon Nov 4 11:13:03 2024 +0900

    🚨 Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œ 였λ₯˜ μˆ˜μ •

commit 0deef07
Author: Lee Youl <[email protected]>
Date:   Mon Nov 4 11:07:42 2024 +0900

    🎨 Style: 주석 μΆ”κ°€, μž„ν¬νŠΈ 정리

commit e5c916b
Author: Lee Youl <[email protected]>
Date:   Mon Nov 4 10:59:13 2024 +0900

    πŸ› Fix: μΉ΄ν…Œκ³ λ¦¬ λ³€κ²½ prop μΆ”κ°€, μŠ¬λΌμ΄λ” ν›… 뢄리

commit 1deb038
Merge: f152eb7 bd30e0f
Author: Lee Youl <[email protected]>
Date:   Mon Nov 4 10:00:04 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit f152eb7
Author: Lee Youl <[email protected]>
Date:   Sun Nov 3 20:11:47 2024 +0900

    πŸ’„ Design: μ—¬λ°± μˆ˜μ •

commit d63b562
Author: Lee Youl <[email protected]>
Date:   Sun Nov 3 14:06:18 2024 +0900

    πŸ’„ Design : 메인 μΉ΄ν…Œκ³ λ¦¬ μ• λ‹ˆλ©”μ΄μ…˜ μΆ”κ°€

commit 7a1270a
Merge: a8b962a 1806a4a
Author: Lee Youl <[email protected]>
Date:   Sun Nov 3 12:44:48 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit a8b962a
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 10:02:34 2024 +0900

    🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

commit 3ad5b07
Merge: 0a40244 5febab3
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 09:59:56 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 0a40244
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 09:34:28 2024 +0900

    πŸ’„ Design: 폰트 적용

commit 0729cb0
Merge: 6ee5c6d 3125fb9
Author: leeyoul <[email protected]>
Date:   Thu Oct 31 09:27:33 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 6ee5c6d
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 09:24:22 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit d623af0
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 09:12:45 2024 +0900

    πŸ’š CI: μ›Œν¬ν”Œλ‘œμš° μˆ˜μ •

commit a4786e7
Merge: 4c04503 65c32f0
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 09:08:39 2024 +0900

    Merge branch 'main' into Feat/CR-28/MainCategory

commit 4c04503
Author: Lee Youl <[email protected]>
Date:   Thu Oct 31 09:07:20 2024 +0900

    🚨 Fix: 린트였λ₯˜ 제거

commit 46f2001
Merge: 766b28b e28e039
Author: leeyoul <[email protected]>
Date:   Thu Oct 31 09:02:56 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 766b28b
Author: Lee Youl <[email protected]>
Date:   Wed Oct 30 21:50:46 2024 +0900

    🚚 Chore: 이미지 파일 이동

commit ac3ae1e
Merge: f1241cb e02a1ca
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 19:46:43 2024 +0900

    Merge branch 'Feat/CR-28/MainCategory' of https://github.com/CodeitFESI4-Team1/Team-1-Codeit into Feat/CR-28/MainCategory

commit f1241cb
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 19:44:57 2024 +0900

    πŸ› Fix: λ©”μΈμΉ΄ν…Œκ³ λ¦¬ ν˜Έλ²„ 둜직 μˆ˜μ •

commit e02a1ca
Merge: 525fee9 3ea3d45
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 17:40:31 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 525fee9
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 17:35:04 2024 +0900

    🎨 Style: ν΄λž˜μŠ€μ΄λ¦„ μˆœμ„œ λ³€κ²½

commit 1627d6f
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 17:26:59 2024 +0900

    πŸ’„ Design: λ””μžμΈ λ§žμΆ”κΈ°

commit 4700099
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 17:09:13 2024 +0900

    πŸ’„ Design: λ””μžμΈ λ§žμΆ”κΈ°

commit 3c60268
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 16:47:29 2024 +0900

    πŸ”§ Chore: 폰트 μ„€μ • μˆ˜μ •

commit cdc674d
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 15:49:07 2024 +0900

    πŸ’„ Design: λ””μžμΈ λ§žμΆ”κΈ°

commit c0c5af4
Merge: 9f321f3 7fa5224
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 15:14:19 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 65c32f0
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 13:31:53 2024 +0900

    Update dispatch_develop.yml

commit dda1af5
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 13:31:43 2024 +0900

    Update dispatch.yml

commit a0bf193
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 13:31:32 2024 +0900

    Update deploy_develop.yml

commit 18d89ae
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 13:31:21 2024 +0900

    Update deploy.yml

commit 984cefc
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 13:13:17 2024 +0900

    Update deploy_develop.yml

commit 47a09ec
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 13:12:52 2024 +0900

    Update dispatch_develop.yml

commit 88d62de
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 12:50:51 2024 +0900

    Create deploy_develop.yml

commit 451c9c9
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 12:50:30 2024 +0900

    Create dispatch_develop.yml

commit 614934d
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 12:49:55 2024 +0900

    Update dispatch.yml

commit e12af5b
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 12:49:42 2024 +0900

    Update and rename trigger.yml to deploy.yml

commit df8d44d
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 12:34:05 2024 +0900

    Update dispatch.yml

commit 98a710b
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 12:33:35 2024 +0900

    Update and rename deploy.yml to trigger.yml

commit 9f321f3
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 11:36:01 2024 +0900

    πŸ› Fix: νƒ€μž… μˆ˜μ •

commit 323f8d0
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 11:32:49 2024 +0900

    πŸ› Fix: 바뀐 ν…ŒμΌμœˆλ“œ μ„€μ • 반영

commit 321df95
Merge: 5b28fbe 25f04d3
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 11:28:32 2024 +0900

    Merge branch 'Feat/CR-36/DateTimePicker' into Feat/CR-28/MainCategory

commit 5b28fbe
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 10:32:05 2024 +0900

    πŸ› Fix: νƒ€μž… μˆ˜μ •

commit 25f04d3
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 10:28:49 2024 +0900

    πŸ”§ Chore: ν…ŒμΌμœˆλ“œ config - typo μ„€μ • μˆ˜μ •

commit 1593538
Merge: f35edce af4a767
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 10:08:59 2024 +0900

    Merge branch 'develop' into Feat/CR-36/DateTimePicker

commit f35edce
Merge: 6c0fd9a 1f62e6a
Author: leeyoul <[email protected]>
Date:   Tue Oct 29 10:04:59 2024 +0900

    Merge branch 'develop' into Feat/CR-36/DateTimePicker

commit ab75dfe
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 10:02:22 2024 +0900

    πŸ› Fix: νƒ€μž… μˆ˜μ •

commit 9cd7c3d
Author: Lee Youl <[email protected]>
Date:   Tue Oct 29 09:42:40 2024 +0900

    ♻️ Refactor : μ½”λ“œ 리뷰 반영

commit 9dcf962
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 18:26:49 2024 +0900

    πŸ› Fix: νƒ€μž… μˆ˜μ •

commit 5075a03
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 18:21:22 2024 +0900

    πŸ› Fix: νƒ€μž…μˆ˜μ •

commit 616146b
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 17:25:18 2024 +0900

    ✨ Feat: 크루찾기 상단뢀뢄 μž‘μ„±

commit 0af5271
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 14:26:59 2024 +0900

    πŸ› Fix: μ»΄ν¬λ„ŒνŠΈ 일뢀 μˆ˜μ •

commit 53e296e
Merge: 5592dd2 af4a767
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 14:10:47 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 5592dd2
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 14:05:02 2024 +0900

    πŸ’„ Design: 크루찾기 νŽ˜μ΄μ§€ μž‘μ„±μ€‘

commit bd2d17e
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 11:32:45 2024 +0900

    πŸ’„ Design: λ“œλ‘­λ‹€μš΄ μˆ˜μ •

commit 968c5d5
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 11:19:27 2024 +0900

    Merge branch 'Feat/CR-10/DropDown' into Feat/CR-28/MainCategory

commit 7ca9626
Merge: 2f9caf5 9f6fd0c
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 11:17:31 2024 +0900

    Merge branch 'Feat/CR-10/DropDown' into Feat/CR-28/MainCategory

commit 2f9caf5
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 11:13:44 2024 +0900

    ✨ Feat: hero-crew μΆ”κ°€

commit 076318a
Merge: 2cc2a15 b4f6ae1
Author: Lee Youl <[email protected]>
Date:   Mon Oct 28 08:54:30 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 6c0fd9a
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 19:38:12 2024 +0900

    πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

commit 46be3e6
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 16:19:33 2024 +0900

    πŸ› Fix: ν”„λ‘­ νƒ€μž… λ³€κ²½

commit 6d4e93f
Merge: 631dadd b4f6ae1
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 16:09:28 2024 +0900

    Merge branch 'develop' into Feat/CR-36/DateTimePicker

commit 631dadd
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 14:12:49 2024 +0900

    πŸ’„ Design: μŠ€νƒ€μΌ 적용

commit 762b00a
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 14:10:12 2024 +0900

    🚚 Chore: 파일 이동

commit 0a8a6b8
Merge: 4708f62 2934329
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 13:59:31 2024 +0900

    Merge branch 'develop' into Feat/CR-36/DateTimePicker

commit 2cc2a15
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 13:29:34 2024 +0900

    πŸ› Fix: 슀크둀 μŠ¬λΌμ΄λ“œ 개수 μˆ˜μ •

commit 5a88811
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:58:41 2024 +0900

    πŸ”§ Chore: μΆ”κ°€λ‘œ μ •μ˜ν•œ μ„€μ • μˆœμ„œ λ³€κ²½

commit a8858fc
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:48:39 2024 +0900

    🎨 Style: 클래슀λͺ… 적용

commit 8fd4718
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:44:59 2024 +0900

    🎨 Style: 프리티어 적용

commit c1ce5d4
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:42:50 2024 +0900

    🎨 Style: 프리티어 적용

commit fd717b4
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:41:06 2024 +0900

    πŸ”§ Chore: tailwind config μΆ”κ°€

commit b3d7e21
Merge: bc47688 ec0a557
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:32:42 2024 +0900

    Merge branch 'Feat/CR-28/MainCategory' of https://github.com/CodeitFESI4-Team1/Team-1-Codeit into Feat/CR-28/MainCategory

commit bc47688
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:31:16 2024 +0900

    πŸ’„ Design: 메인 μΉ΄ν…Œκ³ λ¦¬ 이미지 λ³€κ²½

commit ec0a557
Merge: 2c7df60 b7ccd9f
Author: leeyoul <[email protected]>
Date:   Fri Oct 25 11:27:42 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 2c7df60
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 11:21:12 2024 +0900

    🎨 Style: 프리티어 적용(+μ„€μ •λ³€κ²½)

commit 55b46f1
Author: Lee Youl <[email protected]>
Date:   Fri Oct 25 10:14:11 2024 +0900

    πŸ’„ Design: λ³€κ²½λœ μΉ΄ν…Œκ³ λ¦¬ μ μš©μ€‘

commit 4708f62
Author: Lee Youl <[email protected]>
Date:   Thu Oct 24 20:30:27 2024 +0900

    πŸ’„ Design: λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

commit a3f86a4
Author: Lee Youl <[email protected]>
Date:   Thu Oct 24 20:21:05 2024 +0900

    ✨ Feat: date-time-picker μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

commit 0d9671a
Author: Lee Youl <[email protected]>
Date:   Thu Oct 24 10:42:38 2024 +0900

    πŸ’„ Design: 간격, 폰트 μŠ€νƒ€μΌ λ³€κ²½

commit 7eedec7
Author: Lee Youl <[email protected]>
Date:   Thu Oct 24 10:33:48 2024 +0900

    πŸ’„ Design: κ°€μš΄λ° μ •λ ¬ μˆ˜μ •

commit f8961b1
Author: Lee Youl <[email protected]>
Date:   Thu Oct 24 10:31:19 2024 +0900

    πŸ› Fix: href μˆ˜μ •

commit a1d2303
Merge: d10ee0f 75b18a8
Author: Lee Youl <[email protected]>
Date:   Thu Oct 24 10:26:43 2024 +0900

    Merge branch 'Feat/CR-28/MainCategory' of https://github.com/CodeitFESI4-Team1/Team-1-Codeit into Feat/CR-28/MainCategory

commit 75b18a8
Merge: dbbea45 a0365d4
Author: leeyoul <[email protected]>
Date:   Thu Oct 24 10:23:46 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit d10ee0f
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 20:58:15 2024 +0900

    πŸ“ Docs: μΉ΄ν…Œκ³ λ¦¬ 데이터 λ³€κ²½

commit dbbea45
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 18:43:21 2024 +0900

    πŸ’„ Design: λ°˜μ‘ν˜• μŠ€νƒ€μΌ μˆ˜μ •

commit 813c0e0
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 18:39:41 2024 +0900

    ✨ Feat: CategoryWrap μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

commit 2694b8c
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 18:38:28 2024 +0900

    πŸ“ Docs: category 데이터 λ³€κ²½

commit b78eee8
Merge: 6abf601 c2c30d8
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 17:41:22 2024 +0900

    Merge branch 'develop' into Feat/CR-28/MainCategory

commit 9f6fd0c
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 17:31:00 2024 +0900

    ♻️ Refactor: dropdown data ν˜•μ‹ λ³€κ²½

commit 7139954
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 16:40:30 2024 +0900

    πŸ’š CI: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

commit b7cd35c
Merge: 22cb8b2 c2c30d8
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 16:32:11 2024 +0900

    Merge branch 'develop' into Feat/CR-10/DropDown

commit 22cb8b2
Author: leeyoul <[email protected]>
Date:   Wed Oct 23 15:42:13 2024 +0900

    Feat/cr 23/internal category (#7)

    * ✨ Feat: InternalCategory μΆ”κ°€

    * πŸ“ Docs: story μΆ”κ°€, 슀크둀 λ™μž‘ 버그 μˆ˜μ •, ν™”μ‚΄ν‘œ ν† κΈ€ λ™μž‘ 버그 μˆ˜μ •

    * πŸ› Fix: 슀크둀 λ™μž‘ 버그 μˆ˜μ •

    * 🚧 chore: mantine 버전 μ›λž˜λŒ€λ‘œ

    * πŸ’š Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ’š : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ’š Fix : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ› Fix : breakpoint μ»€μŠ€ν…€ themeμ—μ„œ κ°€μ Έμ˜€λ„λ‘ μˆ˜μ •

    * πŸ’„ Design: 바뀐 λ””μžμΈμ— 맞게 μˆ˜μ •, λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

    * πŸ’š CI : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ“ Docs: category data λ³€κ²½

    * πŸ’„ Design: μŠ€νƒ€μΌ μˆ˜μ •

    * ♻️ Refactor: νƒ€μž… 뢄리

    * 🚧 Chore: μž„ν¬νŠΈμ˜€λ”μ— types 폴더 μΆ”κ°€

    * πŸ‘· chore: next 이미지 처리 μœ„ν•΄ λͺ¨λ“  도메인 ν—ˆμš©

    * πŸ‘· chore: stories ν…ŒμΌμœˆλ“œ config μΆ”κ°€

    * πŸ‘· chore: κΈ€λ‘œλ²Œ css μœ„μΉ˜μ΄λ™, resetcss μž‘μ„±

    * πŸ‘· chore: μŠ€ν† λ¦¬λΆμ— ν…ŒμΌμœˆλ“œ μΆ”κ°€

    * ✨ feat: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

    * πŸ§ͺ test: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μŠ€ν† λ¦¬λΆ μž‘μ„±

    * 🎨 style: 주석좔가

    * 🎨 style: μ»΄ν¬λ„ŒνŠΈ μ‚­μ œ

    * πŸ”§ chore: 프리티어 μ„€μ • λ³€κ²½

    * πŸ‘· chore: 프리티어 μ„€μ • λ³€κ²½, λ³€κ²½λœ import

    * πŸ‘· chore: 파일 μœ„μΉ˜ λ³€κ²½, git keep μ‚­μ œ

    * πŸ”§ chore: μ‚­μ œλœ import order μΆ”κ°€

    * πŸ‘· chore: import λ³€κ²½, λΉŒλ“œμ—λŸ¬ μˆ˜μ •

    * 🎨 design: import μˆ˜μ •

    * 🚧 chore: prettier changed

    * πŸ› fix: import μˆ˜μ •

    * πŸ› fix: prettier changed

    * πŸ‘· chore: change settings

    * ✨ feat: custom progress bar

    * πŸ§ͺ test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

    * 🚧 Chore: 폴더 정리

    * 🚧 Chore: globals.css μœ„μΉ˜ λ³€κ²½, 프리티어 적용

    * 🚧 Chore: 프리티어 적용

    * πŸ“ Docs: 주석 λ³€κ²½

    * 🚧 Chore: husky no-cache μ„€μ •

    * 🚧 Chore: 프리티어 μ„€μ • 빠진것 μΆ”κ°€

    * 🎨 Style: 프리티어 적용

    ---------

    Co-authored-by: HaeJungg <[email protected]>

commit 059e51b
Author: HaeJungg <[email protected]>
Date:   Tue Oct 22 11:10:05 2024 +0900

    πŸ› fix: prettier changed

commit 5b8b587
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 15:17:20 2024 +0900

    πŸ› fix: import μˆ˜μ •

commit d52272c
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 13:57:58 2024 +0900

    🚧 chore: prettier changed

commit 9f61d36
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 10:08:56 2024 +0900

    🎨 design: import μˆ˜μ •

commit 2b184a3
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:48:59 2024 +0900

    πŸ‘· chore: 파일 μœ„μΉ˜ λ³€κ²½, git keep μ‚­μ œ

commit 3f963fa
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:46:34 2024 +0900

    πŸ‘· chore: 프리티어 μ„€μ • λ³€κ²½, λ³€κ²½λœ import

commit 8c3014b
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:28:21 2024 +0900

    🎨 style: 주석좔가

commit 4197735
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:27:10 2024 +0900

    ✨ feat: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

commit 6f5f88b
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:24:15 2024 +0900

    πŸ‘· chore: μŠ€ν† λ¦¬λΆμ— ν…ŒμΌμœˆλ“œ μΆ”κ°€

commit 37055bf
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:22:17 2024 +0900

    πŸ‘· chore: κΈ€λ‘œλ²Œ css μœ„μΉ˜μ΄λ™, resetcss μž‘μ„±

commit 44e416b
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 16:12:08 2024 +0900

    🎨 Style: 프리티어 적용, 경둜 μˆ˜μ •

commit adad4d0
Author: leeyoul <[email protected]>
Date:   Wed Oct 23 15:42:13 2024 +0900

    Feat/cr 23/internal category (#7)

    * ✨ Feat: InternalCategory μΆ”κ°€

    * πŸ“ Docs: story μΆ”κ°€, 슀크둀 λ™μž‘ 버그 μˆ˜μ •, ν™”μ‚΄ν‘œ ν† κΈ€ λ™μž‘ 버그 μˆ˜μ •

    * πŸ› Fix: 슀크둀 λ™μž‘ 버그 μˆ˜μ •

    * 🚧 chore: mantine 버전 μ›λž˜λŒ€λ‘œ

    * πŸ’š Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ’š : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ’š Fix : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ› Fix : breakpoint μ»€μŠ€ν…€ themeμ—μ„œ κ°€μ Έμ˜€λ„λ‘ μˆ˜μ •

    * πŸ’„ Design: 바뀐 λ””μžμΈμ— 맞게 μˆ˜μ •, λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

    * πŸ’š CI : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ“ Docs: category data λ³€κ²½

    * πŸ’„ Design: μŠ€νƒ€μΌ μˆ˜μ •

    * ♻️ Refactor: νƒ€μž… 뢄리

    * 🚧 Chore: μž„ν¬νŠΈμ˜€λ”μ— types 폴더 μΆ”κ°€

    * πŸ‘· chore: next 이미지 처리 μœ„ν•΄ λͺ¨λ“  도메인 ν—ˆμš©

    * πŸ‘· chore: stories ν…ŒμΌμœˆλ“œ config μΆ”κ°€

    * πŸ‘· chore: κΈ€λ‘œλ²Œ css μœ„μΉ˜μ΄λ™, resetcss μž‘μ„±

    * πŸ‘· chore: μŠ€ν† λ¦¬λΆμ— ν…ŒμΌμœˆλ“œ μΆ”κ°€

    * ✨ feat: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

    * πŸ§ͺ test: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μŠ€ν† λ¦¬λΆ μž‘μ„±

    * 🎨 style: 주석좔가

    * 🎨 style: μ»΄ν¬λ„ŒνŠΈ μ‚­μ œ

    * πŸ”§ chore: 프리티어 μ„€μ • λ³€κ²½

    * πŸ‘· chore: 프리티어 μ„€μ • λ³€κ²½, λ³€κ²½λœ import

    * πŸ‘· chore: 파일 μœ„μΉ˜ λ³€κ²½, git keep μ‚­μ œ

    * πŸ”§ chore: μ‚­μ œλœ import order μΆ”κ°€

    * πŸ‘· chore: import λ³€κ²½, λΉŒλ“œμ—λŸ¬ μˆ˜μ •

    * 🎨 design: import μˆ˜μ •

    * 🚧 chore: prettier changed

    * πŸ› fix: import μˆ˜μ •

    * πŸ› fix: prettier changed

    * πŸ‘· chore: change settings

    * ✨ feat: custom progress bar

    * πŸ§ͺ test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

    * 🚧 Chore: 폴더 정리

    * 🚧 Chore: globals.css μœ„μΉ˜ λ³€κ²½, 프리티어 적용

    * 🚧 Chore: 프리티어 적용

    * πŸ“ Docs: 주석 λ³€κ²½

    * 🚧 Chore: husky no-cache μ„€μ •

    * 🚧 Chore: 프리티어 μ„€μ • 빠진것 μΆ”κ°€

    * 🎨 Style: 프리티어 적용

    ---------

    Co-authored-by: HaeJungg <[email protected]>

commit 3daa054
Author: HaeJungg <[email protected]>
Date:   Tue Oct 22 11:10:05 2024 +0900

    πŸ› fix: prettier changed

commit 6a7613c
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 15:17:20 2024 +0900

    πŸ› fix: import μˆ˜μ •

commit 4b0e8b3
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 10:08:56 2024 +0900

    🎨 design: import μˆ˜μ •

commit 3545e29
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:48:59 2024 +0900

    πŸ‘· chore: 파일 μœ„μΉ˜ λ³€κ²½, git keep μ‚­μ œ

commit 45f6fc5
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:46:34 2024 +0900

    πŸ‘· chore: 프리티어 μ„€μ • λ³€κ²½, λ³€κ²½λœ import

commit e98f4c3
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:28:21 2024 +0900

    🎨 style: 주석좔가

commit c998ac6
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:27:10 2024 +0900

    ✨ feat: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

commit 5eee37b
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:24:15 2024 +0900

    πŸ‘· chore: μŠ€ν† λ¦¬λΆμ— ν…ŒμΌμœˆλ“œ μΆ”κ°€

commit aea5f1f
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:22:17 2024 +0900

    πŸ‘· chore: κΈ€λ‘œλ²Œ css μœ„μΉ˜μ΄λ™, resetcss μž‘μ„±

commit d45f324
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 15:53:36 2024 +0900

    🎨  Style: 폴더 정리, 프리티어 적용

commit e1f1ab5
Author: leeyoul <[email protected]>
Date:   Wed Oct 23 15:42:13 2024 +0900

    Feat/cr 23/internal category (#7)

    * ✨ Feat: InternalCategory μΆ”κ°€

    * πŸ“ Docs: story μΆ”κ°€, 슀크둀 λ™μž‘ 버그 μˆ˜μ •, ν™”μ‚΄ν‘œ ν† κΈ€ λ™μž‘ 버그 μˆ˜μ •

    * πŸ› Fix: 슀크둀 λ™μž‘ 버그 μˆ˜μ •

    * 🚧 chore: mantine 버전 μ›λž˜λŒ€λ‘œ

    * πŸ’š Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ’š : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ’š Fix : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ› Fix : breakpoint μ»€μŠ€ν…€ themeμ—μ„œ κ°€μ Έμ˜€λ„λ‘ μˆ˜μ •

    * πŸ’„ Design: 바뀐 λ””μžμΈμ— 맞게 μˆ˜μ •, λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

    * πŸ’š CI : λΉŒλ“œ 였λ₯˜ μˆ˜μ •

    * πŸ“ Docs: category data λ³€κ²½

    * πŸ’„ Design: μŠ€νƒ€μΌ μˆ˜μ •

    * ♻️ Refactor: νƒ€μž… 뢄리

    * 🚧 Chore: μž„ν¬νŠΈμ˜€λ”μ— types 폴더 μΆ”κ°€

    * πŸ‘· chore: next 이미지 처리 μœ„ν•΄ λͺ¨λ“  도메인 ν—ˆμš©

    * πŸ‘· chore: stories ν…ŒμΌμœˆλ“œ config μΆ”κ°€

    * πŸ‘· chore: κΈ€λ‘œλ²Œ css μœ„μΉ˜μ΄λ™, resetcss μž‘μ„±

    * πŸ‘· chore: μŠ€ν† λ¦¬λΆμ— ν…ŒμΌμœˆλ“œ μΆ”κ°€

    * ✨ feat: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

    * πŸ§ͺ test: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μŠ€ν† λ¦¬λΆ μž‘μ„±

    * 🎨 style: 주석좔가

    * 🎨 style: μ»΄ν¬λ„ŒνŠΈ μ‚­μ œ

    * πŸ”§ chore: 프리티어 μ„€μ • λ³€κ²½

    * πŸ‘· chore: 프리티어 μ„€μ • λ³€κ²½, λ³€κ²½λœ import

    * πŸ‘· chore: 파일 μœ„μΉ˜ λ³€κ²½, git keep μ‚­μ œ

    * πŸ”§ chore: μ‚­μ œλœ import order μΆ”κ°€

    * πŸ‘· chore: import λ³€κ²½, λΉŒλ“œμ—λŸ¬ μˆ˜μ •

    * 🎨 design: import μˆ˜μ •

    * 🚧 chore: prettier changed

    * πŸ› fix: import μˆ˜μ •

    * πŸ› fix: prettier changed

    * πŸ‘· chore: change settings

    * ✨ feat: custom progress bar

    * πŸ§ͺ test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

    * 🚧 Chore: 폴더 정리

    * 🚧 Chore: globals.css μœ„μΉ˜ λ³€κ²½, 프리티어 적용

    * 🚧 Chore: 프리티어 적용

    * πŸ“ Docs: 주석 λ³€κ²½

    * 🚧 Chore: husky no-cache μ„€μ •

    * 🚧 Chore: 프리티어 μ„€μ • 빠진것 μΆ”κ°€

    * 🎨 Style: 프리티어 적용

    ---------

    Co-authored-by: HaeJungg <[email protected]>

commit f48d8a0
Author: HaeJungg <[email protected]>
Date:   Tue Oct 22 15:49:08 2024 +0900

    πŸ§ͺ test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

commit c7e6363
Author: HaeJungg <[email protected]>
Date:   Tue Oct 22 15:37:54 2024 +0900

    ✨ feat: custom progress bar

commit 422e984
Author: HaeJungg <[email protected]>
Date:   Tue Oct 22 15:06:46 2024 +0900

    πŸ‘· chore: change settings

commit dfbd868
Author: HaeJungg <[email protected]>
Date:   Tue Oct 22 11:10:05 2024 +0900

    πŸ› fix: prettier changed

commit bc027ff
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 15:17:20 2024 +0900

    πŸ› fix: import μˆ˜μ •

commit e419533
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 15:11:45 2024 +0900

    πŸ”§ chore: μœˆλ„μš° / λ§₯ λ‘˜λ‹€ ν™œμ„±ν™” ν•  수 μžˆλ„λ‘ μ„€μ •λ³€κ²½

commit 9b3d74f
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 13:57:58 2024 +0900

    🚧 chore: prettier changed

commit c315c7d
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 10:08:56 2024 +0900

    🎨 design: import μˆ˜μ •

commit d9d3a40
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 10:08:29 2024 +0900

    πŸ‘· chore: import λ³€κ²½, λΉŒλ“œμ—λŸ¬ μˆ˜μ •

commit 44fe36f
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:53:52 2024 +0900

    πŸ”§ chore: μ‚­μ œλœ import order μΆ”κ°€

commit 0db6627
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:48:59 2024 +0900

    πŸ‘· chore: 파일 μœ„μΉ˜ λ³€κ²½, git keep μ‚­μ œ

commit f7223ed
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:46:34 2024 +0900

    πŸ‘· chore: 프리티어 μ„€μ • λ³€κ²½, λ³€κ²½λœ import

commit 8db0768
Author: HaeJungg <[email protected]>
Date:   Fri Oct 18 09:44:31 2024 +0900

    πŸ”§ chore: 프리티어 μ„€μ • λ³€κ²½

commit bcc0ac0
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:28:21 2024 +0900

    🎨 style: 주석좔가

commit 7363c78
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:27:30 2024 +0900

    πŸ§ͺ test: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μŠ€ν† λ¦¬λΆ μž‘μ„±

commit a29ae80
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:27:10 2024 +0900

    ✨ feat: ν”„λ‘œν•„ μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

commit 79207a2
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:24:15 2024 +0900

    πŸ‘· chore: μŠ€ν† λ¦¬λΆμ— ν…ŒμΌμœˆλ“œ μΆ”κ°€

commit 9737ca9
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:22:17 2024 +0900

    πŸ‘· chore: κΈ€λ‘œλ²Œ css μœ„μΉ˜μ΄λ™, resetcss μž‘μ„±

commit cd2a3d5
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:21:13 2024 +0900

    πŸ‘· chore: stories ν…ŒμΌμœˆλ“œ config μΆ”κ°€

commit a14376a
Author: HaeJungg <[email protected]>
Date:   Thu Oct 17 18:20:03 2024 +0900

    πŸ‘· chore: next 이미지 처리 μœ„ν•΄ λͺ¨λ“  도메인 ν—ˆμš©

commit 6abf601
Author: Lee Youl <[email protected]>
Date:   Wed Oct 23 14:27:20 2024 +0900

    ✨ Feat: MainCategory μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

commit 2af3c8d
Author: youl <[email protected]>
Date:   Wed Oct 23 11:56:56 2024 +0900

    ✨ Feat: μ΄ˆμ•ˆ μž‘μ„±

commit a15221b
Author: youl <[email protected]>
Date:   Wed Oct 23 11:20:17 2024 +0900

    πŸ’„ Design: 폰트 적용, 간격 μˆ˜μ •

commit 7875412
Author: youl <[email protected]>
Date:   Wed Oct 23 11:01:58 2024 +0900

    πŸ’„ Design: λ””μžμΈμ— 맞게 μŠ€νƒ€μΌ μˆ˜μ •

commit 3766ab9
Merge: 6663b04 f67c5b9
Author: youl <[email protected]>
Date:   Wed Oct 23 09:35:44 2024 +0900

    Merge branch 'Feat/CR-10/DropDown' of https://github.com/CodeitFESI4-Team1/Team-1-Codeit into Feat/CR-10/DropDown

commit 6663b04
Author: youl <[email protected]>
Date:   Wed Oct 23 09:35:28 2024 +0900

    πŸ“ Docs: μŠ€ν† λ¦¬λΆ λΆ„λ₯˜ μˆ˜μ •

commit f67c5b9
Merge: 03eca63 d122096
Author: leeyoul <[email protected]>
Date:   Wed Oct 23 09:31:06 2024 +0900

    Merge branch 'develop' into Feat/CR-10/DropDown

commit 03eca63
Author: youl <[email protected]>
Date:   Wed Oct 23 09:27:55 2024 +0900

    πŸ’„ Design: 바뀐 λ””μžμΈμ— 맞게 μŠ€νƒ€μΌ μˆ˜μ •

commit 6452b93
Author: Lee Youl <[email protected]>
Date:   Fri Oct 18 11:53:29 2024 +0900

    ♻️ Refactor: Remove unused import in page.tsx and fix file name case in drop-down.stories.tsx

commit d854861
Author: Lee Youl <[email protected]>
Date:   Fri Oct 18 11:50:35 2024 +0900

    🚧 Chore: μ»΄ν¬λ„ŒνŠΈ 파일λͺ… λ³€κ²½, eol μ„€μ • λ³€κ²½

commit 92e9d77
Author: Lee Youl <[email protected]>
Date:   Fri Oct 18 11:18:32 2024 +0900

    πŸ“ Docs : add docs

commit 69f2e7e
Author: Lee Youl <[email protected]>
Date:   Fri Oct 18 10:12:31 2024 +0900

    🚧 Chore: eol μ„€μ • λ³€κ²½

commit df7c771
Author: Lee Youl <[email protected]>
Date:   Fri Oct 18 10:08:38 2024 +0900

    🚧 Chore: import order 문제 μˆ˜μ •

commit 098babd
Merge: edbfe3f c58486f
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 19:19:04 2024 +0900

    Merge branch 'Feat/CR-10/DropDown' of https://github.com/CodeitFESI4-Team1/Team-1-Codeit into Feat/CR-10/DropDown

commit edbfe3f
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 19:18:21 2024 +0900

    πŸ”§ chore: update prettier config

commit c58486f
Merge: 7388b34 0365ddb
Author: leeyoul <[email protected]>
Date:   Thu Oct 17 18:36:16 2024 +0900

    Merge branch 'develop' into Feat/CR-10/DropDown

commit 7388b34
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 18:27:37 2024 +0900

    🎨 prettier

commit c24f8b7
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 18:22:35 2024 +0900

    ✨ feat: DropDown - variant μΆ”κ°€

commit 970fddf
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 16:35:19 2024 +0900

    βœ… test: action test μΆ”κ°€

commit b5d3e63
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 16:18:56 2024 +0900

    πŸ“ docs: storybook docs μΆ”κ°€, chore: PR ν…œν”Œλ¦Ώ μ£Όμ†Œ μˆ˜μ •

commit 55ea20c
Author: Lee Youl <[email protected]>
Date:   Thu Oct 17 16:08:19 2024 +0900

    ✨ feat: DropDown μ»΄ν¬λ„ŒνŠΈ μ œμž‘, chore: storybook config μˆ˜μ •, public 폴더 μΆ”κ°€

commit 423c5a0
Merge: cb5abbf 39d3c82
Author: leeyoul <[email protected]>
Date:   Thu Oct 17 13:42:43 2024 +0900

    Merge pull request #2 from CodeitFESI4-Team1/develop

    πŸ”§chore: mantine UI + storybook setting

* ♻️ Refactor: json-sever 둜 패칭

* πŸ’„ Design: νƒœλΈ”λ¦Ώμ—μ„œ 1μ—΄λ‘œ 보이도둝 μˆ˜μ •

* πŸ”₯ Fix: λ©”μΈνŽ˜μ΄μ§€ λ‚ μ§œν•„ν„° λΉΌκΈ°

* πŸ› Fix: λ‹€μ‹œ mockData둜 μ—°κ²°

* πŸ› Fix: 링크 μˆ˜μ •

* πŸ’„ Design: λ ˆμ΄μ•„μ›ƒ 뢄리, 헀더 μ£Όμ„ν•΄μ œ

* 🚚 Chore: 파일 이동, 정리

* πŸ’„ Design: fade μ• λ‹ˆλ©”μ΄μ…˜ 적용

* 🎨 Style: 린트 프리티어 적용

* πŸ’„ Design: 검색창 λ””μžμΈ μˆ˜μ •

* 🎨 Style: 린트 프리티어 적용

* ✨ feat: 확인 μ‚­μ œ λͺ¨λ‹¬ μΆ”κ°€

* πŸ’„ design: max 1200으둜 μˆ˜μ •, container μ‚­μ œ

* 🎨 style: eslint changed

* πŸ› Fix: anchor λ₯Ό Link둜 λ³€κ²½

* πŸ“¦ chore: νŒ¨ν‚€μ§€ μ„€μΉ˜

* ✨ feat: react-toastifyλ₯Ό μ΄μš©ν•΄ toast κ΅¬ν˜„

* πŸ’„ design: UI μž‘μ—… #57

* πŸ› fix: (crew) 폴더 μ•ˆμœΌλ‘œ 이동

* πŸ”₯ chore: git static 폴더 μ‚­μ œ

* πŸ› fix: νŒŒμΌμœ„μΉ˜ μž¬μ„€μ •

* πŸ› fix: import 였λ₯˜ ν•΄κ²°

* πŸ› fix: λΉŒλ“œ 였λ₯˜ -> importλ¬Έ μˆ˜μ •

* πŸ› fix: eslint changed

* Feat/cr 71/create gathering modal (#52)

* ✨ Feat: calendar-filter μ»΄ν¬λ„ŒνŠΈ μž‘μ„±

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

* πŸ’š CI: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½

* πŸ“¦ Chore: νŽ˜μ΄μ§€ 폴더 λ³€κ²½, νŒ¨ν‚€μ§€ μΆ”κ°€

* πŸ’„ Design : λ°˜μ‘ν˜• μŠ€νƒ€μΌ 적용

* 🚚 Chore: 폴더 μœ„μΉ˜ λ³€κ²½

* Update and rename deploy.yml to trigger.yml

* Update dispatch.yml

* Update and rename trigger.yml to deploy.yml

* Update dispatch.yml

* Create dispatch_develop.yml

* Create deploy_develop.yml

* Update dispatch_develop.yml

* Update deploy_develop.yml

* Update deploy.yml

* Update deploy_develop.yml

* Update dispatch.yml

* Update dispatch_develop.yml

* ✨ Feat: ν…μŠ€νŠΈμΈν’‹, λ“œλ‘­λ‹€μš΄, νŒŒμΌμΈν’‹ μΆ”κ°€

* ♻️ Refactor: λ“œλ‘­λ‹€μš΄ μˆ˜μ • 반영

* ✨ Feat: νŽ˜μ΄μ§€ μ΄ˆμ•ˆ μž‘μ„±

* πŸ’„ Style: 프리티어 적용

* πŸ’„ Design: λ””μžμΈ 적용, 파일 이동

* πŸ’„ Design: λ””μžμΈ 적용, 파일 이동

* 🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€κ°€

* πŸ› Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚚 Chore: 파일 이동

* ✨ Feat: μœ νš¨μ„± 검사 μΆ”κ°€

* πŸ”§ Chore: μŠ€ν† λ¦¬λΆ λΉŒλ“œ 였λ₯˜ λ•Œλ¬Έμ— μ„€μ • μˆ˜μ •

* πŸ”§ Chore: μ„€μ • 제거

* πŸ› Fix: dropdown λ‹€λ₯Έ 곳에 영ν–₯ μ•ˆκ°€λ„λ‘ μˆ˜μ •

* πŸ› Fix: onBlur λΉΌλ‚΄κΈ°

* 🚚 Chore: 파일 이동, CSR둜 μ „ν™˜

* 🎨 Style : λ¦°νŠΈν”„λ¦¬ν‹°μ–΄ 적용

* πŸ› Fix: 였λ₯˜ μˆ˜μ •

* πŸ› Fix: λ²„νŠΌ ꡐ체

* πŸ› Fix: TextInput ꡐ체

* πŸ”§ Chore: config λ³€κ²½

* πŸ› Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* πŸ› Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* 🚚 Chore: 파일 이동

* ✨ Feat: 약속 λ§Œλ“€κΈ° λͺ¨λ‹¬ μ΄ˆμ•ˆ μž‘μ„±

* πŸ› Fix: λ‚ μ§œ μ΄ˆκΈ°κ°’ μ„€μ •, ν•„μˆ˜κ°’ μˆ˜μ •

* πŸ› Fix: νŒŒμΌμ •λ¦¬, onClose Prop μΆ”κ°€

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

* πŸ”§ Chore: tailwind config μ„€μ • μ˜€νƒ€ μˆ˜μ •

* πŸ› Fix: νƒ€μž… 이름 μˆ˜μ •

* 🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

* 🚨 Fix: 린트였λ₯˜ μˆ˜μ •, μŠ€ν¬λ‘€λ°” μˆ˜μ •

* 🚨 Fix: λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* 🎨 Style: λ¦°νŠΈν”„λ¦¬ν‹°μ–΄ 적용

* 🚨 Fix: 린트 적용용

* πŸ’„ Design: λ””μžμΈ λ§žμΆ”κ³  ν•„μš”μ—†λŠ” 파일 μ‚­μ œ

* 🎨 Style: μ½”λ“œ 정리

* πŸ› fix: profiles에 μ „λ‹¬ν•˜λŠ” prop μˆ˜μ •

* πŸ”₯ fix: μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν…ŒμŠ€νŠΈ μ£Όμ„μ²˜λ¦¬

* ✏️ fix: νŽ˜μ΄μ§€λ„€μ΄μ…˜μœΌλ‘œ λ³€κ²½ν•˜λ©΄μ„œ νƒ€μž… λ³€κ²½

* πŸ“ docs: λͺ©λ°μ΄ν„° rate λ³€κ²½

* πŸ’„ design: νŽ˜μ΄μ§€λ„€μ΄μ…˜ λ””μžμΈ λ³€κ²½

* 🎨 style: eslint changed

* πŸ› fix: ν”„λ‘œν•„μ— 이미지 μ „λ‹¬μ•ˆλ˜λŠ” 문제 μˆ˜μ • μ•ˆμ“°λŠ” import 제거

* ✨ feat: rate λ³€κ²½

* πŸ› fix: ν¬λ£¨μΉ΄λ“œ κ²½λ‘œμˆ˜μ •

* ✨ feat: 크루 리뷰 데이터 λͺ© api νŽ˜μ΄μ§€λ„€μ΄μ…˜

* ✨ feat: 리뷰리슀트 νŽ˜μ΄μ§€λ„€μ΄μ…˜

* πŸ§ͺ test: μŠ€ν† λ¦¬λΆ μΆ”κ°€

* πŸ› fix: 파일 μœ„μΉ˜ λ³€κ²½, 넀이밍 λ³€κ²½

* πŸ“ docs: 데이터 일뢀 λ³€κ²½

* πŸ“ docs: 주석 μΆ”κ°€

* πŸ› fix:  import λ³€κ²½

* ✨ feat: λͺ© 데이터 가곡

* πŸ’„ design: μŠ€νƒ€μΌ λ³€κ²½

* ✨ feat: 크루 리뷰 쑰립

* πŸ› fix: ν”„λ‘œν•„λͺ¨μŒ 변경에 λ”°λ₯Έ νƒ€μž…, μ½”λ“œ μˆ˜μ •

* πŸ› fix: lint μ—λŸ¬, λΉŒλ“œ μ—λŸ¬ μˆ˜μ •

* πŸ› fix: lint μ—λŸ¬, λΉŒλ“œ μ—λŸ¬ μˆ˜μ •

* πŸ› fix: lint μ—λŸ¬, λΉŒλ“œ μ—λŸ¬ μˆ˜μ •

* πŸ’„ design: reviewList μ‚½μž…

* πŸš‘ fix: 이름 μˆ˜μ •

* πŸš‘ Fix: λ³€κ²½μš”μ²­

* πŸ”₯ Remove: μ˜›λ‚  develop 파일 μ‚­μ œ

* Feat/56/my crew page (#58)

* Feat: λ‚˜μ˜ 크루 νŽ˜μ΄μ§€ μ΄ˆμ•ˆ μž‘μ„±

* 🚨 Fix: λ¦°νŠΈν”„λ¦¬ν‹°μ–΄ 적용

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* Update crew-card-list.tsx

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ 제거

* 🚚 Chore: 파일 이동

* πŸ’„ Design: PCμ—μ„œλ§Œ 2μ—΄λ‘œ 보이도둝 μˆ˜μ •

* πŸ’„ Design: νŒ¨λ”© μΆ”κ°€, 파일 이동

* πŸ’„ Design : μƒμ„±νŽ˜μ΄μ§€ νŒ¨λ”© μΆ”κ°€

* ✨ Feat: λ‘œλ” 적용

* 🎨 Style: 린트 프리티어 적용

* πŸ’š CI: μ›Œν¬ν”Œλ‘œμš° μˆ˜μ •

* 🚨 Fix: μ ˆλŒ€κ²½λ‘œλ‘œ μˆ˜μ •

* Fix: λΉŒλ“œμ—λŸ¬ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚨 Fix: νƒ€μž… 였λ₯˜ μˆ˜μ •

* πŸ› fix: κ²½λ‘œμˆ˜μ •

* ✨ feat: 약속 λ§Œλ“€κΈ° λͺ¨λ‹¬ μ—°κ²°

* πŸ› Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* ✨ feat: 확인 μ·¨μ†Œ λͺ¨λ‹¬ μ—°κ²°

* πŸ› fix: μ˜€νƒ€ μˆ˜μ •

* Feat/60/my-gathering-page (#73)

* ✨ Feat: my-gathering λ²„νŠΌ μΆ”κ°€ 및 ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈ 뢄리

* ✨ Feat: ν•˜μœ„ νŽ˜μ΄μ§€λ‘œ 뢄리

* ✨ Feat: GatheringList μΆ”κ°€

* πŸ’„ Style: gatheringlist max-w μ‚­μ œ

* πŸ’„ Style: 전체 λ ˆμ΄μ•„μ›ƒμ— flex-1 μΆ”κ°€

* ✨ Feat: gatheringListWithDate μ»΄ν¬λ„ŒνŠΈ μΆ”κ°€

* πŸ’„ Style: gatheringListWithDate UI μˆ˜μ •

* ✨ Feat: popoverCalendar μΆ”κ°€, πŸ› Fix: card λͺ¨λ°”μΌν™˜κ²½ 이미지 μ‚¬μ΄μ¦ˆ μˆ˜μ •

* ✨ Feat: μ°Έμ—¬ν•œ λͺ¨μž„ νŽ˜μ΄μ§€ μΆ”κ°€

* ✨ Feat: gathering Detail Modal API μΆ”κ°€

* πŸ› fix: κ²½λ‘œμˆ˜μ •

* πŸ› fix: prettier error μˆ˜μ •

* πŸ› fix: api dummydata둜 μž„μ‹œ μˆ˜μ •

* 🚨 Fix: μ›Œν¬ν”Œλ‘œμš° μˆ˜μ •

* πŸ’„ design: 리슀트 μ‚½μž… 및 λ””μžμΈ μˆ˜μ •

* πŸ› fix: νƒ€μž…μ΄λ¦„ μˆ˜μ • #67

* πŸ’„ design: UI μˆ˜μ • #67

* πŸ› fix: cors url μΆ”κ°€

* πŸ› fix: ν™˜κ²½λ³€μˆ˜λ‘œ μž¬μ„€μ •

* πŸ› fix: url κΈ°λ³Έκ°’ μ„€μ •

* πŸ’„ Design: λ²„νŠΌ 색 λ³€κ²½

* πŸ› fix: μš”μ²­μ‹œ url μˆ˜μ •

* Feat/cr 58/create crew page (#75)

* ✨ Feat: ν…μŠ€νŠΈμΈν’‹, λ“œλ‘­λ‹€μš΄, νŒŒμΌμΈν’‹ μΆ”κ°€

* ♻️ Refactor: λ“œλ‘­λ‹€μš΄ μˆ˜μ • 반영

* ✨ Feat: νŽ˜μ΄μ§€ μ΄ˆμ•ˆ μž‘μ„±

* πŸ’„ Style: 프리티어 적용

* πŸ’„ Design: λ””μžμΈ 적용, 파일 이동

* πŸ’„ Design: λ””μžμΈ 적용, 파일 이동

* 🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ§ͺ Test: μŠ€ν† λ¦¬λΆ μΆ”κ°€κ°€

* πŸ› Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚚 Chore: 파일 이동

* ✨ Feat: μœ νš¨μ„± 검사 μΆ”κ°€

* πŸ”§ Chore: μŠ€ν† λ¦¬λΆ λΉŒλ“œ 였λ₯˜ λ•Œλ¬Έμ— μ„€μ • μˆ˜μ •

* πŸ”§ Chore: μ„€μ • 제거

* πŸ› Fix: dropdown λ‹€λ₯Έ 곳에 영ν–₯ μ•ˆκ°€λ„λ‘ μˆ˜μ •

* πŸ› Fix: onBlur λΉΌλ‚΄κΈ°

* 🚚 Chore: 파일 이동, CSR둜 μ „ν™˜

* 🎨 Style : λ¦°νŠΈν”„λ¦¬ν‹°μ–΄ 적용

* πŸ› Fix: 였λ₯˜ μˆ˜μ •

* πŸ› Fix: λ²„νŠΌ ꡐ체

* πŸ› Fix: TextInput ꡐ체

* πŸ”§ Chore: config λ³€κ²½

* πŸ› Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* πŸ› Fix: μŠ€ν† λ¦¬λΆ λΉŒλ“œμ˜€λ₯˜ μˆ˜μ •

* 🚚 Chore: 파일 이동

* 🚨 Fix: 린트 였λ₯˜ μˆ˜μ •

* πŸ› Fix: 같은 파일 μ—…λ‘œλ“œμ‹œ μ—…λ‘œλ“œ λ˜μ§€ μ•ŠλŠ” 문제 ν•΄κ²°

* πŸ› Fix: ν•œκΈ€μž…λ ₯μ‹œ 21μžμ—μ„œ λ˜λŒμ•„κ°€λŠ” 문제 μˆ˜μ •

* πŸ› Fix: λΈ”λŸ¬μ‹œ ν•¨μˆ˜ 좩돌문제 ν•΄κ²°

* ♻️ Refactor: μ½”λ“œ λ¦¬νŒ©ν† λ§

* πŸ› Fix: 쿼리 뢄리

* ✨ feat: 리뷰 μž‘μ„± λͺ¨λ‹¬ μ‚½μž…

* πŸ› fix: api url μˆ˜μ •

* πŸ“ docs: mock.josn μΆ”κ°€

* ✨ feat: λͺ© apiλ₯Ό json server둜

* πŸ› fix: 잘λͺ»λœ 넀이밍 λ³€κ²½

* 🎨 style: eslint μˆ˜μ •

* ♻️ refactor: isModalOpened ν•¨μˆ˜ μˆ˜μ •

* πŸ“ docs: id num μˆ˜μ •

* πŸ› fix: totalReviewCount둜 이름 λ³€κ²½

* πŸ“¦ chore: μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 파일, 폴더 μ‚­μ œ

* πŸ› fix: url μ›λž˜λŒ€λ‘œ μˆ˜μ •

* πŸ› fix: cors 링크 glitch둜 μˆ˜μ •

* Hotfix: env λͺ…μΉ­λ³€κ²½ (#84)

* Hotfix: env λͺ…μΉ­λ³€κ²½

* ♻️ Refactor: fetchApi ν•¨μˆ˜ μ‚¬μš©

* πŸ’„ Desgin: μŠ€νƒ€μΌ μˆ˜μ •

* πŸ› Fix: νƒ€μž… κ°œμ„ , μ—λŸ¬ 처리

* πŸš‘ fix: μ—”λ“œν¬μΈνŠΈ λ³€κ²½

* πŸš‘ fix: 둜그인 ν•˜μ§€ μ•Šμ€ μ‚¬μš©μž 막기

* πŸ› fix: api μ—°κ²°μ „ 크루 id μž„μ‹œλ‘œ μ‚¬μš©

* πŸ› fix: api μ—°κ²°μ „ 크루 id μž„μ‹œλ‘œ μ‚¬μš©

* πŸ› fix: μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λΆ€λΆ„ μ£Όμ„μ²˜λ¦¬

* πŸ› fix: λ‘œκ·Έμ•„μ›ƒ λ‘œμ§μ‚­μ œ

* Hofix/index page : νŒŒμΌμƒ˜ν”Œ μ»΄ν¬λ„ŒνŠΈ μˆ˜μ • (#88)

* Hotfix: env λͺ…μΉ­λ³€κ²½

* ♻️ Refactor: fetchApi ν•¨μˆ˜ μ‚¬μš©

* πŸ’„ Desgin: μŠ€νƒ€μΌ μˆ˜μ •

* πŸ› Fix: νƒ€μž… κ°œμ„ , μ—λŸ¬ 처리

* πŸ› Fix: 파일 μƒ˜ν”Œ μ»΄ν¬λ„ŒνŠΈ μˆ˜μ •

* 🚨 Fix: 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* Hofix/index page (#91)

* Hotfix: env λͺ…μΉ­λ³€κ²½

* ♻️ Refactor: fetchApi ν•¨μˆ˜ μ‚¬μš©

* πŸ’„ Desgin: μŠ€νƒ€μΌ μˆ˜μ •

* πŸ› Fix: νƒ€μž… κ°œμ„ , μ—λŸ¬ 처리

* πŸ› Fix: 파일 μƒ˜ν”Œ μ»΄ν¬λ„ŒνŠΈ μˆ˜μ •

* 🚨 Fix: 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* 🚨 Fix: λΉŒλ“œ 였λ₯˜ μˆ˜μ •

* πŸ› Fix: 폼 였λ₯˜ 제거

* πŸ“ Docs: readme μΆ”κ°€

* Docs : λ¦¬λ“œλ―Έ μˆ˜μ •

* πŸ› Fix: λ“œλ‘­λ‹€μš΄ μ—λŸ¬λ©”μ‹œμ§€ 였λ₯˜ μˆ˜μ •

* πŸ› Fix: 폼 μ΄ˆκΈ°κ°’ μˆ˜μ •

* Update create-gathering.tsx

* Feat/96/form (#97)

* πŸ› Fix: λ“œλ‘­λ‹€μš΄ κ°’ μ„ νƒμ‹œ 포컀슀 아웃 λ˜λ„λ‘ μˆ˜μ •

* πŸ› Fix: ν…μŠ€νŠΈ μˆ˜μ •(약속 작기 > 약속 λ§Œλ“€κΈ°)

* πŸ› Fix: 크루 μƒμ„±μ‹œ λ””ν…ŒμΌ νŽ˜μ΄μ§€λ‘œ 이동, λ¦¬νŒ©ν† λ§

* πŸ› Fix: μ—λŸ¬μƒνƒœμΈλ° μƒˆλ‘œ κ°’ μ±„μšΈ λ•Œ μ—λŸ¬ ν•΄μ œν•˜κΈ°, λ¦¬νŒ©ν† λ§

* πŸ› Fix: μœ νš¨μ„± 검사 λ‚ μ§œ 선택 였λ₯˜ μˆ˜μ •

* πŸ› Fix: μŠ€ν¬λ‘€λ°” λ‘κ°œλ‘œ λ³΄μ΄λŠ” 문제 μˆ˜μ •

* 🚨 Fix: 린트 였λ₯˜ 제거

* πŸ› Fix: λ²„νŠΌ 링크둜 ꡐ체

* πŸ› Fix: isToday ν•¨μˆ˜ κ°œμ„ , 데이터 ν•œκ΅­μ‹œκ°„ κΈ°μ€€μœΌλ‘œ λ³€κ²½

* πŸ› Fix: 폼 λ™μž‘ κ°œμ„ 

* πŸ› Fix: μ΄μ „λ‚ μ§œ 선택 λ°©μ§€, isToday λ‚ μ§œ 비ꡐ μˆ˜μ •

* πŸ› Fix: MockData λ‚ μ§œ ν˜•μ‹ μˆ˜μ •

* πŸ› Fix: 이미지 파일 ν˜•μ‹ μ œν•œ, 크기 μ œν•œ

---------

Co-authored-by: HaeJungg <[email protected]>
Co-authored-by: min5x5 <[email protected]>
Co-authored-by: HaeJungg <[email protected]>
Co-authored-by: μ‘°μ˜ˆμ€ <[email protected]>
Co-authored-by: Cho Yeeun <[email protected]>
Co-authored-by: User850413 <[email protected]>
Co-authored-by: κΉ€λ―Όκ²½ <[email protected]>
Co-authored-by: SOOHYEONG CHOI <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

폼 μš”μ†Œ μˆ˜μ •

4 participants