Skip to content

chore(biome): add lint:fix script for auto-fix#208

Merged
froggy1014 merged 2 commits intomainfrom
chore/formatting-codebase
Apr 10, 2026
Merged

chore(biome): add lint:fix script for auto-fix#208
froggy1014 merged 2 commits intomainfrom
chore/formatting-codebase

Conversation

@froggy1014
Copy link
Copy Markdown
Contributor

@froggy1014 froggy1014 commented Apr 10, 2026

Changes

{
 ....etc,
 "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "pnpm biome check --write --unsafe $CLAUDE_FILE_PATHS",
            "timeout": 10,
            "statusMessage": "Biome 포맷팅 중..."
          }
        ]
      }
    ]
  }
}

PostToolUse 에 biome check hook을 넣었더니 포매팅 작동하는건 확인했는데, 코드베이스 여기저기 포맷팅이 안되어 있는거 한번에 정리해서 PR 올립니다.

Summary by CodeRabbit

Release Notes

  • Chores

    • Updated lint script behavior: separated linting checks from fixes into lint and lint:fix commands.
    • Standardized code formatting across packages with consistent import organization and spacing.
    • Reformatted package manifests for consistency.
    • Updated VS Code configuration for improved code-action handling.
  • Bug Fixes

    • Removed CSS !important flags from animation properties in prefers-reduced-motion rule for better override flexibility.

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Apr 10, 2026

⚠️ No Changeset found

Latest commit: 6e6abd8

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.

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

💥 An error occurred when fetching the changed packages and changesets in this PR
Some errors occurred when validating the changesets config:
The package or glob expression "@sipe-team/package-name" is specified in the `ignore` option but it is not found in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch.

@froggy1014 froggy1014 enabled auto-merge (squash) April 10, 2026 11:28
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 10, 2026

Walkthrough

The PR applies comprehensive code style and formatting updates across the monorepo, including reformatting package manifests, reorganizing imports for consistency, refactoring JSX components for readability, updating linting scripts to separate lint from lint-fix commands, and adjusting CSS specificity rules.

Changes

Cohort / File(s) Summary
Configuration Files
.vscode/extensions.json, .vscode/settings.json, commitlint.config.ts, tsup.config.ts, vite.config.ts
Updated VS Code configuration for Biome extension (removed explicit quickfix/organize-imports, added source.fixAll.biome); reformatted arrays and added blank line separators between imports.
Linting and Package Scripts
package.json
Modified lint script to run biome lint without --write flag and added new lint:fix script using biome check --write for write-enabled linting.
Package Manifests
packages/*/package.json (accordion, avatar, badge, button, card, checkbox, divider, flex, grid, icon, input, plugin-figma-codegen, radio, reset, skeleton, switch, theme, tokens, tooltip, typography), www/package.json
Reformatted files arrays from single-line to multi-line format across all packages; expanded browserslist array formatting in www without changing values.
Avatar Package
packages/avatar/src/Avatar.css.ts, packages/avatar/src/Avatar.stories.tsx, packages/avatar/src/Avatar.test.tsx, packages/avatar/src/Avatar.tsx, packages/avatar/vitest.config.ts
Added blank lines between imports and reordered React imports; no functional logic changes.
Badge Package
packages/badge/.storybook/main.ts, packages/badge/.storybook/preview.ts, packages/badge/src/Badge.css.ts, packages/badge/src/Badge.stories.tsx, packages/badge/src/Badge.test.tsx, packages/badge/src/Badge.tsx, packages/badge/vitest.config.ts
Condensed Storybook addons array to single line; reorganized imports across CSS, stories, and test files with blank line separation.
Button Package
packages/button/vitest.config.ts
Added blank line after vitest/config import.
Card Package
packages/card/.storybook/main.ts, packages/card/.storybook/preview.ts, packages/card/src/Card.css.ts, packages/card/src/Card.stories.tsx, packages/card/src/Card.test.tsx, packages/card/src/Card.tsx, packages/card/vitest.config.ts
Consolidated Storybook addons to single line; reorganized imports with blank line separators; consolidated destructured imports from react and CSS file.
Checkbox Package
packages/checkbox/src/Checkbox.css.ts, packages/checkbox/src/Checkbox.stories.tsx, packages/checkbox/src/Checkbox.test.tsx, packages/checkbox/src/Checkbox.tsx, packages/checkbox/vitest.config.ts
Added blank lines between imports; reordered imports moving useState and type imports; consolidated React named imports.
Divider Package
packages/divider/src/Divider.css.ts, packages/divider/src/Divider.stories.tsx, packages/divider/src/Divider.test.tsx, packages/divider/src/Divider.tsx, packages/divider/vitest.config.ts
Added blank lines between imports; reordered Divider and DIVIDER_COLORS/ORIENTATIONS imports.
Flex Package
packages/flex/src/Flex.css.ts, packages/flex/src/Flex.stories.tsx, packages/flex/src/Flex.test.tsx, packages/flex/vitest.config.ts
Reordered type imports from constants; refactored it.each test patterns to more compact single-call expressions while preserving test logic.
Grid Package
packages/grid/src/Grid.test.tsx, packages/grid/src/Grid.tsx
Refactored it.each test formatting to single-line invocations; reordered named exports (Root, Item → Item, Root).
Icon Package - Scripts
packages/icon/scripts/generate-icons.ts, packages/icon/scripts/utils/generate-components.ts, packages/icon/scripts/utils/optimize-svg.ts, packages/icon/scripts/utils/svgo.config.ts, packages/icon/scripts/utils/paths.ts
Collapsed multi-line formatting in template strings and function calls; added parentheses around arrow function parameters; standardized trailing newlines.
Icon Package - Components
packages/icon/src/components/CheckCircleIcon.tsx, packages/icon/src/components/EmailIcon.tsx, packages/icon/src/components/GithubIcon.tsx, packages/icon/src/components/InstagramIcon.tsx, packages/icon/src/components/KakaoIcon.tsx, packages/icon/src/components/LinkIcon.tsx, packages/icon/src/components/LinkedinIcon.tsx, packages/icon/src/components/OrganizerIcon.tsx, packages/icon/src/components/UserIcon.tsx, packages/icon/src/components/YoutubeIcon.tsx, packages/icon/src/components/link.tsx
Refactored SVG components from single-line inline JSX to multi-line explicit return blocks; normalized string quotes for default fill colors; preserved all component signatures and behavior.
Icon Package - Core Files
packages/icon/src/Icons.stories.tsx, packages/icon/src/icons.test.tsx, packages/icon/src/index.ts, packages/icon/src/types.ts, packages/icon/vitest.config.ts
Added blank lines between imports; reordered IconProps and LinkIcon exports; normalized TypeScript type formatting with semicolons; simplified test variable computation.
Input Package
packages/input/src/Input.stories.tsx, packages/input/src/Input.tsx, packages/input/vitest.config.ts
Reordered story imports; swapped export ordering and aliases (Input, InputFieldAction as Action) in export statements.
Radio Package
packages/radio/src/Radio.css.ts, packages/radio/src/Radio.tsx, packages/radio/src/RadioGroup.stories.tsx, packages/radio/vitest.config.ts
Consolidated imports from ./constants/sizes; reordered imports with type-only declarations; moved RadioSize import position.
Reset Package
packages/reset/src/Reset.test.tsx, packages/reset/src/reset.css, packages/reset/vitest.config.ts
Refactored it.each parameterized test formatting; removed !important flag from animation and transition CSS properties in prefers-reduced-motion rule.
Skeleton Package
packages/skeleton/src/Skeleton.stories.tsx, packages/skeleton/src/Skeleton.test.tsx, packages/skeleton/vitest.config.ts
Added blank lines between imports; no functional changes.
Switch Package
packages/switch/src/Switch.stories.tsx, packages/switch/src/Switch.test.tsx, packages/switch/vitest.config.ts
Reordered imports moving useState above Storybook types; reorganized Switch and SwitchSize imports; no functional changes.
Theme Package
packages/theme/src/ThemeProvider.test.tsx
Refactored test.each callback formatting from multi-line to single-line invocation while preserving test assertions.
Tooltip Package
packages/tooltip/src/Tooltip.stories.tsx, packages/tooltip/src/Tooltip.test.tsx, packages/tooltip/vitest.config.ts
Added blank lines between imports; refactored test.each formatting to single-call invocation.
Typography Package
packages/typography/src/Typography.css.ts, packages/typography/src/Typography.stories.tsx, packages/typography/src/Typography.test.tsx, packages/typography/src/Typography.tsx, packages/typography/vitest.config.ts
Reordered imported symbols from vanilla-extract; added blank lines between imports; refactored test.each patterns; consolidated React type imports.
Website and Scripts
www/src/HomepageFeatures/index.tsx, www/src/pages/index.tsx, scripts/createComponent.ts
Added blank lines between imports; reordered React type imports; no functional changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • PR #118: Modifies packages/grid package files including Grid.tsx export ordering and package.json formatting, directly overlapping with grid-related changes in this PR.
  • PR #72: Updates icon package components, scripts, types, and exports across packages/icon, covering the same files and symbols modified in this PR.
  • PR #79: Changes package manifests and packaging metadata across multiple packages, matching the systematic package.json formatting updates in this PR.

Suggested labels

style, refactor, chore

Suggested reviewers

  • noahluftyang
  • hy57in
  • developerjhp
  • kimdaeyeob
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'chore(biome): add lint:fix script for auto-fix' directly and accurately describes the main change—introducing a new lint:fix script for automatic Biome formatting.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/formatting-codebase

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 10, 2026

Codecov Report

❌ Patch coverage is 95.19520% with 16 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
packages/icon/src/components/link.tsx 0.00% 16 Missing ⚠️
Files with missing lines Coverage Δ
packages/avatar/src/Avatar.css.ts 100.00% <100.00%> (ø)
packages/avatar/src/Avatar.test.tsx 100.00% <ø> (ø)
packages/avatar/src/Avatar.tsx 100.00% <100.00%> (ø)
packages/badge/src/Badge.css.ts 100.00% <100.00%> (ø)
packages/badge/src/Badge.test.tsx 100.00% <100.00%> (ø)
packages/badge/src/Badge.tsx 100.00% <100.00%> (ø)
packages/card/src/Card.css.ts 100.00% <ø> (ø)
packages/card/src/Card.test.tsx 100.00% <ø> (ø)
packages/card/src/Card.tsx 100.00% <100.00%> (ø)
packages/checkbox/src/Checkbox.css.ts 100.00% <100.00%> (ø)
... and 33 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/tooltip/src/Tooltip.stories.tsx (1)

1-33: ⚠️ Potential issue | 🟠 Major

Replace StoryFn pattern with StoryObj stories.

This story file still uses StoryFn + template binding; repo guidelines require Meta + StoryObj in *.stories.tsx.

♻️ Suggested migration pattern
-import type { Meta, StoryFn } from '@storybook/react';
+import type { Meta, StoryObj } from '@storybook/react';

 import { Tooltip, type TooltipProps } from './Tooltip';

-export default {
+const meta: Meta<typeof Tooltip> = {
   title: 'Components/Tooltip',
   component: Tooltip,
   argTypes: {
     // ...
   },
-} as Meta<TooltipProps>;
+};
+export default meta;
+
+type Story = StoryObj<typeof Tooltip>;
 
-const Template: StoryFn<TooltipProps> = (args) => (
-  <div style={{ margin: '100px', textAlign: 'center' }}>
-    <Tooltip {...args}>
-      <button type="button" style={{ padding: '8px 12px', cursor: 'pointer' }}>
-        Hover Me
-      </button>
-    </Tooltip>
-  </div>
-);
-
-export const Default = Template.bind({});
-Default.args = {
+export const Default: Story = {
+  args: {
     tooltipContent: 'This is a tooltip',
     placement: 'top',
     trigger: 'hover',
-  tooltipStyle: {
-    backgroundColor: '#333',
-    color: '#fff',
-    padding: '8px 12px',
-    borderRadius: '4px',
+    tooltipStyle: {
+      backgroundColor: '#333',
+      color: '#fff',
+      padding: '8px 12px',
+      borderRadius: '4px',
+    },
   },
 };

As per coding guidelines: "packages/*/src/*.stories.tsx: Create Storybook stories using Meta and StoryObj types in Component.stories.tsx".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/tooltip/src/Tooltip.stories.tsx` around lines 1 - 33, The story
currently uses the StoryFn+Template pattern; migrate to the StoryObj pattern by
removing the Template function and typing exports with StoryObj<TooltipProps>:
keep the default export as Meta<TooltipProps>, add a type alias like Story =
StoryObj<TooltipProps>, then export named stories (e.g., Default) as Story
objects with an args object matching existing defaults; update imports to import
StoryObj instead of StoryFn and ensure any prop controls/argTypes remain on the
default export.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/card/src/Card.test.tsx`:
- Line 5: In Card.test.tsx, remove the extra blank line that splits the
external-package imports in the top import block so all external imports are
contiguous; locate the import statements for external packages (the imports
after the `@radix-ui/`* / external group) and join them without an empty line
between them while keeping a blank line separating major groups
(node/react/@sipe-team/@vanilla-extract/@radix-ui → external → relative).

In `@packages/flex/src/Flex.test.tsx`:
- Line 46: Change the Korean test descriptions in the it.each blocks to English:
locate the it.each whose description string is "flex의 justify prop에
$justifyContent 속성을 주입하면 해당 속성을 적용한다." and replace it with an English equivalent
(e.g., "applies the $justifyContent value when passing justify prop to Flex");
do the same for the other it.each descriptions mentioned (lines with the Korean
strings at the other referenced tests) so all test names in Flex.test.tsx are in
English while preserving the interpolated $justifyContent and other
placeholders.

In `@packages/icon/src/components/CheckCircleIcon.tsx`:
- Line 10: The CheckCircleIcon component hardcodes fallback fill colors (e.g.,
fill={color || '#00ffff'} and the other literal at the second occurrence);
change these to use the design tokens instead: import the appropriate color
token(s) from packages/tokens (or the theme hook) and use them as the fallback
(e.g., fill={color || tokens.colors.<appropriateToken>}) so the icon defaults
follow the token contract; update both occurrences referenced in CheckCircleIcon
(the fill fallback and the other literal) and ensure typings/imports remain
consistent.

In `@packages/icon/src/components/link.tsx`:
- Around line 1-23: Delete the duplicate component file link.tsx (which exports
the same LinkIcon component) to enforce PascalCase and avoid unused duplicates;
ensure that the canonical component file LinkIcon.tsx remains intact and
exported from the package index, and remove any references/imports to link.tsx
if present so the project builds with only LinkIcon.tsx providing the LinkIcon
symbol.

In `@packages/icon/src/components/OrganizerIcon.tsx`:
- Line 9: The OrganizerIcon component currently uses a hardcoded fallback hex in
the JSX (fill={color || '#00ffff'}); replace that literal with a token from
packages/tokens by importing the appropriate color token (e.g.,
DEFAULT_ICON_COLOR or a semantic token like tokens.colors.icon.default) and use
it as the fallback (fill={color ?? <TOKEN_NAME>}) so the component adheres to
the token rule; update the import at the top of OrganizerIcon.tsx to pull the
token from packages/tokens and remove the hardcoded '#00ffff'.

In `@packages/reset/src/reset.css`:
- Around line 263-266: Restore the hard reduced-motion overrides by re-adding
!important to the reset rules for animation-duration, animation-iteration-count,
transition-duration, and scroll-behavior so these user preference safeguards
cannot be overridden by component-specific rules; update the declarations that
currently read "animation-duration: 0.01ms;", "animation-iteration-count: 1;",
"transition-duration: 0.01ms;", and "scroll-behavior: auto;" to include
!important on each value to enforce the reduced-motion behavior for users who
set prefers-reduced-motion: reduce.

In `@packages/switch/src/Switch.test.tsx`:
- Around line 1-8: Import group order in Switch.test.tsx is incorrect; move the
React import group before external testing-library imports and add blank lines
between groups to match the repo convention. Specifically, ensure "import {
createRef } from 'react';" (React group) appears before imports from
'@testing-library/jest-dom', '@testing-library/react', 'user-event', 'vitest'
(external testing libraries), and keep internal/third-party groups in the
required node → react → `@sipe-team/`* → `@vanilla-extract/`* → `@radix-ui/`* →
external packages → relative paths order, adding blank lines between each group.

In `@packages/typography/src/Typography.test.tsx`:
- Line 23: Replace the Korean test titles in the test.each calls with English
equivalents: locate the test.each that uses the description template '주입한
$weight($numericWeight) weight을 기준으로 글꼴의 두께를 설정한다.' (and the two other Korean
descriptions at the other test.each instances) and update them to clear English
descriptions such as "Sets font-weight based on injected $weight
($numericWeight)" (or a similar concise English phrase), keeping the same
interpolation tokens ($weight, $numericWeight) and leaving the test logic (the
test.each table and assertions) unchanged.

---

Outside diff comments:
In `@packages/tooltip/src/Tooltip.stories.tsx`:
- Around line 1-33: The story currently uses the StoryFn+Template pattern;
migrate to the StoryObj pattern by removing the Template function and typing
exports with StoryObj<TooltipProps>: keep the default export as
Meta<TooltipProps>, add a type alias like Story = StoryObj<TooltipProps>, then
export named stories (e.g., Default) as Story objects with an args object
matching existing defaults; update imports to import StoryObj instead of StoryFn
and ensure any prop controls/argTypes remain on the default export.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 54ad5d05-3c67-44f3-b599-7d1b65607b4d

📥 Commits

Reviewing files that changed from the base of the PR and between 2b33899 and 6e6abd8.

⛔ Files ignored due to path filters (3)
  • .templates/component/package.json is excluded by !.templates/**
  • .templates/component/src/Component.stories.tsx is excluded by !.templates/**
  • .templates/component/vitest.config.ts is excluded by !.templates/**
📒 Files selected for processing (112)
  • .vscode/extensions.json
  • .vscode/settings.json
  • commitlint.config.ts
  • package.json
  • packages/accordion/package.json
  • packages/avatar/package.json
  • packages/avatar/src/Avatar.css.ts
  • packages/avatar/src/Avatar.stories.tsx
  • packages/avatar/src/Avatar.test.tsx
  • packages/avatar/src/Avatar.tsx
  • packages/avatar/vitest.config.ts
  • packages/badge/.storybook/main.ts
  • packages/badge/.storybook/preview.ts
  • packages/badge/package.json
  • packages/badge/src/Badge.css.ts
  • packages/badge/src/Badge.stories.tsx
  • packages/badge/src/Badge.test.tsx
  • packages/badge/src/Badge.tsx
  • packages/badge/vitest.config.ts
  • packages/button/package.json
  • packages/button/vitest.config.ts
  • packages/card/.storybook/main.ts
  • packages/card/.storybook/preview.ts
  • packages/card/package.json
  • packages/card/src/Card.css.ts
  • packages/card/src/Card.stories.tsx
  • packages/card/src/Card.test.tsx
  • packages/card/src/Card.tsx
  • packages/card/vitest.config.ts
  • packages/checkbox/package.json
  • packages/checkbox/src/Checkbox.css.ts
  • packages/checkbox/src/Checkbox.stories.tsx
  • packages/checkbox/src/Checkbox.test.tsx
  • packages/checkbox/src/Checkbox.tsx
  • packages/checkbox/vitest.config.ts
  • packages/divider/package.json
  • packages/divider/src/Divider.css.ts
  • packages/divider/src/Divider.stories.tsx
  • packages/divider/src/Divider.test.tsx
  • packages/divider/src/Divider.tsx
  • packages/divider/vitest.config.ts
  • packages/flex/package.json
  • packages/flex/src/Flex.css.ts
  • packages/flex/src/Flex.stories.tsx
  • packages/flex/src/Flex.test.tsx
  • packages/flex/vitest.config.ts
  • packages/grid/package.json
  • packages/grid/src/Grid.test.tsx
  • packages/grid/src/Grid.tsx
  • packages/icon/package.json
  • packages/icon/scripts/generate-icons.ts
  • packages/icon/scripts/utils/generate-components.ts
  • packages/icon/scripts/utils/optimize-svg.ts
  • packages/icon/scripts/utils/paths.ts
  • packages/icon/scripts/utils/svgo.config.ts
  • packages/icon/src/Icons.stories.tsx
  • packages/icon/src/components/CheckCircleIcon.tsx
  • packages/icon/src/components/EmailIcon.tsx
  • packages/icon/src/components/GithubIcon.tsx
  • packages/icon/src/components/InstagramIcon.tsx
  • packages/icon/src/components/KakaoIcon.tsx
  • packages/icon/src/components/LinkIcon.tsx
  • packages/icon/src/components/LinkedinIcon.tsx
  • packages/icon/src/components/OrganizerIcon.tsx
  • packages/icon/src/components/UserIcon.tsx
  • packages/icon/src/components/YoutubeIcon.tsx
  • packages/icon/src/components/link.tsx
  • packages/icon/src/icons.test.tsx
  • packages/icon/src/index.ts
  • packages/icon/src/types.ts
  • packages/icon/vitest.config.ts
  • packages/input/package.json
  • packages/input/src/Input.stories.tsx
  • packages/input/src/Input.tsx
  • packages/input/vitest.config.ts
  • packages/plugin-figma-codegen/package.json
  • packages/radio/package.json
  • packages/radio/src/Radio.css.ts
  • packages/radio/src/Radio.tsx
  • packages/radio/src/RadioGroup.stories.tsx
  • packages/radio/vitest.config.ts
  • packages/reset/src/Reset.test.tsx
  • packages/reset/src/reset.css
  • packages/reset/vitest.config.ts
  • packages/side/package.json
  • packages/skeleton/package.json
  • packages/skeleton/src/Skeleton.stories.tsx
  • packages/skeleton/src/Skeleton.test.tsx
  • packages/skeleton/vitest.config.ts
  • packages/switch/package.json
  • packages/switch/src/Switch.stories.tsx
  • packages/switch/src/Switch.test.tsx
  • packages/switch/vitest.config.ts
  • packages/theme/package.json
  • packages/theme/src/ThemeProvider.test.tsx
  • packages/tokens/package.json
  • packages/tooltip/package.json
  • packages/tooltip/src/Tooltip.stories.tsx
  • packages/tooltip/src/Tooltip.test.tsx
  • packages/tooltip/vitest.config.ts
  • packages/typography/package.json
  • packages/typography/src/Typography.css.ts
  • packages/typography/src/Typography.stories.tsx
  • packages/typography/src/Typography.test.tsx
  • packages/typography/src/Typography.tsx
  • packages/typography/vitest.config.ts
  • scripts/createComponent.ts
  • tsup.config.ts
  • vite.config.ts
  • www/package.json
  • www/src/HomepageFeatures/index.tsx
  • www/src/pages/index.tsx


import { render, screen } from '@testing-library/react';
import { expect, test } from 'vitest';

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Remove extra blank line inside the external import group.

Line 5 splits external-package imports into two groups; keep them contiguous and only separate between major groups.

Proposed fix
 import { render, screen } from '@testing-library/react';
 import { expect, test } from 'vitest';
-
 import { Card } from './Card';

As per coding guidelines, "**/*.{ts,tsx}: Enforce import order: node → react → @sipe-team/* → @vanilla-extract/* → @radix-ui/* → external packages → relative paths, with blank lines between groups".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/card/src/Card.test.tsx` at line 5, In Card.test.tsx, remove the
extra blank line that splits the external-package imports in the top import
block so all external imports are contiguous; locate the import statements for
external packages (the imports after the `@radix-ui/`* / external group) and join
them without an empty line between them while keeping a blank line separating
major groups (node/react/@sipe-team/@vanilla-extract/@radix-ui → external →
relative).

);
] satisfies Array<{
justifyContent: CSSProperties['justifyContent'];
}>)('flex의 justify prop에 $justifyContent 속성을 주입하면 해당 속성을 적용한다.', ({ justifyContent }) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Convert updated test descriptions to English

The changed it.each descriptions are still in Korean. Please convert these updated test names to English for consistency with the test-file review standard.

As per coding guidelines, "**/packages/*/src/*.test.tsx: Review test files for: - English test descriptions (convert Korean descriptions to English)".

Also applies to: 68-68, 106-106, 210-210, 233-233

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/flex/src/Flex.test.tsx` at line 46, Change the Korean test
descriptions in the it.each blocks to English: locate the it.each whose
description string is "flex의 justify prop에 $justifyContent 속성을 주입하면 해당 속성을
적용한다." and replace it with an English equivalent (e.g., "applies the
$justifyContent value when passing justify prop to Flex"); do the same for the
other it.each descriptions mentioned (lines with the Korean strings at the other
referenced tests) so all test names in Flex.test.tsx are in English while
preserving the interpolated $justifyContent and other placeholders.

<svg ref={ref} width={size} height={size} {...props} fill="none" viewBox="0 0 24 24">
<g clipPath="url(#a)">
<path
fill={color || '#00ffff'}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Avoid hardcoded SVG fallback colors

Both fallback fills are literal color values. Please switch these to token/theme-derived values so icon defaults follow the design token contract.

As per coding guidelines, "packages/**/src/**/*.{ts,tsx,css.ts}: 색상, 간격, 라운딩 값은 하드코딩하지 말고 packages/tokens 값을 사용하세요".

Also applies to: 16-16

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/icon/src/components/CheckCircleIcon.tsx` at line 10, The
CheckCircleIcon component hardcodes fallback fill colors (e.g., fill={color ||
'#00ffff'} and the other literal at the second occurrence); change these to use
the design tokens instead: import the appropriate color token(s) from
packages/tokens (or the theme hook) and use them as the fallback (e.g.,
fill={color || tokens.colors.<appropriateToken>}) so the icon defaults follow
the token contract; update both occurrences referenced in CheckCircleIcon (the
fill fallback and the other literal) and ensure typings/imports remain
consistent.

Comment on lines 1 to 23
import * as React from 'react';

import type { IconProps } from '../types';

export const LinkIcon = React.forwardRef<SVGSVGElement, IconProps>(
({ color, size = 24, ...props }, ref) => {
return <svg ref={ref} width={size} height={size} {...props} fill="none" viewBox="0 0 24 25"><g clipPath="url(#a)"><path fill={color || "#CBD5E0"} d="M17 7.5h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c1.65 0 3 1.35 3 3s-1.35 3-3 3h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c2.76 0 5-2.24 5-5s-2.24-5-5-5m-9 5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9c-.55 0-1 .45-1 1m2 3H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h3c.55 0 1-.45 1-1s-.45-1-1-1H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h3c.55 0 1-.45 1-1s-.45-1-1-1"/></g><defs><clipPath id="a"><path fill={color || "white"} d="M0 .5h24v24H0z"/></clipPath></defs></svg>;
}
);
export const LinkIcon = React.forwardRef<SVGSVGElement, IconProps>(({ color, size = 24, ...props }, ref) => {
return (
<svg ref={ref} width={size} height={size} {...props} fill="none" viewBox="0 0 24 25">
<g clipPath="url(#a)">
<path
fill={color || '#CBD5E0'}
d="M17 7.5h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c1.65 0 3 1.35 3 3s-1.35 3-3 3h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c2.76 0 5-2.24 5-5s-2.24-5-5-5m-9 5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9c-.55 0-1 .45-1 1m2 3H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h3c.55 0 1-.45 1-1s-.45-1-1-1H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h3c.55 0 1-.45 1-1s-.45-1-1-1"
/>
</g>
<defs>
<clipPath id="a">
<path fill={color || 'white'} d="M0 .5h24v24H0z" />
</clipPath>
</defs>
</svg>
);
});

LinkIcon.displayName = 'LinkIcon';
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify if both link.tsx and LinkIcon.tsx exist and check for duplicate exports

echo "=== Checking for both files ==="
fd -t f "^(link|LinkIcon)\.tsx$" packages/icon/src/components/

echo -e "\n=== Checking icon index exports ==="
rg -n "LinkIcon" packages/icon/src/index.ts packages/icon/src/components/index.ts

echo -e "\n=== Comparing file contents ==="
if [ -f "packages/icon/src/components/link.tsx" ] && [ -f "packages/icon/src/components/LinkIcon.tsx" ]; then
  diff packages/icon/src/components/link.tsx packages/icon/src/components/LinkIcon.tsx || echo "Files differ"
fi

Repository: sipe-team/side

Length of output: 413


🏁 Script executed:

#!/bin/bash

# Check if link.tsx is imported or exported anywhere
echo "=== Searching for imports/references to 'link.tsx' ==="
rg "from.*['\"].*link['\"]|import.*from.*link" --type ts --type tsx

echo -e "\n=== Searching for any reference to the lower-case file ==="
rg "link\.tsx" --type ts --type tsx

# Display content of both files for exact comparison
echo -e "\n=== Content of link.tsx ==="
cat packages/icon/src/components/link.tsx

echo -e "\n=== Content of LinkIcon.tsx ==="
cat packages/icon/src/components/LinkIcon.tsx

Repository: sipe-team/side

Length of output: 2147


Remove duplicate link.tsx file.

The file is identical to LinkIcon.tsx and violates the PascalCase naming convention for React component files. Since only LinkIcon.tsx is exported in the package index and link.tsx is not referenced anywhere in the codebase, it should be deleted.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/icon/src/components/link.tsx` around lines 1 - 23, Delete the
duplicate component file link.tsx (which exports the same LinkIcon component) to
enforce PascalCase and avoid unused duplicates; ensure that the canonical
component file LinkIcon.tsx remains intact and exported from the package index,
and remove any references/imports to link.tsx if present so the project builds
with only LinkIcon.tsx providing the LinkIcon symbol.

return (
<svg ref={ref} width={size} height={size} {...props} fill="none" viewBox="0 0 16 14">
<path
fill={color || '#00ffff'}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Replace hardcoded fallback color with tokenized value

fill={color || '#00ffff'} violates the token rule for package source files. Please source the default color from packages/tokens (or shared theme contract) instead of a literal hex value.

As per coding guidelines, "packages/**/src/**/*.{ts,tsx,css.ts}: 색상, 간격, 라운딩 값은 하드코딩하지 말고 packages/tokens 값을 사용하세요".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/icon/src/components/OrganizerIcon.tsx` at line 9, The OrganizerIcon
component currently uses a hardcoded fallback hex in the JSX (fill={color ||
'#00ffff'}); replace that literal with a token from packages/tokens by importing
the appropriate color token (e.g., DEFAULT_ICON_COLOR or a semantic token like
tokens.colors.icon.default) and use it as the fallback (fill={color ??
<TOKEN_NAME>}) so the component adheres to the token rule; update the import at
the top of OrganizerIcon.tsx to pull the token from packages/tokens and remove
the hardcoded '#00ffff'.

Comment on lines +263 to +266
animation-duration: 0.01ms;
animation-iteration-count: 1;
transition-duration: 0.01ms;
scroll-behavior: auto;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Restore hard reduced-motion overrides for accessibility.

At Line 263–Line 266, removing !important allows later or more specific component rules to override these safeguards, which can re-enable motion for users who set prefers-reduced-motion: reduce.

Suggested fix
 `@media` (prefers-reduced-motion: reduce) {
   *:not(.preserve-motion) {
-    animation-duration: 0.01ms;
-    animation-iteration-count: 1;
-    transition-duration: 0.01ms;
-    scroll-behavior: auto;
+    animation-duration: 0.01ms !important;
+    animation-iteration-count: 1 !important;
+    transition-duration: 0.01ms !important;
+    scroll-behavior: auto !important;
   }
 }
📝 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
animation-duration: 0.01ms;
animation-iteration-count: 1;
transition-duration: 0.01ms;
scroll-behavior: auto;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/reset/src/reset.css` around lines 263 - 266, Restore the hard
reduced-motion overrides by re-adding !important to the reset rules for
animation-duration, animation-iteration-count, transition-duration, and
scroll-behavior so these user preference safeguards cannot be overridden by
component-specific rules; update the declarations that currently read
"animation-duration: 0.01ms;", "animation-iteration-count: 1;",
"transition-duration: 0.01ms;", and "scroll-behavior: auto;" to include
!important on each value to enforce the reduced-motion behavior for users who
set prefers-reduced-motion: reduce.

Comment on lines 1 to 8
import '@testing-library/jest-dom';

import { createRef } from 'react';

import { faker } from '@faker-js/faker';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { createRef } from 'react';
import { describe, expect, test, vi } from 'vitest';
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Import group order violates the repository convention.

react should be placed before external testing-library imports per the defined order.

Suggested import reorder
-import '@testing-library/jest-dom';
-
 import { createRef } from 'react';
 
+import '@testing-library/jest-dom';
 import { faker } from '@faker-js/faker';
 import { render, screen } from '@testing-library/react';
 import userEvent from '@testing-library/user-event';

As per coding guidelines: **/*.{ts,tsx}: Enforce import order: node → react → @sipe-team/* → @vanilla-extract/* → @radix-ui/* → external packages → relative paths, with blank lines between groups.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/switch/src/Switch.test.tsx` around lines 1 - 8, Import group order
in Switch.test.tsx is incorrect; move the React import group before external
testing-library imports and add blank lines between groups to match the repo
convention. Specifically, ensure "import { createRef } from 'react';" (React
group) appears before imports from '@testing-library/jest-dom',
'@testing-library/react', 'user-event', 'vitest' (external testing libraries),
and keep internal/third-party groups in the required node → react → `@sipe-team/`*
→ `@vanilla-extract/`* → `@radix-ui/`* → external packages → relative paths order,
adding blank lines between each group.

] satisfies Array<{
weight: FontWeight;
numericWeight: number;
}>)('주입한 $weight($numericWeight) weight을 기준으로 글꼴의 두께를 설정한다.', ({ weight, numericWeight }) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Convert updated test descriptions to English.

The changed test.each titles are still in Korean. Please rename these test descriptions to English for consistency with the test guideline.

As per coding guidelines "/packages//src/.test.tsx: Review test files for: - English test descriptions (convert Korean descriptions to English)".

Also applies to: 39-39, 57-57

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/typography/src/Typography.test.tsx` at line 23, Replace the Korean
test titles in the test.each calls with English equivalents: locate the
test.each that uses the description template '주입한 $weight($numericWeight)
weight을 기준으로 글꼴의 두께를 설정한다.' (and the two other Korean descriptions at the other
test.each instances) and update them to clear English descriptions such as "Sets
font-weight based on injected $weight ($numericWeight)" (or a similar concise
English phrase), keeping the same interpolation tokens ($weight, $numericWeight)
and leaving the test logic (the test.each table and assertions) unchanged.

Comment on lines 8 to +10
"format": "biome format --write",
"lint": "biome lint --write",
"lint": "biome lint",
"lint:fix": "biome check --write",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

위에 format 스크립드도 있어서 역할을 확실히 분리하거나, 스크립트명 더 명확하게 바꾸면 좋을꺼 같아용~~
음.. fix:biome?

@froggy1014 froggy1014 merged commit 26549a1 into main Apr 10, 2026
4 checks passed
@froggy1014 froggy1014 deleted the chore/formatting-codebase branch April 10, 2026 11:42
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