Skip to content

refactor: migrate and refactor checkbox component#152

Merged
froggy1014 merged 20 commits intorelease/v1from
refactor/checkbox-vanilla
May 17, 2025
Merged

refactor: migrate and refactor checkbox component#152
froggy1014 merged 20 commits intorelease/v1from
refactor/checkbox-vanilla

Conversation

@froggy1014
Copy link
Copy Markdown
Contributor

@froggy1014 froggy1014 commented May 1, 2025

Changes

기존 CSS 모듈 기반 Checkbox 컴포넌트를 vanilla-extract로 마이그레이션하고 컴파운드 컴포넌트 패턴을 적용하여 리팩토링했습니다.

<Checkbox
  label="이용약관에 동의합니다" 
  checked={isChecked}
  onCheckedChange={handleChange}
  size="medium"
/>

// 새로운 컴파운드 컴포넌트 방식
<Checkbox.Root checked={isChecked} onCheckChange={handleChange} size="medium">
  <Checkbox.Input />
  <Checkbox.Label>이용약관에 동의합니다</Checkbox.Label>
</Checkbox.Root>

기존에는 각 요소마다 스타일 변화가 힘들었고

// AS-IS
<Checkbox
  label="커스텀 체크박스"
  checked={isChecked}
  onCheckedChange={handleChange}
  className="custom-checkbox"
  checkStyleConfig={{
    borderColor: 'blue',
    checkedColor: 'purple',
    // 제한된 옵션만 변경 가능
  }}
/>

// TO-BE
<Checkbox.Root checked={isChecked} onCheckChange={handleChange} className="custom-container">
  <Checkbox.Input className="custom-input" />
  <Checkbox.Label className="custom-label">
    <span className="accent-text">커스텀</span> 체크박스
  </Checkbox.Label>
</Checkbox.Root>

레이아웃 변경 및 요소 추가 또한 불가능했습니다.

// AS-IS
<Checkbox
  label="레이아웃 변경 불가능"
  checked={isChecked}
  onCheckedChange={handleChange}
/>

// TO-BE
<Checkbox.Root checked={isChecked} onCheckChange={handleChange}>
  <div className="custom-layout">
    <div className="label-container">
      <Checkbox.Label>레이아웃 변경 가능</Checkbox.Label>
      <span className="helper-text">추가 설명 텍스트</span>
    </div>
    <Checkbox.Input />
  </div>
</Checkbox.Root>

Visuals

Checklist

  • Have you written the functional specifications?
  • Have you written the test code?

Additional Discussion Points

Summary by CodeRabbit

  • New Features

    • Badge, Card, Checkbox, and Avatar 컴포넌트에 Vanilla Extract 기반의 CSS-in-TypeScript 스타일링이 적용되었습니다.
    • Card, Badge, Checkbox 컴포넌트에 다양한 크기, 변형(variant), 비율(ratio) 등 선택 가능한 스타일 옵션이 추가되었습니다.
    • Checkbox 컴포넌트가 compound 패턴으로 리팩터링되어, Root/Input/Label 하위 컴포넌트로 분리되었습니다.
    • Checkbox에 useControllableState 훅이 추가되어 제어/비제어 상태를 모두 지원합니다.
  • Bug Fixes

    • Badge, Checkbox, Card 컴포넌트의 스타일 및 토큰 사용이 일관되게 개선되었습니다.
  • Refactor

    • 기존 CSS 모듈 파일이 삭제되고, 모든 스타일이 Vanilla Extract 기반으로 변경되었습니다.
    • Card, Badge, Avatar, Checkbox의 타입 정의 및 내부 구현이 Vanilla Extract 스타일 시스템에 맞게 정비되었습니다.
    • Checkbox 컴포넌트의 스토리와 테스트가 compound 구조에 맞게 리팩터링되었습니다.
  • Chores

    • Vanilla Extract 및 관련 플러그인, Vite 등 빌드 도구가 워크스페이스와 각 패키지에 추가되었습니다.
    • 빌드 및 테스트 설정(tsup, vite, vitest 등)이 Vanilla Extract와 호환되도록 업데이트되었습니다.
    • 일부 패키지의 package.json, workspace, 설정 파일 포맷이 정리되었습니다.
  • Documentation

    • Storybook 스토리가 각 컴포넌트의 다양한 스타일/옵션을 시각적으로 보여주도록 보강되었습니다.

noahluftyang and others added 11 commits April 5, 2025 12:45
* fix(avatar): apply vanilla-extract

* fix(avatar): type error
* refactor(badge): migrate module css to vanilla extract

* chore: regenerate lock file

* style(badge): apply color tokens

* test(badge): color token update on test
* refactor(checkbox): apply vanilla-extract for styling

* refactor(checkbox): update Checkbox component structure to use compound components

* chore(checkbox): remove unused styles and constants

* test(checkbox): update tests to reflect new component structure and props
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented May 1, 2025

⚠️ No Changeset found

Latest commit: 8aab087

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented May 1, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

이 변경 사항은 주요 UI 컴포넌트(Avatar, Badge, Card, Checkbox 등)에 대해 기존 CSS 모듈 기반 스타일링을 제거하고, vanilla-extract를 활용한 타입 안전 CSS-in-TypeScript 스타일링으로 전환합니다. 각 컴포넌트의 스타일 파일이 .css.ts로 새로 작성되었으며, 관련 타입도 함께 내보냅니다. Checkbox 컴포넌트는 compound component 패턴과 컨텍스트, 커스텀 훅(useControllableState)을 도입하여 구조가 개선되었습니다. 빌드 및 테스트 환경도 vanilla-extract와 Vite 지원을 위해 구성 파일이 추가·수정되었습니다.

Changes

파일/경로 그룹 변경 요약
biome.json suspicious lint 규칙에 noArrayIndexKey 경고 추가
package.json, pnpm-workspace.yaml vanilla-extract, vite 관련 devDependencies 및 패키지 카탈로그 추가
tsup.config.ts, vite.config.ts, vitest.config.ts vanilla-extract 플러그인 적용을 위한 빌드/테스트 설정 변경 및 Vite config 신설
packages/avatar/... CSS 모듈 삭제, Avatar.css.ts로 스타일 이관, 타입 및 스타일 적용 방식 변경, 빌드/테스트 구성 공유화, 글로벌 타입 선언 제거
packages/badge/... CSS 모듈 삭제, Badge.css.ts로 스타일 이관, 타입 및 스타일 적용 방식 변경, 스토리북에 size/variant별 스토리 추가, 테스트에서 토큰 기반 색상 사용
packages/card/... CSS 모듈 삭제, Card.css.ts로 스타일 이관 및 recipe 패턴 적용, 스토리북에 ratio/variant별 스토리 추가, 인덱스에서 스타일 타입도 내보냄
packages/checkbox/... CSS 모듈 및 관련 타입/상수 파일 삭제, Checkbox.css.ts로 스타일 이관 및 recipe 패턴 적용, compound component 패턴 도입(컨텍스트 사용), useControllableState 훅 추가 및 내보냄, 스토리북/테스트 전면 개편, SVG/글로벌 타입 선언 제거
packages/input/global.d.ts CSS 모듈 타입 선언 삭제
packages/radio/package.json, packages/side/package.json files 필드 단일 라인 포맷 변경(기능적 변화 없음)

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant CheckboxRoot
  participant CheckboxInput
  participant CheckboxLabel
  participant CheckboxContext

  User->>CheckboxRoot: 렌더링(checked, indeterminate 등 props)
  CheckboxRoot->>CheckboxContext: 컨텍스트 값 제공
  CheckboxRoot->>CheckboxInput: 자식으로 전달
  CheckboxInput->>CheckboxContext: 컨텍스트 값 소비
  CheckboxInput->>CheckboxInput: 상태/props 병합, 스타일 적용
  CheckboxInput->>User: onChange 발생 시 콜백 호출
  CheckboxRoot->>CheckboxLabel: 자식으로 전달
  CheckboxLabel->>CheckboxContext: 컨텍스트 값 소비
  CheckboxLabel->>CheckboxInput: label 연결(for/id)
Loading

Possibly related PRs

  • sipe-team/side#101: Card 컴포넌트의 ratio 스타일 및 타입 관련 변경과 연관(이번 PR은 recipe 기반 스타일링 전환, 해당 PR은 'auto' ratio 추가 등).
  • sipe-team/side#45: Avatar 컴포넌트의 초기 구현 및 CSS 모듈 도입. 이번 PR은 해당 코드의 vanilla-extract 기반 리팩터링을 수행.

Suggested labels

enhancement

Suggested reviewers

  • kimdaeyeobbb
  • hy57in
  • developerjhp
  • bae-sh
  • heeji289
  • synuns
  • yeojini
  • SEMIN-97
  • jiji-hoon96
  • noahluftyang

Poem

🐰
바닐라 향 솔솔, 타입 세상 펼쳐져
CSS 모듈 굿바이, 타입과 함께 춤춰
체크박스, 뱃지, 카드, 아바타
스타일은 레시피, 컴포넌트는 더 단단해
빌드도 테스트도 바닐라로 깔끔하게
토끼는 깡총, 코드는 반짝—
타입과 스타일, 모두 안녕!


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ 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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this 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.

@froggy1014 froggy1014 changed the base branch from main to release/v1 May 1, 2025 17:41
Copy link
Copy Markdown

@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.

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 4

🔭 Outside diff range comments (1)
package.json (1)

1-78: ⚠️ Potential issue

락파일 업데이트 필요

파이프라인 실패 로그를 보면 packages/input/package.json과 pnpm-lock.yaml 간의 불일치가 있습니다. 이로 인해 CI가 실패하고 있습니다.

다음을 실행하여 락파일을 업데이트해야 합니다:

- 현재 상태: 락파일이 packages/input/package.json과 동기화되지 않음
+ 실행 필요: pnpm install
🧰 Tools
🪛 GitHub Actions: CI

[error] 1-1: pnpm install failed due to outdated lockfile. The pnpm-lock.yaml is not up to date with packages/input/package.json. Specifiers in the lockfile do not match the package.json dependencies.

🪛 GitHub Actions: Run tests and upload coverage

[error] 1-1: pnpm install failed due to outdated lockfile. The pnpm-lock.yaml is not up to date with packages/input/package.json. Specifiers in the lockfile do not match the package.json dependencies.

🧹 Nitpick comments (10)
packages/badge/src/Badge.test.tsx (1)

38-43: 하드코딩된 색상 값 남아있음

weak variant 테스트에서는 여전히 하드코딩된 색상 값('#e4e4e7')을 사용하고 있습니다. 다른 테스트와의 일관성을 위해 이 값도 토큰 시스템을 활용하여 변경하는 것이 좋겠습니다.

다음과 같이 변경을 제안합니다:

-test('variant가 weak인 경우 배경색 gray200로 형태를 적용한다.', () => {
+test(`variant가 weak인 경우 배경색 gray200(${colorToken.gray200})로 형태를 적용한다.`, () => {
  render(<Badge variant="weak">테스트</Badge>);

  expect(screen.getByRole('status')).toHaveStyle({
-    backgroundColor: '#e4e4e7',
+    backgroundColor: colorToken.gray200,
  });
});
packages/avatar/src/Avatar.css.ts (2)

12-33: 크기 변형이 체계적으로 정의되었습니다.

styleVariants를 사용하여 각 크기별 스타일을 체계적으로 정의한 점이 좋습니다. 열거형 키를 동적으로 활용하여 타입 안전성과 유지보수성을 높인 접근법이 효과적입니다.

단, 픽셀 단위 대신 rem 또는 em 단위를 사용하면 접근성과 반응형 디자인 측면에서 더 좋을 수 있습니다. 향후 버전에서 고려해보세요.


53-57: 폴백 스타일이 적절하게 정의되었습니다.

이미지가 없을 때 표시되는 텍스트를 위한 폴백 스타일이 잘 정의되어 있습니다. 텍스트 색상, 크기, 정렬이 적절하게 지정되었습니다.

단, 폰트 크기를 고정 값(0.8rem) 대신 크기에 따라 다르게 적용하는 방식을 고려해보면 더 나은 사용자 경험을 제공할 수 있을 것입니다.

packages/badge/src/Badge.tsx (2)

14-22: forwardRef 결과에 displayName을 지정하면 디버깅이 쉬워집니다

개발자 도구에서 컴포넌트 이름이 ForwardRef 로만 표시되어 추적이 어렵습니다. 컴포넌트 아래에 한 줄 추가해 주세요.

 export const Badge = forwardRef(function Badge(
   { className, children, size = 'medium', variant = 'filled', ...props }: BadgeProps,
   ref: ForwardedRef<HTMLDivElement>,
 ) {
   ...
 });
+
+Badge.displayName = 'Badge';

32-41: getTypographySize 하드코딩 대신 토큰/상수화 권장

폰트 크기를 숫자 리터럴로 직접 반환하면 다른 디자인 시스템 값 변경 시 동기화가 어려워집니다.
@sipe-team/tokens 에 typography 크기 토큰이 있다면 이를 참조하도록 리팩터링을 고려해 주세요.
예시:

import { fontSize } from '@sipe-team/tokens';

function getTypographySize(size: BadgeSize): keyof typeof fontSize {
  switch (size) {
    case 'small':
      return fontSize.xs;
    ...
packages/checkbox/src/Checkbox.test.tsx (2)

7-14: 도우미 컴포넌트를 파일 최상단에서 한 번만 선언해 재정의 비용을 줄이세요

RenderBasicCheckbox 가 각 테스트 실행 시 새로 선언되면 테스트 러너가 불필요한 함수 객체를 계속 생성합니다.
파일 최상단(모듈 스코프)에 선언해 한 번만 생성하도록 이동하면 미세하지만 성능과 가독성이 향상됩니다.


149-178: 폼 제출 테스트에서 fireEvent 대신 userEvent 사용을 고려해 보세요

userEvent 는 실제 브라우저 상호작용에 더 가깝게 이벤트 시퀀스를 발생시켜 신뢰도가 높습니다. 이미 의존성을 추가하셨으므로 버튼 클릭도 아래처럼 통일하는 편이 좋습니다.

-const submitButton = screen.getByText('Submit');
-fireEvent.click(submitButton);
+const user = userEvent.setup();
+await user.click(screen.getByText('Submit'));
packages/checkbox/src/Checkbox.css.ts (1)

74-77: disabled 변형이 실제 효과가 없음
container 레시피의 disabled 변형이 비어 있어 UI 변화를 주지 않습니다. 최소한 포인터 이벤트 차단 또는 불투명도 감소 정도를 넣어두면 시각적으로 비활성 상태임을 알릴 수 있습니다.

packages/checkbox/src/Checkbox.tsx (2)

128-129: ref 병합 로직이 한쪽 ref를 덮어쓸 수 있습니다
ref || contextRef 방식은 두 ref 가 동시에 전달되면 사용자 ref 가 무시될 수 있습니다. 위 diff 처럼 콜백을 이용한 병합을 권장합니다.


117-121: 오류 처리 방식 개선 제안
handleChange 내부에서 console.error 만 호출하면 테스트 환경이나 상위 에러 바운더리에서 잡히지 않습니다. 예외를 다시 throw 하거나, 로그 라이브러리로 남기는 쪽이 좋습니다.

🛑 Comments failed to post (4)
packages/card/src/Card.css.ts (1)

20-28: 🛠️ Refactor suggestion

box-sizing 설정이 빠져 있어 레이아웃이 의도치 않게 흐트러질 수 있습니다

paddingborder 를 가진 컴포넌트는 컨테이너 폭 계산 시 box-sizing: border-box 가 설정돼 있지 않으면 부모 레이아웃이 틀어질 가능성이 있습니다. 기본 스타일에 아래 속성을 추가하는 것을 권장합니다.

   base: {
     display: 'flex',
     justifyContent: 'center',
     alignItems: 'center',
     borderRadius: '12px',
     padding: '20px',
+    boxSizing: 'border-box',
   },
packages/checkbox/src/Checkbox.css.ts (1)

88-97: 🛠️ Refactor suggestion

포커스 스타일과 Safari 대응이 누락되었습니다
appearance: 'none' 으로 기본 브라우저 스타일을 제거했지만, 포커스 링을 별도로 넣지 않아 키보드 접근성이 사라집니다. 또한 Safari에서는 -webkit-appearance: none 을 같이 지정하지 않으면 원형 체크박스가 남습니다.

   base: {
     appearance: 'none',
+    /* Safari */
+    WebkitAppearance: 'none',
+    /* 접근성: focus-visible 처리 */
+    selectors: {
+      '&:focus-visible': {
+        outline: '2px solid #2563eb', // 또는 토큰 사용
+        outlineOffset: '2px',
+      },
+    },
     border: `${CHECKBOX_STYLE.borderWidth}px solid ${CHECKBOX_STYLE.borderColor}`,
📝 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.

  base: {
    appearance: 'none',
    /* Safari */
    WebkitAppearance: 'none',
    /* 접근성: focus-visible 처리 */
    selectors: {
      '&:focus-visible': {
        outline: '2px solid #2563eb', // 또는 토큰 사용
        outlineOffset: '2px',
      },
    },
    border: `${CHECKBOX_STYLE.borderWidth}px solid ${CHECKBOX_STYLE.borderColor}`,
    backgroundColor: CHECKBOX_STYLE.backgroundColor,
    backgroundSize: CHECKBOX_STYLE.backgroundSize,
    backgroundPosition: CHECKBOX_STYLE.backgroundPosition,
    backgroundRepeat: CHECKBOX_STYLE.backgroundRepeat,
    transition: CHECKBOX_STYLE.transition,
    cursor: 'pointer',
  },
  variants: {
packages/checkbox/src/Checkbox.tsx (1)

124-137: 🛠️ Refactor suggestion

indeterminate DOM 프로퍼티 동기화 필요
ARIA 속성만으로 시멘틱 정보는 전달되지만, 실제 DOM HTMLInputElement.indeterminate 프로퍼티를 설정하지 않아 브라우저 기본 동작(예: 폼 리셋 시 상태 보존)이 보장되지 않습니다.

+  const inputRef = useRef<HTMLInputElement>(null);
+
   return (
     <input
       {...rootProps}
       {...props}
       id={id}
-      ref={ref || contextRef}
+      ref={(node) => {
+        inputRef.current = node;
+        if (typeof (ref || contextRef) === 'function') (ref || contextRef)?.(node);
+        else if (ref || contextRef) (ref || contextRef).current = node;
+      }}
       type="checkbox"
       checked={checked}
       onChange={handleChange}
       disabled={disabled}
       aria-checked={indeterminate ? 'mixed' : checked}
       className={clsx(input({ size, checked, disabled, indeterminate }), className)}
       name={name || contextName}
       value={value || contextValue || 'on'}
     />
   );

그리고 useEffectinputRef.current!.indeterminate = indeterminate 를 동기화해 주세요.

📝 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.

import { useRef, useEffect } from 'react';
// … other imports

function Checkbox({ /* props */ }) {
  // … other hooks/logic

  const inputRef = useRef<HTMLInputElement>(null);

  useEffect(() => {
    if (inputRef.current) {
      inputRef.current.indeterminate = indeterminate;
    }
  }, [indeterminate]);

  return (
    <input
      {...rootProps}
      {...props}
      id={id}
      ref={(node) => {
        inputRef.current = node;
        if (typeof (ref || contextRef) === 'function') {
          (ref || contextRef)(node);
        } else if (ref || contextRef) {
          (ref || contextRef).current = node;
        }
      }}
      type="checkbox"
      checked={checked}
      onChange={handleChange}
      disabled={disabled}
      aria-checked={indeterminate ? 'mixed' : checked}
      className={clsx(input({ size, checked, disabled, indeterminate }), className)}
      name={name || contextName}
      value={value || contextValue || 'on'}
    />
  );
}

export default Checkbox;
packages/checkbox/src/Checkbox.stories.tsx (1)

138-146: ⚠️ Potential issue

key 충돌로 React 경고가 발생할 수 있습니다
{checkedItems.map((item, index) => ( ... key={${item}-newDate} ... ))}
item 값이 중복(boolean)이라 키가 동일해집니다. 인덱스나 고유 ID 를 사용하세요.

- key={`${item}-newDate`}
+ key={`option-${index}`}

size: CheckboxSize;
onCheckChange?: (checked: boolean) => void;
indeterminate?: boolean;
ref?: Ref<HTMLInputElement> | undefined;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

이 prop은 CheckBoxRootBaseProps에 포함되어있지 않아?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

CheckBoxRootBaseProps 에는 포함되어 있어 있진 않지만 넣는게 좋은거 같아 넣었습니다 ㅎㅎㅎ.

);

interface CheckboxLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
children: ReactNode;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

children도 LabelHTMLAttributes에 포함되어있을거야~

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

HTMLAttributes에는 포함되어 있지는 않더군요. ComponentProp으로 다 대체했습니다.

@froggy1014 froggy1014 merged commit ae26b37 into release/v1 May 17, 2025
3 checks passed
@froggy1014 froggy1014 deleted the refactor/checkbox-vanilla branch May 17, 2025 05:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants