@omnifyjp/ui 0.5.3 → 1.0.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 (424) hide show
  1. package/README.md +3 -6
  2. package/dist/chunk-2C2HRGM7.js +51 -0
  3. package/dist/chunk-2C2HRGM7.js.map +1 -0
  4. package/dist/chunk-2TUWDXAC.js +196 -0
  5. package/dist/chunk-2TUWDXAC.js.map +1 -0
  6. package/dist/chunk-34ARZSNP.js +63 -0
  7. package/dist/chunk-34ARZSNP.js.map +1 -0
  8. package/dist/chunk-35DNN46W.js +13 -0
  9. package/dist/chunk-35DNN46W.js.map +1 -0
  10. package/dist/chunk-35U6QG4P.js +116 -0
  11. package/dist/chunk-35U6QG4P.js.map +1 -0
  12. package/dist/chunk-36YYHIJU.js +52 -0
  13. package/dist/chunk-36YYHIJU.js.map +1 -0
  14. package/dist/chunk-3EOHW4QN.js +35 -0
  15. package/dist/chunk-3EOHW4QN.js.map +1 -0
  16. package/dist/chunk-3VU56V66.js +41 -0
  17. package/dist/chunk-3VU56V66.js.map +1 -0
  18. package/dist/chunk-55E7D2HR.js +99 -0
  19. package/dist/chunk-55E7D2HR.js.map +1 -0
  20. package/dist/chunk-67YUL2ZS.js +53 -0
  21. package/dist/chunk-67YUL2ZS.js.map +1 -0
  22. package/dist/chunk-6DIDQ4TB.js +131 -0
  23. package/dist/chunk-6DIDQ4TB.js.map +1 -0
  24. package/dist/chunk-6GWVQB3Q.js +155 -0
  25. package/dist/chunk-6GWVQB3Q.js.map +1 -0
  26. package/dist/chunk-75WZR6HF.js +44 -0
  27. package/dist/chunk-75WZR6HF.js.map +1 -0
  28. package/dist/chunk-7IRLBU2I.js +114 -0
  29. package/dist/chunk-7IRLBU2I.js.map +1 -0
  30. package/dist/chunk-7RMTPT6O.js +99 -0
  31. package/dist/chunk-7RMTPT6O.js.map +1 -0
  32. package/dist/chunk-7XH3MGBR.js +128 -0
  33. package/dist/chunk-7XH3MGBR.js.map +1 -0
  34. package/dist/chunk-A3BB5ZOC.js +77 -0
  35. package/dist/chunk-A3BB5ZOC.js.map +1 -0
  36. package/dist/chunk-BAQWGQJG.js +106 -0
  37. package/dist/chunk-BAQWGQJG.js.map +1 -0
  38. package/dist/chunk-BRSM3SZP.js +46 -0
  39. package/dist/chunk-BRSM3SZP.js.map +1 -0
  40. package/dist/chunk-C34KSTWA.js +43 -0
  41. package/dist/chunk-C34KSTWA.js.map +1 -0
  42. package/dist/chunk-C5NZAOA7.js +54 -0
  43. package/dist/chunk-C5NZAOA7.js.map +1 -0
  44. package/dist/chunk-CUZR4JWM.js +23 -0
  45. package/dist/chunk-CUZR4JWM.js.map +1 -0
  46. package/dist/chunk-DGPY4WP3.js +11 -0
  47. package/dist/chunk-DGPY4WP3.js.map +1 -0
  48. package/dist/chunk-DNCZOUNY.js +239 -0
  49. package/dist/chunk-DNCZOUNY.js.map +1 -0
  50. package/dist/chunk-EWBCV7VA.js +65 -0
  51. package/dist/chunk-EWBCV7VA.js.map +1 -0
  52. package/dist/chunk-F2ZJLKDP.js +119 -0
  53. package/dist/chunk-F2ZJLKDP.js.map +1 -0
  54. package/dist/chunk-FLWMT4DB.js +66 -0
  55. package/dist/chunk-FLWMT4DB.js.map +1 -0
  56. package/dist/chunk-FRKG7JQY.js +48 -0
  57. package/dist/chunk-FRKG7JQY.js.map +1 -0
  58. package/dist/chunk-G7HTZBUR.js +187 -0
  59. package/dist/chunk-G7HTZBUR.js.map +1 -0
  60. package/dist/chunk-HWTW64R5.js +90 -0
  61. package/dist/chunk-HWTW64R5.js.map +1 -0
  62. package/dist/chunk-IAWKX5W4.js +219 -0
  63. package/dist/chunk-IAWKX5W4.js.map +1 -0
  64. package/dist/chunk-INLM7UJC.js +238 -0
  65. package/dist/chunk-INLM7UJC.js.map +1 -0
  66. package/dist/chunk-JAJMM32I.js +18 -0
  67. package/dist/chunk-JAJMM32I.js.map +1 -0
  68. package/dist/chunk-JJSVA3TH.js +61 -0
  69. package/dist/chunk-JJSVA3TH.js.map +1 -0
  70. package/dist/chunk-JLTBUACL.js +121 -0
  71. package/dist/chunk-JLTBUACL.js.map +1 -0
  72. package/dist/chunk-JRU2QX7T.js +38 -0
  73. package/dist/chunk-JRU2QX7T.js.map +1 -0
  74. package/dist/chunk-JXGRW2MR.js +17 -0
  75. package/dist/chunk-JXGRW2MR.js.map +1 -0
  76. package/dist/chunk-KTBOZ4NE.js +93 -0
  77. package/dist/chunk-KTBOZ4NE.js.map +1 -0
  78. package/dist/chunk-LMT327XH.js +56 -0
  79. package/dist/chunk-LMT327XH.js.map +1 -0
  80. package/dist/chunk-LTTNCAAA.js +138 -0
  81. package/dist/chunk-LTTNCAAA.js.map +1 -0
  82. package/dist/chunk-LVZNNIK4.js +111 -0
  83. package/dist/chunk-LVZNNIK4.js.map +1 -0
  84. package/dist/chunk-MJLFJPUG.js +143 -0
  85. package/dist/chunk-MJLFJPUG.js.map +1 -0
  86. package/dist/chunk-MZ2P566X.js +65 -0
  87. package/dist/chunk-MZ2P566X.js.map +1 -0
  88. package/dist/chunk-N47H4MHX.js +41 -0
  89. package/dist/chunk-N47H4MHX.js.map +1 -0
  90. package/dist/chunk-NNJTKHCE.js +160 -0
  91. package/dist/chunk-NNJTKHCE.js.map +1 -0
  92. package/dist/chunk-NPL2R5LD.js +171 -0
  93. package/dist/chunk-NPL2R5LD.js.map +1 -0
  94. package/dist/chunk-NU56GKGM.js +44 -0
  95. package/dist/chunk-NU56GKGM.js.map +1 -0
  96. package/dist/chunk-P3M5TZD2.js +24 -0
  97. package/dist/chunk-P3M5TZD2.js.map +1 -0
  98. package/dist/chunk-PGWNOZDX.js +28 -0
  99. package/dist/chunk-PGWNOZDX.js.map +1 -0
  100. package/dist/chunk-QB3UWRZH.js +92 -0
  101. package/dist/chunk-QB3UWRZH.js.map +1 -0
  102. package/dist/chunk-R2CDE5DO.js +33 -0
  103. package/dist/chunk-R2CDE5DO.js.map +1 -0
  104. package/dist/chunk-RQNZDWY3.js +65 -0
  105. package/dist/chunk-RQNZDWY3.js.map +1 -0
  106. package/dist/chunk-S6PDRGR5.js +109 -0
  107. package/dist/chunk-S6PDRGR5.js.map +1 -0
  108. package/dist/chunk-TGYQ3AKH.js +95 -0
  109. package/dist/chunk-TGYQ3AKH.js.map +1 -0
  110. package/dist/chunk-THQUH6WX.js +81 -0
  111. package/dist/chunk-THQUH6WX.js.map +1 -0
  112. package/dist/chunk-TJMK2KBE.js +112 -0
  113. package/dist/chunk-TJMK2KBE.js.map +1 -0
  114. package/dist/chunk-TTH7TWVX.js +30 -0
  115. package/dist/chunk-TTH7TWVX.js.map +1 -0
  116. package/dist/chunk-USIHM7FV.js +211 -0
  117. package/dist/chunk-USIHM7FV.js.map +1 -0
  118. package/dist/chunk-VVYSAGB3.js +104 -0
  119. package/dist/chunk-VVYSAGB3.js.map +1 -0
  120. package/dist/chunk-WD5KZE25.js +25 -0
  121. package/dist/chunk-WD5KZE25.js.map +1 -0
  122. package/dist/chunk-WL4ZO2H3.js +33 -0
  123. package/dist/chunk-WL4ZO2H3.js.map +1 -0
  124. package/dist/chunk-WRCHR4AK.js +23 -0
  125. package/dist/chunk-WRCHR4AK.js.map +1 -0
  126. package/dist/chunk-WS6E7HBT.js +39 -0
  127. package/dist/chunk-WS6E7HBT.js.map +1 -0
  128. package/dist/chunk-XOJJBNDX.js +33 -0
  129. package/dist/chunk-XOJJBNDX.js.map +1 -0
  130. package/dist/chunk-YBMEQZX7.js +164 -0
  131. package/dist/chunk-YBMEQZX7.js.map +1 -0
  132. package/dist/chunk-Z2QAABLM.js +86 -0
  133. package/dist/chunk-Z2QAABLM.js.map +1 -0
  134. package/dist/chunk-ZHEKDP5X.js +41 -0
  135. package/dist/chunk-ZHEKDP5X.js.map +1 -0
  136. package/dist/chunk-ZPMXRW2A.js +63 -0
  137. package/dist/chunk-ZPMXRW2A.js.map +1 -0
  138. package/dist/chunk-ZYEGBF7G.js +25 -0
  139. package/dist/chunk-ZYEGBF7G.js.map +1 -0
  140. package/dist/components/accordion.d.ts +37 -0
  141. package/dist/components/accordion.js +4 -0
  142. package/dist/components/accordion.js.map +1 -0
  143. package/dist/components/alert-dialog.d.ts +56 -0
  144. package/dist/components/alert-dialog.js +5 -0
  145. package/dist/components/alert-dialog.js.map +1 -0
  146. package/dist/components/alert.d.ts +68 -0
  147. package/dist/components/alert.js +4 -0
  148. package/dist/components/alert.js.map +1 -0
  149. package/dist/components/aspect-ratio.d.ts +23 -0
  150. package/dist/components/aspect-ratio.js +3 -0
  151. package/dist/components/aspect-ratio.js.map +1 -0
  152. package/dist/components/avatar.d.ts +48 -0
  153. package/dist/components/avatar.js +4 -0
  154. package/dist/components/avatar.js.map +1 -0
  155. package/dist/components/badge.d.ts +52 -0
  156. package/dist/components/badge.js +4 -0
  157. package/dist/components/badge.js.map +1 -0
  158. package/dist/components/breadcrumb.d.ts +50 -0
  159. package/dist/components/breadcrumb.js +4 -0
  160. package/dist/components/breadcrumb.js.map +1 -0
  161. package/dist/components/button.d.ts +81 -0
  162. package/dist/components/button.js +4 -0
  163. package/dist/components/button.js.map +1 -0
  164. package/dist/components/calendar-category-badge.d.ts +24 -0
  165. package/dist/components/calendar-category-badge.js +5 -0
  166. package/dist/components/calendar-category-badge.js.map +1 -0
  167. package/dist/components/calendar-event-chip.d.ts +41 -0
  168. package/dist/components/calendar-event-chip.js +4 -0
  169. package/dist/components/calendar-event-chip.js.map +1 -0
  170. package/dist/components/calendar-event-sheet.d.ts +68 -0
  171. package/dist/components/calendar-event-sheet.js +9 -0
  172. package/dist/components/calendar-event-sheet.js.map +1 -0
  173. package/dist/components/calendar-mini.d.ts +65 -0
  174. package/dist/components/calendar-mini.js +6 -0
  175. package/dist/components/calendar-mini.js.map +1 -0
  176. package/dist/components/calendar-toolbar.d.ts +58 -0
  177. package/dist/components/calendar-toolbar.js +7 -0
  178. package/dist/components/calendar-toolbar.js.map +1 -0
  179. package/dist/components/calendar.d.ts +19 -0
  180. package/dist/components/calendar.js +5 -0
  181. package/dist/components/calendar.js.map +1 -0
  182. package/dist/components/card.d.ts +43 -0
  183. package/dist/components/card.js +4 -0
  184. package/dist/components/card.js.map +1 -0
  185. package/dist/components/carousel.d.ts +53 -0
  186. package/dist/components/carousel.js +5 -0
  187. package/dist/components/carousel.js.map +1 -0
  188. package/dist/components/chart.d.ts +125 -0
  189. package/dist/components/chart.js +4 -0
  190. package/dist/components/chart.js.map +1 -0
  191. package/dist/components/checkbox.d.ts +24 -0
  192. package/dist/components/checkbox.js +4 -0
  193. package/dist/components/checkbox.js.map +1 -0
  194. package/dist/components/collapsible.d.ts +28 -0
  195. package/dist/components/collapsible.js +3 -0
  196. package/dist/components/collapsible.js.map +1 -0
  197. package/dist/components/color-picker.d.ts +35 -0
  198. package/dist/components/color-picker.js +7 -0
  199. package/dist/components/color-picker.js.map +1 -0
  200. package/dist/components/combobox.d.ts +98 -0
  201. package/dist/components/combobox.js +8 -0
  202. package/dist/components/combobox.js.map +1 -0
  203. package/dist/components/command.d.ts +63 -0
  204. package/dist/components/command.js +5 -0
  205. package/dist/components/command.js.map +1 -0
  206. package/dist/components/context-menu.d.ts +70 -0
  207. package/dist/components/context-menu.js +4 -0
  208. package/dist/components/context-menu.js.map +1 -0
  209. package/dist/components/date-picker.d.ts +71 -0
  210. package/dist/components/date-picker.js +7 -0
  211. package/dist/components/date-picker.js.map +1 -0
  212. package/dist/components/dialog.d.ts +58 -0
  213. package/dist/components/dialog.js +4 -0
  214. package/dist/components/dialog.js.map +1 -0
  215. package/dist/components/drawer.d.ts +60 -0
  216. package/dist/components/drawer.js +4 -0
  217. package/dist/components/drawer.js.map +1 -0
  218. package/dist/components/dropdown-menu.d.ts +76 -0
  219. package/dist/components/dropdown-menu.js +4 -0
  220. package/dist/components/dropdown-menu.js.map +1 -0
  221. package/dist/components/file-upload.d.ts +44 -0
  222. package/dist/components/file-upload.js +5 -0
  223. package/dist/components/file-upload.js.map +1 -0
  224. package/dist/components/form.d.ts +67 -0
  225. package/dist/components/form.js +5 -0
  226. package/dist/components/form.js.map +1 -0
  227. package/dist/components/hover-card.d.ts +43 -0
  228. package/dist/components/hover-card.js +4 -0
  229. package/dist/components/hover-card.js.map +1 -0
  230. package/dist/components/input-otp.d.ts +38 -0
  231. package/dist/components/input-otp.js +4 -0
  232. package/dist/components/input-otp.js.map +1 -0
  233. package/dist/components/input.d.ts +38 -0
  234. package/dist/components/input.js +4 -0
  235. package/dist/components/input.js.map +1 -0
  236. package/dist/components/label.d.ts +20 -0
  237. package/dist/components/label.js +4 -0
  238. package/dist/components/label.js.map +1 -0
  239. package/dist/components/menubar.d.ts +82 -0
  240. package/dist/components/menubar.js +4 -0
  241. package/dist/components/menubar.js.map +1 -0
  242. package/dist/components/navigation-menu.d.ts +64 -0
  243. package/dist/components/navigation-menu.js +4 -0
  244. package/dist/components/navigation-menu.js.map +1 -0
  245. package/dist/components/pagination.d.ts +59 -0
  246. package/dist/components/pagination.js +5 -0
  247. package/dist/components/pagination.js.map +1 -0
  248. package/dist/components/password-input.d.ts +32 -0
  249. package/dist/components/password-input.js +5 -0
  250. package/dist/components/password-input.js.map +1 -0
  251. package/dist/components/permission-grid.d.ts +67 -0
  252. package/dist/components/permission-grid.js +5 -0
  253. package/dist/components/permission-grid.js.map +1 -0
  254. package/dist/components/popover.d.ts +37 -0
  255. package/dist/components/popover.js +4 -0
  256. package/dist/components/popover.js.map +1 -0
  257. package/dist/components/progress.d.ts +20 -0
  258. package/dist/components/progress.js +4 -0
  259. package/dist/components/progress.js.map +1 -0
  260. package/dist/components/radio-group.d.ts +38 -0
  261. package/dist/components/radio-group.js +4 -0
  262. package/dist/components/radio-group.js.map +1 -0
  263. package/dist/components/rating.d.ts +35 -0
  264. package/dist/components/rating.js +4 -0
  265. package/dist/components/rating.js.map +1 -0
  266. package/dist/components/resizable.d.ts +36 -0
  267. package/dist/components/resizable.js +4 -0
  268. package/dist/components/resizable.js.map +1 -0
  269. package/dist/components/scope-tree.d.ts +78 -0
  270. package/dist/components/scope-tree.js +5 -0
  271. package/dist/components/scope-tree.js.map +1 -0
  272. package/dist/components/scope-type-badge.d.ts +35 -0
  273. package/dist/components/scope-type-badge.js +5 -0
  274. package/dist/components/scope-type-badge.js.map +1 -0
  275. package/dist/components/scroll-area.d.ts +29 -0
  276. package/dist/components/scroll-area.js +4 -0
  277. package/dist/components/scroll-area.js.map +1 -0
  278. package/dist/components/select.d.ts +52 -0
  279. package/dist/components/select.js +4 -0
  280. package/dist/components/select.js.map +1 -0
  281. package/dist/components/separator.d.ts +24 -0
  282. package/dist/components/separator.js +4 -0
  283. package/dist/components/separator.js.map +1 -0
  284. package/dist/components/sheet.d.ts +51 -0
  285. package/dist/components/sheet.js +4 -0
  286. package/dist/components/sheet.js.map +1 -0
  287. package/dist/components/skeleton.d.ts +25 -0
  288. package/dist/components/skeleton.js +4 -0
  289. package/dist/components/skeleton.js.map +1 -0
  290. package/dist/components/slider.d.ts +24 -0
  291. package/dist/components/slider.js +4 -0
  292. package/dist/components/slider.js.map +1 -0
  293. package/dist/components/slug-input.d.ts +50 -0
  294. package/dist/components/slug-input.js +6 -0
  295. package/dist/components/slug-input.js.map +1 -0
  296. package/dist/components/sonner.d.ts +22 -0
  297. package/dist/components/sonner.js +3 -0
  298. package/dist/components/sonner.js.map +1 -0
  299. package/dist/components/stage-type-badge.d.ts +30 -0
  300. package/dist/components/stage-type-badge.js +5 -0
  301. package/dist/components/stage-type-badge.js.map +1 -0
  302. package/dist/components/switch.d.ts +26 -0
  303. package/dist/components/switch.js +4 -0
  304. package/dist/components/switch.js.map +1 -0
  305. package/dist/components/table.d.ts +57 -0
  306. package/dist/components/table.js +4 -0
  307. package/dist/components/table.js.map +1 -0
  308. package/dist/components/tabs.d.ts +39 -0
  309. package/dist/components/tabs.js +4 -0
  310. package/dist/components/tabs.js.map +1 -0
  311. package/dist/components/tag-input.d.ts +40 -0
  312. package/dist/components/tag-input.js +5 -0
  313. package/dist/components/tag-input.js.map +1 -0
  314. package/dist/components/textarea.d.ts +21 -0
  315. package/dist/components/textarea.js +4 -0
  316. package/dist/components/textarea.js.map +1 -0
  317. package/dist/components/time-picker.d.ts +57 -0
  318. package/dist/components/time-picker.js +8 -0
  319. package/dist/components/time-picker.js.map +1 -0
  320. package/dist/components/toggle-group.d.ts +45 -0
  321. package/dist/components/toggle-group.js +5 -0
  322. package/dist/components/toggle-group.js.map +1 -0
  323. package/dist/components/toggle.d.ts +31 -0
  324. package/dist/components/toggle.js +4 -0
  325. package/dist/components/toggle.js.map +1 -0
  326. package/dist/components/tooltip.d.ts +34 -0
  327. package/dist/components/tooltip.js +4 -0
  328. package/dist/components/tooltip.js.map +1 -0
  329. package/dist/components/workflow-category-badge.d.ts +32 -0
  330. package/dist/components/workflow-category-badge.js +5 -0
  331. package/dist/components/workflow-category-badge.js.map +1 -0
  332. package/dist/components/workflow-diagram.d.ts +63 -0
  333. package/dist/components/workflow-diagram.js +5 -0
  334. package/dist/components/workflow-diagram.js.map +1 -0
  335. package/dist/components/workflow-status-badge.d.ts +30 -0
  336. package/dist/components/workflow-status-badge.js +5 -0
  337. package/dist/components/workflow-status-badge.js.map +1 -0
  338. package/dist/components/workflow-stepper.d.ts +52 -0
  339. package/dist/components/workflow-stepper.js +4 -0
  340. package/dist/components/workflow-stepper.js.map +1 -0
  341. package/dist/hooks/use-mobile.d.ts +3 -3
  342. package/dist/hooks/use-mobile.js +1 -1
  343. package/dist/hooks/use-mobile.js.map +1 -1
  344. package/dist/index.d.ts +108 -15
  345. package/dist/index.js +69 -13
  346. package/dist/lib/types.d.ts +84 -1
  347. package/dist/lib/types.js +1 -1
  348. package/dist/lib/types.js.map +1 -1
  349. package/dist/lib/utils.d.ts +5 -1
  350. package/dist/lib/utils.js +1 -1
  351. package/dist/lib/utils.js.map +1 -1
  352. package/package.json +68 -31
  353. package/src/styles/fonts.css +0 -0
  354. package/src/styles/index.css +3 -1
  355. package/src/styles/tailwind.css +4 -0
  356. package/src/styles/theme.css +461 -0
  357. package/dist/chunk-2GN4WIOV.js +0 -240
  358. package/dist/chunk-2GN4WIOV.js.map +0 -1
  359. package/dist/chunk-5BL4VFRJ.js +0 -57
  360. package/dist/chunk-5BL4VFRJ.js.map +0 -1
  361. package/dist/chunk-735JNJJO.js +0 -27
  362. package/dist/chunk-735JNJJO.js.map +0 -1
  363. package/dist/chunk-EJEVW4RO.js +0 -49
  364. package/dist/chunk-EJEVW4RO.js.map +0 -1
  365. package/dist/chunk-FVOQZTHE.js +0 -191
  366. package/dist/chunk-FVOQZTHE.js.map +0 -1
  367. package/dist/chunk-ITXOZ4IR.js +0 -85
  368. package/dist/chunk-ITXOZ4IR.js.map +0 -1
  369. package/dist/chunk-NVPNMQSR.js +0 -30
  370. package/dist/chunk-NVPNMQSR.js.map +0 -1
  371. package/dist/chunk-O25D7DCP.js +0 -72
  372. package/dist/chunk-O25D7DCP.js.map +0 -1
  373. package/dist/chunk-O2ADW2GC.js +0 -224
  374. package/dist/chunk-O2ADW2GC.js.map +0 -1
  375. package/dist/chunk-OY3PSPA5.js +0 -661
  376. package/dist/chunk-OY3PSPA5.js.map +0 -1
  377. package/dist/chunk-UASABUQA.js +0 -39
  378. package/dist/chunk-UASABUQA.js.map +0 -1
  379. package/dist/chunk-UR2QLIS2.js +0 -93
  380. package/dist/chunk-UR2QLIS2.js.map +0 -1
  381. package/dist/chunk-XDXGUPCR.js +0 -123
  382. package/dist/chunk-XDXGUPCR.js.map +0 -1
  383. package/dist/components/AppShell.d.ts +0 -27
  384. package/dist/components/AppShell.js +0 -13
  385. package/dist/components/AppShell.js.map +0 -1
  386. package/dist/components/Header.d.ts +0 -11
  387. package/dist/components/Header.js +0 -9
  388. package/dist/components/Header.js.map +0 -1
  389. package/dist/components/LanguageSelector.d.ts +0 -11
  390. package/dist/components/LanguageSelector.js +0 -5
  391. package/dist/components/LanguageSelector.js.map +0 -1
  392. package/dist/components/OrganizationSelector.d.ts +0 -8
  393. package/dist/components/OrganizationSelector.js +0 -4
  394. package/dist/components/OrganizationSelector.js.map +0 -1
  395. package/dist/components/OrganizationSetupModal.d.ts +0 -5
  396. package/dist/components/OrganizationSetupModal.js +0 -4
  397. package/dist/components/OrganizationSetupModal.js.map +0 -1
  398. package/dist/components/PageContainer.d.ts +0 -105
  399. package/dist/components/PageContainer.js +0 -3
  400. package/dist/components/PageContainer.js.map +0 -1
  401. package/dist/components/ServiceMenu.d.ts +0 -11
  402. package/dist/components/ServiceMenu.js +0 -3
  403. package/dist/components/ServiceMenu.js.map +0 -1
  404. package/dist/components/Sidebar.d.ts +0 -11
  405. package/dist/components/Sidebar.js +0 -5
  406. package/dist/components/Sidebar.js.map +0 -1
  407. package/dist/contexts/LanguageContext.d.ts +0 -17
  408. package/dist/contexts/LanguageContext.js +0 -4
  409. package/dist/contexts/LanguageContext.js.map +0 -1
  410. package/dist/contexts/OrganizationContext.d.ts +0 -28
  411. package/dist/contexts/OrganizationContext.js +0 -3
  412. package/dist/contexts/OrganizationContext.js.map +0 -1
  413. package/dist/contexts/ThemeContext.d.ts +0 -14
  414. package/dist/contexts/ThemeContext.js +0 -3
  415. package/dist/contexts/ThemeContext.js.map +0 -1
  416. package/dist/hooks/useDateFormat.d.ts +0 -28
  417. package/dist/hooks/useDateFormat.js +0 -4
  418. package/dist/hooks/useDateFormat.js.map +0 -1
  419. package/dist/i18n.d.ts +0 -38
  420. package/dist/i18n.js +0 -3
  421. package/dist/i18n.js.map +0 -1
  422. package/dist/types.d.ts +0 -91
  423. package/dist/types.js +0 -3
  424. package/dist/types.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import { CircleIcon } from 'lucide-react';
3
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function RadioGroup({
7
+ className,
8
+ ...props
9
+ }) {
10
+ return /* @__PURE__ */ jsx(
11
+ RadioGroupPrimitive.Root,
12
+ {
13
+ "data-slot": "radio-group",
14
+ className: cn("grid gap-3", className),
15
+ ...props
16
+ }
17
+ );
18
+ }
19
+ function RadioGroupItem({
20
+ className,
21
+ ...props
22
+ }) {
23
+ return /* @__PURE__ */ jsx(
24
+ RadioGroupPrimitive.Item,
25
+ {
26
+ "data-slot": "radio-group-item",
27
+ className: cn(
28
+ "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
29
+ className
30
+ ),
31
+ ...props,
32
+ children: /* @__PURE__ */ jsx(
33
+ RadioGroupPrimitive.Indicator,
34
+ {
35
+ "data-slot": "radio-group-indicator",
36
+ className: "relative flex items-center justify-center",
37
+ children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
38
+ }
39
+ )
40
+ }
41
+ );
42
+ }
43
+
44
+ export { RadioGroup, RadioGroupItem };
45
+ //# sourceMappingURL=chunk-BRSM3SZP.js.map
46
+ //# sourceMappingURL=chunk-BRSM3SZP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/radio-group.tsx"],"names":[],"mappings":";;;;;AA0BA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,uBACE,GAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG;AAAA;AAAA,GACN;AAEJ;AAcA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACE,GAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wXAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAqB,mBAAA,CAAA,SAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,uBAAA;AAAA,UACV,SAAA,EAAU,2CAAA;AAAA,UAEV,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,iFAAA,EAAkF;AAAA;AAAA;AAC1G;AAAA,GACF;AAEJ","file":"chunk-BRSM3SZP.js","sourcesContent":["import * as React from \"react\";\nimport { CircleIcon } from \"lucide-react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"../lib/utils\";\n\ntype RadioGroupProps = React.ComponentProps<typeof RadioGroupPrimitive.Root>;\n\n/**\n * Container for a set of mutually exclusive radio options.\n * Use with {@link RadioGroupItem} to build single-selection groups.\n *\n * @example\n * ```tsx\n * <RadioGroup defaultValue=\"option-1\">\n * <div className=\"flex items-center gap-2\">\n * <RadioGroupItem value=\"option-1\" id=\"opt1\" />\n * <Label htmlFor=\"opt1\">Option 1</Label>\n * </div>\n * <div className=\"flex items-center gap-2\">\n * <RadioGroupItem value=\"option-2\" id=\"opt2\" />\n * <Label htmlFor=\"opt2\">Option 2</Label>\n * </div>\n * </RadioGroup>\n * ```\n */\nfunction RadioGroup({\n className,\n ...props\n}: RadioGroupProps) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\ntype RadioGroupItemProps = React.ComponentProps<typeof RadioGroupPrimitive.Item>;\n\n/**\n * Individual radio option within a {@link RadioGroup}.\n * Renders as a circular indicator that fills when selected.\n *\n * @example\n * ```tsx\n * <RadioGroupItem value=\"dark\" id=\"theme-dark\" />\n * <Label htmlFor=\"theme-dark\">Dark mode</Label>\n * ```\n */\nfunction RadioGroupItem({\n className,\n ...props\n}: RadioGroupItemProps) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\nexport type { RadioGroupProps, RadioGroupItemProps };"]}
@@ -0,0 +1,43 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function Popover({
6
+ ...props
7
+ }) {
8
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
9
+ }
10
+ function PopoverTrigger({
11
+ ...props
12
+ }) {
13
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
14
+ }
15
+ function PopoverContent({
16
+ className,
17
+ align = "center",
18
+ sideOffset = 4,
19
+ ...props
20
+ }) {
21
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
22
+ PopoverPrimitive.Content,
23
+ {
24
+ "data-slot": "popover-content",
25
+ align,
26
+ sideOffset,
27
+ className: cn(
28
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-[var(--density-popover)] shadow-md outline-hidden",
29
+ className
30
+ ),
31
+ ...props
32
+ }
33
+ ) });
34
+ }
35
+ function PopoverAnchor({
36
+ ...props
37
+ }) {
38
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
39
+ }
40
+
41
+ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
42
+ //# sourceMappingURL=chunk-C34KSTWA.js.map
43
+ //# sourceMappingURL=chunk-C34KSTWA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/popover.tsx"],"names":[],"mappings":";;;;AA6BA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,2BAAyB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,2BAAyB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,ufAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAGA,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAAyB,gBAAA,CAAA,MAAA,EAAjB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE","file":"chunk-C34KSTWA.js","sourcesContent":["import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"../lib/utils\";\n\n/**\n * Floating popover component built on Radix UI Popover.\n *\n * Displays rich content in a floating panel anchored to a trigger element.\n * Supports controlled (`open`/`onOpenChange`) and uncontrolled usage.\n * Content is portaled and positioned automatically.\n *\n * @example\n * ```tsx\n * <Popover>\n * <PopoverTrigger asChild>\n * <Button variant=\"outline\">Open Popover</Button>\n * </PopoverTrigger>\n * <PopoverContent>\n * <div className=\"space-y-2\">\n * <h4 className=\"font-medium text-sm\">Dimensions</h4>\n * <p className=\"text-sm text-muted-foreground\">\n * Set the dimensions for the layer.\n * </p>\n * </div>\n * </PopoverContent>\n * </Popover>\n * ```\n */\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\n/** Element that toggles the popover when clicked. Use `asChild` to merge into your own button. */\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\n/** Floating content panel positioned relative to the trigger. */\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-[var(--density-popover)] shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\n/** Custom anchor element for positioning the popover content relative to a different element than the trigger. */\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };"]}
@@ -0,0 +1,54 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ function TooltipProvider({
6
+ delayDuration = 0,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ TooltipPrimitive.Provider,
11
+ {
12
+ "data-slot": "tooltip-provider",
13
+ delayDuration,
14
+ ...props
15
+ }
16
+ );
17
+ }
18
+ function Tooltip({
19
+ ...props
20
+ }) {
21
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
22
+ }
23
+ function TooltipTrigger({
24
+ ...props
25
+ }) {
26
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
27
+ }
28
+ function TooltipContent({
29
+ className,
30
+ sideOffset = 0,
31
+ children,
32
+ ...props
33
+ }) {
34
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
35
+ TooltipPrimitive.Content,
36
+ {
37
+ "data-slot": "tooltip-content",
38
+ sideOffset,
39
+ className: cn(
40
+ "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
41
+ className
42
+ ),
43
+ ...props,
44
+ children: [
45
+ children,
46
+ /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
47
+ ]
48
+ }
49
+ ) });
50
+ }
51
+
52
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
53
+ //# sourceMappingURL=chunk-C5NZAOA7.js.map
54
+ //# sourceMappingURL=chunk-C5NZAOA7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/tooltip.tsx"],"names":[],"mappings":";;;;AAMA,SAAS,eAAA,CAAgB;AAAA,EACvB,aAAA,GAAgB,CAAA;AAAA,EAChB,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,QAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,aAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAuBA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACE,GAAA,CAAC,mBACC,QAAA,kBAAA,GAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA,EACxD,CAAA;AAEJ;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,2BAAyB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,IAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,waAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA,CAAkB,gBAAA,CAAA,KAAA,EAAjB,EAAuB,SAAA,EAAU,8FAAA,EAA+F;AAAA;AAAA;AAAA,GACnI,EACF,CAAA;AAEJ","file":"chunk-C5NZAOA7.js","sourcesContent":["import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../lib/utils\";\n\n/** Provider that configures shared tooltip settings like delay duration. */\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\n/**\n * Tooltip component built on Radix UI Tooltip.\n *\n * Displays a short informational label when the user hovers over or focuses\n * an element. Includes a built-in `TooltipProvider` with zero delay.\n * Renders with an arrow pointer for visual anchoring.\n *\n * @example\n * ```tsx\n * <Tooltip>\n * <TooltipTrigger asChild>\n * <Button variant=\"ghost\" size=\"icon\">\n * <InfoIcon className=\"size-4\" />\n * </Button>\n * </TooltipTrigger>\n * <TooltipContent>\n * <p>This is a helpful tooltip</p>\n * </TooltipContent>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\n/** Element that shows the tooltip on hover/focus. Use `asChild` to merge into your own element. */\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\n/** Floating label that appears near the trigger. Includes an arrow indicator. */\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };"]}
@@ -0,0 +1,23 @@
1
+ import { Toaster as Toaster$1 } from 'sonner';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ // src/components/sonner.tsx
5
+ var Toaster = ({ ...props }) => {
6
+ return /* @__PURE__ */ jsx(
7
+ Toaster$1,
8
+ {
9
+ theme: "light",
10
+ className: "toaster group",
11
+ style: {
12
+ "--normal-bg": "var(--popover)",
13
+ "--normal-text": "var(--popover-foreground)",
14
+ "--normal-border": "var(--border)"
15
+ },
16
+ ...props
17
+ }
18
+ );
19
+ };
20
+
21
+ export { Toaster };
22
+ //# sourceMappingURL=chunk-CUZR4JWM.js.map
23
+ //# sourceMappingURL=chunk-CUZR4JWM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/sonner.tsx"],"names":["Sonner"],"mappings":";;;;AAmBA,IAAM,OAAA,GAAU,CAAC,EAAE,GAAG,OAAM,KAAoB;AAC9C,EAAA,uBACE,GAAA;AAAA,IAACA,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAU,eAAA;AAAA,MACV,KAAA,EACE;AAAA,QACE,aAAA,EAAe,gBAAA;AAAA,QACf,eAAA,EAAiB,2BAAA;AAAA,QACjB,iBAAA,EAAmB;AAAA,OACrB;AAAA,MAED,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-CUZR4JWM.js","sourcesContent":["import * as React from \"react\";\nimport { Toaster as Sonner, ToasterProps } from \"sonner\";\n\n/**\n * Toast notification container powered by the Sonner library.\n * Renders toast messages at a configurable position on screen.\n * Place this once at the root of your app, then use `toast()` to trigger notifications.\n *\n * @example\n * ```tsx\n * // In your root layout:\n * <Toaster />\n *\n * // Anywhere in your app:\n * import { toast } from \"sonner\";\n * toast.success(\"Changes saved\");\n * toast.error(\"Something went wrong\");\n * ```\n */\nconst Toaster = ({ ...props }: ToasterProps) => {\n return (\n <Sonner\n theme=\"light\"\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };"]}
@@ -0,0 +1,11 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ // src/lib/utils.ts
5
+ function cn(...inputs) {
6
+ return twMerge(clsx(inputs));
7
+ }
8
+
9
+ export { cn };
10
+ //# sourceMappingURL=chunk-DGPY4WP3.js.map
11
+ //# sourceMappingURL=chunk-DGPY4WP3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts"],"names":[],"mappings":";;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B","file":"chunk-DGPY4WP3.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"]}
@@ -0,0 +1,239 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as React from 'react';
3
+ import * as RechartsPrimitive from 'recharts';
4
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
+
6
+ var THEMES = { light: "", dark: ".dark" };
7
+ var ChartContext = React.createContext(null);
8
+ function useChart() {
9
+ const context = React.useContext(ChartContext);
10
+ if (!context) {
11
+ throw new Error("useChart must be used within a <ChartContainer />");
12
+ }
13
+ return context;
14
+ }
15
+ function ChartContainer({
16
+ id,
17
+ className,
18
+ children,
19
+ config,
20
+ ...props
21
+ }) {
22
+ const uniqueId = React.useId();
23
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
24
+ return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
25
+ "div",
26
+ {
27
+ "data-slot": "chart",
28
+ "data-chart": chartId,
29
+ className: cn(
30
+ "[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
31
+ className
32
+ ),
33
+ ...props,
34
+ children: [
35
+ /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
36
+ /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
37
+ ]
38
+ }
39
+ ) });
40
+ }
41
+ var ChartStyle = ({ id, config }) => {
42
+ const colorConfig = Object.entries(config).filter(
43
+ ([, config2]) => config2.theme || config2.color
44
+ );
45
+ if (!colorConfig.length) {
46
+ return null;
47
+ }
48
+ return /* @__PURE__ */ jsx(
49
+ "style",
50
+ {
51
+ dangerouslySetInnerHTML: {
52
+ __html: Object.entries(THEMES).map(
53
+ ([theme, prefix]) => `
54
+ ${prefix} [data-chart=${id}] {
55
+ ${colorConfig.map(([key, itemConfig]) => {
56
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
57
+ return color ? ` --color-${key}: ${color};` : null;
58
+ }).join("\n")}
59
+ }
60
+ `
61
+ ).join("\n")
62
+ }
63
+ }
64
+ );
65
+ };
66
+ var ChartTooltip = RechartsPrimitive.Tooltip;
67
+ function ChartTooltipContent({
68
+ active,
69
+ payload,
70
+ className,
71
+ indicator = "dot",
72
+ hideLabel = false,
73
+ hideIndicator = false,
74
+ label,
75
+ labelFormatter,
76
+ labelClassName,
77
+ formatter,
78
+ color,
79
+ nameKey,
80
+ labelKey
81
+ }) {
82
+ const { config } = useChart();
83
+ const tooltipLabel = React.useMemo(() => {
84
+ if (hideLabel || !payload?.length) {
85
+ return null;
86
+ }
87
+ const [item] = payload;
88
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
89
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
90
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
91
+ if (labelFormatter) {
92
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
93
+ }
94
+ if (!value) {
95
+ return null;
96
+ }
97
+ return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
98
+ }, [
99
+ label,
100
+ labelFormatter,
101
+ payload,
102
+ hideLabel,
103
+ labelClassName,
104
+ config,
105
+ labelKey
106
+ ]);
107
+ if (!active || !payload?.length) {
108
+ return null;
109
+ }
110
+ const nestLabel = payload.length === 1 && indicator !== "dot";
111
+ return /* @__PURE__ */ jsxs(
112
+ "div",
113
+ {
114
+ className: cn(
115
+ "border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl",
116
+ className
117
+ ),
118
+ children: [
119
+ !nestLabel ? tooltipLabel : null,
120
+ /* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
121
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
122
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
123
+ const indicatorColor = color || item.payload?.fill || item.color;
124
+ return /* @__PURE__ */ jsx(
125
+ "div",
126
+ {
127
+ className: cn(
128
+ "[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5",
129
+ indicator === "dot" && "items-center"
130
+ ),
131
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
132
+ itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
133
+ "div",
134
+ {
135
+ className: cn(
136
+ "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
137
+ {
138
+ "h-2.5 w-2.5": indicator === "dot",
139
+ "w-1": indicator === "line",
140
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
141
+ "my-0.5": nestLabel && indicator === "dashed"
142
+ }
143
+ ),
144
+ style: {
145
+ "--color-bg": indicatorColor,
146
+ "--color-border": indicatorColor
147
+ }
148
+ }
149
+ ),
150
+ /* @__PURE__ */ jsxs(
151
+ "div",
152
+ {
153
+ className: cn(
154
+ "flex flex-1 justify-between leading-none",
155
+ nestLabel ? "items-end" : "items-center"
156
+ ),
157
+ children: [
158
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
159
+ nestLabel ? tooltipLabel : null,
160
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
161
+ ] }),
162
+ item.value && /* @__PURE__ */ jsx("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
163
+ ]
164
+ }
165
+ )
166
+ ] })
167
+ },
168
+ item.dataKey
169
+ );
170
+ }) })
171
+ ]
172
+ }
173
+ );
174
+ }
175
+ var ChartLegend = RechartsPrimitive.Legend;
176
+ function ChartLegendContent({
177
+ className,
178
+ hideIcon = false,
179
+ payload,
180
+ verticalAlign = "bottom",
181
+ nameKey
182
+ }) {
183
+ const { config } = useChart();
184
+ if (!payload?.length) {
185
+ return null;
186
+ }
187
+ return /* @__PURE__ */ jsx(
188
+ "div",
189
+ {
190
+ className: cn(
191
+ "flex items-center justify-center gap-4",
192
+ verticalAlign === "top" ? "pb-3" : "pt-3",
193
+ className
194
+ ),
195
+ children: payload.map((item) => {
196
+ const key = `${nameKey || item.dataKey || "value"}`;
197
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
198
+ return /* @__PURE__ */ jsxs(
199
+ "div",
200
+ {
201
+ className: cn(
202
+ "[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
203
+ ),
204
+ children: [
205
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
206
+ "div",
207
+ {
208
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
209
+ style: {
210
+ backgroundColor: item.color
211
+ }
212
+ }
213
+ ),
214
+ itemConfig?.label
215
+ ]
216
+ },
217
+ item.value
218
+ );
219
+ })
220
+ }
221
+ );
222
+ }
223
+ function getPayloadConfigFromPayload(config, payload, key) {
224
+ if (typeof payload !== "object" || payload === null) {
225
+ return void 0;
226
+ }
227
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
228
+ let configLabelKey = key;
229
+ if (key in payload && typeof payload[key] === "string") {
230
+ configLabelKey = payload[key];
231
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
232
+ configLabelKey = payloadPayload[key];
233
+ }
234
+ return configLabelKey in config ? config[configLabelKey] : config[key];
235
+ }
236
+
237
+ export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
238
+ //# sourceMappingURL=chunk-DNCZOUNY.js.map
239
+ //# sourceMappingURL=chunk-DNCZOUNY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chart.tsx"],"names":["config"],"mappings":"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","file":"chunk-DNCZOUNY.js","sourcesContent":["import * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\n/**\n * Configuration object for chart data series. Each key maps to a data series\n * and defines its label, optional icon, and color (either a single color or\n * per-theme colors).\n *\n * @example\n * ```tsx\n * const config: ChartConfig = {\n * revenue: { label: \"Revenue\", color: \"var(--color-blue-500)\" },\n * expenses: { label: \"Expenses\", theme: { light: \"#ef4444\", dark: \"#f87171\" } },\n * };\n * ```\n */\nexport type ChartConfig = {\n [k in string]: {\n /** Display label for this data series. */\n label?: React.ReactNode;\n /** Optional icon component displayed in the legend. */\n icon?: React.ComponentType;\n } & (\n | { /** Single color used across all themes. */ color?: string; theme?: never }\n | { color?: never; /** Per-theme color mapping (light/dark). */ theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\n/**\n * Hook to access the chart configuration from the nearest ChartContainer.\n * Must be used within a {@link ChartContainer}.\n *\n * @throws If used outside of a ChartContainer.\n */\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\n/**\n * Wrapper that provides chart configuration context, injects theme-aware CSS\n * custom properties for data series colors, and renders a Recharts\n * `ResponsiveContainer`.\n *\n * @param config - Chart configuration mapping data keys to labels, icons, and colors.\n *\n * @example\n * ```tsx\n * <ChartContainer config={{ revenue: { label: \"Revenue\", color: \"#3b82f6\" } }}>\n * <BarChart data={data}>\n * <Bar dataKey=\"revenue\" fill=\"var(--color-revenue)\" />\n * </BarChart>\n * </ChartContainer>\n * ```\n */\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Chart configuration mapping data keys to labels, icons, and colors. */\n config: ChartConfig;\n /** Recharts chart element (e.g. BarChart, LineChart). */\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\n/** Injects a `<style>` tag with CSS custom properties for chart colors, scoped to the chart container. */\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\n/** Re-export of Recharts Tooltip for use with ChartTooltipContent. */\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/**\n * Styled tooltip content for use inside `<ChartTooltip content={<ChartTooltipContent />} />`.\n * Renders data series with color indicators, labels from ChartConfig, and formatted values.\n *\n * @param indicator - Shape of the color indicator: `\"dot\"`, `\"line\"`, or `\"dashed\"`.\n * @param hideLabel - Whether to hide the tooltip header label.\n * @param hideIndicator - Whether to hide the color indicator.\n * @param nameKey - Data key to resolve series name from the payload.\n * @param labelKey - Data key to resolve the tooltip header label from config.\n */\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<\"div\"> & {\n active?: boolean;\n payload?: Array<{\n name?: string;\n value?: string | number;\n dataKey?: string;\n color?: string;\n fill?: string;\n payload?: Record<string, unknown>;\n [key: string]: unknown;\n }>;\n label?: string;\n labelClassName?: string;\n labelFormatter?: (label: unknown, payload: Array<Record<string, unknown>>) => React.ReactNode;\n formatter?: (value: unknown, name: string, item: Record<string, unknown>, index: number, payload: unknown) => React.ReactNode;\n color?: string;\n /** Whether to hide the tooltip header label. */\n hideLabel?: boolean;\n /** Whether to hide the color indicator next to each series. */\n hideIndicator?: boolean;\n /** Shape of the color indicator. Defaults to `\"dot\"`. */\n indicator?: \"line\" | \"dot\" | \"dashed\";\n /** Data key used to resolve the series name from payload. */\n nameKey?: string;\n /** Data key used to resolve the header label from config. */\n labelKey?: string;\n }) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || (item.payload?.fill as string) || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/** Re-export of Recharts Legend for use with ChartLegendContent. */\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/**\n * Styled legend content for use inside `<ChartLegend content={<ChartLegendContent />} />`.\n * Renders a horizontal list of series labels with color indicators or custom icons from ChartConfig.\n *\n * @param hideIcon - Whether to hide the color dot / custom icon.\n * @param nameKey - Data key to resolve the series name from payload.\n */\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n payload?: Array<{\n value?: string;\n dataKey?: string;\n color?: string;\n [key: string]: unknown;\n }>;\n verticalAlign?: \"top\" | \"bottom\" | \"middle\";\n /** Whether to hide the color indicator or custom icon. */\n hideIcon?: boolean;\n /** Data key used to resolve the series name from payload. */\n nameKey?: string;\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};"]}
@@ -0,0 +1,65 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as React from 'react';
3
+ import * as SliderPrimitive from '@radix-ui/react-slider';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ function Slider({
7
+ className,
8
+ defaultValue,
9
+ value,
10
+ min = 0,
11
+ max = 100,
12
+ ...props
13
+ }) {
14
+ const _values = React.useMemo(
15
+ () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
16
+ [value, defaultValue, min, max]
17
+ );
18
+ return /* @__PURE__ */ jsxs(
19
+ SliderPrimitive.Root,
20
+ {
21
+ "data-slot": "slider",
22
+ defaultValue,
23
+ value,
24
+ min,
25
+ max,
26
+ className: cn(
27
+ "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
28
+ className
29
+ ),
30
+ ...props,
31
+ children: [
32
+ /* @__PURE__ */ jsx(
33
+ SliderPrimitive.Track,
34
+ {
35
+ "data-slot": "slider-track",
36
+ className: cn(
37
+ "bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
38
+ ),
39
+ children: /* @__PURE__ */ jsx(
40
+ SliderPrimitive.Range,
41
+ {
42
+ "data-slot": "slider-range",
43
+ className: cn(
44
+ "bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
45
+ )
46
+ }
47
+ )
48
+ }
49
+ ),
50
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
51
+ SliderPrimitive.Thumb,
52
+ {
53
+ "data-slot": "slider-thumb",
54
+ className: "border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
55
+ },
56
+ index
57
+ ))
58
+ ]
59
+ }
60
+ );
61
+ }
62
+
63
+ export { Slider };
64
+ //# sourceMappingURL=chunk-EWBCV7VA.js.map
65
+ //# sourceMappingURL=chunk-EWBCV7VA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/slider.tsx"],"names":[],"mappings":";;;;;AAuBA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,OAAA,GAAgB,KAAA,CAAA,OAAA;AAAA,IACpB,MACE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GACf,KAAA,GACA,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GACxB,YAAA,GACA,CAAC,KAAK,GAAG,CAAA;AAAA,IACjB,CAAC,KAAA,EAAO,YAAA,EAAc,GAAA,EAAK,GAAG;AAAA,GAChC;AAEA,EAAA,uBACE,IAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,qOAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT;AAAA,aACF;AAAA,YAEA,QAAA,kBAAA,GAAA;AAAA,cAAiB,eAAA,CAAA,KAAA;AAAA,cAAhB;AAAA,gBACC,WAAA,EAAU,cAAA;AAAA,gBACV,SAAA,EAAW,EAAA;AAAA,kBACT;AAAA;AACF;AAAA;AACF;AAAA,SACF;AAAA,QACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,QAAQ,MAAA,EAAO,EAAG,CAAC,CAAA,EAAG,KAAA,qBAC1C,GAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YAEV,SAAA,EAAU;AAAA,WAAA;AAAA,UADL;AAAA,SAGR;AAAA;AAAA;AAAA,GACH;AAEJ","file":"chunk-EWBCV7VA.js","sourcesContent":["import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../lib/utils\";\n\ntype SliderProps = React.ComponentProps<typeof SliderPrimitive.Root>;\n\n/**\n * Draggable range input for selecting a numeric value or range within a given min/max.\n * Supports single-thumb and multi-thumb modes, as well as vertical orientation.\n *\n * @example\n * ```tsx\n * // Single value\n * <Slider defaultValue={[50]} max={100} step={1} />\n *\n * // Range (two thumbs)\n * <Slider defaultValue={[25, 75]} max={100} step={5} />\n *\n * // Controlled\n * <Slider value={[volume]} onValueChange={([v]) => setVolume(v)} />\n * ```\n */\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: SliderProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\nexport type { SliderProps };"]}