@jbpark/ui-kit 10.2.0 → 10.4.0

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 (505) hide show
  1. package/README.ko.md +97 -76
  2. package/README.md +91 -70
  3. package/dist/Alert.d.mts +2 -2
  4. package/dist/Alert.d.mts.map +1 -1
  5. package/dist/Alert.mjs +1 -1
  6. package/dist/Anchor.d.mts +29 -0
  7. package/dist/Anchor.d.mts.map +1 -0
  8. package/dist/Anchor.mjs +120 -0
  9. package/dist/Anchor.mjs.map +1 -0
  10. package/dist/AutoComplete.d.mts +34 -0
  11. package/dist/AutoComplete.d.mts.map +1 -0
  12. package/dist/AutoComplete.mjs +82 -0
  13. package/dist/AutoComplete.mjs.map +1 -0
  14. package/dist/Avatar.d.mts +2 -2
  15. package/dist/Avatar.d.mts.map +1 -1
  16. package/dist/Avatar.mjs +2 -2
  17. package/dist/Badge.d.mts +2 -2
  18. package/dist/Badge.d.mts.map +1 -1
  19. package/dist/Breadcrumb.d.mts +3 -3
  20. package/dist/Breadcrumb.d.mts.map +1 -1
  21. package/dist/Breadcrumb.mjs +2 -2
  22. package/dist/Breadcrumb.mjs.map +1 -1
  23. package/dist/Button.d.mts +3 -3
  24. package/dist/Button.d.mts.map +1 -1
  25. package/dist/Button.mjs +1 -1
  26. package/dist/Calendar.d.mts +28 -0
  27. package/dist/Calendar.d.mts.map +1 -0
  28. package/dist/Calendar.mjs +64 -0
  29. package/dist/Calendar.mjs.map +1 -0
  30. package/dist/Card.d.mts +2 -2
  31. package/dist/Card.d.mts.map +1 -1
  32. package/dist/Cascader.d.mts +34 -0
  33. package/dist/Cascader.d.mts.map +1 -0
  34. package/dist/Cascader.mjs +144 -0
  35. package/dist/Cascader.mjs.map +1 -0
  36. package/dist/Checkbox.d.mts +10 -0
  37. package/dist/Checkbox.d.mts.map +1 -0
  38. package/dist/Checkbox.mjs +9 -0
  39. package/dist/Checkbox.mjs.map +1 -0
  40. package/dist/CodeEditor.d.mts +10 -4
  41. package/dist/CodeEditor.d.mts.map +1 -1
  42. package/dist/CodeEditor.mjs +9 -4
  43. package/dist/CodeEditor.mjs.map +1 -1
  44. package/dist/{components/molecules/collapse.d.mts → Collapse.d.mts} +3 -3
  45. package/dist/Collapse.d.mts.map +1 -0
  46. package/dist/{components/molecules/collapse.mjs → Collapse.mjs} +3 -3
  47. package/dist/Collapse.mjs.map +1 -0
  48. package/dist/{components/atoms/color-picker.d.mts → ColorPicker.d.mts} +3 -3
  49. package/dist/ColorPicker.d.mts.map +1 -0
  50. package/dist/{components/atoms/color-picker.mjs → ColorPicker.mjs} +3 -3
  51. package/dist/ColorPicker.mjs.map +1 -0
  52. package/dist/{components/templates/container.d.mts → Container.d.mts} +3 -3
  53. package/dist/Container.d.mts.map +1 -0
  54. package/dist/{components/templates/container.mjs → Container.mjs} +2 -2
  55. package/dist/Container.mjs.map +1 -0
  56. package/dist/ContextMenu.d.mts +33 -0
  57. package/dist/ContextMenu.d.mts.map +1 -0
  58. package/dist/ContextMenu.mjs +92 -0
  59. package/dist/ContextMenu.mjs.map +1 -0
  60. package/dist/{components/atoms/date-picker.d.mts → DatePicker.d.mts} +6 -2
  61. package/dist/DatePicker.d.mts.map +1 -0
  62. package/dist/DatePicker.mjs +88 -0
  63. package/dist/DatePicker.mjs.map +1 -0
  64. package/dist/Descriptions.d.mts +31 -0
  65. package/dist/Descriptions.d.mts.map +1 -0
  66. package/dist/Descriptions.mjs +67 -0
  67. package/dist/Descriptions.mjs.map +1 -0
  68. package/dist/Divider.d.mts +18 -0
  69. package/dist/Divider.d.mts.map +1 -0
  70. package/dist/Divider.mjs +44 -0
  71. package/dist/Divider.mjs.map +1 -0
  72. package/dist/{components/organisms/drawer.d.mts → Drawer.d.mts} +3 -3
  73. package/dist/Drawer.d.mts.map +1 -0
  74. package/dist/{components/organisms/drawer.mjs → Drawer.mjs} +6 -6
  75. package/dist/Drawer.mjs.map +1 -0
  76. package/dist/{components/molecules/dropdown.d.mts → Dropdown.d.mts} +4 -4
  77. package/dist/Dropdown.d.mts.map +1 -0
  78. package/dist/{components/molecules/dropdown.mjs → Dropdown.mjs} +4 -4
  79. package/dist/Dropdown.mjs.map +1 -0
  80. package/dist/{components/templates/empty.d.mts → Empty.d.mts} +4 -4
  81. package/dist/Empty.d.mts.map +1 -0
  82. package/dist/{components/templates/empty.mjs → Empty.mjs} +4 -4
  83. package/dist/Empty.mjs.map +1 -0
  84. package/dist/FloatButton.d.mts +10 -0
  85. package/dist/FloatButton.d.mts.map +1 -0
  86. package/dist/FloatButton.mjs +9 -0
  87. package/dist/FloatButton.mjs.map +1 -0
  88. package/dist/Form.d.mts +12 -0
  89. package/dist/Form.d.mts.map +1 -0
  90. package/dist/Form.mjs +11 -0
  91. package/dist/Form.mjs.map +1 -0
  92. package/dist/Input.d.mts +16 -0
  93. package/dist/Input.d.mts.map +1 -0
  94. package/dist/Input.mjs +15 -0
  95. package/dist/Input.mjs.map +1 -0
  96. package/dist/Layout.d.mts.map +1 -1
  97. package/dist/{components/organisms/list/index.d.mts → List.d.mts} +3 -3
  98. package/dist/List.d.mts.map +1 -0
  99. package/dist/List.mjs +9 -0
  100. package/dist/List.mjs.map +1 -0
  101. package/dist/Marquees.d.mts +10 -0
  102. package/dist/Marquees.d.mts.map +1 -0
  103. package/dist/Marquees.mjs +9 -0
  104. package/dist/Marquees.mjs.map +1 -0
  105. package/dist/Mentions.d.mts +34 -0
  106. package/dist/Mentions.d.mts.map +1 -0
  107. package/dist/Mentions.mjs +208 -0
  108. package/dist/Mentions.mjs.map +1 -0
  109. package/dist/Menu.mjs +1 -2
  110. package/dist/{components/organisms/modal.d.mts → Modal.d.mts} +7 -4
  111. package/dist/Modal.d.mts.map +1 -0
  112. package/dist/{components/organisms/modal.mjs → Modal.mjs} +30 -23
  113. package/dist/Modal.mjs.map +1 -0
  114. package/dist/{components/templates/page-header.d.mts → PageHeader.d.mts} +3 -3
  115. package/dist/PageHeader.d.mts.map +1 -0
  116. package/dist/{components/templates/page-header.mjs → PageHeader.mjs} +5 -5
  117. package/dist/PageHeader.mjs.map +1 -0
  118. package/dist/Pagination.d.mts +2 -2
  119. package/dist/Pagination.d.mts.map +1 -1
  120. package/dist/Pagination.mjs +3 -3
  121. package/dist/Popconfirm.d.mts +33 -0
  122. package/dist/Popconfirm.d.mts.map +1 -0
  123. package/dist/Popconfirm.mjs +119 -0
  124. package/dist/Popconfirm.mjs.map +1 -0
  125. package/dist/{components/atoms/popover.d.mts → Popover.d.mts} +3 -3
  126. package/dist/Popover.d.mts.map +1 -0
  127. package/dist/{components/atoms/popover.mjs → Popover.mjs} +4 -4
  128. package/dist/Popover.mjs.map +1 -0
  129. package/dist/{components/atoms/progress.d.mts → Progress.d.mts} +3 -3
  130. package/dist/Progress.d.mts.map +1 -0
  131. package/dist/{components/atoms/progress.mjs → Progress.mjs} +3 -3
  132. package/dist/Progress.mjs.map +1 -0
  133. package/dist/Radio.d.mts +10 -0
  134. package/dist/Radio.d.mts.map +1 -0
  135. package/dist/Radio.mjs +9 -0
  136. package/dist/Radio.mjs.map +1 -0
  137. package/dist/Rate.d.mts +27 -0
  138. package/dist/Rate.d.mts.map +1 -0
  139. package/dist/Rate.mjs +81 -0
  140. package/dist/Rate.mjs.map +1 -0
  141. package/dist/{components/templates/result.d.mts → Result.d.mts} +3 -3
  142. package/dist/Result.d.mts.map +1 -0
  143. package/dist/{components/templates/result.mjs → Result.mjs} +3 -3
  144. package/dist/Result.mjs.map +1 -0
  145. package/dist/Reveals.d.mts.map +1 -1
  146. package/dist/RichTextEditor.d.mts +3 -0
  147. package/dist/RichTextEditor.mjs +1 -0
  148. package/dist/ScrollArea.d.mts +8 -0
  149. package/dist/ScrollArea.d.mts.map +1 -0
  150. package/dist/ScrollArea.mjs +11 -0
  151. package/dist/ScrollArea.mjs.map +1 -0
  152. package/dist/Segmented.d.mts +3 -3
  153. package/dist/Segmented.d.mts.map +1 -1
  154. package/dist/{components/atoms/select.d.mts → Select.d.mts} +7 -7
  155. package/dist/Select.d.mts.map +1 -0
  156. package/dist/{components/atoms/select.mjs → Select.mjs} +5 -5
  157. package/dist/Select.mjs.map +1 -0
  158. package/dist/Skeleton.d.mts +12 -0
  159. package/dist/Skeleton.d.mts.map +1 -0
  160. package/dist/Skeleton.mjs +11 -0
  161. package/dist/Skeleton.mjs.map +1 -0
  162. package/dist/Slider.d.mts +2 -0
  163. package/dist/{components/atoms/slider/index.mjs → Slider.mjs} +2 -2
  164. package/dist/Slider.mjs.map +1 -0
  165. package/dist/Space.d.mts +5 -4
  166. package/dist/Space.d.mts.map +1 -1
  167. package/dist/Space.mjs +13 -4
  168. package/dist/Space.mjs.map +1 -1
  169. package/dist/{components/atoms/spin.d.mts → Spin.d.mts} +3 -3
  170. package/dist/Spin.d.mts.map +1 -0
  171. package/dist/{components/atoms/spin.mjs → Spin.mjs} +4 -4
  172. package/dist/Spin.mjs.map +1 -0
  173. package/dist/Splitter.d.mts +10 -0
  174. package/dist/Splitter.d.mts.map +1 -0
  175. package/dist/Splitter.mjs +9 -0
  176. package/dist/Splitter.mjs.map +1 -0
  177. package/dist/Statistic.d.mts +22 -0
  178. package/dist/Statistic.d.mts.map +1 -0
  179. package/dist/Statistic.mjs +53 -0
  180. package/dist/Statistic.mjs.map +1 -0
  181. package/dist/Steps.d.mts +3 -3
  182. package/dist/Steps.d.mts.map +1 -1
  183. package/dist/Steps.mjs +1 -1
  184. package/dist/Swiper.d.mts +10 -0
  185. package/dist/Swiper.d.mts.map +1 -0
  186. package/dist/Swiper.mjs +9 -0
  187. package/dist/Swiper.mjs.map +1 -0
  188. package/dist/{components/atoms/switch.d.mts → Switch.d.mts} +4 -4
  189. package/dist/Switch.d.mts.map +1 -0
  190. package/dist/{components/atoms/switch.mjs → Switch.mjs} +4 -4
  191. package/dist/Switch.mjs.map +1 -0
  192. package/dist/Table.d.mts +4 -4
  193. package/dist/Table.d.mts.map +1 -1
  194. package/dist/Table.mjs +2 -2
  195. package/dist/Table.mjs.map +1 -1
  196. package/dist/{components/molecules/tabs.d.mts → Tabs.d.mts} +6 -6
  197. package/dist/Tabs.d.mts.map +1 -0
  198. package/dist/{components/molecules/tabs.mjs → Tabs.mjs} +3 -3
  199. package/dist/Tabs.mjs.map +1 -0
  200. package/dist/Tag.d.mts +3 -3
  201. package/dist/Tag.d.mts.map +1 -1
  202. package/dist/TimePicker.d.mts +26 -0
  203. package/dist/TimePicker.d.mts.map +1 -0
  204. package/dist/TimePicker.mjs +77 -0
  205. package/dist/TimePicker.mjs.map +1 -0
  206. package/dist/Timeline.d.mts +35 -0
  207. package/dist/Timeline.d.mts.map +1 -0
  208. package/dist/Timeline.mjs +59 -0
  209. package/dist/Timeline.mjs.map +1 -0
  210. package/dist/{components/organisms/toast.d.mts → Toast.d.mts} +14 -4
  211. package/dist/Toast.d.mts.map +1 -0
  212. package/dist/Toast.mjs +198 -0
  213. package/dist/Toast.mjs.map +1 -0
  214. package/dist/ToggleGroup.d.mts +28 -0
  215. package/dist/ToggleGroup.d.mts.map +1 -0
  216. package/dist/ToggleGroup.mjs +58 -0
  217. package/dist/ToggleGroup.mjs.map +1 -0
  218. package/dist/{components/atoms/tooltip.d.mts → Tooltip.d.mts} +3 -3
  219. package/dist/Tooltip.d.mts.map +1 -0
  220. package/dist/{components/atoms/tooltip.mjs → Tooltip.mjs} +2 -2
  221. package/dist/Tooltip.mjs.map +1 -0
  222. package/dist/Tour.d.mts +37 -0
  223. package/dist/Tour.d.mts.map +1 -0
  224. package/dist/Tour.mjs +175 -0
  225. package/dist/Tour.mjs.map +1 -0
  226. package/dist/Transfer.d.mts +36 -0
  227. package/dist/Transfer.d.mts.map +1 -0
  228. package/dist/Transfer.mjs +147 -0
  229. package/dist/Transfer.mjs.map +1 -0
  230. package/dist/Tree.d.mts +62 -0
  231. package/dist/Tree.d.mts.map +1 -0
  232. package/dist/Tree.mjs +462 -0
  233. package/dist/Tree.mjs.map +1 -0
  234. package/dist/TreeSelect.d.mts +34 -0
  235. package/dist/TreeSelect.d.mts.map +1 -0
  236. package/dist/TreeSelect.mjs +135 -0
  237. package/dist/TreeSelect.mjs.map +1 -0
  238. package/dist/Typography.d.mts.map +1 -1
  239. package/dist/{components/molecules/upload.d.mts → Upload.d.mts} +4 -4
  240. package/dist/Upload.d.mts.map +1 -0
  241. package/dist/{components/molecules/upload.mjs → Upload.mjs} +7 -7
  242. package/dist/Upload.mjs.map +1 -0
  243. package/dist/components/atoms/checkbox/checkbox.d.mts +5 -3
  244. package/dist/components/atoms/checkbox/checkbox.d.mts.map +1 -1
  245. package/dist/components/atoms/checkbox/checkbox.mjs +8 -4
  246. package/dist/components/atoms/checkbox/checkbox.mjs.map +1 -1
  247. package/dist/components/atoms/checkbox/group.d.mts +2 -2
  248. package/dist/components/atoms/checkbox/group.d.mts.map +1 -1
  249. package/dist/components/atoms/float-button/back-top.d.mts +2 -2
  250. package/dist/components/atoms/float-button/back-top.d.mts.map +1 -1
  251. package/dist/components/atoms/float-button/back-top.mjs +1 -1
  252. package/dist/components/atoms/float-button/float-button.d.mts +2 -2
  253. package/dist/components/atoms/float-button/float-button.d.mts.map +1 -1
  254. package/dist/components/atoms/index.d.mts +37 -23
  255. package/dist/components/atoms/input/input.d.mts +2 -1
  256. package/dist/components/atoms/input/input.d.mts.map +1 -1
  257. package/dist/components/atoms/input/input.mjs.map +1 -1
  258. package/dist/components/atoms/input/number.d.mts +2 -2
  259. package/dist/components/atoms/input/number.d.mts.map +1 -1
  260. package/dist/components/atoms/input/number.mjs +1 -1
  261. package/dist/components/atoms/input/otp.d.mts +26 -0
  262. package/dist/components/atoms/input/otp.d.mts.map +1 -0
  263. package/dist/components/atoms/input/otp.mjs +52 -0
  264. package/dist/components/atoms/input/otp.mjs.map +1 -0
  265. package/dist/components/atoms/input/search.d.mts +2 -2
  266. package/dist/components/atoms/input/search.d.mts.map +1 -1
  267. package/dist/components/atoms/input/search.mjs +2 -2
  268. package/dist/components/atoms/mentions-token.mjs +31 -0
  269. package/dist/components/atoms/mentions-token.mjs.map +1 -0
  270. package/dist/components/atoms/option-group.d.mts +4 -5
  271. package/dist/components/atoms/option-group.d.mts.map +1 -1
  272. package/dist/components/atoms/radio/group.d.mts +2 -2
  273. package/dist/components/atoms/radio/group.d.mts.map +1 -1
  274. package/dist/components/atoms/radio/group.mjs +1 -1
  275. package/dist/components/atoms/radio/radio.d.mts +2 -2
  276. package/dist/components/atoms/radio/radio.d.mts.map +1 -1
  277. package/dist/components/atoms/radio/radio.mjs +1 -1
  278. package/dist/components/atoms/rich-text-editor/rich-text-editor.d.mts +2 -2
  279. package/dist/components/atoms/rich-text-editor/rich-text-editor.d.mts.map +1 -1
  280. package/dist/components/atoms/rich-text-editor/toolbar-presets.mjs +5 -5
  281. package/dist/components/atoms/rich-text-editor/types.d.mts +2 -3
  282. package/dist/components/atoms/rich-text-editor/types.d.mts.map +1 -1
  283. package/dist/components/atoms/select-multiple.d.mts +2 -3
  284. package/dist/components/atoms/select-multiple.d.mts.map +1 -1
  285. package/dist/components/atoms/select-multiple.mjs +5 -4
  286. package/dist/components/atoms/select-multiple.mjs.map +1 -1
  287. package/dist/components/atoms/select-searchable-options.d.mts +3 -4
  288. package/dist/components/atoms/select-searchable-options.d.mts.map +1 -1
  289. package/dist/components/atoms/select-searchable.d.mts +2 -3
  290. package/dist/components/atoms/select-searchable.d.mts.map +1 -1
  291. package/dist/components/atoms/select-searchable.mjs +5 -4
  292. package/dist/components/atoms/select-searchable.mjs.map +1 -1
  293. package/dist/components/atoms/skeleton/button.d.mts.map +1 -1
  294. package/dist/components/atoms/skeleton/node.d.mts.map +1 -1
  295. package/dist/components/atoms/skeleton/skeleton.d.mts +2 -2
  296. package/dist/components/atoms/skeleton/skeleton.d.mts.map +1 -1
  297. package/dist/components/atoms/slider/slider.d.mts +3 -3
  298. package/dist/components/atoms/slider/slider.d.mts.map +1 -1
  299. package/dist/components/atoms/typography/link.d.mts +2 -2
  300. package/dist/components/atoms/typography/link.d.mts.map +1 -1
  301. package/dist/components/atoms/typography/paragraph.d.mts +2 -2
  302. package/dist/components/atoms/typography/paragraph.d.mts.map +1 -1
  303. package/dist/components/atoms/typography/text.d.mts +2 -2
  304. package/dist/components/atoms/typography/text.d.mts.map +1 -1
  305. package/dist/components/atoms/typography/title.d.mts +2 -2
  306. package/dist/components/atoms/typography/title.d.mts.map +1 -1
  307. package/dist/components/atoms/typography/typography.d.mts +2 -2
  308. package/dist/components/atoms/typography/typography.d.mts.map +1 -1
  309. package/dist/components/molecules/index.d.mts +25 -16
  310. package/dist/components/molecules/marquees/item.d.mts +4 -4
  311. package/dist/components/molecules/marquees/item.d.mts.map +1 -1
  312. package/dist/components/molecules/marquees/item.mjs +5 -5
  313. package/dist/components/molecules/marquees/item.mjs.map +1 -1
  314. package/dist/components/molecules/marquees/marquees.d.mts +2 -2
  315. package/dist/components/molecules/marquees/marquees.d.mts.map +1 -1
  316. package/dist/components/molecules/marquees/marquees.mjs +4 -5
  317. package/dist/components/molecules/marquees/marquees.mjs.map +1 -1
  318. package/dist/components/molecules/menu/item/item.mjs +1 -1
  319. package/dist/components/molecules/menu/menu.d.mts +9 -9
  320. package/dist/components/molecules/menu/menu.d.mts.map +1 -1
  321. package/dist/components/molecules/reveals/item.d.mts +2 -2
  322. package/dist/components/molecules/reveals/item.d.mts.map +1 -1
  323. package/dist/components/molecules/reveals/reveals.d.mts +5 -5
  324. package/dist/components/molecules/reveals/reveals.d.mts.map +1 -1
  325. package/dist/components/molecules/splitter/panel.d.mts +3 -3
  326. package/dist/components/molecules/splitter/panel.d.mts.map +1 -1
  327. package/dist/components/molecules/splitter/splitter.d.mts +3 -3
  328. package/dist/components/molecules/splitter/splitter.d.mts.map +1 -1
  329. package/dist/components/organisms/form/context.d.mts +4 -0
  330. package/dist/components/organisms/form/context.d.mts.map +1 -0
  331. package/dist/components/organisms/form/context.mjs +9 -0
  332. package/dist/components/organisms/form/context.mjs.map +1 -0
  333. package/dist/components/organisms/form/control.d.mts +11 -0
  334. package/dist/components/organisms/form/control.d.mts.map +1 -0
  335. package/dist/components/organisms/form/control.mjs +19 -0
  336. package/dist/components/organisms/form/control.mjs.map +1 -0
  337. package/dist/components/organisms/form/field.d.mts +25 -0
  338. package/dist/components/organisms/form/field.d.mts.map +1 -0
  339. package/dist/components/organisms/form/field.mjs +54 -0
  340. package/dist/components/organisms/form/field.mjs.map +1 -0
  341. package/dist/components/organisms/form/form.d.mts +14 -0
  342. package/dist/components/organisms/form/form.d.mts.map +1 -0
  343. package/dist/components/organisms/form/form.mjs +23 -0
  344. package/dist/components/organisms/form/form.mjs.map +1 -0
  345. package/dist/components/organisms/imperative-stack.mjs +16 -1
  346. package/dist/components/organisms/imperative-stack.mjs.map +1 -1
  347. package/dist/components/organisms/index.d.mts +17 -9
  348. package/dist/components/organisms/list/list.d.mts +3 -3
  349. package/dist/components/organisms/list/list.d.mts.map +1 -1
  350. package/dist/components/organisms/list/list.mjs +1 -1
  351. package/dist/components/organisms/swiper/swiper.d.mts +8 -2
  352. package/dist/components/organisms/swiper/swiper.d.mts.map +1 -1
  353. package/dist/components/organisms/swiper/swiper.mjs +1 -1
  354. package/dist/components/templates/grid/col.d.mts +2 -2
  355. package/dist/components/templates/grid/col.d.mts.map +1 -1
  356. package/dist/components/templates/grid/row.d.mts +2 -2
  357. package/dist/components/templates/grid/row.d.mts.map +1 -1
  358. package/dist/components/templates/index.d.mts +11 -12
  359. package/dist/components/templates/layout/content.d.mts +2 -2
  360. package/dist/components/templates/layout/content.d.mts.map +1 -1
  361. package/dist/components/templates/layout/footer.d.mts +2 -2
  362. package/dist/components/templates/layout/footer.d.mts.map +1 -1
  363. package/dist/components/templates/layout/header.d.mts +2 -2
  364. package/dist/components/templates/layout/header.d.mts.map +1 -1
  365. package/dist/components/templates/layout/layout.d.mts +2 -2
  366. package/dist/components/templates/layout/layout.d.mts.map +1 -1
  367. package/dist/components/templates/layout/sider.d.mts +2 -2
  368. package/dist/components/templates/layout/sider.d.mts.map +1 -1
  369. package/dist/components/templates/layout/sider.mjs +5 -7
  370. package/dist/components/templates/layout/sider.mjs.map +1 -1
  371. package/dist/core/accordion.mjs +1 -1
  372. package/dist/core/autocomplete.d.mts +2 -0
  373. package/dist/core/autocomplete.mjs +48 -0
  374. package/dist/core/autocomplete.mjs.map +1 -0
  375. package/dist/core/badge.d.mts +5 -3
  376. package/dist/core/badge.d.mts.map +1 -1
  377. package/dist/core/button.d.mts +5 -3
  378. package/dist/core/button.d.mts.map +1 -1
  379. package/dist/core/calendar.d.mts +13 -3
  380. package/dist/core/calendar.d.mts.map +1 -0
  381. package/dist/core/calendar.mjs +1 -1
  382. package/dist/core/checkbox.mjs +11 -8
  383. package/dist/core/checkbox.mjs.map +1 -1
  384. package/dist/core/combobox.d.mts +26 -4
  385. package/dist/core/combobox.d.mts.map +1 -1
  386. package/dist/core/combobox.mjs +2 -2
  387. package/dist/core/combobox.mjs.map +1 -1
  388. package/dist/core/dialog.mjs +2 -2
  389. package/dist/core/dialog.mjs.map +1 -1
  390. package/dist/core/form.d.mts +8 -0
  391. package/dist/core/form.d.mts.map +1 -0
  392. package/dist/core/form.mjs +3 -0
  393. package/dist/core/index.d.mts +13 -9
  394. package/dist/core/popover.mjs +10 -2
  395. package/dist/core/popover.mjs.map +1 -1
  396. package/dist/core/radio-group.mjs +1 -1
  397. package/dist/core/resizable.d.mts +7 -2
  398. package/dist/core/resizable.d.mts.map +1 -1
  399. package/dist/core/resizable.mjs +1 -1
  400. package/dist/core/scroll-area.d.mts +20 -0
  401. package/dist/core/scroll-area.d.mts.map +1 -0
  402. package/dist/core/scroll-area.mjs +57 -0
  403. package/dist/core/scroll-area.mjs.map +1 -0
  404. package/dist/core/select.d.mts +24 -2
  405. package/dist/core/select.d.mts.map +1 -1
  406. package/dist/core/select.mjs +1 -1
  407. package/dist/core/separator.d.mts +13 -2
  408. package/dist/core/separator.d.mts.map +1 -0
  409. package/dist/core/tabs.d.mts +16 -2
  410. package/dist/core/tabs.d.mts.map +1 -1
  411. package/dist/index.d.mts +87 -57
  412. package/dist/index.mjs +53 -33
  413. package/dist/lib/colors.d.mts +2 -3
  414. package/dist/lib/colors.d.mts.map +1 -1
  415. package/dist/providers/config/context.d.mts +2 -3
  416. package/dist/providers/config/context.d.mts.map +1 -1
  417. package/dist/providers/config/context.mjs +3 -1
  418. package/dist/providers/config/context.mjs.map +1 -1
  419. package/dist/providers/config/registry.d.mts +2 -3
  420. package/dist/providers/config/registry.d.mts.map +1 -1
  421. package/dist/providers/config/types.d.mts +8 -7
  422. package/dist/providers/config/types.d.mts.map +1 -1
  423. package/dist/style.css +710 -332
  424. package/dist/utils.d.mts +2 -3
  425. package/dist/utils.d.mts.map +1 -1
  426. package/package.json +277 -26
  427. package/dist/components/atoms/checkbox/index.d.mts +0 -10
  428. package/dist/components/atoms/checkbox/index.d.mts.map +0 -1
  429. package/dist/components/atoms/checkbox/index.mjs +0 -9
  430. package/dist/components/atoms/checkbox/index.mjs.map +0 -1
  431. package/dist/components/atoms/color-picker.d.mts.map +0 -1
  432. package/dist/components/atoms/color-picker.mjs.map +0 -1
  433. package/dist/components/atoms/date-picker.d.mts.map +0 -1
  434. package/dist/components/atoms/date-picker.mjs +0 -44
  435. package/dist/components/atoms/date-picker.mjs.map +0 -1
  436. package/dist/components/atoms/float-button/index.d.mts +0 -10
  437. package/dist/components/atoms/float-button/index.d.mts.map +0 -1
  438. package/dist/components/atoms/float-button/index.mjs +0 -9
  439. package/dist/components/atoms/float-button/index.mjs.map +0 -1
  440. package/dist/components/atoms/input/index.d.mts +0 -14
  441. package/dist/components/atoms/input/index.d.mts.map +0 -1
  442. package/dist/components/atoms/input/index.mjs +0 -13
  443. package/dist/components/atoms/input/index.mjs.map +0 -1
  444. package/dist/components/atoms/popover.d.mts.map +0 -1
  445. package/dist/components/atoms/popover.mjs.map +0 -1
  446. package/dist/components/atoms/progress.d.mts.map +0 -1
  447. package/dist/components/atoms/progress.mjs.map +0 -1
  448. package/dist/components/atoms/radio/index.d.mts +0 -10
  449. package/dist/components/atoms/radio/index.d.mts.map +0 -1
  450. package/dist/components/atoms/radio/index.mjs +0 -9
  451. package/dist/components/atoms/radio/index.mjs.map +0 -1
  452. package/dist/components/atoms/rich-text-editor/index.d.mts +0 -3
  453. package/dist/components/atoms/select.d.mts.map +0 -1
  454. package/dist/components/atoms/select.mjs.map +0 -1
  455. package/dist/components/atoms/skeleton/index.d.mts +0 -12
  456. package/dist/components/atoms/skeleton/index.d.mts.map +0 -1
  457. package/dist/components/atoms/skeleton/index.mjs +0 -11
  458. package/dist/components/atoms/skeleton/index.mjs.map +0 -1
  459. package/dist/components/atoms/slider/index.mjs.map +0 -1
  460. package/dist/components/atoms/spin.d.mts.map +0 -1
  461. package/dist/components/atoms/spin.mjs.map +0 -1
  462. package/dist/components/atoms/switch.d.mts.map +0 -1
  463. package/dist/components/atoms/switch.mjs.map +0 -1
  464. package/dist/components/atoms/tooltip.d.mts.map +0 -1
  465. package/dist/components/atoms/tooltip.mjs.map +0 -1
  466. package/dist/components/molecules/collapse.d.mts.map +0 -1
  467. package/dist/components/molecules/collapse.mjs.map +0 -1
  468. package/dist/components/molecules/dropdown.d.mts.map +0 -1
  469. package/dist/components/molecules/dropdown.mjs.map +0 -1
  470. package/dist/components/molecules/marquees/index.d.mts +0 -10
  471. package/dist/components/molecules/marquees/index.d.mts.map +0 -1
  472. package/dist/components/molecules/marquees/index.mjs +0 -9
  473. package/dist/components/molecules/marquees/index.mjs.map +0 -1
  474. package/dist/components/molecules/marquees/use-pause-on-hover.mjs +0 -26
  475. package/dist/components/molecules/marquees/use-pause-on-hover.mjs.map +0 -1
  476. package/dist/components/molecules/splitter/index.d.mts +0 -10
  477. package/dist/components/molecules/splitter/index.d.mts.map +0 -1
  478. package/dist/components/molecules/splitter/index.mjs +0 -9
  479. package/dist/components/molecules/splitter/index.mjs.map +0 -1
  480. package/dist/components/molecules/tabs.d.mts.map +0 -1
  481. package/dist/components/molecules/tabs.mjs.map +0 -1
  482. package/dist/components/molecules/upload.d.mts.map +0 -1
  483. package/dist/components/molecules/upload.mjs.map +0 -1
  484. package/dist/components/organisms/drawer.d.mts.map +0 -1
  485. package/dist/components/organisms/drawer.mjs.map +0 -1
  486. package/dist/components/organisms/list/index.d.mts.map +0 -1
  487. package/dist/components/organisms/list/index.mjs +0 -9
  488. package/dist/components/organisms/list/index.mjs.map +0 -1
  489. package/dist/components/organisms/modal.d.mts.map +0 -1
  490. package/dist/components/organisms/modal.mjs.map +0 -1
  491. package/dist/components/organisms/swiper/index.d.mts +0 -10
  492. package/dist/components/organisms/swiper/index.d.mts.map +0 -1
  493. package/dist/components/organisms/swiper/index.mjs +0 -9
  494. package/dist/components/organisms/swiper/index.mjs.map +0 -1
  495. package/dist/components/organisms/toast.d.mts.map +0 -1
  496. package/dist/components/organisms/toast.mjs +0 -126
  497. package/dist/components/organisms/toast.mjs.map +0 -1
  498. package/dist/components/templates/container.d.mts.map +0 -1
  499. package/dist/components/templates/container.mjs.map +0 -1
  500. package/dist/components/templates/empty.d.mts.map +0 -1
  501. package/dist/components/templates/empty.mjs.map +0 -1
  502. package/dist/components/templates/page-header.d.mts.map +0 -1
  503. package/dist/components/templates/page-header.mjs.map +0 -1
  504. package/dist/components/templates/result.d.mts.map +0 -1
  505. package/dist/components/templates/result.mjs.map +0 -1
@@ -0,0 +1,135 @@
1
+ "use client";
2
+ import { cn } from "./utils.mjs";
3
+ import { DEFAULT_LOCALE, useConfig } from "./providers/config/context.mjs";
4
+ import Button from "./Button.mjs";
5
+ import { popover_exports } from "./core/popover.mjs";
6
+ import Tree from "./Tree.mjs";
7
+ import { useImperativeHandle, useRef, useState } from "react";
8
+ import { DirectionProvider } from "@base-ui/react/direction-provider";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ import { ChevronDown, X } from "lucide-react";
11
+ //#region src/components/organisms/tree-select.tsx
12
+ const TreeSelect = ({ nodes, value, defaultValue = null, onChange, expandedKeys, defaultExpandedKeys = [], onExpand, open, defaultOpen = false, onOpenChange, allowClear = true, clearLabel, placeholder = "Choose a node", popupLabel = "Choose a node", emptyText = "No nodes", container, name, form, disabled = false, className, classNames, dir, ref, onKeyDown, ...props }) => {
13
+ const { direction, locale } = useConfig();
14
+ const resolvedDirection = dir === "ltr" || dir === "rtl" ? dir : direction;
15
+ const [internalValue, setInternalValue] = useState(defaultValue);
16
+ const [internalOpen, setInternalOpen] = useState(defaultOpen);
17
+ const [internalExpanded, setInternalExpanded] = useState(defaultExpandedKeys);
18
+ const selected = value === void 0 ? internalValue : value;
19
+ const isOpen = (open ?? internalOpen) && !disabled;
20
+ const expanded = expandedKeys ?? internalExpanded;
21
+ const tree = useRef(null);
22
+ const trigger = useRef(null);
23
+ useImperativeHandle(ref, () => trigger.current, []);
24
+ const { Popover, PopoverTrigger, PopoverContent, PopoverTitle } = popover_exports;
25
+ const entries = /* @__PURE__ */ new Map();
26
+ const visit = (list, isDisabled) => {
27
+ for (const node of list) {
28
+ const entry = {
29
+ node,
30
+ isDisabled: isDisabled || !!node.disabled
31
+ };
32
+ entries.set(node.key, entry);
33
+ visit(node.children ?? [], entry.isDisabled);
34
+ }
35
+ };
36
+ visit(nodes, disabled);
37
+ const changeOpen = (next) => {
38
+ if (disabled && next) return;
39
+ if (open === void 0) setInternalOpen(next);
40
+ if (next !== isOpen) onOpenChange?.(next);
41
+ };
42
+ const select = (next) => {
43
+ const entry = next === null ? null : entries.get(next);
44
+ if (disabled || next !== null && (!entry || entry.isDisabled)) return;
45
+ if (value === void 0) setInternalValue(next);
46
+ if (next !== selected) onChange?.(next, entry?.node ?? null);
47
+ changeOpen(false);
48
+ };
49
+ return /* @__PURE__ */ jsx(DirectionProvider, {
50
+ direction: resolvedDirection,
51
+ children: /* @__PURE__ */ jsxs("div", {
52
+ "data-slot": "tree-select",
53
+ dir: resolvedDirection,
54
+ className: cn("flex w-full min-w-0 items-center gap-1", className),
55
+ children: [
56
+ name && /* @__PURE__ */ jsx("input", {
57
+ type: "hidden",
58
+ name,
59
+ form,
60
+ disabled,
61
+ value: selected ?? ""
62
+ }),
63
+ /* @__PURE__ */ jsxs(Popover, {
64
+ open: isOpen,
65
+ onOpenChange: changeOpen,
66
+ children: [/* @__PURE__ */ jsxs(PopoverTrigger, {
67
+ ...props,
68
+ ref: trigger,
69
+ disabled,
70
+ render: /* @__PURE__ */ jsx(Button, { variant: "outlined" }),
71
+ className: cn("h-9 min-w-0 flex-1 justify-between text-start", classNames?.trigger),
72
+ onKeyDown: (event) => {
73
+ onKeyDown?.(event);
74
+ if (!event.defaultPrevented && (event.key === "ArrowDown" || event.key === "ArrowUp")) {
75
+ event.preventDefault();
76
+ changeOpen(true);
77
+ }
78
+ },
79
+ children: [/* @__PURE__ */ jsx("span", {
80
+ className: cn("min-w-0 truncate", selected === null && "text-muted-foreground", classNames?.value),
81
+ children: selected === null ? placeholder : entries.get(selected)?.node.label ?? selected
82
+ }), /* @__PURE__ */ jsx(ChevronDown, {
83
+ "aria-hidden": "true",
84
+ className: "size-4 shrink-0"
85
+ })]
86
+ }), /* @__PURE__ */ jsxs(PopoverContent, {
87
+ container,
88
+ dir: resolvedDirection,
89
+ align: "start",
90
+ initialFocus: () => tree.current?.querySelector("[role=\"treeitem\"][aria-selected=\"true\"]") ?? tree.current?.querySelector("[role=\"treeitem\"][tabindex=\"0\"]") ?? true,
91
+ className: cn("w-(--anchor-width) max-w-(--available-width) p-2", classNames?.popup),
92
+ children: [/* @__PURE__ */ jsx(PopoverTitle, {
93
+ className: "sr-only",
94
+ children: popupLabel
95
+ }), /* @__PURE__ */ jsx(Tree, {
96
+ ref: tree,
97
+ nodes,
98
+ selectedKeys: selected === null ? [] : [selected],
99
+ onSelect: (keys) => select(keys[0] ?? null),
100
+ expandedKeys: expanded,
101
+ onExpand: (keys) => {
102
+ if (expandedKeys === void 0) setInternalExpanded(keys);
103
+ onExpand?.(keys);
104
+ },
105
+ emptyText,
106
+ "aria-label": popupLabel,
107
+ dir: resolvedDirection,
108
+ className: cn("max-h-[min(20rem,var(--available-height))] overflow-y-auto", classNames?.tree),
109
+ classNames: classNames?.nodes
110
+ })]
111
+ })]
112
+ }),
113
+ allowClear && selected !== null && /* @__PURE__ */ jsx(Button, {
114
+ variant: "text",
115
+ size: "small",
116
+ disabled,
117
+ "aria-label": clearLabel ?? locale.clear ?? DEFAULT_LOCALE.clear,
118
+ onClick: () => {
119
+ select(null);
120
+ trigger.current?.focus();
121
+ },
122
+ className: cn("size-8 shrink-0 p-0", classNames?.clear),
123
+ children: /* @__PURE__ */ jsx(X, {
124
+ "aria-hidden": "true",
125
+ className: "size-4"
126
+ })
127
+ })
128
+ ]
129
+ })
130
+ });
131
+ };
132
+ //#endregion
133
+ export { TreeSelect as default };
134
+
135
+ //# sourceMappingURL=TreeSelect.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeSelect.mjs","names":["popover"],"sources":["../src/components/organisms/tree-select.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ComponentPropsWithRef,\n type ReactNode,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nimport { DirectionProvider } from '@base-ui/react/direction-provider';\nimport { ChevronDown, X } from 'lucide-react';\n\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { popover } from '../../core';\nimport Button from '../atoms/button';\nimport Tree, { type Node, type Props as TreeProps } from './tree';\n\nexport type { Node } from './tree';\n\nexport interface Props extends Omit<\n ComponentPropsWithRef<'button'>,\n 'children' | 'value' | 'defaultValue' | 'onChange' | 'type'\n> {\n nodes: readonly Node[];\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null, node: Node | null) => void;\n expandedKeys?: readonly string[];\n defaultExpandedKeys?: readonly string[];\n onExpand?: (keys: string[]) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n allowClear?: boolean;\n clearLabel?: string;\n placeholder?: string;\n popupLabel?: string;\n emptyText?: ReactNode;\n container?: HTMLElement;\n form?: string;\n classNames?: {\n trigger?: string;\n value?: string;\n clear?: string;\n popup?: string;\n tree?: string;\n nodes?: TreeProps['classNames'];\n };\n}\n\nconst TreeSelect = ({\n nodes,\n value,\n defaultValue = null,\n onChange,\n expandedKeys,\n defaultExpandedKeys = [],\n onExpand,\n open,\n defaultOpen = false,\n onOpenChange,\n allowClear = true,\n clearLabel,\n placeholder = 'Choose a node',\n popupLabel = 'Choose a node',\n emptyText = 'No nodes',\n container,\n name,\n form,\n disabled = false,\n className,\n classNames,\n dir,\n ref,\n onKeyDown,\n ...props\n}: Props) => {\n const { direction, locale } = useConfig();\n const resolvedDirection = dir === 'ltr' || dir === 'rtl' ? dir : direction;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [internalExpanded, setInternalExpanded] =\n useState<readonly string[]>(defaultExpandedKeys);\n const selected = value === undefined ? internalValue : value;\n const isOpen = (open ?? internalOpen) && !disabled;\n const expanded = expandedKeys ?? internalExpanded;\n const tree = useRef<HTMLUListElement>(null);\n const trigger = useRef<HTMLButtonElement>(null);\n useImperativeHandle(ref, () => trigger.current!, []);\n const { Popover, PopoverTrigger, PopoverContent, PopoverTitle } = popover;\n const entries = new Map<string, { node: Node; isDisabled: boolean }>();\n const visit = (list: readonly Node[], isDisabled: boolean) => {\n for (const node of list) {\n const entry = { node, isDisabled: isDisabled || !!node.disabled };\n entries.set(node.key, entry);\n visit(node.children ?? [], entry.isDisabled);\n }\n };\n\n visit(nodes, disabled);\n\n const changeOpen = (next: boolean) => {\n if (disabled && next) return;\n if (open === undefined) setInternalOpen(next);\n if (next !== isOpen) onOpenChange?.(next);\n };\n const select = (next: string | null) => {\n const entry = next === null ? null : entries.get(next);\n\n if (disabled || (next !== null && (!entry || entry.isDisabled))) return;\n if (value === undefined) setInternalValue(next);\n if (next !== selected) onChange?.(next, entry?.node ?? null);\n\n changeOpen(false);\n };\n\n return (\n <DirectionProvider direction={resolvedDirection}>\n <div\n data-slot=\"tree-select\"\n dir={resolvedDirection}\n className={cn(\n 'flex w-full min-w-0 items-center gap-1',\n className, //\n )}\n >\n {name && (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n disabled={disabled}\n value={selected ?? ''}\n />\n )}\n <Popover open={isOpen} onOpenChange={changeOpen}>\n <PopoverTrigger\n {...props}\n ref={trigger}\n disabled={disabled}\n render={<Button variant=\"outlined\" />}\n className={cn(\n 'h-9 min-w-0 flex-1 justify-between text-start',\n classNames?.trigger, //\n )}\n onKeyDown={event => {\n onKeyDown?.(event);\n\n if (\n !event.defaultPrevented &&\n (event.key === 'ArrowDown' || event.key === 'ArrowUp')\n ) {\n event.preventDefault();\n changeOpen(true);\n }\n }}\n >\n <span\n className={cn(\n 'min-w-0 truncate',\n selected === null && 'text-muted-foreground',\n classNames?.value, //\n )}\n >\n {selected === null\n ? placeholder\n : (entries.get(selected)?.node.label ?? selected)}\n </span>\n <ChevronDown aria-hidden=\"true\" className=\"size-4 shrink-0\" />\n </PopoverTrigger>\n <PopoverContent\n container={container}\n dir={resolvedDirection}\n align=\"start\"\n initialFocus={() =>\n tree.current?.querySelector<HTMLElement>(\n '[role=\"treeitem\"][aria-selected=\"true\"]',\n ) ??\n tree.current?.querySelector<HTMLElement>(\n '[role=\"treeitem\"][tabindex=\"0\"]',\n ) ??\n true\n }\n className={cn(\n 'w-(--anchor-width) max-w-(--available-width) p-2',\n classNames?.popup, //\n )}\n >\n <PopoverTitle className=\"sr-only\">{popupLabel}</PopoverTitle>\n <Tree\n ref={tree}\n nodes={nodes}\n selectedKeys={selected === null ? [] : [selected]}\n onSelect={keys => select(keys[0] ?? null)}\n expandedKeys={expanded}\n onExpand={keys => {\n if (expandedKeys === undefined) setInternalExpanded(keys);\n onExpand?.(keys);\n }}\n emptyText={emptyText}\n aria-label={popupLabel}\n dir={resolvedDirection}\n className={cn(\n 'max-h-[min(20rem,var(--available-height))] overflow-y-auto',\n classNames?.tree, //\n )}\n classNames={classNames?.nodes}\n />\n </PopoverContent>\n </Popover>\n {allowClear && selected !== null && (\n <Button\n variant=\"text\"\n size=\"small\"\n disabled={disabled}\n aria-label={clearLabel ?? locale.clear ?? DEFAULT_LOCALE.clear}\n onClick={() => {\n select(null);\n trigger.current?.focus();\n }}\n className={cn(\n 'size-8 shrink-0 p-0',\n classNames?.clear, //\n )}\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </Button>\n )}\n </div>\n </DirectionProvider>\n );\n};\n\nexport default TreeSelect;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.d.mts","names":[],"sources":["../src/components/atoms/typography/index.ts"],"mappings":";;;;;;KAMK,6BAA6B;EAChC,aAAa;EACb,kBAAkB;EAClB,aAAa;EACb,cAAc;;cAGV,YAA+B"}
1
+ {"version":3,"file":"Typography.d.mts","names":["TypographyImpl"],"sources":["../src/components/atoms/typography/index.ts"],"mappings":";;;;;;KAMK,6BAA6BA;EAChC,aAAa;EACb,kBAAkB;EAClB,aAAa;EACb,cAAc;;cAGV,YAA+B"}
@@ -1,10 +1,10 @@
1
1
  //#region src/components/molecules/upload.d.ts
2
- interface UploadFile {
2
+ export interface UploadFile {
3
3
  uid: string;
4
4
  name: string;
5
5
  url: string;
6
6
  }
7
- interface Props {
7
+ export interface Props {
8
8
  defaultValue?: UploadFile[];
9
9
  value?: UploadFile[];
10
10
  multiple?: boolean;
@@ -29,5 +29,5 @@ interface Props {
29
29
  }
30
30
  declare const Upload: ({ defaultValue, value: _value, multiple, accept, maxCount, disabled, className, classNames, onChange: _onChange, onReject }: Props) => import("react").JSX.Element;
31
31
  //#endregion
32
- export { Props, UploadFile, Upload as default };
33
- //# sourceMappingURL=upload.d.mts.map
32
+ export { Upload as default };
33
+ //# sourceMappingURL=Upload.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Upload.d.mts","names":[],"sources":["../src/components/molecules/upload.tsx"],"mappings":";iBAuBiB;EACf;EACA;EACA;;iBAGe;EACf,eAAe;EACf,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;;EAEF,YAAY,OAAO;;;;;EAKnB,YAAY;IAAQ,MAAM;IAAM;;;cAO5B,WAAU,cAAA,OAAA,QAAA,UAAA,QAAA,UAAA,UAAA,WAAA,YAAA,UAAA,WAAA,YAWb,0BAAK,IAAA"}
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- import { cn } from "../../utils.mjs";
3
- import Button from "../../Button.mjs";
4
- import { Upload, X } from "lucide-react";
2
+ import { cn } from "./utils.mjs";
3
+ import Button from "./Button.mjs";
5
4
  import { useId } from "react";
6
5
  import { useControllableState, useFileDrop, useFileToDataUrl } from "@jbpark/use-hooks";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Upload as Upload$1, X } from "lucide-react";
8
8
  //#region src/components/molecules/upload.tsx
9
9
  let uidCounter = 0;
10
10
  const nextUid = () => uidCounter += 1;
11
11
  const isImage = (file) => /^data:image\//.test(file.url) || /\.(png|jpe?g|gif|webp|svg)$/i.test(file.name);
12
- const Upload$1 = ({ defaultValue = [], value: _value, multiple = true, accept = "image/*", maxCount, disabled, className, classNames, onChange: _onChange = () => {}, onReject }) => {
12
+ const Upload = ({ defaultValue = [], value: _value, multiple = true, accept = "image/*", maxCount, disabled, className, classNames, onChange: _onChange = () => {}, onReject }) => {
13
13
  const inputId = useId();
14
14
  const readAsDataUrl = useFileToDataUrl();
15
15
  const [files, setFiles] = useControllableState({
@@ -60,7 +60,7 @@ const Upload$1 = ({ defaultValue = [], value: _value, multiple = true, accept =
60
60
  htmlFor: inputId,
61
61
  className: cn("flex cursor-pointer flex-col items-center justify-center gap-2", "rounded-md border border-dashed p-6 text-center", "text-muted-foreground text-sm", "transition-colors", isDragging && "border-primary bg-accent", disabled && "pointer-events-none cursor-not-allowed opacity-50", classNames?.dropzone),
62
62
  children: [
63
- /* @__PURE__ */ jsx(Upload, { className: "size-6" }),
63
+ /* @__PURE__ */ jsx(Upload$1, { className: "size-6" }),
64
64
  /* @__PURE__ */ jsxs("span", { children: [
65
65
  "Click or drag file",
66
66
  multiple ? "s" : "",
@@ -108,6 +108,6 @@ const Upload$1 = ({ defaultValue = [], value: _value, multiple = true, accept =
108
108
  });
109
109
  };
110
110
  //#endregion
111
- export { Upload$1 as default };
111
+ export { Upload as default };
112
112
 
113
- //# sourceMappingURL=upload.mjs.map
113
+ //# sourceMappingURL=Upload.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Upload.mjs","names":["UploadIcon"],"sources":["../src/components/molecules/upload.tsx"],"sourcesContent":["'use client';\n\nimport { useId } from 'react';\n\nimport {\n useControllableState,\n useFileDrop,\n useFileToDataUrl,\n} from '@jbpark/use-hooks';\nimport { Upload as UploadIcon, X } from 'lucide-react';\n\nimport { cn } from '@repo/ui/utils';\n\nimport Button from '../atoms/button';\n\n// Monotonic per-session counter used as a uniqueness tiebreaker for file\n// uids. Guarantees a unique suffix even for the same file (identical\n// name/lastModified/size) added twice, which name+lastModified+size alone\n// can't. These uids are internal React keys, not cryptographic, so a plain\n// counter is enough — and it avoids a runtime `uuid` dependency.\nlet uidCounter = 0;\nconst nextUid = () => (uidCounter += 1);\n\nexport interface UploadFile {\n uid: string;\n name: string;\n url: string;\n}\n\nexport interface Props {\n defaultValue?: UploadFile[];\n value?: UploadFile[];\n multiple?: boolean;\n accept?: string;\n maxCount?: number;\n disabled?: boolean;\n className?: string;\n classNames?: {\n dropzone?: string;\n list?: string;\n item?: string;\n };\n onChange?: (files: UploadFile[]) => void;\n /**\n * Called once per file that didn't make it in — either bumped by\n * `maxCount` or failed to read.\n */\n onReject?: (info: { file: File; reason: 'max-count' | 'read-error' }) => void;\n}\n\nconst isImage = (file: UploadFile) =>\n /^data:image\\//.test(file.url) ||\n /\\.(png|jpe?g|gif|webp|svg)$/i.test(file.name);\n\nconst Upload = ({\n defaultValue = [],\n value: _value,\n multiple = true,\n accept = 'image/*',\n maxCount,\n disabled,\n className,\n classNames,\n onChange: _onChange = () => {},\n onReject,\n}: Props) => {\n const inputId = useId();\n const readAsDataUrl = useFileToDataUrl();\n const [files, setFiles] = useControllableState<UploadFile[]>({\n value: _value,\n defaultValue,\n onChange: _onChange,\n });\n\n const addFiles = async (incoming: File[]) => {\n const remaining =\n typeof maxCount === 'number'\n ? Math.max(0, maxCount - files.length)\n : incoming.length;\n\n const accepted = incoming.slice(0, remaining);\n const rejected = incoming.slice(remaining);\n\n rejected.forEach(file => onReject?.({ file, reason: 'max-count' }));\n\n if (accepted.length === 0) {\n return;\n }\n\n const uploaded = (\n await Promise.all(\n accepted.map(async file => {\n try {\n return {\n // `nextUid()` guarantees uniqueness even for the same file\n // added twice (identical name/lastModified/size), which\n // name+lastModified+size alone can't — a collision there\n // corrupted React's item keys and made removeFile's\n // uid-based filter delete both copies at once.\n uid: `${file.name}-${file.lastModified}-${file.size}-${nextUid()}`,\n name: file.name,\n url: await readAsDataUrl(file),\n };\n } catch {\n onReject?.({ file, reason: 'read-error' });\n return null;\n }\n }),\n )\n ).filter((file): file is UploadFile => file !== null);\n\n if (uploaded.length === 0) {\n return;\n }\n\n setFiles([...files, ...uploaded]);\n };\n\n const removeFile = (uid: string) => {\n setFiles(files.filter(file => file.uid !== uid));\n };\n\n const { dropRef, isDragging } = useFileDrop<HTMLLabelElement>({\n accept,\n multiple,\n disabled,\n onDrop: addFiles,\n });\n\n return (\n <div\n data-slot=\"upload\"\n className={cn(\n 'flex flex-col gap-3',\n className,\n //\n )}\n >\n <label\n ref={dropRef}\n htmlFor={inputId}\n className={cn(\n 'flex cursor-pointer flex-col items-center justify-center gap-2',\n 'rounded-md border border-dashed p-6 text-center',\n 'text-muted-foreground text-sm',\n 'transition-colors',\n isDragging && 'border-primary bg-accent',\n disabled && 'pointer-events-none cursor-not-allowed opacity-50',\n classNames?.dropzone,\n //\n )}\n >\n <UploadIcon className=\"size-6\" />\n <span>Click or drag file{multiple ? 's' : ''} to upload</span>\n <input\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n className=\"hidden\"\n onChange={e => {\n if (e.target.files?.length) {\n addFiles(Array.from(e.target.files));\n }\n e.target.value = '';\n }}\n />\n </label>\n\n {files.length > 0 && (\n <ul\n className={cn(\n 'm-0 flex list-none flex-col gap-2 p-0',\n classNames?.list,\n //\n )}\n >\n {files.map(file => (\n <li\n key={file.uid}\n className={cn(\n // `m-0` completes the list reset the `ul` above starts — see\n // Radio.Group for the host rule this guards against.\n 'm-0 flex items-center gap-2 rounded-md border p-2',\n classNames?.item,\n //\n )}\n >\n {isImage(file) && (\n <img\n src={file.url}\n alt=\"\"\n className=\"size-10 shrink-0 rounded object-cover\"\n />\n )}\n <span className=\"flex-1 truncate text-sm\">{file.name}</span>\n <Button\n variant=\"text\"\n shape=\"circle\"\n size=\"small\"\n icon={<X className=\"size-4\" />}\n onClick={() => removeFile(file.uid)}\n className=\"text-muted-foreground hover:text-foreground shrink-0\"\n aria-label={`Remove ${file.name}`}\n />\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n};\n\nexport default Upload;\n"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { OptionValue } from "../option-group.mjs";
2
2
  //#region src/components/atoms/checkbox/checkbox.d.ts
3
- interface Props extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange'> {
3
+ export interface Props extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange'> {
4
4
  placement?: 'left' | 'right';
5
5
  defaultChecked?: boolean;
6
6
  checked?: boolean;
7
+ indeterminate?: boolean;
7
8
  value?: OptionValue;
8
9
  /** Native form field name — participates in `FormData` when set. */
9
10
  name?: string;
@@ -11,11 +12,12 @@ interface Props extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange'>
11
12
  icons?: Partial<{
12
13
  checked: React.ReactNode;
13
14
  unchecked: React.ReactNode;
15
+ indeterminate: React.ReactNode;
14
16
  }>;
15
17
  children?: React.ReactNode;
16
18
  onChange?: (checked: boolean) => void;
17
19
  }
18
- declare const Checkbox: ({ placement, value: _value, children, className, icons, disabled, defaultChecked, checked: _checked, name, onChange: _onChange, ...props }: Props) => import("react").JSX.Element;
20
+ declare const Checkbox: ({ placement, value: _value, children, className, icons, disabled, indeterminate, defaultChecked, checked: _checked, name, onChange: _onChange, ...props }: Props) => import("react").JSX.Element;
19
21
  //#endregion
20
- export { Props, Checkbox as default };
22
+ export { Checkbox as default };
21
23
  //# sourceMappingURL=checkbox.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.d.mts","names":[],"sources":["../../../../src/components/atoms/checkbox/checkbox.tsx"],"mappings":";;UAeiB,cAAc,KAC7B,MAAM;EAGN;EACA;EACA;EACA,QAAQ;;EAER;EACA;EACA,QAAQ;IAAU,SAAS,MAAM;IAAW,WAAW,MAAM;;EAC7D,WAAW,MAAM;EACjB,YAAY;;cAGR,aAAY,WAAA,OAAA,QAAA,UAAA,WAAA,OAAA,UAAA,gBAAA,SAAA,UAAA,MAAA,UAAA,cAAA,SAYf,0BAAK,IAAA"}
1
+ {"version":3,"file":"checkbox.d.mts","names":[],"sources":["../../../../src/components/atoms/checkbox/checkbox.tsx"],"mappings":";;iBAeiB,cAAc,KAC7B,MAAM;EAGN;EACA;EACA;EACA;EACA,QAAQ;;EAER;EACA;EACA,QAAQ;IACN,SAAS,MAAM;IACf,WAAW,MAAM;IACjB,eAAe,MAAM;;EAEvB,WAAW,MAAM;EACjB,YAAY;;cAGR,aAAY,WAAA,OAAA,QAAA,UAAA,WAAA,OAAA,UAAA,eAAA,gBAAA,SAAA,UAAA,MAAA,UAAA,cAAA,SAaf,0BAAK,IAAA"}
@@ -2,14 +2,14 @@
2
2
  import { cn } from "../../../utils.mjs";
3
3
  import { checkbox_exports } from "../../../core/checkbox.mjs";
4
4
  import { label_exports } from "../../../core/label.mjs";
5
- import { Square, SquareCheck } from "lucide-react";
6
5
  import { useId, useRef } from "react";
7
6
  import { useControllableState, useKeyPress } from "@jbpark/use-hooks";
8
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
+ import { Square, SquareCheck, SquareMinus } from "lucide-react";
9
9
  //#region src/components/atoms/checkbox/checkbox.tsx
10
10
  const { Checkbox: CoreCheckbox } = checkbox_exports;
11
11
  const { Label: CoreLabel } = label_exports;
12
- const Checkbox = ({ placement = "left", value: _value = "", children, className, icons, disabled, defaultChecked, checked: _checked, name, onChange: _onChange = () => {}, ...props }) => {
12
+ const Checkbox = ({ placement = "left", value: _value = "", children, className, icons, disabled, indeterminate = false, defaultChecked, checked: _checked, name, onChange: _onChange = () => {}, ...props }) => {
13
13
  const [checked, setChecked] = useControllableState({
14
14
  value: _checked,
15
15
  defaultValue: defaultChecked ?? false,
@@ -32,6 +32,9 @@ const Checkbox = ({ placement = "left", value: _value = "", children, className,
32
32
  });
33
33
  const renderContent = icons ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
34
34
  /* @__PURE__ */ jsx("input", {
35
+ ref: (element) => {
36
+ if (element) element.indeterminate = indeterminate;
37
+ },
35
38
  id,
36
39
  hidden: true,
37
40
  type: "checkbox",
@@ -46,14 +49,14 @@ const Checkbox = ({ placement = "left", value: _value = "", children, className,
46
49
  /* @__PURE__ */ jsx("span", {
47
50
  ref: iconTriggerRef,
48
51
  role: "checkbox",
49
- "aria-checked": checked,
52
+ "aria-checked": indeterminate ? "mixed" : checked,
50
53
  "aria-disabled": disabled,
51
54
  tabIndex: disabled ? -1 : 0,
52
55
  className: cn(cursorClassName, disabled && "opacity-50"),
53
56
  onClick: () => {
54
57
  onChange(!checked);
55
58
  },
56
- children: checked ? icons.checked ?? /* @__PURE__ */ jsx(SquareCheck, {}) : icons.unchecked ?? /* @__PURE__ */ jsx(Square, {})
59
+ children: indeterminate ? icons.indeterminate ?? /* @__PURE__ */ jsx(SquareMinus, {}) : checked ? icons.checked ?? /* @__PURE__ */ jsx(SquareCheck, {}) : icons.unchecked ?? /* @__PURE__ */ jsx(Square, {})
57
60
  }),
58
61
  children && /* @__PURE__ */ jsx("label", {
59
62
  className: cn(cursorClassName, disabled && "opacity-50"),
@@ -65,6 +68,7 @@ const Checkbox = ({ placement = "left", value: _value = "", children, className,
65
68
  name,
66
69
  value: itemValue,
67
70
  checked,
71
+ indeterminate,
68
72
  disabled,
69
73
  className: cn("rounded-sm", cursorClassName),
70
74
  onCheckedChange: onChange
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.mjs","names":["checkbox","label"],"sources":["../../../../src/components/atoms/checkbox/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useRef } from 'react';\n\nimport { useControllableState, useKeyPress } from '@jbpark/use-hooks';\nimport { Square, SquareCheck } from 'lucide-react';\n\nimport { cn } from '@repo/ui/utils';\n\nimport { checkbox, label } from '../../../core';\nimport { type OptionValue } from './group';\n\nconst { Checkbox: CoreCheckbox } = checkbox;\nconst { Label: CoreLabel } = label;\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'onChange'\n> {\n placement?: 'left' | 'right';\n defaultChecked?: boolean;\n checked?: boolean;\n value?: OptionValue;\n /** Native form field name — participates in `FormData` when set. */\n name?: string;\n disabled?: boolean;\n icons?: Partial<{ checked: React.ReactNode; unchecked: React.ReactNode }>;\n children?: React.ReactNode;\n onChange?: (checked: boolean) => void;\n}\n\nconst Checkbox = ({\n placement = 'left',\n value: _value = '',\n children,\n className,\n icons,\n disabled,\n defaultChecked,\n checked: _checked,\n name,\n onChange: _onChange = () => {},\n ...props\n}: Props) => {\n const [checked, setChecked] = useControllableState<boolean>({\n value: _checked,\n defaultValue: defaultChecked ?? false,\n onChange: _onChange,\n });\n\n const id = useId();\n const itemValue = String(_value);\n\n const cursorClassName = disabled ? 'cursor-not-allowed' : 'cursor-pointer';\n\n const onChange = (next: boolean) => {\n if (disabled) {\n return;\n }\n\n setChecked(next);\n };\n\n const iconTriggerRef = useRef<HTMLSpanElement>(null);\n\n useKeyPress(\n ['Enter', 'space'],\n event => {\n event.preventDefault();\n onChange(!checked);\n },\n { target: iconTriggerRef, enabled: !!icons && !disabled },\n );\n\n const renderContent = icons ? (\n <>\n <input\n id={id}\n hidden\n type=\"checkbox\"\n name={name}\n value={itemValue}\n checked={checked}\n disabled={disabled}\n onChange={e => {\n onChange(e.target.checked);\n }}\n />\n <span\n ref={iconTriggerRef}\n role=\"checkbox\"\n aria-checked={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn(cursorClassName, disabled && 'opacity-50')}\n onClick={() => {\n onChange(!checked);\n }}\n >\n {checked\n ? (icons.checked ?? <SquareCheck />)\n : (icons.unchecked ?? <Square />)}\n </span>\n {children && (\n <label\n className={cn(cursorClassName, disabled && 'opacity-50')}\n htmlFor={id}\n >\n {children}\n </label>\n )}\n </>\n ) : (\n <>\n <CoreCheckbox\n id={id}\n name={name}\n value={itemValue}\n checked={checked}\n disabled={disabled}\n // Keep the atom's established 4px radius after the Base UI migration;\n // tailwind-merge lets this override the core primitive's radius (#361).\n className={cn('rounded-sm', cursorClassName)}\n onCheckedChange={onChange}\n />\n {children && (\n <CoreLabel htmlFor={id} className={cn(cursorClassName, 'text-left')}>\n {children}\n </CoreLabel>\n )}\n </>\n );\n\n return (\n <div\n data-slot=\"checkbox-field\"\n className={cn(\n 'flex items-center gap-x-2',\n placement === 'right' && 'flex-row-reverse',\n cursorClassName,\n className,\n //\n )}\n {...props}\n >\n {renderContent}\n </div>\n );\n};\n\nexport default Checkbox;\n"],"mappings":";;;;;;;;;AAYA,MAAM,EAAE,UAAU,iBAAiBA;AACnC,MAAM,EAAE,OAAO,cAAcC;AAkB7B,MAAM,YAAY,EAChB,YAAY,QACZ,OAAO,SAAS,IAChB,UACA,WACA,OACA,UACA,gBACA,SAAS,UACT,MACA,UAAU,kBAAkB,CAAC,GAC7B,GAAG,YACQ;CACX,MAAM,CAAC,SAAS,cAAc,qBAA8B;EAC1D,OAAO;EACP,cAAc,kBAAkB;EAChC,UAAU;CACZ,CAAC;CAED,MAAM,KAAK,MAAM;CACjB,MAAM,YAAY,OAAO,MAAM;CAE/B,MAAM,kBAAkB,WAAW,uBAAuB;CAE1D,MAAM,YAAY,SAAkB;EAClC,IAAI,UACF;EAGF,WAAW,IAAI;CACjB;CAEA,MAAM,iBAAiB,OAAwB,IAAI;CAEnD,YACE,CAAC,SAAS,OAAO,IACjB,UAAS;EACP,MAAM,eAAe;EACrB,SAAS,CAAC,OAAO;CACnB,GACA;EAAE,QAAQ;EAAgB,SAAS,CAAC,CAAC,SAAS,CAAC;CAAS,CAC1D;CAEA,MAAM,gBAAgB,QACpB,qBAAA,YAAA,EAAA,UAAA;EACE,oBAAC,SAAD;GACM;GACJ,QAAA;GACA,MAAK;GACC;GACN,OAAO;GACE;GACC;GACV,WAAU,MAAK;IACb,SAAS,EAAE,OAAO,OAAO;GAC3B;EACD,CAAA;EACD,oBAAC,QAAD;GACE,KAAK;GACL,MAAK;GACL,gBAAc;GACd,iBAAe;GACf,UAAU,WAAW,KAAK;GAC1B,WAAW,GAAG,iBAAiB,YAAY,YAAY;GACvD,eAAe;IACb,SAAS,CAAC,OAAO;GACnB;GAEC,UAAA,UACI,MAAM,WAAW,oBAAC,aAAD,CAAc,CAAA,IAC/B,MAAM,aAAa,oBAAC,QAAD,CAAS,CAAA;EAC7B,CAAA;EACL,YACC,oBAAC,SAAD;GACE,WAAW,GAAG,iBAAiB,YAAY,YAAY;GACvD,SAAS;GAER;EACI,CAAA;CAET,EAAA,CAAA,IAEF,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,cAAD;EACM;EACE;EACN,OAAO;EACE;EACC;EAGV,WAAW,GAAG,cAAc,eAAe;EAC3C,iBAAiB;CAClB,CAAA,GACA,YACC,oBAAC,WAAD;EAAW,SAAS;EAAI,WAAW,GAAG,iBAAiB,WAAW;EAC/D;CACQ,CAAA,CAEb,EAAA,CAAA;CAGJ,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,6BACA,cAAc,WAAW,oBACzB,iBACA,SAEF;EACA,GAAI;EAEH,UAAA;CACE,CAAA;AAET"}
1
+ {"version":3,"file":"checkbox.mjs","names":["checkbox","label"],"sources":["../../../../src/components/atoms/checkbox/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { useId, useRef } from 'react';\n\nimport { useControllableState, useKeyPress } from '@jbpark/use-hooks';\nimport { Square, SquareCheck, SquareMinus } from 'lucide-react';\n\nimport { cn } from '@repo/ui/utils';\n\nimport { checkbox, label } from '../../../core';\nimport { type OptionValue } from './group';\n\nconst { Checkbox: CoreCheckbox } = checkbox;\nconst { Label: CoreLabel } = label;\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'onChange'\n> {\n placement?: 'left' | 'right';\n defaultChecked?: boolean;\n checked?: boolean;\n indeterminate?: boolean;\n value?: OptionValue;\n /** Native form field name — participates in `FormData` when set. */\n name?: string;\n disabled?: boolean;\n icons?: Partial<{\n checked: React.ReactNode;\n unchecked: React.ReactNode;\n indeterminate: React.ReactNode;\n }>;\n children?: React.ReactNode;\n onChange?: (checked: boolean) => void;\n}\n\nconst Checkbox = ({\n placement = 'left',\n value: _value = '',\n children,\n className,\n icons,\n disabled,\n indeterminate = false,\n defaultChecked,\n checked: _checked,\n name,\n onChange: _onChange = () => {},\n ...props\n}: Props) => {\n const [checked, setChecked] = useControllableState<boolean>({\n value: _checked,\n defaultValue: defaultChecked ?? false,\n onChange: _onChange,\n });\n\n const id = useId();\n const itemValue = String(_value);\n\n const cursorClassName = disabled ? 'cursor-not-allowed' : 'cursor-pointer';\n\n const onChange = (next: boolean) => {\n if (disabled) {\n return;\n }\n\n setChecked(next);\n };\n\n const iconTriggerRef = useRef<HTMLSpanElement>(null);\n\n useKeyPress(\n ['Enter', 'space'],\n event => {\n event.preventDefault();\n onChange(!checked);\n },\n { target: iconTriggerRef, enabled: !!icons && !disabled },\n );\n\n const renderContent = icons ? (\n <>\n <input\n ref={element => {\n if (element) element.indeterminate = indeterminate;\n }}\n id={id}\n hidden\n type=\"checkbox\"\n name={name}\n value={itemValue}\n checked={checked}\n disabled={disabled}\n onChange={e => {\n onChange(e.target.checked);\n }}\n />\n <span\n ref={iconTriggerRef}\n role=\"checkbox\"\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn(cursorClassName, disabled && 'opacity-50')}\n onClick={() => {\n onChange(!checked);\n }}\n >\n {indeterminate\n ? (icons.indeterminate ?? <SquareMinus />)\n : checked\n ? (icons.checked ?? <SquareCheck />)\n : (icons.unchecked ?? <Square />)}\n </span>\n {children && (\n <label\n className={cn(cursorClassName, disabled && 'opacity-50')}\n htmlFor={id}\n >\n {children}\n </label>\n )}\n </>\n ) : (\n <>\n <CoreCheckbox\n id={id}\n name={name}\n value={itemValue}\n checked={checked}\n indeterminate={indeterminate}\n disabled={disabled}\n // Keep the atom's established 4px radius after the Base UI migration;\n // tailwind-merge lets this override the core primitive's radius (#361).\n className={cn('rounded-sm', cursorClassName)}\n onCheckedChange={onChange}\n />\n {children && (\n <CoreLabel htmlFor={id} className={cn(cursorClassName, 'text-left')}>\n {children}\n </CoreLabel>\n )}\n </>\n );\n\n return (\n <div\n data-slot=\"checkbox-field\"\n className={cn(\n 'flex items-center gap-x-2',\n placement === 'right' && 'flex-row-reverse',\n cursorClassName,\n className,\n //\n )}\n {...props}\n >\n {renderContent}\n </div>\n );\n};\n\nexport default Checkbox;\n"],"mappings":";;;;;;;;;AAYA,MAAM,EAAE,UAAU,iBAAiBA;AACnC,MAAM,EAAE,OAAO,cAAcC;AAuB7B,MAAM,YAAY,EAChB,YAAY,QACZ,OAAO,SAAS,IAChB,UACA,WACA,OACA,UACA,gBAAgB,OAChB,gBACA,SAAS,UACT,MACA,UAAU,kBAAkB,CAAC,GAC7B,GAAG,YACQ;CACX,MAAM,CAAC,SAAS,cAAc,qBAA8B;EAC1D,OAAO;EACP,cAAc,kBAAkB;EAChC,UAAU;CACZ,CAAC;CAED,MAAM,KAAK,MAAM;CACjB,MAAM,YAAY,OAAO,MAAM;CAE/B,MAAM,kBAAkB,WAAW,uBAAuB;CAE1D,MAAM,YAAY,SAAkB;EAClC,IAAI,UACF;EAGF,WAAW,IAAI;CACjB;CAEA,MAAM,iBAAiB,OAAwB,IAAI;CAEnD,YACE,CAAC,SAAS,OAAO,IACjB,UAAS;EACP,MAAM,eAAe;EACrB,SAAS,CAAC,OAAO;CACnB,GACA;EAAE,QAAQ;EAAgB,SAAS,CAAC,CAAC,SAAS,CAAC;CAAS,CAC1D;CAEA,MAAM,gBAAgB,QACpB,qBAAA,YAAA,EAAA,UAAA;EACE,oBAAC,SAAD;GACE,MAAK,YAAW;IACd,IAAI,SAAS,QAAQ,gBAAgB;GACvC;GACI;GACJ,QAAA;GACA,MAAK;GACC;GACN,OAAO;GACE;GACC;GACV,WAAU,MAAK;IACb,SAAS,EAAE,OAAO,OAAO;GAC3B;EACD,CAAA;EACD,oBAAC,QAAD;GACE,KAAK;GACL,MAAK;GACL,gBAAc,gBAAgB,UAAU;GACxC,iBAAe;GACf,UAAU,WAAW,KAAK;GAC1B,WAAW,GAAG,iBAAiB,YAAY,YAAY;GACvD,eAAe;IACb,SAAS,CAAC,OAAO;GACnB;GAEC,UAAA,gBACI,MAAM,iBAAiB,oBAAC,aAAD,CAAc,CAAA,IACtC,UACG,MAAM,WAAW,oBAAC,aAAD,CAAc,CAAA,IAC/B,MAAM,aAAa,oBAAC,QAAD,CAAS,CAAA;EAC/B,CAAA;EACL,YACC,oBAAC,SAAD;GACE,WAAW,GAAG,iBAAiB,YAAY,YAAY;GACvD,SAAS;GAER;EACI,CAAA;CAET,EAAA,CAAA,IAEF,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,cAAD;EACM;EACE;EACN,OAAO;EACE;EACM;EACL;EAGV,WAAW,GAAG,cAAc,eAAe;EAC3C,iBAAiB;CAClB,CAAA,GACA,YACC,oBAAC,WAAD;EAAW,SAAS;EAAI,WAAW,GAAG,iBAAiB,WAAW;EAC/D;CACQ,CAAA,CAEb,EAAA,CAAA;CAGJ,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,6BACA,cAAc,WAAW,oBACzB,iBACA,SAEF;EACA,GAAI;EAEH,UAAA;CACE,CAAA;AAET"}
@@ -1,6 +1,6 @@
1
1
  import { OptionGroupClassNames, OptionValue, Options } from "../option-group.mjs";
2
2
  //#region src/components/atoms/checkbox/group.d.ts
3
- interface Props extends Omit<React.ComponentPropsWithoutRef<'ul'>, 'onChange' | 'defaultValue' | 'value'> {
3
+ export interface Props extends Omit<React.ComponentPropsWithoutRef<'ul'>, 'onChange' | 'defaultValue' | 'value'> {
4
4
  options?: Options;
5
5
  orientation?: 'vertical' | 'horizontal';
6
6
  placement?: 'left' | 'right';
@@ -14,5 +14,5 @@ interface Props extends Omit<React.ComponentPropsWithoutRef<'ul'>, 'onChange' |
14
14
  }
15
15
  declare const Group: ({ orientation, placement, className, classNames, options: _options, name, disabled, defaultValue, value: _value, onChange: _onChange, ...props }: Props) => import("react").JSX.Element;
16
16
  //#endregion
17
- export { type OptionValue, Props, Group as default };
17
+ export { type OptionValue, Group as default };
18
18
  //# sourceMappingURL=group.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.mts","names":[],"sources":["../../../../src/components/atoms/checkbox/group.tsx"],"mappings":";;UAkBiB,cAAc,KAC7B,MAAM;EAGN,UAAU;EACV;EACA;EACA,aAAa;EACb,eAAe;EACf,QAAQ;;EAER;EACA;EACA,YAAY,QAAQ;;cAGhB,UAAS,aAAA,WAAA,WAAA,YAAA,SAAA,UAAA,MAAA,UAAA,cAAA,OAAA,QAAA,UAAA,cAAA,SAYZ,0BAAK,IAAA"}
1
+ {"version":3,"file":"group.d.mts","names":[],"sources":["../../../../src/components/atoms/checkbox/group.tsx"],"mappings":";;iBAkBiB,cAAc,KAC7B,MAAM;EAGN,UAAU;EACV;EACA;EACA,aAAa;EACb,eAAe;EACf,QAAQ;;EAER;EACA;EACA,YAAY,QAAQ;;cAGhB,UAAS,aAAA,WAAA,WAAA,YAAA,SAAA,UAAA,MAAA,UAAA,cAAA,OAAA,QAAA,UAAA,cAAA,SAYZ,0BAAK,IAAA"}
@@ -1,11 +1,11 @@
1
1
  import { Props as Props$1 } from "../../../Button.mjs";
2
2
  import { MouseEvent } from "react";
3
3
  //#region src/components/atoms/float-button/back-top.d.ts
4
- interface Props extends Props$1 {
4
+ export interface Props extends Props$1 {
5
5
  visibilityHeight?: number;
6
6
  onClick?: (e: MouseEvent<HTMLElement>) => void;
7
7
  }
8
8
  declare const BackTop: ({ ref, visibilityHeight, className, onClick, ...props }: Props) => import("react").JSX.Element;
9
9
  //#endregion
10
- export { Props, BackTop as default };
10
+ export { BackTop as default };
11
11
  //# sourceMappingURL=back-top.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"back-top.d.mts","names":[],"sources":["../../../../src/components/atoms/float-button/back-top.tsx"],"mappings":";;;UAaiB,cAAc;EAC7B;EACA,WAAW,GAAG,WAAW;;cAGrB,YAAW,KAAA,kBAAA,WAAA,YAAA,SAMd,0BAAK,IAAA"}
1
+ {"version":3,"file":"back-top.d.mts","names":["ButtonProps"],"sources":["../../../../src/components/atoms/float-button/back-top.tsx"],"mappings":";;;iBAaiB,cAAcA;EAC7B;EACA,WAAW,GAAG,WAAW;;cAGrB,YAAW,KAAA,kBAAA,WAAA,YAAA,SAMd,0BAAK,IAAA"}
@@ -2,10 +2,10 @@
2
2
  import { cn } from "../../../utils.mjs";
3
3
  import { DEFAULT_LOCALE, useConfig } from "../../../providers/config/context.mjs";
4
4
  import FloatButton from "./float-button.mjs";
5
- import { ArrowUp } from "lucide-react";
6
5
  import { useRef } from "react";
7
6
  import { useMergedRef, useWindowScroll } from "@jbpark/use-hooks";
8
7
  import { jsx } from "react/jsx-runtime";
8
+ import { ArrowUp } from "lucide-react";
9
9
  //#region src/components/atoms/float-button/back-top.tsx
10
10
  const BackTop = ({ ref, visibilityHeight = 450, className, onClick, ...props }) => {
11
11
  const { locale } = useConfig();
@@ -1,7 +1,7 @@
1
1
  import { Props as Props$1 } from "../../../Button.mjs";
2
2
  //#region src/components/atoms/float-button/float-button.d.ts
3
- interface Props extends Props$1 {}
3
+ export interface Props extends Props$1 {}
4
4
  declare const FloatButton: ({ className, children, ...props }: Props) => import("react").JSX.Element;
5
5
  //#endregion
6
- export { Props, FloatButton as default };
6
+ export { FloatButton as default };
7
7
  //# sourceMappingURL=float-button.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"float-button.d.mts","names":[],"sources":["../../../../src/components/atoms/float-button/float-button.tsx"],"mappings":";;UAKiB,cAAc;cAEzB,gBAAe,WAAA,aAAA,SAAmC,0BAAK,IAAA"}
1
+ {"version":3,"file":"float-button.d.mts","names":["ButtonProps"],"sources":["../../../../src/components/atoms/float-button/float-button.tsx"],"mappings":";;iBAKiB,cAAcA;cAEzB,gBAAe,WAAA,aAAA,SAAmC,0BAAK,IAAA"}
@@ -1,24 +1,38 @@
1
- import Avatar, { Props } from "../../Avatar.mjs";
2
- import Badge, { Props as Props$1 } from "../../Badge.mjs";
3
- import Button from "../../Button.mjs";
4
- import Segmented, { Props as Props$2 } from "../../Segmented.mjs";
5
- import Tag from "../../Tag.mjs";
1
+ import AutoComplete, { Option, Props } from "../../AutoComplete.mjs";
2
+ import Avatar, { Props as Props$1 } from "../../Avatar.mjs";
3
+ import Badge, { Props as Props$2 } from "../../Badge.mjs";
4
+ import Button, { Props as Props$3 } from "../../Button.mjs";
5
+ import Cascader, { Option as Option$1, Props as Props$4 } from "../../Cascader.mjs";
6
+ import { Props as Props$5 } from "./checkbox/checkbox.mjs";
7
+ import Checkbox from "../../Checkbox.mjs";
8
+ import ColorPicker, { Props as Props$6 } from "../../ColorPicker.mjs";
9
+ import DatePicker, { Props as Props$7 } from "../../DatePicker.mjs";
10
+ import Divider, { Props as Props$8 } from "../../Divider.mjs";
11
+ import { Props as Props$9 } from "./float-button/float-button.mjs";
12
+ import FloatButton from "../../FloatButton.mjs";
13
+ import { Props as Props$10 } from "./input/input.mjs";
14
+ import { Props as Props$11 } from "./input/number.mjs";
15
+ import { Props as Props$12 } from "./input/otp.mjs";
16
+ import Input from "../../Input.mjs";
17
+ import Mentions, { Option as Option$2, Props as Props$13 } from "../../Mentions.mjs";
18
+ import Popover, { Props as Props$14 } from "../../Popover.mjs";
19
+ import Progress, { Props as Props$15 } from "../../Progress.mjs";
20
+ import { Props as Props$16 } from "./radio/radio.mjs";
21
+ import Radio from "../../Radio.mjs";
22
+ import Rate, { Props as Props$17 } from "../../Rate.mjs";
23
+ import RichTextEditor, { Props as Props$18 } from "./rich-text-editor/rich-text-editor.mjs";
24
+ import "../../RichTextEditor.mjs";
25
+ import Segmented, { Props as Props$19 } from "../../Segmented.mjs";
26
+ import Select, { Props as Props$20 } from "../../Select.mjs";
27
+ import { Props as Props$21 } from "./skeleton/skeleton.mjs";
28
+ import Skeleton from "../../Skeleton.mjs";
29
+ import Slider, { Props as Props$22 } from "./slider/slider.mjs";
30
+ import Spin, { Props as Props$23 } from "../../Spin.mjs";
31
+ import Switch, { Props as Props$24 } from "../../Switch.mjs";
32
+ import Tag, { Props as Props$25 } from "../../Tag.mjs";
33
+ import TimePicker, { Props as Props$26 } from "../../TimePicker.mjs";
34
+ import ToggleGroup, { Option as Option$3, Props as Props$27 } from "../../ToggleGroup.mjs";
35
+ import Tooltip, { Props as Props$28 } from "../../Tooltip.mjs";
36
+ import { Props as Props$29 } from "./typography/typography.mjs";
6
37
  import Typography from "../../Typography.mjs";
7
- import Checkbox from "./checkbox/index.mjs";
8
- import ColorPicker from "./color-picker.mjs";
9
- import DatePicker from "./date-picker.mjs";
10
- import FloatButton from "./float-button/index.mjs";
11
- import { Props as Props$3 } from "./input/number.mjs";
12
- import Input from "./input/index.mjs";
13
- import Popover from "./popover.mjs";
14
- import Progress from "./progress.mjs";
15
- import Radio from "./radio/index.mjs";
16
- import RichTextEditor from "./rich-text-editor/rich-text-editor.mjs";
17
- import "./rich-text-editor/index.mjs";
18
- import Select from "./select.mjs";
19
- import Skeleton from "./skeleton/index.mjs";
20
- import Slider from "./slider/slider.mjs";
21
- import Spin from "./spin.mjs";
22
- import Switch from "./switch.mjs";
23
- import Tooltip from "./tooltip.mjs";
24
- export { Avatar, type Props as AvatarProps, Badge, type Props$1 as BadgeProps, Button, Checkbox, ColorPicker, DatePicker, FloatButton, Input, type Props$3 as InputNumberProps, Popover, Progress, Radio, RichTextEditor, Segmented, type Props$2 as SegmentedProps, Select, Skeleton, Slider, Spin, Switch, Tag, Tooltip, Typography };
38
+ export { AutoComplete, type Option as AutoCompleteOption, type Props as AutoCompleteProps, Avatar, type Props$1 as AvatarProps, Badge, type Props$2 as BadgeProps, Button, type Props$3 as ButtonProps, Cascader, type Option$1 as CascaderOption, type Props$4 as CascaderProps, Checkbox, type Props$5 as CheckboxProps, ColorPicker, type Props$6 as ColorPickerProps, DatePicker, type Props$7 as DatePickerProps, Divider, type Props$8 as DividerProps, FloatButton, type Props$9 as FloatButtonProps, Input, type Props$11 as InputNumberProps, type Props$12 as InputOTPProps, type Props$10 as InputProps, Mentions, type Option$2 as MentionsOption, type Props$13 as MentionsProps, Popover, type Props$14 as PopoverProps, Progress, type Props$15 as ProgressProps, Radio, type Props$16 as RadioProps, Rate, type Props$17 as RateProps, RichTextEditor, type Props$18 as RichTextEditorProps, Segmented, type Props$19 as SegmentedProps, Select, type Props$20 as SelectProps, Skeleton, type Props$21 as SkeletonProps, Slider, type Props$22 as SliderProps, Spin, type Props$23 as SpinProps, Switch, type Props$24 as SwitchProps, Tag, type Props$25 as TagProps, TimePicker, type Props$26 as TimePickerProps, ToggleGroup, type Option$3 as ToggleGroupOption, type Props$27 as ToggleGroupProps, Tooltip, type Props$28 as TooltipProps, Typography, type Props$29 as TypographyProps };
@@ -1,5 +1,6 @@
1
1
  //#region src/components/atoms/input/input.d.ts
2
- declare const Input: ({ ref, ...props }: React.ComponentPropsWithRef<"input">) => import("react").JSX.Element;
2
+ export type Props = React.ComponentPropsWithRef<'input'>;
3
+ declare const Input: ({ ref, ...props }: Props) => import("react").JSX.Element;
3
4
  //#endregion
4
5
  export { Input as default };
5
6
  //# sourceMappingURL=input.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.mts","names":[],"sources":["../../../../src/components/atoms/input/input.tsx"],"mappings":";cAIM,UAAS,QAAA,SAAmB,MAAM,mDAA8B,IAAA"}
1
+ {"version":3,"file":"input.d.mts","names":[],"sources":["../../../../src/components/atoms/input/input.tsx"],"mappings":";YAIY,QAAQ,MAAM;cAEpB,UAAS,QAAA,SAAmB,0BAAK,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.mjs","names":["input"],"sources":["../../../../src/components/atoms/input/input.tsx"],"sourcesContent":["import { input } from '../../../core';\n\nconst { Input: Core } = input;\n\nconst Input = ({ ref, ...props }: React.ComponentPropsWithRef<'input'>) => {\n return <Core ref={ref} {...props} />;\n};\n\nexport default Input;\n"],"mappings":";;;AAEA,MAAM,EAAE,OAAO,SAASA;AAExB,MAAM,SAAS,EAAE,KAAK,GAAG,YAAkD;CACzE,OAAO,oBAAC,MAAD;EAAW;EAAK,GAAI;CAAQ,CAAA;AACrC"}
1
+ {"version":3,"file":"input.mjs","names":["input"],"sources":["../../../../src/components/atoms/input/input.tsx"],"sourcesContent":["import { input } from '../../../core';\n\nconst { Input: Core } = input;\n\nexport type Props = React.ComponentPropsWithRef<'input'>;\n\nconst Input = ({ ref, ...props }: Props) => {\n return <Core ref={ref} {...props} />;\n};\n\nexport default Input;\n"],"mappings":";;;AAEA,MAAM,EAAE,OAAO,SAASA;AAIxB,MAAM,SAAS,EAAE,KAAK,GAAG,YAAmB;CAC1C,OAAO,oBAAC,MAAD;EAAW;EAAK,GAAI;CAAQ,CAAA;AACrC"}
@@ -2,7 +2,7 @@ import { ComponentSize } from "../../../providers/config/types.mjs";
2
2
  import * as React$1 from "react";
3
3
  import { NumberField, NumberFieldRoot } from "@base-ui/react/number-field";
4
4
  //#region src/components/atoms/input/number.d.ts
5
- interface Props extends Omit<React$1.ComponentProps<typeof NumberField.Root>, 'children' | 'onValueChange'> {
5
+ export interface Props extends Omit<React$1.ComponentProps<typeof NumberField.Root>, 'children' | 'onValueChange'> {
6
6
  /** Visible input label. Alternatively, pair `id` with an external label. */
7
7
  label?: string;
8
8
  /** Called with the numeric value (or null when cleared). */
@@ -19,5 +19,5 @@ interface Props extends Omit<React$1.ComponentProps<typeof NumberField.Root>, 'c
19
19
  }
20
20
  declare const Number: ({ ref, id, label, onChange, placeholder, size, className, classNames, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: Props) => React$1.JSX.Element;
21
21
  //#endregion
22
- export { Props, Number as default };
22
+ export { Number as default };
23
23
  //# sourceMappingURL=number.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.d.mts","names":[],"sources":["../../../../src/components/atoms/input/number.tsx"],"mappings":";;;;UAmBiB,cAAc,KAC7B,QAAM,sBAAsB,YAAY;;EAIxC;;EAEA,YACE,sBACA,cAAc,gBAAgB;EAEhC;EACA,OAAO;EACP;IACE;IACA;IACA;IACA;IACA;;;cAIE,WAAU,KAAA,IAAA,OAAA,UAAA,aAAA,MAAA,WAAA,0BAAA,8BAAA,oCAAA,oBAAA,SAab,UAAK,QAAA,IAAA"}
1
+ {"version":3,"file":"number.d.mts","names":["React"],"sources":["../../../../src/components/atoms/input/number.tsx"],"mappings":";;;;iBAmBiB,cAAc,KAC7BA,QAAM,sBAAsB,YAAY;;EAIxC;;EAEA,YACE,sBACA,cAAc,gBAAgB;EAEhC;EACA,OAAO;EACP;IACE;IACA;IACA;IACA;IACA;;;cAIE,WAAU,KAAA,IAAA,OAAA,UAAA,aAAA,MAAA,WAAA,0BAAA,8BAAA,oCAAA,oBAAA,SAab,UAAKA,QAAA,IAAA"}
@@ -3,9 +3,9 @@ import { cn } from "../../../utils.mjs";
3
3
  import { useConfig } from "../../../providers/config/context.mjs";
4
4
  import Button from "../../../Button.mjs";
5
5
  import Input from "./input.mjs";
6
- import { Minus, Plus } from "lucide-react";
7
6
  import * as React$1 from "react";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Minus, Plus } from "lucide-react";
9
9
  import { NumberField } from "@base-ui/react/number-field";
10
10
  //#region src/components/atoms/input/number.tsx
11
11
  const sizes = {
@@ -0,0 +1,26 @@
1
+ import { ComponentSize } from "../../../providers/config/types.mjs";
2
+ import * as React$1 from "react";
3
+ import { OTPField, OTPFieldRoot } from "@base-ui/react/otp-field";
4
+ //#region src/components/atoms/input/otp.d.ts
5
+ export interface Props extends Omit<React$1.ComponentProps<typeof OTPField.Root>, 'children' | 'onValueChange' | 'onValueComplete' | 'autoSubmit' | 'render' | 'className' | 'length'> {
6
+ /** Positive safe integer slot count. Invalid or omitted values use six. */
7
+ length?: number;
8
+ className?: string;
9
+ label?: string;
10
+ onChange?: (value: string, details: OTPFieldRoot.ChangeEventDetails) => void;
11
+ onComplete?: (value: string, details: OTPFieldRoot.CompleteEventDetails) => void;
12
+ size?: ComponentSize;
13
+ inputRef?: React$1.Ref<HTMLInputElement>;
14
+ placeholder?: string;
15
+ /** Localize the accessible name of each slot after the first. */
16
+ getSlotLabel?: (index: number, length: number) => string;
17
+ classNames?: {
18
+ label?: string;
19
+ group?: string;
20
+ input?: string;
21
+ };
22
+ }
23
+ declare const OTP: ({ label, id, length, size, onChange, onComplete, inputRef, placeholder, getSlotLabel, className, classNames, "aria-label": ariaLabel, "aria-labelledby": labelledBy, "aria-describedby": describedBy, ...props }: Props) => React$1.JSX.Element;
24
+ //#endregion
25
+ export { OTP as default };
26
+ //# sourceMappingURL=otp.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp.d.mts","names":["React"],"sources":["../../../../src/components/atoms/input/otp.tsx"],"mappings":";;;;iBAmBiB,cAAc,KAC7BA,QAAM,sBAAsB,SAAS;;EAUrC;EACA;EACA;EACA,YAAY,eAAe,SAAS,aAAa;EACjD,cACE,eACA,SAAS,aAAa;EAExB,OAAO;EACP,WAAWA,QAAM,IAAI;EACrB;;EAEA,gBAAgB,eAAe;EAC/B;IAAe;IAAgB;IAAgB;;;cAG3C,QAAO,OAAA,IAAA,QAAA,MAAA,UAAA,YAAA,UAAA,aAAA,cAAA,WAAA,0BAAA,8BAAA,gCAAA,gBAAA,SAgBV,UAAKA,QAAA,IAAA"}