@jbpark/ui-kit 10.2.0 → 10.3.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 (351) hide show
  1. package/dist/Alert.d.mts +2 -2
  2. package/dist/Alert.d.mts.map +1 -1
  3. package/dist/Alert.mjs +1 -1
  4. package/dist/Anchor.d.mts +29 -0
  5. package/dist/Anchor.d.mts.map +1 -0
  6. package/dist/Anchor.mjs +120 -0
  7. package/dist/Anchor.mjs.map +1 -0
  8. package/dist/AutoComplete.d.mts +34 -0
  9. package/dist/AutoComplete.d.mts.map +1 -0
  10. package/dist/AutoComplete.mjs +82 -0
  11. package/dist/AutoComplete.mjs.map +1 -0
  12. package/dist/Avatar.d.mts +2 -2
  13. package/dist/Avatar.d.mts.map +1 -1
  14. package/dist/Avatar.mjs +2 -2
  15. package/dist/Badge.d.mts +2 -2
  16. package/dist/Badge.d.mts.map +1 -1
  17. package/dist/Breadcrumb.d.mts +3 -3
  18. package/dist/Breadcrumb.d.mts.map +1 -1
  19. package/dist/Breadcrumb.mjs +1 -1
  20. package/dist/Breadcrumb.mjs.map +1 -1
  21. package/dist/Button.d.mts +3 -3
  22. package/dist/Button.d.mts.map +1 -1
  23. package/dist/Button.mjs +1 -1
  24. package/dist/Calendar.d.mts +28 -0
  25. package/dist/Calendar.d.mts.map +1 -0
  26. package/dist/Calendar.mjs +64 -0
  27. package/dist/Calendar.mjs.map +1 -0
  28. package/dist/Card.d.mts +2 -2
  29. package/dist/Card.d.mts.map +1 -1
  30. package/dist/Cascader.d.mts +34 -0
  31. package/dist/Cascader.d.mts.map +1 -0
  32. package/dist/Cascader.mjs +144 -0
  33. package/dist/Cascader.mjs.map +1 -0
  34. package/dist/CodeEditor.d.mts +2 -2
  35. package/dist/CodeEditor.d.mts.map +1 -1
  36. package/dist/ContextMenu.d.mts +33 -0
  37. package/dist/ContextMenu.d.mts.map +1 -0
  38. package/dist/ContextMenu.mjs +92 -0
  39. package/dist/ContextMenu.mjs.map +1 -0
  40. package/dist/Descriptions.d.mts +31 -0
  41. package/dist/Descriptions.d.mts.map +1 -0
  42. package/dist/Descriptions.mjs +67 -0
  43. package/dist/Descriptions.mjs.map +1 -0
  44. package/dist/Divider.d.mts +18 -0
  45. package/dist/Divider.d.mts.map +1 -0
  46. package/dist/Divider.mjs +44 -0
  47. package/dist/Divider.mjs.map +1 -0
  48. package/dist/Form.d.mts +12 -0
  49. package/dist/Form.d.mts.map +1 -0
  50. package/dist/Form.mjs +11 -0
  51. package/dist/Form.mjs.map +1 -0
  52. package/dist/Layout.d.mts.map +1 -1
  53. package/dist/Mentions.d.mts +34 -0
  54. package/dist/Mentions.d.mts.map +1 -0
  55. package/dist/Mentions.mjs +207 -0
  56. package/dist/Mentions.mjs.map +1 -0
  57. package/dist/Menu.mjs +1 -2
  58. package/dist/Pagination.d.mts +2 -2
  59. package/dist/Pagination.d.mts.map +1 -1
  60. package/dist/Pagination.mjs +1 -1
  61. package/dist/Popconfirm.d.mts +33 -0
  62. package/dist/Popconfirm.d.mts.map +1 -0
  63. package/dist/Popconfirm.mjs +119 -0
  64. package/dist/Popconfirm.mjs.map +1 -0
  65. package/dist/Rate.d.mts +27 -0
  66. package/dist/Rate.d.mts.map +1 -0
  67. package/dist/Rate.mjs +81 -0
  68. package/dist/Rate.mjs.map +1 -0
  69. package/dist/Reveals.d.mts.map +1 -1
  70. package/dist/ScrollArea.d.mts +8 -0
  71. package/dist/ScrollArea.d.mts.map +1 -0
  72. package/dist/ScrollArea.mjs +11 -0
  73. package/dist/ScrollArea.mjs.map +1 -0
  74. package/dist/Segmented.d.mts +3 -3
  75. package/dist/Segmented.d.mts.map +1 -1
  76. package/dist/Space.d.mts +2 -2
  77. package/dist/Space.d.mts.map +1 -1
  78. package/dist/Statistic.d.mts +22 -0
  79. package/dist/Statistic.d.mts.map +1 -0
  80. package/dist/Statistic.mjs +53 -0
  81. package/dist/Statistic.mjs.map +1 -0
  82. package/dist/Steps.d.mts +3 -3
  83. package/dist/Steps.d.mts.map +1 -1
  84. package/dist/Steps.mjs +1 -1
  85. package/dist/Table.d.mts +4 -4
  86. package/dist/Table.d.mts.map +1 -1
  87. package/dist/Tag.d.mts +3 -3
  88. package/dist/Tag.d.mts.map +1 -1
  89. package/dist/TimePicker.d.mts +26 -0
  90. package/dist/TimePicker.d.mts.map +1 -0
  91. package/dist/TimePicker.mjs +77 -0
  92. package/dist/TimePicker.mjs.map +1 -0
  93. package/dist/Timeline.d.mts +35 -0
  94. package/dist/Timeline.d.mts.map +1 -0
  95. package/dist/Timeline.mjs +59 -0
  96. package/dist/Timeline.mjs.map +1 -0
  97. package/dist/Tour.d.mts +37 -0
  98. package/dist/Tour.d.mts.map +1 -0
  99. package/dist/Tour.mjs +192 -0
  100. package/dist/Tour.mjs.map +1 -0
  101. package/dist/Transfer.d.mts +36 -0
  102. package/dist/Transfer.d.mts.map +1 -0
  103. package/dist/Transfer.mjs +147 -0
  104. package/dist/Transfer.mjs.map +1 -0
  105. package/dist/Tree.d.mts +62 -0
  106. package/dist/Tree.d.mts.map +1 -0
  107. package/dist/Tree.mjs +462 -0
  108. package/dist/Tree.mjs.map +1 -0
  109. package/dist/TreeSelect.d.mts +34 -0
  110. package/dist/TreeSelect.d.mts.map +1 -0
  111. package/dist/TreeSelect.mjs +135 -0
  112. package/dist/TreeSelect.mjs.map +1 -0
  113. package/dist/Typography.d.mts.map +1 -1
  114. package/dist/components/atoms/checkbox/checkbox.d.mts +5 -3
  115. package/dist/components/atoms/checkbox/checkbox.d.mts.map +1 -1
  116. package/dist/components/atoms/checkbox/checkbox.mjs +8 -4
  117. package/dist/components/atoms/checkbox/checkbox.mjs.map +1 -1
  118. package/dist/components/atoms/checkbox/group.d.mts +2 -2
  119. package/dist/components/atoms/checkbox/group.d.mts.map +1 -1
  120. package/dist/components/atoms/checkbox/index.d.mts.map +1 -1
  121. package/dist/components/atoms/color-picker.d.mts +2 -2
  122. package/dist/components/atoms/color-picker.d.mts.map +1 -1
  123. package/dist/components/atoms/date-picker.d.mts +5 -1
  124. package/dist/components/atoms/date-picker.d.mts.map +1 -1
  125. package/dist/components/atoms/date-picker.mjs +54 -10
  126. package/dist/components/atoms/date-picker.mjs.map +1 -1
  127. package/dist/components/atoms/float-button/back-top.d.mts +2 -2
  128. package/dist/components/atoms/float-button/back-top.d.mts.map +1 -1
  129. package/dist/components/atoms/float-button/back-top.mjs +1 -1
  130. package/dist/components/atoms/float-button/float-button.d.mts +2 -2
  131. package/dist/components/atoms/float-button/float-button.d.mts.map +1 -1
  132. package/dist/components/atoms/float-button/index.d.mts.map +1 -1
  133. package/dist/components/atoms/index.d.mts +13 -6
  134. package/dist/components/atoms/input/index.d.mts +3 -1
  135. package/dist/components/atoms/input/index.d.mts.map +1 -1
  136. package/dist/components/atoms/input/index.mjs +3 -1
  137. package/dist/components/atoms/input/index.mjs.map +1 -1
  138. package/dist/components/atoms/input/number.d.mts +2 -2
  139. package/dist/components/atoms/input/number.d.mts.map +1 -1
  140. package/dist/components/atoms/input/number.mjs +1 -1
  141. package/dist/components/atoms/input/otp.d.mts +26 -0
  142. package/dist/components/atoms/input/otp.d.mts.map +1 -0
  143. package/dist/components/atoms/input/otp.mjs +52 -0
  144. package/dist/components/atoms/input/otp.mjs.map +1 -0
  145. package/dist/components/atoms/input/search.d.mts +2 -2
  146. package/dist/components/atoms/input/search.d.mts.map +1 -1
  147. package/dist/components/atoms/input/search.mjs +2 -2
  148. package/dist/components/atoms/mentions-token.mjs +31 -0
  149. package/dist/components/atoms/mentions-token.mjs.map +1 -0
  150. package/dist/components/atoms/option-group.d.mts +4 -5
  151. package/dist/components/atoms/option-group.d.mts.map +1 -1
  152. package/dist/components/atoms/popover.d.mts +2 -2
  153. package/dist/components/atoms/popover.d.mts.map +1 -1
  154. package/dist/components/atoms/progress.d.mts +2 -2
  155. package/dist/components/atoms/progress.d.mts.map +1 -1
  156. package/dist/components/atoms/radio/group.d.mts +2 -2
  157. package/dist/components/atoms/radio/group.d.mts.map +1 -1
  158. package/dist/components/atoms/radio/group.mjs +1 -1
  159. package/dist/components/atoms/radio/index.d.mts.map +1 -1
  160. package/dist/components/atoms/radio/radio.d.mts +2 -2
  161. package/dist/components/atoms/radio/radio.d.mts.map +1 -1
  162. package/dist/components/atoms/radio/radio.mjs +1 -1
  163. package/dist/components/atoms/rich-text-editor/rich-text-editor.d.mts +2 -2
  164. package/dist/components/atoms/rich-text-editor/rich-text-editor.d.mts.map +1 -1
  165. package/dist/components/atoms/rich-text-editor/toolbar-presets.mjs +2 -2
  166. package/dist/components/atoms/rich-text-editor/types.d.mts +2 -3
  167. package/dist/components/atoms/rich-text-editor/types.d.mts.map +1 -1
  168. package/dist/components/atoms/select-multiple.d.mts +2 -3
  169. package/dist/components/atoms/select-multiple.d.mts.map +1 -1
  170. package/dist/components/atoms/select-multiple.mjs +4 -3
  171. package/dist/components/atoms/select-multiple.mjs.map +1 -1
  172. package/dist/components/atoms/select-searchable-options.d.mts +3 -4
  173. package/dist/components/atoms/select-searchable-options.d.mts.map +1 -1
  174. package/dist/components/atoms/select-searchable.d.mts +2 -3
  175. package/dist/components/atoms/select-searchable.d.mts.map +1 -1
  176. package/dist/components/atoms/select-searchable.mjs +4 -3
  177. package/dist/components/atoms/select-searchable.mjs.map +1 -1
  178. package/dist/components/atoms/select.d.mts +3 -3
  179. package/dist/components/atoms/select.d.mts.map +1 -1
  180. package/dist/components/atoms/skeleton/button.d.mts.map +1 -1
  181. package/dist/components/atoms/skeleton/index.d.mts.map +1 -1
  182. package/dist/components/atoms/skeleton/node.d.mts.map +1 -1
  183. package/dist/components/atoms/skeleton/skeleton.d.mts +2 -2
  184. package/dist/components/atoms/skeleton/skeleton.d.mts.map +1 -1
  185. package/dist/components/atoms/slider/slider.d.mts +3 -3
  186. package/dist/components/atoms/slider/slider.d.mts.map +1 -1
  187. package/dist/components/atoms/spin.d.mts +2 -2
  188. package/dist/components/atoms/spin.d.mts.map +1 -1
  189. package/dist/components/atoms/spin.mjs +1 -1
  190. package/dist/components/atoms/switch.d.mts +2 -2
  191. package/dist/components/atoms/switch.d.mts.map +1 -1
  192. package/dist/components/atoms/tooltip.d.mts +2 -2
  193. package/dist/components/atoms/tooltip.d.mts.map +1 -1
  194. package/dist/components/atoms/typography/link.d.mts +2 -2
  195. package/dist/components/atoms/typography/link.d.mts.map +1 -1
  196. package/dist/components/atoms/typography/paragraph.d.mts +2 -2
  197. package/dist/components/atoms/typography/paragraph.d.mts.map +1 -1
  198. package/dist/components/atoms/typography/text.d.mts +2 -2
  199. package/dist/components/atoms/typography/text.d.mts.map +1 -1
  200. package/dist/components/atoms/typography/title.d.mts +2 -2
  201. package/dist/components/atoms/typography/title.d.mts.map +1 -1
  202. package/dist/components/atoms/typography/typography.d.mts +2 -2
  203. package/dist/components/atoms/typography/typography.d.mts.map +1 -1
  204. package/dist/components/molecules/collapse.d.mts +2 -2
  205. package/dist/components/molecules/collapse.d.mts.map +1 -1
  206. package/dist/components/molecules/dropdown.d.mts +2 -2
  207. package/dist/components/molecules/dropdown.d.mts.map +1 -1
  208. package/dist/components/molecules/index.d.mts +22 -14
  209. package/dist/components/molecules/marquees/index.d.mts.map +1 -1
  210. package/dist/components/molecules/marquees/item.d.mts +4 -4
  211. package/dist/components/molecules/marquees/item.d.mts.map +1 -1
  212. package/dist/components/molecules/marquees/item.mjs +5 -5
  213. package/dist/components/molecules/marquees/item.mjs.map +1 -1
  214. package/dist/components/molecules/marquees/marquees.d.mts +2 -2
  215. package/dist/components/molecules/marquees/marquees.d.mts.map +1 -1
  216. package/dist/components/molecules/marquees/marquees.mjs +4 -5
  217. package/dist/components/molecules/marquees/marquees.mjs.map +1 -1
  218. package/dist/components/molecules/menu/item/item.mjs +1 -1
  219. package/dist/components/molecules/menu/menu.d.mts +9 -9
  220. package/dist/components/molecules/menu/menu.d.mts.map +1 -1
  221. package/dist/components/molecules/reveals/item.d.mts +2 -2
  222. package/dist/components/molecules/reveals/item.d.mts.map +1 -1
  223. package/dist/components/molecules/reveals/reveals.d.mts +5 -5
  224. package/dist/components/molecules/reveals/reveals.d.mts.map +1 -1
  225. package/dist/components/molecules/splitter/index.d.mts.map +1 -1
  226. package/dist/components/molecules/splitter/panel.d.mts +3 -3
  227. package/dist/components/molecules/splitter/panel.d.mts.map +1 -1
  228. package/dist/components/molecules/splitter/splitter.d.mts +3 -3
  229. package/dist/components/molecules/splitter/splitter.d.mts.map +1 -1
  230. package/dist/components/molecules/tabs.d.mts +4 -4
  231. package/dist/components/molecules/tabs.d.mts.map +1 -1
  232. package/dist/components/molecules/upload.d.mts +3 -3
  233. package/dist/components/molecules/upload.d.mts.map +1 -1
  234. package/dist/components/molecules/upload.mjs +1 -1
  235. package/dist/components/organisms/drawer.d.mts +2 -2
  236. package/dist/components/organisms/drawer.d.mts.map +1 -1
  237. package/dist/components/organisms/drawer.mjs +2 -2
  238. package/dist/components/organisms/form/context.d.mts +4 -0
  239. package/dist/components/organisms/form/context.d.mts.map +1 -0
  240. package/dist/components/organisms/form/context.mjs +9 -0
  241. package/dist/components/organisms/form/context.mjs.map +1 -0
  242. package/dist/components/organisms/form/control.d.mts +11 -0
  243. package/dist/components/organisms/form/control.d.mts.map +1 -0
  244. package/dist/components/organisms/form/control.mjs +19 -0
  245. package/dist/components/organisms/form/control.mjs.map +1 -0
  246. package/dist/components/organisms/form/field.d.mts +25 -0
  247. package/dist/components/organisms/form/field.d.mts.map +1 -0
  248. package/dist/components/organisms/form/field.mjs +54 -0
  249. package/dist/components/organisms/form/field.mjs.map +1 -0
  250. package/dist/components/organisms/form/form.d.mts +14 -0
  251. package/dist/components/organisms/form/form.d.mts.map +1 -0
  252. package/dist/components/organisms/form/form.mjs +23 -0
  253. package/dist/components/organisms/form/form.mjs.map +1 -0
  254. package/dist/components/organisms/index.d.mts +14 -6
  255. package/dist/components/organisms/list/index.d.mts.map +1 -1
  256. package/dist/components/organisms/list/list.d.mts +2 -2
  257. package/dist/components/organisms/list/list.d.mts.map +1 -1
  258. package/dist/components/organisms/modal.d.mts +6 -3
  259. package/dist/components/organisms/modal.d.mts.map +1 -1
  260. package/dist/components/organisms/modal.mjs +25 -18
  261. package/dist/components/organisms/modal.mjs.map +1 -1
  262. package/dist/components/organisms/swiper/index.d.mts.map +1 -1
  263. package/dist/components/organisms/swiper/swiper.d.mts +2 -2
  264. package/dist/components/organisms/swiper/swiper.d.mts.map +1 -1
  265. package/dist/components/organisms/toast.d.mts +2 -2
  266. package/dist/components/organisms/toast.d.mts.map +1 -1
  267. package/dist/components/organisms/toast.mjs +1 -1
  268. package/dist/components/templates/container.d.mts +2 -2
  269. package/dist/components/templates/container.d.mts.map +1 -1
  270. package/dist/components/templates/empty.d.mts +2 -2
  271. package/dist/components/templates/empty.d.mts.map +1 -1
  272. package/dist/components/templates/empty.mjs +1 -1
  273. package/dist/components/templates/grid/col.d.mts +2 -2
  274. package/dist/components/templates/grid/col.d.mts.map +1 -1
  275. package/dist/components/templates/grid/row.d.mts +2 -2
  276. package/dist/components/templates/grid/row.d.mts.map +1 -1
  277. package/dist/components/templates/layout/content.d.mts +2 -2
  278. package/dist/components/templates/layout/content.d.mts.map +1 -1
  279. package/dist/components/templates/layout/footer.d.mts +2 -2
  280. package/dist/components/templates/layout/footer.d.mts.map +1 -1
  281. package/dist/components/templates/layout/header.d.mts +2 -2
  282. package/dist/components/templates/layout/header.d.mts.map +1 -1
  283. package/dist/components/templates/layout/layout.d.mts +2 -2
  284. package/dist/components/templates/layout/layout.d.mts.map +1 -1
  285. package/dist/components/templates/layout/sider.d.mts +2 -2
  286. package/dist/components/templates/layout/sider.d.mts.map +1 -1
  287. package/dist/components/templates/layout/sider.mjs +1 -1
  288. package/dist/components/templates/page-header.d.mts +2 -2
  289. package/dist/components/templates/page-header.d.mts.map +1 -1
  290. package/dist/components/templates/page-header.mjs +1 -1
  291. package/dist/components/templates/result.d.mts +2 -2
  292. package/dist/components/templates/result.d.mts.map +1 -1
  293. package/dist/components/templates/result.mjs +1 -1
  294. package/dist/core/accordion.mjs +1 -1
  295. package/dist/core/autocomplete.d.mts +2 -0
  296. package/dist/core/autocomplete.mjs +48 -0
  297. package/dist/core/autocomplete.mjs.map +1 -0
  298. package/dist/core/badge.d.mts +5 -3
  299. package/dist/core/badge.d.mts.map +1 -1
  300. package/dist/core/button.d.mts +6 -4
  301. package/dist/core/button.d.mts.map +1 -1
  302. package/dist/core/calendar.d.mts +13 -3
  303. package/dist/core/calendar.d.mts.map +1 -0
  304. package/dist/core/calendar.mjs +1 -1
  305. package/dist/core/checkbox.mjs +11 -8
  306. package/dist/core/checkbox.mjs.map +1 -1
  307. package/dist/core/combobox.d.mts +26 -4
  308. package/dist/core/combobox.d.mts.map +1 -1
  309. package/dist/core/combobox.mjs +2 -2
  310. package/dist/core/combobox.mjs.map +1 -1
  311. package/dist/core/dialog.mjs +2 -2
  312. package/dist/core/dialog.mjs.map +1 -1
  313. package/dist/core/form.d.mts +8 -0
  314. package/dist/core/form.d.mts.map +1 -0
  315. package/dist/core/form.mjs +3 -0
  316. package/dist/core/index.d.mts +13 -9
  317. package/dist/core/popover.mjs +10 -2
  318. package/dist/core/popover.mjs.map +1 -1
  319. package/dist/core/radio-group.mjs +1 -1
  320. package/dist/core/resizable.d.mts +7 -2
  321. package/dist/core/resizable.d.mts.map +1 -1
  322. package/dist/core/resizable.mjs +1 -1
  323. package/dist/core/scroll-area.d.mts +20 -0
  324. package/dist/core/scroll-area.d.mts.map +1 -0
  325. package/dist/core/scroll-area.mjs +57 -0
  326. package/dist/core/scroll-area.mjs.map +1 -0
  327. package/dist/core/select.d.mts +24 -2
  328. package/dist/core/select.d.mts.map +1 -1
  329. package/dist/core/select.mjs +1 -1
  330. package/dist/core/separator.d.mts +13 -2
  331. package/dist/core/separator.d.mts.map +1 -0
  332. package/dist/core/tabs.d.mts +16 -2
  333. package/dist/core/tabs.d.mts.map +1 -1
  334. package/dist/index.d.mts +59 -36
  335. package/dist/index.mjs +25 -6
  336. package/dist/lib/colors.d.mts +2 -3
  337. package/dist/lib/colors.d.mts.map +1 -1
  338. package/dist/providers/config/context.d.mts +2 -3
  339. package/dist/providers/config/context.d.mts.map +1 -1
  340. package/dist/providers/config/context.mjs +3 -1
  341. package/dist/providers/config/context.mjs.map +1 -1
  342. package/dist/providers/config/registry.d.mts +2 -3
  343. package/dist/providers/config/registry.d.mts.map +1 -1
  344. package/dist/providers/config/types.d.mts +8 -7
  345. package/dist/providers/config/types.d.mts.map +1 -1
  346. package/dist/style.css +689 -332
  347. package/dist/utils.d.mts +2 -3
  348. package/dist/utils.d.mts.map +1 -1
  349. package/package.json +122 -26
  350. package/dist/components/molecules/marquees/use-pause-on-hover.mjs +0 -26
  351. package/dist/components/molecules/marquees/use-pause-on-hover.mjs.map +0 -1
@@ -1,22 +1,23 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils.mjs";
3
3
  import { DEFAULT_LOCALE, useConfig } from "../../providers/config/context.mjs";
4
- import { dialog_exports } from "../../core/dialog.mjs";
5
4
  import Button from "../../Button.mjs";
5
+ import { dialog_exports } from "../../core/dialog.mjs";
6
6
  import { createImperativeStack, isBrowser } from "./imperative-stack.mjs";
7
- import { Check, CircleQuestionMark, Info, OctagonAlert, OctagonX } from "lucide-react";
8
- import { useState } from "react";
7
+ import { useRef, useState } from "react";
9
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Check, CircleQuestionMark, Info, OctagonAlert, OctagonX } from "lucide-react";
10
10
  import { createPortal } from "react-dom";
11
11
  //#region src/components/organisms/modal.tsx
12
12
  const { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } = dialog_exports;
13
- const Modal = ({ open = false, maskClosable, closable = false, closeIcon, className, classNames, style, title, content, footer, container, children, okText, cancelText, onOk, onCancel, ...props }) => {
13
+ const Modal = ({ open = false, maskClosable, closable = false, closeIcon, className, classNames, style, title, content, footer, container, children, okText, cancelText, onOk, onCancel, onOpenChangeComplete, ...props }) => {
14
14
  const { locale, defaultProps } = useConfig();
15
15
  const modalDefaults = defaultProps?.modal;
16
16
  const resolvedMaskClosable = maskClosable ?? modalDefaults?.maskClosable ?? false;
17
17
  if (typeof window === "undefined") return null;
18
18
  return /* @__PURE__ */ jsx(Dialog, {
19
19
  open,
20
+ onOpenChangeComplete,
20
21
  onOpenChange: (open) => {
21
22
  if (!open) onCancel?.();
22
23
  },
@@ -44,13 +45,13 @@ const Modal = ({ open = false, maskClosable, closable = false, closeIcon, classN
44
45
  footer !== null && /* @__PURE__ */ jsx(DialogFooter, {
45
46
  className: cn("flex-row justify-end gap-x-2", classNames?.footer),
46
47
  children: footer || /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
47
- type: "primary",
48
- onClick: onOk,
49
- children: okText ?? locale.ok ?? DEFAULT_LOCALE.ok
50
- }), /* @__PURE__ */ jsx(Button, {
51
48
  variant: "outlined",
52
49
  onClick: onCancel,
53
50
  children: cancelText ?? locale.cancel ?? DEFAULT_LOCALE.cancel
51
+ }), /* @__PURE__ */ jsx(Button, {
52
+ type: "primary",
53
+ onClick: onOk,
54
+ children: okText ?? locale.ok ?? DEFAULT_LOCALE.ok
54
55
  })] })
55
56
  })
56
57
  ]
@@ -64,31 +65,31 @@ const STATIC_ICONS = {
64
65
  warning: /* @__PURE__ */ jsx(OctagonAlert, { className: "text-yellow-400" }),
65
66
  confirm: /* @__PURE__ */ jsx(CircleQuestionMark, {})
66
67
  };
67
- const StaticModal = ({ id, status, mode, title, content, okText, cancelText, container, icon, onOk, onCancel, ...props }) => {
68
+ const StaticModal = ({ id, status, mode, title, content, okText, cancelText, container, icon, onOk, onCancel, onOpenChangeComplete, ...props }) => {
68
69
  const { locale } = useConfig();
69
70
  const [open, setOpen] = useState(true);
71
+ const closing = useRef(false);
70
72
  const resolvedOkText = okText ?? locale.ok ?? DEFAULT_LOCALE.ok;
71
73
  const resolvedCancelText = cancelText ?? locale.cancel ?? DEFAULT_LOCALE.cancel;
72
74
  const isConfirm = mode === "confirm";
73
75
  const closeModal = (callback) => {
74
- callback?.();
76
+ if (closing.current) return;
77
+ closing.current = true;
75
78
  setOpen(false);
76
- setTimeout(() => {
77
- modalStack.destroy(id);
78
- }, 200);
79
+ callback?.();
79
80
  };
80
81
  const footer = isConfirm ? /* @__PURE__ */ jsxs("div", {
81
82
  className: "grid w-full grid-cols-5 gap-x-2",
82
83
  children: [/* @__PURE__ */ jsx(Button, {
83
- type: "primary",
84
- className: "col-span-3",
85
- onClick: () => closeModal(onOk),
86
- children: resolvedOkText
87
- }), /* @__PURE__ */ jsx(Button, {
88
84
  variant: "outlined",
89
85
  className: "col-span-2",
90
86
  onClick: () => closeModal(onCancel),
91
87
  children: resolvedCancelText
88
+ }), /* @__PURE__ */ jsx(Button, {
89
+ type: "primary",
90
+ className: "col-span-3",
91
+ onClick: () => closeModal(onOk),
92
+ children: resolvedOkText
92
93
  })]
93
94
  }) : /* @__PURE__ */ jsx(Button, {
94
95
  type: "primary",
@@ -113,6 +114,10 @@ const StaticModal = ({ id, status, mode, title, content, okText, cancelText, con
113
114
  container,
114
115
  onCancel: () => closeModal(onCancel),
115
116
  ...props,
117
+ onOpenChangeComplete: (open) => {
118
+ if (!open) modalStack.destroy(id);
119
+ onOpenChangeComplete?.(open);
120
+ },
116
121
  children: content
117
122
  }), modalStack.getRootElement(container));
118
123
  };
@@ -125,7 +130,9 @@ const modalStack = createImperativeStack({
125
130
  },
126
131
  StackItem: StaticModal
127
132
  });
133
+ /** Immediately removes a modal without waiting for its closing animation. */
128
134
  Modal.destroy = modalStack.destroy;
135
+ /** Immediately removes all modals, including those currently closing. */
129
136
  Modal.destroyAll = () => {
130
137
  modalStack.destroy();
131
138
  };
@@ -1 +1 @@
1
- {"version":3,"file":"modal.mjs","names":["dialog"],"sources":["../../../src/components/organisms/modal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n Check,\n CircleQuestionMark,\n Info,\n OctagonAlert,\n OctagonX,\n} from 'lucide-react';\n\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { dialog } from '../../core';\nimport Button from '../atoms/button';\nimport {\n type ImperativeStack,\n createImperativeStack,\n isBrowser,\n} from './imperative-stack';\n\nconst {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} = dialog;\n\nexport interface Props {\n open?: boolean;\n maskClosable?: boolean;\n closable?:\n | boolean\n | {\n closeIcon?: React.ReactNode;\n disabled?: boolean;\n };\n closeIcon?: React.ReactNode;\n title?: React.ReactNode;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n className?: string;\n classNames?: {\n mask?: string;\n header?: string;\n body?: string;\n footer?: string;\n };\n style?: React.CSSProperties;\n okText?: string;\n cancelText?: string;\n container?: HTMLElement;\n children?: React.ReactNode;\n onOk?: () => void;\n onCancel?: () => void;\n}\n\ntype ModalStatus = 'info' | 'success' | 'error' | 'warning';\n\ninterface StaticProps extends Props {\n status?: ModalStatus;\n /**\n * Interaction mode set by `Modal.confirm()` to request the two-button\n * footer. `confirm` is a mode, not a status, so it rides its own axis rather\n * than `status` — call `Modal.confirm()` rather than setting this directly.\n */\n mode?: 'confirm';\n id?: string;\n icon?: React.ReactNode;\n container?: HTMLElement;\n}\n\nconst Modal = ({\n open = false,\n maskClosable,\n closable = false,\n closeIcon,\n className,\n classNames,\n style,\n title,\n content,\n footer,\n container,\n children,\n okText,\n cancelText,\n onOk,\n onCancel,\n ...props\n}: Props) => {\n const { locale, defaultProps } = useConfig();\n const modalDefaults = defaultProps?.modal as\n Partial<Pick<Props, 'maskClosable'>> | undefined;\n // Explicit prop > `Config` default > built-in, matching Button/Tag.\n const resolvedMaskClosable =\n maskClosable ?? modalDefaults?.maskClosable ?? false;\n\n if (typeof window === 'undefined') {\n return null;\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open: boolean) => {\n if (!open) {\n onCancel?.();\n }\n }}\n // antd's `maskClosable` is a root-level dismissal concern in Base UI:\n // blocking the outside (mask) press keeps the dialog open on backdrop\n // click while Escape still closes it, matching the previous behaviour.\n disablePointerDismissal={!resolvedMaskClosable}\n {...props}\n >\n <DialogContent\n className={cn(\n 'rounded-lg p-4 max-sm:max-w-[80%]',\n 'border-none outline-none',\n className,\n )}\n classNames={{\n ...classNames,\n mask: cn('bg-black/60', classNames?.mask),\n }}\n style={style}\n closable={closable}\n closeIcon={closeIcon}\n container={container}\n >\n {/**\n * @todo [Dialog & AlertDialog] fix: can't get id correctly in shadow dom\n *\n * Filed while `core/dialog` was still Radix-based; the linked fix is\n * Radix's, and the repo no longer depends on it. Revalidate against\n * Base UI's Dialog before acting on this — the bug may already be gone.\n * @see https://github.com/radix-ui/primitives/pull/3384\n **/}\n <DialogHeader\n className={cn(\n classNames?.header,\n !title && 'hidden',\n //\n )}\n >\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription className=\"hidden\" />\n </DialogHeader>\n <div className={cn('break-all', classNames?.body)}>\n {children ?? content}\n </div>\n {footer !== null && (\n <DialogFooter\n className={cn('flex-row justify-end gap-x-2', classNames?.footer)}\n >\n {footer || (\n <>\n {/*\n * The confirming action is solid primary and the dismissing one\n * stays outlined, so the two read as different weights. Both\n * used to resolve to `outlined` — Button defaults to that\n * variant, so the unstyled OK button rendered identically to\n * the explicitly outlined Cancel beside it.\n */}\n <Button type=\"primary\" onClick={onOk}>\n {okText ?? locale.ok ?? DEFAULT_LOCALE.ok}\n </Button>\n <Button variant=\"outlined\" onClick={onCancel}>\n {cancelText ?? locale.cancel ?? DEFAULT_LOCALE.cancel}\n </Button>\n </>\n )}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n\nconst STATIC_ICONS = {\n info: <Info className=\"text-blue-400\" />,\n success: <Check className=\"text-green-400\" />,\n error: <OctagonX className=\"text-red-400\" />,\n warning: <OctagonAlert className=\"text-yellow-400\" />,\n confirm: <CircleQuestionMark />,\n};\n\nconst StaticModal = ({\n id,\n status,\n mode,\n title,\n content,\n okText,\n cancelText,\n container,\n icon,\n onOk,\n onCancel,\n ...props\n}: StaticProps & { id: string }): React.ReactPortal | null => {\n const { locale } = useConfig();\n const [open, setOpen] = useState(true);\n const resolvedOkText = okText ?? locale.ok ?? DEFAULT_LOCALE.ok;\n const resolvedCancelText =\n cancelText ?? locale.cancel ?? DEFAULT_LOCALE.cancel;\n // `confirm` is an interaction mode (two-button footer), not a status; the\n // semantic state comes from `status`.\n const isConfirm = mode === 'confirm';\n\n const closeModal = (callback?: () => void) => {\n callback?.();\n setOpen(false);\n setTimeout(() => {\n modalStack.destroy(id);\n }, 200);\n };\n\n // Confirming action first, dismissing action second — the same order as the\n // controlled footer above, which used to run the other way round here and\n // put the two footers of one component in opposite orders.\n const footer = isConfirm ? (\n <div className=\"grid w-full grid-cols-5 gap-x-2\">\n <Button\n type=\"primary\"\n className=\"col-span-3\"\n onClick={() => closeModal(onOk)}\n >\n {resolvedOkText}\n </Button>\n <Button\n variant=\"outlined\"\n className=\"col-span-2\"\n onClick={() => closeModal(onCancel)}\n >\n {resolvedCancelText}\n </Button>\n </div>\n ) : (\n <Button\n type=\"primary\"\n className={cn(\n 'grow',\n //\n )}\n onClick={() => closeModal(onOk)}\n >\n {resolvedOkText}\n </Button>\n );\n\n if (!isBrowser) {\n return null;\n }\n\n return createPortal(\n <Modal\n open={open}\n footer={footer}\n className={cn(\n 'z-10000',\n 'box-content w-100',\n 'rounded-3xl p-4',\n 'gap-y-0',\n )}\n classNames={{\n mask: 'z-10000 bg-black/[.6]',\n body: cn(\n 'text-black-70 whitespace-pre-wrap text-center',\n content && 'mt-3',\n ),\n footer: 'mt-9',\n }}\n title={\n <p\n className={cn(\n 'text-center text-lg leading-normal whitespace-pre-wrap',\n 'flex items-center justify-center gap-x-2',\n //\n )}\n >\n {icon ||\n (isConfirm ? STATIC_ICONS.confirm : status && STATIC_ICONS[status])}\n {title}\n </p>\n }\n container={container}\n onCancel={() => closeModal(onCancel)}\n {...props}\n >\n {content}\n </Modal>,\n modalStack.getRootElement(container)!,\n );\n};\n\n// No `role`/`aria-modal` here — this element is only a mount point for the\n// imperative stack, not the dialog itself. Base UI already renders its own\n// `role=\"dialog\"`/`aria-modal=\"true\"` on the actual `DialogContent` via\n// portal once a modal is open. Setting it here as well would (a) leave\n// `aria-modal=\"true\"` on the page permanently, even with zero modals open,\n// hiding the rest of the document from screen readers, and (b) duplicate\n// Base UI's own dialog role once one is open.\nconst modalStack: ImperativeStack<StaticProps> =\n createImperativeStack<StaticProps>({\n createRootElement: () => {\n const el = document.createElement('div');\n el.style.zIndex = '10000';\n el.style.position = 'absolute';\n return el;\n },\n StackItem: StaticModal,\n });\n\nModal.destroy = modalStack.destroy;\n\nModal.destroyAll = () => {\n modalStack.destroy();\n};\n\nModal.info = (props: StaticProps) =>\n modalStack.render({ status: 'info', ...props });\nModal.success = (props: StaticProps) =>\n modalStack.render({ status: 'success', ...props });\nModal.error = (props: StaticProps) =>\n modalStack.render({ status: 'error', ...props });\nModal.warning = (props: StaticProps) =>\n modalStack.render({ status: 'warning', ...props });\n// `confirm` is a mode, not a status, so it rides its own `mode` axis rather\n// than `status`.\nModal.confirm = (props: StaticProps) =>\n modalStack.render({ mode: 'confirm', ...props });\n\nexport default Modal;\n"],"mappings":"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"}
1
+ {"version":3,"file":"modal.mjs","names":["dialog"],"sources":["../../../src/components/organisms/modal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n Check,\n CircleQuestionMark,\n Info,\n OctagonAlert,\n OctagonX,\n} from 'lucide-react';\n\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { dialog } from '../../core';\nimport Button from '../atoms/button';\nimport {\n type ImperativeStack,\n createImperativeStack,\n isBrowser,\n} from './imperative-stack';\n\nconst {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} = dialog;\n\nexport interface Props {\n open?: boolean;\n maskClosable?: boolean;\n closable?:\n | boolean\n | {\n closeIcon?: React.ReactNode;\n disabled?: boolean;\n };\n closeIcon?: React.ReactNode;\n title?: React.ReactNode;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n className?: string;\n classNames?: {\n mask?: string;\n header?: string;\n body?: string;\n footer?: string;\n };\n style?: React.CSSProperties;\n okText?: string;\n cancelText?: string;\n container?: HTMLElement;\n children?: React.ReactNode;\n onOk?: () => void;\n onCancel?: () => void;\n /** Called after the opening or closing animations finish. */\n onOpenChangeComplete?: (open: boolean) => void;\n}\n\ntype ModalStatus = 'info' | 'success' | 'error' | 'warning';\n\ninterface StaticProps extends Props {\n status?: ModalStatus;\n /**\n * Interaction mode set by `Modal.confirm()` to request the two-button\n * footer. `confirm` is a mode, not a status, so it rides its own axis rather\n * than `status` — call `Modal.confirm()` rather than setting this directly.\n */\n mode?: 'confirm';\n id?: string;\n icon?: React.ReactNode;\n container?: HTMLElement;\n}\n\nconst Modal = ({\n open = false,\n maskClosable,\n closable = false,\n closeIcon,\n className,\n classNames,\n style,\n title,\n content,\n footer,\n container,\n children,\n okText,\n cancelText,\n onOk,\n onCancel,\n onOpenChangeComplete,\n ...props\n}: Props) => {\n const { locale, defaultProps } = useConfig();\n const modalDefaults = defaultProps?.modal as\n Partial<Pick<Props, 'maskClosable'>> | undefined;\n // Explicit prop > `Config` default > built-in, matching Button/Tag.\n const resolvedMaskClosable =\n maskClosable ?? modalDefaults?.maskClosable ?? false;\n\n if (typeof window === 'undefined') {\n return null;\n }\n\n return (\n <Dialog\n open={open}\n onOpenChangeComplete={onOpenChangeComplete}\n onOpenChange={(open: boolean) => {\n if (!open) {\n onCancel?.();\n }\n }}\n // antd's `maskClosable` is a root-level dismissal concern in Base UI:\n // blocking the outside (mask) press keeps the dialog open on backdrop\n // click while Escape still closes it, matching the previous behaviour.\n disablePointerDismissal={!resolvedMaskClosable}\n {...props}\n >\n <DialogContent\n className={cn(\n 'rounded-lg p-4 max-sm:max-w-[80%]',\n 'border-none outline-none',\n className,\n )}\n classNames={{\n ...classNames,\n mask: cn('bg-black/60', classNames?.mask),\n }}\n style={style}\n closable={closable}\n closeIcon={closeIcon}\n container={container}\n >\n {/**\n * @todo [Dialog & AlertDialog] fix: can't get id correctly in shadow dom\n *\n * Filed while `core/dialog` was still Radix-based; the linked fix is\n * Radix's, and the repo no longer depends on it. Revalidate against\n * Base UI's Dialog before acting on this — the bug may already be gone.\n * @see https://github.com/radix-ui/primitives/pull/3384\n **/}\n <DialogHeader\n className={cn(\n classNames?.header,\n !title && 'hidden',\n //\n )}\n >\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription className=\"hidden\" />\n </DialogHeader>\n <div className={cn('break-all', classNames?.body)}>\n {children ?? content}\n </div>\n {footer !== null && (\n <DialogFooter\n className={cn('flex-row justify-end gap-x-2', classNames?.footer)}\n >\n {footer || (\n <>\n <Button variant=\"outlined\" onClick={onCancel}>\n {cancelText ?? locale.cancel ?? DEFAULT_LOCALE.cancel}\n </Button>\n <Button type=\"primary\" onClick={onOk}>\n {okText ?? locale.ok ?? DEFAULT_LOCALE.ok}\n </Button>\n </>\n )}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n );\n};\n\nconst STATIC_ICONS = {\n info: <Info className=\"text-blue-400\" />,\n success: <Check className=\"text-green-400\" />,\n error: <OctagonX className=\"text-red-400\" />,\n warning: <OctagonAlert className=\"text-yellow-400\" />,\n confirm: <CircleQuestionMark />,\n};\n\nconst StaticModal = ({\n id,\n status,\n mode,\n title,\n content,\n okText,\n cancelText,\n container,\n icon,\n onOk,\n onCancel,\n onOpenChangeComplete,\n ...props\n}: StaticProps & { id: string }): React.ReactPortal | null => {\n const { locale } = useConfig();\n const [open, setOpen] = useState(true);\n const closing = useRef(false);\n const resolvedOkText = okText ?? locale.ok ?? DEFAULT_LOCALE.ok;\n const resolvedCancelText =\n cancelText ?? locale.cancel ?? DEFAULT_LOCALE.cancel;\n // `confirm` is an interaction mode (two-button footer), not a status; the\n // semantic state comes from `status`.\n const isConfirm = mode === 'confirm';\n\n const closeModal = (callback?: () => void) => {\n if (closing.current) {\n return;\n }\n\n closing.current = true;\n setOpen(false);\n callback?.();\n };\n\n const footer = isConfirm ? (\n <div className=\"grid w-full grid-cols-5 gap-x-2\">\n <Button\n variant=\"outlined\"\n className=\"col-span-2\"\n onClick={() => closeModal(onCancel)}\n >\n {resolvedCancelText}\n </Button>\n <Button\n type=\"primary\"\n className=\"col-span-3\"\n onClick={() => closeModal(onOk)}\n >\n {resolvedOkText}\n </Button>\n </div>\n ) : (\n <Button\n type=\"primary\"\n className={cn(\n 'grow',\n //\n )}\n onClick={() => closeModal(onOk)}\n >\n {resolvedOkText}\n </Button>\n );\n\n if (!isBrowser) {\n return null;\n }\n\n return createPortal(\n <Modal\n open={open}\n footer={footer}\n className={cn(\n 'z-10000',\n 'box-content w-100',\n 'rounded-3xl p-4',\n 'gap-y-0',\n )}\n classNames={{\n mask: 'z-10000 bg-black/[.6]',\n body: cn(\n 'text-black-70 whitespace-pre-wrap text-center',\n content && 'mt-3',\n ),\n footer: 'mt-9',\n }}\n title={\n <p\n className={cn(\n 'text-center text-lg leading-normal whitespace-pre-wrap',\n 'flex items-center justify-center gap-x-2',\n //\n )}\n >\n {icon ||\n (isConfirm ? STATIC_ICONS.confirm : status && STATIC_ICONS[status])}\n {title}\n </p>\n }\n container={container}\n onCancel={() => closeModal(onCancel)}\n {...props}\n onOpenChangeComplete={open => {\n if (!open) {\n modalStack.destroy(id);\n }\n\n onOpenChangeComplete?.(open);\n }}\n >\n {content}\n </Modal>,\n modalStack.getRootElement(container)!,\n );\n};\n\n// No `role`/`aria-modal` here — this element is only a mount point for the\n// imperative stack, not the dialog itself. Base UI already renders its own\n// `role=\"dialog\"`/`aria-modal=\"true\"` on the actual `DialogContent` via\n// portal once a modal is open. Setting it here as well would (a) leave\n// `aria-modal=\"true\"` on the page permanently, even with zero modals open,\n// hiding the rest of the document from screen readers, and (b) duplicate\n// Base UI's own dialog role once one is open.\nconst modalStack: ImperativeStack<StaticProps> =\n createImperativeStack<StaticProps>({\n createRootElement: () => {\n const el = document.createElement('div');\n el.style.zIndex = '10000';\n el.style.position = 'absolute';\n return el;\n },\n StackItem: StaticModal,\n });\n\n/** Immediately removes a modal without waiting for its closing animation. */\nModal.destroy = modalStack.destroy;\n\n/** Immediately removes all modals, including those currently closing. */\nModal.destroyAll = () => {\n modalStack.destroy();\n};\n\nModal.info = (props: StaticProps) =>\n modalStack.render({ status: 'info', ...props });\nModal.success = (props: StaticProps) =>\n modalStack.render({ status: 'success', ...props });\nModal.error = (props: StaticProps) =>\n modalStack.render({ status: 'error', ...props });\nModal.warning = (props: StaticProps) =>\n modalStack.render({ status: 'warning', ...props });\n// `confirm` is a mode, not a status, so it rides its own `mode` axis rather\n// than `status`.\nModal.confirm = (props: StaticProps) =>\n modalStack.render({ mode: 'confirm', ...props });\n\nexport default Modal;\n"],"mappings":";;;;;;;;;;;AAwBA,MAAM,EACJ,QACA,eACA,mBACA,cACA,cACA,gBACEA;AAgDJ,MAAM,SAAS,EACb,OAAO,OACP,cACA,WAAW,OACX,WACA,WACA,YACA,OACA,OACA,SACA,QACA,WACA,UACA,QACA,YACA,MACA,UACA,sBACA,GAAG,YACQ;CACX,MAAM,EAAE,QAAQ,iBAAiB,UAAU;CAC3C,MAAM,gBAAgB,cAAc;CAGpC,MAAM,uBACJ,gBAAgB,eAAe,gBAAgB;CAEjD,IAAI,OAAO,WAAW,aACpB,OAAO;CAGT,OACE,oBAAC,QAAD;EACQ;EACgB;EACtB,eAAe,SAAkB;GAC/B,IAAI,CAAC,MACH,WAAW;EAEf;EAIA,yBAAyB,CAAC;EAC1B,GAAI;EAEJ,UAAA,qBAAC,eAAD;GACE,WAAW,GACT,qCACA,4BACA,SACF;GACA,YAAY;IACV,GAAG;IACH,MAAM,GAAG,eAAe,YAAY,IAAI;GAC1C;GACO;GACG;GACC;GACA;GAbb,UAAA;IAuBE,qBAAC,cAAD;KACE,WAAW,GACT,YAAY,QACZ,CAAC,SAAS,QAEZ;KALF,UAAA,CAOE,oBAAC,aAAD,EAAA,UAAc,MAAmB,CAAA,GACjC,oBAAC,mBAAD,EAAmB,WAAU,SAAU,CAAA,CAC3B;;IACd,oBAAC,OAAD;KAAK,WAAW,GAAG,aAAa,YAAY,IAAI;KAC7C,UAAA,YAAY;IACV,CAAA;IACJ,WAAW,QACV,oBAAC,cAAD;KACE,WAAW,GAAG,gCAAgC,YAAY,MAAM;KAE/D,UAAA,UACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;MAAQ,SAAQ;MAAW,SAAS;MACjC,UAAA,cAAc,OAAO,UAAU,eAAe;KACzC,CAAA,GACR,oBAAC,QAAD;MAAQ,MAAK;MAAU,SAAS;MAC7B,UAAA,UAAU,OAAO,MAAM,eAAe;KACjC,CAAA,CACR,EAAA,CAAA;IAEQ,CAAA;GAEH;;CACT,CAAA;AAEZ;AAEA,MAAM,eAAe;CACnB,MAAM,oBAAC,MAAD,EAAM,WAAU,gBAAiB,CAAA;CACvC,SAAS,oBAAC,OAAD,EAAO,WAAU,iBAAkB,CAAA;CAC5C,OAAO,oBAAC,UAAD,EAAU,WAAU,eAAgB,CAAA;CAC3C,SAAS,oBAAC,cAAD,EAAc,WAAU,kBAAmB,CAAA;CACpD,SAAS,oBAAC,oBAAD,CAAqB,CAAA;AAChC;AAEA,MAAM,eAAe,EACnB,IACA,QACA,MACA,OACA,SACA,QACA,YACA,WACA,MACA,MACA,UACA,sBACA,GAAG,YACyD;CAC5D,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,CAAC,MAAM,WAAW,SAAS,IAAI;CACrC,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,iBAAiB,UAAU,OAAO,MAAM,eAAe;CAC7D,MAAM,qBACJ,cAAc,OAAO,UAAU,eAAe;CAGhD,MAAM,YAAY,SAAS;CAE3B,MAAM,cAAc,aAA0B;EAC5C,IAAI,QAAQ,SACV;EAGF,QAAQ,UAAU;EAClB,QAAQ,KAAK;EACb,WAAW;CACb;CAEA,MAAM,SAAS,YACb,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,oBAAC,QAAD;GACE,SAAQ;GACR,WAAU;GACV,eAAe,WAAW,QAAQ;GAEjC,UAAA;EACK,CAAA,GACR,oBAAC,QAAD;GACE,MAAK;GACL,WAAU;GACV,eAAe,WAAW,IAAI;GAE7B,UAAA;EACK,CAAA,CACL;CAEL,CAAA,IAAA,oBAAC,QAAD;EACE,MAAK;EACL,WAAW,GACT,MAEF;EACA,eAAe,WAAW,IAAI;EAE7B,UAAA;CACK,CAAA;CAGV,IAAI,CAAC,WACH,OAAO;CAGT,OAAO,aACL,oBAAC,OAAD;EACQ;EACE;EACR,WAAW,GACT,WACA,qBACA,mBACA,SACF;EACA,YAAY;GACV,MAAM;GACN,MAAM,GACJ,iDACA,WAAW,MACb;GACA,QAAQ;EACV;EACA,OACE,qBAAC,KAAD;GACE,WAAW,GACT,0DACA,0CAEF;GALF,UAAA,CAOG,SACE,YAAY,aAAa,UAAU,UAAU,aAAa,UAC5D,KACA;;EAEM;EACX,gBAAgB,WAAW,QAAQ;EACnC,GAAI;EACJ,uBAAsB,SAAQ;GAC5B,IAAI,CAAC,MACH,WAAW,QAAQ,EAAE;GAGvB,uBAAuB,IAAI;EAC7B;EAEC,UAAA;CACI,CAAA,GACP,WAAW,eAAe,SAAS,CACrC;AACF;AASA,MAAM,aACJ,sBAAmC;CACjC,yBAAyB;EACvB,MAAM,KAAK,SAAS,cAAc,KAAK;EACvC,GAAG,MAAM,SAAS;EAClB,GAAG,MAAM,WAAW;EACpB,OAAO;CACT;CACA,WAAW;AACb,CAAC;;AAGH,MAAM,UAAU,WAAW;;AAG3B,MAAM,mBAAmB;CACvB,WAAW,QAAQ;AACrB;AAEA,MAAM,QAAQ,UACZ,WAAW,OAAO;CAAE,QAAQ;CAAQ,GAAG;AAAM,CAAC;AAChD,MAAM,WAAW,UACf,WAAW,OAAO;CAAE,QAAQ;CAAW,GAAG;AAAM,CAAC;AACnD,MAAM,SAAS,UACb,WAAW,OAAO;CAAE,QAAQ;CAAS,GAAG;AAAM,CAAC;AACjD,MAAM,WAAW,UACf,WAAW,OAAO;CAAE,QAAQ;CAAW,GAAG;AAAM,CAAC;AAGnD,MAAM,WAAW,UACf,WAAW,OAAO;CAAE,MAAM;CAAW,GAAG;AAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/organisms/swiper/index.ts"],"mappings":";;;KAGK,yBAAyB;EAAe,cAAc;;cAErD,QAAuB"}
1
+ {"version":3,"file":"index.d.mts","names":["SwiperImpl"],"sources":["../../../../src/components/organisms/swiper/index.ts"],"mappings":";;;KAGK,yBAAyBA;EAAe,cAAc;;cAErD,QAAuB"}
@@ -2,7 +2,7 @@ import { SwiperProps } from "swiper/react";
2
2
  import "swiper/css";
3
3
  import { SwiperModule, SwiperOptions } from "swiper/types";
4
4
  //#region src/components/organisms/swiper/swiper.d.ts
5
- interface Props<T> extends SwiperProps {
5
+ export interface Props<T> extends SwiperProps {
6
6
  loading?: boolean;
7
7
  loader?: React.ReactNode;
8
8
  loadingClassName?: string;
@@ -27,5 +27,5 @@ interface Props<T> extends SwiperProps {
27
27
  }
28
28
  declare const Swiper$1: <T>({ loading, loader, options, modules, data, style, className, renderItem, loadingClassName, ...props }: Props<T>) => import("react").JSX.Element;
29
29
  //#endregion
30
- export { Props, Swiper$1 as default };
30
+ export { Swiper$1 as default };
31
31
  //# sourceMappingURL=swiper.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swiper.d.mts","names":[],"sources":["../../../../src/components/organisms/swiper/swiper.tsx"],"mappings":";;;;UA+BiB,MAAM,WAAW;EAChC;EACA,SAAS,MAAM;EACf;EACA,UAAU;;;;;;;;;;;;;;;EAeV,UAAU;EACV,MAAM;EACN,WAAW,MAAM,GAAG,cAAc,MAAM;;cAGpC,WAAU,KAAI,SAAA,QAAA,SAAA,SAAA,MAAA,OAAA,WAAA,YAAA,qBAAA,SAWjB,MAAM,uBAAE,IAAA"}
1
+ {"version":3,"file":"swiper.d.mts","names":["Swiper"],"sources":["../../../../src/components/organisms/swiper/swiper.tsx"],"mappings":";;;;iBA+BiB,MAAM,WAAW;EAChC;EACA,SAAS,MAAM;EACf;EACA,UAAU;;;;;;;;;;;;;;;EAeV,UAAU;EACV,MAAM;EACN,WAAW,MAAM,GAAG,cAAc,MAAM;;cAGpCA,WAAU,KAAI,SAAA,QAAA,SAAA,SAAA,MAAA,OAAA,WAAA,YAAA,qBAAA,SAWjB,MAAM,uBAAE,IAAA"}
@@ -1,6 +1,6 @@
1
1
  //#region src/components/organisms/toast.d.ts
2
2
  type ToastStatus = 'info' | 'success' | 'error' | 'warning';
3
- interface Props {
3
+ export interface Props {
4
4
  status?: ToastStatus;
5
5
  title: React.ReactNode;
6
6
  description?: React.ReactNode;
@@ -26,5 +26,5 @@ declare const Toast: {
26
26
  };
27
27
  type TriggerOptions = Omit<StaticProps, 'status' | 'title'>;
28
28
  //#endregion
29
- export { Props, type StaticProps as ToastOptions, Toast as default };
29
+ export { type StaticProps as ToastOptions, Toast as default };
30
30
  //# sourceMappingURL=toast.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.mts","names":[],"sources":["../../../src/components/organisms/toast.tsx"],"mappings":";KAkBK;UAEY;EACf,SAAS;EACT,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,OAAO,MAAM;EACb;EACA,SAAS,MAAM;EACf;EACA;;UAGQ,oBAAoB;EAC5B;EACA;EACA,YAAY;;cAUR;KASH,QAAA,OAAA,aAAA,MAAA,UAAA,QAAA,WAAA,WAAA,wBAAK,IAAA;;;EAqHa,KAAA,OAAA,MAAM,WAAS,QAAU;EAEtB,QAAA,OAAA,MAAM,WAAS,QAAU;EAE3B,MAAA,OAAA,MAAM,WAAS,QAAU;EAEvB,QAAA,OAAA,MAAM,WAAS,QAAU;;KAR5C,iBAAiB,KAAK"}
1
+ {"version":3,"file":"toast.d.mts","names":[],"sources":["../../../src/components/organisms/toast.tsx"],"mappings":";KAkBK;iBAEY;EACf,SAAS;EACT,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,OAAO,MAAM;EACb;EACA,SAAS,MAAM;EACf;EACA;;UAGQ,oBAAoB;EAC5B;EACA;EACA,YAAY;;cAUR;KASH,QAAA,OAAA,aAAA,MAAA,UAAA,QAAA,WAAA,WAAA,wBAAK,IAAA;;;EAqHa,KAAA,OAAA,MAAM,WAAS,QAAU;EAEtB,QAAA,OAAA,MAAM,WAAS,QAAU;EAE3B,MAAA,OAAA,MAAM,WAAS,QAAU;EAEvB,QAAA,OAAA,MAAM,WAAS,QAAU;;KAR5C,iBAAiB,KAAK"}
@@ -3,10 +3,10 @@ import { cn } from "../../utils.mjs";
3
3
  import { DEFAULT_LOCALE, useConfig } from "../../providers/config/context.mjs";
4
4
  import Button from "../../Button.mjs";
5
5
  import { createImperativeStack, isBrowser } from "./imperative-stack.mjs";
6
- import { Check, Info, OctagonAlert, OctagonX, X } from "lucide-react";
7
6
  import { useState } from "react";
8
7
  import { useTimeout } from "@jbpark/use-hooks";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { Check, Info, OctagonAlert, OctagonX, X } from "lucide-react";
10
10
  import { createPortal } from "react-dom";
11
11
  //#region src/components/organisms/toast.tsx
12
12
  const STATUS_ICONS = {
@@ -1,12 +1,12 @@
1
1
  import { useRender } from "@base-ui/react/use-render";
2
2
  //#region src/components/templates/container.d.ts
3
3
  type MaxWidth = '3xs' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | 'full' | 'none';
4
- interface Props extends Omit<useRender.ComponentProps<'div'>, 'className'> {
4
+ export interface Props extends Omit<useRender.ComponentProps<'div'>, 'className'> {
5
5
  maxWidth?: MaxWidth;
6
6
  padded?: boolean;
7
7
  className?: string;
8
8
  }
9
9
  declare const Container: ({ className, maxWidth, padded, render, ...props }: Props) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
10
10
  //#endregion
11
- export { Props, Container as default };
11
+ export { Container as default };
12
12
  //# sourceMappingURL=container.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.mts","names":[],"sources":["../../../src/components/templates/container.tsx"],"mappings":";;KAMK;UAmCY,cAAc,KAC7B,UAAU;EAGV,WAAW;EACX;EACA;;cAMI,cAAa,WAAA,UAAA,QAAA,WAAA,SAMhB,0BAAK,+CAAA"}
1
+ {"version":3,"file":"container.d.mts","names":[],"sources":["../../../src/components/templates/container.tsx"],"mappings":";;KAMK;iBAmCY,cAAc,KAC7B,UAAU;EAGV,WAAW;EACX;EACA;;cAMI,cAAa,WAAA,UAAA,QAAA,WAAA,SAMhB,0BAAK,+CAAA"}
@@ -1,5 +1,5 @@
1
1
  //#region src/components/templates/empty.d.ts
2
- interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
2
+ export interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
3
3
  icon?: React.ReactNode;
4
4
  title?: React.ReactNode;
5
5
  description?: React.ReactNode;
@@ -7,5 +7,5 @@ interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
7
7
  }
8
8
  declare const Empty: ({ icon, title, description, action, className, ...props }: Props) => import("react").JSX.Element;
9
9
  //#endregion
10
- export { Props, Empty as default };
10
+ export { Empty as default };
11
11
  //# sourceMappingURL=empty.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty.d.mts","names":[],"sources":["../../../src/components/templates/empty.tsx"],"mappings":";UAIiB,cAAc,KAAK,MAAM;EACxC,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,cAAc,MAAM;EACpB,SAAS,MAAM;;cAQX,UAAS,MAAA,OAAA,aAAA,QAAA,cAAA,SAOZ,0BAAK,IAAA"}
1
+ {"version":3,"file":"empty.d.mts","names":[],"sources":["../../../src/components/templates/empty.tsx"],"mappings":";iBAIiB,cAAc,KAAK,MAAM;EACxC,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,cAAc,MAAM;EACpB,SAAS,MAAM;;cAQX,UAAS,MAAA,OAAA,aAAA,QAAA,cAAA,SAOZ,0BAAK,IAAA"}
@@ -1,6 +1,6 @@
1
1
  import { cn } from "../../utils.mjs";
2
- import { Inbox } from "lucide-react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Inbox } from "lucide-react";
4
4
  //#region src/components/templates/empty.tsx
5
5
  const Empty = ({ icon, title, description = "No data", action, className, ...props }) => {
6
6
  return /* @__PURE__ */ jsxs("div", {
@@ -4,7 +4,7 @@ interface ResponsiveColSpan {
4
4
  offset?: number;
5
5
  }
6
6
  type ColSpanProp = number | ResponsiveColSpan;
7
- interface Props extends React.ComponentProps<'div'> {
7
+ export interface Props extends React.ComponentProps<'div'> {
8
8
  span?: number;
9
9
  offset?: number;
10
10
  xs?: ColSpanProp;
@@ -16,5 +16,5 @@ interface Props extends React.ComponentProps<'div'> {
16
16
  }
17
17
  declare const Col: ({ span, offset, xs, sm, md, lg, xl, "2xl": xxl, className, style, children, ...props }: Props) => import("react").JSX.Element;
18
18
  //#endregion
19
- export { Props, Col as default };
19
+ export { Col as default };
20
20
  //# sourceMappingURL=col.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"col.d.mts","names":[],"sources":["../../../../src/components/templates/grid/col.tsx"],"mappings":";UAUU;EACR;EACA;;KAGG,uBAAuB;UAEX,cAAc,MAAM;EACnC;EACA;EACA,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,QAAQ;;cAsDJ,QAAO,MAAA,QAAA,IAAA,IAAA,IAAA,IAAA,WAAA,KAAA,WAAA,OAAA,aAAA,SAaV,0BAAK,IAAA"}
1
+ {"version":3,"file":"col.d.mts","names":[],"sources":["../../../../src/components/templates/grid/col.tsx"],"mappings":";UAUU;EACR;EACA;;KAGG,uBAAuB;iBAEX,cAAc,MAAM;EACnC;EACA;EACA,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,QAAQ;;cAsDJ,QAAO,MAAA,QAAA,IAAA,IAAA,IAAA,IAAA,WAAA,KAAA,WAAA,OAAA,aAAA,SAaV,0BAAK,IAAA"}
@@ -13,7 +13,7 @@ declare const JUSTIFY_CLASSES: {
13
13
  'space-between': string;
14
14
  'space-evenly': string;
15
15
  };
16
- interface Props extends React.ComponentProps<'div'> {
16
+ export interface Props extends React.ComponentProps<'div'> {
17
17
  gutter?: number | [number, number];
18
18
  align?: keyof typeof ALIGN_CLASSES;
19
19
  justify?: keyof typeof JUSTIFY_CLASSES;
@@ -21,5 +21,5 @@ interface Props extends React.ComponentProps<'div'> {
21
21
  }
22
22
  declare const Row: ({ gutter, align, justify, wrap, className, style, children, ...props }: Props) => import("react").JSX.Element;
23
23
  //#endregion
24
- export { Props, Row as default };
24
+ export { Row as default };
25
25
  //# sourceMappingURL=row.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"row.d.mts","names":[],"sources":["../../../../src/components/templates/grid/row.tsx"],"mappings":";cAQM;;;;;;cAOA;;;;;;;;UASW,cAAc,MAAM;EACnC;EACA,qBAAqB;EACrB,uBAAuB;EACvB;;cAGI,QAAO,QAAA,OAAA,SAAA,MAAA,WAAA,OAAA,aAAA,SASV,0BAAK,IAAA"}
1
+ {"version":3,"file":"row.d.mts","names":[],"sources":["../../../../src/components/templates/grid/row.tsx"],"mappings":";cAQM;;;;;;cAOA;;;;;;;;iBASW,cAAc,MAAM;EACnC;EACA,qBAAqB;EACrB,uBAAuB;EACvB;;cAGI,QAAO,QAAA,OAAA,SAAA,MAAA,WAAA,OAAA,aAAA,SASV,0BAAK,IAAA"}
@@ -1,9 +1,9 @@
1
1
  import { useRender } from "@base-ui/react/use-render";
2
2
  //#region src/components/templates/layout/content.d.ts
3
- interface Props extends Omit<useRender.ComponentProps<'main'>, 'className'> {
3
+ export interface Props extends Omit<useRender.ComponentProps<'main'>, 'className'> {
4
4
  className?: string;
5
5
  }
6
6
  declare const Content: ({ children, className, render, ...props }: Props) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
7
7
  //#endregion
8
- export { Props, Content as default };
8
+ export { Content as default };
9
9
  //# sourceMappingURL=content.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.mts","names":[],"sources":["../../../../src/components/templates/layout/content.tsx"],"mappings":";;UAQiB,cAAc,KAC7B,UAAU;EAGV;;cAGI,YAAW,UAAA,WAAA,WAAA,SAA2C,0BAAK,+CAAA"}
1
+ {"version":3,"file":"content.d.mts","names":[],"sources":["../../../../src/components/templates/layout/content.tsx"],"mappings":";;iBAQiB,cAAc,KAC7B,UAAU;EAGV;;cAGI,YAAW,UAAA,WAAA,WAAA,SAA2C,0BAAK,+CAAA"}
@@ -1,6 +1,6 @@
1
1
  //#region src/components/templates/layout/footer.d.ts
2
- interface Props extends React.ComponentProps<'footer'> {}
2
+ export interface Props extends React.ComponentProps<'footer'> {}
3
3
  declare const Footer: ({ children, className, ...props }: Props) => import("react").JSX.Element;
4
4
  //#endregion
5
- export { Props, Footer as default };
5
+ export { Footer as default };
6
6
  //# sourceMappingURL=footer.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.mts","names":[],"sources":["../../../../src/components/templates/layout/footer.tsx"],"mappings":";UAEiB,cAAc,MAAM;cAE/B,WAAU,UAAA,cAAA,SAAmC,0BAAK,IAAA"}
1
+ {"version":3,"file":"footer.d.mts","names":[],"sources":["../../../../src/components/templates/layout/footer.tsx"],"mappings":";iBAEiB,cAAc,MAAM;cAE/B,WAAU,UAAA,cAAA,SAAmC,0BAAK,IAAA"}
@@ -1,8 +1,8 @@
1
1
  //#region src/components/templates/layout/header.d.ts
2
- interface Props extends React.ComponentProps<'header'> {
2
+ export interface Props extends React.ComponentProps<'header'> {
3
3
  position?: 'sticky' | 'static' | 'fixed';
4
4
  }
5
5
  declare const Header: ({ children, className, position, ...props }: Props) => import("react").JSX.Element;
6
6
  //#endregion
7
- export { Props, Header as default };
7
+ export { Header as default };
8
8
  //# sourceMappingURL=header.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.mts","names":[],"sources":["../../../../src/components/templates/layout/header.tsx"],"mappings":";UAIiB,cAAc,MAAM;EACnC;;cAGI,WAAU,UAAA,WAAA,aAAA,SAKb,0BAAK,IAAA"}
1
+ {"version":3,"file":"header.d.mts","names":[],"sources":["../../../../src/components/templates/layout/header.tsx"],"mappings":";iBAIiB,cAAc,MAAM;EACnC;;cAGI,WAAU,UAAA,WAAA,aAAA,SAKb,0BAAK,IAAA"}
@@ -1,6 +1,6 @@
1
1
  //#region src/components/templates/layout/layout.d.ts
2
- interface Props extends React.ComponentProps<'div'> {}
2
+ export interface Props extends React.ComponentProps<'div'> {}
3
3
  declare const Layout: ({ children, className, ...props }: Props) => import("react").JSX.Element;
4
4
  //#endregion
5
- export { Props, Layout as default };
5
+ export { Layout as default };
6
6
  //# sourceMappingURL=layout.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.mts","names":[],"sources":["../../../../src/components/templates/layout/layout.tsx"],"mappings":";UAciB,cAAc,MAAM;cAgB/B,WAAU,UAAA,cAAA,SAAmC,0BAAK,IAAA"}
1
+ {"version":3,"file":"layout.d.mts","names":[],"sources":["../../../../src/components/templates/layout/layout.tsx"],"mappings":";iBAciB,cAAc,MAAM;cAgB/B,WAAU,UAAA,cAAA,SAAmC,0BAAK,IAAA"}
@@ -1,6 +1,6 @@
1
1
  //#region src/components/templates/layout/sider.d.ts
2
2
  type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
3
- interface Props extends Omit<React.ComponentProps<'aside'>, 'onCollapse'> {
3
+ export interface Props extends Omit<React.ComponentProps<'aside'>, 'onCollapse'> {
4
4
  width?: number | string;
5
5
  collapsedWidth?: number | string;
6
6
  collapsible?: boolean;
@@ -18,5 +18,5 @@ interface Props extends Omit<React.ComponentProps<'aside'>, 'onCollapse'> {
18
18
  }
19
19
  declare const Sider: ({ children, className, classNames, style, width, collapsedWidth, collapsible, defaultCollapsed, collapsed: _collapsed, placement, reverseArrow, trigger, breakpoint, onCollapse, onBreakpoint, ...props }: Props) => import("react").JSX.Element;
20
20
  //#endregion
21
- export { Props, Sider as default };
21
+ export { Sider as default };
22
22
  //# sourceMappingURL=sider.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sider.d.mts","names":[],"sources":["../../../../src/components/templates/layout/sider.tsx"],"mappings":";KAYK;UAQY,cAAc,KAC7B,MAAM;EAGN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU,MAAM;EAChB;IACE;;EAEF,aAAa;EACb,cAAc;EACd,gBAAgB;;cAMZ,UAAS,UAAA,WAAA,YAAA,OAAA,OAAA,gBAAA,aAAA,kBAAA,WAAA,YAAA,WAAA,cAAA,SAAA,YAAA,YAAA,iBAAA,SAiBZ,0BAAK,IAAA"}
1
+ {"version":3,"file":"sider.d.mts","names":[],"sources":["../../../../src/components/templates/layout/sider.tsx"],"mappings":";KAYK;iBAQY,cAAc,KAC7B,MAAM;EAGN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU,MAAM;EAChB;IACE;;EAEF,aAAa;EACb,cAAc;EACd,gBAAgB;;cAMZ,UAAS,UAAA,WAAA,YAAA,OAAA,OAAA,gBAAA,aAAA,kBAAA,WAAA,YAAA,WAAA,cAAA,SAAA,YAAA,YAAA,iBAAA,SAiBZ,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 { useRegisterSider } from "./sider-context.mjs";
5
- import { PanelLeftClose, PanelLeftOpen } from "lucide-react";
6
5
  import { useEffect, useId, useRef } from "react";
7
6
  import { useControllableState, useResponsiveSize } from "@jbpark/use-hooks";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { PanelLeftClose, PanelLeftOpen } from "lucide-react";
9
9
  //#region src/components/templates/layout/sider.tsx
10
10
  const BREAKPOINT_ORDER = [
11
11
  "xs",
@@ -1,5 +1,5 @@
1
1
  //#region src/components/templates/page-header.d.ts
2
- interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
2
+ export interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
3
3
  title?: React.ReactNode;
4
4
  subTitle?: React.ReactNode;
5
5
  extra?: React.ReactNode;
@@ -14,5 +14,5 @@ interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
14
14
  }
15
15
  declare const PageHeader: ({ title, subTitle, extra, backIcon, onBack, className, classNames, children, ...props }: Props) => import("react").JSX.Element;
16
16
  //#endregion
17
- export { Props, PageHeader as default };
17
+ export { PageHeader as default };
18
18
  //# sourceMappingURL=page-header.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-header.d.mts","names":[],"sources":["../../../src/components/templates/page-header.tsx"],"mappings":";UASiB,cAAc,KAAK,MAAM;EACxC,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB;EACA;IACE;IACA;IACA;IACA;;;cAOE,eAAc,OAAA,UAAA,OAAA,UAAA,QAAA,WAAA,YAAA,aAAA,SAUjB,0BAAK,IAAA"}
1
+ {"version":3,"file":"page-header.d.mts","names":[],"sources":["../../../src/components/templates/page-header.tsx"],"mappings":";iBASiB,cAAc,KAAK,MAAM;EACxC,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB;EACA;IACE;IACA;IACA;IACA;;;cAOE,eAAc,OAAA,UAAA,OAAA,UAAA,QAAA,WAAA,YAAA,aAAA,SAUjB,0BAAK,IAAA"}
@@ -2,8 +2,8 @@
2
2
  import { cn } from "../../utils.mjs";
3
3
  import { DEFAULT_LOCALE, useConfig } from "../../providers/config/context.mjs";
4
4
  import Button from "../../Button.mjs";
5
- import { ArrowLeft } from "lucide-react";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { ArrowLeft } from "lucide-react";
7
7
  //#region src/components/templates/page-header.tsx
8
8
  const PageHeader = ({ title, subTitle, extra, backIcon, onBack, className, classNames, children, ...props }) => {
9
9
  const { locale } = useConfig();
@@ -1,6 +1,6 @@
1
1
  //#region src/components/templates/result.d.ts
2
2
  type Status = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500';
3
- interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
3
+ export interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
4
4
  status?: Status;
5
5
  icon?: React.ReactNode;
6
6
  title?: React.ReactNode;
@@ -9,5 +9,5 @@ interface Props extends Omit<React.ComponentProps<'div'>, 'title'> {
9
9
  }
10
10
  declare const Result: ({ status, icon, title, subTitle, extra, className, children, ...props }: Props) => import("react").JSX.Element;
11
11
  //#endregion
12
- export { Props, Result as default };
12
+ export { Result as default };
13
13
  //# sourceMappingURL=result.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.mts","names":[],"sources":["../../../src/components/templates/result.tsx"],"mappings":";KAYK;UAeY,cAAc,KAAK,MAAM;EACxC,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,QAAQ,MAAM;;cAMV,WAAU,QAAA,MAAA,OAAA,UAAA,OAAA,WAAA,aAAA,SASb,0BAAK,IAAA"}
1
+ {"version":3,"file":"result.d.mts","names":[],"sources":["../../../src/components/templates/result.tsx"],"mappings":";KAYK;iBAeY,cAAc,KAAK,MAAM;EACxC,SAAS;EACT,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,QAAQ,MAAM;;cAMV,WAAU,QAAA,MAAA,OAAA,UAAA,OAAA,WAAA,aAAA,SASb,0BAAK,IAAA"}
@@ -1,6 +1,6 @@
1
1
  import { cn } from "../../utils.mjs";
2
- import { Check, FileQuestion, Info, OctagonAlert, OctagonX, ServerCrash, ShieldAlert } from "lucide-react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Check, FileQuestion, Info, OctagonAlert, OctagonX, ServerCrash, ShieldAlert } from "lucide-react";
4
4
  //#region src/components/templates/result.tsx
5
5
  const STATUS_ICONS = {
6
6
  success: /* @__PURE__ */ jsx(Check, { className: "text-green-400" }),
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { __exportAll } from "../_virtual/_rolldown/runtime.mjs";
3
3
  import { cn } from "../utils.mjs";
4
- import { ChevronDownIcon } from "lucide-react";
5
4
  import "react";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
7
6
  import { Accordion } from "@base-ui/react/accordion";
7
+ import { ChevronDownIcon } from "lucide-react";
8
8
  //#region src/core/accordion.tsx
9
9
  var accordion_exports = /* @__PURE__ */ __exportAll({
10
10
  Accordion: () => Accordion$1,
@@ -0,0 +1,2 @@
1
+ import { ComponentProps } from "react";
2
+ import { Autocomplete } from "@base-ui/react/autocomplete";
@@ -0,0 +1,48 @@
1
+ "use client";
2
+ import { __exportAll } from "../_virtual/_rolldown/runtime.mjs";
3
+ import { cn } from "../utils.mjs";
4
+ import { useConfig } from "../providers/config/context.mjs";
5
+ import { OVERLAY_LAYER } from "../lib/z-layers.mjs";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { Autocomplete } from "@base-ui/react/autocomplete";
8
+ //#region src/core/autocomplete.tsx
9
+ var autocomplete_exports = /* @__PURE__ */ __exportAll({
10
+ Autocomplete: () => Autocomplete$1,
11
+ AutocompleteClear: () => AutocompleteClear,
12
+ AutocompleteContent: () => AutocompleteContent,
13
+ AutocompleteEmpty: () => AutocompleteEmpty,
14
+ AutocompleteInput: () => AutocompleteInput,
15
+ AutocompleteItem: () => AutocompleteItem,
16
+ AutocompleteList: () => AutocompleteList
17
+ });
18
+ const Autocomplete$1 = Autocomplete.Root;
19
+ const AutocompleteInput = Autocomplete.Input;
20
+ const AutocompleteClear = Autocomplete.Clear;
21
+ const AutocompleteList = Autocomplete.List;
22
+ const AutocompleteItem = Autocomplete.Item;
23
+ const AutocompleteEmpty = Autocomplete.Empty;
24
+ function AutocompleteContent({ container, className, ...props }) {
25
+ const { getContainer } = useConfig();
26
+ return /* @__PURE__ */ jsx(Autocomplete.Portal, {
27
+ container: container ?? getContainer(),
28
+ children: /* @__PURE__ */ jsx(Autocomplete.Positioner, {
29
+ side: "bottom",
30
+ align: "start",
31
+ sideOffset: 4,
32
+ className: cn(OVERLAY_LAYER, "w-(--anchor-width) max-w-(--available-width)"),
33
+ children: /* @__PURE__ */ jsx(Autocomplete.Popup, {
34
+ "data-slot": "autocomplete-content",
35
+ className: cn(`bg-popover text-popover-foreground max-h-(--available-height)
36
+ origin-(--transform-origin) overflow-hidden rounded-md border
37
+ shadow-md transition-[opacity,transform] duration-150
38
+ data-ending-style:scale-95 data-ending-style:opacity-0
39
+ data-starting-style:scale-95 data-starting-style:opacity-0`, className),
40
+ ...props
41
+ })
42
+ })
43
+ });
44
+ }
45
+ //#endregion
46
+ export { Autocomplete$1 as Autocomplete, AutocompleteClear, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, AutocompleteList, autocomplete_exports };
47
+
48
+ //# sourceMappingURL=autocomplete.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.mjs","names":["Autocomplete","Primitive"],"sources":["../../src/core/autocomplete.tsx"],"sourcesContent":["'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { Autocomplete as Primitive } from '@base-ui/react/autocomplete';\n\nimport { useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { OVERLAY_LAYER } from '../lib/z-layers';\n\nexport const Autocomplete = Primitive.Root;\nexport const AutocompleteInput = Primitive.Input;\nexport const AutocompleteClear = Primitive.Clear;\nexport const AutocompleteList = Primitive.List;\nexport const AutocompleteItem = Primitive.Item;\nexport const AutocompleteEmpty = Primitive.Empty;\n\nexport function AutocompleteContent({\n container,\n className,\n ...props\n}: ComponentProps<typeof Primitive.Popup> & { container?: HTMLElement }) {\n const { getContainer } = useConfig();\n\n return (\n <Primitive.Portal container={container ?? getContainer()}>\n <Primitive.Positioner\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n className={cn(\n OVERLAY_LAYER,\n 'w-(--anchor-width) max-w-(--available-width)', //\n )}\n >\n <Primitive.Popup\n data-slot=\"autocomplete-content\"\n className={cn(\n `bg-popover text-popover-foreground max-h-(--available-height)\n origin-(--transform-origin) overflow-hidden rounded-md border\n shadow-md transition-[opacity,transform] duration-150\n data-ending-style:scale-95 data-ending-style:opacity-0\n data-starting-style:scale-95 data-starting-style:opacity-0`,\n className, //\n )}\n {...props}\n />\n </Primitive.Positioner>\n </Primitive.Portal>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAWA,MAAaA,iBAAeC,aAAU;AACtC,MAAa,oBAAoBA,aAAU;AAC3C,MAAa,oBAAoBA,aAAU;AAC3C,MAAa,mBAAmBA,aAAU;AAC1C,MAAa,mBAAmBA,aAAU;AAC1C,MAAa,oBAAoBA,aAAU;AAE3C,SAAgB,oBAAoB,EAClC,WACA,WACA,GAAG,SACoE;CACvE,MAAM,EAAE,iBAAiB,UAAU;CAEnC,OACE,oBAACA,aAAU,QAAX;EAAkB,WAAW,aAAa,aAAa;EACrD,UAAA,oBAACA,aAAU,YAAX;GACE,MAAK;GACL,OAAM;GACN,YAAY;GACZ,WAAW,GACT,eACA,8CACF;GAEA,UAAA,oBAACA,aAAU,OAAX;IACE,aAAU;IACV,WAAW,GACT;;;;yEAKA,SACF;IACA,GAAI;GACL,CAAA;EACmB,CAAA;CACN,CAAA;AAEtB"}
@@ -1,13 +1,15 @@
1
1
  import { useRender } from "@base-ui/react/use-render";
2
2
  import { VariantProps } from "class-variance-authority";
3
- //#region src/core/badge.d.ts
3
+ declare namespace badge_d_exports {
4
+ export { Badge, Props, badgeVariants };
5
+ }
4
6
  declare const badgeVariants: (props?: ({
5
- variant?: "link" | "outline" | "default" | "secondary" | "destructive" | "ghost" | null | undefined;
7
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
6
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
9
  type Props = Omit<useRender.ComponentProps<'span'>, 'className'> & VariantProps<typeof badgeVariants> & {
8
10
  className?: string;
9
11
  };
10
12
  declare function Badge({ className, variant, render, ...props }: Props): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
11
13
  //#endregion
12
- export { Badge, type Props, badgeVariants };
14
+ export { Badge, type Props, badgeVariants, badge_d_exports };
13
15
  //# sourceMappingURL=badge.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.mts","names":[],"sources":["../../src/core/badge.tsx"],"mappings":";;;cAUM,gBAAa;;6CA0BlB;KAEI,QAAQ,KAAK,UAAU,uCAC1B,oBAAoB;EAClB;;iBAGK,QAAQ,WAAW,SAAqB,WAAW,SAAS,wBAAK,+CAAA"}
1
+ {"version":3,"file":"badge.d.mts","names":[],"sources":["../../src/core/badge.tsx"],"mappings":";;;;;cAUM,gBAAa;;6CA0BlB;KAEI,QAAQ,KAAK,UAAU,uCAC1B,oBAAoB;EAClB;;iBAGK,QAAQ,WAAW,SAAqB,WAAW,SAAS,wBAAK,+CAAA"}