@omnifyjp/ui 0.1.1

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 (354) hide show
  1. package/README.md +230 -0
  2. package/dist/chunk-23SALQ3G.js +219 -0
  3. package/dist/chunk-23SALQ3G.js.map +1 -0
  4. package/dist/chunk-3TGN2DFB.js +41 -0
  5. package/dist/chunk-3TGN2DFB.js.map +1 -0
  6. package/dist/chunk-3TV2IR7L.js +65 -0
  7. package/dist/chunk-3TV2IR7L.js.map +1 -0
  8. package/dist/chunk-4CT5SCAH.js +54 -0
  9. package/dist/chunk-4CT5SCAH.js.map +1 -0
  10. package/dist/chunk-4D6FDXCG.js +41 -0
  11. package/dist/chunk-4D6FDXCG.js.map +1 -0
  12. package/dist/chunk-4HCORCR2.js +114 -0
  13. package/dist/chunk-4HCORCR2.js.map +1 -0
  14. package/dist/chunk-4N357E44.js +119 -0
  15. package/dist/chunk-4N357E44.js.map +1 -0
  16. package/dist/chunk-4Q2FLTAW.js +23 -0
  17. package/dist/chunk-4Q2FLTAW.js.map +1 -0
  18. package/dist/chunk-5M67ZEPM.js +33 -0
  19. package/dist/chunk-5M67ZEPM.js.map +1 -0
  20. package/dist/chunk-5WCL47ZW.js +30 -0
  21. package/dist/chunk-5WCL47ZW.js.map +1 -0
  22. package/dist/chunk-5Y3SQ3EA.js +52 -0
  23. package/dist/chunk-5Y3SQ3EA.js.map +1 -0
  24. package/dist/chunk-6GCAG5FH.js +46 -0
  25. package/dist/chunk-6GCAG5FH.js.map +1 -0
  26. package/dist/chunk-6MVBERQJ.js +44 -0
  27. package/dist/chunk-6MVBERQJ.js.map +1 -0
  28. package/dist/chunk-725ICC47.js +44 -0
  29. package/dist/chunk-725ICC47.js.map +1 -0
  30. package/dist/chunk-7ALADSN3.js +56 -0
  31. package/dist/chunk-7ALADSN3.js.map +1 -0
  32. package/dist/chunk-7NMWBCF4.js +171 -0
  33. package/dist/chunk-7NMWBCF4.js.map +1 -0
  34. package/dist/chunk-7ZFYPC74.js +155 -0
  35. package/dist/chunk-7ZFYPC74.js.map +1 -0
  36. package/dist/chunk-ANTYNEUU.js +35 -0
  37. package/dist/chunk-ANTYNEUU.js.map +1 -0
  38. package/dist/chunk-AZARDPXB.js +43 -0
  39. package/dist/chunk-AZARDPXB.js.map +1 -0
  40. package/dist/chunk-BJO5JCFB.js +111 -0
  41. package/dist/chunk-BJO5JCFB.js.map +1 -0
  42. package/dist/chunk-BOYSXIM3.js +160 -0
  43. package/dist/chunk-BOYSXIM3.js.map +1 -0
  44. package/dist/chunk-CDARHMTL.js +25 -0
  45. package/dist/chunk-CDARHMTL.js.map +1 -0
  46. package/dist/chunk-CESZTYQQ.js +93 -0
  47. package/dist/chunk-CESZTYQQ.js.map +1 -0
  48. package/dist/chunk-D3GCOO74.js +90 -0
  49. package/dist/chunk-D3GCOO74.js.map +1 -0
  50. package/dist/chunk-DGPY4WP3.js +11 -0
  51. package/dist/chunk-DGPY4WP3.js.map +1 -0
  52. package/dist/chunk-DIS42JLG.js +13 -0
  53. package/dist/chunk-DIS42JLG.js.map +1 -0
  54. package/dist/chunk-DQGDQEXD.js +617 -0
  55. package/dist/chunk-DQGDQEXD.js.map +1 -0
  56. package/dist/chunk-DZENMCRL.js +63 -0
  57. package/dist/chunk-DZENMCRL.js.map +1 -0
  58. package/dist/chunk-EIF6WZAZ.js +38 -0
  59. package/dist/chunk-EIF6WZAZ.js.map +1 -0
  60. package/dist/chunk-F6VQCMYH.js +81 -0
  61. package/dist/chunk-F6VQCMYH.js.map +1 -0
  62. package/dist/chunk-FBNG2KGO.js +66 -0
  63. package/dist/chunk-FBNG2KGO.js.map +1 -0
  64. package/dist/chunk-FO7J3PYY.js +131 -0
  65. package/dist/chunk-FO7J3PYY.js.map +1 -0
  66. package/dist/chunk-FSFXDD6P.js +196 -0
  67. package/dist/chunk-FSFXDD6P.js.map +1 -0
  68. package/dist/chunk-IDRQ6BNQ.js +63 -0
  69. package/dist/chunk-IDRQ6BNQ.js.map +1 -0
  70. package/dist/chunk-IJIGJGL5.js +48 -0
  71. package/dist/chunk-IJIGJGL5.js.map +1 -0
  72. package/dist/chunk-JPTN62BV.js +128 -0
  73. package/dist/chunk-JPTN62BV.js.map +1 -0
  74. package/dist/chunk-KABLXGWK.js +66 -0
  75. package/dist/chunk-KABLXGWK.js.map +1 -0
  76. package/dist/chunk-KOGOYUEE.js +121 -0
  77. package/dist/chunk-KOGOYUEE.js.map +1 -0
  78. package/dist/chunk-KULHYNE2.js +138 -0
  79. package/dist/chunk-KULHYNE2.js.map +1 -0
  80. package/dist/chunk-KXT75MXF.js +164 -0
  81. package/dist/chunk-KXT75MXF.js.map +1 -0
  82. package/dist/chunk-KXZ7IND6.js +24 -0
  83. package/dist/chunk-KXZ7IND6.js.map +1 -0
  84. package/dist/chunk-L46XUK4O.js +33 -0
  85. package/dist/chunk-L46XUK4O.js.map +1 -0
  86. package/dist/chunk-LI7CKURD.js +65 -0
  87. package/dist/chunk-LI7CKURD.js.map +1 -0
  88. package/dist/chunk-LW5PTU7D.js +211 -0
  89. package/dist/chunk-LW5PTU7D.js.map +1 -0
  90. package/dist/chunk-MNAT3ZF6.js +106 -0
  91. package/dist/chunk-MNAT3ZF6.js.map +1 -0
  92. package/dist/chunk-NFAXCC73.js +239 -0
  93. package/dist/chunk-NFAXCC73.js.map +1 -0
  94. package/dist/chunk-OHBCYKNT.js +63 -0
  95. package/dist/chunk-OHBCYKNT.js.map +1 -0
  96. package/dist/chunk-ONAUEREV.js +28 -0
  97. package/dist/chunk-ONAUEREV.js.map +1 -0
  98. package/dist/chunk-OXQNDQJW.js +86 -0
  99. package/dist/chunk-OXQNDQJW.js.map +1 -0
  100. package/dist/chunk-PCQSHXOQ.js +104 -0
  101. package/dist/chunk-PCQSHXOQ.js.map +1 -0
  102. package/dist/chunk-PH6P53QX.js +48 -0
  103. package/dist/chunk-PH6P53QX.js.map +1 -0
  104. package/dist/chunk-PPZSGU2L.js +33 -0
  105. package/dist/chunk-PPZSGU2L.js.map +1 -0
  106. package/dist/chunk-QCGYYBDZ.js +25 -0
  107. package/dist/chunk-QCGYYBDZ.js.map +1 -0
  108. package/dist/chunk-QMAMDYRD.js +65 -0
  109. package/dist/chunk-QMAMDYRD.js.map +1 -0
  110. package/dist/chunk-RVJDDGQW.js +112 -0
  111. package/dist/chunk-RVJDDGQW.js.map +1 -0
  112. package/dist/chunk-SABAKV4J.js +238 -0
  113. package/dist/chunk-SABAKV4J.js.map +1 -0
  114. package/dist/chunk-TEYOLOZY.js +18 -0
  115. package/dist/chunk-TEYOLOZY.js.map +1 -0
  116. package/dist/chunk-TMFQJ7E3.js +61 -0
  117. package/dist/chunk-TMFQJ7E3.js.map +1 -0
  118. package/dist/chunk-UCEUTKTQ.js +116 -0
  119. package/dist/chunk-UCEUTKTQ.js.map +1 -0
  120. package/dist/chunk-UV6UVSCF.js +187 -0
  121. package/dist/chunk-UV6UVSCF.js.map +1 -0
  122. package/dist/chunk-VGQC333M.js +17 -0
  123. package/dist/chunk-VGQC333M.js.map +1 -0
  124. package/dist/chunk-WAPGZIAL.js +99 -0
  125. package/dist/chunk-WAPGZIAL.js.map +1 -0
  126. package/dist/chunk-WRCHR4AK.js +23 -0
  127. package/dist/chunk-WRCHR4AK.js.map +1 -0
  128. package/dist/chunk-XKVHX75G.js +51 -0
  129. package/dist/chunk-XKVHX75G.js.map +1 -0
  130. package/dist/chunk-YF6WRCTG.js +41 -0
  131. package/dist/chunk-YF6WRCTG.js.map +1 -0
  132. package/dist/chunk-YGBYH4EO.js +28 -0
  133. package/dist/chunk-YGBYH4EO.js.map +1 -0
  134. package/dist/chunk-YKJZV2JK.js +109 -0
  135. package/dist/chunk-YKJZV2JK.js.map +1 -0
  136. package/dist/chunk-YUYC6Y6E.js +143 -0
  137. package/dist/chunk-YUYC6Y6E.js.map +1 -0
  138. package/dist/chunk-Z47W426M.js +53 -0
  139. package/dist/chunk-Z47W426M.js.map +1 -0
  140. package/dist/components/accordion.d.ts +10 -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 +17 -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 +13 -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 +6 -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 +9 -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 +13 -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 +14 -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 +16 -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 +10 -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 +18 -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 +31 -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 +29 -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 +25 -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 +7 -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 +12 -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 +24 -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 +43 -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 +6 -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 +8 -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 +13 -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 +33 -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 +20 -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 +28 -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 +31 -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 +16 -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 +17 -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 +28 -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 +17 -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 +28 -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 +9 -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 +14 -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 +5 -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 +6 -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 +29 -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 +18 -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 +18 -0
  246. package/dist/components/pagination.js +5 -0
  247. package/dist/components/pagination.js.map +1 -0
  248. package/dist/components/permission-grid.d.ts +30 -0
  249. package/dist/components/permission-grid.js +5 -0
  250. package/dist/components/permission-grid.js.map +1 -0
  251. package/dist/components/popover.d.ts +10 -0
  252. package/dist/components/popover.js +4 -0
  253. package/dist/components/popover.js.map +1 -0
  254. package/dist/components/progress.d.ts +7 -0
  255. package/dist/components/progress.js +4 -0
  256. package/dist/components/progress.js.map +1 -0
  257. package/dist/components/radio-group.d.ts +8 -0
  258. package/dist/components/radio-group.js +4 -0
  259. package/dist/components/radio-group.js.map +1 -0
  260. package/dist/components/rating.d.ts +14 -0
  261. package/dist/components/rating.js +4 -0
  262. package/dist/components/rating.js.map +1 -0
  263. package/dist/components/resizable.d.ts +11 -0
  264. package/dist/components/resizable.js +4 -0
  265. package/dist/components/resizable.js.map +1 -0
  266. package/dist/components/scope-tree.d.ts +35 -0
  267. package/dist/components/scope-tree.js +5 -0
  268. package/dist/components/scope-tree.js.map +1 -0
  269. package/dist/components/scope-type-badge.d.ts +20 -0
  270. package/dist/components/scope-type-badge.js +5 -0
  271. package/dist/components/scope-type-badge.js.map +1 -0
  272. package/dist/components/scroll-area.d.ts +8 -0
  273. package/dist/components/scroll-area.js +4 -0
  274. package/dist/components/scroll-area.js.map +1 -0
  275. package/dist/components/select.d.ts +18 -0
  276. package/dist/components/select.js +4 -0
  277. package/dist/components/select.js.map +1 -0
  278. package/dist/components/separator.d.ts +7 -0
  279. package/dist/components/separator.js +4 -0
  280. package/dist/components/separator.js.map +1 -0
  281. package/dist/components/sheet.d.ts +16 -0
  282. package/dist/components/sheet.js +4 -0
  283. package/dist/components/sheet.js.map +1 -0
  284. package/dist/components/sidebar.d.ts +75 -0
  285. package/dist/components/sidebar.js +11 -0
  286. package/dist/components/sidebar.js.map +1 -0
  287. package/dist/components/skeleton.d.ts +5 -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 +7 -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 +22 -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 +6 -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 +24 -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 +7 -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 +13 -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 +10 -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 +15 -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 +5 -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 +20 -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 +12 -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 +13 -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 +10 -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 +26 -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 +43 -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 +24 -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 +34 -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 -0
  342. package/dist/hooks/use-mobile.js +3 -0
  343. package/dist/hooks/use-mobile.js.map +1 -0
  344. package/dist/index.d.ts +111 -0
  345. package/dist/index.js +71 -0
  346. package/dist/index.js.map +1 -0
  347. package/dist/lib/utils.d.ts +5 -0
  348. package/dist/lib/utils.js +3 -0
  349. package/dist/lib/utils.js.map +1 -0
  350. package/package.json +101 -0
  351. package/src/styles/fonts.css +0 -0
  352. package/src/styles/index.css +3 -0
  353. package/src/styles/tailwind.css +4 -0
  354. package/src/styles/theme.css +447 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/sidebar.tsx"],"names":["open"],"mappings":"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","file":"chunk-DQGDQEXD.js","sourcesContent":["import * as React from \"react\";\nimport { PanelLeftIcon } from \"lucide-react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { useIsMobile } from \"../hooks/use-mobile\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};"]}
@@ -0,0 +1,63 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ import { ChevronDownIcon } from 'lucide-react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ function Accordion({
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
10
+ }
11
+ function AccordionItem({
12
+ className,
13
+ ...props
14
+ }) {
15
+ return /* @__PURE__ */ jsx(
16
+ AccordionPrimitive.Item,
17
+ {
18
+ "data-slot": "accordion-item",
19
+ className: cn("border-b last:border-b-0", className),
20
+ ...props
21
+ }
22
+ );
23
+ }
24
+ function AccordionTrigger({
25
+ className,
26
+ children,
27
+ ...props
28
+ }) {
29
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
30
+ AccordionPrimitive.Trigger,
31
+ {
32
+ "data-slot": "accordion-trigger",
33
+ className: cn(
34
+ "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-[var(--density-accordion)] text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
35
+ className
36
+ ),
37
+ ...props,
38
+ children: [
39
+ children,
40
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
41
+ ]
42
+ }
43
+ ) });
44
+ }
45
+ function AccordionContent({
46
+ className,
47
+ children,
48
+ ...props
49
+ }) {
50
+ return /* @__PURE__ */ jsx(
51
+ AccordionPrimitive.Content,
52
+ {
53
+ "data-slot": "accordion-content",
54
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
55
+ ...props,
56
+ children: /* @__PURE__ */ jsx("div", { className: cn("pt-0 pb-[var(--density-accordion)]", className), children })
57
+ }
58
+ );
59
+ }
60
+
61
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
62
+ //# sourceMappingURL=chunk-DZENMCRL.js.map
63
+ //# sourceMappingURL=chunk-DZENMCRL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/accordion.tsx"],"names":[],"mappings":";;;;;AAMA,SAAS,SAAA,CAAU;AAAA,EACjB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAA2B,kBAAA,CAAA,IAAA,EAAnB,EAAwB,WAAA,EAAU,WAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AACnE;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACE,GAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA,CAAoB,kBAAA,CAAA,MAAA,EAAnB,EAA0B,SAAA,EAAU,MAAA,EACnC,QAAA,kBAAA,IAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qUAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,6GAAA,EAA8G;AAAA;AAAA;AAAA,GAC3I,EACF,CAAA;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAU,2GAAA;AAAA,MACT,GAAG,KAAA;AAAA,MAEJ,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,oCAAA,EAAsC,SAAS,GAAI,QAAA,EAAS;AAAA;AAAA,GACjF;AAEJ","file":"chunk-DZENMCRL.js","sourcesContent":["import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-[var(--density-accordion)] text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-[var(--density-accordion)]\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };"]}
@@ -0,0 +1,38 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function HoverCard({
6
+ ...props
7
+ }) {
8
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
9
+ }
10
+ function HoverCardTrigger({
11
+ ...props
12
+ }) {
13
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
14
+ }
15
+ function HoverCardContent({
16
+ className,
17
+ align = "center",
18
+ sideOffset = 4,
19
+ ...props
20
+ }) {
21
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
22
+ HoverCardPrimitive.Content,
23
+ {
24
+ "data-slot": "hover-card-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-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
29
+ className
30
+ ),
31
+ ...props
32
+ }
33
+ ) });
34
+ }
35
+
36
+ export { HoverCard, HoverCardContent, HoverCardTrigger };
37
+ //# sourceMappingURL=chunk-EIF6WZAZ.js.map
38
+ //# sourceMappingURL=chunk-EIF6WZAZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/hover-card.tsx"],"names":[],"mappings":";;;;AAKA,SAAS,SAAA,CAAU;AAAA,EACjB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAA2B,kBAAA,CAAA,IAAA,EAAnB,EAAwB,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,2BACsB,kBAAA,CAAA,OAAA,EAAnB,EAA2B,WAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EAAO,CAAA;AAE1E;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA,CAAoB,kBAAA,CAAA,MAAA,EAAnB,EAA0B,WAAA,EAAU,mBAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,meAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ","file":"chunk-EIF6WZAZ.js","sourcesContent":["import * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"../lib/utils\";\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-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-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };"]}
@@ -0,0 +1,81 @@
1
+ import { Sheet, SheetContent, SheetHeader, SheetTitle } from './chunk-KOGOYUEE.js';
2
+ import { CalendarCategoryBadge } from './chunk-TEYOLOZY.js';
3
+ import { Separator } from './chunk-ONAUEREV.js';
4
+ import { Button } from './chunk-PH6P53QX.js';
5
+ import { format } from 'date-fns';
6
+ import { Clock, MapPin, Users, Trash2 } from 'lucide-react';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var defaultLabels = {
10
+ allDay: "All Day",
11
+ attendees: "Attendees",
12
+ delete: "Delete"
13
+ };
14
+ function CalendarEventSheet({
15
+ event,
16
+ open,
17
+ onOpenChange,
18
+ onDelete,
19
+ categoryLabel,
20
+ categoryStyles,
21
+ labels: labelsProp
22
+ }) {
23
+ const labels = { ...defaultLabels, ...labelsProp };
24
+ if (!event) return null;
25
+ const timeDisplay = event.allDay ? labels.allDay : `${format(event.start, "HH:mm")} - ${format(event.end, "HH:mm")}`;
26
+ return /* @__PURE__ */ jsx(Sheet, { open, onOpenChange, children: /* @__PURE__ */ jsxs(SheetContent, { className: "sm:max-w-md", children: [
27
+ /* @__PURE__ */ jsx(SheetHeader, { children: /* @__PURE__ */ jsx(SheetTitle, { children: event.title }) }),
28
+ /* @__PURE__ */ jsxs("div", { className: "mt-4 space-y-4", children: [
29
+ /* @__PURE__ */ jsx(
30
+ CalendarCategoryBadge,
31
+ {
32
+ category: event.category,
33
+ label: categoryLabel,
34
+ styles: categoryStyles
35
+ }
36
+ ),
37
+ event.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: event.description }),
38
+ /* @__PURE__ */ jsx(Separator, {}),
39
+ /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
40
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 text-sm", children: [
41
+ /* @__PURE__ */ jsx(Clock, { className: "w-4 h-4 text-muted-foreground flex-shrink-0" }),
42
+ /* @__PURE__ */ jsxs("div", { children: [
43
+ /* @__PURE__ */ jsx("p", { className: "font-medium", children: format(event.start, "EEEE, MMMM d, yyyy") }),
44
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: timeDisplay })
45
+ ] })
46
+ ] }),
47
+ event.location && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 text-sm", children: [
48
+ /* @__PURE__ */ jsx(MapPin, { className: "w-4 h-4 text-muted-foreground flex-shrink-0" }),
49
+ /* @__PURE__ */ jsx("span", { children: event.location })
50
+ ] }),
51
+ event.attendees && event.attendees.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 text-sm", children: [
52
+ /* @__PURE__ */ jsx(Users, { className: "w-4 h-4 text-muted-foreground flex-shrink-0 mt-0.5" }),
53
+ /* @__PURE__ */ jsxs("div", { children: [
54
+ /* @__PURE__ */ jsx("p", { className: "font-medium mb-1", children: labels.attendees }),
55
+ /* @__PURE__ */ jsx("div", { className: "space-y-1", children: event.attendees.map((email) => /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: email }, email)) })
56
+ ] })
57
+ ] })
58
+ ] }),
59
+ /* @__PURE__ */ jsx(Separator, {}),
60
+ /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxs(
61
+ Button,
62
+ {
63
+ variant: "destructive",
64
+ size: "sm",
65
+ onClick: () => {
66
+ onDelete?.(event.id);
67
+ onOpenChange(false);
68
+ },
69
+ children: [
70
+ /* @__PURE__ */ jsx(Trash2, { className: "w-4 h-4" }),
71
+ labels.delete
72
+ ]
73
+ }
74
+ ) })
75
+ ] })
76
+ ] }) });
77
+ }
78
+
79
+ export { CalendarEventSheet };
80
+ //# sourceMappingURL=chunk-F6VQCMYH.js.map
81
+ //# sourceMappingURL=chunk-F6VQCMYH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/calendar-event-sheet.tsx"],"names":[],"mappings":"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","file":"chunk-F6VQCMYH.js","sourcesContent":["import { format } from 'date-fns';\nimport { Clock, MapPin, Users, Trash2 } from 'lucide-react';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from './sheet';\nimport { Button } from './button';\nimport { Separator } from './separator';\nimport { CalendarCategoryBadge } from './calendar-category-badge';\n\nexport interface CalendarEventSheetEvent {\n id: string;\n title: string;\n description?: string;\n start: Date;\n end: Date;\n allDay?: boolean;\n color: string;\n category: string;\n location?: string;\n attendees?: string[];\n}\n\nexport interface CalendarEventSheetLabels {\n allDay?: string;\n attendees?: string;\n delete?: string;\n}\n\nconst defaultLabels: Required<CalendarEventSheetLabels> = {\n allDay: 'All Day',\n attendees: 'Attendees',\n delete: 'Delete',\n};\n\nexport interface CalendarEventSheetProps {\n event: CalendarEventSheetEvent | null;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onDelete?: (id: string) => void;\n categoryLabel?: string;\n categoryStyles?: Record<string, string>;\n labels?: CalendarEventSheetLabels;\n}\n\nexport function CalendarEventSheet({\n event,\n open,\n onOpenChange,\n onDelete,\n categoryLabel,\n categoryStyles,\n labels: labelsProp,\n}: CalendarEventSheetProps) {\n const labels = { ...defaultLabels, ...labelsProp };\n\n if (!event) return null;\n\n const timeDisplay = event.allDay\n ? labels.allDay\n : `${format(event.start, 'HH:mm')} - ${format(event.end, 'HH:mm')}`;\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent className=\"sm:max-w-md\">\n <SheetHeader>\n <SheetTitle>{event.title}</SheetTitle>\n </SheetHeader>\n <div className=\"mt-4 space-y-4\">\n <CalendarCategoryBadge\n category={event.category}\n label={categoryLabel}\n styles={categoryStyles}\n />\n\n {event.description && (\n <p className=\"text-sm text-muted-foreground\">{event.description}</p>\n )}\n\n <Separator />\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3 text-sm\">\n <Clock className=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\n <div>\n <p className=\"font-medium\">{format(event.start, 'EEEE, MMMM d, yyyy')}</p>\n <p className=\"text-muted-foreground\">{timeDisplay}</p>\n </div>\n </div>\n\n {event.location && (\n <div className=\"flex items-center gap-3 text-sm\">\n <MapPin className=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\n <span>{event.location}</span>\n </div>\n )}\n\n {event.attendees && event.attendees.length > 0 && (\n <div className=\"flex items-start gap-3 text-sm\">\n <Users className=\"w-4 h-4 text-muted-foreground flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium mb-1\">{labels.attendees}</p>\n <div className=\"space-y-1\">\n {event.attendees.map(email => (\n <p key={email} className=\"text-muted-foreground\">{email}</p>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n\n <Separator />\n\n <div className=\"flex justify-end\">\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => {\n onDelete?.(event.id);\n onOpenChange(false);\n }}\n >\n <Trash2 className=\"w-4 h-4\" />\n {labels.delete}\n </Button>\n </div>\n </div>\n </SheetContent>\n </Sheet>\n );\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var alertVariants = cva(
6
+ "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-card text-card-foreground",
11
+ destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
12
+ }
13
+ },
14
+ defaultVariants: {
15
+ variant: "default"
16
+ }
17
+ }
18
+ );
19
+ function Alert({
20
+ className,
21
+ variant,
22
+ ...props
23
+ }) {
24
+ return /* @__PURE__ */ jsx(
25
+ "div",
26
+ {
27
+ "data-slot": "alert",
28
+ role: "alert",
29
+ className: cn(alertVariants({ variant }), className),
30
+ ...props
31
+ }
32
+ );
33
+ }
34
+ function AlertTitle({ className, ...props }) {
35
+ return /* @__PURE__ */ jsx(
36
+ "div",
37
+ {
38
+ "data-slot": "alert-title",
39
+ className: cn(
40
+ "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
41
+ className
42
+ ),
43
+ ...props
44
+ }
45
+ );
46
+ }
47
+ function AlertDescription({
48
+ className,
49
+ ...props
50
+ }) {
51
+ return /* @__PURE__ */ jsx(
52
+ "div",
53
+ {
54
+ "data-slot": "alert-description",
55
+ className: cn(
56
+ "text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
57
+ className
58
+ ),
59
+ ...props
60
+ }
61
+ );
62
+ }
63
+
64
+ export { Alert, AlertDescription, AlertTitle };
65
+ //# sourceMappingURL=chunk-FBNG2KGO.js.map
66
+ //# sourceMappingURL=chunk-FBNG2KGO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/alert.tsx"],"names":[],"mappings":";;;;AAKA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,mOAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,8BAAA;AAAA,QACT,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqE;AACnE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACL,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-FBNG2KGO.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n"]}
@@ -0,0 +1,131 @@
1
+ import { ScrollArea } from './chunk-TMFQJ7E3.js';
2
+ import { Input } from './chunk-YGBYH4EO.js';
3
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-AZARDPXB.js';
4
+ import { Button } from './chunk-PH6P53QX.js';
5
+ import { cn } from './chunk-DGPY4WP3.js';
6
+ import * as React from 'react';
7
+ import { Clock } from 'lucide-react';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
9
+
10
+ function TimePicker({
11
+ value,
12
+ onChange,
13
+ placeholder = "Ch\u1ECDn gi\u1EDD",
14
+ className,
15
+ disabled,
16
+ format24h = true
17
+ }) {
18
+ const [open, setOpen] = React.useState(false);
19
+ const hours = format24h ? Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, "0")) : Array.from({ length: 12 }, (_, i) => (i + 1).toString().padStart(2, "0"));
20
+ const minutes = Array.from(
21
+ { length: 60 },
22
+ (_, i) => i.toString().padStart(2, "0")
23
+ );
24
+ const [selectedHour, selectedMinute] = value?.split(":") || ["", ""];
25
+ const handleHourSelect = (hour) => {
26
+ const newTime = `${hour}:${selectedMinute || "00"}`;
27
+ onChange?.(newTime);
28
+ };
29
+ const handleMinuteSelect = (minute) => {
30
+ const newTime = `${selectedHour || "00"}:${minute}`;
31
+ onChange?.(newTime);
32
+ setOpen(false);
33
+ };
34
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
35
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
36
+ Button,
37
+ {
38
+ variant: "outline",
39
+ disabled,
40
+ className: cn(
41
+ "w-full justify-start",
42
+ !value && "text-muted-foreground",
43
+ className
44
+ ),
45
+ children: [
46
+ /* @__PURE__ */ jsx(Clock, { className: "mr-2 h-4 w-4" }),
47
+ value || placeholder
48
+ ]
49
+ }
50
+ ) }),
51
+ /* @__PURE__ */ jsx(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsxs("div", { className: "flex", children: [
52
+ /* @__PURE__ */ jsx(ScrollArea, { className: "h-60 w-20 border-r", children: /* @__PURE__ */ jsx("div", { className: "p-1", children: hours.map((hour) => /* @__PURE__ */ jsx(
53
+ "button",
54
+ {
55
+ type: "button",
56
+ onClick: () => handleHourSelect(hour),
57
+ className: cn(
58
+ "w-full px-3 py-2 text-sm rounded hover:bg-gray-100 transition-colors text-center",
59
+ selectedHour === hour && "bg-blue-100 text-blue-700 font-semibold"
60
+ ),
61
+ children: hour
62
+ },
63
+ hour
64
+ )) }) }),
65
+ /* @__PURE__ */ jsx(ScrollArea, { className: "h-60 w-20", children: /* @__PURE__ */ jsx("div", { className: "p-1", children: minutes.map((minute) => /* @__PURE__ */ jsx(
66
+ "button",
67
+ {
68
+ type: "button",
69
+ onClick: () => handleMinuteSelect(minute),
70
+ className: cn(
71
+ "w-full px-3 py-2 text-sm rounded hover:bg-gray-100 transition-colors text-center",
72
+ selectedMinute === minute && "bg-blue-100 text-blue-700 font-semibold"
73
+ ),
74
+ children: minute
75
+ },
76
+ minute
77
+ )) }) })
78
+ ] }) })
79
+ ] });
80
+ }
81
+ function TimeInput({
82
+ value = "",
83
+ onChange,
84
+ className,
85
+ disabled
86
+ }) {
87
+ const [localValue, setLocalValue] = React.useState(value);
88
+ const handleChange = (e) => {
89
+ let input = e.target.value.replace(/\D/g, "");
90
+ if (input.length >= 2) {
91
+ const hours = parseInt(input.substring(0, 2));
92
+ if (hours > 23) input = "23" + input.substring(2);
93
+ }
94
+ if (input.length >= 4) {
95
+ const minutes = parseInt(input.substring(2, 4));
96
+ if (minutes > 59) input = input.substring(0, 2) + "59";
97
+ }
98
+ if (input.length >= 2) {
99
+ input = input.substring(0, 2) + ":" + input.substring(2, 4);
100
+ }
101
+ setLocalValue(input);
102
+ };
103
+ const handleBlur = () => {
104
+ const parts = localValue.split(":");
105
+ if (parts.length === 2 && parts[0].length === 2 && parts[1].length === 2) {
106
+ onChange?.(localValue);
107
+ } else {
108
+ setLocalValue(value);
109
+ }
110
+ };
111
+ return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
112
+ /* @__PURE__ */ jsx(
113
+ Input,
114
+ {
115
+ type: "text",
116
+ value: localValue,
117
+ onChange: handleChange,
118
+ onBlur: handleBlur,
119
+ placeholder: "00:00",
120
+ maxLength: 5,
121
+ disabled,
122
+ className: cn("pr-10", className)
123
+ }
124
+ ),
125
+ /* @__PURE__ */ jsx(Clock, { className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" })
126
+ ] });
127
+ }
128
+
129
+ export { TimeInput, TimePicker };
130
+ //# sourceMappingURL=chunk-FO7J3PYY.js.map
131
+ //# sourceMappingURL=chunk-FO7J3PYY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/time-picker.tsx"],"names":[],"mappings":";;;;;;;;;AAiBO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,KAAA,GAAQ,SAAA,GACV,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,CAAA,EAAG,GAAG,CAAC,CAAA,GAClE,MAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,IAAM,CAAC,CAAA,EAAG,CAAA,KAAA,CAAO,CAAA,GAAI,GAAG,QAAA,EAAS,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAE5E,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,QAAQ,EAAA,EAAG;AAAA,IAAG,CAAC,GAAG,CAAA,KAC7C,CAAA,CAAE,UAAS,CAAE,QAAA,CAAS,GAAG,GAAG;AAAA,GAC9B;AAEA,EAAA,MAAM,CAAC,YAAA,EAAc,cAAc,CAAA,GAAI,KAAA,EAAO,MAAM,GAAG,CAAA,IAAK,CAAC,EAAA,EAAI,EAAE,CAAA;AAEnE,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAiB;AACzC,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,kBAAkB,IAAI,CAAA,CAAA;AACjD,IAAA,QAAA,GAAW,OAAO,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,MAAA,KAAmB;AAC7C,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,YAAA,IAAgB,IAAI,IAAI,MAAM,CAAA,CAAA;AACjD,IAAA,QAAA,GAAW,OAAO,CAAA;AAClB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,YAAA,EAAc,OAAA,EACjC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,sBAAA;AAAA,UACA,CAAC,KAAA,IAAS,uBAAA;AAAA,UACV;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,cAAA,EAAe,CAAA;AAAA,UAC/B,KAAA,IAAS;AAAA;AAAA;AAAA,KACZ,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,kBAAe,SAAA,EAAU,YAAA,EAAa,OAAM,OAAA,EAC3C,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAEb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,oBAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,KAAA,EACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACV,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,UACpC,SAAA,EAAW,EAAA;AAAA,YACT,kFAAA;AAAA,YACA,iBAAiB,IAAA,IAAQ;AAAA,WAC3B;AAAA,UAEC,QAAA,EAAA;AAAA,SAAA;AAAA,QARI;AAAA,OAUR,GACH,CAAA,EACF,CAAA;AAAA,sBAGA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,WAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZ,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,kBAAA,CAAmB,MAAM,CAAA;AAAA,UACxC,SAAA,EAAW,EAAA;AAAA,YACT,kFAAA;AAAA,YACA,mBAAmB,MAAA,IAAU;AAAA,WAC/B;AAAA,UAEC,QAAA,EAAA;AAAA,SAAA;AAAA,QARI;AAAA,OAUR,GACH,CAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAUO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA,GAAQ,EAAA;AAAA,EACR,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,eAAS,KAAK,CAAA;AAExD,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAA2C;AAC/D,IAAA,IAAI,QAAQ,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAE,CAAA;AAE5C,IAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,MAAA,MAAM,QAAQ,QAAA,CAAS,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AAC5C,MAAA,IAAI,QAAQ,EAAA,EAAI,KAAA,GAAQ,IAAA,GAAO,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,IAClD;AAEA,IAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,MAAA,MAAM,UAAU,QAAA,CAAS,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AAC9C,MAAA,IAAI,UAAU,EAAA,EAAI,KAAA,GAAQ,MAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA,GAAI,IAAA;AAAA,IACpD;AAGA,IAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,MAAA,KAAA,GAAQ,KAAA,CAAM,UAAU,CAAA,EAAG,CAAC,IAAI,GAAA,GAAM,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AAAA,IAC5D;AAEA,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AAEvB,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AAClC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AACxE,MAAA,QAAA,GAAW,UAAU,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO,UAAA;AAAA,QACP,QAAA,EAAU,YAAA;AAAA,QACV,MAAA,EAAQ,UAAA;AAAA,QACR,WAAA,EAAY,OAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,QAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS;AAAA;AAAA,KAClC;AAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,iEAAA,EAAkE;AAAA,GAAA,EACrF,CAAA;AAEJ","file":"chunk-FO7J3PYY.js","sourcesContent":["import * as React from \"react\";\nimport { Clock } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { ScrollArea } from \"./scroll-area\";\n\ninterface TimePickerProps {\n value?: string; // Format: \"HH:mm\"\n onChange?: (time: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n format24h?: boolean;\n}\n\nexport function TimePicker({\n value,\n onChange,\n placeholder = \"Chọn giờ\",\n className,\n disabled,\n format24h = true,\n}: TimePickerProps) {\n const [open, setOpen] = React.useState(false);\n\n const hours = format24h\n ? Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, \"0\"))\n : Array.from({ length: 12 }, (_, i) => (i + 1).toString().padStart(2, \"0\"));\n\n const minutes = Array.from({ length: 60 }, (_, i) =>\n i.toString().padStart(2, \"0\")\n );\n\n const [selectedHour, selectedMinute] = value?.split(\":\") || [\"\", \"\"];\n\n const handleHourSelect = (hour: string) => {\n const newTime = `${hour}:${selectedMinute || \"00\"}`;\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minute: string) => {\n const newTime = `${selectedHour || \"00\"}:${minute}`;\n onChange?.(newTime);\n setOpen(false);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start\",\n !value && \"text-muted-foreground\",\n className\n )}\n >\n <Clock className=\"mr-2 h-4 w-4\" />\n {value || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Hours */}\n <ScrollArea className=\"h-60 w-20 border-r\">\n <div className=\"p-1\">\n {hours.map((hour) => (\n <button\n key={hour}\n type=\"button\"\n onClick={() => handleHourSelect(hour)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded hover:bg-gray-100 transition-colors text-center\",\n selectedHour === hour && \"bg-blue-100 text-blue-700 font-semibold\"\n )}\n >\n {hour}\n </button>\n ))}\n </div>\n </ScrollArea>\n\n {/* Minutes */}\n <ScrollArea className=\"h-60 w-20\">\n <div className=\"p-1\">\n {minutes.map((minute) => (\n <button\n key={minute}\n type=\"button\"\n onClick={() => handleMinuteSelect(minute)}\n className={cn(\n \"w-full px-3 py-2 text-sm rounded hover:bg-gray-100 transition-colors text-center\",\n selectedMinute === minute && \"bg-blue-100 text-blue-700 font-semibold\"\n )}\n >\n {minute}\n </button>\n ))}\n </div>\n </ScrollArea>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\n// Inline Time Input variant\ninterface TimeInputProps {\n value?: string;\n onChange?: (time: string) => void;\n className?: string;\n disabled?: boolean;\n}\n\nexport function TimeInput({\n value = \"\",\n onChange,\n className,\n disabled,\n}: TimeInputProps) {\n const [localValue, setLocalValue] = React.useState(value);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let input = e.target.value.replace(/\\D/g, \"\"); // Remove non-digits\n\n if (input.length >= 2) {\n const hours = parseInt(input.substring(0, 2));\n if (hours > 23) input = \"23\" + input.substring(2);\n }\n\n if (input.length >= 4) {\n const minutes = parseInt(input.substring(2, 4));\n if (minutes > 59) input = input.substring(0, 2) + \"59\";\n }\n\n // Format as HH:mm\n if (input.length >= 2) {\n input = input.substring(0, 2) + \":\" + input.substring(2, 4);\n }\n\n setLocalValue(input);\n };\n\n const handleBlur = () => {\n // Validate and format\n const parts = localValue.split(\":\");\n if (parts.length === 2 && parts[0].length === 2 && parts[1].length === 2) {\n onChange?.(localValue);\n } else {\n setLocalValue(value);\n }\n };\n\n return (\n <div className=\"relative\">\n <Input\n type=\"text\"\n value={localValue}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder=\"00:00\"\n maxLength={5}\n disabled={disabled}\n className={cn(\"pr-10\", className)}\n />\n <Clock className=\"absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400\" />\n </div>\n );\n}\n"]}