@nexus-cross/design-system 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/cursor-rules/nexus-project-setup.mdc +150 -150
  2. package/cursor-rules/nexus-ui-api.mdc +659 -316
  3. package/cursor-rules/nexus-ui-components.mdc +162 -96
  4. package/dist/chunks/chunk-55IEEVNR.js +7 -0
  5. package/dist/chunks/{chunk-D6FII7HW.js → chunk-BBLBTOP4.js} +8 -5
  6. package/dist/chunks/{chunk-5JHN4FCY.mjs → chunk-K2TBLM3F.mjs} +1 -4
  7. package/dist/chunks/{chunk-MTX7GD3H.js → chunk-PEIEVKD5.js} +1 -4
  8. package/dist/chunks/{chunk-54RBL7J4.mjs → chunk-UKRU46PH.mjs} +8 -5
  9. package/dist/chunks/chunk-XMG7ZEYY.mjs +5 -0
  10. package/dist/data-list.js +2 -2
  11. package/dist/data-list.mjs +1 -1
  12. package/dist/error-boundary.d.mts +1 -1
  13. package/dist/error-boundary.d.ts +1 -1
  14. package/dist/index.js +5 -5
  15. package/dist/index.mjs +2 -2
  16. package/dist/schemas/_all.json +870 -373
  17. package/dist/schemas/accordion.json +12 -12
  18. package/dist/schemas/avatar.json +9 -9
  19. package/dist/schemas/button.json +27 -9
  20. package/dist/schemas/carousel.json +6 -6
  21. package/dist/schemas/carouselButton.json +3 -3
  22. package/dist/schemas/carouselDots.json +2 -2
  23. package/dist/schemas/carouselSlide.json +3 -3
  24. package/dist/schemas/checkBox.json +28 -10
  25. package/dist/schemas/chip.json +13 -7
  26. package/dist/schemas/clientOnly.json +3 -3
  27. package/dist/schemas/countdown.json +8 -8
  28. package/dist/schemas/counter.json +13 -10
  29. package/dist/schemas/dataList.json +10 -10
  30. package/dist/schemas/divider.json +8 -5
  31. package/dist/schemas/drawer.json +22 -3
  32. package/dist/schemas/drawerClose.json +24 -0
  33. package/dist/schemas/drawerContent.json +7 -7
  34. package/dist/schemas/drawerDescription.json +20 -0
  35. package/dist/schemas/drawerTitle.json +20 -0
  36. package/dist/schemas/drawerTrigger.json +24 -0
  37. package/dist/schemas/ellipsis.json +9 -9
  38. package/dist/schemas/errorBoundary.json +4 -4
  39. package/dist/schemas/infiniteScroll.json +12 -12
  40. package/dist/schemas/marquee.json +10 -7
  41. package/dist/schemas/modalCall.json +81 -3
  42. package/dist/schemas/modalTemplate.json +28 -25
  43. package/dist/schemas/numberInput.json +32 -14
  44. package/dist/schemas/pagination.json +8 -8
  45. package/dist/schemas/popover.json +12 -12
  46. package/dist/schemas/radioGroup.json +17 -10
  47. package/dist/schemas/radioItem.json +12 -5
  48. package/dist/schemas/select.json +11 -11
  49. package/dist/schemas/selectItem.json +5 -5
  50. package/dist/schemas/skeleton.json +10 -7
  51. package/dist/schemas/spinner.json +11 -4
  52. package/dist/schemas/switch.json +18 -7
  53. package/dist/schemas/tab.json +15 -15
  54. package/dist/schemas/table.json +14 -14
  55. package/dist/schemas/tableRow.json +5 -5
  56. package/dist/schemas/tdColumn.json +17 -17
  57. package/dist/schemas/textArea.json +42 -9
  58. package/dist/schemas/textInput.json +55 -15
  59. package/dist/schemas/themeProvider.json +10 -10
  60. package/dist/schemas/toastOptions.json +81 -0
  61. package/dist/schemas/toaster.json +48 -3
  62. package/dist/schemas/tooltip.json +10 -10
  63. package/dist/schemas/virtualGrid.json +19 -16
  64. package/dist/schemas/virtualList.json +12 -9
  65. package/dist/schemas.d.mts +420 -56
  66. package/dist/schemas.d.ts +420 -56
  67. package/dist/schemas.js +502 -367
  68. package/dist/schemas.mjs +498 -368
  69. package/dist/styles/layer.js +2 -2
  70. package/dist/styles/layer.mjs +1 -1
  71. package/dist/styles.css +56 -45
  72. package/dist/styles.js +2 -2
  73. package/dist/styles.layered.css +56 -45
  74. package/dist/styles.mjs +1 -1
  75. package/dist/text-input.d.mts +1 -1
  76. package/dist/text-input.d.ts +1 -1
  77. package/dist/text-input.js +3 -3
  78. package/dist/text-input.mjs +1 -1
  79. package/package.json +8 -6
  80. package/scripts/setup-cursor-rules.cjs +6 -6
  81. package/dist/chunks/chunk-7AISZYWL.js +0 -7
  82. package/dist/chunks/chunk-V5OTJP6H.mjs +0 -5
@@ -1,26 +1,26 @@
1
1
  ---
2
- description: "NEXUS Design System 프로젝트 설정 프로젝트의 기술 스택과 필수 규칙"
2
+ description: "NEXUS Design System project setuptech stack and mandatory rules for this project"
3
3
  alwaysApply: true
4
4
  ---
5
5
 
6
- # NEXUS Design System 프로젝트 설정
6
+ # NEXUS Design System Project Setup
7
7
 
8
- 프로젝트는 NEXUS Design System 사용한다. 코드를 생성할 반드시 아래를 따른다.
8
+ This project uses NEXUS Design System. All generated code MUST follow the rules below.
9
9
 
10
- ## 기술 스택
10
+ ## Tech Stack
11
11
 
12
- - **디자인 토큰**: `@nexus-cross/tokens` (CSS 변수 기반)
13
- - **UI 컴포넌트**: `@nexus-cross/design-system` (React, CVA + Plain CSS)
14
- - **스타일링**: Tailwind CSS v4 + NEXUS 시맨틱 토큰
12
+ - **Design Tokens**: `@nexus-cross/tokens` (CSS variable based)
13
+ - **UI Components**: `@nexus-cross/design-system` (React, CVA + Plain CSS)
14
+ - **Styling**: Tailwind CSS v4 + NEXUS semantic tokens
15
15
 
16
- ## 디자인 시스템 CSS 설정
16
+ ## Design System CSS Setup
17
17
 
18
- UI 컴포넌트 스타일은 사용처 환경에 따라 가지 entry point 하나를 선택한다.
18
+ Choose one of two CSS entry points depending on the project environment:
19
19
 
20
- | 환경 | import | 설명 |
20
+ | Environment | import | Description |
21
21
  |---|---|---|
22
22
  | Tailwind v3 / Plain CSS / CSS Modules | `@nexus-cross/design-system/styles` | unlayered CSS |
23
- | Tailwind v4 | `@nexus-cross/design-system/styles/layer` | `@layer nexus`로 래핑 |
23
+ | Tailwind v4 | `@nexus-cross/design-system/styles/layer` | wrapped in `@layer nexus` |
24
24
 
25
25
  ```tsx
26
26
  // Tailwind v3, Plain CSS, CSS Modules
@@ -30,101 +30,101 @@ import '@nexus-cross/design-system/styles'
30
30
  import '@nexus-cross/design-system/styles/layer'
31
31
  ```
32
32
 
33
- Tailwind v4 프로젝트는 `globals.css`에 layer 순서도 선언한다:
33
+ For Tailwind v4 projects, also declare layer order in `globals.css`:
34
34
  ```css
35
35
  @layer base, nexus, components, utilities;
36
36
  ```
37
37
 
38
- ## 절대 규칙
38
+ ## Absolute Rules
39
39
 
40
- 1. **색상은 반드시 NEXUS 토큰을 사용한다.** 하드코딩 금지.
41
- - `bg-bg-default`, `text-text-primary`, `border-border-default`
42
- - `#ffffff`, `#000000`, `rgb()` 직접 색상값 사용 금지
43
- - 참고: `.cursor/rules/nexus-tokens.mdc`
40
+ 1. **Always use NEXUS tokens for colors.** Hardcoding is prohibited.
41
+ - `bg-bg-default`, `text-text-primary`, `border-border-default`, etc.
42
+ - Direct color values like `#ffffff`, `#000000`, `rgb()` are prohibited
43
+ - Reference: `.cursor/rules/nexus-tokens.mdc`
44
44
 
45
- 2. **UI 컴포넌트는 반드시 `@nexus-cross/design-system`에서 import한다.** 직접 구현 금지.
46
- - `<Button>`, `<TextInput>`, `<Modal>`, `<Toast>`
47
- - Radix UI, Headless UI 등을 직접 import하여 동일 기능 컴포넌트를 만들지 않는다
48
- - 참고: `.cursor/rules/nexus-ui-components.mdc`, `.cursor/rules/nexus-ui-api.mdc`
45
+ 2. **Always import UI components from `@nexus-cross/design-system`.** Direct implementation is prohibited.
46
+ - `<Button>`, `<TextInput>`, `<Modal>`, `<Toast>`, etc.
47
+ - Do NOT import Radix UI, Headless UI, etc. to build equivalent components
48
+ - Reference: `.cursor/rules/nexus-ui-components.mdc`, `.cursor/rules/nexus-ui-api.mdc`
49
49
 
50
- 3. **Figma 디자인 구현 시:**
51
- - NEXUS 토큰과 공용 UI 적극 활용하되, **Figma 디자인에 충실하게** 구현한다
52
- - Figma 색상값을 보고 가장 가까운 NEXUS 토큰으로 매핑한다
53
- - Figma UI 요소(버튼, 입력필드 ) `@nexus-cross/design-system` 컴포넌트로 구현한다
54
- - Figma 디자인과 공용 UI 스타일이 다를 경우, `className`으로 Figma에 맞게 오버라이드한다
55
- - Figma에 없는 커스텀 스타일만 Tailwind 유틸리티로 작성한다
50
+ 3. **When implementing Figma designs:**
51
+ - Actively use NEXUS tokens and shared UI, while **faithfully** implementing the Figma design
52
+ - Map Figma color values to the closest NEXUS token
53
+ - Implement Figma UI elements (buttons, inputs, etc.) using `@nexus-cross/design-system` components
54
+ - If shared UI style differs from Figma, override with `className` to match Figma
55
+ - Only use Tailwind utilities for custom styles not present in Figma
56
56
 
57
- ## Figma MCP → NEXUS 변환 워크플로우
57
+ ## Figma MCP → NEXUS Conversion Workflow
58
58
 
59
- **Figma MCP 도구(get_design_context, get_code ) 출력을 절대 그대로 사용하지 않는다.**
60
- Figma MCP 바닐라 HTML + Tailwind 출력하지만, 프로젝트는 `@nexus-cross/design-system`을 사용한다.
61
- **MCP 출력은 "디자인 의도를 파악하는 참고 자료" 뿐, 최종 코드가 아니다.**
59
+ **NEVER use Figma MCP tool output (get_design_context, get_code, etc.) as-is.**
60
+ Figma MCP outputs vanilla HTML + Tailwind, but this project uses `@nexus-cross/design-system`.
61
+ **MCP output is only a "reference for understanding design intent", not final code.**
62
62
 
63
- ### 필수 3단계 워크플로우
63
+ ### Mandatory 3-Step Workflow
64
64
 
65
- **1단계: 디자인 분석 (MCP 호출)**
66
- - `get_design_context`로 구조와 레이아웃 파악
67
- - `get_screenshot`으로 시각적 참조 확인
68
- - 단계에서 MCP 출력하는 코드는 **읽기만 하고 사용하지 않는다**
65
+ **Step 1: Design Analysis (MCP call)**
66
+ - Use `get_design_context` to understand structure and layout
67
+ - Use `get_screenshot` for visual reference
68
+ - Code output from MCP at this stage is **read-only — do not use it**
69
69
 
70
- **2단계: 컴포넌트 매핑 (코드 작성 전에 반드시 수행)**
71
- MCP 출력의 요소를 NEXUS 컴포넌트로 매핑한다. **코드를 줄이라도 쓰기 전에** 매핑을 먼저 완료한다.
70
+ **Step 2: Component Mapping (MUST be done before writing code)**
71
+ Map each element from MCP output to a NEXUS component. **Complete this mapping before writing a single line of code.**
72
72
 
73
73
  ```
74
- MCP 출력 분석:
75
- - <button> 2개 발견 → Button (primary, ghost)
76
- - <input type="text"> 1개 → TextInput
77
- - <select> 1개 → Select + SelectItem
78
- - 색상 #09B498 → bg-accent-primary (NEXUS 토큰)
79
- - 색상 #1E232E → text-text-primary (NEXUS 토큰)
80
- - 간격 16px → var(--spacing-padding-md)
74
+ MCP Output Analysis:
75
+ - 2 <button> found → Button (primary, ghost)
76
+ - 1 <input type="text"> → TextInput
77
+ - 1 <select> → Select + SelectItem
78
+ - Color #09B498 → bg-accent-primary (NEXUS token)
79
+ - Color #1E232E → text-text-primary (NEXUS token)
80
+ - Spacing 16px → var(--spacing-padding-md)
81
81
  ```
82
82
 
83
- **3단계: NEXUS 코드 생성**
84
- 매핑을 기반으로 코드를 작성한다. 단계에서는 MCP 출력 코드를 참조하지 않는다.
83
+ **Step 3: NEXUS Code Generation**
84
+ Write code based on the mapping. Do NOT reference MCP output code at this stage.
85
85
 
86
- ### 컴포넌트 변환 테이블
86
+ ### Component Conversion Table
87
87
 
88
- | MCP 출력 (네이티브 HTML) | → NEXUS 컴포넌트 |
88
+ | MCP Output (Native HTML) | → NEXUS Component |
89
89
  |---|---|
90
- | `<button>`, `<a>` 버튼 스타일 | `<Button>` (variant, size 지정) |
91
- | `<input type="text">` | `<TextInput>` (prefixIcon, suffixIcon 지원) |
92
- | `<textarea>` | `<TextArea>` (showCount, maxLength 지원) |
90
+ | `<button>`, `<a>` button style | `<Button>` (specify variant, size) |
91
+ | `<input type="text">` | `<TextInput>` (prefixIcon, suffixIcon supported) |
92
+ | `<textarea>` | `<TextArea>` (showCount, maxLength supported) |
93
93
  | `<input type="number">` | `<NumberInput>` |
94
94
  | `<select>` | `<Select>` + `<SelectItem>` |
95
95
  | `<input type="checkbox">` | `<CheckBox>` |
96
96
  | `<input type="radio">` | `<RadioGroup>` + `<RadioItem>` |
97
- | 토글/스위치 UI | `<Switch>` |
98
- | UI | `<Tab>` (items 배열로 구성) |
99
- | 칩/태그/필터/뱃지 | `<Chip>` (variant, onClose 지원) |
100
- | 아바타/프로필 이미지 | `<Avatar>` (fallback, shape 지원) |
101
- | 구분선/`<hr>` | `<Divider>` (orientation, variant 지정) |
102
- | 드롭다운 메뉴 | `<Select>` 또는 `<Popover>` |
103
- | 툴팁 | `<Tooltip>` |
104
- | 아코디언/접기 | `<Accordion>` |
105
- | 캐러셀/슬라이더 | `<Carousel>` + `<CarouselSlide>` |
106
- | 페이지네이션 | `<Pagination>` |
107
- | 모달/다이얼로그 | `modal()` + `<ModalTemplate>` |
108
- | 토스트/알림 | `toast()` |
109
- | 드로어/바텀시트 | `<Drawer>` |
110
- | 로딩 스피너 | `<Spinner>` |
111
- | 스켈레톤 로딩 | `<Skeleton>` |
112
- | 데이터 리스트 | `<DataList>` |
113
- | 테이블 | `<Table>` + `<TableRow>` + `<TdColumn>` |
114
- | 숫자 카운트 애니메이션 | `<Counter>` |
115
- | 카운트다운 타이머 | `<Countdown>` |
116
- | 텍스트 말줄임 | `<Ellipsis>` |
117
- | 흐르는 텍스트 | `<Marquee>` |
118
- | 무한 스크롤 리스트 | `<InfiniteScroll>` |
119
- | 대량 리스트 (가상 스크롤) | `<VirtualList>` / `<VirtualGrid>` |
120
-
121
- **위 교체를 하지 않고 네이티브 HTML을 사용하면 규칙 위반이다.**
122
-
123
- ### 색상 변환 테이블
124
-
125
- MCP 출력하는 색상값을 NEXUS 토큰으로 변환한다:
126
-
127
- | MCP 출력 색상 | → NEXUS 토큰 |
97
+ | Toggle/Switch UI | `<Switch>` |
98
+ | Tab UI | `<Tab>` (configured via items array) |
99
+ | Chip/Tag/Filter/Badge | `<Chip>` (variant, onClose supported) |
100
+ | Avatar/Profile image | `<Avatar>` (fallback, shape supported) |
101
+ | Divider/`<hr>` | `<Divider>` (specify orientation, variant) |
102
+ | Dropdown menu | `<Select>` or `<Popover>` |
103
+ | Tooltip | `<Tooltip>` |
104
+ | Accordion/Collapsible | `<Accordion>` |
105
+ | Carousel/Slider | `<Carousel>` + `<CarouselSlide>` |
106
+ | Pagination | `<Pagination>` |
107
+ | Modal/Dialog | `modal()` + `<ModalTemplate>` |
108
+ | Toast/Notification | `toast()` |
109
+ | Drawer/Bottom sheet | `<Drawer>` |
110
+ | Loading spinner | `<Spinner>` |
111
+ | Skeleton loader | `<Skeleton>` |
112
+ | Data list | `<DataList>` |
113
+ | Table | `<Table>` + `<TableRow>` + `<TdColumn>` |
114
+ | Number count animation | `<Counter>` |
115
+ | Countdown timer | `<Countdown>` |
116
+ | Text ellipsis | `<Ellipsis>` |
117
+ | Scrolling text | `<Marquee>` |
118
+ | Infinite scroll list | `<InfiniteScroll>` |
119
+ | Large list (virtual scroll) | `<VirtualList>` / `<VirtualGrid>` |
120
+
121
+ **Using native HTML instead of the replacements above is a rule violation.**
122
+
123
+ ### Color Conversion Table
124
+
125
+ Convert MCP output colors to NEXUS tokens:
126
+
127
+ | MCP Output Color | → NEXUS Token |
128
128
  |---|---|
129
129
  | `#FFFFFF`, `bg-white` | `bg-bg-default` |
130
130
  | `#F3F6F8`, `bg-gray-50` | `bg-bg-subtle` |
@@ -139,59 +139,59 @@ MCP가 출력하는 색상값을 NEXUS 토큰으로 변환한다:
139
139
  | `#FF9D00`, `bg-amber-*` | `bg-status-warning` |
140
140
  | `#0095FF`, `bg-blue-*` | `bg-status-info` |
141
141
 
142
- 위에 정확히 매칭되지 않는 색상은 가장 가까운 NEXUS 토큰을 선택한다.
143
- **어떤 경우에도 hex 값이나 Tailwind 기본 색상(bg-blue-500 )을 사용하지 않는다.**
142
+ For colors not exactly matching above, choose the closest NEXUS token.
143
+ **Under no circumstances use hex values or default Tailwind colors (bg-blue-500, etc.).**
144
144
 
145
- ### Button variant 판단 기준
145
+ ### Button Variant Decision Criteria
146
146
 
147
- Figma에서 버튼의 시각적 스타일을 보고 variant를 결정한다:
147
+ Determine the variant based on visual style in Figma:
148
148
 
149
- | Figma 시각적 특징 | → variant |
149
+ | Figma Visual Characteristic | → variant |
150
150
  |---|---|
151
- | 채워진 accent 색상 배경 (초록/틸) | `variant="primary"` |
152
- | 채워진 회색/중립 배경 | `variant="secondary"` |
153
- | 테두리만 있고 배경 투명 | `variant="outline"` |
154
- | 배경/테두리 없이 텍스트만 | `variant="ghost"` |
155
- | 빨간색/위험 표시 | `variant="danger"` |
151
+ | Filled accent color background (green/teal) | `variant="primary"` |
152
+ | Filled gray/neutral background | `variant="secondary"` |
153
+ | Border only, transparent background | `variant="outline"` |
154
+ | No background/border, text only | `variant="ghost"` |
155
+ | Red/danger indicator | `variant="danger"` |
156
156
 
157
- ### 자기 검증 체크리스트
157
+ ### Self-Verification Checklist
158
158
 
159
- 코드를 출력하기 전에 아래를 확인한다:
159
+ Verify the following before outputting code:
160
160
 
161
- - [ ] `<button>`, `<input>`, `<select>`, `<textarea>` 등 네이티브 HTML 폼 요소가 없는가?
162
- - [ ] hex 색상값(`#...`)이 없는가?
163
- - [ ] Tailwind 기본 색상(`bg-blue-500`, `text-gray-900` )이 없는가?
164
- - [ ] 모든 import가 `@nexus-cross/design-system`에서 오는가?
165
- - [ ] 모달은 `ModalTemplate`으로 감쌌는가?
166
- - [ ] 간격/크기에 하드코딩 px 없는가?
161
+ - [ ] No native HTML form elements (`<button>`, `<input>`, `<select>`, `<textarea>`, etc.)?
162
+ - [ ] No hex color values (`#...`)?
163
+ - [ ] No default Tailwind colors (`bg-blue-500`, `text-gray-900`, etc.)?
164
+ - [ ] All imports from `@nexus-cross/design-system`?
165
+ - [ ] Modals wrapped with `ModalTemplate`?
166
+ - [ ] No hardcoded px values for spacing/sizing?
167
167
 
168
- **하나라도 실패하면 코드를 수정한 출력한다.**
168
+ **If any check fails, fix the code before outputting.**
169
169
 
170
170
  ```tsx
171
- // Figma MCP 코드 그대로 사용 (금지)
172
- <button className="bg-[#09B498] text-white px-4 py-2 rounded-lg">확인</button>
173
- <input className="border border-[#C6D0DA] px-3 py-2 rounded" placeholder="검색" />
174
- <div className="w-8 h-8 rounded-full bg-gray-200" /> {/* 아바타 */}
175
- <hr className="border-[#ECF0F2]" /> {/* 구분선 */}
176
-
177
- // NEXUS 컴포넌트로 교체 (필수)
178
- <Button variant="primary">확인</Button>
179
- <TextInput placeholder="검색" prefixIcon={<SearchIcon />} />
171
+ // WRONG — Using Figma MCP code as-is (prohibited)
172
+ <button className="bg-[#09B498] text-white px-4 py-2 rounded-lg">Confirm</button>
173
+ <input className="border border-[#C6D0DA] px-3 py-2 rounded" placeholder="Search" />
174
+ <div className="w-8 h-8 rounded-full bg-gray-200" /> {/* avatar */}
175
+ <hr className="border-[#ECF0F2]" /> {/* divider */}
176
+
177
+ // CORRECT — Replace with NEXUS components (required)
178
+ <Button variant="primary">Confirm</Button>
179
+ <TextInput placeholder="Search" prefixIcon={<SearchIcon />} />
180
180
  <Avatar fallback="JD" size="sm" />
181
181
  <Divider />
182
182
  ```
183
183
 
184
- ## 전역 설정 ( 루트에 필수)
184
+ ## Global Setup (Required at App Root)
185
185
 
186
- 아래 컴포넌트를 루트(layout.tsx 또는 App.tsx)에 **반드시** 배치한다.
186
+ The following components MUST be placed at the app root (layout.tsx or App.tsx).
187
187
 
188
- | 컴포넌트 | import | 필수 조건 | 설명 |
189
- |----------|--------|----------|------|
190
- | `<ModalContainer />` | `@nexus-cross/design-system/modal` | `modal()` 또는 `useModal()` 사용 시 | 모달 렌더링 컨테이너 |
191
- | `<Toaster />` | `@nexus-cross/design-system` | `toast()` 사용 시 | 토스트 알림 렌더링 |
188
+ | Component | import | Required When | Description |
189
+ |---|---|---|---|
190
+ | `<ModalContainer />` | `@nexus-cross/design-system/modal` | Using `modal()` or `useModal()` | Modal rendering container |
191
+ | `<Toaster />` | `@nexus-cross/design-system` | Using `toast()` | Toast notification renderer |
192
192
 
193
193
  ```tsx
194
- // layout.tsx 또는 App.tsx
194
+ // layout.tsx or App.tsx
195
195
  import { ModalContainer } from '@nexus-cross/design-system/modal';
196
196
  import { Toaster } from '@nexus-cross/design-system';
197
197
 
@@ -206,87 +206,87 @@ export default function RootLayout({ children }) {
206
206
  }
207
207
  ```
208
208
 
209
- **전역 설정이 필요 없는 컴포넌트** (별도 Provider 없이 바로 사용 가능):
210
- - Tooltip (내부에 Provider 내장)
211
- - Popover, Drawer, Select, Accordion 모든 나머지 컴포넌트
209
+ **Components that do NOT need global setup** (usable directly without Provider):
210
+ - Tooltip (Provider built-in)
211
+ - Popover, Drawer, Select, Accordion, and all other components
212
212
 
213
- ## Import 패턴
213
+ ## Import Patterns
214
214
 
215
215
  ```tsx
216
- // 일반 컴포넌트
216
+ // General components
217
217
  import { Button, TextInput, TextArea, Select, Switch, Chip, Spinner, Divider } from '@nexus-cross/design-system';
218
218
 
219
- // 오버레이 컴포넌트
219
+ // Overlay components
220
220
  import { Tooltip, Popover, Drawer, Accordion } from '@nexus-cross/design-system';
221
221
 
222
- // 토스트
222
+ // Toast
223
223
  import { toast, Toaster } from '@nexus-cross/design-system';
224
224
 
225
- // 모달 시스템 (별도 서브패스)
225
+ // Modal system (separate subpath)
226
226
  import { modal, useModal, ModalTemplate, ModalContainer } from '@nexus-cross/design-system/modal';
227
227
 
228
- // 토큰 (JS API 필요한 경우만)
228
+ // Tokens (only when JS API is needed)
229
229
  import { getTheme } from '@nexus-cross/tokens';
230
230
  ```
231
231
 
232
- ## 모달 작성 규칙
232
+ ## Modal Writing Rules
233
233
 
234
- 모달 컴포넌트는 **반드시 `ModalTemplate`으로 감싸야 한다.** `<div>`만으로 모달을 만들지 않는다.
234
+ Modal components **MUST be wrapped with `ModalTemplate`.** Do NOT create modals with plain `<div>`.
235
235
 
236
236
  ```tsx
237
- // 올바른 모달
237
+ // CORRECT modal
238
238
  import { ModalTemplate } from '@nexus-cross/design-system/modal';
239
239
 
240
240
  function MyModal({ close, resolve }: { close: () => void; resolve: (value: any) => void }) {
241
241
  return (
242
- <ModalTemplate title="제목" close={close}>
243
- <p className="text-text-secondary">내용</p>
244
- <Button onClick={() => resolve({ confirmed: true })}>확인</Button>
242
+ <ModalTemplate title="Title" close={close}>
243
+ <p className="text-text-secondary">Content</p>
244
+ <Button onClick={() => resolve({ confirmed: true })}>Confirm</Button>
245
245
  </ModalTemplate>
246
246
  );
247
247
  }
248
248
 
249
- // 호출
249
+ // Call
250
250
  const result = await modal({ component: MyModal });
251
251
  ```
252
252
 
253
253
  ```tsx
254
- // 잘못된 모달 ModalTemplate 없이 div 사용
254
+ // WRONG modalusing div without ModalTemplate
255
255
  function MyModal({ close }: { close: () => void }) {
256
256
  return (
257
257
  <div className="p-6 bg-white rounded-lg">
258
- <h2>제목</h2>
259
- <p>내용</p>
258
+ <h2>Title</h2>
259
+ <p>Content</p>
260
260
  </div>
261
261
  );
262
262
  }
263
263
  ```
264
264
 
265
- ## 토스트 사용 규칙
265
+ ## Toast Usage Rules
266
266
 
267
267
  ```tsx
268
268
  import { toast } from '@nexus-cross/design-system';
269
269
 
270
- toast('기본 메시지');
271
- toast.success('성공!');
272
- toast.error('오류가 발생했습니다');
273
- toast.loading('처리 중...');
270
+ toast('Default message');
271
+ toast.success('Success!');
272
+ toast.error('An error occurred');
273
+ toast.loading('Processing...');
274
274
  ```
275
275
 
276
- 루트에 `<Toaster />` 없이 `toast()`를 호출하면 아무것도 표시되지 않는다.
276
+ Calling `toast()` without `<Toaster />` at the root will display nothing.
277
277
 
278
- ## 토큰 사용 예시
278
+ ## Token Usage Examples
279
279
 
280
280
  ```tsx
281
- // 올바른 사용
281
+ // CORRECT usage
282
282
  <div className="bg-bg-default text-text-primary border border-border-default">
283
- <Button variant="primary">확인</Button>
284
- <TextInput placeholder="검색..." />
283
+ <Button variant="primary">Confirm</Button>
284
+ <TextInput placeholder="Search..." />
285
285
  </div>
286
286
 
287
- // 잘못된 사용
287
+ // WRONG usage
288
288
  <div className="bg-white text-gray-900 border border-gray-200">
289
- <button className="bg-green-500 text-white px-4 py-2 rounded">확인</button>
290
- <input className="border border-gray-300 px-3 py-2" placeholder="검색..." />
289
+ <button className="bg-green-500 text-white px-4 py-2 rounded">Confirm</button>
290
+ <input className="border border-gray-300 px-3 py-2" placeholder="Search..." />
291
291
  </div>
292
292
  ```