@nexus-cross/design-system 1.0.4-beta.1 → 1.0.4

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 (327) hide show
  1. package/cursor-rules/nexus-project-setup.mdc +167 -145
  2. package/cursor-rules/nexus-ui-api.mdc +894 -311
  3. package/cursor-rules/nexus-ui-components.mdc +179 -91
  4. package/dist/accordion.js +7 -7
  5. package/dist/accordion.mjs +2 -2
  6. package/dist/alert.d.mts +17 -0
  7. package/dist/alert.d.ts +17 -0
  8. package/dist/alert.js +16 -0
  9. package/dist/alert.mjs +3 -0
  10. package/dist/avatar.js +4 -4
  11. package/dist/avatar.mjs +2 -2
  12. package/dist/badge.d.mts +18 -0
  13. package/dist/badge.d.ts +18 -0
  14. package/dist/badge.js +16 -0
  15. package/dist/badge.mjs +3 -0
  16. package/dist/breadcrumb.d.mts +15 -0
  17. package/dist/breadcrumb.d.ts +15 -0
  18. package/dist/breadcrumb.js +12 -0
  19. package/dist/breadcrumb.mjs +3 -0
  20. package/dist/button.js +4 -4
  21. package/dist/button.mjs +2 -2
  22. package/dist/carousel.js +8 -8
  23. package/dist/carousel.mjs +2 -2
  24. package/dist/checkbox.js +5 -5
  25. package/dist/checkbox.mjs +2 -2
  26. package/dist/chip.d.mts +1 -1
  27. package/dist/chip.d.ts +1 -1
  28. package/dist/chip.js +4 -4
  29. package/dist/chip.mjs +2 -2
  30. package/dist/chunks/{chunk-5TBXVD56.js → chunk-2MC7XJSE.js} +16 -6
  31. package/dist/chunks/chunk-2N2EPBO4.js +120 -0
  32. package/dist/chunks/{chunk-BEA727LO.mjs → chunk-2RPRCWKV.mjs} +57 -26
  33. package/dist/chunks/chunk-2UPGFY6E.mjs +76 -0
  34. package/dist/chunks/{chunk-5I2VRWWU.js → chunk-2ZXDXO4I.js} +32 -38
  35. package/dist/chunks/{chunk-RLP3U52D.mjs → chunk-33UFQJIO.mjs} +22 -40
  36. package/dist/chunks/{chunk-AOVU67NI.mjs → chunk-3HHJORN7.mjs} +23 -25
  37. package/dist/chunks/{chunk-TWHDXCKR.js → chunk-3PCNRCTB.js} +8 -8
  38. package/dist/chunks/chunk-3ZWN66YH.js +53 -0
  39. package/dist/chunks/chunk-4ENXP7WH.js +224 -0
  40. package/dist/chunks/{chunk-YEGPB7A7.js → chunk-5JHJNN2K.js} +4 -4
  41. package/dist/chunks/chunk-5PQ3UCKF.js +99 -0
  42. package/dist/chunks/chunk-6BWOKTVQ.mjs +87 -0
  43. package/dist/chunks/chunk-6DBRL6NA.mjs +81 -0
  44. package/dist/chunks/{chunk-C3E7CSKG.mjs → chunk-6FMDO6TT.mjs} +7 -8
  45. package/dist/chunks/{chunk-76CY4STF.js → chunk-7G65JBTN.js} +34 -66
  46. package/dist/chunks/{chunk-GMIGQ5VP.mjs → chunk-ADO7PDLY.mjs} +15 -35
  47. package/dist/chunks/{chunk-ZINDMFOI.js → chunk-AFSEYJZT.js} +24 -32
  48. package/dist/chunks/chunk-B5O6W3Z4.mjs +73 -0
  49. package/dist/chunks/{chunk-6FHK6CBR.js → chunk-B6G5TJRO.js} +7 -8
  50. package/dist/chunks/chunk-BBLBTOP4.js +205 -0
  51. package/dist/chunks/{chunk-5XVEYVYA.js → chunk-BLGQHR3M.js} +5 -8
  52. package/dist/chunks/{chunk-LVTD2UQN.mjs → chunk-BPUQ2CO2.mjs} +2 -2
  53. package/dist/chunks/{chunk-AWBGWBFS.js → chunk-BSZ2LN6E.js} +21 -27
  54. package/dist/chunks/chunk-C2DSAJTL.js +109 -0
  55. package/dist/chunks/{chunk-KWPIEHD2.mjs → chunk-CA3SOLI3.mjs} +1 -1
  56. package/dist/chunks/{chunk-MPKRXMCJ.js → chunk-CSJDDREF.js} +7 -10
  57. package/dist/chunks/chunk-CUTMLBC3.mjs +86 -0
  58. package/dist/chunks/chunk-CV4GMFWP.js +174 -0
  59. package/dist/chunks/{chunk-SXLMI7CZ.mjs → chunk-CWMLTXOH.mjs} +162 -234
  60. package/dist/chunks/chunk-CZC76ZD5.js +10 -0
  61. package/dist/chunks/chunk-DICN6GKE.js +99 -0
  62. package/dist/chunks/{chunk-TLTEUIBY.js → chunk-DLFV7ZZV.js} +4 -4
  63. package/dist/chunks/chunk-DO6VK2QQ.mjs +108 -0
  64. package/dist/chunks/chunk-DYPPVXQF.js +143 -0
  65. package/dist/chunks/{chunk-GQP7IXH2.mjs → chunk-ECVAVQUY.mjs} +23 -31
  66. package/dist/chunks/{chunk-3CHRUKSJ.mjs → chunk-EHAUUUWB.mjs} +3 -3
  67. package/dist/chunks/chunk-EJY7IVSK.mjs +31 -0
  68. package/dist/chunks/{chunk-G4XJG7XI.js → chunk-EVOOTSY5.js} +3 -10
  69. package/dist/chunks/chunk-FUIBYZZ4.mjs +98 -0
  70. package/dist/chunks/{chunk-VH5FF6DZ.mjs → chunk-GX6GSWX3.mjs} +7 -7
  71. package/dist/chunks/chunk-H2G5FMRN.mjs +75 -0
  72. package/dist/chunks/chunk-H2V7RHYV.mjs +120 -0
  73. package/dist/chunks/{chunk-DDMZSNTG.js → chunk-HFBTS42N.js} +168 -240
  74. package/dist/chunks/{chunk-OGUTGD4J.mjs → chunk-HNLI646G.mjs} +71 -39
  75. package/dist/chunks/{chunk-C6H2UNOX.js → chunk-IE4DGLMH.js} +13 -21
  76. package/dist/chunks/{chunk-U76LT5GE.js → chunk-IOSIQLZL.js} +2 -2
  77. package/dist/chunks/{chunk-ZCMKIB5U.js → chunk-J5ZKGPBY.js} +33 -41
  78. package/dist/chunks/{chunk-JUZHWKGS.mjs → chunk-K2TBLM3F.mjs} +6 -12
  79. package/dist/chunks/chunk-KZ7S5VN2.js +7 -0
  80. package/dist/chunks/{chunk-FHPHDK3O.mjs → chunk-LI7SFBUQ.mjs} +4 -4
  81. package/dist/chunks/{chunk-7OEK2KX3.mjs → chunk-LMMON5AU.mjs} +4 -4
  82. package/dist/chunks/{chunk-6DZVNFVY.js → chunk-LOQXCHKL.js} +4 -12
  83. package/dist/chunks/{chunk-377KBJQG.js → chunk-MA2VCCIY.js} +19 -22
  84. package/dist/chunks/chunk-MCKOWMLS.mjs +8 -0
  85. package/dist/chunks/chunk-MMCA33FW.mjs +85 -0
  86. package/dist/chunks/{chunk-TR5JBBEA.mjs → chunk-MRRKW5QN.mjs} +31 -39
  87. package/dist/chunks/{chunk-76K6KXCT.js → chunk-NFIPQZ4O.js} +1 -1
  88. package/dist/chunks/chunk-NZHK76R3.js +109 -0
  89. package/dist/chunks/{chunk-I7YJB2F5.js → chunk-OMN5YQCE.js} +3 -3
  90. package/dist/chunks/{chunk-B7UU3FSS.mjs → chunk-P2T72N62.mjs} +4 -7
  91. package/dist/chunks/chunk-P3DZKXG4.js +116 -0
  92. package/dist/chunks/chunk-P73MEU7N.mjs +150 -0
  93. package/dist/chunks/chunk-PDJTSQOC.js +59 -0
  94. package/dist/chunks/{chunk-RXVYL4AU.js → chunk-PEIEVKD5.js} +7 -13
  95. package/dist/chunks/chunk-PI464222.mjs +5 -0
  96. package/dist/chunks/{chunk-IJG7J2VU.mjs → chunk-QZ4QR3XV.mjs} +30 -36
  97. package/dist/chunks/{chunk-6NTASYZO.js → chunk-RS3SBY3I.js} +61 -30
  98. package/dist/chunks/{chunk-AKIBUO5A.mjs → chunk-RX5UKRYK.mjs} +19 -26
  99. package/dist/chunks/chunk-S2GMEC43.js +109 -0
  100. package/dist/chunks/{chunk-WJ2OVQD3.mjs → chunk-SGNRVYYQ.mjs} +19 -25
  101. package/dist/chunks/{chunk-IB5UCYQY.mjs → chunk-SJMCPSVH.mjs} +15 -5
  102. package/dist/chunks/chunk-UKRU46PH.mjs +182 -0
  103. package/dist/chunks/{chunk-WNFJ4NJN.mjs → chunk-ULGYTBCT.mjs} +3 -11
  104. package/dist/chunks/{chunk-TXYYBJBQ.js → chunk-VGO4Z2WH.js} +73 -41
  105. package/dist/chunks/{chunk-LBKBCI2K.mjs → chunk-VIGRCJAE.mjs} +3 -10
  106. package/dist/chunks/chunk-VVXQZ4XH.mjs +93 -0
  107. package/dist/chunks/{chunk-Z7OKV6NW.mjs → chunk-W4GG5A7K.mjs} +12 -20
  108. package/dist/chunks/chunk-WGGBE4ZD.mjs +201 -0
  109. package/dist/chunks/{chunk-WSWD5ZUJ.js → chunk-WKCXACMZ.js} +20 -27
  110. package/dist/chunks/{chunk-GSLIY6WW.js → chunk-X2SHTVZQ.js} +17 -37
  111. package/dist/chunks/chunk-X3CTJ7TD.js +108 -0
  112. package/dist/chunks/{chunk-U6KOUYWX.mjs → chunk-XG6QG65W.mjs} +7 -10
  113. package/dist/chunks/chunk-XGIJZ3NZ.js +160 -0
  114. package/dist/chunks/chunk-YB5ZKHVB.js +64 -0
  115. package/dist/chunks/{chunk-Q7H6LCNN.js → chunk-YCG4FZC3.js} +23 -25
  116. package/dist/chunks/{chunk-JZ3PWHKS.mjs → chunk-YLO4UKSC.mjs} +18 -21
  117. package/dist/chunks/chunk-YO5MSDPX.mjs +36 -0
  118. package/dist/chunks/{chunk-Q2TMXHPK.js → chunk-YZV6FWE7.js} +25 -43
  119. package/dist/chunks/chunk-ZI4LN2B2.js +96 -0
  120. package/dist/chunks/chunk-ZU4AWAFT.mjs +137 -0
  121. package/dist/chunks/chunk-ZWSIIGA3.mjs +58 -0
  122. package/dist/countdown.js +4 -4
  123. package/dist/countdown.mjs +2 -2
  124. package/dist/counter.js +2 -2
  125. package/dist/counter.mjs +1 -1
  126. package/dist/data-list.js +5 -5
  127. package/dist/data-list.mjs +4 -4
  128. package/dist/date-picker.d.mts +17 -0
  129. package/dist/date-picker.d.ts +17 -0
  130. package/dist/date-picker.js +12 -0
  131. package/dist/date-picker.mjs +3 -0
  132. package/dist/divider.js +4 -4
  133. package/dist/divider.mjs +2 -2
  134. package/dist/drawer.d.mts +1 -1
  135. package/dist/drawer.d.ts +1 -1
  136. package/dist/drawer.js +11 -11
  137. package/dist/drawer.mjs +2 -2
  138. package/dist/dropdown-menu.d.mts +30 -0
  139. package/dist/dropdown-menu.d.ts +30 -0
  140. package/dist/dropdown-menu.js +32 -0
  141. package/dist/dropdown-menu.mjs +3 -0
  142. package/dist/ellipsis.js +3 -3
  143. package/dist/ellipsis.mjs +2 -2
  144. package/dist/empty-state.d.mts +16 -0
  145. package/dist/empty-state.d.ts +16 -0
  146. package/dist/empty-state.js +16 -0
  147. package/dist/empty-state.mjs +3 -0
  148. package/dist/error-boundary.d.mts +1 -1
  149. package/dist/error-boundary.d.ts +1 -1
  150. package/dist/error-boundary.js +2 -2
  151. package/dist/error-boundary.mjs +1 -1
  152. package/dist/index.d.mts +15 -0
  153. package/dist/index.d.ts +15 -0
  154. package/dist/index.js +322 -200
  155. package/dist/index.mjs +49 -35
  156. package/dist/infinite-scroll.js +3 -3
  157. package/dist/infinite-scroll.mjs +2 -2
  158. package/dist/marquee.js +3 -3
  159. package/dist/marquee.mjs +2 -2
  160. package/dist/modal/index.js +13 -13
  161. package/dist/modal/index.mjs +4 -4
  162. package/dist/number-input.d.mts +1 -1
  163. package/dist/number-input.d.ts +1 -1
  164. package/dist/number-input.js +5 -5
  165. package/dist/number-input.mjs +2 -2
  166. package/dist/nx-image.d.mts +13 -0
  167. package/dist/nx-image.d.ts +13 -0
  168. package/dist/nx-image.js +12 -0
  169. package/dist/nx-image.mjs +3 -0
  170. package/dist/pagination.d.mts +1 -0
  171. package/dist/pagination.d.ts +1 -0
  172. package/dist/pagination.js +5 -5
  173. package/dist/pagination.mjs +2 -2
  174. package/dist/popover.d.mts +1 -1
  175. package/dist/popover.d.ts +1 -1
  176. package/dist/popover.js +8 -8
  177. package/dist/popover.mjs +2 -2
  178. package/dist/price-input.d.mts +36 -0
  179. package/dist/price-input.d.ts +36 -0
  180. package/dist/price-input.js +16 -0
  181. package/dist/price-input.mjs +3 -0
  182. package/dist/progress.d.mts +18 -0
  183. package/dist/progress.d.ts +18 -0
  184. package/dist/progress.js +16 -0
  185. package/dist/progress.mjs +3 -0
  186. package/dist/radio-group.js +6 -6
  187. package/dist/radio-group.mjs +2 -2
  188. package/dist/schemas/_all.json +2356 -404
  189. package/dist/schemas/accordion.json +14 -11
  190. package/dist/schemas/alert.json +49 -0
  191. package/dist/schemas/avatar.json +13 -7
  192. package/dist/schemas/badge.json +76 -0
  193. package/dist/schemas/breadcrumb.json +47 -0
  194. package/dist/schemas/button.json +27 -9
  195. package/dist/schemas/carousel.json +10 -4
  196. package/dist/schemas/carouselButton.json +20 -0
  197. package/dist/schemas/carouselDots.json +17 -0
  198. package/dist/schemas/carouselSlide.json +20 -0
  199. package/dist/schemas/checkBox.json +33 -8
  200. package/dist/schemas/chip.json +15 -6
  201. package/dist/schemas/clientOnly.json +19 -0
  202. package/dist/schemas/countdown.json +10 -7
  203. package/dist/schemas/counter.json +15 -9
  204. package/dist/schemas/dataList.json +10 -10
  205. package/dist/schemas/datePicker.json +56 -0
  206. package/dist/schemas/divider.json +8 -5
  207. package/dist/schemas/drawer.json +24 -2
  208. package/dist/schemas/drawerClose.json +24 -0
  209. package/dist/schemas/drawerContent.json +9 -6
  210. package/dist/schemas/drawerDescription.json +20 -0
  211. package/dist/schemas/drawerTitle.json +20 -0
  212. package/dist/schemas/drawerTrigger.json +24 -0
  213. package/dist/schemas/dropdownMenu.json +83 -0
  214. package/dist/schemas/ellipsis.json +17 -7
  215. package/dist/schemas/emptyState.json +44 -0
  216. package/dist/schemas/errorBoundary.json +22 -0
  217. package/dist/schemas/infiniteScroll.json +18 -9
  218. package/dist/schemas/marquee.json +12 -6
  219. package/dist/schemas/modalCall.json +81 -3
  220. package/dist/schemas/modalTemplate.json +67 -14
  221. package/dist/schemas/numberInput.json +42 -12
  222. package/dist/schemas/nxImage.json +56 -0
  223. package/dist/schemas/pagination.json +13 -6
  224. package/dist/schemas/popover.json +18 -9
  225. package/dist/schemas/priceInput.json +104 -0
  226. package/dist/schemas/progress.json +63 -0
  227. package/dist/schemas/radioGroup.json +19 -9
  228. package/dist/schemas/radioItem.json +12 -5
  229. package/dist/schemas/select.json +15 -9
  230. package/dist/schemas/selectItem.json +7 -4
  231. package/dist/schemas/skeleton.json +12 -6
  232. package/dist/schemas/slider.json +78 -0
  233. package/dist/schemas/spinner.json +11 -4
  234. package/dist/schemas/stepper.json +73 -0
  235. package/dist/schemas/switch.json +23 -5
  236. package/dist/schemas/tab.json +17 -14
  237. package/dist/schemas/table.json +75 -0
  238. package/dist/schemas/tableRow.json +32 -0
  239. package/dist/schemas/tagInput.json +70 -0
  240. package/dist/schemas/tdColumn.json +107 -0
  241. package/dist/schemas/textArea.json +72 -7
  242. package/dist/schemas/textInput.json +72 -10
  243. package/dist/schemas/themeProvider.json +65 -0
  244. package/dist/schemas/toastOptions.json +81 -0
  245. package/dist/schemas/toaster.json +76 -0
  246. package/dist/schemas/toggleGroup.json +88 -0
  247. package/dist/schemas/tooltip.json +12 -9
  248. package/dist/schemas/virtualGrid.json +22 -11
  249. package/dist/schemas/virtualList.json +14 -8
  250. package/dist/schemas.d.mts +1360 -81
  251. package/dist/schemas.d.ts +1360 -81
  252. package/dist/schemas.js +725 -273
  253. package/dist/schemas.mjs +698 -273
  254. package/dist/select.js +6 -6
  255. package/dist/select.mjs +2 -2
  256. package/dist/skeleton.js +3 -3
  257. package/dist/skeleton.mjs +2 -2
  258. package/dist/slider.d.mts +20 -0
  259. package/dist/slider.d.ts +20 -0
  260. package/dist/slider.js +16 -0
  261. package/dist/slider.mjs +3 -0
  262. package/dist/spinner.js +3 -3
  263. package/dist/spinner.mjs +2 -2
  264. package/dist/stepper.d.mts +20 -0
  265. package/dist/stepper.d.ts +20 -0
  266. package/dist/stepper.js +16 -0
  267. package/dist/stepper.mjs +3 -0
  268. package/dist/styles/layer.d.mts +3 -0
  269. package/dist/styles/layer.d.ts +3 -0
  270. package/dist/styles/layer.js +18 -0
  271. package/dist/styles/layer.mjs +16 -0
  272. package/dist/styles.css +3872 -2
  273. package/dist/styles.js +2 -5
  274. package/dist/styles.layered.css +3875 -0
  275. package/dist/styles.mjs +1 -4
  276. package/dist/switch.js +4 -4
  277. package/dist/switch.mjs +2 -2
  278. package/dist/tab.js +5 -5
  279. package/dist/tab.mjs +2 -2
  280. package/dist/table.d.mts +2 -2
  281. package/dist/table.d.ts +2 -2
  282. package/dist/table.js +9 -9
  283. package/dist/table.mjs +3 -3
  284. package/dist/tag-input.d.mts +21 -0
  285. package/dist/tag-input.d.ts +21 -0
  286. package/dist/tag-input.js +16 -0
  287. package/dist/tag-input.mjs +3 -0
  288. package/dist/text-area.d.mts +5 -1
  289. package/dist/text-area.d.ts +5 -1
  290. package/dist/text-area.js +4 -4
  291. package/dist/text-area.mjs +2 -2
  292. package/dist/text-input.d.mts +5 -1
  293. package/dist/text-input.d.ts +5 -1
  294. package/dist/text-input.js +4 -4
  295. package/dist/text-input.mjs +2 -2
  296. package/dist/toast.js +5 -5
  297. package/dist/toast.mjs +2 -2
  298. package/dist/toggle-group.d.mts +36 -0
  299. package/dist/toggle-group.d.ts +36 -0
  300. package/dist/toggle-group.js +16 -0
  301. package/dist/toggle-group.mjs +3 -0
  302. package/dist/tooltip.js +5 -5
  303. package/dist/tooltip.mjs +2 -2
  304. package/dist/utils/cn.d.mts +0 -10
  305. package/dist/utils/cn.d.ts +0 -10
  306. package/dist/utils/cn.js +2 -2
  307. package/dist/utils/cn.mjs +1 -1
  308. package/dist/virtual-scroll.js +4 -4
  309. package/dist/virtual-scroll.mjs +2 -2
  310. package/package.json +90 -17
  311. package/scripts/setup-cursor-rules.cjs +6 -6
  312. package/dist/chunks/chunk-7MT3QYE6.js +0 -92
  313. package/dist/chunks/chunk-FA2OPP3U.mjs +0 -140
  314. package/dist/chunks/chunk-FKZI2HTI.js +0 -104
  315. package/dist/chunks/chunk-NCQDOPBR.mjs +0 -86
  316. package/dist/chunks/chunk-NTN55ZIX.mjs +0 -113
  317. package/dist/chunks/chunk-Q7GQVAYY.js +0 -88
  318. package/dist/chunks/chunk-QJNQCLMV.js +0 -25
  319. package/dist/chunks/chunk-UDQXLI5Y.mjs +0 -81
  320. package/dist/chunks/chunk-UR6JOKVB.mjs +0 -65
  321. package/dist/chunks/chunk-WVIEIRK2.js +0 -136
  322. package/dist/chunks/chunk-XALPBGSC.mjs +0 -23
  323. package/dist/schemas/typography.json +0 -70
  324. package/dist/typography.d.mts +0 -19
  325. package/dist/typography.d.ts +0 -19
  326. package/dist/typography.js +0 -102
  327. package/dist/typography.mjs +0 -79
package/dist/schemas.mjs CHANGED
@@ -1,323 +1,573 @@
1
1
  import './chunks/chunk-CVYXRSXT.mjs';
2
2
  import { z } from 'zod';
3
3
 
4
+ var breadcrumbItemSchema = z.object({
5
+ label: z.any().describe("Display text or element (ReactNode)"),
6
+ href: z.string().optional().describe("Link URL"),
7
+ onClick: z.any().optional().describe("Click handler () => void")
8
+ });
9
+ var breadcrumbPropsSchema = z.object({
10
+ items: z.array(breadcrumbItemSchema).describe("Breadcrumb items array (required)"),
11
+ separator: z.any().optional().describe("Custom separator (ReactNode). Default: chevron"),
12
+ maxItems: z.number().optional().describe('Max visible items (collapses middle with "...")'),
13
+ className: z.string().optional().describe("Style override")
14
+ }).describe("Breadcrumb navigation. Shows current location path.");
4
15
  var buttonPropsSchema = z.object({
5
16
  semantic: z.enum(["primary", "secondary", "normal", "danger"]).default("primary").describe(
6
- "\uC0C9\uC0C1 \uD14C\uB9C8 (primary=\uC8FC\uC694, secondary=\uBCF4\uC870, normal=\uC911\uB9BD, danger=\uC704\uD5D8)"
17
+ "Color theme (primary=main, secondary=sub, normal=neutral, danger=danger)"
7
18
  ),
8
19
  variant: z.enum(["contained", "outlined", "subtle", "ghost"]).default("contained").describe(
9
- "\uC2DC\uAC01 \uC2A4\uD0C0\uC77C (contained=\uCC44\uC6C0, outlined=\uD14C\uB450\uB9AC, subtle=\uC5F0\uD55C\uBC30\uACBD, ghost=\uD22C\uBA85)"
20
+ "Visual style (contained=filled, outlined=border, subtle=light bg, ghost=transparent)"
10
21
  ),
11
- size: z.enum(["xl", "lg", "md", "sm"]).default("md").describe("\uD06C\uAE30"),
12
- radius: z.enum(["default", "circle"]).default("default").describe("\uBAA8\uC11C\uB9AC (default=size\uBCC4 radius, circle=pill \uD615\uD0DC)"),
13
- asChild: z.boolean().optional().describe("true\uBA74 \uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1 (Slot \uD328\uD134)"),
14
- detectDoubleClick: z.boolean().optional().describe("500ms \uB0B4 \uB354\uBE14 \uD074\uB9AD \uBC29\uC9C0"),
15
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131 (aria-disabled \uC790\uB3D9)"),
16
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
22
+ size: z.enum(["xl", "lg", "md", "sm"]).default("md").describe("Size"),
23
+ radius: z.enum(["default", "circle"]).default("default").describe("Corner radius (default=size-based radius, circle=pill shape)"),
24
+ asChild: z.boolean().optional().describe("If true, renders as child element (Slot pattern)"),
25
+ detectDoubleClick: z.boolean().optional().describe("Prevent double click within 500ms"),
26
+ disabled: z.boolean().optional().describe("Disabled (auto aria-disabled)"),
27
+ children: z.any().optional().describe("Button content (ReactNode)"),
28
+ onClick: z.any().optional().describe("Click event handler"),
29
+ type: z.enum(["button", "submit", "reset"]).optional().describe("HTML button type (default: button)"),
30
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
31
+ className: z.string().optional().describe("Style override")
17
32
  }).describe(
18
- "\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."
33
+ "Interactive button. semantic(color) x variant(style) 2-axis system. Rendering element changeable via asChild."
19
34
  );
20
35
  var textInputPropsSchema = z.object({
21
- size: z.enum(["sm", "md", "lg"]).default("md").describe("\uD06C\uAE30"),
22
- error: z.boolean().optional().describe("\uC5D0\uB7EC \uC0C1\uD0DC (aria-invalid \uC790\uB3D9)"),
23
- prefixIcon: z.any().optional().describe("\uC55E\uCABD \uC544\uC774\uCF58 (ReactNode)"),
24
- suffixIcon: z.any().optional().describe("\uB4A4\uCABD \uC544\uC774\uCF58 (ReactNode)"),
25
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
26
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
27
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
28
- }).describe("\uD14D\uC2A4\uD2B8 \uC785\uB825 \uD544\uB4DC. prefix/suffix \uC544\uC774\uCF58 \uC9C0\uC6D0.");
36
+ size: z.enum(["md", "lg", "xl"]).default("md").describe("Size"),
37
+ error: z.boolean().optional().describe("Error state (auto aria-invalid)"),
38
+ prefixIcon: z.any().optional().describe("Prefix icon (ReactNode)"),
39
+ suffixIcon: z.any().optional().describe("Suffix icon (ReactNode)"),
40
+ label: z.any().optional().describe("Label above input field (ReactNode)"),
41
+ description: z.any().optional().describe("Description below input field (ReactNode, red on error)"),
42
+ showCount: z.boolean().optional().describe("Show character count (requires maxLength)"),
43
+ maxLength: z.number().optional().describe("Maximum character count"),
44
+ clearable: z.boolean().optional().describe("Clear input via X button"),
45
+ placeholder: z.string().optional().describe("Placeholder"),
46
+ disabled: z.boolean().optional().describe("Disabled"),
47
+ readOnly: z.boolean().optional().describe("Read-only"),
48
+ value: z.string().optional().describe("Input value (controlled mode)"),
49
+ defaultValue: z.string().optional().describe("Initial value (uncontrolled mode)"),
50
+ type: z.string().optional().describe("Input type (text, password, email, url, etc.)"),
51
+ name: z.string().optional().describe("Form field name"),
52
+ id: z.string().optional().describe("Element ID (for label htmlFor binding)"),
53
+ autoFocus: z.boolean().optional().describe("Auto focus"),
54
+ autoComplete: z.string().optional().describe("Autocomplete hint (on, off, email, etc.)"),
55
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
56
+ onChange: z.any().optional().describe("Native change event handler"),
57
+ onBlur: z.any().optional().describe("Blur callback"),
58
+ onFocus: z.any().optional().describe("Focus callback"),
59
+ className: z.string().optional().describe("Style override")
60
+ }).describe("Text input field. Supports label, description, prefix/suffix icons, clearable, character counter.");
29
61
  var textAreaPropsSchema = z.object({
30
- error: z.boolean().optional().describe("\uC5D0\uB7EC \uC0C1\uD0DC (aria-invalid \uC790\uB3D9)"),
31
- showCount: z.boolean().optional().describe("\uAE00\uC790 \uC218 \uD45C\uC2DC (maxLength \uD544\uC694)"),
32
- maxLength: z.number().optional().describe("\uCD5C\uB300 \uAE00\uC790 \uC218"),
33
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
34
- rows: z.number().optional().describe("\uD45C\uC2DC \uC904 \uC218"),
35
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
36
- }).describe("\uC5EC\uB7EC \uC904 \uD14D\uC2A4\uD2B8 \uC785\uB825. \uAE00\uC790 \uC218 \uCE74\uC6B4\uD130 \uB0B4\uC7A5.");
62
+ label: z.string().optional().describe("Label text above the textarea"),
63
+ description: z.string().optional().describe("Helper/error description below the textarea"),
64
+ size: z.enum(["lg", "md"]).optional().describe("Font size variant (lg: 16px, md: 14px)"),
65
+ resize: z.enum(["default", "auto", "none"]).optional().describe("Resize mode (default: manual, auto: auto-grow, none: fixed)"),
66
+ error: z.boolean().optional().describe("Error state (auto aria-invalid)"),
67
+ showCount: z.boolean().optional().describe("Show character count (requires maxLength)"),
68
+ maxLength: z.number().optional().describe("Maximum character count"),
69
+ placeholder: z.string().optional().describe("Placeholder"),
70
+ rows: z.number().optional().describe("Visible row count"),
71
+ disabled: z.boolean().optional().describe("Disabled"),
72
+ readOnly: z.boolean().optional().describe("Read-only"),
73
+ value: z.string().optional().describe("Input value (controlled mode)"),
74
+ defaultValue: z.string().optional().describe("Initial value (uncontrolled mode)"),
75
+ name: z.string().optional().describe("Form field name"),
76
+ id: z.string().optional().describe("Element ID"),
77
+ autoFocus: z.boolean().optional().describe("Auto focus"),
78
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
79
+ onChange: z.any().optional().describe("Native change event handler"),
80
+ onBlur: z.any().optional().describe("Blur callback"),
81
+ onFocus: z.any().optional().describe("Focus callback"),
82
+ className: z.string().optional().describe("Style override")
83
+ }).describe("Multi-line text input with label, description, character counter, and resize modes.");
37
84
  var selectPropsSchema = z.object({
38
- value: z.string().optional().describe("\uC120\uD0DD\uB41C \uAC12"),
39
- placeholder: z.string().optional().describe("\uD50C\uB808\uC774\uC2A4\uD640\uB354"),
40
- variant: z.enum(["default", "outline"]).default("default").describe("\uD2B8\uB9AC\uAC70 \uC2A4\uD0C0\uC77C"),
41
- size: z.enum(["sm", "md", "lg", "full"]).default("full").describe("\uB108\uBE44"),
42
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
43
- displayComponent: z.any().optional().describe("\uD2B8\uB9AC\uAC70\uC5D0 \uCEE4\uC2A4\uD140 \uD45C\uC2DC (ReactNode)"),
44
- className: z.string().optional().describe("\uB798\uD37C \uC2A4\uD0C0\uC77C"),
45
- triggerClassName: z.string().optional().describe("\uD2B8\uB9AC\uAC70 \uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
46
- }).describe("\uB4DC\uB86D\uB2E4\uC6B4 \uC120\uD0DD. Radix Select \uAE30\uBC18. SelectItem\uACFC \uD568\uAED8 \uC0AC\uC6A9.");
85
+ value: z.string().optional().describe("Selected value"),
86
+ placeholder: z.string().optional().describe("Placeholder"),
87
+ variant: z.enum(["default", "outline"]).default("default").describe("Trigger style"),
88
+ size: z.enum(["sm", "md", "lg", "full"]).default("full").describe("Width"),
89
+ disabled: z.boolean().optional().describe("Disabled"),
90
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
91
+ displayComponent: z.any().optional().describe("Custom display in trigger (ReactNode)"),
92
+ children: z.any().describe("SelectItem list (ReactNode, required)"),
93
+ className: z.string().optional().describe("Wrapper style"),
94
+ triggerClassName: z.string().optional().describe("Trigger style override")
95
+ }).describe("Dropdown select. Based on Radix Select. Used with SelectItem.");
47
96
  var selectItemPropsSchema = z.object({
48
- value: z.string().describe("\uD56D\uBAA9 \uAC12"),
49
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
50
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
51
- }).describe("Select \uB0B4 \uAC1C\uBCC4 \uC635\uC158.");
97
+ value: z.string().describe("Item value"),
98
+ children: z.any().describe("Item content (ReactNode, required)"),
99
+ disabled: z.boolean().optional().describe("Disabled"),
100
+ className: z.string().optional().describe("Style override")
101
+ }).describe("Individual option within Select.");
102
+ var dropdownMenuItemSchema = z.object({
103
+ label: z.any().describe("Menu item text (ReactNode)"),
104
+ value: z.string().optional().describe("Item identifier"),
105
+ icon: z.any().optional().describe("Left icon (ReactNode)"),
106
+ onClick: z.any().optional().describe("Click handler () => void"),
107
+ disabled: z.boolean().optional().describe("Disabled"),
108
+ danger: z.boolean().optional().describe("Danger/destructive style"),
109
+ separator: z.boolean().optional().describe("If true, renders as separator line")
110
+ });
111
+ var dropdownMenuPropsSchema = z.object({
112
+ children: z.any().describe("Trigger element (ReactNode, required)"),
113
+ items: z.array(dropdownMenuItemSchema).describe("Menu items array (required)"),
114
+ align: z.enum(["start", "center", "end"]).default("start").describe("Alignment"),
115
+ side: z.enum(["top", "right", "bottom", "left"]).default("bottom").describe("Position"),
116
+ className: z.string().optional().describe("Trigger wrapper style"),
117
+ contentClassName: z.string().optional().describe("Content panel style")
118
+ }).describe("Dropdown menu. Based on Radix DropdownMenu. Action menu for context/more menus.");
119
+ var toggleGroupItemSchema = z.object({
120
+ value: z.string().describe("Item value"),
121
+ label: z.any().describe("Display label (ReactNode)"),
122
+ icon: z.any().optional().describe("Icon (ReactNode)"),
123
+ disabled: z.boolean().optional().describe("Disabled")
124
+ });
125
+ var toggleGroupPropsSchema = z.object({
126
+ type: z.enum(["single", "multiple"]).default("single").describe("Selection mode"),
127
+ items: z.array(toggleGroupItemSchema).describe("Toggle items array (required)"),
128
+ value: z.any().optional().describe("Controlled value (string | string[])"),
129
+ defaultValue: z.any().optional().describe("Default value"),
130
+ onValueChange: z.any().optional().describe("Value change callback"),
131
+ variant: z.enum(["default", "outline"]).default("default").describe("Style variant"),
132
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Size"),
133
+ disabled: z.boolean().optional().describe("Disable all items"),
134
+ className: z.string().optional().describe("Style override")
135
+ }).describe("Toggle group / Segment control. Based on Radix ToggleGroup.");
136
+ var sliderPropsSchema = z.object({
137
+ value: z.array(z.number()).optional().describe("Controlled value (number[]). Use [50] for single, [20, 80] for range"),
138
+ defaultValue: z.array(z.number()).optional().describe("Default value"),
139
+ min: z.number().default(0).describe("Minimum"),
140
+ max: z.number().default(100).describe("Maximum"),
141
+ step: z.number().default(1).describe("Step increment"),
142
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Track height / thumb size"),
143
+ showValue: z.boolean().default(false).describe("Show current value text"),
144
+ formatValue: z.any().optional().describe("Value format function (value: number) => string"),
145
+ label: z.string().optional().describe("Label text"),
146
+ disabled: z.boolean().optional().describe("Disabled"),
147
+ onValueChange: z.any().optional().describe("Value change callback (value: number[]) => void"),
148
+ onValueCommit: z.any().optional().describe("Committed value callback (on pointer up)"),
149
+ className: z.string().optional().describe("Style override")
150
+ }).describe("Slider / Range input. Based on Radix Slider. Supports single and range mode.");
52
151
  var checkBoxPropsSchema = z.object({
53
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
54
- shape: z.enum(["square", "round"]).default("square").describe("\uD615\uD0DC"),
55
- checked: z.boolean().optional().describe("\uCCB4\uD06C \uC0C1\uD0DC"),
56
- indeterminate: z.boolean().optional().describe('\uBD88\uD655\uC815 \uC0C1\uD0DC (aria-checked="mixed")'),
57
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
58
- label: z.any().optional().describe("\uB77C\uBCA8 \uD14D\uC2A4\uD2B8 (ReactNode)"),
59
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
60
- }).describe("\uCCB4\uD06C\uBC15\uC2A4. \uB124\uC774\uD2F0\uBE0C input \uAE30\uBC18, square/round \uD615\uD0DC \uC9C0\uC6D0.");
152
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
153
+ shape: z.enum(["square", "round"]).default("square").describe("Shape"),
154
+ checked: z.boolean().optional().describe("Checked state"),
155
+ indeterminate: z.boolean().optional().describe('Indeterminate state (aria-checked="mixed")'),
156
+ disabled: z.boolean().optional().describe("Disabled"),
157
+ readOnly: z.boolean().optional().describe("Read-only"),
158
+ label: z.any().optional().describe("Label text (ReactNode)"),
159
+ children: z.any().optional().describe("Label alternative content (ReactNode)"),
160
+ name: z.string().optional().describe("Form field name"),
161
+ id: z.string().optional().describe("Element ID"),
162
+ value: z.string().optional().describe("Value for form submission"),
163
+ onCheckedChange: z.any().optional().describe("Checked state change callback (checked: boolean) => void"),
164
+ onChange: z.any().optional().describe("Native change event handler"),
165
+ className: z.string().optional().describe("Style override")
166
+ }).describe("Checkbox. Native input-based, supports square/round shapes.");
61
167
  var radioGroupPropsSchema = z.object({
62
- name: z.string().describe("form name (\uD544\uC218)"),
63
- value: z.string().optional().describe("\uC120\uD0DD\uB41C \uAC12 (\uC81C\uC5B4)"),
64
- defaultValue: z.string().optional().describe("\uCD08\uAE30\uAC12 (\uBE44\uC81C\uC5B4)"),
65
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
66
- orientation: z.enum(["horizontal", "vertical"]).default("vertical").describe("\uBC30\uCE58 \uBC29\uD5A5"),
67
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
68
- "aria-label": z.string().optional().describe("\uC811\uADFC\uC131 \uB77C\uBCA8"),
69
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
70
- }).describe("\uB77C\uB514\uC624 \uADF8\uB8F9. RadioItem\uACFC \uD568\uAED8 \uC0AC\uC6A9.");
168
+ name: z.string().describe("Form name (required)"),
169
+ value: z.string().optional().describe("Selected value (controlled)"),
170
+ defaultValue: z.string().optional().describe("Initial value (uncontrolled)"),
171
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
172
+ orientation: z.enum(["horizontal", "vertical"]).default("vertical").describe("Layout direction"),
173
+ disabled: z.boolean().optional().describe("Disabled"),
174
+ children: z.any().describe("RadioItem list (ReactNode, required)"),
175
+ "aria-label": z.string().optional().describe("Accessibility label"),
176
+ "aria-labelledby": z.string().optional().describe("Accessibility label reference ID"),
177
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
178
+ className: z.string().optional().describe("Style override")
179
+ }).describe("Radio group. Used with RadioItem.");
71
180
  var radioItemPropsSchema = z.object({
72
- value: z.string().describe("\uD56D\uBAA9 \uAC12 (\uD544\uC218)"),
73
- size: z.enum(["sm", "md"]).optional().describe("\uD06C\uAE30 (\uADF8\uB8F9\uBCF4\uB2E4 \uC6B0\uC120)"),
74
- label: z.any().optional().describe("\uB77C\uBCA8 \uD14D\uC2A4\uD2B8 (ReactNode)"),
75
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131")
76
- }).describe("RadioGroup \uB0B4 \uAC1C\uBCC4 \uC635\uC158.");
181
+ value: z.string().describe("Item value (required)"),
182
+ size: z.enum(["sm", "md"]).optional().describe("Size (overrides group)"),
183
+ label: z.any().optional().describe("Label text (ReactNode)"),
184
+ children: z.any().optional().describe("Label alternative content (ReactNode)"),
185
+ disabled: z.boolean().optional().describe("Disabled"),
186
+ className: z.string().optional().describe("Style override")
187
+ }).describe("Individual option within RadioGroup.");
77
188
  var switchPropsSchema = z.object({
78
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
79
- checked: z.boolean().optional().describe("on/off \uC0C1\uD0DC"),
80
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
81
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
82
- }).describe('\uD1A0\uAE00 \uC2A4\uC704\uCE58. \uB124\uC774\uD2F0\uBE0C checkbox \uAE30\uBC18, role="switch".');
189
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
190
+ checked: z.boolean().optional().describe("On/off state"),
191
+ disabled: z.boolean().optional().describe("Disabled"),
192
+ readOnly: z.boolean().optional().describe("Read-only"),
193
+ name: z.string().optional().describe("Form field name"),
194
+ id: z.string().optional().describe("Element ID"),
195
+ onCheckedChange: z.any().optional().describe("Toggle state change callback (checked: boolean) => void"),
196
+ onChange: z.any().optional().describe("Native change event handler (ChangeEvent)"),
197
+ className: z.string().optional().describe("Style override")
198
+ }).describe('Toggle switch. Native checkbox-based, role="switch".');
83
199
  var chipPropsSchema = z.object({
84
- variant: z.enum(["default", "filled", "outline", "accent"]).default("default").describe("\uC2A4\uD0C0\uC77C"),
85
- size: z.enum(["sm", "md", "lg"]).default("md").describe("\uD06C\uAE30"),
86
- asChild: z.boolean().optional().describe("true\uBA74 \uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1 (Slot \uD328\uD134)"),
87
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131 (aria-disabled \uC790\uB3D9)"),
88
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
89
- }).describe("\uCE69/\uD0DC\uADF8/\uBC43\uC9C0. onClose prop\uC73C\uB85C \uB2EB\uAE30 \uBC84\uD2BC \uD45C\uC2DC.");
200
+ variant: z.enum(["default", "filled", "outline", "accent"]).default("default").describe("Style"),
201
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Size"),
202
+ asChild: z.boolean().optional().describe("If true, renders as child element (Slot pattern)"),
203
+ disabled: z.boolean().optional().describe("Disabled (auto aria-disabled)"),
204
+ children: z.any().optional().describe("Chip content (ReactNode)"),
205
+ onClose: z.any().optional().describe("Close button click callback (e: MouseEvent) => void. Shows X button when provided"),
206
+ onClick: z.any().optional().describe("Click event handler"),
207
+ className: z.string().optional().describe("Style override")
208
+ }).describe("Chip/tag/badge. Close button displayed via onClose prop.");
209
+ var badgePropsSchema = z.object({
210
+ count: z.number().optional().describe("Badge count number"),
211
+ max: z.number().default(99).describe('Max count (shows "99+" when exceeded)'),
212
+ dot: z.boolean().default(false).describe("Show as dot instead of count"),
213
+ showZero: z.boolean().default(false).describe("Show badge when count is 0"),
214
+ variant: z.enum(["danger", "primary", "secondary", "info", "success", "warning"]).default("danger").describe("Color variant"),
215
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Size"),
216
+ offset: z.tuple([z.number(), z.number()]).optional().describe("Position offset [x, y] in px"),
217
+ children: z.any().optional().describe("Anchor element to attach badge to (ReactNode)"),
218
+ className: z.string().optional().describe("Style override")
219
+ }).describe("Badge indicator. Dot or count display. Wraps children when provided.");
220
+ var progressPropsSchema = z.object({
221
+ value: z.number().default(0).describe("Current progress value"),
222
+ max: z.number().default(100).describe("Maximum value"),
223
+ variant: z.enum(["primary", "success", "warning", "danger", "info"]).default("primary").describe("Color variant"),
224
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Bar height"),
225
+ showValue: z.boolean().default(false).describe("Show percentage text"),
226
+ indeterminate: z.boolean().default(false).describe("Indeterminate loading animation"),
227
+ label: z.string().optional().describe("Label text above the bar"),
228
+ className: z.string().optional().describe("Style override")
229
+ }).describe("Progress bar. Linear progress indicator with percentage display.");
230
+ var alertPropsSchema = z.object({
231
+ variant: z.enum(["info", "success", "warning", "danger"]).default("info").describe("Alert type / color"),
232
+ title: z.string().optional().describe("Alert title (bold)"),
233
+ children: z.any().optional().describe("Alert description (ReactNode)"),
234
+ icon: z.any().optional().describe("Custom icon (ReactNode). Auto icon by variant if omitted"),
235
+ closable: z.boolean().default(false).describe("Show close button"),
236
+ onClose: z.any().optional().describe("Close callback () => void"),
237
+ action: z.any().optional().describe("Action area (ReactNode, e.g. Button)"),
238
+ className: z.string().optional().describe("Style override")
239
+ }).describe("Alert / Banner. Inline notification with icon, title, description.");
90
240
  var spinnerPropsSchema = z.object({
91
- size: z.number().default(20).describe("px \uD06C\uAE30"),
92
- "aria-label": z.string().default("Loading").describe("\uC811\uADFC\uC131 \uB77C\uBCA8"),
93
- className: z.string().optional().describe("\uC0C9\uC0C1 \uB4F1 \uC624\uBC84\uB77C\uC774\uB4DC")
94
- }).describe('\uB85C\uB529 \uC778\uB514\uCF00\uC774\uD130. SVG \uAE30\uBC18. role="status" \uB0B4\uC7A5.');
241
+ size: z.number().default(20).describe("Size in px"),
242
+ color: z.string().optional().describe("Color (CSS color value, default currentColor)"),
243
+ "aria-label": z.string().default("Loading").describe("Accessibility label"),
244
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
245
+ className: z.string().optional().describe("Color override etc.")
246
+ }).describe('Loading indicator. SVG-based. Built-in role="status".');
247
+ var stepItemSchema = z.object({
248
+ label: z.string().describe("Step title"),
249
+ description: z.string().optional().describe("Step description")
250
+ });
251
+ var stepperPropsSchema = z.object({
252
+ steps: z.array(stepItemSchema).describe("Step items array (required)"),
253
+ current: z.number().default(0).describe("Current step index (0-based)"),
254
+ status: z.enum(["process", "error"]).default("process").describe("Current step status"),
255
+ orientation: z.enum(["horizontal", "vertical"]).default("horizontal").describe("Layout direction"),
256
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
257
+ className: z.string().optional().describe("Style override")
258
+ }).describe("Stepper. Step-by-step progress indicator.");
95
259
  var skeletonPropsSchema = z.object({
96
- as: z.enum(["div", "span"]).default("div").describe("\uB80C\uB354\uB9C1 \uD0DC\uADF8"),
97
- circle: z.boolean().default(false).describe("\uC6D0\uD615 \uC2A4\uCF08\uB808\uD1A4 (rounded-full)"),
98
- width: z.union([z.string(), z.number()]).optional().describe("\uB108\uBE44 (\uC608: '100px', '50%', 200)"),
99
- height: z.union([z.string(), z.number()]).optional().describe("\uB192\uC774 (\uC608: '16px', 40)"),
100
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
260
+ as: z.enum(["div", "span"]).default("div").describe("Rendered tag"),
261
+ circle: z.boolean().default(false).describe("Circle skeleton (rounded-full)"),
262
+ width: z.union([z.string(), z.number()]).optional().describe("Width (e.g. '100px', '50%', 200)"),
263
+ height: z.union([z.string(), z.number()]).optional().describe("Height (e.g. '16px', 40)"),
264
+ children: z.any().optional().describe("Inner content (shown when loaded, maintains actual size)"),
265
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
266
+ className: z.string().optional().describe("Style override")
101
267
  }).describe(
102
- "\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."
268
+ "Skeleton loading placeholder. Size/shape via className. With children, wraps transparently to maintain actual size."
103
269
  );
104
270
  var dividerPropsSchema = z.object({
105
- orientation: z.enum(["horizontal", "vertical"]).default("horizontal").describe("\uBC29\uD5A5"),
106
- variant: z.enum(["solid", "dashed", "dotted"]).default("solid").describe("\uC120 \uC2A4\uD0C0\uC77C"),
107
- color: z.string().optional().describe("\uCEE4\uC2A4\uD140 \uC0C9\uC0C1 (CSS \uAC12)"),
108
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
109
- }).describe("\uAD6C\uBD84\uC120. \uC218\uD3C9/\uC218\uC9C1 \uBC29\uD5A5, \uC2E4\uC120/\uC810\uC120/\uD30C\uC120 \uC9C0\uC6D0.");
271
+ orientation: z.enum(["horizontal", "vertical"]).default("horizontal").describe("Direction"),
272
+ variant: z.enum(["solid", "dashed", "dotted"]).default("solid").describe("Line style"),
273
+ color: z.string().optional().describe("Custom color (CSS value)"),
274
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
275
+ className: z.string().optional().describe("Style override")
276
+ }).describe("Divider. Supports horizontal/vertical, solid/dashed/dotted.");
110
277
  var tooltipPropsSchema = z.object({
111
- content: z.any().describe("\uD234\uD301 \uB0B4\uC6A9 (ReactNode, \uD544\uC218)"),
112
- variant: z.enum(["dark", "light"]).default("dark").describe("\uC2A4\uD0C0\uC77C"),
113
- side: z.enum(["top", "right", "bottom", "left"]).default("top").describe("\uC704\uCE58"),
114
- align: z.enum(["start", "center", "end"]).default("center").describe("\uC815\uB82C"),
115
- delayDuration: z.number().default(200).describe("\uD45C\uC2DC \uC9C0\uC5F0 (ms)"),
116
- disabled: z.boolean().default(false).describe("\uBE44\uD65C\uC131"),
117
- className: z.string().optional().describe("Content \uC2A4\uD0C0\uC77C"),
118
- triggerClassName: z.string().optional().describe("Trigger \uC2A4\uD0C0\uC77C")
119
- }).describe("\uD234\uD301. Radix Tooltip \uAE30\uBC18. Provider \uB0B4\uC7A5.");
278
+ children: z.any().describe("Trigger element (ReactNode, required)"),
279
+ content: z.any().describe("Tooltip content (ReactNode, required)"),
280
+ variant: z.enum(["dark", "light"]).default("dark").describe("Style"),
281
+ side: z.enum(["top", "right", "bottom", "left"]).default("top").describe("Position"),
282
+ align: z.enum(["start", "center", "end"]).default("center").describe("Alignment"),
283
+ delayDuration: z.number().default(200).describe("Show delay (ms)"),
284
+ disabled: z.boolean().default(false).describe("Disabled"),
285
+ className: z.string().optional().describe("Content style"),
286
+ triggerClassName: z.string().optional().describe("Trigger style")
287
+ }).describe("Tooltip. Based on Radix Tooltip. Built-in Provider.");
120
288
  var popoverPropsSchema = z.object({
121
- trigger: z.any().describe("\uD2B8\uB9AC\uAC70 \uC694\uC18C (ReactNode, \uD544\uC218)"),
122
- side: z.enum(["top", "right", "bottom", "left"]).default("bottom").describe("\uC704\uCE58"),
123
- align: z.enum(["start", "center", "end"]).default("center").describe("\uC815\uB82C"),
124
- sideOffset: z.number().default(4).describe("\uC704\uCE58 \uC624\uD504\uC14B (px)"),
125
- alignOffset: z.number().optional().describe("\uC815\uB82C \uC624\uD504\uC14B (px)"),
126
- open: z.boolean().optional().describe("\uC81C\uC5B4 \uBAA8\uB4DC"),
127
- className: z.string().optional().describe("Content \uC2A4\uD0C0\uC77C"),
128
- arrowClassName: z.string().optional().describe("Arrow \uC2A4\uD0C0\uC77C")
129
- }).describe("\uD31D\uC624\uBC84. Radix Popover \uAE30\uBC18.");
289
+ trigger: z.any().describe("Trigger element (ReactNode, required)"),
290
+ side: z.enum(["top", "right", "bottom", "left"]).default("bottom").describe("Position"),
291
+ align: z.enum(["start", "center", "end"]).default("center").describe("Alignment"),
292
+ sideOffset: z.number().default(4).describe("Position offset (px)"),
293
+ alignOffset: z.number().optional().describe("Alignment offset (px)"),
294
+ open: z.boolean().optional().describe("Controlled mode"),
295
+ onOpenChange: z.any().optional().describe("Open/close state change callback (open: boolean) => void"),
296
+ onClickTrigger: z.any().optional().describe("Callback on trigger element click. Passed to PopoverPrimitive.Trigger onClick."),
297
+ children: z.any().optional().describe("Popover body (ReactNode)"),
298
+ className: z.string().optional().describe("Content style"),
299
+ arrowClassName: z.string().optional().describe("Arrow style")
300
+ }).describe("Popover. Based on Radix Popover.");
130
301
  var accordionItemData = z.object({
131
- id: z.string().describe("\uACE0\uC720 ID"),
132
- trigger: z.any().describe("\uD2B8\uB9AC\uAC70 \uB0B4\uC6A9 (ReactNode)"),
133
- content: z.any().describe("\uD3BC\uCE68 \uB0B4\uC6A9 (ReactNode)"),
134
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
302
+ id: z.string().describe("Unique ID"),
303
+ trigger: z.any().describe("Trigger content (ReactNode)"),
304
+ content: z.any().describe("Expandable content (ReactNode)"),
305
+ disabled: z.boolean().optional().describe("Disabled"),
135
306
  className: z.string().optional(),
136
307
  triggerClassName: z.string().optional(),
137
308
  contentClassName: z.string().optional()
138
309
  });
139
310
  var accordionPropsSchema = z.object({
140
- items: z.array(accordionItemData).describe("\uC544\uCF54\uB514\uC5B8 \uD56D\uBAA9 \uBC30\uC5F4 (\uD544\uC218)"),
141
- type: z.enum(["single", "multiple"]).default("single").describe("\uB2E8\uC77C/\uB2E4\uC911 \uC5F4\uAE30"),
142
- collapsible: z.boolean().default(true).describe("\uC804\uBD80 \uC811\uAE30 \uAC00\uB2A5"),
143
- value: z.union([z.string(), z.array(z.string())]).optional().describe("\uC81C\uC5B4 \uBAA8\uB4DC"),
144
- defaultValue: z.union([z.string(), z.array(z.string())]).optional().describe("\uBE44\uC81C\uC5B4 \uCD08\uAE30\uAC12"),
145
- className: z.string().optional().describe("Root \uC2A4\uD0C0\uC77C")
146
- }).describe("\uC544\uCF54\uB514\uC5B8. items \uBC30\uC5F4 \uBC29\uC2DD\uACFC \uCEF4\uD3EC\uC800\uBE14 \uBC29\uC2DD \uBAA8\uB450 \uC9C0\uC6D0.");
311
+ items: z.array(accordionItemData).describe("Accordion item array (required)"),
312
+ type: z.enum(["single", "multiple"]).default("single").describe("Single/multiple open mode"),
313
+ collapsible: z.boolean().default(true).describe("Allow collapsing all"),
314
+ value: z.union([z.string(), z.array(z.string())]).optional().describe("Controlled mode"),
315
+ defaultValue: z.union([z.string(), z.array(z.string())]).optional().describe("Uncontrolled initial value"),
316
+ onValueChange: z.any().optional().describe("Open item change callback (value: string | string[]) => void"),
317
+ className: z.string().optional().describe("Root style")
318
+ }).describe("Accordion. Supports both items array and composable patterns.");
147
319
  var drawerDirection = z.enum(["bottom", "top", "left", "right"]).default("bottom");
148
320
  var drawerPropsSchema = z.object({
149
- direction: drawerDirection.describe("\uBC29\uD5A5")
150
- }).describe("\uB4DC\uB85C\uC5B4/\uBC14\uD140\uC2DC\uD2B8. Vaul \uAE30\uBC18. \uD569\uC131 \uCEF4\uD3EC\uB10C\uD2B8 \uD328\uD134.");
321
+ direction: drawerDirection.describe("Direction"),
322
+ open: z.boolean().optional().describe("Open state (controlled mode)"),
323
+ onOpenChange: z.any().optional().describe("Open state change callback (open: boolean) => void"),
324
+ dismissible: z.boolean().optional().describe("Allow close via swipe/outside click (default true)"),
325
+ modal: z.boolean().optional().describe("Modal mode (default true). If false, background is interactive"),
326
+ shouldScaleBackground: z.boolean().optional().describe("Background scale effect (default false)"),
327
+ children: z.any().describe("Drawer sub-components (ReactNode, required)")
328
+ }).describe("Drawer/bottom sheet. Based on Vaul. Compound component pattern.");
151
329
  var drawerContentPropsSchema = z.object({
152
- direction: drawerDirection.optional().describe("\uBC29\uD5A5 (Context \uC6B0\uC120)"),
153
- blur: z.enum(["none", "sm", "md"]).default("none").describe("\uC624\uBC84\uB808\uC774 \uBE14\uB7EC"),
154
- showHandle: z.boolean().default(true).describe("\uD578\uB4E4 \uBC14 \uD45C\uC2DC"),
155
- overlayClassName: z.string().optional().describe("\uC624\uBC84\uB808\uC774 \uC2A4\uD0C0\uC77C"),
156
- className: z.string().optional().describe("\uD328\uB110 \uC2A4\uD0C0\uC77C")
157
- }).describe("Drawer.Content \uC601\uC5ED.");
330
+ direction: drawerDirection.optional().describe("Direction (Context takes priority)"),
331
+ blur: z.enum(["none", "sm", "md"]).default("none").describe("Overlay blur"),
332
+ showHandle: z.boolean().default(true).describe("Show handle bar"),
333
+ children: z.any().optional().describe("Content area (ReactNode)"),
334
+ overlayClassName: z.string().optional().describe("Overlay style"),
335
+ className: z.string().optional().describe("Panel style")
336
+ }).describe("Drawer.Content area.");
337
+ var drawerTriggerPropsSchema = z.object({
338
+ asChild: z.boolean().optional().describe("Render as child element"),
339
+ children: z.any().describe("Trigger element (ReactNode, required)"),
340
+ className: z.string().optional().describe("Style override")
341
+ }).describe("Drawer open trigger.");
342
+ var drawerClosePropsSchema = z.object({
343
+ asChild: z.boolean().optional().describe("Render as child element"),
344
+ children: z.any().describe("Close element (ReactNode, required)"),
345
+ className: z.string().optional().describe("Style override")
346
+ }).describe("Drawer close button.");
347
+ var drawerTitlePropsSchema = z.object({
348
+ children: z.any().describe("Title text (ReactNode, required)"),
349
+ className: z.string().optional().describe("Style override")
350
+ }).describe("Drawer title (required for accessibility).");
351
+ var drawerDescriptionPropsSchema = z.object({
352
+ children: z.any().describe("Description text (ReactNode, required)"),
353
+ className: z.string().optional().describe("Style override")
354
+ }).describe("Drawer description.");
158
355
  var tabItem = z.object({
159
- key: z.string().describe("\uD0ED \uACE0\uC720 \uD0A4"),
160
- label: z.any().describe("\uD0ED \uB77C\uBCA8 (ReactNode)"),
161
- children: z.any().optional().describe("\uD0ED \uD328\uB110 \uB0B4\uC6A9 (ReactNode)"),
162
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131")
356
+ key: z.string().describe("Tab unique key"),
357
+ label: z.any().describe("Tab label (ReactNode)"),
358
+ children: z.any().optional().describe("Tab panel content (ReactNode)"),
359
+ disabled: z.boolean().optional().describe("Disabled")
163
360
  });
164
361
  var tabPropsSchema = z.object({
165
- items: z.array(tabItem).describe("\uD0ED \uD56D\uBAA9 \uBC30\uC5F4 (\uD544\uC218)"),
166
- activeKey: z.string().optional().describe("\uC81C\uC5B4 \uBAA8\uB4DC \uD65C\uC131 \uD0A4"),
167
- defaultActiveKey: z.string().optional().describe("\uBE44\uC81C\uC5B4 \uCD08\uAE30 \uD0A4"),
168
- variant: z.enum(["line", "pill"]).default("line").describe("\uC2A4\uD0C0\uC77C"),
169
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
170
- destroyInactive: z.boolean().default(false).describe("\uBE44\uD65C\uC131 \uD328\uB110 \uC5B8\uB9C8\uC6B4\uD2B8"),
171
- className: z.string().optional().describe("\uB8E8\uD2B8 \uC2A4\uD0C0\uC77C"),
172
- tabListClassName: z.string().optional().describe("\uD0ED \uB9AC\uC2A4\uD2B8 \uC2A4\uD0C0\uC77C"),
173
- tabPanelClassName: z.string().optional().describe("\uD0ED \uD328\uB110 \uC2A4\uD0C0\uC77C")
174
- }).describe("\uD0ED \uB124\uBE44\uAC8C\uC774\uC158. line/pill \uBCC0\uD615.");
362
+ items: z.array(tabItem).describe("Tab item array (required)"),
363
+ activeKey: z.string().optional().describe("Controlled mode active key"),
364
+ defaultActiveKey: z.string().optional().describe("Uncontrolled initial key"),
365
+ variant: z.enum(["line", "pill"]).default("line").describe("Style"),
366
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
367
+ destroyInactive: z.boolean().default(false).describe("Unmount inactive panels"),
368
+ onTabChange: z.any().optional().describe("Tab change callback (key: string) => void"),
369
+ className: z.string().optional().describe("Root style"),
370
+ tabListClassName: z.string().optional().describe("Tab list style"),
371
+ tabPanelClassName: z.string().optional().describe("Tab panel style")
372
+ }).describe("Tab navigation. line/pill variants.");
175
373
  var carouselPropsSchema = z.object({
176
- opts: z.record(z.any()).optional().describe("Embla \uC635\uC158 (loop, align \uB4F1)"),
177
- plugins: z.array(z.any()).optional().describe("Embla \uD50C\uB7EC\uADF8\uC778"),
178
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
374
+ opts: z.record(z.any()).optional().describe("Embla options (loop, align, etc.)"),
375
+ plugins: z.array(z.any()).optional().describe("Embla plugins"),
376
+ onApiChange: z.any().optional().describe("Embla API change callback (api: CarouselApi) => void"),
377
+ children: z.any().optional().describe("Carousel slides and sub-components (ReactNode)"),
378
+ className: z.string().optional().describe("Style override")
179
379
  }).describe(
180
- "\uCE90\uB7EC\uC140. Embla Carousel \uAE30\uBC18. CarouselSlide, CarouselPrev, CarouselNext, CarouselDots \uC11C\uBE0C \uCEF4\uD3EC\uB10C\uD2B8."
380
+ "Carousel. Based on Embla Carousel. Sub-components: CarouselSlide, CarouselPrev, CarouselNext, CarouselDots."
181
381
  );
382
+ var carouselSlidePropsSchema = z.object({
383
+ className: z.string().optional().describe("Slide style (use basis-1/3 etc. for multi-slide view)"),
384
+ children: z.any().describe("Slide content (ReactNode, required)")
385
+ }).describe("Carousel slide. Used inside Carousel.");
386
+ var carouselButtonPropsSchema = z.object({
387
+ className: z.string().optional().describe("Button style override"),
388
+ children: z.any().optional().describe("Custom icon (ReactNode, default: chevron)")
389
+ }).describe("CarouselPrev / CarouselNext. Previous/next navigation buttons.");
390
+ var carouselDotsPropsSchema = z.object({
391
+ className: z.string().optional().describe("Dot container style")
392
+ }).describe("CarouselDots. Slide indicator dots.");
182
393
  var paginationPropsSchema = z.object({
183
- currentPage: z.number().describe("\uD604\uC7AC \uD398\uC774\uC9C0 (1\uBD80\uD130, \uD544\uC218)"),
184
- totalPages: z.number().describe("\uC804\uCCB4 \uD398\uC774\uC9C0 \uC218 (\uD544\uC218)"),
185
- siblingCount: z.number().default(1).describe("\uD604\uC7AC \uD398\uC774\uC9C0 \uC591\uC606 \uD45C\uC2DC \uAC1C\uC218"),
186
- size: z.enum(["sm", "md"]).default("md").describe("\uD06C\uAE30"),
187
- className: z.string().optional().describe("<nav> \uC2A4\uD0C0\uC77C")
188
- }).describe("\uD398\uC774\uC9C0\uB124\uC774\uC158. \uC774\uC804/\uB2E4\uC74C + \uBC88\uD638 \uBC84\uD2BC.");
394
+ currentPage: z.number().describe("Current page (1-based, required)"),
395
+ totalPages: z.number().describe("Total page count (required)"),
396
+ siblingCount: z.number().default(1).describe("Number of pages shown on each side of current"),
397
+ showEdges: z.boolean().optional().describe("Always show first/last page"),
398
+ size: z.enum(["sm", "md"]).default("md").describe("Size"),
399
+ onPageChange: z.any().describe("Page change callback (page: number) => void, required"),
400
+ className: z.string().optional().describe("<nav> style")
401
+ }).describe("Pagination. Previous/next + page number buttons.");
189
402
  var avatarPropsSchema = z.object({
190
- src: z.string().optional().describe("\uC774\uBBF8\uC9C0 URL"),
191
- alt: z.string().optional().describe("\uB300\uCCB4 \uD14D\uC2A4\uD2B8"),
192
- fallback: z.any().optional().describe("\uC774\uBBF8\uC9C0 \uB85C\uB4DC \uC2E4\uD328 \uC2DC \uD45C\uC2DC (ReactNode)"),
193
- size: z.enum(["xs", "sm", "md", "lg", "xl"]).default("md").describe("\uD06C\uAE30"),
194
- shape: z.enum(["circle", "square"]).default("circle").describe("\uD615\uD0DC"),
195
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
196
- }).describe("\uC544\uBC14\uD0C0. \uC774\uBBF8\uC9C0, \uD3F4\uBC31 \uD14D\uC2A4\uD2B8, children \uC9C0\uC6D0.");
403
+ src: z.string().optional().describe("Image URL"),
404
+ alt: z.string().optional().describe("Alt text"),
405
+ fallback: z.any().optional().describe("Displayed on image load failure (ReactNode)"),
406
+ size: z.enum(["xs", "sm", "md", "lg", "xl"]).default("md").describe("Size"),
407
+ shape: z.enum(["circle", "square"]).default("circle").describe("Shape"),
408
+ children: z.any().optional().describe("Custom image element (e.g. Next.js Image)"),
409
+ onImageError: z.any().optional().describe("Image load error callback () => void"),
410
+ className: z.string().optional().describe("Style override")
411
+ }).describe("Avatar. Supports image, fallback text, and children.");
197
412
  var counterPropsSchema = z.object({
198
- endValue: z.number().describe("\uBAA9\uD45C \uAC12 (\uD544\uC218)"),
199
- startValue: z.number().default(0).describe("\uC2DC\uC791 \uAC12"),
200
- duration: z.number().default(1500).describe("\uC560\uB2C8\uBA54\uC774\uC158 \uC2DC\uAC04 (ms)"),
201
- delay: z.number().default(0).describe("\uC2DC\uC791 \uC9C0\uC5F0 (ms)"),
202
- separator: z.boolean().default(true).describe("\uCC9C \uB2E8\uC704 \uAD6C\uBD84"),
203
- digits: z.number().default(0).describe("\uC18C\uC218 \uC790\uB9BF\uC218"),
204
- triggerOnView: z.boolean().default(false).describe("\uBDF0\uD3EC\uD2B8 \uC9C4\uC785 \uC2DC \uC2DC\uC791"),
205
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
206
- }).describe("\uC22B\uC790 \uCE74\uC6B4\uD2B8 \uC560\uB2C8\uBA54\uC774\uC158.");
413
+ endValue: z.number().describe("Target value (required)"),
414
+ startValue: z.number().default(0).describe("Start value"),
415
+ duration: z.number().default(1500).describe("Animation duration (ms)"),
416
+ delay: z.number().default(0).describe("Start delay (ms)"),
417
+ separator: z.boolean().default(true).describe("Thousands separator"),
418
+ digits: z.number().default(0).describe("Decimal places"),
419
+ triggerOnView: z.boolean().default(false).describe("Start on viewport entry"),
420
+ onEnd: z.any().optional().describe("Count complete callback () => void"),
421
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
422
+ className: z.string().optional().describe("Style override")
423
+ }).describe("Number count animation.");
207
424
  var countdownPropsSchema = z.object({
208
- endTimestamp: z.number().describe("\uC885\uB8CC \uC2DC\uAC01 (Unix ms, \uD544\uC218)"),
209
- separator: z.any().default(":").describe("\uAD6C\uBD84\uC790 (ReactNode)"),
210
- showDays: z.boolean().default(true).describe("\uC77C \uB2E8\uC704 \uD45C\uC2DC"),
425
+ endTimestamp: z.number().describe("End time (Unix ms, required)"),
426
+ separator: z.any().default(":").describe("Separator (ReactNode)"),
427
+ showDays: z.boolean().default(true).describe("Show days unit"),
211
428
  labels: z.object({
212
429
  days: z.string().optional(),
213
430
  hours: z.string().optional(),
214
431
  minutes: z.string().optional(),
215
432
  seconds: z.string().optional()
216
- }).optional().describe("\uB2E8\uC704 \uB77C\uBCA8"),
217
- render: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uB80C\uB354 \uD568\uC218"),
218
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
219
- }).describe("\uCE74\uC6B4\uD2B8\uB2E4\uC6B4 \uD0C0\uC774\uBA38.");
433
+ }).optional().describe("Unit labels"),
434
+ render: z.any().optional().describe("Custom render function"),
435
+ onEnd: z.any().optional().describe("Countdown end callback () => void"),
436
+ className: z.string().optional().describe("Style override")
437
+ }).describe("Countdown timer.");
220
438
  var marqueePropsSchema = z.object({
221
- direction: z.enum(["left", "right", "up", "down"]).default("left").describe("\uBC29\uD5A5"),
222
- speed: z.number().default(40).describe("\uC560\uB2C8\uBA54\uC774\uC158 \uC18D\uB3C4 (\uCD08)"),
223
- pauseOnHover: z.boolean().default(false).describe("\uD638\uBC84 \uC2DC \uC77C\uC2DC\uC815\uC9C0"),
224
- gap: z.number().default(16).describe("\uC544\uC774\uD15C \uAC04\uACA9 (px)"),
225
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
226
- }).describe("\uB9C8\uD034 (\uD750\uB974\uB294 \uD14D\uC2A4\uD2B8/\uC694\uC18C).");
439
+ direction: z.enum(["left", "right", "up", "down"]).default("left").describe("Direction"),
440
+ speed: z.number().default(40).describe("Animation speed (seconds)"),
441
+ pauseOnHover: z.boolean().default(false).describe("Pause on hover"),
442
+ gap: z.number().default(16).describe("Item gap (px)"),
443
+ children: z.any().describe("Content to repeat (ReactNode, required)"),
444
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
445
+ className: z.string().optional().describe("Style override")
446
+ }).describe("Marquee (scrolling text/elements).");
227
447
  var virtualListPropsSchema = z.object({
228
- items: z.array(z.any()).describe("\uB370\uC774\uD130 \uBC30\uC5F4 (\uD544\uC218)"),
229
- estimateSize: z.union([z.number(), z.any()]).describe("\uC608\uC0C1 \uC544\uC774\uD15C \uB192\uC774 (number \uB610\uB294 \uD568\uC218, \uD544\uC218)"),
230
- renderItem: z.any().describe("\uC544\uC774\uD15C \uB80C\uB354\uB7EC (\uD544\uC218)"),
231
- overscan: z.number().default(5).describe("\uC624\uBC84\uC2A4\uCE94 \uC218"),
232
- gap: z.number().default(0).describe("\uC544\uC774\uD15C \uAC04\uACA9 (px)"),
233
- className: z.string().optional().describe("\uC2A4\uD06C\uB864 \uCEE8\uD14C\uC774\uB108 \uC2A4\uD0C0\uC77C"),
234
- endReachedThreshold: z.number().default(200).describe("\uB05D \uAC10\uC9C0 \uC784\uACC4\uAC12 (px)")
235
- }).describe("\uAC00\uC0C1 \uC2A4\uD06C\uB864 \uB9AC\uC2A4\uD2B8. @tanstack/react-virtual \uAE30\uBC18.");
448
+ items: z.array(z.any()).describe("Data array (required)"),
449
+ estimateSize: z.union([z.number(), z.any()]).describe("Estimated item height (number or (index) => number, required)"),
450
+ renderItem: z.any().describe("Item renderer (item, index, virtualItem) => ReactNode (required)"),
451
+ overscan: z.number().default(5).describe("Overscan count"),
452
+ gap: z.number().default(0).describe("Item gap (px)"),
453
+ className: z.string().optional().describe("Scroll container style"),
454
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
455
+ endReachedThreshold: z.number().default(200).describe("End detection threshold (px)"),
456
+ onEndReached: z.any().optional().describe("End reached callback () => void")
457
+ }).describe("Virtual scroll list. Based on @tanstack/react-virtual.");
236
458
  var virtualGridPropsSchema = z.object({
237
- items: z.array(z.any()).describe("\uB370\uC774\uD130 \uBC30\uC5F4 (\uD544\uC218)"),
238
- estimateSize: z.union([z.number(), z.any()]).describe("\uC608\uC0C1 \uC544\uC774\uD15C \uB192\uC774 (\uD544\uC218)"),
239
- columns: z.number().describe("\uC5F4 \uC218 (\uD544\uC218)"),
240
- renderItem: z.any().describe("\uC544\uC774\uD15C \uB80C\uB354\uB7EC (\uD544\uC218)"),
241
- overscan: z.number().default(3).describe("\uC624\uBC84\uC2A4\uCE94 \uC218"),
242
- gap: z.number().default(0).describe("\uC544\uC774\uD15C \uAC04\uACA9 (px)"),
243
- className: z.string().optional().describe("\uC2A4\uD06C\uB864 \uCEE8\uD14C\uC774\uB108 \uC2A4\uD0C0\uC77C")
244
- }).describe("\uAC00\uC0C1 \uC2A4\uD06C\uB864 \uADF8\uB9AC\uB4DC. @tanstack/react-virtual \uAE30\uBC18.");
459
+ items: z.array(z.any()).describe("Data array (required)"),
460
+ columns: z.number().describe("Column count (required)"),
461
+ estimateSize: z.union([z.number(), z.any()]).describe("Estimated item height (required)"),
462
+ renderItem: z.any().describe("Item renderer (item, index) => ReactNode (required)"),
463
+ overscan: z.number().default(3).describe("Overscan count"),
464
+ gap: z.number().default(0).describe("Item gap (px)"),
465
+ className: z.string().optional().describe("Scroll container style"),
466
+ style: z.any().optional().describe("Inline style (CSSProperties)"),
467
+ endReachedThreshold: z.number().default(200).describe("End detection threshold (px)"),
468
+ onEndReached: z.any().optional().describe("End reached callback () => void")
469
+ }).describe("Virtual scroll grid. Based on @tanstack/react-virtual.");
245
470
  var infiniteScrollPropsSchema = z.object({
246
- list: z.array(z.any()).nullable().describe("\uD604\uC7AC \uB370\uC774\uD130 \uBC30\uC5F4 (\uD544\uC218)"),
247
- totalCount: z.number().optional().describe("\uC804\uCCB4 \uAC1C\uC218 (hasMore\uC640 \uBC30\uD0C0\uC801 \uC0AC\uC6A9)"),
248
- hasMore: z.boolean().optional().describe("\uB354 \uC788\uB294\uC9C0 (totalCount\uC640 \uBC30\uD0C0\uC801 \uC0AC\uC6A9)"),
249
- tag: z.string().default("div").describe("children \uB798\uD37C \uD0DC\uADF8"),
250
- rootMargin: z.number().default(100).describe("\uAC10\uC9C0 \uB9C8\uC9C4 (px)"),
251
- loading: z.boolean().optional().describe("\uB85C\uB529 \uC0C1\uD0DC"),
252
- loadingElement: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uB85C\uB529 \uC694\uC18C"),
253
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
254
- }).describe("\uBB34\uD55C \uC2A4\uD06C\uB864. IntersectionObserver \uAE30\uBC18.");
471
+ list: z.array(z.any()).nullable().describe("Current data array (required)"),
472
+ totalCount: z.number().optional().describe("Total count (mutually exclusive with hasMore)"),
473
+ hasMore: z.boolean().optional().describe("Has more items (mutually exclusive with totalCount)"),
474
+ tag: z.string().default("div").describe("Children wrapper tag"),
475
+ rootMargin: z.number().default(100).describe("Detection margin (px)"),
476
+ loading: z.boolean().optional().describe("Loading state"),
477
+ loadingElement: z.any().optional().describe("Custom loading element"),
478
+ handleLoadMore: z.any().describe("Load more callback () => void, required"),
479
+ scrollTarget: z.any().optional().describe("Scroll target element (HTMLElement | Document | MutableRefObject)"),
480
+ children: z.any().describe("List item rendering (ReactNode, required)"),
481
+ className: z.string().optional().describe("Style override")
482
+ }).describe("Infinite scroll. Based on IntersectionObserver.");
255
483
  var ellipsisPropsSchema = z.object({
256
- content: z.any().default("").describe("\uBCF8\uBB38 (ReactNode)"),
257
- lineClamp: z.number().default(2).describe("\uC904 \uC218 \uC81C\uD55C"),
258
- triggerMore: z.any().default("more").describe("\uB354\uBCF4\uAE30 \uD14D\uC2A4\uD2B8 (ReactNode)"),
259
- triggerLess: z.any().default("less").describe("\uC811\uAE30 \uD14D\uC2A4\uD2B8 (ReactNode)"),
260
- defaultShortened: z.boolean().default(true).describe("\uCD08\uAE30 \uC811\uD798 \uC0C1\uD0DC"),
261
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
262
- }).describe("\uD14D\uC2A4\uD2B8 \uB9D0\uC904\uC784. \uB354\uBCF4\uAE30/\uC811\uAE30 \uD1A0\uAE00 \uB0B4\uC7A5.");
484
+ content: z.any().default("").describe("Body text (ReactNode)"),
485
+ lineClamp: z.number().default(2).describe("Line clamp limit"),
486
+ triggerMore: z.any().default("more").describe("Show more text (ReactNode)"),
487
+ triggerLess: z.any().default("less").describe("Show less text (ReactNode)"),
488
+ defaultShortened: z.boolean().default(true).describe("Initial collapsed state"),
489
+ observingEnvs: z.array(z.boolean()).optional().describe("Re-measure on external condition change"),
490
+ onShowMoreLessClick: z.any().optional().describe("Show more/less click callback () => void"),
491
+ className: z.string().optional().describe("Style override")
492
+ }).describe("Text ellipsis. Built-in show more/less toggle.");
493
+ var emptyStatePropsSchema = z.object({
494
+ icon: z.any().optional().describe("Custom icon (ReactNode). Default inbox icon"),
495
+ title: z.string().optional().describe("Title text"),
496
+ description: z.string().optional().describe("Description text"),
497
+ action: z.any().optional().describe("Action area (ReactNode, e.g. Button)"),
498
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Overall size"),
499
+ children: z.any().optional().describe("Additional content (ReactNode)"),
500
+ className: z.string().optional().describe("Style override")
501
+ }).describe("Empty state placeholder. Shown when data is empty or unavailable.");
263
502
  var numberInputPropsSchema = z.object({
264
- value: z.union([z.number(), z.string()]).optional().describe("\uD604\uC7AC \uAC12"),
265
- size: z.enum(["sm", "md", "lg"]).default("md").describe("\uD06C\uAE30"),
266
- error: z.boolean().optional().describe("\uC5D0\uB7EC \uC0C1\uD0DC"),
267
- min: z.number().optional().describe("\uCD5C\uC18C\uAC12"),
268
- max: z.number().optional().describe("\uCD5C\uB300\uAC12"),
269
- step: z.number().default(1).describe("\uC99D\uAC10 \uB2E8\uC704"),
270
- digit: z.number().default(0).describe("\uC18C\uC218 \uC790\uB9BF\uC218"),
271
- hideButtons: z.boolean().default(false).describe("\uAE30\uBCF8 \uC2A4\uD540 \uBC84\uD2BC \uC228\uAE40. numberInputBind\uB85C \uC678\uBD80 \uBC84\uD2BC\uC5D0 \uC774\uBCA4\uD2B8 \uBD80\uCC29 \uC2DC \uC0AC\uC6A9"),
272
- disabled: z.boolean().optional().describe("\uBE44\uD65C\uC131"),
273
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
503
+ value: z.union([z.number(), z.string()]).optional().describe("Current value"),
504
+ size: z.enum(["sm", "md", "lg", "xl"]).default("md").describe("Size"),
505
+ error: z.boolean().optional().describe("Error state"),
506
+ min: z.number().optional().describe("Minimum value"),
507
+ max: z.number().optional().describe("Maximum value"),
508
+ step: z.number().default(1).describe("Step increment"),
509
+ digit: z.number().default(0).describe("Decimal places"),
510
+ hideButtons: z.boolean().default(false).describe("Hide default spin buttons. Use with numberInputBind for external button event binding"),
511
+ disabled: z.boolean().optional().describe("Disabled"),
512
+ readOnly: z.boolean().optional().describe("Read-only (includes hiding spin buttons)"),
513
+ placeholder: z.string().optional().describe("Placeholder"),
514
+ name: z.string().optional().describe("Form field name"),
515
+ id: z.string().optional().describe("Element ID"),
516
+ autoFocus: z.boolean().optional().describe("Auto focus"),
517
+ onValueChange: z.any().optional().describe("Value change callback (value: number | undefined) => void"),
518
+ onBlur: z.any().optional().describe("Blur callback"),
519
+ onFocus: z.any().optional().describe("Focus callback"),
520
+ className: z.string().optional().describe("Style override")
521
+ }).describe(
522
+ "Number input. Accelerated increment on long press. Exposes increment/decrement methods via ref. numberInputBind(ref, direction) binds same acceleration to external buttons."
523
+ );
524
+ var priceInputPropsSchema = z.object({
525
+ size: z.enum(["md", "lg", "xl"]).default("md").describe("Size"),
526
+ error: z.boolean().optional().describe("Error state (shows danger border)"),
527
+ prefix: z.union([z.boolean(), z.any()]).default(true).describe('Prefix element. true = "$", ReactNode = custom content, false = hidden'),
528
+ suffix: z.any().optional().describe('Suffix element after the input (e.g. "CROSSD", icon, ReactNode)'),
529
+ label: z.any().optional().describe("Label displayed above the input (ReactNode)"),
530
+ description: z.any().optional().describe("Description below the input. Turns red on error (ReactNode)"),
531
+ balance: z.union([z.string(), z.number()]).optional().describe("Balance value in the header. Clicking fills the input"),
532
+ balanceLabel: z.string().default("Balance").describe("Label text for balance display"),
533
+ balanceContent: z.any().optional().describe("Custom balance display (ReactNode). Replaces default text, keeps click-to-fill"),
534
+ maxBalance: z.number().optional().describe("Max allowed value. Exceeding auto-applies error state and turns balance red"),
535
+ separator: z.boolean().default(false).describe("Display thousands separator (comma). onValueChange receives raw value without commas"),
536
+ align: z.enum(["left", "right"]).default("left").describe("Text alignment inside the input"),
537
+ disabled: z.boolean().optional().describe("Disabled"),
538
+ placeholder: z.string().optional().describe("Placeholder"),
539
+ value: z.any().optional().describe("Controlled value"),
540
+ id: z.string().optional().describe("Element ID"),
541
+ onValueChange: z.any().optional().describe("Value change callback (value: string) => void"),
542
+ onBalanceClick: z.any().optional().describe("Balance click callback (balance: string | number) => void"),
543
+ className: z.string().optional().describe("Style override")
274
544
  }).describe(
275
- "\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."
545
+ "Price/amount input field with prefix, suffix, balance display, and auto-fill on balance click."
276
546
  );
277
- var typographyPropsSchema = z.object({
278
- variant: z.enum([
279
- "h1",
280
- "h2",
281
- "h3",
282
- "h4",
283
- "h5",
284
- "h6",
285
- "body1",
286
- "body2",
287
- "caption",
288
- "overline",
289
- "label"
290
- ]).default("body1").describe("\uD0C0\uC774\uD3EC\uADF8\uB798\uD53C \uBCC0\uD615"),
291
- color: z.enum([
292
- "primary",
293
- "secondary",
294
- "tertiary",
295
- "muted",
296
- "accent",
297
- "danger",
298
- "success",
299
- "inherit"
300
- ]).default("primary").describe("\uD14D\uC2A4\uD2B8 \uC0C9\uC0C1"),
301
- as: z.enum(["h1", "h2", "h3", "h4", "h5", "h6", "p", "span", "label", "div"]).optional().describe("\uB80C\uB354\uB9C1 \uD0DC\uADF8 (variant\uBCC4 \uAE30\uBCF8 \uD0DC\uADF8 \uC790\uB3D9)"),
302
- asChild: z.boolean().optional().describe("true\uBA74 \uC790\uC2DD \uC694\uC18C\uB85C \uB80C\uB354\uB9C1 (Slot \uD328\uD134)"),
303
- className: z.string().optional().describe("\uC2A4\uD0C0\uC77C \uC624\uBC84\uB77C\uC774\uB4DC")
304
- }).describe("\uD0C0\uC774\uD3EC\uADF8\uB798\uD53C. \uC2DC\uB9E8\uD2F1 \uD0DC\uADF8 + CVA \uBCC0\uD615.");
305
547
  var dataListPropsSchema = z.object({
306
- list: z.array(z.any()).nullable().describe("\uB80C\uB354\uB9C1\uD560 \uB370\uC774\uD130 \uBC30\uC5F4. null\uC774\uBA74 \uB85C\uB529 \uC0C1\uD0DC (\uD544\uC218)"),
307
- noDataMessage: z.any().optional().describe("\uBE48 \uBC30\uC5F4\uC77C \uB54C \uD45C\uC2DC\uD560 \uBA54\uC2DC\uC9C0 (string | ReactElement)"),
308
- errorFallback: z.any().optional().describe("\uC5D0\uB7EC \uBC1C\uC0DD \uC2DC \uD45C\uC2DC\uD560 fallback (ReactNode)"),
309
- loadingElement: z.any().optional().describe("\uB85C\uB529 \uC911 \uD45C\uC2DC\uD560 \uCEE4\uC2A4\uD140 \uC694\uC18C (\uAE30\uBCF8: Spinner)"),
310
- skeletonElement: z.any().optional().describe("\uB85C\uB529 \uC911 \uD45C\uC2DC\uD560 \uC2A4\uCF08\uB808\uD1A4 \uC694\uC18C (ReactElement)"),
311
- skeletonCount: z.number().default(3).describe("\uC2A4\uCF08\uB808\uD1A4 \uBC18\uBCF5 \uAC1C\uC218"),
312
- loading: z.boolean().default(false).describe("\uAC15\uC81C \uB85C\uB529 \uC0C1\uD0DC"),
313
- children: z.any().describe("\uAC01 \uC544\uC774\uD15C \uB80C\uB354 \uD568\uC218: ({ item, index }) => ReactNode (\uD544\uC218)"),
314
- className: z.string().optional().describe("\uB8E8\uD2B8 \uC694\uC18C \uC2A4\uD0C0\uC77C")
548
+ list: z.array(z.any()).nullable().describe("Data array to render. null = loading state (required)"),
549
+ noDataMessage: z.any().optional().describe("Message for empty array (string | ReactElement)"),
550
+ errorFallback: z.any().optional().describe("Fallback on error (ReactNode)"),
551
+ loadingElement: z.any().optional().describe("Custom loading element (default: Spinner)"),
552
+ skeletonElement: z.any().optional().describe("Skeleton element during loading (ReactElement)"),
553
+ skeletonCount: z.number().default(3).describe("Skeleton repeat count"),
554
+ loading: z.boolean().default(false).describe("Force loading state"),
555
+ children: z.any().describe("Item render function: ({ item, index }) => ReactNode (required)"),
556
+ className: z.string().optional().describe("Root element style")
315
557
  }).describe(
316
- "\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."
558
+ "Data list. Automatically handles loading/skeleton/empty/data states based on list. Built-in ErrorBoundary."
317
559
  );
560
+ var animationOptionsSchema = z.object({
561
+ name: z.string().optional().describe("Animation name"),
562
+ mobile: z.string().optional().describe("Mobile animation name"),
563
+ delay: z.number().optional().describe("Delay (ms)"),
564
+ duration: z.number().optional().describe("Duration (ms)"),
565
+ timingFunc: z.string().optional().describe("Timing function"),
566
+ leaveTimingFunc: z.string().optional().describe("Exit timing function")
567
+ }).describe("Modal animation options");
318
568
  var modalTemplatePropsSchema = z.object({
319
- title: z.any().optional().describe("\uD5E4\uB354 \uC81C\uBAA9 (ReactNode)"),
320
- desc: z.any().optional().describe("\uD5E4\uB354 \uC124\uBA85 (ReactNode)"),
569
+ title: z.any().optional().describe("Header title (ReactNode)"),
570
+ desc: z.any().optional().describe("Header description (ReactNode)"),
321
571
  layout: z.enum([
322
572
  "default",
323
573
  "bottom-sheet",
@@ -326,24 +576,199 @@ var modalTemplatePropsSchema = z.object({
326
576
  "full-page",
327
577
  "full-page-reverse",
328
578
  "draggable"
329
- ]).default("default").describe("\uB808\uC774\uC544\uC6C3"),
330
- showDim: z.boolean().default(true).describe("\uB524 \uBC30\uACBD \uD45C\uC2DC"),
331
- dimClose: z.boolean().default(true).describe("\uB524 \uD074\uB9AD \uC2DC \uB2EB\uAE30"),
332
- hideHeader: z.boolean().default(false).describe("\uD5E4\uB354 \uC228\uAE40"),
333
- hideFooter: z.boolean().default(true).describe("\uD478\uD130 \uC228\uAE40"),
334
- footer: z.any().optional().describe("\uCEE4\uC2A4\uD140 \uD478\uD130 (ReactElement)"),
335
- enableDrag: z.boolean().default(false).describe("\uB4DC\uB798\uADF8 \uD65C\uC131\uD654 (draggable \uB808\uC774\uC544\uC6C3)"),
336
- dragPersistKey: z.string().optional().describe("\uB4DC\uB798\uADF8 \uC704\uCE58 \uC800\uC7A5 \uD0A4"),
337
- innerClassName: z.string().optional().describe("\uBAA8\uB2EC \uBCF8\uCCB4 \uC2A4\uD0C0\uC77C"),
338
- bodyClassName: z.string().optional().describe("\uBC14\uB514 \uC601\uC5ED \uC2A4\uD0C0\uC77C")
579
+ ]).default("default").describe("Layout"),
580
+ showDim: z.boolean().default(true).describe("Show dim overlay"),
581
+ dimClose: z.boolean().default(true).describe("Close on dim click"),
582
+ hideHeader: z.boolean().default(false).describe("Hide header"),
583
+ hideFooter: z.boolean().default(true).describe("Hide footer"),
584
+ footer: z.any().optional().describe("Custom footer (ReactElement)"),
585
+ animation: animationOptionsSchema.optional().describe("Modal animation"),
586
+ enableDrag: z.boolean().default(true).describe("Enable drag (bottom-sheet/draggable layouts)"),
587
+ dragPersistKey: z.string().optional().describe("Drag position persistence key"),
588
+ close: z.any().describe("Modal close function (isAnimation?: boolean) => void (auto-injected)"),
589
+ children: z.any().describe("Modal body (ReactNode, required)"),
590
+ className: z.string().optional().describe("Root wrapper style"),
591
+ innerClassName: z.string().optional().describe("Modal body style"),
592
+ bodyClassName: z.string().optional().describe("Body area style"),
593
+ footerClassName: z.string().optional().describe("Footer area style"),
594
+ dimClassName: z.string().optional().describe("Dim overlay style"),
595
+ headerClassName: z.string().optional().describe("Header area style")
339
596
  }).describe(
340
- "\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."
597
+ "Modal template. All modal components must be wrapped with ModalTemplate."
341
598
  );
342
599
  var modalCallSchema = z.object({
343
- component: z.any().describe("\uBAA8\uB2EC \uCEF4\uD3EC\uB10C\uD2B8 (\uD544\uC218)"),
344
- props: z.record(z.any()).optional().describe("\uCEF4\uD3EC\uB10C\uD2B8\uC5D0 \uC804\uB2EC\uD560 props")
600
+ component: z.any().describe("Modal component (required). Automatically receives close/resolve as props"),
601
+ props: z.record(z.any()).optional().describe("Props to pass to component"),
602
+ id: z.string().optional().describe("Modal ID (used for duplicate check)"),
603
+ layout: z.enum([
604
+ "default",
605
+ "bottom-sheet",
606
+ "slide-left",
607
+ "slide-right",
608
+ "full-page",
609
+ "full-page-reverse",
610
+ "draggable"
611
+ ]).optional().describe("Layout"),
612
+ animation: animationOptionsSchema.optional().describe("Modal animation"),
613
+ scrollEnable: z.boolean().optional().describe("Allow background scroll"),
614
+ isToggle: z.boolean().optional().describe("Toggle mode (close on re-call of same modal)"),
615
+ isAlone: z.boolean().optional().describe("Alone mode (close all existing modals before opening)"),
616
+ duplicateCheck: z.boolean().optional().describe("Prevent duplicate opening of same component"),
617
+ disableEscapeKeyPress: z.boolean().optional().describe("Disable close via ESC key"),
618
+ componentName: z.string().optional().describe("Modal identifier name (used for duplicate check, modal search)"),
619
+ onOpen: z.any().optional().describe("Callback when modal opens"),
620
+ onClose: z.any().optional().describe("Callback when modal closes")
621
+ }).describe(
622
+ "modal() function call options. component automatically receives close/resolve as props."
623
+ );
624
+ var errorBoundaryPropsSchema = z.object({
625
+ children: z.any().describe("Child elements to wrap (ReactNode, required)"),
626
+ fallback: z.any().optional().describe("Fallback UI on error (ReactNode)"),
627
+ onError: z.any().optional().describe("Error callback (error: Error, errorInfo: ErrorInfo) => void")
628
+ }).describe("Error boundary. Catches child component render errors and displays fallback UI.");
629
+ var clientOnlyPropsSchema = z.object({
630
+ children: z.any().describe("Element to render only on client (ReactNode, required)"),
631
+ fallback: z.any().optional().describe("Fallback UI during SSR (ReactNode, default: null)")
632
+ }).describe("Client-only rendering. Prevents hydration mismatch in SSR environments.");
633
+ var themeProviderPropsSchema = z.object({
634
+ children: z.any().describe("App root element (ReactNode, required)"),
635
+ defaultTheme: z.string().optional().describe('Default theme (e.g. "dark", "light")'),
636
+ storageKey: z.string().optional().describe('localStorage storage key (default: "theme")'),
637
+ themes: z.array(z.string()).optional().describe('Available theme list (default: ["light", "dark"])'),
638
+ attribute: z.union([z.string(), z.array(z.string())]).optional().describe('Theme HTML attribute (default: "data-theme")'),
639
+ enableSystem: z.boolean().optional().describe("Enable system theme detection"),
640
+ disableTransitionOnChange: z.boolean().optional().describe("Disable transitions on theme change"),
641
+ forcedTheme: z.string().optional().describe("Forced theme (user cannot change)"),
642
+ enableColorScheme: z.boolean().optional().describe("Auto-set color-scheme CSS property"),
643
+ nonce: z.string().optional().describe("CSP nonce")
644
+ }).describe(
645
+ "Theme provider. Based on next-themes. Access theme state via useTheme() hook."
646
+ );
647
+ var tablePropsSchema = z.object({
648
+ list: z.array(z.any()).nullable().describe("Data array. null/undefined = loading state (required)"),
649
+ children: z.any().describe("Row render function ({ item, index }) => ReactNode (required)"),
650
+ hideThead: z.boolean().optional().describe("Hide table header"),
651
+ loading: z.boolean().optional().describe("Force loading state"),
652
+ loadingType: z.enum(["loading", "skeleton"]).default("skeleton").describe("Loading display type"),
653
+ loadingElement: z.any().optional().describe("Custom loading element (ReactElement)"),
654
+ skeletonCount: z.number().default(10).describe("Skeleton row count"),
655
+ noDataMsg: z.any().optional().describe("No data message (ReactElement | string)"),
656
+ notification: z.any().optional().describe("Table top notification area (ReactNode)"),
657
+ sortUpElement: z.any().optional().describe("Ascending sort icon (ReactElement)"),
658
+ sortDownElement: z.any().optional().describe("Descending sort icon (ReactElement)"),
659
+ className: z.string().optional().describe("Table wrapper style"),
660
+ theadClassName: z.string().optional().describe("Header row style")
661
+ }).describe(
662
+ "Table. Column definitions via TdColumn, row wrapping via TableRow. Built-in sorting/skeleton loading."
663
+ );
664
+ var tableRowPropsSchema = z.object({
665
+ variant: z.enum(["default", "accent"]).default("default").describe("Row style"),
666
+ className: z.string().optional().describe("Style override"),
667
+ children: z.any().describe("TdColumn list (ReactNode, required)"),
668
+ onClick: z.any().optional().describe("Row click callback (e: MouseEvent) => void")
669
+ }).describe("Table row. Used inside Table.");
670
+ var tdColumnPropsSchema = z.object({
671
+ label: z.any().optional().describe("Header label (ReactElement | string)"),
672
+ fieldId: z.string().nullable().describe("Column identifier (sort key, required)"),
673
+ size: z.union([z.number(), z.string()]).optional().describe("Column width (number \u2192 px, string \u2192 CSS value)"),
674
+ align: z.enum(["left", "center", "right"]).default("left").describe("Text alignment"),
675
+ textOverflow: z.enum(["auto", "truncate", "wrap", "break-all"]).default("truncate").describe("Text overflow handling"),
676
+ highlightKey: z.string().nullable().optional().describe("Hover highlight group key"),
677
+ colSpan: z.number().optional().describe("Column span"),
678
+ rowSpan: z.number().optional().describe("Row span"),
679
+ thColSpan: z.number().optional().describe("Header colSpan (<th>)"),
680
+ thRowSpan: z.number().optional().describe("Header rowSpan (<th>)"),
681
+ enableSorting: z.boolean().optional().describe("Enable sorting"),
682
+ order: z.enum(["desc", "asc", ""]).optional().describe("Current sort direction"),
683
+ sortValue: z.union([z.string(), z.number()]).optional().describe("Sort criterion value"),
684
+ handleClickSort: z.any().optional().describe("Sort click callback ({ index, fieldId, order }) => void"),
685
+ children: z.any().describe("Cell content (ReactNode, required)"),
686
+ className: z.string().optional().describe("Style override")
687
+ }).describe("Table cell/column definition. Used inside TableRow.");
688
+ var toastOptionsSchema = z.object({
689
+ description: z.any().optional().describe("Toast subtitle (ReactNode)"),
690
+ duration: z.number().optional().describe("Auto-dismiss duration (ms). Default 4000"),
691
+ icon: z.any().optional().describe("Custom icon (ReactNode)"),
692
+ action: z.any().optional().describe("Action button. { label: ReactNode, onClick: () => void }"),
693
+ cancel: z.any().optional().describe("Cancel button. { label: ReactNode, onClick: () => void }"),
694
+ closeButton: z.boolean().optional().describe("Show close (X) button"),
695
+ dismissible: z.boolean().optional().describe("Allow dismiss via swipe/click"),
696
+ richColors: z.boolean().optional().describe("Apply strong colors for success/error/warning/info"),
697
+ invert: z.boolean().optional().describe("Invert colors (dark\u2194light)"),
698
+ position: z.enum([
699
+ "top-left",
700
+ "top-center",
701
+ "top-right",
702
+ "bottom-left",
703
+ "bottom-center",
704
+ "bottom-right"
705
+ ]).optional().describe("Individual position for this toast"),
706
+ onDismiss: z.any().optional().describe("Dismiss callback (toast: ToastT) => void"),
707
+ onAutoClose: z.any().optional().describe("Auto-close callback (toast: ToastT) => void"),
708
+ className: z.string().optional().describe("Toast custom class"),
709
+ style: z.any().optional().describe("Toast inline style (CSSProperties)"),
710
+ unstyled: z.boolean().optional().describe("Remove default styles (for custom styling)"),
711
+ id: z.union([z.string(), z.number()]).optional().describe("Toast ID (for deduplication or updates)")
712
+ }).describe(
713
+ "toast() call options. Used as toast(message, options). Fully customizable via toast.custom(jsx)."
714
+ );
715
+ var toasterPropsSchema = z.object({
716
+ position: z.enum([
717
+ "top-left",
718
+ "top-center",
719
+ "top-right",
720
+ "bottom-left",
721
+ "bottom-center",
722
+ "bottom-right"
723
+ ]).default("top-center").describe("Default toast position"),
724
+ unstyled: z.boolean().default(false).describe("Remove default styles (for custom styling)"),
725
+ theme: z.enum(["light", "dark", "system"]).optional().describe("Theme setting"),
726
+ richColors: z.boolean().optional().describe("Apply strong colors for success/error/warning/info"),
727
+ expand: z.boolean().optional().describe("Always show toasts in expanded state"),
728
+ duration: z.number().optional().describe("Global auto-dismiss duration (ms). Default 4000"),
729
+ visibleToasts: z.number().optional().describe("Maximum visible toasts at once"),
730
+ closeButton: z.boolean().optional().describe("Show close button on all toasts"),
731
+ gap: z.number().optional().describe("Gap between toasts (px)"),
732
+ offset: z.any().optional().describe("Offset from screen edge. string | number | { top, right, bottom, left }"),
733
+ dir: z.enum(["ltr", "rtl", "auto"]).optional().describe("Text direction")
345
734
  }).describe(
346
- "modal() \uD568\uC218 \uD638\uCD9C \uD615\uD0DC. component\uB294 close/resolve\uB97C \uC790\uB3D9\uC73C\uB85C props\uB85C \uBC1B\uB294\uB2E4."
735
+ "Toaster config. Place once at app root. Display notifications via toast(). Based on sonner."
347
736
  );
737
+ var tagInputPropsSchema = z.object({
738
+ value: z.array(z.string()).optional().describe("Controlled tags array"),
739
+ defaultValue: z.array(z.string()).optional().describe("Default tags"),
740
+ onChange: z.any().optional().describe("Tags change callback (tags: string[]) => void"),
741
+ placeholder: z.string().default("\uD0DC\uADF8 \uC785\uB825 \uD6C4 Enter").describe("Input placeholder"),
742
+ max: z.number().optional().describe("Maximum number of tags"),
743
+ disabled: z.boolean().optional().describe("Disabled"),
744
+ allowDuplicates: z.boolean().default(false).describe("Allow duplicate tags"),
745
+ label: z.string().optional().describe("Label text"),
746
+ description: z.string().optional().describe("Helper text below input"),
747
+ size: z.enum(["sm", "md", "lg"]).default("md").describe("Size"),
748
+ className: z.string().optional().describe("Style override")
749
+ }).describe("Tag input. Enter key to add, Backspace to delete last tag.");
750
+ var nxImagePropsSchema = z.object({
751
+ src: z.string().optional().describe("Image source URL"),
752
+ alt: z.string().optional().describe("Alt text"),
753
+ fallback: z.any().optional().describe("Custom fallback element (ReactNode)"),
754
+ fallbackSrc: z.string().optional().describe("Fallback image URL on error"),
755
+ aspectRatio: z.string().optional().describe('CSS aspect-ratio (e.g. "16/9", "1/1")'),
756
+ objectFit: z.enum(["cover", "contain", "fill", "none"]).default("cover").describe("Object-fit mode"),
757
+ lazy: z.boolean().default(true).describe('Enable lazy loading (loading="lazy")'),
758
+ wrapperClassName: z.string().optional().describe("Wrapper div style"),
759
+ className: z.string().optional().describe("Image element style")
760
+ }).describe("Enhanced image. Lazy loading, fallback, aspect-ratio support.");
761
+ var datePickerPropsSchema = z.object({
762
+ value: z.any().optional().describe("Controlled date value (Date)"),
763
+ defaultValue: z.any().optional().describe("Default date (Date)"),
764
+ onChange: z.any().optional().describe("Date change callback (date: Date | undefined) => void"),
765
+ placeholder: z.string().default("\uB0A0\uC9DC \uC120\uD0DD").describe("Placeholder text"),
766
+ disabled: z.boolean().default(false).describe("Disabled"),
767
+ minDate: z.any().optional().describe("Minimum selectable date (Date)"),
768
+ maxDate: z.any().optional().describe("Maximum selectable date (Date)"),
769
+ locale: z.enum(["ko", "en"]).default("ko").describe("Calendar locale"),
770
+ formatStr: z.string().default("yyyy-MM-dd").describe("Date format string (date-fns format)"),
771
+ className: z.string().optional().describe("Style override")
772
+ }).describe("DatePicker. Calendar popup for date selection. Based on react-day-picker.");
348
773
 
349
- export { accordionPropsSchema, avatarPropsSchema, buttonPropsSchema, carouselPropsSchema, checkBoxPropsSchema, chipPropsSchema, countdownPropsSchema, counterPropsSchema, dataListPropsSchema, dividerPropsSchema, drawerContentPropsSchema, drawerPropsSchema, ellipsisPropsSchema, infiniteScrollPropsSchema, marqueePropsSchema, modalCallSchema, modalTemplatePropsSchema, numberInputPropsSchema, paginationPropsSchema, popoverPropsSchema, radioGroupPropsSchema, radioItemPropsSchema, selectItemPropsSchema, selectPropsSchema, skeletonPropsSchema, spinnerPropsSchema, switchPropsSchema, tabPropsSchema, textAreaPropsSchema, textInputPropsSchema, tooltipPropsSchema, typographyPropsSchema, virtualGridPropsSchema, virtualListPropsSchema };
774
+ export { accordionPropsSchema, alertPropsSchema, avatarPropsSchema, badgePropsSchema, breadcrumbPropsSchema, buttonPropsSchema, carouselButtonPropsSchema, carouselDotsPropsSchema, carouselPropsSchema, carouselSlidePropsSchema, checkBoxPropsSchema, chipPropsSchema, clientOnlyPropsSchema, countdownPropsSchema, counterPropsSchema, dataListPropsSchema, datePickerPropsSchema, dividerPropsSchema, drawerClosePropsSchema, drawerContentPropsSchema, drawerDescriptionPropsSchema, drawerPropsSchema, drawerTitlePropsSchema, drawerTriggerPropsSchema, dropdownMenuPropsSchema, ellipsisPropsSchema, emptyStatePropsSchema, errorBoundaryPropsSchema, infiniteScrollPropsSchema, marqueePropsSchema, modalCallSchema, modalTemplatePropsSchema, numberInputPropsSchema, nxImagePropsSchema, paginationPropsSchema, popoverPropsSchema, priceInputPropsSchema, progressPropsSchema, radioGroupPropsSchema, radioItemPropsSchema, selectItemPropsSchema, selectPropsSchema, skeletonPropsSchema, sliderPropsSchema, spinnerPropsSchema, stepperPropsSchema, switchPropsSchema, tabPropsSchema, tablePropsSchema, tableRowPropsSchema, tagInputPropsSchema, tdColumnPropsSchema, textAreaPropsSchema, textInputPropsSchema, themeProviderPropsSchema, toastOptionsSchema, toasterPropsSchema, toggleGroupPropsSchema, tooltipPropsSchema, virtualGridPropsSchema, virtualListPropsSchema };