@jbpark/ui-kit 5.2.0 → 5.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 (399) hide show
  1. package/dist/Button.d.mts +1 -19
  2. package/dist/Button.d.mts.map +1 -1
  3. package/dist/Button.mjs +2 -4
  4. package/dist/Button.mjs.map +1 -1
  5. package/dist/Card.d.mts +1 -10
  6. package/dist/Card.d.mts.map +1 -1
  7. package/dist/Card.mjs +1 -2
  8. package/dist/Card.mjs.map +1 -1
  9. package/dist/Layout.d.mts +5 -6
  10. package/dist/Layout.d.mts.map +1 -1
  11. package/dist/Layout.mjs +1 -2
  12. package/dist/Layout.mjs.map +1 -1
  13. package/dist/Menu.d.mts +1 -1
  14. package/dist/Menu.mjs +1 -2
  15. package/dist/Reveals.d.mts +2 -3
  16. package/dist/Reveals.d.mts.map +1 -1
  17. package/dist/Reveals.mjs +1 -2
  18. package/dist/Reveals.mjs.map +1 -1
  19. package/dist/Space.d.mts +1 -17
  20. package/dist/Space.d.mts.map +1 -1
  21. package/dist/Space.mjs +1 -2
  22. package/dist/Space.mjs.map +1 -1
  23. package/dist/Tag.d.mts +1 -9
  24. package/dist/Tag.d.mts.map +1 -1
  25. package/dist/Tag.mjs +1 -2
  26. package/dist/Tag.mjs.map +1 -1
  27. package/dist/Typography.d.mts +5 -6
  28. package/dist/Typography.d.mts.map +1 -1
  29. package/dist/Typography.mjs +1 -2
  30. package/dist/Typography.mjs.map +1 -1
  31. package/dist/_virtual/_rolldown/runtime.mjs +6 -11
  32. package/dist/components/atoms/checkbox/checkbox.d.mts +2 -17
  33. package/dist/components/atoms/checkbox/checkbox.d.mts.map +1 -1
  34. package/dist/components/atoms/checkbox/checkbox.mjs +2 -4
  35. package/dist/components/atoms/checkbox/checkbox.mjs.map +1 -1
  36. package/dist/components/atoms/checkbox/group.d.mts +2 -16
  37. package/dist/components/atoms/checkbox/group.d.mts.map +1 -1
  38. package/dist/components/atoms/checkbox/group.mjs +4 -5
  39. package/dist/components/atoms/checkbox/group.mjs.map +1 -1
  40. package/dist/components/atoms/checkbox/index.d.mts +3 -4
  41. package/dist/components/atoms/checkbox/index.d.mts.map +1 -1
  42. package/dist/components/atoms/checkbox/index.mjs +1 -2
  43. package/dist/components/atoms/checkbox/index.mjs.map +1 -1
  44. package/dist/components/atoms/color-picker.d.mts +2 -15
  45. package/dist/components/atoms/color-picker.d.mts.map +1 -1
  46. package/dist/components/atoms/color-picker.mjs +2 -4
  47. package/dist/components/atoms/color-picker.mjs.map +1 -1
  48. package/dist/components/atoms/date-picker.d.mts +2 -11
  49. package/dist/components/atoms/date-picker.d.mts.map +1 -1
  50. package/dist/components/atoms/date-picker.mjs +2 -4
  51. package/dist/components/atoms/date-picker.mjs.map +1 -1
  52. package/dist/components/atoms/float-button/back-top.d.mts +2 -10
  53. package/dist/components/atoms/float-button/back-top.d.mts.map +1 -1
  54. package/dist/components/atoms/float-button/back-top.mjs +4 -5
  55. package/dist/components/atoms/float-button/back-top.mjs.map +1 -1
  56. package/dist/components/atoms/float-button/float-button.d.mts +2 -8
  57. package/dist/components/atoms/float-button/float-button.d.mts.map +1 -1
  58. package/dist/components/atoms/float-button/float-button.mjs +1 -2
  59. package/dist/components/atoms/float-button/float-button.mjs.map +1 -1
  60. package/dist/components/atoms/float-button/index.d.mts +3 -4
  61. package/dist/components/atoms/float-button/index.d.mts.map +1 -1
  62. package/dist/components/atoms/float-button/index.mjs +1 -2
  63. package/dist/components/atoms/float-button/index.mjs.map +1 -1
  64. package/dist/components/atoms/index.d.mts +13 -12
  65. package/dist/components/atoms/input/index.d.mts +4 -5
  66. package/dist/components/atoms/input/index.d.mts.map +1 -1
  67. package/dist/components/atoms/input/index.mjs +2 -3
  68. package/dist/components/atoms/input/index.mjs.map +1 -1
  69. package/dist/components/atoms/input/input.d.mts +2 -7
  70. package/dist/components/atoms/input/input.d.mts.map +1 -1
  71. package/dist/components/atoms/input/input.mjs +1 -2
  72. package/dist/components/atoms/input/input.mjs.map +1 -1
  73. package/dist/components/atoms/input/search.d.mts +2 -15
  74. package/dist/components/atoms/input/search.d.mts.map +1 -1
  75. package/dist/components/atoms/input/search.mjs +2 -4
  76. package/dist/components/atoms/input/search.mjs.map +1 -1
  77. package/dist/components/atoms/input/text-area.d.mts +2 -8
  78. package/dist/components/atoms/input/text-area.d.mts.map +1 -1
  79. package/dist/components/atoms/input/text-area.mjs +1 -2
  80. package/dist/components/atoms/input/text-area.mjs.map +1 -1
  81. package/dist/components/atoms/option-group.d.mts +1 -1
  82. package/dist/components/atoms/option-group.d.mts.map +1 -1
  83. package/dist/components/atoms/option-group.mjs +1 -1
  84. package/dist/components/atoms/option-group.mjs.map +1 -1
  85. package/dist/components/atoms/popover.d.mts +2 -14
  86. package/dist/components/atoms/popover.d.mts.map +1 -1
  87. package/dist/components/atoms/popover.mjs +1 -2
  88. package/dist/components/atoms/popover.mjs.map +1 -1
  89. package/dist/components/atoms/progress.d.mts +2 -10
  90. package/dist/components/atoms/progress.d.mts.map +1 -1
  91. package/dist/components/atoms/progress.mjs +1 -2
  92. package/dist/components/atoms/progress.mjs.map +1 -1
  93. package/dist/components/atoms/radio/context.mjs +2 -4
  94. package/dist/components/atoms/radio/context.mjs.map +1 -1
  95. package/dist/components/atoms/radio/group.d.mts +2 -19
  96. package/dist/components/atoms/radio/group.d.mts.map +1 -1
  97. package/dist/components/atoms/radio/group.mjs +2 -4
  98. package/dist/components/atoms/radio/group.mjs.map +1 -1
  99. package/dist/components/atoms/radio/index.d.mts +3 -4
  100. package/dist/components/atoms/radio/index.d.mts.map +1 -1
  101. package/dist/components/atoms/radio/index.mjs +1 -2
  102. package/dist/components/atoms/radio/index.mjs.map +1 -1
  103. package/dist/components/atoms/radio/radio.d.mts +2 -18
  104. package/dist/components/atoms/radio/radio.d.mts.map +1 -1
  105. package/dist/components/atoms/radio/radio.mjs +2 -4
  106. package/dist/components/atoms/radio/radio.mjs.map +1 -1
  107. package/dist/components/atoms/select.d.mts +2 -10
  108. package/dist/components/atoms/select.d.mts.map +1 -1
  109. package/dist/components/atoms/select.mjs +2 -3
  110. package/dist/components/atoms/select.mjs.map +1 -1
  111. package/dist/components/atoms/skeleton/button.d.mts +2 -7
  112. package/dist/components/atoms/skeleton/button.d.mts.map +1 -1
  113. package/dist/components/atoms/skeleton/button.mjs +1 -2
  114. package/dist/components/atoms/skeleton/button.mjs.map +1 -1
  115. package/dist/components/atoms/skeleton/index.d.mts +4 -5
  116. package/dist/components/atoms/skeleton/index.d.mts.map +1 -1
  117. package/dist/components/atoms/skeleton/index.mjs +2 -3
  118. package/dist/components/atoms/skeleton/index.mjs.map +1 -1
  119. package/dist/components/atoms/skeleton/node.d.mts +2 -7
  120. package/dist/components/atoms/skeleton/node.d.mts.map +1 -1
  121. package/dist/components/atoms/skeleton/node.mjs +1 -2
  122. package/dist/components/atoms/skeleton/node.mjs.map +1 -1
  123. package/dist/components/atoms/skeleton/skeleton.d.mts +2 -20
  124. package/dist/components/atoms/skeleton/skeleton.d.mts.map +1 -1
  125. package/dist/components/atoms/skeleton/skeleton.mjs +2 -4
  126. package/dist/components/atoms/skeleton/skeleton.mjs.map +1 -1
  127. package/dist/components/atoms/spin.d.mts +2 -10
  128. package/dist/components/atoms/spin.d.mts.map +1 -1
  129. package/dist/components/atoms/spin.mjs +2 -4
  130. package/dist/components/atoms/spin.mjs.map +1 -1
  131. package/dist/components/atoms/switch.d.mts +2 -14
  132. package/dist/components/atoms/switch.d.mts.map +1 -1
  133. package/dist/components/atoms/switch.mjs +2 -4
  134. package/dist/components/atoms/switch.mjs.map +1 -1
  135. package/dist/components/atoms/typography/link.d.mts +2 -10
  136. package/dist/components/atoms/typography/link.d.mts.map +1 -1
  137. package/dist/components/atoms/typography/link.mjs +1 -2
  138. package/dist/components/atoms/typography/link.mjs.map +1 -1
  139. package/dist/components/atoms/typography/paragraph.d.mts +2 -8
  140. package/dist/components/atoms/typography/paragraph.d.mts.map +1 -1
  141. package/dist/components/atoms/typography/paragraph.mjs +1 -2
  142. package/dist/components/atoms/typography/paragraph.mjs.map +1 -1
  143. package/dist/components/atoms/typography/text.d.mts +2 -10
  144. package/dist/components/atoms/typography/text.d.mts.map +1 -1
  145. package/dist/components/atoms/typography/text.mjs +1 -2
  146. package/dist/components/atoms/typography/text.mjs.map +1 -1
  147. package/dist/components/atoms/typography/title.d.mts +2 -9
  148. package/dist/components/atoms/typography/title.d.mts.map +1 -1
  149. package/dist/components/atoms/typography/title.mjs +1 -2
  150. package/dist/components/atoms/typography/title.mjs.map +1 -1
  151. package/dist/components/atoms/typography/typography.d.mts +2 -7
  152. package/dist/components/atoms/typography/typography.d.mts.map +1 -1
  153. package/dist/components/atoms/typography/typography.mjs +1 -2
  154. package/dist/components/atoms/typography/typography.mjs.map +1 -1
  155. package/dist/components/molecules/collapse.d.mts +2 -14
  156. package/dist/components/molecules/collapse.d.mts.map +1 -1
  157. package/dist/components/molecules/collapse.mjs +4 -6
  158. package/dist/components/molecules/collapse.mjs.map +1 -1
  159. package/dist/components/molecules/dropdown.d.mts +2 -15
  160. package/dist/components/molecules/dropdown.d.mts.map +1 -1
  161. package/dist/components/molecules/dropdown.mjs +2 -4
  162. package/dist/components/molecules/dropdown.mjs.map +1 -1
  163. package/dist/components/molecules/index.d.mts +7 -7
  164. package/dist/components/molecules/marquees/index.d.mts +3 -4
  165. package/dist/components/molecules/marquees/index.d.mts.map +1 -1
  166. package/dist/components/molecules/marquees/index.mjs +2 -3
  167. package/dist/components/molecules/marquees/index.mjs.map +1 -1
  168. package/dist/components/molecules/marquees/item.d.mts +2 -11
  169. package/dist/components/molecules/marquees/item.d.mts.map +1 -1
  170. package/dist/components/molecules/marquees/item.mjs +12 -10
  171. package/dist/components/molecules/marquees/item.mjs.map +1 -1
  172. package/dist/components/molecules/marquees/marquees.d.mts +2 -11
  173. package/dist/components/molecules/marquees/marquees.d.mts.map +1 -1
  174. package/dist/components/molecules/marquees/marquees.mjs +5 -5
  175. package/dist/components/molecules/marquees/marquees.mjs.map +1 -1
  176. package/dist/components/molecules/menu/item/item.mjs +2 -4
  177. package/dist/components/molecules/menu/item/item.mjs.map +1 -1
  178. package/dist/components/molecules/menu/item/label.mjs +1 -2
  179. package/dist/components/molecules/menu/item/label.mjs.map +1 -1
  180. package/dist/components/molecules/menu/menu.d.mts +2 -17
  181. package/dist/components/molecules/menu/menu.d.mts.map +1 -1
  182. package/dist/components/molecules/menu/menu.mjs +2 -4
  183. package/dist/components/molecules/menu/menu.mjs.map +1 -1
  184. package/dist/components/molecules/reveals/item.d.mts +2 -15
  185. package/dist/components/molecules/reveals/item.d.mts.map +1 -1
  186. package/dist/components/molecules/reveals/item.mjs +2 -4
  187. package/dist/components/molecules/reveals/item.mjs.map +1 -1
  188. package/dist/components/molecules/reveals/reveals.d.mts +2 -18
  189. package/dist/components/molecules/reveals/reveals.d.mts.map +1 -1
  190. package/dist/components/molecules/reveals/reveals.mjs +2 -3
  191. package/dist/components/molecules/reveals/reveals.mjs.map +1 -1
  192. package/dist/components/molecules/splitter/index.d.mts +3 -4
  193. package/dist/components/molecules/splitter/index.d.mts.map +1 -1
  194. package/dist/components/molecules/splitter/index.mjs +1 -2
  195. package/dist/components/molecules/splitter/index.mjs.map +1 -1
  196. package/dist/components/molecules/splitter/panel.d.mts +2 -8
  197. package/dist/components/molecules/splitter/panel.d.mts.map +1 -1
  198. package/dist/components/molecules/splitter/panel.mjs +1 -2
  199. package/dist/components/molecules/splitter/panel.mjs.map +1 -1
  200. package/dist/components/molecules/splitter/splitter.d.mts +2 -14
  201. package/dist/components/molecules/splitter/splitter.d.mts.map +1 -1
  202. package/dist/components/molecules/splitter/splitter.mjs +2 -4
  203. package/dist/components/molecules/splitter/splitter.mjs.map +1 -1
  204. package/dist/components/molecules/upload.d.mts +2 -15
  205. package/dist/components/molecules/upload.d.mts.map +1 -1
  206. package/dist/components/molecules/upload.mjs +2 -4
  207. package/dist/components/molecules/upload.mjs.map +1 -1
  208. package/dist/components/organisms/drawer.d.mts +2 -25
  209. package/dist/components/organisms/drawer.d.mts.map +1 -1
  210. package/dist/components/organisms/drawer.mjs +2 -4
  211. package/dist/components/organisms/drawer.mjs.map +1 -1
  212. package/dist/components/organisms/imperative-stack.mjs +2 -4
  213. package/dist/components/organisms/imperative-stack.mjs.map +1 -1
  214. package/dist/components/organisms/index.d.mts +6 -5
  215. package/dist/components/organisms/list/index.d.mts +3 -4
  216. package/dist/components/organisms/list/index.d.mts.map +1 -1
  217. package/dist/components/organisms/list/index.mjs +1 -2
  218. package/dist/components/organisms/list/index.mjs.map +1 -1
  219. package/dist/components/organisms/list/item.d.mts +2 -8
  220. package/dist/components/organisms/list/item.d.mts.map +1 -1
  221. package/dist/components/organisms/list/item.mjs +1 -2
  222. package/dist/components/organisms/list/item.mjs.map +1 -1
  223. package/dist/components/organisms/list/list.d.mts +3 -20
  224. package/dist/components/organisms/list/list.d.mts.map +1 -1
  225. package/dist/components/organisms/list/list.mjs +3 -5
  226. package/dist/components/organisms/list/list.mjs.map +1 -1
  227. package/dist/components/organisms/modal.d.mts +2 -22
  228. package/dist/components/organisms/modal.d.mts.map +1 -1
  229. package/dist/components/organisms/modal.mjs +3 -5
  230. package/dist/components/organisms/modal.mjs.map +1 -1
  231. package/dist/components/organisms/swiper/index.d.mts +3 -4
  232. package/dist/components/organisms/swiper/index.d.mts.map +1 -1
  233. package/dist/components/organisms/swiper/index.mjs +2 -3
  234. package/dist/components/organisms/swiper/index.mjs.map +1 -1
  235. package/dist/components/organisms/swiper/slide.d.mts +2 -8
  236. package/dist/components/organisms/swiper/slide.d.mts.map +1 -1
  237. package/dist/components/organisms/swiper/slide.mjs +2 -4
  238. package/dist/components/organisms/swiper/slide.mjs.map +1 -1
  239. package/dist/components/organisms/swiper/swiper.d.mts +2 -15
  240. package/dist/components/organisms/swiper/swiper.d.mts.map +1 -1
  241. package/dist/components/organisms/swiper/swiper.mjs +2 -4
  242. package/dist/components/organisms/swiper/swiper.mjs.map +1 -1
  243. package/dist/components/organisms/toast.d.mts +2 -13
  244. package/dist/components/organisms/toast.d.mts.map +1 -1
  245. package/dist/components/organisms/toast.mjs +2 -4
  246. package/dist/components/organisms/toast.mjs.map +1 -1
  247. package/dist/components/templates/container.d.mts +2 -10
  248. package/dist/components/templates/container.d.mts.map +1 -1
  249. package/dist/components/templates/container.mjs +1 -2
  250. package/dist/components/templates/container.mjs.map +1 -1
  251. package/dist/components/templates/empty.d.mts +2 -11
  252. package/dist/components/templates/empty.d.mts.map +1 -1
  253. package/dist/components/templates/empty.mjs +1 -2
  254. package/dist/components/templates/empty.mjs.map +1 -1
  255. package/dist/components/templates/grid/col.d.mts +2 -17
  256. package/dist/components/templates/grid/col.d.mts.map +1 -1
  257. package/dist/components/templates/grid/col.mjs +2 -4
  258. package/dist/components/templates/grid/col.mjs.map +1 -1
  259. package/dist/components/templates/grid/row-context.mjs +1 -2
  260. package/dist/components/templates/grid/row-context.mjs.map +1 -1
  261. package/dist/components/templates/grid/row.d.mts +2 -13
  262. package/dist/components/templates/grid/row.d.mts.map +1 -1
  263. package/dist/components/templates/grid/row.mjs +2 -4
  264. package/dist/components/templates/grid/row.mjs.map +1 -1
  265. package/dist/components/templates/layout/content.d.mts +2 -9
  266. package/dist/components/templates/layout/content.d.mts.map +1 -1
  267. package/dist/components/templates/layout/content.mjs +1 -2
  268. package/dist/components/templates/layout/content.mjs.map +1 -1
  269. package/dist/components/templates/layout/footer.d.mts +2 -8
  270. package/dist/components/templates/layout/footer.d.mts.map +1 -1
  271. package/dist/components/templates/layout/footer.mjs +1 -2
  272. package/dist/components/templates/layout/footer.mjs.map +1 -1
  273. package/dist/components/templates/layout/header.d.mts +2 -9
  274. package/dist/components/templates/layout/header.d.mts.map +1 -1
  275. package/dist/components/templates/layout/header.mjs +1 -2
  276. package/dist/components/templates/layout/header.mjs.map +1 -1
  277. package/dist/components/templates/layout/layout.d.mts +2 -8
  278. package/dist/components/templates/layout/layout.d.mts.map +1 -1
  279. package/dist/components/templates/layout/layout.mjs +1 -2
  280. package/dist/components/templates/layout/layout.mjs.map +1 -1
  281. package/dist/components/templates/layout/sider-context.mjs +1 -2
  282. package/dist/components/templates/layout/sider-context.mjs.map +1 -1
  283. package/dist/components/templates/layout/sider.d.mts +2 -21
  284. package/dist/components/templates/layout/sider.d.mts.map +1 -1
  285. package/dist/components/templates/layout/sider.mjs +2 -4
  286. package/dist/components/templates/layout/sider.mjs.map +1 -1
  287. package/dist/components/templates/page-header.d.mts +2 -14
  288. package/dist/components/templates/page-header.d.mts.map +1 -1
  289. package/dist/components/templates/page-header.mjs +2 -4
  290. package/dist/components/templates/page-header.mjs.map +1 -1
  291. package/dist/components/templates/result.d.mts +2 -13
  292. package/dist/components/templates/result.d.mts.map +1 -1
  293. package/dist/components/templates/result.mjs +1 -2
  294. package/dist/components/templates/result.mjs.map +1 -1
  295. package/dist/core/accordion.d.mts +5 -22
  296. package/dist/core/accordion.d.mts.map +1 -1
  297. package/dist/core/accordion.mjs +3 -5
  298. package/dist/core/accordion.mjs.map +1 -1
  299. package/dist/core/badge.d.mts +4 -13
  300. package/dist/core/badge.d.mts.map +1 -1
  301. package/dist/core/badge.mjs +2 -3
  302. package/dist/core/badge.mjs.map +1 -1
  303. package/dist/core/button.d.mts +5 -15
  304. package/dist/core/button.d.mts.map +1 -1
  305. package/dist/core/button.mjs +1 -2
  306. package/dist/core/button.mjs.map +1 -1
  307. package/dist/core/calendar.d.mts +4 -21
  308. package/dist/core/calendar.d.mts.map +1 -1
  309. package/dist/core/calendar.mjs +3 -5
  310. package/dist/core/calendar.mjs.map +1 -1
  311. package/dist/core/checkbox.d.mts +2 -8
  312. package/dist/core/checkbox.d.mts.map +1 -1
  313. package/dist/core/checkbox.mjs +3 -5
  314. package/dist/core/checkbox.mjs.map +1 -1
  315. package/dist/core/dialog.d.mts +12 -48
  316. package/dist/core/dialog.d.mts.map +1 -1
  317. package/dist/core/dialog.mjs +3 -5
  318. package/dist/core/dialog.mjs.map +1 -1
  319. package/dist/core/drawer.d.mts +11 -46
  320. package/dist/core/drawer.d.mts.map +1 -1
  321. package/dist/core/drawer.mjs +3 -5
  322. package/dist/core/drawer.mjs.map +1 -1
  323. package/dist/core/field.d.mts +15 -54
  324. package/dist/core/field.d.mts.map +1 -1
  325. package/dist/core/field.mjs +3 -5
  326. package/dist/core/field.mjs.map +1 -1
  327. package/dist/core/input.d.mts +2 -9
  328. package/dist/core/input.d.mts.map +1 -1
  329. package/dist/core/input.mjs +2 -3
  330. package/dist/core/input.mjs.map +1 -1
  331. package/dist/core/label.d.mts +1 -7
  332. package/dist/core/label.d.mts.map +1 -1
  333. package/dist/core/label.mjs +2 -4
  334. package/dist/core/label.mjs.map +1 -1
  335. package/dist/core/popover.d.mts +9 -33
  336. package/dist/core/popover.d.mts.map +1 -1
  337. package/dist/core/popover.mjs +3 -5
  338. package/dist/core/popover.mjs.map +1 -1
  339. package/dist/core/progress.d.mts +2 -11
  340. package/dist/core/progress.d.mts.map +1 -1
  341. package/dist/core/progress.mjs +3 -5
  342. package/dist/core/progress.mjs.map +1 -1
  343. package/dist/core/radio-group.d.mts +4 -15
  344. package/dist/core/radio-group.d.mts.map +1 -1
  345. package/dist/core/radio-group.mjs +3 -5
  346. package/dist/core/radio-group.mjs.map +1 -1
  347. package/dist/core/resizable.d.mts +5 -17
  348. package/dist/core/resizable.d.mts.map +1 -1
  349. package/dist/core/resizable.mjs +3 -5
  350. package/dist/core/resizable.mjs.map +1 -1
  351. package/dist/core/select.d.mts +13 -50
  352. package/dist/core/select.d.mts.map +1 -1
  353. package/dist/core/select.mjs +3 -5
  354. package/dist/core/select.mjs.map +1 -1
  355. package/dist/core/separator.d.mts +2 -10
  356. package/dist/core/separator.d.mts.map +1 -1
  357. package/dist/core/separator.mjs +2 -4
  358. package/dist/core/separator.mjs.map +1 -1
  359. package/dist/core/skeleton.d.mts +2 -8
  360. package/dist/core/skeleton.d.mts.map +1 -1
  361. package/dist/core/skeleton.mjs +2 -3
  362. package/dist/core/skeleton.mjs.map +1 -1
  363. package/dist/core/switch.d.mts +3 -12
  364. package/dist/core/switch.d.mts.map +1 -1
  365. package/dist/core/switch.mjs +3 -5
  366. package/dist/core/switch.mjs.map +1 -1
  367. package/dist/core/textarea.d.mts +2 -8
  368. package/dist/core/textarea.d.mts.map +1 -1
  369. package/dist/core/textarea.mjs +2 -3
  370. package/dist/core/textarea.mjs.map +1 -1
  371. package/dist/core.mjs +1 -2
  372. package/dist/index.d.mts +31 -33
  373. package/dist/index.mjs +2 -3
  374. package/dist/providers/config/config.d.mts +2 -14
  375. package/dist/providers/config/config.d.mts.map +1 -1
  376. package/dist/providers/config/config.mjs +5 -6
  377. package/dist/providers/config/config.mjs.map +1 -1
  378. package/dist/providers/config/context.d.mts +0 -2
  379. package/dist/providers/config/context.d.mts.map +1 -1
  380. package/dist/providers/config/context.mjs +2 -4
  381. package/dist/providers/config/context.mjs.map +1 -1
  382. package/dist/providers/config/registry.d.mts +2 -7
  383. package/dist/providers/config/registry.d.mts.map +1 -1
  384. package/dist/providers/config/registry.mjs +2 -4
  385. package/dist/providers/config/registry.mjs.map +1 -1
  386. package/dist/providers/config/types.d.mts.map +1 -1
  387. package/dist/providers.d.mts +1 -2
  388. package/dist/providers.mjs +1 -2
  389. package/dist/style.css +1051 -1755
  390. package/dist/utils.d.mts +0 -1
  391. package/dist/utils.d.mts.map +1 -1
  392. package/dist/utils.mjs +1 -2
  393. package/dist/utils.mjs.map +1 -1
  394. package/package.json +29 -28
  395. package/dist/components/templates/grid/index.d.mts +0 -2
  396. package/dist/components/templates/index.d.mts +0 -13
  397. package/dist/providers/config/index.d.mts +0 -4
  398. package/dist/style.css.map +0 -1
  399. package/dist/style.mjs +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"search.mjs","names":["input","Search","SearchOutlined"],"sources":["../../../../src/components/atoms/input/search.tsx"],"sourcesContent":["'use client';\n\nimport { useRef, useState } from 'react';\n\nimport { useMergedRef } from '@jbpark/use-hooks';\nimport { CircleX, Search as SearchOutlined } from 'lucide-react';\n\nimport { input } from '@repo/ui/core';\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport Button from '../button';\n\nconst { Input: Core } = input;\n\nexport interface Props extends React.ComponentPropsWithRef<'input'> {\n allowClear?: boolean;\n onChange?: (\n e: React.ChangeEvent<HTMLInputElement> | { target: { value: string } },\n ) => void;\n onSearch?: (value: string) => void;\n}\n\nconst Search = ({\n ref,\n className,\n defaultValue,\n value,\n disabled,\n allowClear = true,\n onChange,\n onKeyDown: _onKeyDown,\n onSearch: _onSearch,\n ...props\n}: Props) => {\n const { locale } = useConfig();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const mergedRef = useMergedRef(inputRef, ref);\n\n const [uncontrolledHasValue, setUncontrolledHasValue] =\n useState(!!defaultValue);\n const hasValue = value !== undefined ? !!value : uncontrolledHasValue;\n\n const onClear = () => {\n if (!inputRef.current) {\n return;\n }\n\n if (value === undefined) {\n inputRef.current.value = '';\n setUncontrolledHasValue(false);\n }\n\n onChange?.({ target: { value: '' } });\n };\n\n const onSearch = () => {\n if (disabled) {\n return;\n }\n if (inputRef.current) {\n _onSearch?.(inputRef.current.value);\n }\n };\n\n return (\n <div\n className={cn(\n 'flex items-center',\n 'rounded-md',\n className,\n //\n )}\n >\n <div\n className={cn(\n 'relative grow',\n 'inline-flex items-center',\n //\n )}\n >\n <Core\n {...props}\n ref={mergedRef}\n inputMode=\"search\"\n type=\"search\"\n enterKeyHint=\"search\"\n disabled={disabled}\n className={cn(\n 'rounded-r-none',\n '[&::-webkit-search-cancel-button]:hidden',\n '[&::-webkit-search-decoration]:hidden',\n //\n )}\n value={value}\n defaultValue={defaultValue}\n onChange={e => {\n if (value === undefined) {\n setUncontrolledHasValue(!!e.target.value);\n }\n onChange?.(e);\n }}\n onKeyDown={e => {\n _onKeyDown?.(e);\n if (e.key === 'Enter') {\n onSearch();\n }\n }}\n />\n <button\n type=\"button\"\n aria-label={locale.clear ?? DEFAULT_LOCALE.clear}\n disabled={disabled}\n className={cn(\n 'absolute right-2',\n 'shrink-0 cursor-pointer',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n (!allowClear || !hasValue) && 'hidden',\n )}\n onClick={onClear}\n >\n <CircleX className=\"size-4\" />\n </button>\n </div>\n <Button\n icon={<SearchOutlined />}\n disabled={disabled}\n className={cn(\n 'rounded-l-none',\n 'size-9',\n //\n )}\n onClick={onSearch}\n />\n </div>\n );\n};\n\nSearch.displayName = 'Search';\n\nexport default Search;\n"],"mappings":";;;;;;;;;;;;AAaA,MAAM,EAAE,OAAO,SAASA;AAUxB,MAAMC,YAAU,EACd,KACA,WACA,cACA,OACA,UACA,aAAa,MACb,UACA,WAAW,YACX,UAAU,WACV,GAAG,YACQ;CACX,MAAM,EAAE,WAAW,WAAW;CAC9B,MAAM,WAAW,OAAyB,KAAK;CAE/C,MAAM,YAAY,aAAa,UAAU,IAAI;CAE7C,MAAM,CAAC,sBAAsB,2BAC3B,SAAS,CAAC,CAAC,aAAa;CAC1B,MAAM,WAAW,UAAU,SAAY,CAAC,CAAC,QAAQ;CAEjD,MAAM,gBAAgB;AACpB,MAAI,CAAC,SAAS,QACZ;AAGF,MAAI,UAAU,QAAW;AACvB,YAAS,QAAQ,QAAQ;AACzB,2BAAwB,MAAM;;AAGhC,aAAW,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;;CAGvC,MAAM,iBAAiB;AACrB,MAAI,SACF;AAEF,MAAI,SAAS,QACX,aAAY,SAAS,QAAQ,MAAM;;AAIvC,QACE,qBAAC;EACC,WAAW,GACT,qBACA,cACA,UAED;aAED,qBAAC;GACC,WAAW,GACT,iBACA,2BAED;cAED,oBAAC;IACC,GAAI;IACJ,KAAK;IACL,WAAU;IACV,MAAK;IACL,cAAa;IACH;IACV,WAAW,GACT,kBACA,4CACA,wCAED;IACM;IACO;IACd,WAAU,MAAK;AACb,SAAI,UAAU,OACZ,yBAAwB,CAAC,CAAC,EAAE,OAAO,MAAM;AAE3C,gBAAW,EAAE;;IAEf,YAAW,MAAK;AACd,kBAAa,EAAE;AACf,SAAI,EAAE,QAAQ,QACZ,WAAU;;KAGd,EACF,oBAAC;IACC,MAAK;IACL,cAAY,OAAO,SAAS,eAAe;IACjC;IACV,WAAW,GACT,oBACA,2BACA,oDACC,CAAC,cAAc,CAAC,aAAa,SAC/B;IACD,SAAS;cAET,oBAAC,WAAQ,WAAU,WAAW;KACvB;IACL,EACN,oBAAC;GACC,MAAM,oBAACC,WAAiB;GACd;GACV,WAAW,GACT,kBACA,SAED;GACD,SAAS;IACT;GACE;;AAIV,SAAO,cAAc"}
1
+ {"version":3,"file":"search.mjs","names":["input","Search","SearchOutlined"],"sources":["../../../../src/components/atoms/input/search.tsx"],"sourcesContent":["'use client';\n\nimport { useRef, useState } from 'react';\n\nimport { useMergedRef } from '@jbpark/use-hooks';\nimport { CircleX, Search as SearchOutlined } from 'lucide-react';\n\nimport { input } from '@repo/ui/core';\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport Button from '../button';\n\nconst { Input: Core } = input;\n\nexport interface Props extends React.ComponentPropsWithRef<'input'> {\n allowClear?: boolean;\n onChange?: (\n e: React.ChangeEvent<HTMLInputElement> | { target: { value: string } },\n ) => void;\n onSearch?: (value: string) => void;\n}\n\nconst Search = ({\n ref,\n className,\n defaultValue,\n value,\n disabled,\n allowClear = true,\n onChange,\n onKeyDown: _onKeyDown,\n onSearch: _onSearch,\n ...props\n}: Props) => {\n const { locale } = useConfig();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const mergedRef = useMergedRef(inputRef, ref);\n\n const [uncontrolledHasValue, setUncontrolledHasValue] =\n useState(!!defaultValue);\n const hasValue = value !== undefined ? !!value : uncontrolledHasValue;\n\n const onClear = () => {\n if (!inputRef.current) {\n return;\n }\n\n if (value === undefined) {\n inputRef.current.value = '';\n setUncontrolledHasValue(false);\n }\n\n onChange?.({ target: { value: '' } });\n };\n\n const onSearch = () => {\n if (disabled) {\n return;\n }\n if (inputRef.current) {\n _onSearch?.(inputRef.current.value);\n }\n };\n\n return (\n <div\n className={cn(\n 'flex items-center',\n 'rounded-md',\n className,\n //\n )}\n >\n <div\n className={cn(\n 'relative grow',\n 'inline-flex items-center',\n //\n )}\n >\n <Core\n {...props}\n ref={mergedRef}\n inputMode=\"search\"\n type=\"search\"\n enterKeyHint=\"search\"\n disabled={disabled}\n className={cn(\n 'rounded-r-none',\n '[&::-webkit-search-cancel-button]:hidden',\n '[&::-webkit-search-decoration]:hidden',\n //\n )}\n value={value}\n defaultValue={defaultValue}\n onChange={e => {\n if (value === undefined) {\n setUncontrolledHasValue(!!e.target.value);\n }\n onChange?.(e);\n }}\n onKeyDown={e => {\n _onKeyDown?.(e);\n if (e.key === 'Enter') {\n onSearch();\n }\n }}\n />\n <button\n type=\"button\"\n aria-label={locale.clear ?? DEFAULT_LOCALE.clear}\n disabled={disabled}\n className={cn(\n 'absolute right-2',\n 'shrink-0 cursor-pointer',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n (!allowClear || !hasValue) && 'hidden',\n )}\n onClick={onClear}\n >\n <CircleX className=\"size-4\" />\n </button>\n </div>\n <Button\n icon={<SearchOutlined />}\n disabled={disabled}\n className={cn(\n 'rounded-l-none',\n 'size-9',\n //\n )}\n onClick={onSearch}\n />\n </div>\n );\n};\n\nSearch.displayName = 'Search';\n\nexport default Search;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,EAAE,OAAO,SAASA;AAUxB,MAAMC,YAAU,EACd,KACA,WACA,cACA,OACA,UACA,aAAa,MACb,UACA,WAAW,YACX,UAAU,WACV,GAAG,YACQ;CACX,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,WAAW,OAAyB,IAAI;CAE9C,MAAM,YAAY,aAAa,UAAU,GAAG;CAE5C,MAAM,CAAC,sBAAsB,2BAC3B,SAAS,CAAC,CAAC,YAAY;CACzB,MAAM,WAAW,UAAU,KAAA,IAAY,CAAC,CAAC,QAAQ;CAEjD,MAAM,gBAAgB;EACpB,IAAI,CAAC,SAAS,SACZ;EAGF,IAAI,UAAU,KAAA,GAAW;GACvB,SAAS,QAAQ,QAAQ;GACzB,wBAAwB,KAAK;EAC/B;EAEA,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,CAAC;CACtC;CAEA,MAAM,iBAAiB;EACrB,IAAI,UACF;EAEF,IAAI,SAAS,SACX,YAAY,SAAS,QAAQ,KAAK;CAEtC;CAEA,OACE,qBAAC,OAAD;EACE,WAAW,GACT,qBACA,cACA,SAEF;EANF,UAAA,CAQE,qBAAC,OAAD;GACE,WAAW,GACT,iBACA,0BAEF;GALF,UAAA,CAOE,oBAAC,MAAD;IACE,GAAI;IACJ,KAAK;IACL,WAAU;IACV,MAAK;IACL,cAAa;IACH;IACV,WAAW,GACT,kBACA,4CACA,uCAEF;IACO;IACO;IACd,WAAU,MAAK;KACb,IAAI,UAAU,KAAA,GACZ,wBAAwB,CAAC,CAAC,EAAE,OAAO,KAAK;KAE1C,WAAW,CAAC;IACd;IACA,YAAW,MAAK;KACd,aAAa,CAAC;KACd,IAAI,EAAE,QAAQ,SACZ,SAAS;IAEb;GACD,CAAA,GACD,oBAAC,UAAD;IACE,MAAK;IACL,cAAY,OAAO,SAAS,eAAe;IACjC;IACV,WAAW,GACT,oBACA,2BACA,oDACC,CAAC,cAAc,CAAC,aAAa,QAChC;IACA,SAAS;IAET,UAAA,oBAAC,SAAD,EAAS,WAAU,SAAU,CAAA;GACvB,CAAA,CACL;EACL,CAAA,GAAA,oBAAC,QAAD;GACE,MAAM,oBAACC,QAAD,CAAiB,CAAA;GACb;GACV,WAAW,GACT,kBACA,QAEF;GACA,SAAS;EACV,CAAA,CACE;;AAET;AAEA,SAAO,cAAc"}
@@ -1,11 +1,5 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components/atoms/input/text-area.d.ts
4
- declare const TextArea: ({
5
- className,
6
- ref,
7
- ...props
8
- }: React.ComponentPropsWithRef<"textarea">) => react_jsx_runtime0.JSX.Element;
2
+ declare const TextArea: ({ className, ref, ...props }: React.ComponentPropsWithRef<"textarea">) => import("react").JSX.Element;
9
3
  //#endregion
10
- export { TextArea };
4
+ export { TextArea as default };
11
5
  //# sourceMappingURL=text-area.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-area.d.mts","names":[],"sources":["../../../../src/components/atoms/input/text-area.tsx"],"mappings":";;;cAKM,QAAA;EAAY,SAAA;EAAA,GAAA;EAAA,GAAA;AAAA,GAIf,KAAA,CAAM,qBAAA,iBAAiC,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"text-area.d.mts","names":[],"sources":["../../../../src/components/atoms/input/text-area.tsx"],"mappings":";cAKM,aAAY,WAAA,QAAA,SAIf,MAAM,sDAAiC,IAAA"}
@@ -1,7 +1,6 @@
1
1
  import { cn } from "../../../utils.mjs";
2
2
  import { textarea_exports } from "../../../core/textarea.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
-
5
4
  //#region src/components/atoms/input/text-area.tsx
6
5
  const { Textarea: Core } = textarea_exports;
7
6
  const TextArea = ({ className, ref, ...props }) => {
@@ -11,7 +10,7 @@ const TextArea = ({ className, ref, ...props }) => {
11
10
  ...props
12
11
  });
13
12
  };
14
-
15
13
  //#endregion
16
14
  export { TextArea as default };
15
+
17
16
  //# sourceMappingURL=text-area.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-area.mjs","names":["textarea"],"sources":["../../../../src/components/atoms/input/text-area.tsx"],"sourcesContent":["import { textarea } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nconst { Textarea: Core } = textarea;\n\nconst TextArea = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithRef<'textarea'>) => {\n return (\n <Core\n ref={ref}\n className={cn(\n className,\n //\n )}\n {...props}\n />\n );\n};\n\nexport default TextArea;\n"],"mappings":";;;;;AAGA,MAAM,EAAE,UAAU,SAASA;AAE3B,MAAM,YAAY,EAChB,WACA,KACA,GAAG,YAC0C;AAC7C,QACE,oBAAC;EACM;EACL,WAAW,GACT,UAED;EACD,GAAI;GACJ"}
1
+ {"version":3,"file":"text-area.mjs","names":["textarea"],"sources":["../../../../src/components/atoms/input/text-area.tsx"],"sourcesContent":["import { textarea } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nconst { Textarea: Core } = textarea;\n\nconst TextArea = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithRef<'textarea'>) => {\n return (\n <Core\n ref={ref}\n className={cn(\n className,\n //\n )}\n {...props}\n />\n );\n};\n\nexport default TextArea;\n"],"mappings":";;;;AAGA,MAAM,EAAE,UAAU,SAASA;AAE3B,MAAM,YAAY,EAChB,WACA,KACA,GAAG,YAC0C;CAC7C,OACE,oBAAC,MAAD;EACO;EACL,WAAW,GACT,SAEF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -11,5 +11,5 @@ interface OptionGroupClassNames {
11
11
  item?: string;
12
12
  }
13
13
  //#endregion
14
- export { OptionGroupClassNames, OptionValue, Options };
14
+ export { Option, OptionGroupClassNames, OptionValue, Options };
15
15
  //# sourceMappingURL=option-group.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"option-group.d.mts","names":[],"sources":["../../../src/components/atoms/option-group.ts"],"mappings":";KAAY,WAAA;AAAA,UAEK,MAAA;EACf,KAAA;EACA,KAAA,EAAO,WAAA;EACP,QAAA;AAAA;AAAA,KAGU,OAAA,qCAA4C,MAAA;AAAA,UAEvC,qBAAA;EACf,OAAA;EACA,IAAA;AAAA"}
1
+ {"version":3,"file":"option-group.d.mts","names":[],"sources":["../../../src/components/atoms/option-group.ts"],"mappings":";KAAY;UAEK;EACf;EACA,OAAO;EACP;;KAGU,4CAA4C;UAEvC;EACf;EACA"}
@@ -13,7 +13,7 @@ const warnOnDuplicateOptionValues = (options, componentName) => {
13
13
  }
14
14
  if (duplicates.size > 0) console.warn(`${componentName}: duplicate option value(s) [${[...duplicates].map((v) => JSON.stringify(v)).join(", ")}] — options sharing a value render as if selecting one selects all of them, since selection is matched by value.`);
15
15
  };
16
-
17
16
  //#endregion
18
17
  export { normalizeOptions, warnOnDuplicateOptionValues };
18
+
19
19
  //# sourceMappingURL=option-group.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"option-group.mjs","names":[],"sources":["../../../src/components/atoms/option-group.ts"],"sourcesContent":["export type OptionValue = string | number | boolean;\n\nexport interface Option {\n label: string;\n value: OptionValue;\n disabled?: boolean;\n}\n\nexport type Options = string[] | number[] | boolean[] | Option[];\n\nexport interface OptionGroupClassNames {\n wrapper?: string;\n item?: string;\n}\n\nexport const normalizeOptions = (options: Options): Option[] =>\n options.map(item =>\n typeof item === 'object'\n ? item\n : {\n label: `${item}`,\n value: item,\n },\n );\n\n// Radio.Group/Checkbox.Group both key selection off `value` (Radix's\n// RadioGroup matches items by it, and Checkbox.Group tests membership via\n// `value.includes(...)`), so two options sharing a value aren't just a\n// React list-key collision — they become indistinguishable to the\n// component's own selection logic, e.g. both rendering aria-checked=true\n// together. A duplicate is virtually always a caller mistake (two radios\n// for the \"same\" value can't be meaningfully different choices), so warn\n// instead of silently accepting it.\nexport const warnOnDuplicateOptionValues = (\n options: Option[],\n componentName: string,\n) => {\n const nodeEnv = (globalThis as { process?: { env?: { NODE_ENV?: string } } })\n .process?.env?.NODE_ENV;\n\n if (nodeEnv === 'production') {\n return;\n }\n\n const seen = new Set<OptionValue>();\n const duplicates = new Set<OptionValue>();\n\n for (const option of options) {\n if (seen.has(option.value)) {\n duplicates.add(option.value);\n }\n seen.add(option.value);\n }\n\n if (duplicates.size > 0) {\n console.warn(\n `${componentName}: duplicate option value(s) [${[...duplicates].map(v => JSON.stringify(v)).join(', ')}] — options sharing a value render as if selecting one selects all of them, since selection is matched by value.`,\n );\n }\n};\n"],"mappings":";AAeA,MAAa,oBAAoB,YAC/B,QAAQ,KAAI,SACV,OAAO,SAAS,WACZ,OACA;CACE,OAAO,GAAG;CACV,OAAO;CACR,CACN;AAUH,MAAa,+BACX,SACA,kBACG;AAIH,KAHiB,WACd,SAAS,KAAK,aAED,aACd;CAGF,MAAM,uBAAO,IAAI,KAAkB;CACnC,MAAM,6BAAa,IAAI,KAAkB;AAEzC,MAAK,MAAM,UAAU,SAAS;AAC5B,MAAI,KAAK,IAAI,OAAO,MAAM,CACxB,YAAW,IAAI,OAAO,MAAM;AAE9B,OAAK,IAAI,OAAO,MAAM;;AAGxB,KAAI,WAAW,OAAO,EACpB,SAAQ,KACN,GAAG,cAAc,+BAA+B,CAAC,GAAG,WAAW,CAAC,KAAI,MAAK,KAAK,UAAU,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,kHACxG"}
1
+ {"version":3,"file":"option-group.mjs","names":[],"sources":["../../../src/components/atoms/option-group.ts"],"sourcesContent":["export type OptionValue = string | number | boolean;\n\nexport interface Option {\n label: string;\n value: OptionValue;\n disabled?: boolean;\n}\n\nexport type Options = string[] | number[] | boolean[] | Option[];\n\nexport interface OptionGroupClassNames {\n wrapper?: string;\n item?: string;\n}\n\nexport const normalizeOptions = (options: Options): Option[] =>\n options.map(item =>\n typeof item === 'object'\n ? item\n : {\n label: `${item}`,\n value: item,\n },\n );\n\n// Radio.Group/Checkbox.Group both key selection off `value` (Radix's\n// RadioGroup matches items by it, and Checkbox.Group tests membership via\n// `value.includes(...)`), so two options sharing a value aren't just a\n// React list-key collision — they become indistinguishable to the\n// component's own selection logic, e.g. both rendering aria-checked=true\n// together. A duplicate is virtually always a caller mistake (two radios\n// for the \"same\" value can't be meaningfully different choices), so warn\n// instead of silently accepting it.\nexport const warnOnDuplicateOptionValues = (\n options: Option[],\n componentName: string,\n) => {\n const nodeEnv = (globalThis as { process?: { env?: { NODE_ENV?: string } } })\n .process?.env?.NODE_ENV;\n\n if (nodeEnv === 'production') {\n return;\n }\n\n const seen = new Set<OptionValue>();\n const duplicates = new Set<OptionValue>();\n\n for (const option of options) {\n if (seen.has(option.value)) {\n duplicates.add(option.value);\n }\n seen.add(option.value);\n }\n\n if (duplicates.size > 0) {\n console.warn(\n `${componentName}: duplicate option value(s) [${[...duplicates].map(v => JSON.stringify(v)).join(', ')}] — options sharing a value render as if selecting one selects all of them, since selection is matched by value.`,\n );\n }\n};\n"],"mappings":";AAeA,MAAa,oBAAoB,YAC/B,QAAQ,KAAI,SACV,OAAO,SAAS,WACZ,OACA;CACE,OAAO,GAAG;CACV,OAAO;AACT,CACN;AAUF,MAAa,+BACX,SACA,kBACG;CAIH,IAHiB,WACd,SAAS,KAAK,aAED,cACd;CAGF,MAAM,uBAAO,IAAI,IAAiB;CAClC,MAAM,6BAAa,IAAI,IAAiB;CAExC,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,KAAK,IAAI,OAAO,KAAK,GACvB,WAAW,IAAI,OAAO,KAAK;EAE7B,KAAK,IAAI,OAAO,KAAK;CACvB;CAEA,IAAI,WAAW,OAAO,GACpB,QAAQ,KACN,GAAG,cAAc,+BAA+B,CAAC,GAAG,UAAU,CAAC,CAAC,KAAI,MAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,iHACzG;AAEJ"}
@@ -1,5 +1,3 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components/atoms/popover.d.ts
4
2
  type Placement = 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
5
3
  interface Props extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title' | 'content'> {
@@ -10,17 +8,7 @@ interface Props extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title' | 'c
10
8
  defaultOpen?: boolean;
11
9
  onOpenChange?: (open: boolean) => void;
12
10
  }
13
- declare const Popover: ({
14
- title,
15
- placement,
16
- className,
17
- content,
18
- children,
19
- open: _open,
20
- defaultOpen,
21
- onOpenChange,
22
- ...props
23
- }: Props) => react_jsx_runtime0.JSX.Element;
11
+ declare const Popover: ({ title, placement, className, content, children, open: _open, defaultOpen, onOpenChange, ...props }: Props) => import("react").JSX.Element;
24
12
  //#endregion
25
- export { Popover };
13
+ export { Props, Popover as default };
26
14
  //# sourceMappingURL=popover.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover.d.mts","names":[],"sources":["../../../src/components/atoms/popover.tsx"],"mappings":";;;KASK,SAAA;AAAA,UAcY,KAAA,SAAc,IAAA,CAC7B,KAAA,CAAM,wBAAA;EAGN,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,SAAA,GAAY,SAAA;EACZ,OAAA,EAAS,KAAA,CAAM,SAAA;EACf,IAAA;EACA,WAAA;EACA,YAAA,IAAgB,IAAA;AAAA;AAAA,cA6JZ,OAAA;EAAW,KAAA;EAAA,SAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,IAAA,EAAA,KAAA;EAAA,WAAA;EAAA,YAAA;EAAA,GAAA;AAAA,GAUd,KAAA,KAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"popover.d.mts","names":[],"sources":["../../../src/components/atoms/popover.tsx"],"mappings":";KASK;UAcY,cAAc,KAC7B,MAAM;EAGN,QAAQ,MAAM;EACd,YAAY;EACZ,SAAS,MAAM;EACf;EACA;EACA,gBAAgB;;cA6JZ,YAAW,OAAA,WAAA,WAAA,SAAA,UAAA,MAAA,OAAA,aAAA,iBAAA,SAUd,0BAAK,IAAA"}
@@ -3,7 +3,6 @@ import { popover_exports } from "../../core/popover.mjs";
3
3
  import Typography from "../../Typography.mjs";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { useControllableState } from "@jbpark/use-hooks";
6
-
7
6
  //#region src/components/atoms/popover.tsx
8
7
  const { Popover: CorePopover, PopoverContent, PopoverTrigger } = popover_exports;
9
8
  const placementMap = {
@@ -190,7 +189,7 @@ const Popover = ({ title, placement = "top", className, content, children, open:
190
189
  })]
191
190
  });
192
191
  };
193
-
194
192
  //#endregion
195
193
  export { Popover as default };
194
+
196
195
  //# sourceMappingURL=popover.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover.mjs","names":["popover"],"sources":["../../../src/components/atoms/popover.tsx"],"sourcesContent":["import { useControllableState } from '@jbpark/use-hooks';\n\nimport { popover } from '@repo/ui/core';\nimport { cn, renderConditional } from '@repo/ui/utils';\n\nimport Typography from './typography';\n\nconst { Popover: CorePopover, PopoverContent, PopoverTrigger } = popover;\n\ntype Placement =\n | 'top'\n | 'left'\n | 'right'\n | 'bottom'\n | 'topLeft'\n | 'topRight'\n | 'bottomLeft'\n | 'bottomRight'\n | 'leftTop'\n | 'leftBottom'\n | 'rightTop'\n | 'rightBottom';\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'title' | 'content'\n> {\n title?: React.ReactNode;\n placement?: Placement;\n content: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\ntype Side = 'top' | 'bottom' | 'left' | 'right';\ntype Align = 'start' | 'center' | 'end';\n\nconst placementMap: Record<Placement, { side: Side; align: Align }> = {\n top: { side: 'top', align: 'center' },\n left: { side: 'left', align: 'center' },\n right: { side: 'right', align: 'center' },\n bottom: { side: 'bottom', align: 'center' },\n topLeft: { side: 'top', align: 'start' },\n topRight: { side: 'top', align: 'end' },\n bottomLeft: { side: 'bottom', align: 'start' },\n bottomRight: { side: 'bottom', align: 'end' },\n leftTop: { side: 'left', align: 'start' },\n leftBottom: { side: 'left', align: 'end' },\n rightTop: { side: 'right', align: 'start' },\n rightBottom: { side: 'right', align: 'end' },\n};\n\nconst beforeBase = 'before:content-[\"\"] before:absolute before:h-0 before:w-0';\nconst afterBase = 'after:content-[\"\"] after:absolute after:h-0 after:w-0';\n\nconst vBorderShape =\n 'before:border-l-[9px] before:border-r-[9px] before:border-l-transparent before:border-r-transparent';\nconst hBorderShape =\n 'before:border-t-[9px] before:border-b-[9px] before:border-t-transparent before:border-b-transparent';\nconst vFillShape =\n 'after:border-l-8 after:border-r-8 after:border-l-transparent after:border-r-transparent';\nconst hFillShape =\n 'after:border-t-8 after:border-b-8 after:border-t-transparent after:border-b-transparent';\n\n// Top/bottom placements draw a vertical-edge triangle (border-l/border-r) —\n// the arrow points up/down, so its left/right edges form the point. Left/\n// right placements draw the horizontal-edge equivalent.\nconst borderShapeBySide: Record<Side, string> = {\n top: vBorderShape,\n bottom: vBorderShape,\n left: hBorderShape,\n right: hBorderShape,\n};\nconst fillShapeBySide: Record<Side, string> = {\n top: vFillShape,\n bottom: vFillShape,\n left: hFillShape,\n right: hFillShape,\n};\nconst borderColorBySide: Record<Side, string> = {\n top: 'before:border-t-[9px] before:border-t-border',\n bottom: 'before:border-b-[9px] before:border-b-border',\n left: 'before:border-l-[9px] before:border-l-border',\n right: 'before:border-r-[9px] before:border-r-border',\n};\nconst fillColorBySide: Record<Side, string> = {\n top: 'after:border-t-8 after:border-t-popover',\n bottom: 'after:border-b-8 after:border-b-popover',\n left: 'after:border-l-8 after:border-l-popover',\n right: 'after:border-r-8 after:border-r-popover',\n};\n\n// Tailwind v4 only extracts class candidates that appear as *literal*\n// strings in source — none of these ever do if built via\n// `` `${side}-full` `` style interpolation, so they'd silently never make\n// it into the generated CSS. This table exists purely so every class the\n// arrow can need appears literally somewhere in this file.\nconst POSITION_CLASSES: Record<\n Side,\n Record<Align, { wrapper: string; before: string; after: string }>\n> = {\n top: {\n start: {\n wrapper: 'top-full left-4',\n before: 'before:top-0 before:left-0',\n after: 'after:-top-px after:left-px',\n },\n center: {\n wrapper: 'top-full left-1/2 -translate-x-1/2',\n before: 'before:top-0 before:left-1/2 before:-translate-x-1/2',\n after: 'after:-top-px after:left-1/2 after:-translate-x-1/2',\n },\n end: {\n wrapper: 'top-full right-4',\n before: 'before:top-0 before:right-0',\n after: 'after:-top-px after:right-px',\n },\n },\n bottom: {\n start: {\n wrapper: 'bottom-full left-4',\n before: 'before:bottom-0 before:left-0',\n after: 'after:-bottom-px after:left-px',\n },\n center: {\n wrapper: 'bottom-full left-1/2 -translate-x-1/2',\n before: 'before:bottom-0 before:left-1/2 before:-translate-x-1/2',\n after: 'after:-bottom-px after:left-1/2 after:-translate-x-1/2',\n },\n end: {\n wrapper: 'bottom-full right-4',\n before: 'before:bottom-0 before:right-0',\n after: 'after:-bottom-px after:right-px',\n },\n },\n left: {\n start: {\n wrapper: 'left-full top-4',\n before: 'before:left-0 before:top-0',\n after: 'after:-left-px after:top-px',\n },\n center: {\n wrapper: 'left-full top-1/2 -translate-y-1/2',\n before: 'before:left-0 before:top-1/2 before:-translate-y-1/2',\n after: 'after:-left-px after:top-1/2 after:-translate-y-1/2',\n },\n end: {\n wrapper: 'left-full bottom-4',\n before: 'before:left-0 before:bottom-0',\n after: 'after:-left-px after:bottom-px',\n },\n },\n right: {\n start: {\n wrapper: 'right-full top-4',\n before: 'before:right-0 before:top-0',\n after: 'after:-right-px after:top-px',\n },\n center: {\n wrapper: 'right-full top-1/2 -translate-y-1/2',\n before: 'before:right-0 before:top-1/2 before:-translate-y-1/2',\n after: 'after:-right-px after:top-1/2 after:-translate-y-1/2',\n },\n end: {\n wrapper: 'right-full bottom-4',\n before: 'before:right-0 before:bottom-0',\n after: 'after:-right-px after:bottom-px',\n },\n },\n};\n\nconst getArrowClassName = (side: Side, align: Align) => {\n const { wrapper, before, after } = POSITION_CLASSES[side][align];\n\n return cn(\n 'absolute',\n wrapper,\n beforeBase,\n before,\n borderShapeBySide[side],\n borderColorBySide[side],\n afterBase,\n after,\n fillShapeBySide[side],\n fillColorBySide[side],\n );\n};\n\nconst Popover = ({\n title,\n placement = 'top',\n className,\n content,\n children,\n open: _open,\n defaultOpen,\n onOpenChange,\n ...props\n}: Props) => {\n const [open, setOpen] = useControllableState<boolean>({\n value: _open,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n\n const { side, align } = placementMap[placement];\n\n return (\n <CorePopover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>{children}</PopoverTrigger>\n <PopoverContent\n {...props}\n align={align}\n side={side}\n sideOffset={16}\n className={cn('relative w-auto', className)}\n >\n {renderConditional(title, v => (\n <Typography.Title level={6}>{v}</Typography.Title>\n ))}\n {content}\n <div className={getArrowClassName(side, align)} />\n </PopoverContent>\n </CorePopover>\n );\n};\n\nexport default Popover;\n"],"mappings":"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"}
1
+ {"version":3,"file":"popover.mjs","names":["popover"],"sources":["../../../src/components/atoms/popover.tsx"],"sourcesContent":["import { useControllableState } from '@jbpark/use-hooks';\n\nimport { popover } from '@repo/ui/core';\nimport { cn, renderConditional } from '@repo/ui/utils';\n\nimport Typography from './typography';\n\nconst { Popover: CorePopover, PopoverContent, PopoverTrigger } = popover;\n\ntype Placement =\n | 'top'\n | 'left'\n | 'right'\n | 'bottom'\n | 'topLeft'\n | 'topRight'\n | 'bottomLeft'\n | 'bottomRight'\n | 'leftTop'\n | 'leftBottom'\n | 'rightTop'\n | 'rightBottom';\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<'div'>,\n 'title' | 'content'\n> {\n title?: React.ReactNode;\n placement?: Placement;\n content: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\ntype Side = 'top' | 'bottom' | 'left' | 'right';\ntype Align = 'start' | 'center' | 'end';\n\nconst placementMap: Record<Placement, { side: Side; align: Align }> = {\n top: { side: 'top', align: 'center' },\n left: { side: 'left', align: 'center' },\n right: { side: 'right', align: 'center' },\n bottom: { side: 'bottom', align: 'center' },\n topLeft: { side: 'top', align: 'start' },\n topRight: { side: 'top', align: 'end' },\n bottomLeft: { side: 'bottom', align: 'start' },\n bottomRight: { side: 'bottom', align: 'end' },\n leftTop: { side: 'left', align: 'start' },\n leftBottom: { side: 'left', align: 'end' },\n rightTop: { side: 'right', align: 'start' },\n rightBottom: { side: 'right', align: 'end' },\n};\n\nconst beforeBase = 'before:content-[\"\"] before:absolute before:h-0 before:w-0';\nconst afterBase = 'after:content-[\"\"] after:absolute after:h-0 after:w-0';\n\nconst vBorderShape =\n 'before:border-l-[9px] before:border-r-[9px] before:border-l-transparent before:border-r-transparent';\nconst hBorderShape =\n 'before:border-t-[9px] before:border-b-[9px] before:border-t-transparent before:border-b-transparent';\nconst vFillShape =\n 'after:border-l-8 after:border-r-8 after:border-l-transparent after:border-r-transparent';\nconst hFillShape =\n 'after:border-t-8 after:border-b-8 after:border-t-transparent after:border-b-transparent';\n\n// Top/bottom placements draw a vertical-edge triangle (border-l/border-r) —\n// the arrow points up/down, so its left/right edges form the point. Left/\n// right placements draw the horizontal-edge equivalent.\nconst borderShapeBySide: Record<Side, string> = {\n top: vBorderShape,\n bottom: vBorderShape,\n left: hBorderShape,\n right: hBorderShape,\n};\nconst fillShapeBySide: Record<Side, string> = {\n top: vFillShape,\n bottom: vFillShape,\n left: hFillShape,\n right: hFillShape,\n};\nconst borderColorBySide: Record<Side, string> = {\n top: 'before:border-t-[9px] before:border-t-border',\n bottom: 'before:border-b-[9px] before:border-b-border',\n left: 'before:border-l-[9px] before:border-l-border',\n right: 'before:border-r-[9px] before:border-r-border',\n};\nconst fillColorBySide: Record<Side, string> = {\n top: 'after:border-t-8 after:border-t-popover',\n bottom: 'after:border-b-8 after:border-b-popover',\n left: 'after:border-l-8 after:border-l-popover',\n right: 'after:border-r-8 after:border-r-popover',\n};\n\n// Tailwind v4 only extracts class candidates that appear as *literal*\n// strings in source — none of these ever do if built via\n// `` `${side}-full` `` style interpolation, so they'd silently never make\n// it into the generated CSS. This table exists purely so every class the\n// arrow can need appears literally somewhere in this file.\nconst POSITION_CLASSES: Record<\n Side,\n Record<Align, { wrapper: string; before: string; after: string }>\n> = {\n top: {\n start: {\n wrapper: 'top-full left-4',\n before: 'before:top-0 before:left-0',\n after: 'after:-top-px after:left-px',\n },\n center: {\n wrapper: 'top-full left-1/2 -translate-x-1/2',\n before: 'before:top-0 before:left-1/2 before:-translate-x-1/2',\n after: 'after:-top-px after:left-1/2 after:-translate-x-1/2',\n },\n end: {\n wrapper: 'top-full right-4',\n before: 'before:top-0 before:right-0',\n after: 'after:-top-px after:right-px',\n },\n },\n bottom: {\n start: {\n wrapper: 'bottom-full left-4',\n before: 'before:bottom-0 before:left-0',\n after: 'after:-bottom-px after:left-px',\n },\n center: {\n wrapper: 'bottom-full left-1/2 -translate-x-1/2',\n before: 'before:bottom-0 before:left-1/2 before:-translate-x-1/2',\n after: 'after:-bottom-px after:left-1/2 after:-translate-x-1/2',\n },\n end: {\n wrapper: 'bottom-full right-4',\n before: 'before:bottom-0 before:right-0',\n after: 'after:-bottom-px after:right-px',\n },\n },\n left: {\n start: {\n wrapper: 'left-full top-4',\n before: 'before:left-0 before:top-0',\n after: 'after:-left-px after:top-px',\n },\n center: {\n wrapper: 'left-full top-1/2 -translate-y-1/2',\n before: 'before:left-0 before:top-1/2 before:-translate-y-1/2',\n after: 'after:-left-px after:top-1/2 after:-translate-y-1/2',\n },\n end: {\n wrapper: 'left-full bottom-4',\n before: 'before:left-0 before:bottom-0',\n after: 'after:-left-px after:bottom-px',\n },\n },\n right: {\n start: {\n wrapper: 'right-full top-4',\n before: 'before:right-0 before:top-0',\n after: 'after:-right-px after:top-px',\n },\n center: {\n wrapper: 'right-full top-1/2 -translate-y-1/2',\n before: 'before:right-0 before:top-1/2 before:-translate-y-1/2',\n after: 'after:-right-px after:top-1/2 after:-translate-y-1/2',\n },\n end: {\n wrapper: 'right-full bottom-4',\n before: 'before:right-0 before:bottom-0',\n after: 'after:-right-px after:bottom-px',\n },\n },\n};\n\nconst getArrowClassName = (side: Side, align: Align) => {\n const { wrapper, before, after } = POSITION_CLASSES[side][align];\n\n return cn(\n 'absolute',\n wrapper,\n beforeBase,\n before,\n borderShapeBySide[side],\n borderColorBySide[side],\n afterBase,\n after,\n fillShapeBySide[side],\n fillColorBySide[side],\n );\n};\n\nconst Popover = ({\n title,\n placement = 'top',\n className,\n content,\n children,\n open: _open,\n defaultOpen,\n onOpenChange,\n ...props\n}: Props) => {\n const [open, setOpen] = useControllableState<boolean>({\n value: _open,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n\n const { side, align } = placementMap[placement];\n\n return (\n <CorePopover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>{children}</PopoverTrigger>\n <PopoverContent\n {...props}\n align={align}\n side={side}\n sideOffset={16}\n className={cn('relative w-auto', className)}\n >\n {renderConditional(title, v => (\n <Typography.Title level={6}>{v}</Typography.Title>\n ))}\n {content}\n <div className={getArrowClassName(side, align)} />\n </PopoverContent>\n </CorePopover>\n );\n};\n\nexport default Popover;\n"],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components/atoms/progress.d.ts
4
2
  interface Props extends React.ComponentPropsWithoutRef<'div'> {
5
3
  value: number;
@@ -9,13 +7,7 @@ interface Props extends React.ComponentPropsWithoutRef<'div'> {
9
7
  bar?: string;
10
8
  };
11
9
  }
12
- declare const Progress: ({
13
- value,
14
- className,
15
- direction,
16
- classNames,
17
- ...props
18
- }: Props) => react_jsx_runtime0.JSX.Element;
10
+ declare const Progress: ({ value, className, direction, classNames, ...props }: Props) => import("react").JSX.Element;
19
11
  //#endregion
20
- export { Progress };
12
+ export { Props, Progress as default };
21
13
  //# sourceMappingURL=progress.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.mts","names":[],"sources":["../../../src/components/atoms/progress.tsx"],"mappings":";;;UAKiB,KAAA,SAAc,KAAA,CAAM,wBAAA;EACnC,KAAA;EACA,SAAA;EACA,UAAA;IACE,UAAA;IACA,GAAA;EAAA;AAAA;AAAA,cAIE,QAAA;EAAY,KAAA;EAAA,SAAA;EAAA,SAAA;EAAA,UAAA;EAAA,GAAA;AAAA,GAMf,KAAA,KAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"progress.d.mts","names":[],"sources":["../../../src/components/atoms/progress.tsx"],"mappings":";UAKiB,cAAc,MAAM;EACnC;EACA;EACA;IACE;IACA;;;cAIE,aAAY,OAAA,WAAA,WAAA,eAAA,SAMf,0BAAK,IAAA"}
@@ -1,7 +1,6 @@
1
1
  import { cn } from "../../utils.mjs";
2
2
  import { progress_exports } from "../../core/progress.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
-
5
4
  //#region src/components/atoms/progress.tsx
6
5
  const { Progress: Core } = progress_exports;
7
6
  const Progress = ({ value, className, direction = "horizontal", classNames, ...props }) => {
@@ -19,7 +18,7 @@ const Progress = ({ value, className, direction = "horizontal", classNames, ...p
19
18
  }
20
19
  });
21
20
  };
22
-
23
21
  //#endregion
24
22
  export { Progress as default };
23
+
25
24
  //# sourceMappingURL=progress.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.mjs","names":["progress"],"sources":["../../../src/components/atoms/progress.tsx"],"sourcesContent":["import { progress } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nconst { Progress: Core } = progress;\n\nexport interface Props extends React.ComponentPropsWithoutRef<'div'> {\n value: number;\n direction?: 'horizontal' | 'vertical';\n classNames?: {\n background?: string;\n bar?: string;\n };\n}\n\nconst Progress = ({\n value,\n className,\n direction = 'horizontal',\n classNames,\n ...props\n}: Props) => {\n const isHorizontal = direction === 'horizontal';\n const dimension = isHorizontal ? 'width' : 'height';\n const normalizedValue = Number.isFinite(value)\n ? Math.min(100, Math.max(0, value))\n : 0;\n\n return (\n <Core\n {...props}\n value={normalizedValue}\n className={cn(\n isHorizontal ? 'h-4 w-full' : 'flex h-full w-4 flex-col justify-end',\n className,\n classNames?.background,\n //\n )}\n barClassName={cn('flex-none', classNames?.bar)}\n barStyle={{\n transform: 'none',\n [dimension]: `${normalizedValue}%`,\n //\n }}\n />\n );\n};\n\nexport default Progress;\n"],"mappings":";;;;;AAGA,MAAM,EAAE,UAAU,SAASA;AAW3B,MAAM,YAAY,EAChB,OACA,WACA,YAAY,cACZ,YACA,GAAG,YACQ;CACX,MAAM,eAAe,cAAc;CACnC,MAAM,YAAY,eAAe,UAAU;CAC3C,MAAM,kBAAkB,OAAO,SAAS,MAAM,GAC1C,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC,GACjC;AAEJ,QACE,oBAAC;EACC,GAAI;EACJ,OAAO;EACP,WAAW,GACT,eAAe,eAAe,wCAC9B,WACA,YAAY,WAEb;EACD,cAAc,GAAG,aAAa,YAAY,IAAI;EAC9C,UAAU;GACR,WAAW;IACV,YAAY,GAAG,gBAAgB;GAEjC;GACD"}
1
+ {"version":3,"file":"progress.mjs","names":["progress"],"sources":["../../../src/components/atoms/progress.tsx"],"sourcesContent":["import { progress } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nconst { Progress: Core } = progress;\n\nexport interface Props extends React.ComponentPropsWithoutRef<'div'> {\n value: number;\n direction?: 'horizontal' | 'vertical';\n classNames?: {\n background?: string;\n bar?: string;\n };\n}\n\nconst Progress = ({\n value,\n className,\n direction = 'horizontal',\n classNames,\n ...props\n}: Props) => {\n const isHorizontal = direction === 'horizontal';\n const dimension = isHorizontal ? 'width' : 'height';\n const normalizedValue = Number.isFinite(value)\n ? Math.min(100, Math.max(0, value))\n : 0;\n\n return (\n <Core\n {...props}\n value={normalizedValue}\n className={cn(\n isHorizontal ? 'h-4 w-full' : 'flex h-full w-4 flex-col justify-end',\n className,\n classNames?.background,\n //\n )}\n barClassName={cn('flex-none', classNames?.bar)}\n barStyle={{\n transform: 'none',\n [dimension]: `${normalizedValue}%`,\n //\n }}\n />\n );\n};\n\nexport default Progress;\n"],"mappings":";;;;AAGA,MAAM,EAAE,UAAU,SAASA;AAW3B,MAAM,YAAY,EAChB,OACA,WACA,YAAY,cACZ,YACA,GAAG,YACQ;CACX,MAAM,eAAe,cAAc;CACnC,MAAM,YAAY,eAAe,UAAU;CAC3C,MAAM,kBAAkB,OAAO,SAAS,KAAK,IACzC,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,IAChC;CAEJ,OACE,oBAAC,MAAD;EACE,GAAI;EACJ,OAAO;EACP,WAAW,GACT,eAAe,eAAe,wCAC9B,WACA,YAAY,UAEd;EACA,cAAc,GAAG,aAAa,YAAY,GAAG;EAC7C,UAAU;GACR,WAAW;IACV,YAAY,GAAG,gBAAgB;EAElC;CACD,CAAA;AAEL"}
@@ -1,7 +1,5 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { createContext } from "react";
4
-
5
3
  //#region src/components/atoms/radio/context.tsx
6
4
  /**
7
5
  * Internal only — not exported from the package entry points.
@@ -15,7 +13,7 @@ import { createContext } from "react";
15
13
  * its own `Root` to stay functional.
16
14
  */
17
15
  const RadioGroupContext = createContext(false);
18
-
19
16
  //#endregion
20
17
  export { RadioGroupContext };
18
+
21
19
  //# sourceMappingURL=context.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.mjs","names":[],"sources":["../../../../src/components/atoms/radio/context.tsx"],"sourcesContent":["'use client';\n\nimport { createContext } from 'react';\n\n/**\n * Internal only — not exported from the package entry points.\n *\n * `true` when a `Radio` is rendered inside a `RadioGroup` that already owns a\n * single shared `RadioGroupPrimitive.Root`. In that case each `Radio` renders\n * only its `RadioGroupItem` so that Radix can manage roving focus (arrow-key\n * navigation) across every option of the group.\n *\n * `false` (default) means the `Radio` is standalone and has to wrap itself in\n * its own `Root` to stay functional.\n */\nexport const RadioGroupContext = createContext(false);\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAa,oBAAoB,cAAc,MAAM"}
1
+ {"version":3,"file":"context.mjs","names":[],"sources":["../../../../src/components/atoms/radio/context.tsx"],"sourcesContent":["'use client';\n\nimport { createContext } from 'react';\n\n/**\n * Internal only — not exported from the package entry points.\n *\n * `true` when a `Radio` is rendered inside a `RadioGroup` that already owns a\n * single shared `RadioGroupPrimitive.Root`. In that case each `Radio` renders\n * only its `RadioGroupItem` so that Radix can manage roving focus (arrow-key\n * navigation) across every option of the group.\n *\n * `false` (default) means the `Radio` is standalone and has to wrap itself in\n * its own `Root` to stay functional.\n */\nexport const RadioGroupContext = createContext(false);\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAa,oBAAoB,cAAc,KAAK"}
@@ -1,6 +1,4 @@
1
1
  import { OptionGroupClassNames, OptionValue, Options } from "../option-group.mjs";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
-
4
2
  //#region src/components/atoms/radio/group.d.ts
5
3
  interface Props extends Omit<React.ComponentPropsWithoutRef<'ul'>, 'onChange' | 'defaultValue' | 'value'> {
6
4
  options?: Options;
@@ -17,22 +15,7 @@ interface Props extends Omit<React.ComponentPropsWithoutRef<'ul'>, 'onChange' |
17
15
  disabled?: boolean;
18
16
  onChange?: (value: OptionValue) => void;
19
17
  }
20
- declare const RadioGroup: ({
21
- orientation,
22
- placement,
23
- className,
24
- classNames,
25
- options: _options,
26
- name,
27
- optionType,
28
- buttonStyle,
29
- size,
30
- disabled,
31
- defaultValue,
32
- value: _value,
33
- onChange: _onChange,
34
- ...props
35
- }: Props) => react_jsx_runtime0.JSX.Element;
18
+ declare const RadioGroup: ({ orientation, placement, className, classNames, options: _options, name, optionType, buttonStyle, size, disabled, defaultValue, value: _value, onChange: _onChange, ...props }: Props) => import("react").JSX.Element;
36
19
  //#endregion
37
- export { RadioGroup };
20
+ export { type OptionValue, Props, RadioGroup as default };
38
21
  //# sourceMappingURL=group.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.mts","names":[],"sources":["../../../../src/components/atoms/radio/group.tsx"],"mappings":";;;;UAyBiB,KAAA,SAAc,IAAA,CAC7B,KAAA,CAAM,wBAAA;EAGN,OAAA,GAAU,OAAA;EACV,WAAA;EACA,SAAA;EACA,UAAA,GAAa,qBAAA;EACb,YAAA,GAAe,WAAA;EACf,KAAA,GAAQ,WAAA;EAFK;EAIb,IAAA;EACA,UAAA;EACA,WAAA;EACA,IAAA;EACA,QAAA;EACA,QAAA,IAAY,KAAA,EAAO,WAAA;AAAA;AAAA,cAGf,UAAA;EAAc,WAAA;EAAA,SAAA;EAAA,SAAA;EAAA,UAAA;EAAA,OAAA,EAAA,QAAA;EAAA,IAAA;EAAA,UAAA;EAAA,WAAA;EAAA,IAAA;EAAA,QAAA;EAAA,YAAA;EAAA,KAAA,EAAA,MAAA;EAAA,QAAA,EAAA,SAAA;EAAA,GAAA;AAAA,GAejB,KAAA,KAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"group.d.mts","names":[],"sources":["../../../../src/components/atoms/radio/group.tsx"],"mappings":";;UAyBiB,cAAc,KAC7B,MAAM;EAGN,UAAU;EACV;EACA;EACA,aAAa;EACb,eAAe;EACf,QAAQ;;EAER;EACA;EACA;EACA;EACA;EACA,YAAY,OAAO;;cAGf,eAAc,aAAA,WAAA,WAAA,YAAA,SAAA,UAAA,MAAA,YAAA,aAAA,MAAA,UAAA,cAAA,OAAA,QAAA,UAAA,cAAA,SAejB,0BAAK,IAAA"}
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { cn } from "../../../utils.mjs";
4
3
  import { radio_group_exports } from "../../../core/radio-group.mjs";
5
4
  import Button from "../../../Button.mjs";
@@ -9,7 +8,6 @@ import Radio from "./radio.mjs";
9
8
  import { useId } from "react";
10
9
  import { jsx } from "react/jsx-runtime";
11
10
  import { useControllableState } from "@jbpark/use-hooks";
12
-
13
11
  //#region src/components/atoms/radio/group.tsx
14
12
  const { RadioGroup: Core, RadioGroupItem: Item } = radio_group_exports;
15
13
  const RadioGroup = ({ orientation = "horizontal", placement = "left", className, classNames = {}, options: _options = [], name, optionType = "default", buttonStyle = "solid", size, disabled, defaultValue, value: _value, onChange: _onChange = () => {}, ...props }) => {
@@ -75,7 +73,7 @@ const RadioGroup = ({ orientation = "horizontal", placement = "left", className,
75
73
  })
76
74
  });
77
75
  };
78
-
79
76
  //#endregion
80
77
  export { RadioGroup as default };
78
+
81
79
  //# sourceMappingURL=group.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"group.mjs","names":["radio"],"sources":["../../../../src/components/atoms/radio/group.tsx"],"sourcesContent":["'use client';\n\nimport { useId } from 'react';\n\nimport { useControllableState } from '@jbpark/use-hooks';\n\nimport { radio } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nimport Button from '../button';\nimport {\n type Option,\n type OptionGroupClassNames,\n type OptionValue,\n type Options,\n normalizeOptions,\n warnOnDuplicateOptionValues,\n} from '../option-group';\nimport { RadioGroupContext } from './context';\nimport Radio from './radio';\n\nconst { RadioGroup: Core, RadioGroupItem: Item } = radio;\n\nexport type { OptionValue };\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<'ul'>,\n 'onChange' | 'defaultValue' | 'value'\n> {\n options?: Options;\n orientation?: 'vertical' | 'horizontal';\n placement?: 'left' | 'right';\n classNames?: OptionGroupClassNames;\n defaultValue?: OptionValue;\n value?: OptionValue;\n /** Native form field name — participates in `FormData` when set. */\n name?: string;\n optionType?: 'default' | 'button';\n buttonStyle?: 'solid' | 'outlined';\n size?: 'small' | 'middle' | 'large';\n disabled?: boolean;\n onChange?: (value: OptionValue) => void;\n}\n\nconst RadioGroup = ({\n orientation = 'horizontal',\n placement = 'left',\n className,\n classNames = {},\n options: _options = [],\n name,\n optionType = 'default',\n buttonStyle = 'solid',\n size,\n disabled,\n defaultValue,\n value: _value,\n onChange: _onChange = () => {},\n ...props\n}: Props) => {\n const [value, setValue] = useControllableState<OptionValue>({\n value: _value,\n defaultValue,\n onChange: _onChange,\n });\n\n const options: Option[] = normalizeOptions(_options);\n warnOnDuplicateOptionValues(options, 'Radio.Group');\n\n const isButton = optionType === 'button';\n\n const onChange = (checked: boolean, optionValue: OptionValue) => {\n if (!checked) {\n return;\n }\n setValue(optionValue);\n };\n\n // A single Radix radiogroup root owns every option so that arrow keys move\n // focus across the whole group. `id` stays index-derived (for DOM\n // id/label pairing), but Radix itself now addresses/submits items by\n // their real (stringified) `value` — see radio.tsx.\n const baseId = useId();\n const getOptionId = (index: number) => `${baseId}-${index}`;\n const checkedItemValue = value === undefined ? '' : String(value);\n\n const onValueChange = (itemValue: string) => {\n const item = options.find(option => String(option.value) === itemValue);\n\n if (!item) {\n return;\n }\n\n onChange(true, item.value);\n };\n\n const list = (\n <ul\n {...props}\n className={cn(\n 'flex gap-4',\n className,\n orientation === 'vertical' && 'flex-col',\n isButton && 'gap-0',\n )}\n >\n {options.map((item: Option, index) => {\n const checked = value === item.value;\n\n return (\n <li\n key={`${index}-${String(item.value)}`}\n className={cn('flex', classNames?.wrapper)}\n >\n {isButton ? (\n // `asChild` gives the Button real radio semantics (role,\n // aria-checked, roving tabindex, arrow-key nav, click/keyboard\n // selection via the shared Core's onValueChange below) instead\n // of a plain list of buttons with none of that.\n <Item\n asChild\n value={String(item.value)}\n disabled={disabled || item.disabled}\n >\n <Button\n variant={checked ? buttonStyle : 'outlined'}\n size={size}\n disabled={disabled || item.disabled}\n className={cn(\n // The `solid` variant (the checked item, by default)\n // renders no border at all while `outlined` (every\n // unchecked item) renders a 1px one — reserving the\n // border unconditionally keeps every option's box the\n // same size regardless of which variant it's in.\n 'rounded-none border',\n checked &&\n (buttonStyle === 'outlined'\n ? 'border-primary'\n : 'border-transparent'),\n index === 0 &&\n (orientation === 'vertical'\n ? 'rounded-t-lg'\n : 'rounded-l-lg'),\n index === options.length - 1 &&\n (orientation === 'vertical'\n ? 'rounded-b-lg'\n : 'rounded-r-lg'),\n )}\n >\n {item.label}\n </Button>\n </Item>\n ) : (\n <Radio\n id={getOptionId(index)}\n placement={placement}\n className={cn(classNames?.item)}\n value={item.value}\n checked={checked}\n disabled={disabled || item.disabled}\n onChange={checked => onChange(checked, item.value)}\n >\n {item.label}\n </Radio>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <RadioGroupContext.Provider value={true}>\n <Core\n className=\"block\"\n name={name}\n value={checkedItemValue}\n onValueChange={onValueChange}\n >\n {list}\n </Core>\n </RadioGroupContext.Provider>\n );\n};\n\nexport default RadioGroup;\n"],"mappings":";;;;;;;;;;;;;AAqBA,MAAM,EAAE,YAAY,MAAM,gBAAgB,SAASA;AAuBnD,MAAM,cAAc,EAClB,cAAc,cACd,YAAY,QACZ,WACA,aAAa,EAAE,EACf,SAAS,WAAW,EAAE,EACtB,MACA,aAAa,WACb,cAAc,SACd,MACA,UACA,cACA,OAAO,QACP,UAAU,kBAAkB,IAC5B,GAAG,YACQ;CACX,MAAM,CAAC,OAAO,YAAY,qBAAkC;EAC1D,OAAO;EACP;EACA,UAAU;EACX,CAAC;CAEF,MAAM,UAAoB,iBAAiB,SAAS;AACpD,6BAA4B,SAAS,cAAc;CAEnD,MAAM,WAAW,eAAe;CAEhC,MAAM,YAAY,SAAkB,gBAA6B;AAC/D,MAAI,CAAC,QACH;AAEF,WAAS,YAAY;;CAOvB,MAAM,SAAS,OAAO;CACtB,MAAM,eAAe,UAAkB,GAAG,OAAO,GAAG;CACpD,MAAM,mBAAmB,UAAU,SAAY,KAAK,OAAO,MAAM;CAEjE,MAAM,iBAAiB,cAAsB;EAC3C,MAAM,OAAO,QAAQ,MAAK,WAAU,OAAO,OAAO,MAAM,KAAK,UAAU;AAEvE,MAAI,CAAC,KACH;AAGF,WAAS,MAAM,KAAK,MAAM;;CAG5B,MAAM,OACJ,oBAAC;EACC,GAAI;EACJ,WAAW,GACT,cACA,WACA,gBAAgB,cAAc,YAC9B,YAAY,QACb;YAEA,QAAQ,KAAK,MAAc,UAAU;GACpC,MAAM,UAAU,UAAU,KAAK;AAE/B,UACE,oBAAC;IAEC,WAAW,GAAG,QAAQ,YAAY,QAAQ;cAEzC,WAKC,oBAAC;KACC;KACA,OAAO,OAAO,KAAK,MAAM;KACzB,UAAU,YAAY,KAAK;eAE3B,oBAAC;MACC,SAAS,UAAU,cAAc;MAC3B;MACN,UAAU,YAAY,KAAK;MAC3B,WAAW,GAMT,uBACA,YACG,gBAAgB,aACb,mBACA,uBACN,UAAU,MACP,gBAAgB,aACb,iBACA,iBACN,UAAU,QAAQ,SAAS,MACxB,gBAAgB,aACb,iBACA,gBACP;gBAEA,KAAK;OACC;MACJ,GAEP,oBAAC;KACC,IAAI,YAAY,MAAM;KACX;KACX,WAAW,GAAG,YAAY,KAAK;KAC/B,OAAO,KAAK;KACH;KACT,UAAU,YAAY,KAAK;KAC3B,WAAU,YAAW,SAAS,SAAS,KAAK,MAAM;eAEjD,KAAK;MACA;MApDL,GAAG,MAAM,GAAG,OAAO,KAAK,MAAM,GAsDhC;IAEP;GACC;AAGP,QACE,oBAAC,kBAAkB;EAAS,OAAO;YACjC,oBAAC;GACC,WAAU;GACJ;GACN,OAAO;GACQ;aAEd;IACI;GACoB"}
1
+ {"version":3,"file":"group.mjs","names":["radio"],"sources":["../../../../src/components/atoms/radio/group.tsx"],"sourcesContent":["'use client';\n\nimport { useId } from 'react';\n\nimport { useControllableState } from '@jbpark/use-hooks';\n\nimport { radio } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nimport Button from '../button';\nimport {\n type Option,\n type OptionGroupClassNames,\n type OptionValue,\n type Options,\n normalizeOptions,\n warnOnDuplicateOptionValues,\n} from '../option-group';\nimport { RadioGroupContext } from './context';\nimport Radio from './radio';\n\nconst { RadioGroup: Core, RadioGroupItem: Item } = radio;\n\nexport type { OptionValue };\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<'ul'>,\n 'onChange' | 'defaultValue' | 'value'\n> {\n options?: Options;\n orientation?: 'vertical' | 'horizontal';\n placement?: 'left' | 'right';\n classNames?: OptionGroupClassNames;\n defaultValue?: OptionValue;\n value?: OptionValue;\n /** Native form field name — participates in `FormData` when set. */\n name?: string;\n optionType?: 'default' | 'button';\n buttonStyle?: 'solid' | 'outlined';\n size?: 'small' | 'middle' | 'large';\n disabled?: boolean;\n onChange?: (value: OptionValue) => void;\n}\n\nconst RadioGroup = ({\n orientation = 'horizontal',\n placement = 'left',\n className,\n classNames = {},\n options: _options = [],\n name,\n optionType = 'default',\n buttonStyle = 'solid',\n size,\n disabled,\n defaultValue,\n value: _value,\n onChange: _onChange = () => {},\n ...props\n}: Props) => {\n const [value, setValue] = useControllableState<OptionValue>({\n value: _value,\n defaultValue,\n onChange: _onChange,\n });\n\n const options: Option[] = normalizeOptions(_options);\n warnOnDuplicateOptionValues(options, 'Radio.Group');\n\n const isButton = optionType === 'button';\n\n const onChange = (checked: boolean, optionValue: OptionValue) => {\n if (!checked) {\n return;\n }\n setValue(optionValue);\n };\n\n // A single Radix radiogroup root owns every option so that arrow keys move\n // focus across the whole group. `id` stays index-derived (for DOM\n // id/label pairing), but Radix itself now addresses/submits items by\n // their real (stringified) `value` — see radio.tsx.\n const baseId = useId();\n const getOptionId = (index: number) => `${baseId}-${index}`;\n const checkedItemValue = value === undefined ? '' : String(value);\n\n const onValueChange = (itemValue: string) => {\n const item = options.find(option => String(option.value) === itemValue);\n\n if (!item) {\n return;\n }\n\n onChange(true, item.value);\n };\n\n const list = (\n <ul\n {...props}\n className={cn(\n 'flex gap-4',\n className,\n orientation === 'vertical' && 'flex-col',\n isButton && 'gap-0',\n )}\n >\n {options.map((item: Option, index) => {\n const checked = value === item.value;\n\n return (\n <li\n key={`${index}-${String(item.value)}`}\n className={cn('flex', classNames?.wrapper)}\n >\n {isButton ? (\n // `asChild` gives the Button real radio semantics (role,\n // aria-checked, roving tabindex, arrow-key nav, click/keyboard\n // selection via the shared Core's onValueChange below) instead\n // of a plain list of buttons with none of that.\n <Item\n asChild\n value={String(item.value)}\n disabled={disabled || item.disabled}\n >\n <Button\n variant={checked ? buttonStyle : 'outlined'}\n size={size}\n disabled={disabled || item.disabled}\n className={cn(\n // The `solid` variant (the checked item, by default)\n // renders no border at all while `outlined` (every\n // unchecked item) renders a 1px one — reserving the\n // border unconditionally keeps every option's box the\n // same size regardless of which variant it's in.\n 'rounded-none border',\n checked &&\n (buttonStyle === 'outlined'\n ? 'border-primary'\n : 'border-transparent'),\n index === 0 &&\n (orientation === 'vertical'\n ? 'rounded-t-lg'\n : 'rounded-l-lg'),\n index === options.length - 1 &&\n (orientation === 'vertical'\n ? 'rounded-b-lg'\n : 'rounded-r-lg'),\n )}\n >\n {item.label}\n </Button>\n </Item>\n ) : (\n <Radio\n id={getOptionId(index)}\n placement={placement}\n className={cn(classNames?.item)}\n value={item.value}\n checked={checked}\n disabled={disabled || item.disabled}\n onChange={checked => onChange(checked, item.value)}\n >\n {item.label}\n </Radio>\n )}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <RadioGroupContext.Provider value={true}>\n <Core\n className=\"block\"\n name={name}\n value={checkedItemValue}\n onValueChange={onValueChange}\n >\n {list}\n </Core>\n </RadioGroupContext.Provider>\n );\n};\n\nexport default RadioGroup;\n"],"mappings":";;;;;;;;;;;AAqBA,MAAM,EAAE,YAAY,MAAM,gBAAgB,SAASA;AAuBnD,MAAM,cAAc,EAClB,cAAc,cACd,YAAY,QACZ,WACA,aAAa,CAAC,GACd,SAAS,WAAW,CAAC,GACrB,MACA,aAAa,WACb,cAAc,SACd,MACA,UACA,cACA,OAAO,QACP,UAAU,kBAAkB,CAAC,GAC7B,GAAG,YACQ;CACX,MAAM,CAAC,OAAO,YAAY,qBAAkC;EAC1D,OAAO;EACP;EACA,UAAU;CACZ,CAAC;CAED,MAAM,UAAoB,iBAAiB,QAAQ;CACnD,4BAA4B,SAAS,aAAa;CAElD,MAAM,WAAW,eAAe;CAEhC,MAAM,YAAY,SAAkB,gBAA6B;EAC/D,IAAI,CAAC,SACH;EAEF,SAAS,WAAW;CACtB;CAMA,MAAM,SAAS,MAAM;CACrB,MAAM,eAAe,UAAkB,GAAG,OAAO,GAAG;CACpD,MAAM,mBAAmB,UAAU,KAAA,IAAY,KAAK,OAAO,KAAK;CAEhE,MAAM,iBAAiB,cAAsB;EAC3C,MAAM,OAAO,QAAQ,MAAK,WAAU,OAAO,OAAO,KAAK,MAAM,SAAS;EAEtE,IAAI,CAAC,MACH;EAGF,SAAS,MAAM,KAAK,KAAK;CAC3B;CAEA,MAAM,OACJ,oBAAC,MAAD;EACE,GAAI;EACJ,WAAW,GACT,cACA,WACA,gBAAgB,cAAc,YAC9B,YAAY,OACd;EAEC,UAAA,QAAQ,KAAK,MAAc,UAAU;GACpC,MAAM,UAAU,UAAU,KAAK;GAE/B,OACE,oBAAC,MAAD;IAEE,WAAW,GAAG,QAAQ,YAAY,OAAO;IAExC,UAAA,WAKC,oBAAC,MAAD;KACE,SAAA;KACA,OAAO,OAAO,KAAK,KAAK;KACxB,UAAU,YAAY,KAAK;KAE3B,UAAA,oBAAC,QAAD;MACE,SAAS,UAAU,cAAc;MAC3B;MACN,UAAU,YAAY,KAAK;MAC3B,WAAW,GAMT,uBACA,YACG,gBAAgB,aACb,mBACA,uBACN,UAAU,MACP,gBAAgB,aACb,iBACA,iBACN,UAAU,QAAQ,SAAS,MACxB,gBAAgB,aACb,iBACA,eACR;MAEC,UAAA,KAAK;KACA,CAAA;IACJ,CAAA,IAEN,oBAAC,OAAD;KACE,IAAI,YAAY,KAAK;KACV;KACX,WAAW,GAAG,YAAY,IAAI;KAC9B,OAAO,KAAK;KACH;KACT,UAAU,YAAY,KAAK;KAC3B,WAAU,YAAW,SAAS,SAAS,KAAK,KAAK;KAEhD,UAAA,KAAK;IACD,CAAA;GAEP,GAtDG,GAAG,MAAM,GAAG,OAAO,KAAK,KAAK,GAsDhC;EAER,CAAC;CACC,CAAA;CAGN,OACE,oBAAC,kBAAkB,UAAnB;EAA4B,OAAO;EACjC,UAAA,oBAAC,MAAD;GACE,WAAU;GACJ;GACN,OAAO;GACQ;GAEd,UAAA;EACG,CAAA;CACoB,CAAA;AAEhC"}
@@ -1,11 +1,10 @@
1
- import { RadioGroup } from "./group.mjs";
2
- import { Props, Radio as Radio$1 } from "./radio.mjs";
3
-
1
+ import RadioGroup from "./group.mjs";
2
+ import Radio$1, { Props } from "./radio.mjs";
4
3
  //#region src/components/atoms/radio/index.d.ts
5
4
  type RadioComponent = typeof Radio$1 & {
6
5
  Group: typeof RadioGroup;
7
6
  };
8
7
  declare const Radio: RadioComponent;
9
8
  //#endregion
10
- export { Radio };
9
+ export { Radio as default };
11
10
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/atoms/radio/index.ts"],"mappings":";;;;KAGK,cAAA,UAAwB,OAAA;EAAc,KAAA,SAAc,UAAA;AAAA;AAAA,cAEnD,KAAA,EAAqB,cAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/atoms/radio/index.ts"],"mappings":";;;KAGK,wBAAwB;EAAc,cAAc;;cAEnD,OAAqB"}
@@ -1,10 +1,9 @@
1
1
  import Radio$1 from "./radio.mjs";
2
2
  import RadioGroup from "./group.mjs";
3
-
4
3
  //#region src/components/atoms/radio/index.ts
5
4
  const Radio = Radio$1;
6
5
  Radio.Group = RadioGroup;
7
-
8
6
  //#endregion
9
7
  export { Radio as default };
8
+
10
9
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["RadioImpl","Group"],"sources":["../../../../src/components/atoms/radio/index.ts"],"sourcesContent":["import Group from './group';\nimport RadioImpl, { type Props } from './radio';\n\ntype RadioComponent = typeof RadioImpl & { Group: typeof Group };\n\nconst Radio = RadioImpl as RadioComponent;\n\nRadio.Group = Group;\n\nexport default Radio;\nexport type { Props };\n"],"mappings":";;;;AAKA,MAAM,QAAQA;AAEd,MAAM,QAAQC"}
1
+ {"version":3,"file":"index.mjs","names":["RadioImpl","Group"],"sources":["../../../../src/components/atoms/radio/index.ts"],"sourcesContent":["import Group from './group';\nimport RadioImpl, { type Props } from './radio';\n\ntype RadioComponent = typeof RadioImpl & { Group: typeof Group };\n\nconst Radio = RadioImpl as RadioComponent;\n\nRadio.Group = Group;\n\nexport default Radio;\nexport type { Props };\n"],"mappings":";;;AAKA,MAAM,QAAQA;AAEd,MAAM,QAAQC"}
@@ -1,9 +1,6 @@
1
1
  import { RadioGroup } from "../../../core/radio-group.mjs";
2
2
  import "../../../core.mjs";
3
3
  import { OptionValue } from "../option-group.mjs";
4
- import "./group.mjs";
5
- import * as react_jsx_runtime0 from "react/jsx-runtime";
6
-
7
4
  //#region src/components/atoms/radio/radio.d.ts
8
5
  declare const Core: typeof RadioGroup;
9
6
  interface Props extends Omit<React.ComponentPropsWithoutRef<typeof Core>, 'onChange' | 'value'> {
@@ -26,20 +23,7 @@ interface Props extends Omit<React.ComponentPropsWithoutRef<typeof Core>, 'onCha
26
23
  }>;
27
24
  onChange?: (checked: boolean) => void;
28
25
  }
29
- declare const Radio: ({
30
- placement,
31
- value: _value,
32
- children,
33
- className,
34
- icons,
35
- disabled,
36
- defaultChecked,
37
- checked: _checked,
38
- id: _id,
39
- name,
40
- onChange: _onChange,
41
- ...props
42
- }: Props) => react_jsx_runtime0.JSX.Element;
26
+ declare const Radio: ({ placement, value: _value, children, className, icons, disabled, defaultChecked, checked: _checked, id: _id, name, onChange: _onChange, ...props }: Props) => import("react").JSX.Element;
43
27
  //#endregion
44
- export { Props, Radio };
28
+ export { Props, Radio as default };
45
29
  //# sourceMappingURL=radio.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.d.mts","names":[],"sources":["../../../../src/components/atoms/radio/radio.tsx"],"mappings":";;;;;;;cAaoB,IAAA,SAAI,UAAA;AAAA,UAGP,KAAA,SAAc,IAAA,CAC7B,KAAA,CAAM,wBAAA,QAAgC,IAAA;EAGtC,SAAA;EACA,cAAA;EACA,OAAA;EACA,KAAA,GAAQ,WAAA;EAV8C;EAYtD,IAAA;EACA,QAAA;EAbsD;AAGxD;;;;EAgBE,EAAA;EACA,KAAA,GAAQ,OAAA;IAAU,OAAA,EAAS,KAAA,CAAM,SAAA;IAAW,SAAA,EAAW,KAAA,CAAM,SAAA;EAAA;EAC7D,QAAA,IAAY,OAAA;AAAA;AAAA,cAGR,KAAA;EAAS,SAAA;EAAA,KAAA,EAAA,MAAA;EAAA,QAAA;EAAA,SAAA;EAAA,KAAA;EAAA,QAAA;EAAA,cAAA;EAAA,OAAA,EAAA,QAAA;EAAA,EAAA,EAAA,GAAA;EAAA,IAAA;EAAA,QAAA,EAAA,SAAA;EAAA,GAAA;AAAA,GAaZ,KAAA,KAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"radio.d.mts","names":[],"sources":["../../../../src/components/atoms/radio/radio.tsx"],"mappings":";;;;cAaoB,aAAI;UAGP,cAAc,KAC7B,MAAM,gCAAgC;EAGtC;EACA;EACA;EACA,QAAQ;;EAER;EACA;;;;;;EAMA;EACA,QAAQ;IAAU,SAAS,MAAM;IAAW,WAAW,MAAM;;EAC7D,YAAY;;cAGR,UAAS,WAAA,OAAA,QAAA,UAAA,WAAA,OAAA,UAAA,gBAAA,SAAA,UAAA,IAAA,KAAA,MAAA,UAAA,cAAA,SAaZ,0BAAK,IAAA"}
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { cn } from "../../../utils.mjs";
4
3
  import { field_exports } from "../../../core/field.mjs";
5
4
  import { radio_group_exports } from "../../../core/radio-group.mjs";
@@ -8,7 +7,6 @@ import { Circle, CircleCheck } from "lucide-react";
8
7
  import { useContext, useId, useRef } from "react";
9
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
9
  import { useControllableState, useKeyPress } from "@jbpark/use-hooks";
11
-
12
10
  //#region src/components/atoms/radio/radio.tsx
13
11
  const { RadioGroup: Core, RadioGroupItem: Item } = radio_group_exports;
14
12
  const { Field, FieldLabel } = field_exports;
@@ -92,7 +90,7 @@ const Radio = ({ placement = "left", value: _value = "", children, className, ic
92
90
  children: renderContent
93
91
  });
94
92
  };
95
-
96
93
  //#endregion
97
94
  export { Radio as default };
95
+
98
96
  //# sourceMappingURL=radio.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.mjs","names":["radio","field"],"sources":["../../../../src/components/atoms/radio/radio.tsx"],"sourcesContent":["'use client';\n\nimport { useContext, useId, useRef } from 'react';\n\nimport { useControllableState, useKeyPress } from '@jbpark/use-hooks';\nimport { Circle, CircleCheck } from 'lucide-react';\n\nimport { field, radio } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nimport { RadioGroupContext } from './context';\nimport { type OptionValue } from './group';\n\nconst { RadioGroup: Core, RadioGroupItem: Item } = radio;\nconst { Field, FieldLabel } = field;\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<typeof Core>,\n 'onChange' | 'value'\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 /**\n * Id shared by the underlying control and its label. Generated internally\n * when omitted. `RadioGroup` passes a deterministic id so that the group's\n * single Radix root can address each option.\n */\n id?: string;\n icons?: Partial<{ checked: React.ReactNode; unchecked: React.ReactNode }>;\n onChange?: (checked: boolean) => void;\n}\n\nconst Radio = ({\n placement = 'left',\n value: _value = '',\n children,\n className,\n icons,\n disabled,\n defaultChecked,\n checked: _checked,\n id: _id,\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 generatedId = useId();\n const id = _id ?? generatedId;\n // Radix identifies/submits an item by its `value`, which is separate from\n // `id` (used only for the DOM id/label pairing) — stringified since Radix\n // requires a string, while `OptionValue` also allows number/boolean.\n const itemValue = String(_value);\n const grouped = useContext(RadioGroupContext);\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(true);\n },\n { target: iconTriggerRef, enabled: !!icons && !disabled },\n );\n\n // When rendered inside a `RadioGroup`, the group owns the single shared\n // `Core` (Radix radiogroup root) so that arrow keys move focus across every\n // option. A standalone `Radio` still has to provide its own root.\n const renderField = (\n <Field\n orientation=\"horizontal\"\n className={cn('flex gap-2', placement === 'right' && 'flex-row-reverse')}\n data-disabled={disabled}\n >\n <Item value={itemValue} id={id} checked={checked} disabled={disabled} />\n <FieldLabel htmlFor={id} className={cursorClassName}>\n {children}\n </FieldLabel>\n </Field>\n );\n\n const renderContent = icons ? (\n <>\n <input\n id={id}\n hidden\n type=\"radio\"\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=\"radio\"\n aria-checked={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn(cursorClassName, disabled && 'opacity-50')}\n onClick={() => {\n onChange(true);\n }}\n >\n {checked\n ? (icons.checked ?? <CircleCheck />)\n : (icons.unchecked ?? <Circle />)}\n </span>\n {children && (\n <label\n className={cn(cursorClassName, disabled && 'opacity-50')}\n htmlFor={id}\n >\n {children}\n </label>\n )}\n </>\n ) : grouped ? (\n renderField\n ) : (\n <Core\n name={name}\n value={checked ? itemValue : ''}\n onValueChange={() => onChange(true)}\n >\n {renderField}\n </Core>\n );\n\n return (\n <div\n className={cn(\n 'flex items-center',\n icons && placement === 'right' && 'flex-row-reverse',\n cursorClassName,\n className,\n //\n )}\n {...props}\n >\n {renderContent}\n </div>\n );\n};\n\nexport default Radio;\n"],"mappings":";;;;;;;;;;;;AAaA,MAAM,EAAE,YAAY,MAAM,gBAAgB,SAASA;AACnD,MAAM,EAAE,OAAO,eAAeC;AAuB9B,MAAM,SAAS,EACb,YAAY,QACZ,OAAO,SAAS,IAChB,UACA,WACA,OACA,UACA,gBACA,SAAS,UACT,IAAI,KACJ,MACA,UAAU,kBAAkB,IAC5B,GAAG,YACQ;CACX,MAAM,CAAC,SAAS,cAAc,qBAA8B;EAC1D,OAAO;EACP,cAAc,kBAAkB;EAChC,UAAU;EACX,CAAC;CAEF,MAAM,cAAc,OAAO;CAC3B,MAAM,KAAK,OAAO;CAIlB,MAAM,YAAY,OAAO,OAAO;CAChC,MAAM,UAAU,WAAW,kBAAkB;CAE7C,MAAM,kBAAkB,WAAW,uBAAuB;CAE1D,MAAM,YAAY,SAAkB;AAClC,MAAI,SACF;AAGF,aAAW,KAAK;;CAGlB,MAAM,iBAAiB,OAAwB,KAAK;AAEpD,aACE,CAAC,SAAS,QAAQ,GAClB,UAAS;AACP,QAAM,gBAAgB;AACtB,WAAS,KAAK;IAEhB;EAAE,QAAQ;EAAgB,SAAS,CAAC,CAAC,SAAS,CAAC;EAAU,CAC1D;CAKD,MAAM,cACJ,qBAAC;EACC,aAAY;EACZ,WAAW,GAAG,cAAc,cAAc,WAAW,mBAAmB;EACxE,iBAAe;aAEf,oBAAC;GAAK,OAAO;GAAe;GAAa;GAAmB;IAAY,EACxE,oBAAC;GAAW,SAAS;GAAI,WAAW;GACjC;IACU;GACP;CAGV,MAAM,gBAAgB,QACpB;EACE,oBAAC;GACK;GACJ;GACA,MAAK;GACC;GACN,OAAO;GACE;GACC;GACV,WAAU,MAAK;AACb,aAAS,EAAE,OAAO,QAAQ;;IAE5B;EACF,oBAAC;GACC,KAAK;GACL,MAAK;GACL,gBAAc;GACd,iBAAe;GACf,UAAU,WAAW,KAAK;GAC1B,WAAW,GAAG,iBAAiB,YAAY,aAAa;GACxD,eAAe;AACb,aAAS,KAAK;;aAGf,UACI,MAAM,WAAW,oBAAC,gBAAc,GAChC,MAAM,aAAa,oBAAC,WAAS;IAC7B;EACN,YACC,oBAAC;GACC,WAAW,GAAG,iBAAiB,YAAY,aAAa;GACxD,SAAS;GAER;IACK;KAET,GACD,UACF,cAEA,oBAAC;EACO;EACN,OAAO,UAAU,YAAY;EAC7B,qBAAqB,SAAS,KAAK;YAElC;GACI;AAGT,QACE,oBAAC;EACC,WAAW,GACT,qBACA,SAAS,cAAc,WAAW,oBAClC,iBACA,UAED;EACD,GAAI;YAEH;GACG"}
1
+ {"version":3,"file":"radio.mjs","names":["radio","field"],"sources":["../../../../src/components/atoms/radio/radio.tsx"],"sourcesContent":["'use client';\n\nimport { useContext, useId, useRef } from 'react';\n\nimport { useControllableState, useKeyPress } from '@jbpark/use-hooks';\nimport { Circle, CircleCheck } from 'lucide-react';\n\nimport { field, radio } from '@repo/ui/core';\nimport { cn } from '@repo/ui/utils';\n\nimport { RadioGroupContext } from './context';\nimport { type OptionValue } from './group';\n\nconst { RadioGroup: Core, RadioGroupItem: Item } = radio;\nconst { Field, FieldLabel } = field;\n\nexport interface Props extends Omit<\n React.ComponentPropsWithoutRef<typeof Core>,\n 'onChange' | 'value'\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 /**\n * Id shared by the underlying control and its label. Generated internally\n * when omitted. `RadioGroup` passes a deterministic id so that the group's\n * single Radix root can address each option.\n */\n id?: string;\n icons?: Partial<{ checked: React.ReactNode; unchecked: React.ReactNode }>;\n onChange?: (checked: boolean) => void;\n}\n\nconst Radio = ({\n placement = 'left',\n value: _value = '',\n children,\n className,\n icons,\n disabled,\n defaultChecked,\n checked: _checked,\n id: _id,\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 generatedId = useId();\n const id = _id ?? generatedId;\n // Radix identifies/submits an item by its `value`, which is separate from\n // `id` (used only for the DOM id/label pairing) — stringified since Radix\n // requires a string, while `OptionValue` also allows number/boolean.\n const itemValue = String(_value);\n const grouped = useContext(RadioGroupContext);\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(true);\n },\n { target: iconTriggerRef, enabled: !!icons && !disabled },\n );\n\n // When rendered inside a `RadioGroup`, the group owns the single shared\n // `Core` (Radix radiogroup root) so that arrow keys move focus across every\n // option. A standalone `Radio` still has to provide its own root.\n const renderField = (\n <Field\n orientation=\"horizontal\"\n className={cn('flex gap-2', placement === 'right' && 'flex-row-reverse')}\n data-disabled={disabled}\n >\n <Item value={itemValue} id={id} checked={checked} disabled={disabled} />\n <FieldLabel htmlFor={id} className={cursorClassName}>\n {children}\n </FieldLabel>\n </Field>\n );\n\n const renderContent = icons ? (\n <>\n <input\n id={id}\n hidden\n type=\"radio\"\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=\"radio\"\n aria-checked={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn(cursorClassName, disabled && 'opacity-50')}\n onClick={() => {\n onChange(true);\n }}\n >\n {checked\n ? (icons.checked ?? <CircleCheck />)\n : (icons.unchecked ?? <Circle />)}\n </span>\n {children && (\n <label\n className={cn(cursorClassName, disabled && 'opacity-50')}\n htmlFor={id}\n >\n {children}\n </label>\n )}\n </>\n ) : grouped ? (\n renderField\n ) : (\n <Core\n name={name}\n value={checked ? itemValue : ''}\n onValueChange={() => onChange(true)}\n >\n {renderField}\n </Core>\n );\n\n return (\n <div\n className={cn(\n 'flex items-center',\n icons && placement === 'right' && 'flex-row-reverse',\n cursorClassName,\n className,\n //\n )}\n {...props}\n >\n {renderContent}\n </div>\n );\n};\n\nexport default Radio;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,EAAE,YAAY,MAAM,gBAAgB,SAASA;AACnD,MAAM,EAAE,OAAO,eAAeC;AAuB9B,MAAM,SAAS,EACb,YAAY,QACZ,OAAO,SAAS,IAChB,UACA,WACA,OACA,UACA,gBACA,SAAS,UACT,IAAI,KACJ,MACA,UAAU,kBAAkB,CAAC,GAC7B,GAAG,YACQ;CACX,MAAM,CAAC,SAAS,cAAc,qBAA8B;EAC1D,OAAO;EACP,cAAc,kBAAkB;EAChC,UAAU;CACZ,CAAC;CAED,MAAM,cAAc,MAAM;CAC1B,MAAM,KAAK,OAAO;CAIlB,MAAM,YAAY,OAAO,MAAM;CAC/B,MAAM,UAAU,WAAW,iBAAiB;CAE5C,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,IAAI;CACf,GACA;EAAE,QAAQ;EAAgB,SAAS,CAAC,CAAC,SAAS,CAAC;CAAS,CAC1D;CAKA,MAAM,cACJ,qBAAC,OAAD;EACE,aAAY;EACZ,WAAW,GAAG,cAAc,cAAc,WAAW,kBAAkB;EACvE,iBAAe;EAHjB,UAAA,CAKE,oBAAC,MAAD;GAAM,OAAO;GAAe;GAAa;GAAmB;EAAW,CAAA,GACvE,oBAAC,YAAD;GAAY,SAAS;GAAI,WAAW;GACjC;EACS,CAAA,CACP;;CAGT,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,IAAI;GACf;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,IACA,UACF,cAEA,oBAAC,MAAD;EACQ;EACN,OAAO,UAAU,YAAY;EAC7B,qBAAqB,SAAS,IAAI;EAEjC,UAAA;CACG,CAAA;CAGR,OACE,oBAAC,OAAD;EACE,WAAW,GACT,qBACA,SAAS,cAAc,WAAW,oBAClC,iBACA,SAEF;EACA,GAAI;EAEH,UAAA;CACE,CAAA;AAET"}
@@ -1,8 +1,6 @@
1
1
  import { Select as Select$1 } from "../../core/select.mjs";
2
2
  import "../../core.mjs";
3
3
  import React from "react";
4
- import * as react_jsx_runtime0 from "react/jsx-runtime";
5
-
6
4
  //#region src/components/atoms/select.d.ts
7
5
  declare const Core: typeof Select$1;
8
6
  interface Option {
@@ -19,13 +17,7 @@ interface Props extends Omit<React.ComponentProps<typeof Core>, 'onValueChange'>
19
17
  options?: (Option | OptionGroup)[];
20
18
  onChange?: (value: string) => void;
21
19
  }
22
- declare const Select: ({
23
- className,
24
- placeholder,
25
- options,
26
- onChange,
27
- ...props
28
- }: Props) => react_jsx_runtime0.JSX.Element;
20
+ declare const Select: ({ className, placeholder, options, onChange, ...props }: Props) => React.JSX.Element;
29
21
  //#endregion
30
- export { Select };
22
+ export { Props, Select as default };
31
23
  //# sourceMappingURL=select.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.mts","names":[],"sources":["../../../src/components/atoms/select.tsx"],"mappings":";;;;;;cAMU,IAAA,SAAI,QAAA;AAAA,UASJ,MAAA;EACR,KAAA,EAAO,KAAA,CAAM,SAAA;EACb,KAAA;AAAA;AAAA,UAGQ,WAAA;EACR,KAAA,EAAO,KAAA,CAAM,SAAA;EACb,OAAA,EAAS,MAAA;AAAA;AAAA,UAOM,KAAA,SAAc,IAAA,CAC7B,KAAA,CAAM,cAAA,QAAsB,IAAA;EAG5B,WAAA;EACA,SAAA;EACA,OAAA,IAAW,MAAA,GAAS,WAAA;EACpB,QAAA,IAAY,KAAA;AAAA;AAAA,cAGR,MAAA;EAAU,SAAA;EAAA,WAAA;EAAA,OAAA;EAAA,QAAA;EAAA,GAAA;AAAA,GAMb,KAAA,KAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"select.d.mts","names":[],"sources":["../../../src/components/atoms/select.tsx"],"mappings":";;;;cAMU,aAAI;UASJ;EACR,OAAO,MAAM;EACb;;UAGQ;EACR,OAAO,MAAM;EACb,SAAS;;UAOM,cAAc,KAC7B,MAAM,sBAAsB;EAG5B;EACA;EACA,WAAW,SAAS;EACpB,YAAY;;cAGR,WAAU,WAAA,aAAA,SAAA,aAAA,SAMb,UAAK,MAAA,IAAA"}