@nexus-cross/design-system 1.0.1 → 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 (74) 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-5JHN4FCY.mjs → chunk-K2TBLM3F.mjs} +1 -4
  6. package/dist/chunks/{chunk-MTX7GD3H.js → chunk-PEIEVKD5.js} +1 -4
  7. package/dist/chunks/chunk-XMG7ZEYY.mjs +5 -0
  8. package/dist/data-list.js +2 -2
  9. package/dist/data-list.mjs +1 -1
  10. package/dist/error-boundary.d.mts +1 -1
  11. package/dist/error-boundary.d.ts +1 -1
  12. package/dist/index.js +2 -2
  13. package/dist/index.mjs +1 -1
  14. package/dist/schemas/_all.json +480 -480
  15. package/dist/schemas/accordion.json +12 -12
  16. package/dist/schemas/avatar.json +9 -9
  17. package/dist/schemas/button.json +13 -13
  18. package/dist/schemas/carousel.json +6 -6
  19. package/dist/schemas/carouselButton.json +3 -3
  20. package/dist/schemas/carouselDots.json +2 -2
  21. package/dist/schemas/carouselSlide.json +3 -3
  22. package/dist/schemas/checkBox.json +15 -15
  23. package/dist/schemas/chip.json +9 -9
  24. package/dist/schemas/clientOnly.json +3 -3
  25. package/dist/schemas/countdown.json +8 -8
  26. package/dist/schemas/counter.json +11 -11
  27. package/dist/schemas/dataList.json +10 -10
  28. package/dist/schemas/divider.json +6 -6
  29. package/dist/schemas/drawer.json +8 -8
  30. package/dist/schemas/drawerClose.json +4 -4
  31. package/dist/schemas/drawerContent.json +7 -7
  32. package/dist/schemas/drawerDescription.json +3 -3
  33. package/dist/schemas/drawerTitle.json +3 -3
  34. package/dist/schemas/drawerTrigger.json +4 -4
  35. package/dist/schemas/ellipsis.json +9 -9
  36. package/dist/schemas/errorBoundary.json +4 -4
  37. package/dist/schemas/infiniteScroll.json +12 -12
  38. package/dist/schemas/marquee.json +8 -8
  39. package/dist/schemas/modalCall.json +20 -20
  40. package/dist/schemas/modalTemplate.json +26 -26
  41. package/dist/schemas/numberInput.json +19 -19
  42. package/dist/schemas/pagination.json +8 -8
  43. package/dist/schemas/popover.json +12 -12
  44. package/dist/schemas/radioGroup.json +12 -12
  45. package/dist/schemas/radioItem.json +7 -7
  46. package/dist/schemas/select.json +11 -11
  47. package/dist/schemas/selectItem.json +5 -5
  48. package/dist/schemas/skeleton.json +8 -8
  49. package/dist/schemas/spinner.json +6 -6
  50. package/dist/schemas/switch.json +10 -10
  51. package/dist/schemas/tab.json +15 -15
  52. package/dist/schemas/table.json +14 -14
  53. package/dist/schemas/tableRow.json +5 -5
  54. package/dist/schemas/tdColumn.json +17 -17
  55. package/dist/schemas/textArea.json +18 -18
  56. package/dist/schemas/textInput.json +25 -25
  57. package/dist/schemas/themeProvider.json +10 -10
  58. package/dist/schemas/toastOptions.json +17 -17
  59. package/dist/schemas/toaster.json +12 -12
  60. package/dist/schemas/tooltip.json +10 -10
  61. package/dist/schemas/virtualGrid.json +11 -11
  62. package/dist/schemas/virtualList.json +10 -10
  63. package/dist/schemas.js +475 -475
  64. package/dist/schemas.mjs +475 -475
  65. package/dist/styles/layer.js +2 -2
  66. package/dist/styles/layer.mjs +1 -1
  67. package/dist/styles.css +28 -15
  68. package/dist/styles.js +2 -2
  69. package/dist/styles.layered.css +28 -15
  70. package/dist/styles.mjs +1 -1
  71. package/package.json +8 -6
  72. package/scripts/setup-cursor-rules.cjs +6 -6
  73. package/dist/chunks/chunk-GMGG4VZM.mjs +0 -5
  74. package/dist/chunks/chunk-N75GAGAG.js +0 -7
package/dist/schemas.mjs CHANGED
@@ -3,432 +3,432 @@ import { z } from 'zod';
3
3
 
4
4
  var buttonPropsSchema = z.object({
5
5
  semantic: z.enum(["primary", "secondary", "normal", "danger"]).default("primary").describe(
6
- "\uC0C9\uC0C1 \uD14C\uB9C8 (primary=\uC8FC\uC694, secondary=\uBCF4\uC870, normal=\uC911\uB9BD, danger=\uC704\uD5D8)"
6
+ "Color theme (primary=main, secondary=sub, normal=neutral, danger=danger)"
7
7
  ),
8
8
  variant: z.enum(["contained", "outlined", "subtle", "ghost"]).default("contained").describe(
9
- "\uC2DC\uAC01 \uC2A4\uD0C0\uC77C (contained=\uCC44\uC6C0, outlined=\uD14C\uB450\uB9AC, subtle=\uC5F0\uD55C\uBC30\uACBD, ghost=\uD22C\uBA85)"
9
+ "Visual style (contained=filled, outlined=border, subtle=light bg, ghost=transparent)"
10
10
  ),
11
- size: z.enum(["xl", "lg", "md", "sm"]).default("md").describe("\uD06C\uAE30"),
12
- radius: z.enum(["default", "circle"]).default("default").describe("\uBAA8\uC11C\uB9AC (default=size\uBCC4 radius, circle=pill \uD615\uD0DC)"),
13
- asChild: z.boolean().optional().describe("true\uBA74 \uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1 (Slot \uD328\uD134)"),
14
- detectDoubleClick: z.boolean().optional().describe("500ms \uB0B4 \uB354\uBE14 \uD074\uB9AD \uBC29\uC9C0"),
15
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131 (aria-disabled \uC790\uB3D9)"),
16
- children: z.any().optional().describe("\uBC84\uD2BC \uB0B4\uC6A9 (ReactNode)"),
17
- onClick: z.any().optional().describe("\uD074\uB9AD \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC"),
18
- type: z.enum(["button", "submit", "reset"]).optional().describe("HTML button type (\uAE30\uBCF8: button)"),
19
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
20
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
11
+ size: z.enum(["xl", "lg", "md", "sm"]).default("md").describe("Size"),
12
+ radius: z.enum(["default", "circle"]).default("default").describe("Corner radius (default=size-based radius, circle=pill shape)"),
13
+ asChild: z.boolean().optional().describe("If true, renders as child element (Slot pattern)"),
14
+ detectDoubleClick: z.boolean().optional().describe("Prevent double click within 500ms"),
15
+ disabled: z.boolean().optional().describe("Disabled (auto aria-disabled)"),
16
+ children: z.any().optional().describe("Button content (ReactNode)"),
17
+ onClick: z.any().optional().describe("Click event handler"),
18
+ type: z.enum(["button", "submit", "reset"]).optional().describe("HTML button type (default: button)"),
19
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
20
+ className: z.string().optional().describe("Style override")
21
21
  }).describe(
22
- "\uC778\uD130\uB799\uD2F0\uBE0C \uBC84\uD2BC. semantic(\uC0C9\uC0C1)\xD7variant(\uC2A4\uD0C0\uC77C) 2\uCD95 \uC2DC\uC2A4\uD15C. asChild\uB85C \uB80C\uB354\uB9C1 \uC694\uC18C \uBCC0\uACBD \uAC00\uB2A5."
22
+ "Interactive button. semantic(color) x variant(style) 2-axis system. Rendering element changeable via asChild."
23
23
  );
24
24
  var textInputPropsSchema = z.object({
25
- size: z.enum(["md", "lg", "xl"]).default("md").describe("\uD06C\uAE30"),
26
- error: z.boolean().optional().describe("\uC5D0\uB7EC \uC0C1\uD0DC (aria-invalid \uC790\uB3D9)"),
27
- prefixIcon: z.any().optional().describe("\uC55E\uCABD \uC544\uC774\uCF58 (ReactNode)"),
28
- suffixIcon: z.any().optional().describe("\uB4A4\uCABD \uC544\uC774\uCF58 (ReactNode)"),
29
- label: z.any().optional().describe("\uC785\uB825 \uD544\uB4DC \uC704 \uB77C\uBCA8 (ReactNode)"),
30
- description: z.any().optional().describe("\uC785\uB825 \uD544\uB4DC \uC544\uB798 \uC124\uBA85 \uD14D\uC2A4\uD2B8 (ReactNode, error \uC2DC \uBE68\uAC04\uC0C9)"),
31
- showCount: z.boolean().optional().describe("\uAE00\uC790 \uC218 \uCE74\uC6B4\uD2B8 \uD45C\uC2DC (maxLength \uD544\uC694)"),
32
- maxLength: z.number().optional().describe("\uCD5C\uB300 \uAE00\uC790 \uC218"),
33
- clearable: z.boolean().optional().describe("X \uBC84\uD2BC\uC73C\uB85C \uC785\uB825\uAC12 \uCD08\uAE30\uD654"),
34
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
35
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
36
- readOnly: z.boolean().optional().describe("\uC77D\uAE30 \uC804\uC6A9"),
37
- value: z.string().optional().describe("\uC785\uB825\uAC12 (\uC81C\uC5B4 \uBAA8\uB4DC)"),
38
- defaultValue: z.string().optional().describe("\uCD08\uAE30\uAC12 (\uBE44\uC81C\uC5B4 \uBAA8\uB4DC)"),
39
- type: z.string().optional().describe("input type (text, password, email, url \uB4F1)"),
40
- name: z.string().optional().describe("form \uD544\uB4DC\uBA85"),
41
- id: z.string().optional().describe("\uC694\uC18C ID (label htmlFor \uC5F0\uACB0\uC6A9)"),
42
- autoFocus: z.boolean().optional().describe("\uC790\uB3D9 \uD3EC\uCEE4\uC2A4"),
43
- autoComplete: z.string().optional().describe("\uC790\uB3D9\uC644\uC131 \uD78C\uD2B8 (on, off, email \uB4F1)"),
44
- onValueChange: z.any().optional().describe("\uAC12 \uBCC0\uACBD \uCF5C\uBC31 (value: string) => void"),
45
- onChange: z.any().optional().describe("\uB124\uC774\uD2F0\uBE0C change \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC"),
46
- onBlur: z.any().optional().describe("\uD3EC\uCEE4\uC2A4 \uD574\uC81C \uCF5C\uBC31"),
47
- onFocus: z.any().optional().describe("\uD3EC\uCEE4\uC2A4 \uCF5C\uBC31"),
48
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
49
- }).describe("\uD14D\uC2A4\uD2B8 \uC785\uB825 \uD544\uB4DC. label, description, prefix/suffix \uC544\uC774\uCF58, clearable, \uAE00\uC790 \uC218 \uCE74\uC6B4\uD2B8 \uC9C0\uC6D0.");
25
+ size: z.enum(["md", "lg", "xl"]).default("md").describe("Size"),
26
+ error: z.boolean().optional().describe("Error state (auto aria-invalid)"),
27
+ prefixIcon: z.any().optional().describe("Prefix icon (ReactNode)"),
28
+ suffixIcon: z.any().optional().describe("Suffix icon (ReactNode)"),
29
+ label: z.any().optional().describe("Label above input field (ReactNode)"),
30
+ description: z.any().optional().describe("Description below input field (ReactNode, red on error)"),
31
+ showCount: z.boolean().optional().describe("Show character count (requires maxLength)"),
32
+ maxLength: z.number().optional().describe("Maximum character count"),
33
+ clearable: z.boolean().optional().describe("Clear input via X button"),
34
+ placeholder: z.string().optional().describe("Placeholder"),
35
+ disabled: z.boolean().optional().describe("Disabled"),
36
+ readOnly: z.boolean().optional().describe("Read-only"),
37
+ value: z.string().optional().describe("Input value (controlled mode)"),
38
+ defaultValue: z.string().optional().describe("Initial value (uncontrolled mode)"),
39
+ type: z.string().optional().describe("Input type (text, password, email, url, etc.)"),
40
+ name: z.string().optional().describe("Form field name"),
41
+ id: z.string().optional().describe("Element ID (for label htmlFor binding)"),
42
+ autoFocus: z.boolean().optional().describe("Auto focus"),
43
+ autoComplete: z.string().optional().describe("Autocomplete hint (on, off, email, etc.)"),
44
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
45
+ onChange: z.any().optional().describe("Native change event handler"),
46
+ onBlur: z.any().optional().describe("Blur callback"),
47
+ onFocus: z.any().optional().describe("Focus callback"),
48
+ className: z.string().optional().describe("Style override")
49
+ }).describe("Text input field. Supports label, description, prefix/suffix icons, clearable, character counter.");
50
50
  var textAreaPropsSchema = z.object({
51
- error: z.boolean().optional().describe("\uC5D0\uB7EC \uC0C1\uD0DC (aria-invalid \uC790\uB3D9)"),
52
- showCount: z.boolean().optional().describe("\uAE00\uC790 \uC218 \uD45C\uC2DC (maxLength \uD544\uC694)"),
53
- maxLength: z.number().optional().describe("\uCD5C\uB300 \uAE00\uC790 \uC218"),
54
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
55
- rows: z.number().optional().describe("\uD45C\uC2DC \uC904 \uC218"),
56
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
57
- readOnly: z.boolean().optional().describe("\uC77D\uAE30 \uC804\uC6A9"),
58
- value: z.string().optional().describe("\uC785\uB825\uAC12 (\uC81C\uC5B4 \uBAA8\uB4DC)"),
59
- defaultValue: z.string().optional().describe("\uCD08\uAE30\uAC12 (\uBE44\uC81C\uC5B4 \uBAA8\uB4DC)"),
60
- name: z.string().optional().describe("form \uD544\uB4DC\uBA85"),
61
- id: z.string().optional().describe("\uC694\uC18C ID"),
62
- autoFocus: z.boolean().optional().describe("\uC790\uB3D9 \uD3EC\uCEE4\uC2A4"),
63
- onValueChange: z.any().optional().describe("\uAC12 \uBCC0\uACBD \uCF5C\uBC31 (value: string) => void"),
64
- onChange: z.any().optional().describe("\uB124\uC774\uD2F0\uBE0C change \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC"),
65
- onBlur: z.any().optional().describe("\uD3EC\uCEE4\uC2A4 \uD574\uC81C \uCF5C\uBC31"),
66
- onFocus: z.any().optional().describe("\uD3EC\uCEE4\uC2A4 \uCF5C\uBC31"),
67
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
68
- }).describe("\uC5EC\uB7EC \uC904 \uD14D\uC2A4\uD2B8 \uC785\uB825. \uAE00\uC790 \uC218 \uCE74\uC6B4\uD130 \uB0B4\uC7A5.");
51
+ error: z.boolean().optional().describe("Error state (auto aria-invalid)"),
52
+ showCount: z.boolean().optional().describe("Show character count (requires maxLength)"),
53
+ maxLength: z.number().optional().describe("Maximum character count"),
54
+ placeholder: z.string().optional().describe("Placeholder"),
55
+ rows: z.number().optional().describe("Visible row count"),
56
+ disabled: z.boolean().optional().describe("Disabled"),
57
+ readOnly: z.boolean().optional().describe("Read-only"),
58
+ value: z.string().optional().describe("Input value (controlled mode)"),
59
+ defaultValue: z.string().optional().describe("Initial value (uncontrolled mode)"),
60
+ name: z.string().optional().describe("Form field name"),
61
+ id: z.string().optional().describe("Element ID"),
62
+ autoFocus: z.boolean().optional().describe("Auto focus"),
63
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
64
+ onChange: z.any().optional().describe("Native change event handler"),
65
+ onBlur: z.any().optional().describe("Blur callback"),
66
+ onFocus: z.any().optional().describe("Focus callback"),
67
+ className: z.string().optional().describe("Style override")
68
+ }).describe("Multi-line text input. Built-in character counter.");
69
69
  var selectPropsSchema = z.object({
70
- value: z.string().optional().describe("\uC120\uD0DD\uB41C \uAC12"),
71
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
72
- variant: z.enum(["default", "outline"]).default("default").describe("\uD2B8\uB9AC\uAC70 \uC2A4\uD0C0\uC77C"),
73
- size: z.enum(["sm", "md", "lg", "full"]).default("full").describe("\uB108\uBE44"),
74
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
75
- onValueChange: z.any().optional().describe("\uAC12 \uBCC0\uACBD \uCF5C\uBC31 (value: string) => void"),
76
- displayComponent: z.any().optional().describe("\uD2B8\uB9AC\uAC70\uC5D0 \uCEE4\uC2A4\uD140 \uD45C\uC2DC (ReactNode)"),
77
- children: z.any().describe("SelectItem \uBAA9\uB85D (ReactNode, \uD544\uC218)"),
78
- className: z.string().optional().describe("\uB798\uD37C \uC2A4\uD0C0\uC77C"),
79
- triggerClassName: z.string().optional().describe("\uD2B8\uB9AC\uAC70 \uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
80
- }).describe("\uB4DC\uB86D\uB2E4\uC6B4 \uC120\uD0DD. Radix Select \uAE30\uBC18. SelectItem\uACFC \uD568\uAED8 \uC0AC\uC6A9.");
70
+ value: z.string().optional().describe("Selected value"),
71
+ placeholder: z.string().optional().describe("Placeholder"),
72
+ variant: z.enum(["default", "outline"]).default("default").describe("Trigger style"),
73
+ size: z.enum(["sm", "md", "lg", "full"]).default("full").describe("Width"),
74
+ disabled: z.boolean().optional().describe("Disabled"),
75
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
76
+ displayComponent: z.any().optional().describe("Custom display in trigger (ReactNode)"),
77
+ children: z.any().describe("SelectItem list (ReactNode, required)"),
78
+ className: z.string().optional().describe("Wrapper style"),
79
+ triggerClassName: z.string().optional().describe("Trigger style override")
80
+ }).describe("Dropdown select. Based on Radix Select. Used with SelectItem.");
81
81
  var selectItemPropsSchema = z.object({
82
- value: z.string().describe("\uD56D\uBAA9 \uAC12"),
83
- children: z.any().describe("\uD56D\uBAA9 \uB0B4\uC6A9 (ReactNode, \uD544\uC218)"),
84
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
85
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
86
- }).describe("Select \uB0B4 \uAC1C\uBCC4 \uC635\uC158.");
82
+ value: z.string().describe("Item value"),
83
+ children: z.any().describe("Item content (ReactNode, required)"),
84
+ disabled: z.boolean().optional().describe("Disabled"),
85
+ className: z.string().optional().describe("Style override")
86
+ }).describe("Individual option within Select.");
87
87
  var checkBoxPropsSchema = z.object({
88
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
89
- shape: z.enum(["square", "round"]).default("square").describe("\uD615\uD0DC"),
90
- checked: z.boolean().optional().describe("\uCCB4\uD06C \uC0C1\uD0DC"),
91
- indeterminate: z.boolean().optional().describe('\uBD88\uD655\uC815 \uC0C1\uD0DC (aria-checked="mixed")'),
92
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
93
- readOnly: z.boolean().optional().describe("\uC77D\uAE30 \uC804\uC6A9"),
94
- label: z.any().optional().describe("\uB77C\uBCA8 \uD14D\uC2A4\uD2B8 (ReactNode)"),
95
- children: z.any().optional().describe("\uB77C\uBCA8 \uB300\uCCB4 \uCF58\uD150\uCE20 (ReactNode)"),
96
- name: z.string().optional().describe("form \uD544\uB4DC\uBA85"),
97
- id: z.string().optional().describe("\uC694\uC18C ID"),
98
- value: z.string().optional().describe("form \uC804\uC1A1 \uC2DC \uAC12"),
99
- onCheckedChange: z.any().optional().describe("\uCCB4\uD06C \uC0C1\uD0DC \uBCC0\uACBD \uCF5C\uBC31 (checked: boolean) => void"),
100
- onChange: z.any().optional().describe("\uB124\uC774\uD2F0\uBE0C change \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC"),
101
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
102
- }).describe("\uCCB4\uD06C\uBC15\uC2A4. \uB124\uC774\uD2F0\uBE0C input \uAE30\uBC18, square/round \uD615\uD0DC \uC9C0\uC6D0.");
88
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
89
+ shape: z.enum(["square", "round"]).default("square").describe("Shape"),
90
+ checked: z.boolean().optional().describe("Checked state"),
91
+ indeterminate: z.boolean().optional().describe('Indeterminate state (aria-checked="mixed")'),
92
+ disabled: z.boolean().optional().describe("Disabled"),
93
+ readOnly: z.boolean().optional().describe("Read-only"),
94
+ label: z.any().optional().describe("Label text (ReactNode)"),
95
+ children: z.any().optional().describe("Label alternative content (ReactNode)"),
96
+ name: z.string().optional().describe("Form field name"),
97
+ id: z.string().optional().describe("Element ID"),
98
+ value: z.string().optional().describe("Value for form submission"),
99
+ onCheckedChange: z.any().optional().describe("Checked state change callback (checked: boolean) => void"),
100
+ onChange: z.any().optional().describe("Native change event handler"),
101
+ className: z.string().optional().describe("Style override")
102
+ }).describe("Checkbox. Native input-based, supports square/round shapes.");
103
103
  var radioGroupPropsSchema = z.object({
104
- name: z.string().describe("form name (\uD544\uC218)"),
105
- value: z.string().optional().describe("\uC120\uD0DD\uB41C \uAC12 (\uC81C\uC5B4)"),
106
- defaultValue: z.string().optional().describe("\uCD08\uAE30\uAC12 (\uBE44\uC81C\uC5B4)"),
107
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
108
- orientation: z.enum(["horizontal", "vertical"]).default("vertical").describe("\uBC30\uCE58 \uBC29\uD5A5"),
109
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
110
- children: z.any().describe("RadioItem \uBAA9\uB85D (ReactNode, \uD544\uC218)"),
111
- "aria-label": z.string().optional().describe("\uC811\uADFC\uC131 \uB77C\uBCA8"),
112
- "aria-labelledby": z.string().optional().describe("\uC811\uADFC\uC131 \uB77C\uBCA8 \uCC38\uC870 ID"),
113
- onValueChange: z.any().optional().describe("\uAC12 \uBCC0\uACBD \uCF5C\uBC31 (value: string) => void"),
114
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
115
- }).describe("\uB77C\uB514\uC624 \uADF8\uB8F9. RadioItem\uACFC \uD568\uAED8 \uC0AC\uC6A9.");
104
+ name: z.string().describe("Form name (required)"),
105
+ value: z.string().optional().describe("Selected value (controlled)"),
106
+ defaultValue: z.string().optional().describe("Initial value (uncontrolled)"),
107
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
108
+ orientation: z.enum(["horizontal", "vertical"]).default("vertical").describe("Layout direction"),
109
+ disabled: z.boolean().optional().describe("Disabled"),
110
+ children: z.any().describe("RadioItem list (ReactNode, required)"),
111
+ "aria-label": z.string().optional().describe("Accessibility label"),
112
+ "aria-labelledby": z.string().optional().describe("Accessibility label reference ID"),
113
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
114
+ className: z.string().optional().describe("Style override")
115
+ }).describe("Radio group. Used with RadioItem.");
116
116
  var radioItemPropsSchema = z.object({
117
- value: z.string().describe("\uD56D\uBAA9 \uAC12 (\uD544\uC218)"),
118
- size: z.enum(["sm", "md"]).optional().describe("\uD06C\uAE30 (\uADF8\uB8F9\uBCF4\uB2E4 \uC6B0\uC120)"),
119
- label: z.any().optional().describe("\uB77C\uBCA8 \uD14D\uC2A4\uD2B8 (ReactNode)"),
120
- children: z.any().optional().describe("\uB77C\uBCA8 \uB300\uCCB4 \uCF58\uD150\uCE20 (ReactNode)"),
121
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
122
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
123
- }).describe("RadioGroup \uB0B4 \uAC1C\uBCC4 \uC635\uC158.");
117
+ value: z.string().describe("Item value (required)"),
118
+ size: z.enum(["sm", "md"]).optional().describe("Size (overrides group)"),
119
+ label: z.any().optional().describe("Label text (ReactNode)"),
120
+ children: z.any().optional().describe("Label alternative content (ReactNode)"),
121
+ disabled: z.boolean().optional().describe("Disabled"),
122
+ className: z.string().optional().describe("Style override")
123
+ }).describe("Individual option within RadioGroup.");
124
124
  var switchPropsSchema = z.object({
125
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
126
- checked: z.boolean().optional().describe("on/off \uC0C1\uD0DC"),
127
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
128
- readOnly: z.boolean().optional().describe("\uC77D\uAE30 \uC804\uC6A9"),
129
- name: z.string().optional().describe("form \uD544\uB4DC\uBA85"),
130
- id: z.string().optional().describe("\uC694\uC18C ID"),
131
- onCheckedChange: z.any().optional().describe("\uD1A0\uAE00 \uC0C1\uD0DC \uBCC0\uACBD \uCF5C\uBC31 (checked: boolean) => void"),
132
- onChange: z.any().optional().describe("\uB124\uC774\uD2F0\uBE0C change \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC (ChangeEvent)"),
133
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
134
- }).describe('\uD1A0\uAE00 \uC2A4\uC704\uCE58. \uB124\uC774\uD2F0\uBE0C checkbox \uAE30\uBC18, role="switch".');
125
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
126
+ checked: z.boolean().optional().describe("On/off state"),
127
+ disabled: z.boolean().optional().describe("Disabled"),
128
+ readOnly: z.boolean().optional().describe("Read-only"),
129
+ name: z.string().optional().describe("Form field name"),
130
+ id: z.string().optional().describe("Element ID"),
131
+ onCheckedChange: z.any().optional().describe("Toggle state change callback (checked: boolean) => void"),
132
+ onChange: z.any().optional().describe("Native change event handler (ChangeEvent)"),
133
+ className: z.string().optional().describe("Style override")
134
+ }).describe('Toggle switch. Native checkbox-based, role="switch".');
135
135
  var chipPropsSchema = z.object({
136
- variant: z.enum(["default", "filled", "outline", "accent"]).default("default").describe("\uC2A4\uD0C0\uC77C"),
137
- size: z.enum(["sm", "md", "lg"]).default("md").describe("\uD06C\uAE30"),
138
- asChild: z.boolean().optional().describe("true\uBA74 \uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1 (Slot \uD328\uD134)"),
139
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131 (aria-disabled \uC790\uB3D9)"),
140
- children: z.any().optional().describe("\uCE69 \uB0B4\uC6A9 (ReactNode)"),
141
- onClose: z.any().optional().describe("\uB2EB\uAE30 \uBC84\uD2BC \uD074\uB9AD \uCF5C\uBC31 (e: MouseEvent) => void. \uC804\uB2EC \uC2DC X \uBC84\uD2BC \uC790\uB3D9 \uD45C\uC2DC"),
142
- onClick: z.any().optional().describe("\uD074\uB9AD \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC"),
143
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
144
- }).describe("\uCE69/\uD0DC\uADF8/\uBC43\uC9C0. onClose prop\uC73C\uB85C \uB2EB\uAE30 \uBC84\uD2BC \uD45C\uC2DC.");
136
+ variant: z.enum(["default", "filled", "outline", "accent"]).default("default").describe("Style"),
137
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Size"),
138
+ asChild: z.boolean().optional().describe("If true, renders as child element (Slot pattern)"),
139
+ disabled: z.boolean().optional().describe("Disabled (auto aria-disabled)"),
140
+ children: z.any().optional().describe("Chip content (ReactNode)"),
141
+ onClose: z.any().optional().describe("Close button click callback (e: MouseEvent) => void. Shows X button when provided"),
142
+ onClick: z.any().optional().describe("Click event handler"),
143
+ className: z.string().optional().describe("Style override")
144
+ }).describe("Chip/tag/badge. Close button displayed via onClose prop.");
145
145
  var spinnerPropsSchema = z.object({
146
- size: z.number().default(20).describe("px \uD06C\uAE30"),
147
- color: z.string().optional().describe("\uC0C9\uC0C1 (CSS color \uAC12, \uAE30\uBCF8 currentColor)"),
148
- "aria-label": z.string().default("Loading").describe("\uC811\uADFC\uC131 \uB77C\uBCA8"),
149
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
150
- className: z.string().optional().describe("\uC0C9\uC0C1 \uB4F1 \uC624\uBC84\uB77C\uC774\uB4DC")
151
- }).describe('\uB85C\uB529 \uC778\uB514\uCF00\uC774\uD130. SVG \uAE30\uBC18. role="status" \uB0B4\uC7A5.');
146
+ size: z.number().default(20).describe("Size in px"),
147
+ color: z.string().optional().describe("Color (CSS color value, default currentColor)"),
148
+ "aria-label": z.string().default("Loading").describe("Accessibility label"),
149
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
150
+ className: z.string().optional().describe("Color override etc.")
151
+ }).describe('Loading indicator. SVG-based. Built-in role="status".');
152
152
  var skeletonPropsSchema = z.object({
153
- as: z.enum(["div", "span"]).default("div").describe("\uB80C\uB354\uB9C1 \uD0DC\uADF8"),
154
- circle: z.boolean().default(false).describe("\uC6D0\uD615 \uC2A4\uCF08\uB808\uD1A4 (rounded-full)"),
155
- width: z.union([z.string(), z.number()]).optional().describe("\uB108\uBE44 (\uC608: '100px', '50%', 200)"),
156
- height: z.union([z.string(), z.number()]).optional().describe("\uB192\uC774 (\uC608: '16px', 40)"),
157
- children: z.any().optional().describe("\uB0B4\uBD80 \uCF58\uD150\uCE20 (\uB85C\uB529 \uC644\uB8CC \uC2DC \uD45C\uC2DC, \uC2E4\uC81C \uD06C\uAE30 \uC720\uC9C0\uC6A9)"),
158
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
159
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
153
+ as: z.enum(["div", "span"]).default("div").describe("Rendered tag"),
154
+ circle: z.boolean().default(false).describe("Circle skeleton (rounded-full)"),
155
+ width: z.union([z.string(), z.number()]).optional().describe("Width (e.g. '100px', '50%', 200)"),
156
+ height: z.union([z.string(), z.number()]).optional().describe("Height (e.g. '16px', 40)"),
157
+ children: z.any().optional().describe("Inner content (shown when loaded, maintains actual size)"),
158
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
159
+ className: z.string().optional().describe("Style override")
160
160
  }).describe(
161
- "\uC2A4\uCF08\uB808\uD1A4 \uB85C\uB529 \uD50C\uB808\uC774\uC2A4\uD640\uB354. className\uC73C\uB85C \uD06C\uAE30/\uBAA8\uC591 \uC870\uC808. children\uC774 \uC788\uC73C\uBA74 \uD22C\uBA85\uD558\uAC8C \uAC10\uC2F8\uC11C \uC2E4\uC81C \uD06C\uAE30 \uC720\uC9C0."
161
+ "Skeleton loading placeholder. Size/shape via className. With children, wraps transparently to maintain actual size."
162
162
  );
163
163
  var dividerPropsSchema = z.object({
164
- orientation: z.enum(["horizontal", "vertical"]).default("horizontal").describe("\uBC29\uD5A5"),
165
- variant: z.enum(["solid", "dashed", "dotted"]).default("solid").describe("\uC120 \uC2A4\uD0C0\uC77C"),
166
- color: z.string().optional().describe("\uCEE4\uC2A4\uD140 \uC0C9\uC0C1 (CSS \uAC12)"),
167
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
168
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
169
- }).describe("\uAD6C\uBD84\uC120. \uC218\uD3C9/\uC218\uC9C1 \uBC29\uD5A5, \uC2E4\uC120/\uC810\uC120/\uD30C\uC120 \uC9C0\uC6D0.");
164
+ orientation: z.enum(["horizontal", "vertical"]).default("horizontal").describe("Direction"),
165
+ variant: z.enum(["solid", "dashed", "dotted"]).default("solid").describe("Line style"),
166
+ color: z.string().optional().describe("Custom color (CSS value)"),
167
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
168
+ className: z.string().optional().describe("Style override")
169
+ }).describe("Divider. Supports horizontal/vertical, solid/dashed/dotted.");
170
170
  var tooltipPropsSchema = z.object({
171
- children: z.any().describe("\uD2B8\uB9AC\uAC70 \uC694\uC18C (ReactNode, \uD544\uC218)"),
172
- content: z.any().describe("\uD234\uD301 \uB0B4\uC6A9 (ReactNode, \uD544\uC218)"),
173
- variant: z.enum(["dark", "light"]).default("dark").describe("\uC2A4\uD0C0\uC77C"),
174
- side: z.enum(["top", "right", "bottom", "left"]).default("top").describe("\uC704\uCE58"),
175
- align: z.enum(["start", "center", "end"]).default("center").describe("\uC815\uB82C"),
176
- delayDuration: z.number().default(200).describe("\uD45C\uC2DC \uC9C0\uC5F0 (ms)"),
177
- disabled: z.boolean().default(false).describe("\uBE44\uD65C\uC131"),
178
- className: z.string().optional().describe("Content \uC2A4\uD0C0\uC77C"),
179
- triggerClassName: z.string().optional().describe("Trigger \uC2A4\uD0C0\uC77C")
180
- }).describe("\uD234\uD301. Radix Tooltip \uAE30\uBC18. Provider \uB0B4\uC7A5.");
171
+ children: z.any().describe("Trigger element (ReactNode, required)"),
172
+ content: z.any().describe("Tooltip content (ReactNode, required)"),
173
+ variant: z.enum(["dark", "light"]).default("dark").describe("Style"),
174
+ side: z.enum(["top", "right", "bottom", "left"]).default("top").describe("Position"),
175
+ align: z.enum(["start", "center", "end"]).default("center").describe("Alignment"),
176
+ delayDuration: z.number().default(200).describe("Show delay (ms)"),
177
+ disabled: z.boolean().default(false).describe("Disabled"),
178
+ className: z.string().optional().describe("Content style"),
179
+ triggerClassName: z.string().optional().describe("Trigger style")
180
+ }).describe("Tooltip. Based on Radix Tooltip. Built-in Provider.");
181
181
  var popoverPropsSchema = z.object({
182
- trigger: z.any().describe("\uD2B8\uB9AC\uAC70 \uC694\uC18C (ReactNode, \uD544\uC218)"),
183
- side: z.enum(["top", "right", "bottom", "left"]).default("bottom").describe("\uC704\uCE58"),
184
- align: z.enum(["start", "center", "end"]).default("center").describe("\uC815\uB82C"),
185
- sideOffset: z.number().default(4).describe("\uC704\uCE58 \uC624\uD504\uC14B (px)"),
186
- alignOffset: z.number().optional().describe("\uC815\uB82C \uC624\uD504\uC14B (px)"),
187
- open: z.boolean().optional().describe("\uC81C\uC5B4 \uBAA8\uB4DC"),
188
- onOpenChange: z.any().optional().describe("\uC5F4\uB9BC/\uB2EB\uD798 \uC0C1\uD0DC \uBCC0\uACBD \uCF5C\uBC31 (open: boolean) => void"),
189
- onClickTrigger: z.any().optional().describe("\uD2B8\uB9AC\uAC70 \uC694\uC18C \uD074\uB9AD \uC2DC \uD638\uCD9C\uB418\uB294 \uCF5C\uBC31. PopoverPrimitive.Trigger\uC758 onClick\uC5D0 \uC804\uB2EC\uB428."),
190
- children: z.any().optional().describe("\uD31D\uC624\uBC84 \uBCF8\uBB38 (ReactNode)"),
191
- className: z.string().optional().describe("Content \uC2A4\uD0C0\uC77C"),
192
- arrowClassName: z.string().optional().describe("Arrow \uC2A4\uD0C0\uC77C")
193
- }).describe("\uD31D\uC624\uBC84. Radix Popover \uAE30\uBC18.");
182
+ trigger: z.any().describe("Trigger element (ReactNode, required)"),
183
+ side: z.enum(["top", "right", "bottom", "left"]).default("bottom").describe("Position"),
184
+ align: z.enum(["start", "center", "end"]).default("center").describe("Alignment"),
185
+ sideOffset: z.number().default(4).describe("Position offset (px)"),
186
+ alignOffset: z.number().optional().describe("Alignment offset (px)"),
187
+ open: z.boolean().optional().describe("Controlled mode"),
188
+ onOpenChange: z.any().optional().describe("Open/close state change callback (open: boolean) => void"),
189
+ onClickTrigger: z.any().optional().describe("Callback on trigger element click. Passed to PopoverPrimitive.Trigger onClick."),
190
+ children: z.any().optional().describe("Popover body (ReactNode)"),
191
+ className: z.string().optional().describe("Content style"),
192
+ arrowClassName: z.string().optional().describe("Arrow style")
193
+ }).describe("Popover. Based on Radix Popover.");
194
194
  var accordionItemData = z.object({
195
- id: z.string().describe("\uACE0\uC720 ID"),
196
- trigger: z.any().describe("\uD2B8\uB9AC\uAC70 \uB0B4\uC6A9 (ReactNode)"),
197
- content: z.any().describe("\uD3BC\uCE68 \uB0B4\uC6A9 (ReactNode)"),
198
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
195
+ id: z.string().describe("Unique ID"),
196
+ trigger: z.any().describe("Trigger content (ReactNode)"),
197
+ content: z.any().describe("Expandable content (ReactNode)"),
198
+ disabled: z.boolean().optional().describe("Disabled"),
199
199
  className: z.string().optional(),
200
200
  triggerClassName: z.string().optional(),
201
201
  contentClassName: z.string().optional()
202
202
  });
203
203
  var accordionPropsSchema = z.object({
204
- items: z.array(accordionItemData).describe("\uC544\uCF54\uB514\uC5B8 \uD56D\uBAA9 \uBC30\uC5F4 (\uD544\uC218)"),
205
- type: z.enum(["single", "multiple"]).default("single").describe("\uB2E8\uC77C/\uB2E4\uC911 \uC5F4\uAE30"),
206
- collapsible: z.boolean().default(true).describe("\uC804\uBD80 \uC811\uAE30 \uAC00\uB2A5"),
207
- value: z.union([z.string(), z.array(z.string())]).optional().describe("\uC81C\uC5B4 \uBAA8\uB4DC"),
208
- defaultValue: z.union([z.string(), z.array(z.string())]).optional().describe("\uBE44\uC81C\uC5B4 \uCD08\uAE30\uAC12"),
209
- onValueChange: z.any().optional().describe("\uC5F4\uB9B0 \uD56D\uBAA9 \uBCC0\uACBD \uCF5C\uBC31 (value: string | string[]) => void"),
210
- className: z.string().optional().describe("Root \uC2A4\uD0C0\uC77C")
211
- }).describe("\uC544\uCF54\uB514\uC5B8. items \uBC30\uC5F4 \uBC29\uC2DD\uACFC \uCEF4\uD3EC\uC800\uBE14 \uBC29\uC2DD \uBAA8\uB450 \uC9C0\uC6D0.");
204
+ items: z.array(accordionItemData).describe("Accordion item array (required)"),
205
+ type: z.enum(["single", "multiple"]).default("single").describe("Single/multiple open mode"),
206
+ collapsible: z.boolean().default(true).describe("Allow collapsing all"),
207
+ value: z.union([z.string(), z.array(z.string())]).optional().describe("Controlled mode"),
208
+ defaultValue: z.union([z.string(), z.array(z.string())]).optional().describe("Uncontrolled initial value"),
209
+ onValueChange: z.any().optional().describe("Open item change callback (value: string | string[]) => void"),
210
+ className: z.string().optional().describe("Root style")
211
+ }).describe("Accordion. Supports both items array and composable patterns.");
212
212
  var drawerDirection = z.enum(["bottom", "top", "left", "right"]).default("bottom");
213
213
  var drawerPropsSchema = z.object({
214
- direction: drawerDirection.describe("\uBC29\uD5A5"),
215
- open: z.boolean().optional().describe("\uC5F4\uB9BC \uC0C1\uD0DC (\uC81C\uC5B4 \uBAA8\uB4DC)"),
216
- onOpenChange: z.any().optional().describe("\uC5F4\uB9BC \uC0C1\uD0DC \uBCC0\uACBD \uCF5C\uBC31 (open: boolean) => void"),
217
- dismissible: z.boolean().optional().describe("\uC2A4\uC640\uC774\uD504/\uC678\uBD80 \uD074\uB9AD\uC73C\uB85C \uB2EB\uAE30 \uD5C8\uC6A9 (\uAE30\uBCF8 true)"),
218
- modal: z.boolean().optional().describe("\uBAA8\uB2EC \uBAA8\uB4DC (\uAE30\uBCF8 true). false\uBA74 \uBC30\uACBD\uACFC \uC0C1\uD638\uC791\uC6A9 \uAC00\uB2A5"),
219
- shouldScaleBackground: z.boolean().optional().describe("\uBC30\uACBD \uCD95\uC18C \uD6A8\uACFC (\uAE30\uBCF8 false)"),
220
- children: z.any().describe("Drawer \uD558\uC704 \uCEF4\uD3EC\uB10C\uD2B8 (ReactNode, \uD544\uC218)")
221
- }).describe("\uB4DC\uB85C\uC5B4/\uBC14\uD140\uC2DC\uD2B8. Vaul \uAE30\uBC18. \uD569\uC131 \uCEF4\uD3EC\uB10C\uD2B8 \uD328\uD134.");
214
+ direction: drawerDirection.describe("Direction"),
215
+ open: z.boolean().optional().describe("Open state (controlled mode)"),
216
+ onOpenChange: z.any().optional().describe("Open state change callback (open: boolean) => void"),
217
+ dismissible: z.boolean().optional().describe("Allow close via swipe/outside click (default true)"),
218
+ modal: z.boolean().optional().describe("Modal mode (default true). If false, background is interactive"),
219
+ shouldScaleBackground: z.boolean().optional().describe("Background scale effect (default false)"),
220
+ children: z.any().describe("Drawer sub-components (ReactNode, required)")
221
+ }).describe("Drawer/bottom sheet. Based on Vaul. Compound component pattern.");
222
222
  var drawerContentPropsSchema = z.object({
223
- direction: drawerDirection.optional().describe("\uBC29\uD5A5 (Context \uC6B0\uC120)"),
224
- blur: z.enum(["none", "sm", "md"]).default("none").describe("\uC624\uBC84\uB808\uC774 \uBE14\uB7EC"),
225
- showHandle: z.boolean().default(true).describe("\uD578\uB4E4 \uBC14 \uD45C\uC2DC"),
226
- children: z.any().optional().describe("\uCEE8\uD150\uCE20 \uC601\uC5ED (ReactNode)"),
227
- overlayClassName: z.string().optional().describe("\uC624\uBC84\uB808\uC774 \uC2A4\uD0C0\uC77C"),
228
- className: z.string().optional().describe("\uD328\uB110 \uC2A4\uD0C0\uC77C")
229
- }).describe("Drawer.Content \uC601\uC5ED.");
223
+ direction: drawerDirection.optional().describe("Direction (Context takes priority)"),
224
+ blur: z.enum(["none", "sm", "md"]).default("none").describe("Overlay blur"),
225
+ showHandle: z.boolean().default(true).describe("Show handle bar"),
226
+ children: z.any().optional().describe("Content area (ReactNode)"),
227
+ overlayClassName: z.string().optional().describe("Overlay style"),
228
+ className: z.string().optional().describe("Panel style")
229
+ }).describe("Drawer.Content area.");
230
230
  var drawerTriggerPropsSchema = z.object({
231
- asChild: z.boolean().optional().describe("\uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1"),
232
- children: z.any().describe("\uD2B8\uB9AC\uAC70 \uC694\uC18C (ReactNode, \uD544\uC218)"),
233
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
234
- }).describe("Drawer \uC5F4\uAE30 \uD2B8\uB9AC\uAC70.");
231
+ asChild: z.boolean().optional().describe("Render as child element"),
232
+ children: z.any().describe("Trigger element (ReactNode, required)"),
233
+ className: z.string().optional().describe("Style override")
234
+ }).describe("Drawer open trigger.");
235
235
  var drawerClosePropsSchema = z.object({
236
- asChild: z.boolean().optional().describe("\uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1"),
237
- children: z.any().describe("\uB2EB\uAE30 \uC694\uC18C (ReactNode, \uD544\uC218)"),
238
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
239
- }).describe("Drawer \uB2EB\uAE30 \uBC84\uD2BC.");
236
+ asChild: z.boolean().optional().describe("Render as child element"),
237
+ children: z.any().describe("Close element (ReactNode, required)"),
238
+ className: z.string().optional().describe("Style override")
239
+ }).describe("Drawer close button.");
240
240
  var drawerTitlePropsSchema = z.object({
241
- children: z.any().describe("\uC81C\uBAA9 \uD14D\uC2A4\uD2B8 (ReactNode, \uD544\uC218)"),
242
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
243
- }).describe("Drawer \uC81C\uBAA9 (\uC811\uADFC\uC131\uC6A9 \uD544\uC218).");
241
+ children: z.any().describe("Title text (ReactNode, required)"),
242
+ className: z.string().optional().describe("Style override")
243
+ }).describe("Drawer title (required for accessibility).");
244
244
  var drawerDescriptionPropsSchema = z.object({
245
- children: z.any().describe("\uC124\uBA85 \uD14D\uC2A4\uD2B8 (ReactNode, \uD544\uC218)"),
246
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
247
- }).describe("Drawer \uC124\uBA85.");
245
+ children: z.any().describe("Description text (ReactNode, required)"),
246
+ className: z.string().optional().describe("Style override")
247
+ }).describe("Drawer description.");
248
248
  var tabItem = z.object({
249
- key: z.string().describe("\uD0ED \uACE0\uC720 \uD0A4"),
250
- label: z.any().describe("\uD0ED \uB77C\uBCA8 (ReactNode)"),
251
- children: z.any().optional().describe("\uD0ED \uD328\uB110 \uB0B4\uC6A9 (ReactNode)"),
252
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131")
249
+ key: z.string().describe("Tab unique key"),
250
+ label: z.any().describe("Tab label (ReactNode)"),
251
+ children: z.any().optional().describe("Tab panel content (ReactNode)"),
252
+ disabled: z.boolean().optional().describe("Disabled")
253
253
  });
254
254
  var tabPropsSchema = z.object({
255
- items: z.array(tabItem).describe("\uD0ED \uD56D\uBAA9 \uBC30\uC5F4 (\uD544\uC218)"),
256
- activeKey: z.string().optional().describe("\uC81C\uC5B4 \uBAA8\uB4DC \uD65C\uC131 \uD0A4"),
257
- defaultActiveKey: z.string().optional().describe("\uBE44\uC81C\uC5B4 \uCD08\uAE30 \uD0A4"),
258
- variant: z.enum(["line", "pill"]).default("line").describe("\uC2A4\uD0C0\uC77C"),
259
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
260
- destroyInactive: z.boolean().default(false).describe("\uBE44\uD65C\uC131 \uD328\uB110 \uC5B8\uB9C8\uC6B4\uD2B8"),
261
- onTabChange: z.any().optional().describe("\uD0ED \uBCC0\uACBD \uCF5C\uBC31 (key: string) => void"),
262
- className: z.string().optional().describe("\uB8E8\uD2B8 \uC2A4\uD0C0\uC77C"),
263
- tabListClassName: z.string().optional().describe("\uD0ED \uB9AC\uC2A4\uD2B8 \uC2A4\uD0C0\uC77C"),
264
- tabPanelClassName: z.string().optional().describe("\uD0ED \uD328\uB110 \uC2A4\uD0C0\uC77C")
265
- }).describe("\uD0ED \uB124\uBE44\uAC8C\uC774\uC158. line/pill \uBCC0\uD615.");
255
+ items: z.array(tabItem).describe("Tab item array (required)"),
256
+ activeKey: z.string().optional().describe("Controlled mode active key"),
257
+ defaultActiveKey: z.string().optional().describe("Uncontrolled initial key"),
258
+ variant: z.enum(["line", "pill"]).default("line").describe("Style"),
259
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
260
+ destroyInactive: z.boolean().default(false).describe("Unmount inactive panels"),
261
+ onTabChange: z.any().optional().describe("Tab change callback (key: string) => void"),
262
+ className: z.string().optional().describe("Root style"),
263
+ tabListClassName: z.string().optional().describe("Tab list style"),
264
+ tabPanelClassName: z.string().optional().describe("Tab panel style")
265
+ }).describe("Tab navigation. line/pill variants.");
266
266
  var carouselPropsSchema = z.object({
267
- opts: z.record(z.any()).optional().describe("Embla \uC635\uC158 (loop, align \uB4F1)"),
268
- plugins: z.array(z.any()).optional().describe("Embla \uD50C\uB7EC\uADF8\uC778"),
269
- onApiChange: z.any().optional().describe("Embla API \uBCC0\uACBD \uCF5C\uBC31 (api: CarouselApi) => void"),
270
- children: z.any().optional().describe("\uCE90\uB7EC\uC140 \uC2AC\uB77C\uC774\uB4DC \uBC0F \uC11C\uBE0C \uCEF4\uD3EC\uB10C\uD2B8 (ReactNode)"),
271
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
267
+ opts: z.record(z.any()).optional().describe("Embla options (loop, align, etc.)"),
268
+ plugins: z.array(z.any()).optional().describe("Embla plugins"),
269
+ onApiChange: z.any().optional().describe("Embla API change callback (api: CarouselApi) => void"),
270
+ children: z.any().optional().describe("Carousel slides and sub-components (ReactNode)"),
271
+ className: z.string().optional().describe("Style override")
272
272
  }).describe(
273
- "\uCE90\uB7EC\uC140. Embla Carousel \uAE30\uBC18. CarouselSlide, CarouselPrev, CarouselNext, CarouselDots \uC11C\uBE0C \uCEF4\uD3EC\uB10C\uD2B8."
273
+ "Carousel. Based on Embla Carousel. Sub-components: CarouselSlide, CarouselPrev, CarouselNext, CarouselDots."
274
274
  );
275
275
  var carouselSlidePropsSchema = z.object({
276
- className: z.string().optional().describe("\uC2AC\uB77C\uC774\uB4DC \uC2A4\uD0C0\uC77C (basis-1/3 \uB4F1\uC73C\uB85C \uBCF5\uC218 \uB178\uCD9C)"),
277
- children: z.any().describe("\uC2AC\uB77C\uC774\uB4DC \uB0B4\uC6A9 (ReactNode, \uD544\uC218)")
278
- }).describe("\uCE90\uB7EC\uC140 \uC2AC\uB77C\uC774\uB4DC. Carousel \uB0B4\uBD80\uC5D0\uC11C \uC0AC\uC6A9.");
276
+ className: z.string().optional().describe("Slide style (use basis-1/3 etc. for multi-slide view)"),
277
+ children: z.any().describe("Slide content (ReactNode, required)")
278
+ }).describe("Carousel slide. Used inside Carousel.");
279
279
  var carouselButtonPropsSchema = z.object({
280
- className: z.string().optional().describe("\uBC84\uD2BC \uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC"),
281
- children: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uC544\uC774\uCF58 (ReactNode, \uAE30\uBCF8: chevron)")
282
- }).describe("CarouselPrev / CarouselNext. \uC774\uC804/\uB2E4\uC74C \uB0B4\uBE44\uAC8C\uC774\uC158 \uBC84\uD2BC.");
280
+ className: z.string().optional().describe("Button style override"),
281
+ children: z.any().optional().describe("Custom icon (ReactNode, default: chevron)")
282
+ }).describe("CarouselPrev / CarouselNext. Previous/next navigation buttons.");
283
283
  var carouselDotsPropsSchema = z.object({
284
- className: z.string().optional().describe("\uB3C4\uD2B8 \uCEE8\uD14C\uC774\uB108 \uC2A4\uD0C0\uC77C")
285
- }).describe("CarouselDots. \uC2AC\uB77C\uC774\uB4DC \uC778\uB514\uCF00\uC774\uD130 \uB3C4\uD2B8.");
284
+ className: z.string().optional().describe("Dot container style")
285
+ }).describe("CarouselDots. Slide indicator dots.");
286
286
  var paginationPropsSchema = z.object({
287
- currentPage: z.number().describe("\uD604\uC7AC \uD398\uC774\uC9C0 (1\uBD80\uD130, \uD544\uC218)"),
288
- totalPages: z.number().describe("\uC804\uCCB4 \uD398\uC774\uC9C0 \uC218 (\uD544\uC218)"),
289
- siblingCount: z.number().default(1).describe("\uD604\uC7AC \uD398\uC774\uC9C0 \uC591\uC606 \uD45C\uC2DC \uAC1C\uC218"),
290
- showEdges: z.boolean().optional().describe("\uCCAB/\uB05D \uD398\uC774\uC9C0 \uD56D\uC0C1 \uD45C\uC2DC"),
291
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
292
- onPageChange: z.any().describe("\uD398\uC774\uC9C0 \uBCC0\uACBD \uCF5C\uBC31 (page: number) => void, \uD544\uC218"),
293
- className: z.string().optional().describe("<nav> \uC2A4\uD0C0\uC77C")
294
- }).describe("\uD398\uC774\uC9C0\uB124\uC774\uC158. \uC774\uC804/\uB2E4\uC74C + \uBC88\uD638 \uBC84\uD2BC.");
287
+ currentPage: z.number().describe("Current page (1-based, required)"),
288
+ totalPages: z.number().describe("Total page count (required)"),
289
+ siblingCount: z.number().default(1).describe("Number of pages shown on each side of current"),
290
+ showEdges: z.boolean().optional().describe("Always show first/last page"),
291
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
292
+ onPageChange: z.any().describe("Page change callback (page: number) => void, required"),
293
+ className: z.string().optional().describe("<nav> style")
294
+ }).describe("Pagination. Previous/next + page number buttons.");
295
295
  var avatarPropsSchema = z.object({
296
- src: z.string().optional().describe("\uC774\uBBF8\uC9C0 URL"),
297
- alt: z.string().optional().describe("\uB300\uCCB4 \uD14D\uC2A4\uD2B8"),
298
- fallback: z.any().optional().describe("\uC774\uBBF8\uC9C0 \uB85C\uB4DC \uC2E4\uD328 \uC2DC \uD45C\uC2DC (ReactNode)"),
299
- size: z.enum(["xs", "sm", "md", "lg", "xl"]).default("md").describe("\uD06C\uAE30"),
300
- shape: z.enum(["circle", "square"]).default("circle").describe("\uD615\uD0DC"),
301
- children: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uC774\uBBF8\uC9C0 \uC694\uC18C (\uC608: Next.js Image)"),
302
- onImageError: z.any().optional().describe("\uC774\uBBF8\uC9C0 \uB85C\uB4DC \uC2E4\uD328 \uCF5C\uBC31 () => void"),
303
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
304
- }).describe("\uC544\uBC14\uD0C0. \uC774\uBBF8\uC9C0, \uD3F4\uBC31 \uD14D\uC2A4\uD2B8, children \uC9C0\uC6D0.");
296
+ src: z.string().optional().describe("Image URL"),
297
+ alt: z.string().optional().describe("Alt text"),
298
+ fallback: z.any().optional().describe("Displayed on image load failure (ReactNode)"),
299
+ size: z.enum(["xs", "sm", "md", "lg", "xl"]).default("md").describe("Size"),
300
+ shape: z.enum(["circle", "square"]).default("circle").describe("Shape"),
301
+ children: z.any().optional().describe("Custom image element (e.g. Next.js Image)"),
302
+ onImageError: z.any().optional().describe("Image load error callback () => void"),
303
+ className: z.string().optional().describe("Style override")
304
+ }).describe("Avatar. Supports image, fallback text, and children.");
305
305
  var counterPropsSchema = z.object({
306
- endValue: z.number().describe("\uBAA9\uD45C \uAC12 (\uD544\uC218)"),
307
- startValue: z.number().default(0).describe("\uC2DC\uC791 \uAC12"),
308
- duration: z.number().default(1500).describe("\uC560\uB2C8\uBA54\uC774\uC158 \uC2DC\uAC04 (ms)"),
309
- delay: z.number().default(0).describe("\uC2DC\uC791 \uC9C0\uC5F0 (ms)"),
310
- separator: z.boolean().default(true).describe("\uCC9C \uB2E8\uC704 \uAD6C\uBD84"),
311
- digits: z.number().default(0).describe("\uC18C\uC218 \uC790\uB9BF\uC218"),
312
- triggerOnView: z.boolean().default(false).describe("\uBDF0\uD3EC\uD2B8 \uC9C4\uC785 \uC2DC \uC2DC\uC791"),
313
- onEnd: z.any().optional().describe("\uCE74\uC6B4\uD2B8 \uC644\uB8CC \uCF5C\uBC31 () => void"),
314
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
315
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
316
- }).describe("\uC22B\uC790 \uCE74\uC6B4\uD2B8 \uC560\uB2C8\uBA54\uC774\uC158.");
306
+ endValue: z.number().describe("Target value (required)"),
307
+ startValue: z.number().default(0).describe("Start value"),
308
+ duration: z.number().default(1500).describe("Animation duration (ms)"),
309
+ delay: z.number().default(0).describe("Start delay (ms)"),
310
+ separator: z.boolean().default(true).describe("Thousands separator"),
311
+ digits: z.number().default(0).describe("Decimal places"),
312
+ triggerOnView: z.boolean().default(false).describe("Start on viewport entry"),
313
+ onEnd: z.any().optional().describe("Count complete callback () => void"),
314
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
315
+ className: z.string().optional().describe("Style override")
316
+ }).describe("Number count animation.");
317
317
  var countdownPropsSchema = z.object({
318
- endTimestamp: z.number().describe("\uC885\uB8CC \uC2DC\uAC01 (Unix ms, \uD544\uC218)"),
319
- separator: z.any().default(":").describe("\uAD6C\uBD84\uC790 (ReactNode)"),
320
- showDays: z.boolean().default(true).describe("\uC77C \uB2E8\uC704 \uD45C\uC2DC"),
318
+ endTimestamp: z.number().describe("End time (Unix ms, required)"),
319
+ separator: z.any().default(":").describe("Separator (ReactNode)"),
320
+ showDays: z.boolean().default(true).describe("Show days unit"),
321
321
  labels: z.object({
322
322
  days: z.string().optional(),
323
323
  hours: z.string().optional(),
324
324
  minutes: z.string().optional(),
325
325
  seconds: z.string().optional()
326
- }).optional().describe("\uB2E8\uC704 \uB77C\uBCA8"),
327
- render: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uB80C\uB354 \uD568\uC218"),
328
- onEnd: z.any().optional().describe("\uCE74\uC6B4\uD2B8\uB2E4\uC6B4 \uC885\uB8CC \uCF5C\uBC31 () => void"),
329
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
330
- }).describe("\uCE74\uC6B4\uD2B8\uB2E4\uC6B4 \uD0C0\uC774\uBA38.");
326
+ }).optional().describe("Unit labels"),
327
+ render: z.any().optional().describe("Custom render function"),
328
+ onEnd: z.any().optional().describe("Countdown end callback () => void"),
329
+ className: z.string().optional().describe("Style override")
330
+ }).describe("Countdown timer.");
331
331
  var marqueePropsSchema = z.object({
332
- direction: z.enum(["left", "right", "up", "down"]).default("left").describe("\uBC29\uD5A5"),
333
- speed: z.number().default(40).describe("\uC560\uB2C8\uBA54\uC774\uC158 \uC18D\uB3C4 (\uCD08)"),
334
- pauseOnHover: z.boolean().default(false).describe("\uD638\uBC84 \uC2DC \uC77C\uC2DC\uC815\uC9C0"),
335
- gap: z.number().default(16).describe("\uC544\uC774\uD15C \uAC04\uACA9 (px)"),
336
- children: z.any().describe("\uBC18\uBCF5 \uD45C\uC2DC\uD560 \uCF58\uD150\uCE20 (ReactNode, \uD544\uC218)"),
337
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
338
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
339
- }).describe("\uB9C8\uD034 (\uD750\uB974\uB294 \uD14D\uC2A4\uD2B8/\uC694\uC18C).");
332
+ direction: z.enum(["left", "right", "up", "down"]).default("left").describe("Direction"),
333
+ speed: z.number().default(40).describe("Animation speed (seconds)"),
334
+ pauseOnHover: z.boolean().default(false).describe("Pause on hover"),
335
+ gap: z.number().default(16).describe("Item gap (px)"),
336
+ children: z.any().describe("Content to repeat (ReactNode, required)"),
337
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
338
+ className: z.string().optional().describe("Style override")
339
+ }).describe("Marquee (scrolling text/elements).");
340
340
  var virtualListPropsSchema = z.object({
341
- items: z.array(z.any()).describe("\uB370\uC774\uD130 \uBC30\uC5F4 (\uD544\uC218)"),
342
- estimateSize: z.union([z.number(), z.any()]).describe("\uC608\uC0C1 \uC544\uC774\uD15C \uB192\uC774 (number \uB610\uB294 (index) => number, \uD544\uC218)"),
343
- renderItem: z.any().describe("\uC544\uC774\uD15C \uB80C\uB354\uB7EC (item, index, virtualItem) => ReactNode (\uD544\uC218)"),
344
- overscan: z.number().default(5).describe("\uC624\uBC84\uC2A4\uCE94 \uC218"),
345
- gap: z.number().default(0).describe("\uC544\uC774\uD15C \uAC04\uACA9 (px)"),
346
- className: z.string().optional().describe("\uC2A4\uD06C\uB864 \uCEE8\uD14C\uC774\uB108 \uC2A4\uD0C0\uC77C"),
347
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
348
- endReachedThreshold: z.number().default(200).describe("\uB05D \uAC10\uC9C0 \uC784\uACC4\uAC12 (px)"),
349
- onEndReached: z.any().optional().describe("\uB05D \uB3C4\uB2EC \uCF5C\uBC31 () => void")
350
- }).describe("\uAC00\uC0C1 \uC2A4\uD06C\uB864 \uB9AC\uC2A4\uD2B8. @tanstack/react-virtual \uAE30\uBC18.");
341
+ items: z.array(z.any()).describe("Data array (required)"),
342
+ estimateSize: z.union([z.number(), z.any()]).describe("Estimated item height (number or (index) => number, required)"),
343
+ renderItem: z.any().describe("Item renderer (item, index, virtualItem) => ReactNode (required)"),
344
+ overscan: z.number().default(5).describe("Overscan count"),
345
+ gap: z.number().default(0).describe("Item gap (px)"),
346
+ className: z.string().optional().describe("Scroll container style"),
347
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
348
+ endReachedThreshold: z.number().default(200).describe("End detection threshold (px)"),
349
+ onEndReached: z.any().optional().describe("End reached callback () => void")
350
+ }).describe("Virtual scroll list. Based on @tanstack/react-virtual.");
351
351
  var virtualGridPropsSchema = z.object({
352
- items: z.array(z.any()).describe("\uB370\uC774\uD130 \uBC30\uC5F4 (\uD544\uC218)"),
353
- columns: z.number().describe("\uC5F4 \uC218 (\uD544\uC218)"),
354
- estimateSize: z.union([z.number(), z.any()]).describe("\uC608\uC0C1 \uC544\uC774\uD15C \uB192\uC774 (\uD544\uC218)"),
355
- renderItem: z.any().describe("\uC544\uC774\uD15C \uB80C\uB354\uB7EC (item, index) => ReactNode (\uD544\uC218)"),
356
- overscan: z.number().default(3).describe("\uC624\uBC84\uC2A4\uCE94 \uC218"),
357
- gap: z.number().default(0).describe("\uC544\uC774\uD15C \uAC04\uACA9 (px)"),
358
- className: z.string().optional().describe("\uC2A4\uD06C\uB864 \uCEE8\uD14C\uC774\uB108 \uC2A4\uD0C0\uC77C"),
359
- style: z.any().optional().describe("\uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
360
- endReachedThreshold: z.number().default(200).describe("\uB05D \uAC10\uC9C0 \uC784\uACC4\uAC12 (px)"),
361
- onEndReached: z.any().optional().describe("\uB05D \uB3C4\uB2EC \uCF5C\uBC31 () => void")
362
- }).describe("\uAC00\uC0C1 \uC2A4\uD06C\uB864 \uADF8\uB9AC\uB4DC. @tanstack/react-virtual \uAE30\uBC18.");
352
+ items: z.array(z.any()).describe("Data array (required)"),
353
+ columns: z.number().describe("Column count (required)"),
354
+ estimateSize: z.union([z.number(), z.any()]).describe("Estimated item height (required)"),
355
+ renderItem: z.any().describe("Item renderer (item, index) => ReactNode (required)"),
356
+ overscan: z.number().default(3).describe("Overscan count"),
357
+ gap: z.number().default(0).describe("Item gap (px)"),
358
+ className: z.string().optional().describe("Scroll container style"),
359
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
360
+ endReachedThreshold: z.number().default(200).describe("End detection threshold (px)"),
361
+ onEndReached: z.any().optional().describe("End reached callback () => void")
362
+ }).describe("Virtual scroll grid. Based on @tanstack/react-virtual.");
363
363
  var infiniteScrollPropsSchema = z.object({
364
- list: z.array(z.any()).nullable().describe("\uD604\uC7AC \uB370\uC774\uD130 \uBC30\uC5F4 (\uD544\uC218)"),
365
- totalCount: z.number().optional().describe("\uC804\uCCB4 \uAC1C\uC218 (hasMore\uC640 \uBC30\uD0C0\uC801 \uC0AC\uC6A9)"),
366
- hasMore: z.boolean().optional().describe("\uB354 \uC788\uB294\uC9C0 (totalCount\uC640 \uBC30\uD0C0\uC801 \uC0AC\uC6A9)"),
367
- tag: z.string().default("div").describe("children \uB798\uD37C \uD0DC\uADF8"),
368
- rootMargin: z.number().default(100).describe("\uAC10\uC9C0 \uB9C8\uC9C4 (px)"),
369
- loading: z.boolean().optional().describe("\uB85C\uB529 \uC0C1\uD0DC"),
370
- loadingElement: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uB85C\uB529 \uC694\uC18C"),
371
- handleLoadMore: z.any().describe("\uCD94\uAC00 \uB85C\uB529 \uCF5C\uBC31 () => void, \uD544\uC218"),
372
- scrollTarget: z.any().optional().describe("\uC2A4\uD06C\uB864 \uB300\uC0C1 \uC694\uC18C (HTMLElement | Document | MutableRefObject)"),
373
- children: z.any().describe("\uB9AC\uC2A4\uD2B8 \uC544\uC774\uD15C \uB80C\uB354\uB9C1 (ReactNode, \uD544\uC218)"),
374
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
375
- }).describe("\uBB34\uD55C \uC2A4\uD06C\uB864. IntersectionObserver \uAE30\uBC18.");
364
+ list: z.array(z.any()).nullable().describe("Current data array (required)"),
365
+ totalCount: z.number().optional().describe("Total count (mutually exclusive with hasMore)"),
366
+ hasMore: z.boolean().optional().describe("Has more items (mutually exclusive with totalCount)"),
367
+ tag: z.string().default("div").describe("Children wrapper tag"),
368
+ rootMargin: z.number().default(100).describe("Detection margin (px)"),
369
+ loading: z.boolean().optional().describe("Loading state"),
370
+ loadingElement: z.any().optional().describe("Custom loading element"),
371
+ handleLoadMore: z.any().describe("Load more callback () => void, required"),
372
+ scrollTarget: z.any().optional().describe("Scroll target element (HTMLElement | Document | MutableRefObject)"),
373
+ children: z.any().describe("List item rendering (ReactNode, required)"),
374
+ className: z.string().optional().describe("Style override")
375
+ }).describe("Infinite scroll. Based on IntersectionObserver.");
376
376
  var ellipsisPropsSchema = z.object({
377
- content: z.any().default("").describe("\uBCF8\uBB38 (ReactNode)"),
378
- lineClamp: z.number().default(2).describe("\uC904 \uC218 \uC81C\uD55C"),
379
- triggerMore: z.any().default("more").describe("\uB354\uBCF4\uAE30 \uD14D\uC2A4\uD2B8 (ReactNode)"),
380
- triggerLess: z.any().default("less").describe("\uC811\uAE30 \uD14D\uC2A4\uD2B8 (ReactNode)"),
381
- defaultShortened: z.boolean().default(true).describe("\uCD08\uAE30 \uC811\uD798 \uC0C1\uD0DC"),
382
- observingEnvs: z.array(z.boolean()).optional().describe("\uC678\uBD80 \uC870\uAC74 \uBCC0\uACBD \uC2DC \uB9AC\uC0AC\uC774\uC988 \uC7AC\uCE21\uC815"),
383
- onShowMoreLessClick: z.any().optional().describe("\uB354\uBCF4\uAE30/\uC811\uAE30 \uD074\uB9AD \uCF5C\uBC31 () => void"),
384
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
385
- }).describe("\uD14D\uC2A4\uD2B8 \uB9D0\uC904\uC784. \uB354\uBCF4\uAE30/\uC811\uAE30 \uD1A0\uAE00 \uB0B4\uC7A5.");
377
+ content: z.any().default("").describe("Body text (ReactNode)"),
378
+ lineClamp: z.number().default(2).describe("Line clamp limit"),
379
+ triggerMore: z.any().default("more").describe("Show more text (ReactNode)"),
380
+ triggerLess: z.any().default("less").describe("Show less text (ReactNode)"),
381
+ defaultShortened: z.boolean().default(true).describe("Initial collapsed state"),
382
+ observingEnvs: z.array(z.boolean()).optional().describe("Re-measure on external condition change"),
383
+ onShowMoreLessClick: z.any().optional().describe("Show more/less click callback () => void"),
384
+ className: z.string().optional().describe("Style override")
385
+ }).describe("Text ellipsis. Built-in show more/less toggle.");
386
386
  var numberInputPropsSchema = z.object({
387
- value: z.union([z.number(), z.string()]).optional().describe("\uD604\uC7AC \uAC12"),
388
- size: z.enum(["sm", "md", "lg", "xl"]).default("md").describe("\uD06C\uAE30"),
389
- error: z.boolean().optional().describe("\uC5D0\uB7EC \uC0C1\uD0DC"),
390
- min: z.number().optional().describe("\uCD5C\uC18C\uAC12"),
391
- max: z.number().optional().describe("\uCD5C\uB300\uAC12"),
392
- step: z.number().default(1).describe("\uC99D\uAC10 \uB2E8\uC704"),
393
- digit: z.number().default(0).describe("\uC18C\uC218 \uC790\uB9BF\uC218"),
394
- hideButtons: z.boolean().default(false).describe("\uAE30\uBCF8 \uC2A4\uD540 \uBC84\uD2BC \uC228\uAE40. numberInputBind\uB85C \uC678\uBD80 \uBC84\uD2BC\uC5D0 \uC774\uBCA4\uD2B8 \uBD80\uCC29 \uC2DC \uC0AC\uC6A9"),
395
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
396
- readOnly: z.boolean().optional().describe("\uC77D\uAE30 \uC804\uC6A9 (\uC2A4\uD540 \uBC84\uD2BC \uC228\uAE40 \uB3D9\uC791 \uD3EC\uD568)"),
397
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
398
- name: z.string().optional().describe("form \uD544\uB4DC\uBA85"),
399
- id: z.string().optional().describe("\uC694\uC18C ID"),
400
- autoFocus: z.boolean().optional().describe("\uC790\uB3D9 \uD3EC\uCEE4\uC2A4"),
401
- onValueChange: z.any().optional().describe("\uAC12 \uBCC0\uACBD \uCF5C\uBC31 (value: number | undefined) => void"),
402
- onBlur: z.any().optional().describe("\uD3EC\uCEE4\uC2A4 \uD574\uC81C \uCF5C\uBC31"),
403
- onFocus: z.any().optional().describe("\uD3EC\uCEE4\uC2A4 \uCF5C\uBC31"),
404
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
387
+ value: z.union([z.number(), z.string()]).optional().describe("Current value"),
388
+ size: z.enum(["sm", "md", "lg", "xl"]).default("md").describe("Size"),
389
+ error: z.boolean().optional().describe("Error state"),
390
+ min: z.number().optional().describe("Minimum value"),
391
+ max: z.number().optional().describe("Maximum value"),
392
+ step: z.number().default(1).describe("Step increment"),
393
+ digit: z.number().default(0).describe("Decimal places"),
394
+ hideButtons: z.boolean().default(false).describe("Hide default spin buttons. Use with numberInputBind for external button event binding"),
395
+ disabled: z.boolean().optional().describe("Disabled"),
396
+ readOnly: z.boolean().optional().describe("Read-only (includes hiding spin buttons)"),
397
+ placeholder: z.string().optional().describe("Placeholder"),
398
+ name: z.string().optional().describe("Form field name"),
399
+ id: z.string().optional().describe("Element ID"),
400
+ autoFocus: z.boolean().optional().describe("Auto focus"),
401
+ onValueChange: z.any().optional().describe("Value change callback (value: number | undefined) => void"),
402
+ onBlur: z.any().optional().describe("Blur callback"),
403
+ onFocus: z.any().optional().describe("Focus callback"),
404
+ className: z.string().optional().describe("Style override")
405
405
  }).describe(
406
- "\uC22B\uC790 \uC785\uB825. \uAFB9 \uB204\uB974\uBA74 \uAC00\uC18D \uC99D\uAC10. ref\uB85C increment/decrement \uBA54\uC11C\uB4DC \uB178\uCD9C. numberInputBind(ref, direction) \uD568\uC218\uB85C \uC678\uBD80 \uBC84\uD2BC\uC5D0 \uB3D9\uC77C\uD55C \uAC00\uC18D \uC774\uBCA4\uD2B8 \uBC14\uC778\uB529 \uAC00\uB2A5."
406
+ "Number input. Accelerated increment on long press. Exposes increment/decrement methods via ref. numberInputBind(ref, direction) binds same acceleration to external buttons."
407
407
  );
408
408
  var dataListPropsSchema = z.object({
409
- list: z.array(z.any()).nullable().describe("\uB80C\uB354\uB9C1\uD560 \uB370\uC774\uD130 \uBC30\uC5F4. null\uC774\uBA74 \uB85C\uB529 \uC0C1\uD0DC (\uD544\uC218)"),
410
- noDataMessage: z.any().optional().describe("\uBE48 \uBC30\uC5F4\uC77C \uB54C \uD45C\uC2DC\uD560 \uBA54\uC2DC\uC9C0 (string | ReactElement)"),
411
- errorFallback: z.any().optional().describe("\uC5D0\uB7EC \uBC1C\uC0DD \uC2DC \uD45C\uC2DC\uD560 fallback (ReactNode)"),
412
- loadingElement: z.any().optional().describe("\uB85C\uB529 \uC911 \uD45C\uC2DC\uD560 \uCEE4\uC2A4\uD140 \uC694\uC18C (\uAE30\uBCF8: Spinner)"),
413
- skeletonElement: z.any().optional().describe("\uB85C\uB529 \uC911 \uD45C\uC2DC\uD560 \uC2A4\uCF08\uB808\uD1A4 \uC694\uC18C (ReactElement)"),
414
- skeletonCount: z.number().default(3).describe("\uC2A4\uCF08\uB808\uD1A4 \uBC18\uBCF5 \uAC1C\uC218"),
415
- loading: z.boolean().default(false).describe("\uAC15\uC81C \uB85C\uB529 \uC0C1\uD0DC"),
416
- children: z.any().describe("\uAC01 \uC544\uC774\uD15C \uB80C\uB354 \uD568\uC218: ({ item, index }) => ReactNode (\uD544\uC218)"),
417
- className: z.string().optional().describe("\uB8E8\uD2B8 \uC694\uC18C \uC2A4\uD0C0\uC77C")
409
+ list: z.array(z.any()).nullable().describe("Data array to render. null = loading state (required)"),
410
+ noDataMessage: z.any().optional().describe("Message for empty array (string | ReactElement)"),
411
+ errorFallback: z.any().optional().describe("Fallback on error (ReactNode)"),
412
+ loadingElement: z.any().optional().describe("Custom loading element (default: Spinner)"),
413
+ skeletonElement: z.any().optional().describe("Skeleton element during loading (ReactElement)"),
414
+ skeletonCount: z.number().default(3).describe("Skeleton repeat count"),
415
+ loading: z.boolean().default(false).describe("Force loading state"),
416
+ children: z.any().describe("Item render function: ({ item, index }) => ReactNode (required)"),
417
+ className: z.string().optional().describe("Root element style")
418
418
  }).describe(
419
- "\uB370\uC774\uD130 \uB9AC\uC2A4\uD2B8. list \uC0C1\uD0DC\uC5D0 \uB530\uB77C \uB85C\uB529/\uC2A4\uCF08\uB808\uD1A4/\uBE48 \uC0C1\uD0DC/\uB370\uC774\uD130\uB97C \uC790\uB3D9 \uCC98\uB9AC. ErrorBoundary \uB0B4\uC7A5."
419
+ "Data list. Automatically handles loading/skeleton/empty/data states based on list. Built-in ErrorBoundary."
420
420
  );
421
421
  var animationOptionsSchema = z.object({
422
- name: z.string().optional().describe("\uC560\uB2C8\uBA54\uC774\uC158 \uC774\uB984"),
423
- mobile: z.string().optional().describe("\uBAA8\uBC14\uC77C\uC6A9 \uC560\uB2C8\uBA54\uC774\uC158 \uC774\uB984"),
424
- delay: z.number().optional().describe("\uC9C0\uC5F0 (ms)"),
425
- duration: z.number().optional().describe("\uC9C0\uC18D \uC2DC\uAC04 (ms)"),
426
- timingFunc: z.string().optional().describe("\uD0C0\uC774\uBC0D \uD568\uC218"),
427
- leaveTimingFunc: z.string().optional().describe("\uD1F4\uC7A5 \uD0C0\uC774\uBC0D \uD568\uC218")
428
- }).describe("\uBAA8\uB2EC \uC560\uB2C8\uBA54\uC774\uC158 \uC635\uC158");
422
+ name: z.string().optional().describe("Animation name"),
423
+ mobile: z.string().optional().describe("Mobile animation name"),
424
+ delay: z.number().optional().describe("Delay (ms)"),
425
+ duration: z.number().optional().describe("Duration (ms)"),
426
+ timingFunc: z.string().optional().describe("Timing function"),
427
+ leaveTimingFunc: z.string().optional().describe("Exit timing function")
428
+ }).describe("Modal animation options");
429
429
  var modalTemplatePropsSchema = z.object({
430
- title: z.any().optional().describe("\uD5E4\uB354 \uC81C\uBAA9 (ReactNode)"),
431
- desc: z.any().optional().describe("\uD5E4\uB354 \uC124\uBA85 (ReactNode)"),
430
+ title: z.any().optional().describe("Header title (ReactNode)"),
431
+ desc: z.any().optional().describe("Header description (ReactNode)"),
432
432
  layout: z.enum([
433
433
  "default",
434
434
  "bottom-sheet",
@@ -437,30 +437,30 @@ var modalTemplatePropsSchema = z.object({
437
437
  "full-page",
438
438
  "full-page-reverse",
439
439
  "draggable"
440
- ]).default("default").describe("\uB808\uC774\uC544\uC6C3"),
441
- showDim: z.boolean().default(true).describe("\uB524 \uBC30\uACBD \uD45C\uC2DC"),
442
- dimClose: z.boolean().default(true).describe("\uB524 \uD074\uB9AD \uC2DC \uB2EB\uAE30"),
443
- hideHeader: z.boolean().default(false).describe("\uD5E4\uB354 \uC228\uAE40"),
444
- hideFooter: z.boolean().default(true).describe("\uD478\uD130 \uC228\uAE40"),
445
- footer: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uD478\uD130 (ReactElement)"),
446
- animation: animationOptionsSchema.optional().describe("\uBAA8\uB2EC \uC560\uB2C8\uBA54\uC774\uC158"),
447
- enableDrag: z.boolean().default(true).describe("\uB4DC\uB798\uADF8 \uD65C\uC131\uD654 (\uBC14\uD140\uC2DC\uD2B8\xB7\uB4DC\uB798\uADF8 \uAC00\uB2A5 \uB808\uC774\uC544\uC6C3)"),
448
- dragPersistKey: z.string().optional().describe("\uB4DC\uB798\uADF8 \uC704\uCE58 \uC800\uC7A5 \uD0A4"),
449
- close: z.any().describe("\uBAA8\uB2EC \uB2EB\uAE30 \uD568\uC218 (isAnimation?: boolean) => void (\uC790\uB3D9 \uC8FC\uC785)"),
450
- children: z.any().describe("\uBAA8\uB2EC \uBCF8\uBB38 (ReactNode, \uD544\uC218)"),
451
- className: z.string().optional().describe("\uB8E8\uD2B8 \uB798\uD37C \uC2A4\uD0C0\uC77C"),
452
- innerClassName: z.string().optional().describe("\uBAA8\uB2EC \uBCF8\uCCB4 \uC2A4\uD0C0\uC77C"),
453
- bodyClassName: z.string().optional().describe("\uBC14\uB514 \uC601\uC5ED \uC2A4\uD0C0\uC77C"),
454
- footerClassName: z.string().optional().describe("\uD478\uD130 \uC601\uC5ED \uC2A4\uD0C0\uC77C"),
455
- dimClassName: z.string().optional().describe("\uB524 \uBC30\uACBD \uC2A4\uD0C0\uC77C"),
456
- headerClassName: z.string().optional().describe("\uD5E4\uB354 \uC601\uC5ED \uC2A4\uD0C0\uC77C")
440
+ ]).default("default").describe("Layout"),
441
+ showDim: z.boolean().default(true).describe("Show dim overlay"),
442
+ dimClose: z.boolean().default(true).describe("Close on dim click"),
443
+ hideHeader: z.boolean().default(false).describe("Hide header"),
444
+ hideFooter: z.boolean().default(true).describe("Hide footer"),
445
+ footer: z.any().optional().describe("Custom footer (ReactElement)"),
446
+ animation: animationOptionsSchema.optional().describe("Modal animation"),
447
+ enableDrag: z.boolean().default(true).describe("Enable drag (bottom-sheet/draggable layouts)"),
448
+ dragPersistKey: z.string().optional().describe("Drag position persistence key"),
449
+ close: z.any().describe("Modal close function (isAnimation?: boolean) => void (auto-injected)"),
450
+ children: z.any().describe("Modal body (ReactNode, required)"),
451
+ className: z.string().optional().describe("Root wrapper style"),
452
+ innerClassName: z.string().optional().describe("Modal body style"),
453
+ bodyClassName: z.string().optional().describe("Body area style"),
454
+ footerClassName: z.string().optional().describe("Footer area style"),
455
+ dimClassName: z.string().optional().describe("Dim overlay style"),
456
+ headerClassName: z.string().optional().describe("Header area style")
457
457
  }).describe(
458
- "\uBAA8\uB2EC \uD15C\uD50C\uB9BF. \uBAA8\uB4E0 \uBAA8\uB2EC \uCEF4\uD3EC\uB10C\uD2B8\uB294 \uBC18\uB4DC\uC2DC ModalTemplate\uC73C\uB85C \uAC10\uC2F8\uC57C \uD55C\uB2E4."
458
+ "Modal template. All modal components must be wrapped with ModalTemplate."
459
459
  );
460
460
  var modalCallSchema = z.object({
461
- component: z.any().describe("\uBAA8\uB2EC \uCEF4\uD3EC\uB10C\uD2B8 (\uD544\uC218). close/resolve\uB97C \uC790\uB3D9\uC73C\uB85C props\uB85C \uBC1B\uC74C"),
462
- props: z.record(z.any()).optional().describe("\uCEF4\uD3EC\uB10C\uD2B8\uC5D0 \uC804\uB2EC\uD560 props"),
463
- id: z.string().optional().describe("\uBAA8\uB2EC ID (\uC911\uBCF5 \uCCB4\uD06C \uC2DC \uC0AC\uC6A9)"),
461
+ component: z.any().describe("Modal component (required). Automatically receives close/resolve as props"),
462
+ props: z.record(z.any()).optional().describe("Props to pass to component"),
463
+ id: z.string().optional().describe("Modal ID (used for duplicate check)"),
464
464
  layout: z.enum([
465
465
  "default",
466
466
  "bottom-sheet",
@@ -469,93 +469,93 @@ var modalCallSchema = z.object({
469
469
  "full-page",
470
470
  "full-page-reverse",
471
471
  "draggable"
472
- ]).optional().describe("\uB808\uC774\uC544\uC6C3"),
473
- animation: animationOptionsSchema.optional().describe("\uBAA8\uB2EC \uC560\uB2C8\uBA54\uC774\uC158"),
474
- scrollEnable: z.boolean().optional().describe("\uBC30\uACBD \uC2A4\uD06C\uB864 \uD5C8\uC6A9"),
475
- isToggle: z.boolean().optional().describe("\uD1A0\uAE00 \uBAA8\uB4DC (\uAC19\uC740 \uBAA8\uB2EC \uC7AC\uD638\uCD9C \uC2DC \uB2EB\uAE30)"),
476
- isAlone: z.boolean().optional().describe("\uB2E8\uB3C5 \uBAA8\uB4DC (\uAE30\uC874 \uBAA8\uB2EC \uBAA8\uB450 \uB2EB\uACE0 \uC5F4\uAE30)"),
477
- duplicateCheck: z.boolean().optional().describe("\uB3D9\uC77C \uCEF4\uD3EC\uB10C\uD2B8 \uC911\uBCF5 \uC5F4\uAE30 \uBC29\uC9C0"),
478
- disableEscapeKeyPress: z.boolean().optional().describe("ESC \uD0A4\uB85C \uB2EB\uAE30 \uBE44\uD65C\uC131\uD654"),
479
- componentName: z.string().optional().describe("\uBAA8\uB2EC \uC2DD\uBCC4 \uC774\uB984 (\uC911\uBCF5 \uCCB4\uD06C, \uBAA8\uB2EC \uAC80\uC0C9 \uC2DC \uC0AC\uC6A9)"),
480
- onOpen: z.any().optional().describe("\uBAA8\uB2EC \uC5F4\uB9B4 \uB54C \uCF5C\uBC31"),
481
- onClose: z.any().optional().describe("\uBAA8\uB2EC \uB2EB\uD790 \uB54C \uCF5C\uBC31")
472
+ ]).optional().describe("Layout"),
473
+ animation: animationOptionsSchema.optional().describe("Modal animation"),
474
+ scrollEnable: z.boolean().optional().describe("Allow background scroll"),
475
+ isToggle: z.boolean().optional().describe("Toggle mode (close on re-call of same modal)"),
476
+ isAlone: z.boolean().optional().describe("Alone mode (close all existing modals before opening)"),
477
+ duplicateCheck: z.boolean().optional().describe("Prevent duplicate opening of same component"),
478
+ disableEscapeKeyPress: z.boolean().optional().describe("Disable close via ESC key"),
479
+ componentName: z.string().optional().describe("Modal identifier name (used for duplicate check, modal search)"),
480
+ onOpen: z.any().optional().describe("Callback when modal opens"),
481
+ onClose: z.any().optional().describe("Callback when modal closes")
482
482
  }).describe(
483
- "modal() \uD568\uC218 \uD638\uCD9C \uC635\uC158. component\uB294 close/resolve\uB97C \uC790\uB3D9\uC73C\uB85C props\uB85C \uBC1B\uB294\uB2E4."
483
+ "modal() function call options. component automatically receives close/resolve as props."
484
484
  );
485
485
  var errorBoundaryPropsSchema = z.object({
486
- children: z.any().describe("\uAC10\uC2F8\uC9C8 \uC790\uC2DD \uC694\uC18C (ReactNode, \uD544\uC218)"),
487
- fallback: z.any().optional().describe("\uC5D0\uB7EC \uBC1C\uC0DD \uC2DC \uB300\uCCB4 UI (ReactNode)"),
488
- onError: z.any().optional().describe("\uC5D0\uB7EC \uBC1C\uC0DD \uCF5C\uBC31 (error: Error, errorInfo: ErrorInfo) => void")
489
- }).describe("\uC5D0\uB7EC \uACBD\uACC4. \uD558\uC704 \uCEF4\uD3EC\uB10C\uD2B8 \uB80C\uB354\uB9C1 \uC5D0\uB7EC\uB97C \uC7A1\uC544 fallback UI \uD45C\uC2DC.");
486
+ children: z.any().describe("Child elements to wrap (ReactNode, required)"),
487
+ fallback: z.any().optional().describe("Fallback UI on error (ReactNode)"),
488
+ onError: z.any().optional().describe("Error callback (error: Error, errorInfo: ErrorInfo) => void")
489
+ }).describe("Error boundary. Catches child component render errors and displays fallback UI.");
490
490
  var clientOnlyPropsSchema = z.object({
491
- children: z.any().describe("\uD074\uB77C\uC774\uC5B8\uD2B8\uC5D0\uC11C\uB9CC \uB80C\uB354\uB9C1\uD560 \uC694\uC18C (ReactNode, \uD544\uC218)"),
492
- fallback: z.any().optional().describe("SSR \uC911 \uD45C\uC2DC\uD560 \uB300\uCCB4 UI (ReactNode, \uAE30\uBCF8: null)")
493
- }).describe("\uD074\uB77C\uC774\uC5B8\uD2B8 \uC804\uC6A9 \uB80C\uB354\uB9C1. SSR \uD658\uACBD\uC5D0\uC11C hydration mismatch \uBC29\uC9C0.");
491
+ children: z.any().describe("Element to render only on client (ReactNode, required)"),
492
+ fallback: z.any().optional().describe("Fallback UI during SSR (ReactNode, default: null)")
493
+ }).describe("Client-only rendering. Prevents hydration mismatch in SSR environments.");
494
494
  var themeProviderPropsSchema = z.object({
495
- children: z.any().describe("\uC571 \uB8E8\uD2B8 \uC694\uC18C (ReactNode, \uD544\uC218)"),
496
- defaultTheme: z.string().optional().describe('\uAE30\uBCF8 \uD14C\uB9C8 (\uC608: "dark", "light")'),
497
- storageKey: z.string().optional().describe('localStorage \uC800\uC7A5 \uD0A4 (\uAE30\uBCF8: "theme")'),
498
- themes: z.array(z.string()).optional().describe('\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD14C\uB9C8 \uBAA9\uB85D (\uAE30\uBCF8: ["light", "dark"])'),
499
- attribute: z.union([z.string(), z.array(z.string())]).optional().describe('\uD14C\uB9C8 \uC801\uC6A9 HTML \uC18D\uC131 (\uAE30\uBCF8: "data-theme")'),
500
- enableSystem: z.boolean().optional().describe("\uC2DC\uC2A4\uD15C \uD14C\uB9C8 \uAC10\uC9C0 \uD65C\uC131\uD654"),
501
- disableTransitionOnChange: z.boolean().optional().describe("\uD14C\uB9C8 \uC804\uD658 \uC2DC \uD2B8\uB79C\uC9C0\uC158 \uBE44\uD65C\uC131\uD654"),
502
- forcedTheme: z.string().optional().describe("\uAC15\uC81C \uD14C\uB9C8 (\uC0AC\uC6A9\uC790 \uBCC0\uACBD \uBD88\uAC00)"),
503
- enableColorScheme: z.boolean().optional().describe("color-scheme CSS \uC18D\uC131 \uC790\uB3D9 \uC124\uC815"),
495
+ children: z.any().describe("App root element (ReactNode, required)"),
496
+ defaultTheme: z.string().optional().describe('Default theme (e.g. "dark", "light")'),
497
+ storageKey: z.string().optional().describe('localStorage storage key (default: "theme")'),
498
+ themes: z.array(z.string()).optional().describe('Available theme list (default: ["light", "dark"])'),
499
+ attribute: z.union([z.string(), z.array(z.string())]).optional().describe('Theme HTML attribute (default: "data-theme")'),
500
+ enableSystem: z.boolean().optional().describe("Enable system theme detection"),
501
+ disableTransitionOnChange: z.boolean().optional().describe("Disable transitions on theme change"),
502
+ forcedTheme: z.string().optional().describe("Forced theme (user cannot change)"),
503
+ enableColorScheme: z.boolean().optional().describe("Auto-set color-scheme CSS property"),
504
504
  nonce: z.string().optional().describe("CSP nonce")
505
505
  }).describe(
506
- "\uD14C\uB9C8 \uC81C\uACF5\uC790. next-themes \uAE30\uBC18. useTheme() \uD6C5\uC73C\uB85C \uD14C\uB9C8 \uC0C1\uD0DC \uC811\uADFC."
506
+ "Theme provider. Based on next-themes. Access theme state via useTheme() hook."
507
507
  );
508
508
  var tablePropsSchema = z.object({
509
- list: z.array(z.any()).nullable().describe("\uB370\uC774\uD130 \uBC30\uC5F4. null/undefined\uC774\uBA74 \uB85C\uB529 \uC0C1\uD0DC (\uD544\uC218)"),
510
- children: z.any().describe("\uD589 \uB80C\uB354 \uD568\uC218 ({ item, index }) => ReactNode (\uD544\uC218)"),
511
- hideThead: z.boolean().optional().describe("\uD14C\uC774\uBE14 \uD5E4\uB354 \uC228\uAE40"),
512
- loading: z.boolean().optional().describe("\uB85C\uB529 \uC0C1\uD0DC \uAC15\uC81C"),
513
- loadingType: z.enum(["loading", "skeleton"]).default("skeleton").describe("\uB85C\uB529 \uD45C\uC2DC \uBC29\uC2DD"),
514
- loadingElement: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uB85C\uB529 \uC694\uC18C (ReactElement)"),
515
- skeletonCount: z.number().default(10).describe("\uC2A4\uCF08\uB808\uD1A4 \uD589 \uC218"),
516
- noDataMsg: z.any().optional().describe("\uB370\uC774\uD130 \uC5C6\uC744 \uB54C \uBA54\uC2DC\uC9C0 (ReactElement | string)"),
517
- notification: z.any().optional().describe("\uD14C\uC774\uBE14 \uC0C1\uB2E8 \uC54C\uB9BC \uC601\uC5ED (ReactNode)"),
518
- sortUpElement: z.any().optional().describe("\uC624\uB984\uCC28\uC21C \uC815\uB82C \uC544\uC774\uCF58 (ReactElement)"),
519
- sortDownElement: z.any().optional().describe("\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C \uC544\uC774\uCF58 (ReactElement)"),
520
- className: z.string().optional().describe("\uD14C\uC774\uBE14 \uB798\uD37C \uC2A4\uD0C0\uC77C"),
521
- theadClassName: z.string().optional().describe("\uD5E4\uB354 \uD589 \uC2A4\uD0C0\uC77C")
509
+ list: z.array(z.any()).nullable().describe("Data array. null/undefined = loading state (required)"),
510
+ children: z.any().describe("Row render function ({ item, index }) => ReactNode (required)"),
511
+ hideThead: z.boolean().optional().describe("Hide table header"),
512
+ loading: z.boolean().optional().describe("Force loading state"),
513
+ loadingType: z.enum(["loading", "skeleton"]).default("skeleton").describe("Loading display type"),
514
+ loadingElement: z.any().optional().describe("Custom loading element (ReactElement)"),
515
+ skeletonCount: z.number().default(10).describe("Skeleton row count"),
516
+ noDataMsg: z.any().optional().describe("No data message (ReactElement | string)"),
517
+ notification: z.any().optional().describe("Table top notification area (ReactNode)"),
518
+ sortUpElement: z.any().optional().describe("Ascending sort icon (ReactElement)"),
519
+ sortDownElement: z.any().optional().describe("Descending sort icon (ReactElement)"),
520
+ className: z.string().optional().describe("Table wrapper style"),
521
+ theadClassName: z.string().optional().describe("Header row style")
522
522
  }).describe(
523
- "\uD14C\uC774\uBE14. TdColumn\uC73C\uB85C \uCEEC\uB7FC \uC815\uC758, TableRow\uB85C \uD589 \uB798\uD551. \uC815\uB82C/\uC2A4\uCF08\uB808\uD1A4 \uB85C\uB529 \uB0B4\uC7A5."
523
+ "Table. Column definitions via TdColumn, row wrapping via TableRow. Built-in sorting/skeleton loading."
524
524
  );
525
525
  var tableRowPropsSchema = z.object({
526
- variant: z.enum(["default", "accent"]).default("default").describe("\uD589 \uC2A4\uD0C0\uC77C"),
527
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC"),
528
- children: z.any().describe("TdColumn \uBAA9\uB85D (ReactNode, \uD544\uC218)"),
529
- onClick: z.any().optional().describe("\uD589 \uD074\uB9AD \uCF5C\uBC31 (e: MouseEvent) => void")
530
- }).describe("\uD14C\uC774\uBE14 \uD589. Table \uB0B4\uBD80\uC5D0\uC11C \uC0AC\uC6A9.");
526
+ variant: z.enum(["default", "accent"]).default("default").describe("Row style"),
527
+ className: z.string().optional().describe("Style override"),
528
+ children: z.any().describe("TdColumn list (ReactNode, required)"),
529
+ onClick: z.any().optional().describe("Row click callback (e: MouseEvent) => void")
530
+ }).describe("Table row. Used inside Table.");
531
531
  var tdColumnPropsSchema = z.object({
532
- label: z.any().optional().describe("\uD5E4\uB354 \uB77C\uBCA8 (ReactElement | string)"),
533
- fieldId: z.string().nullable().describe("\uCEEC\uB7FC \uC2DD\uBCC4\uC790 (\uC815\uB82C \uD0A4, \uD544\uC218)"),
534
- size: z.union([z.number(), z.string()]).optional().describe("\uCEEC\uB7FC \uB108\uBE44 (number \u2192 px, string \u2192 CSS\uAC12)"),
535
- align: z.enum(["left", "center", "right"]).default("left").describe("\uD14D\uC2A4\uD2B8 \uC815\uB82C"),
536
- textOverflow: z.enum(["auto", "truncate", "wrap", "break-all"]).default("truncate").describe("\uD14D\uC2A4\uD2B8 \uB118\uCE68 \uCC98\uB9AC"),
537
- highlightKey: z.string().nullable().optional().describe("\uD638\uBC84 \uD558\uC774\uB77C\uC774\uD2B8 \uADF8\uB8F9 \uD0A4"),
538
- colSpan: z.number().optional().describe("\uC5F4 \uBCD1\uD569"),
539
- rowSpan: z.number().optional().describe("\uD589 \uBCD1\uD569"),
540
- thColSpan: z.number().optional().describe("\uD5E4\uB354 colSpan (<th>)"),
541
- thRowSpan: z.number().optional().describe("\uD5E4\uB354 rowSpan (<th>)"),
542
- enableSorting: z.boolean().optional().describe("\uC815\uB82C \uD65C\uC131\uD654"),
543
- order: z.enum(["desc", "asc", ""]).optional().describe("\uD604\uC7AC \uC815\uB82C \uBC29\uD5A5"),
544
- sortValue: z.union([z.string(), z.number()]).optional().describe("\uC815\uB82C \uAE30\uC900 \uAC12"),
545
- handleClickSort: z.any().optional().describe("\uC815\uB82C \uD074\uB9AD \uCF5C\uBC31 ({ index, fieldId, order }) => void"),
546
- children: z.any().describe("\uC140 \uB0B4\uC6A9 (ReactNode, \uD544\uC218)"),
547
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
548
- }).describe("\uD14C\uC774\uBE14 \uC140/\uCEEC\uB7FC \uC815\uC758. TableRow \uB0B4\uBD80\uC5D0\uC11C \uC0AC\uC6A9.");
532
+ label: z.any().optional().describe("Header label (ReactElement | string)"),
533
+ fieldId: z.string().nullable().describe("Column identifier (sort key, required)"),
534
+ size: z.union([z.number(), z.string()]).optional().describe("Column width (number \u2192 px, string \u2192 CSS value)"),
535
+ align: z.enum(["left", "center", "right"]).default("left").describe("Text alignment"),
536
+ textOverflow: z.enum(["auto", "truncate", "wrap", "break-all"]).default("truncate").describe("Text overflow handling"),
537
+ highlightKey: z.string().nullable().optional().describe("Hover highlight group key"),
538
+ colSpan: z.number().optional().describe("Column span"),
539
+ rowSpan: z.number().optional().describe("Row span"),
540
+ thColSpan: z.number().optional().describe("Header colSpan (<th>)"),
541
+ thRowSpan: z.number().optional().describe("Header rowSpan (<th>)"),
542
+ enableSorting: z.boolean().optional().describe("Enable sorting"),
543
+ order: z.enum(["desc", "asc", ""]).optional().describe("Current sort direction"),
544
+ sortValue: z.union([z.string(), z.number()]).optional().describe("Sort criterion value"),
545
+ handleClickSort: z.any().optional().describe("Sort click callback ({ index, fieldId, order }) => void"),
546
+ children: z.any().describe("Cell content (ReactNode, required)"),
547
+ className: z.string().optional().describe("Style override")
548
+ }).describe("Table cell/column definition. Used inside TableRow.");
549
549
  var toastOptionsSchema = z.object({
550
- description: z.any().optional().describe("\uD1A0\uC2A4\uD2B8 \uBD80\uC81C\uBAA9 (ReactNode)"),
551
- duration: z.number().optional().describe("\uC790\uB3D9 \uB2EB\uD798 \uC2DC\uAC04 (ms). \uAE30\uBCF8 4000"),
552
- icon: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uC544\uC774\uCF58 (ReactNode)"),
553
- action: z.any().optional().describe("\uC561\uC158 \uBC84\uD2BC. { label: ReactNode, onClick: () => void }"),
554
- cancel: z.any().optional().describe("\uCDE8\uC18C \uBC84\uD2BC. { label: ReactNode, onClick: () => void }"),
555
- closeButton: z.boolean().optional().describe("\uB2EB\uAE30(X) \uBC84\uD2BC \uD45C\uC2DC"),
556
- dismissible: z.boolean().optional().describe("\uC2A4\uC640\uC774\uD504/\uD074\uB9AD\uC73C\uB85C \uB2EB\uAE30 \uAC00\uB2A5 \uC5EC\uBD80"),
557
- richColors: z.boolean().optional().describe("success/error/warning/info\uC5D0 \uAC15\uD55C \uC0C9\uC0C1 \uC801\uC6A9"),
558
- invert: z.boolean().optional().describe("\uC0C9\uC0C1 \uBC18\uC804 (\uB2E4\uD06C\u2194\uB77C\uC774\uD2B8)"),
550
+ description: z.any().optional().describe("Toast subtitle (ReactNode)"),
551
+ duration: z.number().optional().describe("Auto-dismiss duration (ms). Default 4000"),
552
+ icon: z.any().optional().describe("Custom icon (ReactNode)"),
553
+ action: z.any().optional().describe("Action button. { label: ReactNode, onClick: () => void }"),
554
+ cancel: z.any().optional().describe("Cancel button. { label: ReactNode, onClick: () => void }"),
555
+ closeButton: z.boolean().optional().describe("Show close (X) button"),
556
+ dismissible: z.boolean().optional().describe("Allow dismiss via swipe/click"),
557
+ richColors: z.boolean().optional().describe("Apply strong colors for success/error/warning/info"),
558
+ invert: z.boolean().optional().describe("Invert colors (dark\u2194light)"),
559
559
  position: z.enum([
560
560
  "top-left",
561
561
  "top-center",
@@ -563,15 +563,15 @@ var toastOptionsSchema = z.object({
563
563
  "bottom-left",
564
564
  "bottom-center",
565
565
  "bottom-right"
566
- ]).optional().describe("\uC774 \uD1A0\uC2A4\uD2B8\uB9CC \uAC1C\uBCC4 \uC704\uCE58 \uC9C0\uC815"),
567
- onDismiss: z.any().optional().describe("\uB2EB\uD790 \uB54C \uCF5C\uBC31 (toast: ToastT) => void"),
568
- onAutoClose: z.any().optional().describe("\uC790\uB3D9 \uB2EB\uD798 \uC2DC \uCF5C\uBC31 (toast: ToastT) => void"),
569
- className: z.string().optional().describe("\uD1A0\uC2A4\uD2B8 \uCEE4\uC2A4\uD140 \uD074\uB798\uC2A4"),
570
- style: z.any().optional().describe("\uD1A0\uC2A4\uD2B8 \uC778\uB77C\uC778 \uC2A4\uD0C0\uC77C (CSSProperties)"),
571
- unstyled: z.boolean().optional().describe("\uAE30\uBCF8 \uC2A4\uD0C0\uC77C \uC81C\uAC70 (\uCEE4\uC2A4\uD140 \uC2A4\uD0C0\uC77C\uB9C1 \uC2DC)"),
572
- id: z.union([z.string(), z.number()]).optional().describe("\uD1A0\uC2A4\uD2B8 ID (\uC911\uBCF5 \uBC29\uC9C0 \uB610\uB294 \uC5C5\uB370\uC774\uD2B8 \uC2DC \uC0AC\uC6A9)")
566
+ ]).optional().describe("Individual position for this toast"),
567
+ onDismiss: z.any().optional().describe("Dismiss callback (toast: ToastT) => void"),
568
+ onAutoClose: z.any().optional().describe("Auto-close callback (toast: ToastT) => void"),
569
+ className: z.string().optional().describe("Toast custom class"),
570
+ style: z.any().optional().describe("Toast inline style (CSSProperties)"),
571
+ unstyled: z.boolean().optional().describe("Remove default styles (for custom styling)"),
572
+ id: z.union([z.string(), z.number()]).optional().describe("Toast ID (for deduplication or updates)")
573
573
  }).describe(
574
- "toast() \uD638\uCD9C \uC635\uC158. toast(message, options) \uD615\uD0DC\uB85C \uC0AC\uC6A9. toast.custom(jsx)\uC73C\uB85C \uC644\uC804 \uCEE4\uC2A4\uD140 \uAC00\uB2A5."
574
+ "toast() call options. Used as toast(message, options). Fully customizable via toast.custom(jsx)."
575
575
  );
576
576
  var toasterPropsSchema = z.object({
577
577
  position: z.enum([
@@ -581,19 +581,19 @@ var toasterPropsSchema = z.object({
581
581
  "bottom-left",
582
582
  "bottom-center",
583
583
  "bottom-right"
584
- ]).default("top-center").describe("\uD1A0\uC2A4\uD2B8 \uAE30\uBCF8 \uC704\uCE58"),
585
- unstyled: z.boolean().default(false).describe("\uAE30\uBCF8 \uC2A4\uD0C0\uC77C \uC81C\uAC70 (\uCEE4\uC2A4\uD140 \uC2A4\uD0C0\uC77C\uB9C1 \uC2DC)"),
586
- theme: z.enum(["light", "dark", "system"]).optional().describe("\uD14C\uB9C8 \uC124\uC815"),
587
- richColors: z.boolean().optional().describe("success/error/warning/info\uC5D0 \uAC15\uD55C \uC0C9\uC0C1 \uC801\uC6A9"),
588
- expand: z.boolean().optional().describe("\uD1A0\uC2A4\uD2B8\uB97C \uD56D\uC0C1 \uD3BC\uCE5C \uC0C1\uD0DC\uB85C \uD45C\uC2DC"),
589
- duration: z.number().optional().describe("\uC804\uC5ED \uC790\uB3D9 \uB2EB\uD798 \uC2DC\uAC04 (ms). \uAE30\uBCF8 4000"),
590
- visibleToasts: z.number().optional().describe("\uB3D9\uC2DC\uC5D0 \uBCF4\uC774\uB294 \uCD5C\uB300 \uD1A0\uC2A4\uD2B8 \uC218"),
591
- closeButton: z.boolean().optional().describe("\uBAA8\uB4E0 \uD1A0\uC2A4\uD2B8\uC5D0 \uB2EB\uAE30 \uBC84\uD2BC \uD45C\uC2DC"),
592
- gap: z.number().optional().describe("\uD1A0\uC2A4\uD2B8 \uAC04 \uAC04\uACA9 (px)"),
593
- offset: z.any().optional().describe("\uD654\uBA74 \uAC00\uC7A5\uC790\uB9AC\uB85C\uBD80\uD130 \uAC04\uACA9. string | number | { top, right, bottom, left }"),
594
- dir: z.enum(["ltr", "rtl", "auto"]).optional().describe("\uD14D\uC2A4\uD2B8 \uBC29\uD5A5")
584
+ ]).default("top-center").describe("Default toast position"),
585
+ unstyled: z.boolean().default(false).describe("Remove default styles (for custom styling)"),
586
+ theme: z.enum(["light", "dark", "system"]).optional().describe("Theme setting"),
587
+ richColors: z.boolean().optional().describe("Apply strong colors for success/error/warning/info"),
588
+ expand: z.boolean().optional().describe("Always show toasts in expanded state"),
589
+ duration: z.number().optional().describe("Global auto-dismiss duration (ms). Default 4000"),
590
+ visibleToasts: z.number().optional().describe("Maximum visible toasts at once"),
591
+ closeButton: z.boolean().optional().describe("Show close button on all toasts"),
592
+ gap: z.number().optional().describe("Gap between toasts (px)"),
593
+ offset: z.any().optional().describe("Offset from screen edge. string | number | { top, right, bottom, left }"),
594
+ dir: z.enum(["ltr", "rtl", "auto"]).optional().describe("Text direction")
595
595
  }).describe(
596
- "Toaster \uC124\uC815. \uC571 \uB8E8\uD2B8\uC5D0 \uD55C \uBC88 \uBC30\uCE58. toast() \uD568\uC218\uB85C \uC54C\uB9BC \uD45C\uC2DC. sonner \uAE30\uBC18."
596
+ "Toaster config. Place once at app root. Display notifications via toast(). Based on sonner."
597
597
  );
598
598
 
599
599
  export { accordionPropsSchema, avatarPropsSchema, buttonPropsSchema, carouselButtonPropsSchema, carouselDotsPropsSchema, carouselPropsSchema, carouselSlidePropsSchema, checkBoxPropsSchema, chipPropsSchema, clientOnlyPropsSchema, countdownPropsSchema, counterPropsSchema, dataListPropsSchema, dividerPropsSchema, drawerClosePropsSchema, drawerContentPropsSchema, drawerDescriptionPropsSchema, drawerPropsSchema, drawerTitlePropsSchema, drawerTriggerPropsSchema, ellipsisPropsSchema, errorBoundaryPropsSchema, infiniteScrollPropsSchema, marqueePropsSchema, modalCallSchema, modalTemplatePropsSchema, numberInputPropsSchema, paginationPropsSchema, popoverPropsSchema, radioGroupPropsSchema, radioItemPropsSchema, selectItemPropsSchema, selectPropsSchema, skeletonPropsSchema, spinnerPropsSchema, switchPropsSchema, tabPropsSchema, tablePropsSchema, tableRowPropsSchema, tdColumnPropsSchema, textAreaPropsSchema, textInputPropsSchema, themeProviderPropsSchema, toastOptionsSchema, toasterPropsSchema, tooltipPropsSchema, virtualGridPropsSchema, virtualListPropsSchema };