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