@ceed/ads 1.29.0 → 1.30.0-next.1

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 (64) hide show
  1. package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
  2. package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
  3. package/dist/components/DataTable/hooks.d.ts +2 -1
  4. package/dist/components/DataTable/utils.d.ts +1 -0
  5. package/dist/components/ProfileMenu/ProfileMenu.d.ts +1 -1
  6. package/dist/components/SearchBar/SearchBar.d.ts +21 -0
  7. package/dist/components/SearchBar/index.d.ts +3 -0
  8. package/dist/components/data-display/Badge.md +39 -71
  9. package/dist/components/data-display/DataTable.md +1 -1
  10. package/dist/components/data-display/InfoSign.md +98 -74
  11. package/dist/components/data-display/Typography.md +97 -363
  12. package/dist/components/feedback/Dialog.md +62 -76
  13. package/dist/components/feedback/Modal.md +44 -259
  14. package/dist/components/feedback/llms.txt +0 -2
  15. package/dist/components/index.d.ts +2 -0
  16. package/dist/components/inputs/Autocomplete.md +107 -356
  17. package/dist/components/inputs/ButtonGroup.md +106 -115
  18. package/dist/components/inputs/Calendar.md +459 -98
  19. package/dist/components/inputs/CurrencyInput.md +5 -183
  20. package/dist/components/inputs/DatePicker.md +431 -108
  21. package/dist/components/inputs/DateRangePicker.md +492 -131
  22. package/dist/components/inputs/FilterMenu.md +19 -169
  23. package/dist/components/inputs/FilterableCheckboxGroup.md +23 -123
  24. package/dist/components/inputs/IconButton.md +88 -137
  25. package/dist/components/inputs/Input.md +0 -5
  26. package/dist/components/inputs/MonthPicker.md +422 -95
  27. package/dist/components/inputs/MonthRangePicker.md +466 -89
  28. package/dist/components/inputs/PercentageInput.md +16 -185
  29. package/dist/components/inputs/RadioButton.md +35 -163
  30. package/dist/components/inputs/RadioTileGroup.md +61 -150
  31. package/dist/components/inputs/SearchBar.md +44 -0
  32. package/dist/components/inputs/Select.md +326 -222
  33. package/dist/components/inputs/Switch.md +376 -136
  34. package/dist/components/inputs/Textarea.md +10 -213
  35. package/dist/components/inputs/Uploader/Uploader.md +66 -145
  36. package/dist/components/inputs/llms.txt +1 -3
  37. package/dist/components/navigation/Breadcrumbs.md +322 -80
  38. package/dist/components/navigation/Dropdown.md +221 -92
  39. package/dist/components/navigation/IconMenuButton.md +502 -40
  40. package/dist/components/navigation/InsetDrawer.md +738 -68
  41. package/dist/components/navigation/Link.md +298 -39
  42. package/dist/components/navigation/Menu.md +285 -92
  43. package/dist/components/navigation/MenuButton.md +448 -55
  44. package/dist/components/navigation/Pagination.md +338 -47
  45. package/dist/components/navigation/ProfileMenu.md +268 -45
  46. package/dist/components/navigation/Stepper.md +28 -160
  47. package/dist/components/navigation/Tabs.md +316 -57
  48. package/dist/components/surfaces/Sheet.md +334 -151
  49. package/dist/index.browser.js +15 -13
  50. package/dist/index.browser.js.map +4 -4
  51. package/dist/index.cjs +313 -291
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.js +450 -372
  54. package/dist/llms.txt +1 -8
  55. package/framer/index.js +1 -1
  56. package/package.json +16 -15
  57. package/dist/chunks/rehype-accent-FZRUD7VI.js +0 -39
  58. package/dist/components/feedback/CircularProgress.md +0 -257
  59. package/dist/components/feedback/Skeleton.md +0 -280
  60. package/dist/components/inputs/FormControl.md +0 -361
  61. package/dist/components/inputs/RadioList.md +0 -241
  62. package/dist/components/inputs/Slider.md +0 -334
  63. package/dist/guides/ThemeProvider.md +0 -116
  64. package/dist/guides/llms.txt +0 -9
@@ -1,15 +1,6 @@
1
1
  # RadioTileGroup
2
2
 
3
- ## Introduction
4
-
5
- RadioTileGroup is a selection component that displays radio options as visually distinct tiles. Unlike a standard radio button list, each option occupies a tile card, making selections more prominent and scannable. This is especially useful for choices that benefit from visual emphasis, such as plan selection, category picking, or preference surveys.
6
-
7
- The component supports flexible layouts (horizontal, grid, vertical), icons via `startDecorator`, three sizes, and built-in form integration with `label`, `helperText`, `error`, and `required` props. It works in both controlled and uncontrolled modes.
8
-
9
- > **Form 구성 시 내장 prop 사용을 권장합니다**
10
- >
11
- > 이 컴포넌트는 `label`, `helperText` 등의 Form 요소를 자체적으로 지원합니다.
12
- > Form을 구성할 때 Typography로 별도의 label이나 helperText를 만드는 대신, 컴포넌트의 내장 prop을 사용하세요.
3
+ RadioTileGroup 컴포넌트는 타일 형태의 라디오 옵션을 표시하는 컴포넌트입니다. 각 옵션이 타일 형태로 나타나며, 사용자가 선택할 수 있습니다.
13
4
 
14
5
  ```tsx
15
6
  <RadioTileGroup
@@ -37,36 +28,18 @@ The component supports flexible layouts (horizontal, grid, vertical), icons via
37
28
  | error | — | — |
38
29
  | required | — | — |
39
30
 
40
- ## Usage
31
+ ## 기본형
32
+
33
+ RadioTileGroup의 기본 형태입니다. 필수 속성 값으로 `options`를 받으며, 각 옵션은 `value`와 `label`을 포함해야 합니다.
41
34
 
42
35
  ```tsx
43
- import { RadioTileGroup } from '@ceed/ads';
44
-
45
- function MyComponent() {
46
- const [value, setValue] = useState('');
47
-
48
- const options = [
49
- { value: 'option1', label: 'Option 1' },
50
- { value: 'option2', label: 'Option 2' },
51
- { value: 'option3', label: 'Option 3' },
52
- ];
53
-
54
- return (
55
- <RadioTileGroup
56
- label="Choose an option"
57
- helperText="Select one of the options below"
58
- options={options}
59
- value={value}
60
- onChange={(e) => setValue(e.target.value)}
61
- useIndicator
62
- />
63
- );
64
- }
36
+ <RadioTileGroup
37
+ options={simpleOptions}
38
+ useIndicator
39
+ />
65
40
  ```
66
41
 
67
- ## Label and Helper Text
68
-
69
- Use the `label` and `helperText` props to add descriptive text above and below the tile group. The `required` prop appends a required indicator to the label.
42
+ `label`과 `helperText`를 함께 사용하면 아래와 같은 모습입니다.
70
43
 
71
44
  ```tsx
72
45
  <RadioTileGroup
@@ -77,6 +50,10 @@ Use the `label` and `helperText` props to add descriptive text above and below t
77
50
  />
78
51
  ```
79
52
 
53
+ ## 필수 값 표시
54
+
55
+ `required` 속성을 사용하여 필수 입력 필드임을 표시할 수 있습니다.
56
+
80
57
  ```tsx
81
58
  <RadioTileGroup
82
59
  options={simpleOptions}
@@ -87,11 +64,11 @@ Use the `label` and `helperText` props to add descriptive text above and below t
87
64
  />
88
65
  ```
89
66
 
90
- ## Layout Options
67
+ ## 레이아웃 옵션
91
68
 
92
69
  ### Flex
93
70
 
94
- Enable the `flex` prop to make tiles stretch and fill all available horizontal space equally.
71
+ `flex` 속성을 활성화하면 RadioTileGroup이 사용 가능한 공간을 균등하게 채웁니다.
95
72
 
96
73
  ```tsx
97
74
  <RadioTileGroup
@@ -103,7 +80,7 @@ Enable the `flex` prop to make tiles stretch and fill all available horizontal s
103
80
 
104
81
  ### Columns
105
82
 
106
- Use the `columns` prop to arrange tiles in a specific number of columns using a grid layout.
83
+ `columns` 속성을 사용하여 타일을 특정 수로 배치할 있습니다.
107
84
 
108
85
  ```tsx
109
86
  <RadioTileGroup
@@ -113,9 +90,9 @@ Use the `columns` prop to arrange tiles in a specific number of columns using a
113
90
  />
114
91
  ```
115
92
 
116
- ### Flex with Columns
93
+ ### Flex Columns 함께 사용
117
94
 
118
- Combine `flex` and `columns` to create a grid where each tile stretches to fill its column width evenly.
95
+ `flex`와 `columns` 속성을 함께 사용하여 타일이 균등하게 공간을 채우면서 특정 수로 배치할 있습니다.
119
96
 
120
97
  ```tsx
121
98
  <Box sx={{
@@ -131,9 +108,9 @@ Flex with Columns
131
108
  </Box>
132
109
  ```
133
110
 
134
- ### Vertical Layout
111
+ ### 수직 레이아웃
135
112
 
136
- Set `columns={1}` to stack tiles vertically. This layout is well-suited for list-style selections like pricing plans or step-by-step options.
113
+ `columns: 1`로 설정하면 타일이 수직으로 쌓이는 레이아웃을 만들 있습니다.
137
114
 
138
115
  ```tsx
139
116
  <Box sx={{
@@ -149,9 +126,9 @@ Vertical Layout (columns: 1)
149
126
  </Box>
150
127
  ```
151
128
 
152
- ## Text Alignment
129
+ ## 정렬 옵션
153
130
 
154
- The `textAlign` prop controls the alignment of content inside each tile. The default is `center`. Set it to `start` for left-aligned content.
131
+ `textAlign` 속성을 사용하여 타일 내부의 콘텐츠 정렬 방식을 설정할 있습니다. 기본값은 `center`이며, `start`로 설정하면 텍스트가 왼쪽으로 정렬됩니다.
155
132
 
156
133
  ```tsx
157
134
  <Box sx={{
@@ -180,9 +157,9 @@ The `textAlign` prop controls the alignment of content inside each tile. The def
180
157
  </Box>
181
158
  ```
182
159
 
183
- ## Sizes
160
+ ## Size
184
161
 
185
- RadioTileGroup supports three sizes: `sm` (default), `md`, and `lg`. Choose the size that best fits the density of your layout.
162
+ RadioTileGroup 가지 크기를 지원합니다: `sm`, `md`, `lg`. 기본값은 `sm`입니다.
186
163
 
187
164
  ```tsx
188
165
  <Box sx={{
@@ -219,9 +196,9 @@ RadioTileGroup supports three sizes: `sm` (default), `md`, and `lg`. Choose the
219
196
  </Box>
220
197
  ```
221
198
 
222
- ## Icons
199
+ ## 아이콘 사용
223
200
 
224
- Add icons to tiles using the `startDecorator` property on each option. Icons help users visually distinguish between choices at a glance.
201
+ 옵션에 `startDecorator` 속성을 사용하여 아이콘을 추가할 있습니다.
225
202
 
226
203
  ```tsx
227
204
  <RadioTileGroup
@@ -242,11 +219,11 @@ Add icons to tiles using the `startDecorator` property on each option. Icons hel
242
219
  />
243
220
  ```
244
221
 
245
- ## State Management
222
+ ## 상태 관리
246
223
 
247
- ### Controlled
224
+ ### Controlled Component
248
225
 
249
- Pass `value` and `onChange` to fully control the selected state from the parent component. This is recommended when the selection participates in form state or triggers side effects.
226
+ RadioTileGroup은 상태 관리를 위한 제어 컴포넌트(Controlled Component)로 사용할 있습니다.
250
227
 
251
228
  ```tsx
252
229
  <Box sx={{
@@ -262,9 +239,9 @@ Selected value: {selectedValue}
262
239
  </Box>
263
240
  ```
264
241
 
265
- ### Uncontrolled
242
+ ### Uncontrolled Component
266
243
 
267
- Use `defaultValue` to set an initial selection without managing state externally. The component tracks its own selection internally.
244
+ 또한 비제어 컴포넌트(Uncontrolled Component)로도 사용 가능합니다.
268
245
 
269
246
  ```tsx
270
247
  <Box sx={{
@@ -297,11 +274,11 @@ Uncontrolled Example (without Indicator)
297
274
  </Box>
298
275
  ```
299
276
 
300
- ## Disabled State
277
+ ## 비활성화 상태
301
278
 
302
- ### Fully Disabled
279
+ ### 전체 비활성화
303
280
 
304
- Set the `disabled` prop on the group to disable all tiles.
281
+ `disabled` 속성을 사용하여 모든 옵션을 비활성화할 있습니다.
305
282
 
306
283
  ```tsx
307
284
  <RadioTileGroup
@@ -310,9 +287,9 @@ Set the `disabled` prop on the group to disable all tiles.
310
287
  />
311
288
  ```
312
289
 
313
- ### Individual Disabled
290
+ ### 개별 옵션 비활성화
314
291
 
315
- Set `disabled: true` on specific option objects to disable only those tiles while keeping the rest interactive.
292
+ 옵션별로 `disabled` 속성을 설정하여 특정 옵션만 비활성화할 있습니다.
316
293
 
317
294
  ```tsx
318
295
  <RadioTileGroup
@@ -330,9 +307,11 @@ Set `disabled: true` on specific option objects to disable only those tiles whil
330
307
  />
331
308
  ```
332
309
 
333
- ## Error State
310
+ ## 상태 표시
311
+
312
+ ### 오류 상태
334
313
 
335
- Use the `error` prop to indicate validation errors. Pair it with `helperText` to communicate the issue to the user.
314
+ `error` 속성을 사용하여 오류 상태를 표시할 있습니다.
336
315
 
337
316
  ```tsx
338
317
  <RadioTileGroup
@@ -344,9 +323,9 @@ Use the `error` prop to indicate validation errors. Pair it with `helperText` to
344
323
  />
345
324
  ```
346
325
 
347
- ### Form Validation Example
326
+ ### 필수 검증 예제
348
327
 
349
- Combine `required`, `error`, and `helperText` to build a complete form validation flow. The example below validates that the user has made a selection before submitting.
328
+ `required` 속성과 함께 오류 상태를 활용하여 필수 검증을 있습니다. 아래는 제출 유효성 검사를 포함한 예제입니다.
350
329
 
351
330
  ```tsx
352
331
  <Stack spacing={2} sx={{
@@ -363,32 +342,11 @@ Combine `required`, `error`, and `helperText` to build a complete form validatio
363
342
  </Stack>
364
343
  ```
365
344
 
366
- ## Common Use Cases
367
-
368
- ### Shipping Method Selection
345
+ ## 활용 사례
369
346
 
370
- Display delivery options with icons so users can choose intuitively.
347
+ ### 배송 방법 선택
371
348
 
372
- ```tsx
373
- import { RadioTileGroup } from '@ceed/ads';
374
- import HomeIcon from '@mui/icons-material/Home';
375
- import LocalShippingIcon from '@mui/icons-material/LocalShipping';
376
- import BusinessIcon from '@mui/icons-material/Business';
377
-
378
- <RadioTileGroup
379
- label="Shipping Method"
380
- helperText="Delivery fees may vary by method."
381
- options={[
382
- { value: 'standard', label: 'Standard', startDecorator: <HomeIcon /> },
383
- { value: 'express', label: 'Express', startDecorator: <LocalShippingIcon /> },
384
- { value: 'business', label: 'Business', startDecorator: <BusinessIcon /> },
385
- ]}
386
- value={selected}
387
- onChange={(e) => setSelected(e.target.value)}
388
- size="md"
389
- useIndicator
390
- />
391
- ```
349
+ RadioTileGroup은 배송 방법을 시각적으로 선택할 수 있는 인터페이스로 활용할 수 있습니다. 각 타일에 아이콘과 함께 배송 방법 정보를 표시하여 사용자가 직관적으로 선택할 수 있도록 합니다.
392
350
 
393
351
  ```tsx
394
352
  <Box sx={{
@@ -411,25 +369,9 @@ import BusinessIcon from '@mui/icons-material/Business';
411
369
  </Box>
412
370
  ```
413
371
 
414
- ### Survey / Preference Selection
372
+ ### 설문조사
415
373
 
416
- Present survey options with icons in a multi-column grid for a clear, scannable layout.
417
-
418
- ```tsx
419
- <RadioTileGroup
420
- label="What type of exercise do you prefer?"
421
- options={[
422
- { value: 'cardio', label: 'Cardio', startDecorator: <DirectionsRunIcon /> },
423
- { value: 'strength', label: 'Strength', startDecorator: <FitnessCenterIcon /> },
424
- { value: 'flexibility', label: 'Flexibility', startDecorator: <SelfImprovementIcon /> },
425
- { value: 'balance', label: 'Balance', startDecorator: <BalanceIcon /> },
426
- ]}
427
- columns={2}
428
- size="md"
429
- value={selected}
430
- onChange={(e) => setSelected(e.target.value)}
431
- />
432
- ```
374
+ 설문조사나 선호도 조사에서 다양한 선택지를 제공하는 활용할 있습니다. 타일에 선택지를 시각적으로 표현하여 사용자가 직관적으로 응답할 수 있도록 합니다.
433
375
 
434
376
  ```tsx
435
377
  <Box sx={{
@@ -456,52 +398,21 @@ Present survey options with icons in a multi-column grid for a clear, scannable
456
398
  </Box>
457
399
  ```
458
400
 
459
- ### Pricing Plan Picker
460
-
461
- Use a vertical layout with `columns={1}` for plan or tier selection.
462
-
463
- ```tsx
464
- <RadioTileGroup
465
- label="Subscription Plan"
466
- helperText="Select your preferred plan"
467
- options={[
468
- { value: 'basic', label: 'Basic Plan', startDecorator: <AttachMoneyIcon /> },
469
- { value: 'pro', label: 'Pro Plan', startDecorator: <AttachMoneyIcon /> },
470
- { value: 'premium', label: 'Premium Plan', startDecorator: <StarIcon /> },
471
- ]}
472
- columns={1}
473
- size="md"
474
- useIndicator
475
- value={selected}
476
- onChange={(e) => setSelected(e.target.value)}
477
- />
478
- ```
479
-
480
- ## Best Practices
401
+ ### 검증과 함께 사용
481
402
 
482
- 1. **Use built-in form props instead of external labels.** The component's `label`, `helperText`, `required`, and `error` props ensure consistent layout and accessibility. Avoid wrapping with separate Typography elements.
403
+ 검증 기능과 함께 사용하여 사용자가 필수 항목을 선택했는지 확인할 있습니다.
483
404
 
484
405
  ```tsx
485
- // Recommended
486
- <RadioTileGroup label="Select option" helperText="Required field" required />
487
-
488
- // ❌ Avoid
489
- <Typography>Select option</Typography>
490
- <RadioTileGroup options={options} />
491
- <Typography color="danger">Required field</Typography>
406
+ <Stack spacing={2} sx={{
407
+ width: '100%',
408
+ maxWidth: 500
409
+ }}>
410
+ <RadioTileGroup options={simpleOptions} value={selectedValue} onChange={handleChange} label="Choose your preferred option" helperText={error ? 'Please select an option' : 'This selection is required'} error={error} useIndicator={true} required={true} />
411
+ <Box sx={{
412
+ display: 'flex',
413
+ justifyContent: 'flex-end'
414
+ }}>
415
+ <Button onClick={handleSubmit}>Submit</Button>
416
+ </Box>
417
+ </Stack>
492
418
  ```
493
-
494
- 2. **Choose the right layout for the number of options.** Use the default horizontal flow for 2-4 options. Use `columns` for 5+ options. Use `columns={1}` when each option has long labels or descriptions.
495
-
496
- 3. **Prefer controlled mode in forms.** When RadioTileGroup is part of a form with validation or submission logic, use `value` and `onChange` for predictable state management.
497
-
498
- 4. **Add icons only when they aid comprehension.** Icons via `startDecorator` are helpful for visually distinct categories (e.g., shipping methods). Avoid decorating every option if icons do not add meaning.
499
-
500
- 5. **Always provide an error message.** When `error` is true, update `helperText` to explain the validation issue so users know how to fix it.
501
-
502
- ## Accessibility
503
-
504
- - RadioTileGroup renders a `<fieldset>` with a `<legend>` derived from the `label` prop, providing proper grouping for screen readers.
505
- - Each tile is backed by a native `<input type="radio">`, ensuring full keyboard navigation (arrow keys to move between options, Space/Enter to select).
506
- - The `disabled` prop correctly applies `aria-disabled` semantics to prevent interaction while keeping elements discoverable by assistive technologies.
507
- - When `error` is set, pair it with descriptive `helperText` so that screen readers can announce the validation message via `aria-describedby`.
@@ -0,0 +1,44 @@
1
+ # SearchBar
2
+
3
+ 검색바에서 검색 키워드를 선택할 수 있는 Select를 가질 수 있는 검색 컴포넌트입니다.
4
+
5
+ > 💡 **Placeholder 표시 가이드**
6
+ >
7
+ > 검색 키워드가 있는 SearchBar는 `options`의 각 옵션에 `placeholder` 필드를 추가하여 사용자가 어떤 값을 입력해야 하는지 안내해 줄 수 있습니다. (사용자에게 더 유익한 정보를 표시해 주기 위함)
8
+ >
9
+ > - \[예시] Account #일 경우: `e.g. 1234567`
10
+ > - \[예시] Jira Issue #일 경우: `e.g. PROC-1234`
11
+
12
+ ```tsx
13
+ <SearchBar options={SAMPLE_OPTIONS} value={value} onChange={setValue} />
14
+ ```
15
+
16
+ | Field | Description | Default |
17
+ | ---------- | ----------- | ------- |
18
+ | hideSelect | — | — |
19
+ | options | — | — |
20
+ | value | — | — |
21
+ | onChange | — | — |
22
+ | onSearch | — | — |
23
+
24
+ ## Select 없이 사용
25
+
26
+ `hideSelect` prop을 사용하여 Select를 숨길 수 있습니다.
27
+
28
+ ```tsx
29
+ <SearchBar hideSelect options={SAMPLE_OPTIONS} value={value} onChange={setValue} />
30
+ ```
31
+
32
+ ## onSearch
33
+
34
+ 검색 버튼 클릭 또는 Enter 입력 시 `onSearch`가 호출됩니다.
35
+
36
+ ```tsx
37
+ <Stack gap={2}>
38
+ <SearchBar options={SAMPLE_OPTIONS} value={value} onChange={setValue} onSearch={setLastSearch} />
39
+ <Typography level="body-sm">value: "{value}"</Typography>
40
+ {lastSearch && <Typography level="body-sm">
41
+ onSearch: [{lastSearch.selectValue}] "{lastSearch.inputValue}"
42
+ </Typography>}
43
+ </Stack>
44
+ ```