@egose/shadcn-theme 0.1.10 → 0.1.12

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 (461) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +88 -29
  3. package/{chunk-GBNJFKPB.js → chunk-26NBTW3I.js} +3 -3
  4. package/{chunk-7PX7GVOR.mjs → chunk-2EXZ4JQX.mjs} +2 -2
  5. package/{chunk-YJR5JBXS.js → chunk-36GT5EGU.js} +3 -3
  6. package/{chunk-7ZMTJBXT.mjs → chunk-3NMW42UR.mjs} +7 -7
  7. package/{chunk-AGPEWIPR.mjs → chunk-3R2OBHS6.mjs} +5 -5
  8. package/{chunk-QCHBJMD6.mjs → chunk-3R7FZDQ7.mjs} +2 -2
  9. package/{chunk-PS3LNHTA.js → chunk-3RQTEIV5.js} +3 -3
  10. package/{chunk-E7F5KADG.mjs → chunk-3YFVUGSK.mjs} +2 -2
  11. package/{chunk-7MDWTJEP.mjs → chunk-42IQSRLZ.mjs} +2 -2
  12. package/{chunk-GV62APQ6.js → chunk-5CUM73VT.js} +3 -3
  13. package/{chunk-P4EDRIBH.js → chunk-5LDEF3T6.js} +44 -44
  14. package/{chunk-HWDU5KVD.mjs → chunk-6M7NWFTI.mjs} +4 -4
  15. package/{chunk-CNYC22IA.mjs → chunk-6SAR4RAU.mjs} +4 -4
  16. package/{chunk-XMRJIUYX.mjs → chunk-7DB2YNKV.mjs} +2 -2
  17. package/{chunk-RPF753T2.mjs → chunk-7S5XDE3W.mjs} +2 -2
  18. package/{chunk-OMQVDSR6.js → chunk-A4VKE26S.js} +4 -4
  19. package/{chunk-WK4MG4VT.js → chunk-AH57ACVP.js} +6 -6
  20. package/{chunk-4BKWF5FK.js → chunk-AIZ3XYAI.js} +6 -6
  21. package/{chunk-RFORRZRN.js → chunk-AOGFHEQH.js} +11 -11
  22. package/{chunk-6ECNY4VS.mjs → chunk-ASPR3W6A.mjs} +4 -4
  23. package/{chunk-OVHPXYDN.mjs → chunk-B6SBEOMV.mjs} +2 -2
  24. package/{chunk-ZFSZ6K4K.js → chunk-BGITSWS4.js} +1 -1
  25. package/{chunk-WJBTXKFN.js → chunk-BIO4TVNT.js} +14 -14
  26. package/{chunk-RJVQU443.mjs → chunk-BKUEN3CP.mjs} +6 -6
  27. package/{chunk-OUVM5NST.js → chunk-BM53W77T.js} +9 -9
  28. package/{chunk-JZXOJAMQ.js → chunk-C4JWWUXI.js} +8 -8
  29. package/{chunk-IYVLRZJ4.js → chunk-C74J4JWA.js} +1 -1
  30. package/{chunk-OPNHC6JN.mjs → chunk-CFG4GTRV.mjs} +3 -3
  31. package/{chunk-YQENFZOY.mjs → chunk-CHV7CG5L.mjs} +2 -2
  32. package/{chunk-UFRPUC7K.js → chunk-CRBQL2FG.js} +3 -3
  33. package/{chunk-K4JVHEI2.js → chunk-CZZWPS2I.js} +3 -3
  34. package/{chunk-LAIO3QZX.js → chunk-DD3MCW6L.js} +17 -17
  35. package/{chunk-WXEEDLLR.js → chunk-DNOZXQ2U.js} +15 -15
  36. package/{chunk-BJK4J4VY.js → chunk-DYYTK4BP.js} +7 -7
  37. package/{chunk-N7JSYNXM.js → chunk-FUFUQWRV.js} +1 -1
  38. package/{chunk-LPDYWZN6.js → chunk-GOATL3D5.js} +14 -14
  39. package/{chunk-VBPJD7U3.js → chunk-HCWYPASJ.js} +13 -13
  40. package/{chunk-SX4LQFOF.mjs → chunk-HD7GX5UE.mjs} +1 -1
  41. package/{chunk-6POWZMND.js → chunk-HDO7OG7I.js} +3 -3
  42. package/{chunk-AQIBLBXW.js → chunk-I4ICCNHG.js} +9 -9
  43. package/{chunk-KB6BX6LA.js → chunk-IEPLSUBR.js} +5 -5
  44. package/{chunk-NMJ6372G.js → chunk-IOCZ25V7.js} +11 -11
  45. package/{chunk-FOEQYO2Q.js → chunk-JXITZDN4.js} +15 -15
  46. package/{chunk-6CRGZEQF.js → chunk-JYRR3NKH.js} +9 -9
  47. package/{chunk-Z342XYFY.js → chunk-KDDWHY5M.js} +6 -6
  48. package/{chunk-KGUUDFJE.mjs → chunk-KKCJ2GMO.mjs} +1 -1
  49. package/{chunk-4IDPSNL3.mjs → chunk-KS7PUPPU.mjs} +9 -9
  50. package/{chunk-RNKMPQDZ.mjs → chunk-L7EN73HA.mjs} +4 -4
  51. package/{chunk-NCJI2DCV.mjs → chunk-LBOUUQFM.mjs} +3 -3
  52. package/{chunk-RIBB6GXJ.mjs → chunk-MBDPHX4P.mjs} +3 -3
  53. package/{chunk-77MASFCZ.mjs → chunk-MLXTZKBJ.mjs} +1 -1
  54. package/{chunk-4ETXRZKO.js → chunk-MMD72AEX.js} +8 -8
  55. package/{chunk-O6PHWGJH.mjs → chunk-MP7OH5ZP.mjs} +2 -2
  56. package/{chunk-HTEQHRTK.mjs → chunk-MSZ2AHQM.mjs} +2 -2
  57. package/{chunk-CSL3CTEN.mjs → chunk-N3WWOWZ4.mjs} +2 -2
  58. package/{chunk-PSPAJNNB.js → chunk-NBQEF4JD.js} +1 -1
  59. package/{chunk-QMLV5G5Z.js → chunk-NDH24NNQ.js} +37 -37
  60. package/{chunk-P4DW3EEW.mjs → chunk-NPEOZHKQ.mjs} +4 -4
  61. package/{chunk-GUB2Y4JK.mjs → chunk-NQQR2NDC.mjs} +3 -3
  62. package/{chunk-ZEZK2FJ4.mjs → chunk-O6E6RGZT.mjs} +1 -1
  63. package/{chunk-QF6PFV6M.mjs → chunk-OXUVPYJE.mjs} +2 -2
  64. package/{chunk-CKGMFUU2.js → chunk-OZAVO5UA.js} +3 -3
  65. package/{chunk-US2CUADK.mjs → chunk-OZF3JOG4.mjs} +4 -4
  66. package/{chunk-ICOZ5BK7.mjs → chunk-PBCJ476S.mjs} +3 -3
  67. package/{chunk-OXCN3BD6.mjs → chunk-PODBONNQ.mjs} +2 -2
  68. package/{chunk-5CBMRDT7.mjs → chunk-PW4ITUWI.mjs} +3 -3
  69. package/{chunk-F2QWMBUB.mjs → chunk-Q23ZKF2E.mjs} +2 -2
  70. package/{chunk-K23YFVYE.mjs → chunk-QFLEJVD3.mjs} +4 -4
  71. package/{chunk-XVWILFYQ.mjs → chunk-RG3G5IZC.mjs} +2 -2
  72. package/{chunk-PDB2VCWX.mjs → chunk-RKVMGHH3.mjs} +1 -1
  73. package/{chunk-WKQDHQAS.js → chunk-RV4AOZUL.js} +10 -10
  74. package/{chunk-7BYWDRRI.mjs → chunk-S2LLOGBR.mjs} +3 -3
  75. package/{chunk-VHYQNTH7.mjs → chunk-S7HB64F7.mjs} +4 -4
  76. package/{chunk-TTCGK36S.js → chunk-SOJSGQJO.js} +8 -8
  77. package/{chunk-YEGS4ETW.js → chunk-SSBVBEDI.js} +12 -12
  78. package/{chunk-FD7CNCJW.mjs → chunk-SVZMGPZC.mjs} +4 -4
  79. package/{chunk-VYXQVM7A.js → chunk-TGQA25KR.js} +6 -6
  80. package/{chunk-3HZTA2ZQ.js → chunk-UHYOQN4B.js} +11 -11
  81. package/{chunk-K3LYDDTD.js → chunk-VHXALM6O.js} +5 -5
  82. package/{chunk-ZFBUIBJH.mjs → chunk-VQWCEF3I.mjs} +4 -4
  83. package/{chunk-4SYFVOM2.js → chunk-VRY6WSXJ.js} +1 -1
  84. package/{chunk-2YMMYND2.js → chunk-VVU3Q7KV.js} +3 -3
  85. package/chunk-VYBFV2QD.js +31 -0
  86. package/{chunk-QHCOMBHI.js → chunk-W4ZJYYQP.js} +6 -6
  87. package/{chunk-3JPKE36M.mjs → chunk-W7CX2O2V.mjs} +8 -8
  88. package/{chunk-NMYVYLKF.js → chunk-W7PK2KN7.js} +3 -3
  89. package/{chunk-UQW3H2JS.js → chunk-WEZTFUOR.js} +7 -7
  90. package/chunk-WJKG5MUH.mjs +30 -0
  91. package/{chunk-X3V6YE47.mjs → chunk-WR7C2Q2O.mjs} +1 -1
  92. package/{chunk-G6WKPZTL.js → chunk-X3FLPO26.js} +10 -10
  93. package/{chunk-YDRPNCWF.mjs → chunk-XH7WQWOD.mjs} +5 -5
  94. package/{chunk-A4FV6TTM.js → chunk-XR7BY66N.js} +1 -1
  95. package/{chunk-UKPBHVOT.js → chunk-XWASPFJ7.js} +11 -11
  96. package/{chunk-7MDE2NEO.mjs → chunk-YAFFRILU.mjs} +2 -2
  97. package/{chunk-MM5OJOOR.mjs → chunk-YHL7Q5J3.mjs} +2 -2
  98. package/{chunk-RJG7QLDD.js → chunk-YMBEAV7N.js} +3 -3
  99. package/{chunk-BMAIJZN6.js → chunk-ZE53QYI6.js} +3 -3
  100. package/{chunk-3GHC4JQU.mjs → chunk-ZJRJN2UJ.mjs} +2 -2
  101. package/{chunk-WIISPZZE.mjs → chunk-ZLGQUL4Y.mjs} +2 -2
  102. package/{chunk-BEPAUXCN.mjs → chunk-ZSHUAH66.mjs} +4 -4
  103. package/components/form/checkbox.js +5 -5
  104. package/components/form/checkbox.mjs +4 -4
  105. package/components/form/date-picker.js +9 -9
  106. package/components/form/date-picker.mjs +8 -8
  107. package/components/form/date-range-picker.js +13 -13
  108. package/components/form/date-range-picker.mjs +7 -7
  109. package/components/form/error.js +3 -3
  110. package/components/form/error.mjs +2 -2
  111. package/components/form/hook-checkbox.d.mts +7 -5
  112. package/components/form/hook-checkbox.d.ts +7 -5
  113. package/components/form/hook-checkbox.js +21 -13
  114. package/components/form/hook-checkbox.js.map +1 -1
  115. package/components/form/hook-checkbox.mjs +16 -8
  116. package/components/form/hook-checkbox.mjs.map +1 -1
  117. package/components/form/hook-date-picker.js +12 -12
  118. package/components/form/hook-date-picker.mjs +9 -9
  119. package/components/form/hook-multi-select.js +17 -17
  120. package/components/form/hook-multi-select.mjs +14 -14
  121. package/components/form/hook-native-select.d.mts +7 -4
  122. package/components/form/hook-native-select.d.ts +7 -4
  123. package/components/form/hook-native-select.js +22 -15
  124. package/components/form/hook-native-select.js.map +1 -1
  125. package/components/form/hook-native-select.mjs +17 -10
  126. package/components/form/hook-native-select.mjs.map +1 -1
  127. package/components/form/hook-searchable-select.js +15 -15
  128. package/components/form/hook-searchable-select.mjs +12 -12
  129. package/components/form/hook-select.js +8 -8
  130. package/components/form/hook-select.mjs +5 -5
  131. package/components/form/hook-tag-picker.js +9 -9
  132. package/components/form/hook-tag-picker.mjs +6 -6
  133. package/components/form/hook-text-input.d.mts +7 -4
  134. package/components/form/hook-text-input.d.ts +7 -4
  135. package/components/form/hook-text-input.js +36 -16
  136. package/components/form/hook-text-input.js.map +1 -1
  137. package/components/form/hook-text-input.mjs +31 -11
  138. package/components/form/hook-text-input.mjs.map +1 -1
  139. package/components/form/hook-textarea.d.mts +7 -4
  140. package/components/form/hook-textarea.d.ts +7 -4
  141. package/components/form/hook-textarea.js +30 -16
  142. package/components/form/hook-textarea.js.map +1 -1
  143. package/components/form/hook-textarea.mjs +25 -11
  144. package/components/form/hook-textarea.mjs.map +1 -1
  145. package/components/form/hook-time-input.d.mts +7 -5
  146. package/components/form/hook-time-input.d.ts +7 -5
  147. package/components/form/hook-time-input.js +36 -15
  148. package/components/form/hook-time-input.js.map +1 -1
  149. package/components/form/hook-time-input.mjs +31 -10
  150. package/components/form/hook-time-input.mjs.map +1 -1
  151. package/components/form/multi-select.js +14 -14
  152. package/components/form/multi-select.mjs +13 -13
  153. package/components/form/native-select.js +4 -4
  154. package/components/form/native-select.mjs +3 -3
  155. package/components/form/searchable-select.js +12 -12
  156. package/components/form/searchable-select.mjs +11 -11
  157. package/components/form/select.js +5 -5
  158. package/components/form/select.mjs +4 -4
  159. package/components/form/tag-picker.js +6 -6
  160. package/components/form/tag-picker.mjs +5 -5
  161. package/components/form/text-input.d.mts +12 -0
  162. package/components/form/text-input.d.ts +12 -0
  163. package/components/form/text-input.js +5 -5
  164. package/components/form/text-input.mjs +4 -4
  165. package/components/form/textarea.js +5 -5
  166. package/components/form/textarea.mjs +4 -4
  167. package/components/form/time-input.js +7 -7
  168. package/components/form/time-input.mjs +6 -6
  169. package/components/form/types.d.mts +18 -2
  170. package/components/form/types.d.ts +18 -2
  171. package/components/form/types.js +12 -1
  172. package/components/form/types.js.map +1 -1
  173. package/components/form/types.mjs +11 -0
  174. package/components/ui/accordion.js +5 -5
  175. package/components/ui/accordion.mjs +1 -1
  176. package/components/ui/alert-dialog.js +12 -12
  177. package/components/ui/alert-dialog.mjs +3 -3
  178. package/components/ui/alert.d.mts +1 -1
  179. package/components/ui/alert.d.ts +1 -1
  180. package/components/ui/alert.js +3 -3
  181. package/components/ui/alert.mjs +2 -2
  182. package/components/ui/avatar.js +3 -3
  183. package/components/ui/avatar.mjs +2 -2
  184. package/components/ui/badge.js +3 -3
  185. package/components/ui/badge.mjs +2 -2
  186. package/components/ui/basic-alert.js +3 -3
  187. package/components/ui/basic-alert.mjs +2 -2
  188. package/components/ui/breadcrumb.js +3 -3
  189. package/components/ui/breadcrumb.mjs +2 -2
  190. package/components/ui/button-group.js +6 -6
  191. package/components/ui/button-group.mjs +2 -2
  192. package/components/ui/button.d.mts +23 -0
  193. package/components/ui/button.d.ts +23 -0
  194. package/components/ui/button.js +4 -4
  195. package/components/ui/button.mjs +3 -3
  196. package/components/ui/calendar.js +5 -5
  197. package/components/ui/calendar.mjs +4 -4
  198. package/components/ui/card.js +8 -8
  199. package/components/ui/card.mjs +1 -1
  200. package/components/ui/carousel.js +10 -10
  201. package/components/ui/carousel.mjs +3 -3
  202. package/components/ui/checkbox.js +3 -3
  203. package/components/ui/checkbox.mjs +2 -2
  204. package/components/ui/combobox.js +22 -22
  205. package/components/ui/combobox.mjs +6 -6
  206. package/components/ui/command.js +9 -9
  207. package/components/ui/command.mjs +8 -8
  208. package/components/ui/context-menu.js +11 -11
  209. package/components/ui/context-menu.mjs +1 -1
  210. package/components/ui/copy-button.js +8 -8
  211. package/components/ui/copy-button.mjs +3 -3
  212. package/components/ui/dialog.js +5 -5
  213. package/components/ui/dialog.mjs +4 -4
  214. package/components/ui/drawer.js +7 -7
  215. package/components/ui/drawer.mjs +1 -1
  216. package/components/ui/dropdown-menu.js +3 -3
  217. package/components/ui/dropdown-menu.mjs +2 -2
  218. package/components/ui/empty.js +7 -7
  219. package/components/ui/empty.mjs +1 -1
  220. package/components/ui/extension/file-input.js +5 -5
  221. package/components/ui/extension/file-input.mjs +4 -4
  222. package/components/ui/field.js +15 -15
  223. package/components/ui/field.mjs +3 -3
  224. package/components/ui/hover-card.js +2 -2
  225. package/components/ui/hover-card.mjs +1 -1
  226. package/components/ui/input-group.js +7 -7
  227. package/components/ui/input-group.mjs +6 -6
  228. package/components/ui/input-otp.js +5 -5
  229. package/components/ui/input-otp.mjs +1 -1
  230. package/components/ui/input.js +3 -3
  231. package/components/ui/input.mjs +2 -2
  232. package/components/ui/item.js +12 -12
  233. package/components/ui/item.mjs +2 -2
  234. package/components/ui/kbd.js +3 -3
  235. package/components/ui/kbd.mjs +1 -1
  236. package/components/ui/label.js +3 -3
  237. package/components/ui/label.mjs +2 -2
  238. package/components/ui/menubar.js +12 -12
  239. package/components/ui/menubar.mjs +1 -1
  240. package/components/ui/multi-select.d.mts +1 -1
  241. package/components/ui/multi-select.d.ts +1 -1
  242. package/components/ui/multi-select.js +11 -11
  243. package/components/ui/multi-select.mjs +10 -10
  244. package/components/ui/native-select.js +3 -3
  245. package/components/ui/native-select.mjs +1 -1
  246. package/components/ui/navigation-menu.js +10 -10
  247. package/components/ui/navigation-menu.mjs +1 -1
  248. package/components/ui/pagination.js +9 -9
  249. package/components/ui/pagination.mjs +3 -3
  250. package/components/ui/popover.js +3 -3
  251. package/components/ui/popover.mjs +2 -2
  252. package/components/ui/progress.js +2 -2
  253. package/components/ui/progress.mjs +1 -1
  254. package/components/ui/radio-group.js +3 -3
  255. package/components/ui/radio-group.mjs +1 -1
  256. package/components/ui/resizable.js +3 -3
  257. package/components/ui/resizable.mjs +1 -1
  258. package/components/ui/scroll-area.js +3 -3
  259. package/components/ui/scroll-area.mjs +1 -1
  260. package/components/ui/select.js +3 -3
  261. package/components/ui/select.mjs +2 -2
  262. package/components/ui/separator.js +3 -3
  263. package/components/ui/separator.mjs +2 -2
  264. package/components/ui/sheet.js +5 -5
  265. package/components/ui/sheet.mjs +4 -4
  266. package/components/ui/sidebar.js +11 -11
  267. package/components/ui/sidebar.mjs +10 -10
  268. package/components/ui/skeleton.js +3 -3
  269. package/components/ui/skeleton.mjs +2 -2
  270. package/components/ui/slider.js +2 -2
  271. package/components/ui/slider.mjs +1 -1
  272. package/components/ui/spinner.js +3 -3
  273. package/components/ui/spinner.mjs +2 -2
  274. package/components/ui/switch.js +2 -2
  275. package/components/ui/switch.mjs +1 -1
  276. package/components/ui/table.js +9 -9
  277. package/components/ui/table.mjs +1 -1
  278. package/components/ui/tabs.js +5 -5
  279. package/components/ui/tabs.mjs +1 -1
  280. package/components/ui/tag-picker.js +4 -4
  281. package/components/ui/tag-picker.mjs +3 -3
  282. package/components/ui/textarea.js +3 -3
  283. package/components/ui/textarea.mjs +2 -2
  284. package/components/ui/toggle-group.js +5 -5
  285. package/components/ui/toggle-group.mjs +2 -2
  286. package/components/ui/toggle.js +3 -3
  287. package/components/ui/toggle.mjs +2 -2
  288. package/components/ui/tooltip.js +3 -3
  289. package/components/ui/tooltip.mjs +2 -2
  290. package/components/widgets/dialog-manager/context.d.mts +26 -0
  291. package/components/widgets/dialog-manager/context.d.ts +26 -0
  292. package/components/widgets/dialog-manager/context.js +2 -2
  293. package/components/widgets/dialog-manager/context.mjs +1 -1
  294. package/components/widgets/dialog-manager/index.js +3 -3
  295. package/components/widgets/dialog-manager/index.mjs +2 -2
  296. package/components/widgets/dialog-manager/provider.d.mts +13 -0
  297. package/components/widgets/dialog-manager/provider.d.ts +13 -0
  298. package/components/widgets/dialog-manager/provider.js +3 -3
  299. package/components/widgets/dialog-manager/provider.mjs +2 -2
  300. package/components/widgets/dialog-manager/types.d.mts +10 -0
  301. package/components/widgets/dialog-manager/types.d.ts +10 -0
  302. package/hooks/use-clipboard.d.mts +12 -0
  303. package/hooks/use-clipboard.d.ts +12 -0
  304. package/hooks/use-clipboard.js +2 -2
  305. package/hooks/use-clipboard.mjs +1 -1
  306. package/hooks/use-mobile.d.mts +5 -0
  307. package/hooks/use-mobile.d.ts +5 -0
  308. package/hooks/use-mobile.js +2 -2
  309. package/hooks/use-mobile.mjs +1 -1
  310. package/layouts/sidebar1/app-sidebar.d.mts +12 -0
  311. package/layouts/sidebar1/app-sidebar.d.ts +12 -0
  312. package/layouts/sidebar1/app-sidebar.js +17 -17
  313. package/layouts/sidebar1/app-sidebar.mjs +16 -16
  314. package/layouts/sidebar1/context-switcher.js +13 -13
  315. package/layouts/sidebar1/context-switcher.mjs +12 -12
  316. package/layouts/sidebar1/index.d.mts +22 -0
  317. package/layouts/sidebar1/index.d.ts +22 -0
  318. package/layouts/sidebar1/index.js +23 -23
  319. package/layouts/sidebar1/index.js.map +1 -1
  320. package/layouts/sidebar1/index.mjs +17 -17
  321. package/layouts/sidebar1/index.mjs.map +1 -1
  322. package/layouts/sidebar1/nav-menus.js +12 -12
  323. package/layouts/sidebar1/nav-menus.mjs +11 -11
  324. package/layouts/sidebar1/nav-user.d.mts +9 -0
  325. package/layouts/sidebar1/nav-user.d.ts +9 -0
  326. package/layouts/sidebar1/nav-user.js +14 -14
  327. package/layouts/sidebar1/nav-user.mjs +13 -13
  328. package/layouts/simple/index.d.mts +23 -0
  329. package/layouts/simple/index.d.ts +23 -0
  330. package/layouts/simple/index.js +17 -17
  331. package/layouts/simple/index.js.map +1 -1
  332. package/layouts/simple/index.mjs +6 -6
  333. package/layouts/simple/index.mjs.map +1 -1
  334. package/layouts/simple/mobile-menu.js +3 -3
  335. package/layouts/simple/mobile-menu.mjs +2 -2
  336. package/layouts/simple/types.d.mts +11 -0
  337. package/layouts/simple/types.d.ts +11 -0
  338. package/layouts/simple/user-menu.js +4 -4
  339. package/layouts/simple/user-menu.mjs +3 -3
  340. package/llms.txt +102 -0
  341. package/package.json +96 -16
  342. package/utils/date.d.mts +9 -0
  343. package/utils/date.d.ts +9 -0
  344. package/utils/date.js +2 -2
  345. package/utils/date.mjs +1 -1
  346. package/utils/time.d.mts +12 -0
  347. package/utils/time.d.ts +12 -0
  348. package/utils/time.js +2 -2
  349. package/utils/time.mjs +1 -1
  350. package/utils/ui.d.mts +8 -0
  351. package/utils/ui.d.ts +8 -0
  352. package/utils/ui.js +2 -2
  353. package/utils/ui.mjs +1 -1
  354. package/chunk-2NMEKWO5.js.map +0 -1
  355. package/chunk-2YMMYND2.js.map +0 -1
  356. package/chunk-3GHC4JQU.mjs.map +0 -1
  357. package/chunk-3HZTA2ZQ.js.map +0 -1
  358. package/chunk-3JPKE36M.mjs.map +0 -1
  359. package/chunk-4BKWF5FK.js.map +0 -1
  360. package/chunk-4ETXRZKO.js.map +0 -1
  361. package/chunk-4IDPSNL3.mjs.map +0 -1
  362. package/chunk-4SYFVOM2.js.map +0 -1
  363. package/chunk-5CBMRDT7.mjs.map +0 -1
  364. package/chunk-5SLUBHNN.js.map +0 -1
  365. package/chunk-5TXFHYQ5.js.map +0 -1
  366. package/chunk-6CRGZEQF.js.map +0 -1
  367. package/chunk-6ECNY4VS.mjs.map +0 -1
  368. package/chunk-6POWZMND.js.map +0 -1
  369. package/chunk-6T6UTNWD.mjs.map +0 -1
  370. package/chunk-77MASFCZ.mjs.map +0 -1
  371. package/chunk-7BYWDRRI.mjs.map +0 -1
  372. package/chunk-7GZ7NWTV.js.map +0 -1
  373. package/chunk-7MDE2NEO.mjs.map +0 -1
  374. package/chunk-7MDWTJEP.mjs.map +0 -1
  375. package/chunk-7PX7GVOR.mjs.map +0 -1
  376. package/chunk-7ZMTJBXT.mjs.map +0 -1
  377. package/chunk-A4FV6TTM.js.map +0 -1
  378. package/chunk-AGPEWIPR.mjs.map +0 -1
  379. package/chunk-AQIBLBXW.js.map +0 -1
  380. package/chunk-B2Z7BNYW.mjs.map +0 -1
  381. package/chunk-BEPAUXCN.mjs.map +0 -1
  382. package/chunk-BJK4J4VY.js.map +0 -1
  383. package/chunk-BMAIJZN6.js.map +0 -1
  384. package/chunk-CKGMFUU2.js.map +0 -1
  385. package/chunk-CNYC22IA.mjs.map +0 -1
  386. package/chunk-CSL3CTEN.mjs.map +0 -1
  387. package/chunk-E7F5KADG.mjs.map +0 -1
  388. package/chunk-F2QWMBUB.mjs.map +0 -1
  389. package/chunk-FD7CNCJW.mjs.map +0 -1
  390. package/chunk-FOEQYO2Q.js.map +0 -1
  391. package/chunk-G6WKPZTL.js.map +0 -1
  392. package/chunk-GBNJFKPB.js.map +0 -1
  393. package/chunk-GUB2Y4JK.mjs.map +0 -1
  394. package/chunk-GV62APQ6.js.map +0 -1
  395. package/chunk-HTEQHRTK.mjs.map +0 -1
  396. package/chunk-HWDU5KVD.mjs.map +0 -1
  397. package/chunk-ICOZ5BK7.mjs.map +0 -1
  398. package/chunk-IYVLRZJ4.js.map +0 -1
  399. package/chunk-JZXOJAMQ.js.map +0 -1
  400. package/chunk-K23YFVYE.mjs.map +0 -1
  401. package/chunk-K3LYDDTD.js.map +0 -1
  402. package/chunk-K4JVHEI2.js.map +0 -1
  403. package/chunk-KB6BX6LA.js.map +0 -1
  404. package/chunk-KGUUDFJE.mjs.map +0 -1
  405. package/chunk-LAIO3QZX.js.map +0 -1
  406. package/chunk-LPDYWZN6.js.map +0 -1
  407. package/chunk-LVXIGNFJ.mjs.map +0 -1
  408. package/chunk-M6UKU56L.mjs.map +0 -1
  409. package/chunk-MM5OJOOR.mjs.map +0 -1
  410. package/chunk-N7JSYNXM.js.map +0 -1
  411. package/chunk-NCJI2DCV.mjs.map +0 -1
  412. package/chunk-NMJ6372G.js.map +0 -1
  413. package/chunk-NMYVYLKF.js.map +0 -1
  414. package/chunk-O6PHWGJH.mjs.map +0 -1
  415. package/chunk-OMQVDSR6.js.map +0 -1
  416. package/chunk-OPNHC6JN.mjs.map +0 -1
  417. package/chunk-OUVM5NST.js.map +0 -1
  418. package/chunk-OVHPXYDN.mjs.map +0 -1
  419. package/chunk-OXCN3BD6.mjs.map +0 -1
  420. package/chunk-P4DW3EEW.mjs.map +0 -1
  421. package/chunk-P4EDRIBH.js.map +0 -1
  422. package/chunk-PDB2VCWX.mjs.map +0 -1
  423. package/chunk-PS3LNHTA.js.map +0 -1
  424. package/chunk-PSPAJNNB.js.map +0 -1
  425. package/chunk-QCHBJMD6.mjs.map +0 -1
  426. package/chunk-QF6PFV6M.mjs.map +0 -1
  427. package/chunk-QHCOMBHI.js.map +0 -1
  428. package/chunk-QMLV5G5Z.js.map +0 -1
  429. package/chunk-RFORRZRN.js.map +0 -1
  430. package/chunk-RIBB6GXJ.mjs.map +0 -1
  431. package/chunk-RJG7QLDD.js.map +0 -1
  432. package/chunk-RJVQU443.mjs.map +0 -1
  433. package/chunk-RNKMPQDZ.mjs.map +0 -1
  434. package/chunk-RPF753T2.mjs.map +0 -1
  435. package/chunk-SC6IX6NJ.js.map +0 -1
  436. package/chunk-SX4LQFOF.mjs.map +0 -1
  437. package/chunk-TTCGK36S.js.map +0 -1
  438. package/chunk-UFRPUC7K.js.map +0 -1
  439. package/chunk-UKPBHVOT.js.map +0 -1
  440. package/chunk-UQW3H2JS.js.map +0 -1
  441. package/chunk-US2CUADK.mjs.map +0 -1
  442. package/chunk-VBPJD7U3.js.map +0 -1
  443. package/chunk-VHYQNTH7.mjs.map +0 -1
  444. package/chunk-VYXQVM7A.js.map +0 -1
  445. package/chunk-WIISPZZE.mjs.map +0 -1
  446. package/chunk-WJBTXKFN.js.map +0 -1
  447. package/chunk-WK4MG4VT.js.map +0 -1
  448. package/chunk-WKQDHQAS.js.map +0 -1
  449. package/chunk-WXEEDLLR.js.map +0 -1
  450. package/chunk-X3V6YE47.mjs.map +0 -1
  451. package/chunk-XMRJIUYX.mjs.map +0 -1
  452. package/chunk-XVWILFYQ.mjs.map +0 -1
  453. package/chunk-YDRPNCWF.mjs.map +0 -1
  454. package/chunk-YEGS4ETW.js.map +0 -1
  455. package/chunk-YJR5JBXS.js.map +0 -1
  456. package/chunk-YOSPWY5K.mjs.map +0 -1
  457. package/chunk-YQENFZOY.mjs.map +0 -1
  458. package/chunk-Z342XYFY.js.map +0 -1
  459. package/chunk-ZEZK2FJ4.mjs.map +0 -1
  460. package/chunk-ZFBUIBJH.mjs.map +0 -1
  461. package/chunk-ZFSZ6K4K.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-VBPJD7U3.js","../layouts/sidebar1/context-switcher.tsx"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACjBA,2EAAuB;AACvB,2CAAqC;AAsB9B,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,MAAA,EAAQ,UAAA;AAAA,EACR,eAAA,EAAiB,aAAA;AAAA,EACjB,OAAA,EAAS,KAAA;AAAA,EACT,YAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,EAAE,SAAS,EAAA,EAAI,yCAAA,CAAW;AAChC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,EAAA,EAAU,KAAA,CAAA,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,EAAA,GAAS,IAAA,CAAK,MAAM,EAAA,GAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAEtG,EAAM,KAAA,CAAA,SAAA,CAAU,CAAA,EAAA,GAAM;AACpB,IAAA,GAAA,CAAI,CAAC,MAAA,GAAS,KAAA,CAAM,OAAA,IAAW,CAAA,EAAG,MAAA;AAClC,IAAA,gBAAA,CAAiB,CAAC,IAAA,EAAA,GAAS;AACzB,MAAA,MAAM,YAAA,EAAc,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,EAAA,GAAS,IAAA,CAAK,KAAA,IAAA,CAAS,KAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,IAAA,CAAM,IAAA,CAAI,CAAA;AACjE,MAAA,OAAO,YAAA,GAAA,KAAA,EAAA,YAAA,EAAe,KAAA,CAAM,CAAC,CAAA;AAAA,IAC/B,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,4BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,gCAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,6BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,oCAAA,EAAA,EAAoB,OAAA,EAAO,KAAA,CAAA,kBAC1B,KAAA,CAAA,aAAA;AAAA,IAAC,kCAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,IAAA;AAAA,MACL,SAAA,EAAU;AAAA,IAAA,CAAA;AAAA,oBAEV,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,iCAAA;AAAA,UACT,+FAAA;AAAA,UACA,aAAA,CAAc;AAAA,QAChB;AAAA,MAAA,CAAA;AAAA,MAEC,aAAA,CAAc,KAAA,kBACb,KAAA,CAAA,aAAA,CAAC,aAAA,CAAc,IAAA,EAAd,EAAmB,SAAA,EAAU,SAAA,CAAS,EAAA,kBAEvC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAA,CAAc,OAAA,EAAS,GAAA,EAAK,aAAA,CAAc,IAAA,EAAM,SAAA,EAAU,oBAAA,CAAoB;AAAA,IAE5F,CAAA;AAAA,oBAEA,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,CAAA,kBACb,KAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,CAAA,EAA0B,aAAA,CAAc,IAAK,CAAA,kBAC7D,KAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,CAAA,EAAoB,aAAA,CAAc,IAAK,CACzD,CAAA;AAAA,oBAEA,KAAA,CAAA,aAAA,CAAC,2BAAA,EAAA,EAAe,SAAA,EAAU,UAAA,CAAU;AAAA,EACtC,CACF,CAAA,kBAEA,KAAA,CAAA,aAAA;AAAA,IAAC,oCAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,6DAAA;AAAA,MACV,KAAA,EAAM,OAAA;AAAA,MACN,IAAA,EAAM,SAAA,EAAW,SAAA,EAAW,OAAA;AAAA,MAC5B,UAAA,EAAY;AAAA,IAAA,CAAA;AAAA,oBAEZ,KAAA,CAAA,aAAA,CAAC,kCAAA,EAAA,EAAkB,SAAA,EAAU,gCAAA,CAAA,EAAiC,KAAM,CAAA;AAAA,IAEnE,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,EAAA,mBAChB,KAAA,CAAA,aAAA;AAAA,MAAC,iCAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,IAAA,CAAK,IAAA;AAAA,QACV,OAAA,EAAS,CAAA,EAAA,GAAM;AACb,UAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,UAAA,GAAA,CAAI,iBAAA,EAAmB;AACrB,YAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,UACxB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAU;AAAA,MAAA,CAAA;AAAA,sBAEV,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAAA,CAAA,EACZ,IAAA,CAAK,KAAA,kBACJ,KAAA,CAAA,aAAA,CAAC,IAAA,CAAK,IAAA,EAAL,EAAU,SAAA,EAAU,kBAAA,CAAkB,EAAA,kBAEvC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,IAAA,CAAK,OAAA,EAAS,GAAA,EAAK,IAAA,CAAK,IAAA,EAAM,SAAA,EAAU,6BAAA,CAA6B,CAEnF,CAAA;AAAA,MACC,IAAA,CAAK;AAAA,IAER,CACD,CAAA;AAAA,IAEA,OAAA,mBACC,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAC,sCAAA,EAAA,IAAsB,CAAA,kBAEvB,KAAA,CAAA,aAAA;AAAA,MAAC,iCAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,WAAA;AAAA,QACV,OAAA,EAAS,CAAA,EAAA,GAAM;AACb,UAAA,GAAA,CAAI,YAAA,EAAc;AAChB,YAAA,YAAA,CAAa,CAAA;AAAA,UACf;AAAA,QACF;AAAA,MAAA,CAAA;AAAA,sBAEA,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0EAAA,CAAA,kBACb,KAAA,CAAA,aAAA,CAAC,iBAAA,EAAA,EAAK,SAAA,EAAU,SAAA,CAAS,CAC3B,CAAA;AAAA,sBACA,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,CAAA,EAAqC,cAAe;AAAA,IACrE,CACF;AAAA,EAEJ,CACF,CACF,CACF,CAAA;AAEJ;ADzCA;AACA;AACE;AACF,0CAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-VBPJD7U3.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, Plus } from 'lucide-react';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface INavContext {\n name: string;\n logo?: React.ElementType;\n logoUrl?: string;\n text: string;\n active?: boolean;\n className?: string;\n}\n\nexport function ContextSwitcher({\n items,\n title = 'Contexts',\n newContextText = 'Add context',\n canAdd = false,\n onContextAdd,\n onContextSelected,\n}: {\n items: INavContext[];\n title?: string;\n newContextText?: string;\n canAdd?: boolean;\n onContextAdd?: () => void;\n onContextSelected?: (context: INavContext) => void;\n}) {\n const { isMobile } = useSidebar();\n const [activeContext, setActiveContext] = React.useState(items.find((item) => item.active) || items[0]);\n\n React.useEffect(() => {\n if (!items || items.length === 0) return;\n setActiveContext((prev) => {\n const stillExists = items.find((item) => item.name === prev?.name);\n return stillExists ?? items[0];\n });\n }, [items]);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <div\n className={cn(\n 'flex aspect-square size-8 items-center justify-center rounded-lg bg-dark text-dark-foreground',\n activeContext.className,\n )}\n >\n {activeContext.logo ? (\n <activeContext.logo className=\"size-4\" />\n ) : (\n <img src={activeContext.logoUrl} alt={activeContext.name} className=\"size-4 rounded-sm\" />\n )}\n </div>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{activeContext.name}</span>\n <span className=\"truncate text-xs\">{activeContext.text}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n align=\"start\"\n side={isMobile ? 'bottom' : 'right'}\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"text-xs text-muted-foreground\">{title}</DropdownMenuLabel>\n\n {items.map((item, index) => (\n <DropdownMenuItem\n key={item.name}\n onClick={() => {\n setActiveContext(item);\n if (onContextSelected) {\n onContextSelected(item);\n }\n }}\n className=\"gap-2 p-2\"\n >\n <div className=\"flex size-6 items-center justify-center rounded-sm border\">\n {item.logo ? (\n <item.logo className=\"size-4 shrink-0\" />\n ) : (\n <img src={item.logoUrl} alt={item.name} className=\"size-4 shrink-0 rounded-sm\" />\n )}\n </div>\n {item.name}\n {/* <DropdownMenuShortcut>⌘{index + 1}</DropdownMenuShortcut> */}\n </DropdownMenuItem>\n ))}\n\n {canAdd && (\n <>\n <DropdownMenuSeparator />\n\n <DropdownMenuItem\n className=\"gap-2 p-2\"\n onClick={() => {\n if (onContextAdd) {\n onContextAdd();\n }\n }}\n >\n <div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n <Plus className=\"size-4\" />\n </div>\n <div className=\"font-medium text-muted-foreground\">{newContextText}</div>\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/form/text-input.tsx"],"sourcesContent":["\"use client\";\nimport React, { InputHTMLAttributes } from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport { Input } from '../ui/input';\n\ninterface InputProps extends InputHTMLAttributes<HTMLInputElement> {}\n\nconst inputClass = '';\n\nexport interface FormTextInputProps extends InputProps {\n id?: string;\n name: string;\n label?: string;\n inputProps?: InputProps;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n}\n\nexport function FormTextInput({\n id,\n name,\n label,\n type = 'text',\n classNames,\n required,\n disabled,\n inputProps = {},\n ...rest\n}: FormTextInputProps) {\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('$form-text-input space-y-1', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <Input\n type={type}\n id={id}\n name={name}\n required={required}\n disabled={disabled}\n autoComplete=\"off\"\n {...inputProps}\n {...rest}\n className={cn(inputClass, classNames?.input)}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA,OAAO,WAAoC;AAC3C,OAAO,gBAAgB;AAOvB,IAAM,aAAa;AAcZ,SAAS,cAAc,IAUP;AAVO,eAC5B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,EA/BhB,IAuB8B,IASzB,iBATyB,IASzB;AAAA,IARH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,8BAA8B,yCAAY,OAAO,KACjE,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAGF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAa;AAAA,OACT,aACA,OARL;AAAA,MASC,WAAW,GAAG,YAAY,yCAAY,KAAK;AAAA;AAAA,EAC7C,CACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-VYXQVM7A.js","../components/form/tag-picker.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACTA,4EAAkB;AAClB,wGAAuB;AAuBhB,SAAS,aAAA,CAAc;AAAA,EAC5B,EAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,CAAC,CAAA;AAAA,EACf,YAAA,EAAc,aAAA;AAAA,EACd,SAAA,EAAW,KAAA;AAAA,EACX,SAAA,EAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAuB;AACrB,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,GAAA,EAAK,iCAAA,IAAe,CAAA;AAE7B,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,WAAG,EAAa,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,OAAO,EAAA,CAAA,EAChD,MAAA,mBACC,eAAA,CAAA,aAAA,CAAC,sBAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAW,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,KAAA,EAAO,SAAA,CAAA,EAC/C,KACH,CAAA,kBAGF,eAAA,CAAA,aAAA;AAAA,IAAC,0BAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY;AAAA,IAAA;AAAA,EACzB,CACF,CAAA;AAEJ;ADnBA;AACA;AACE;AACF,sCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-VYXQVM7A.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\n\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport { TagPicker } from '../ui/tag-picker';\n\nexport interface FormTagPickerProps {\n id?: string;\n name: string;\n label?: string;\n value: string[];\n onChange: (values: string[]) => void;\n suggestions?: string[];\n placeholder?: string;\n disabled?: boolean;\n required?: boolean;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n}\n\nexport function FormTagPicker({\n id,\n name,\n label,\n value,\n onChange,\n suggestions = [],\n placeholder = 'Add tags...',\n disabled = false,\n required = false,\n classNames,\n}: FormTagPickerProps) {\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('space-y-2', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <TagPicker\n id={id}\n value={value}\n onChange={onChange}\n suggestions={suggestions}\n placeholder={placeholder}\n disabled={disabled}\n className={classNames?.input}\n />\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/badge.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport { cn } from '../../utils/ui';\n\nconst badgeVariants = cva(\n [\n '[&>svg]:pointer-events-none [&>svg]:size-3',\n 'aria-invalid:border-destructive',\n 'aria-invalid:ring-destructive/20',\n 'border',\n 'border-transparent',\n 'dark:aria-invalid:ring-destructive/40',\n 'focus-visible:border-ring',\n 'focus-visible:ring-[3px]',\n 'focus-visible:ring-ring/50',\n 'font-medium',\n 'gap-1',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'overflow-hidden',\n 'px-2',\n 'py-0.5',\n 'rounded-sm',\n 'shrink-0',\n 'text-xs',\n 'transition-[color,box-shadow]',\n 'w-fit',\n 'whitespace-nowrap',\n 'transition-colors',\n ],\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90',\n action: 'bg-action text-action-foreground hover:bg-action/90',\n success: 'bg-success text-success-foreground hover:bg-success/90',\n warning: 'bg-warning text-warning-foreground hover:bg-warning/90',\n danger: 'bg-danger text-danger-foreground hover:bg-danger/90',\n info: 'bg-info text-info-foreground hover:bg-info/90',\n light: 'bg-light text-light-foreground hover:bg-light/90',\n dark: 'bg-dark text-dark-foreground hover:bg-dark/90',\n accent: 'bg-accent text-accent-foreground hover:bg-accent/90',\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n muted: 'bg-muted text-muted-foreground hover:bg-muted/90',\n link: 'text-primary underline-offset-4 hover:underline',\n ghost: 'hover:bg-light hover:text-light-foreground',\n },\n size: {\n sm: 'h-5 px-2 text-xs',\n default: 'h-6 px-3 text-sm',\n lg: 'h-7 px-4 text-base',\n },\n appearance: {\n solid: '',\n outline: 'bg-background border',\n 'outline-filled': 'bg-background border',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n appearance: 'solid',\n },\n },\n);\n\nexport type BadgeVariant = NonNullable<VariantProps<typeof badgeVariants>['variant']>;\nexport type BadgeSize = NonNullable<VariantProps<typeof badgeVariants>['size']>;\nexport type BadgeAppearance = NonNullable<VariantProps<typeof badgeVariants>['appearance']>;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n}\n\nfunction getOutlineClasses(variant: BadgeVariant) {\n const colors: Record<BadgeVariant, string> = {\n primary: 'border-primary text-primary hover:bg-primary/10',\n secondary: 'border-secondary text-secondary hover:bg-secondary/10',\n action: 'border-action text-action hover:bg-action/10',\n success: 'border-success text-success hover:bg-success/10',\n warning: 'border-warning text-warning hover:bg-warning/10',\n danger: 'border-danger text-danger hover:bg-danger/10',\n info: 'border-info text-info hover:bg-info/10',\n light: 'border-light text-light-foreground hover:bg-light/10',\n dark: 'border-dark text-dark hover:bg-dark/10',\n accent: 'border-accent text-accent hover:bg-accent/10',\n destructive: 'border-destructive text-destructive hover:bg-destructive/10',\n muted: 'border-muted text-muted-foreground hover:bg-muted/10',\n link: 'text-primary',\n ghost: 'text-light-foreground',\n };\n return colors[variant];\n}\n\nfunction getOutlineFilledClasses(variant: BadgeVariant) {\n const colors: Record<BadgeVariant, string> = {\n primary: 'hover:bg-primary hover:text-primary-foreground',\n secondary: 'hover:bg-secondary hover:text-secondary-foreground',\n action: 'hover:bg-action hover:text-action-foreground',\n success: 'hover:bg-success hover:text-success-foreground',\n warning: 'hover:bg-warning hover:text-warning-foreground',\n danger: 'hover:bg-danger hover:text-danger-foreground',\n info: 'hover:bg-info hover:text-info-foreground',\n light: 'hover:bg-light hover:text-light-foreground',\n dark: 'hover:bg-dark hover:text-dark-foreground',\n accent: 'hover:bg-accent hover:text-accent-foreground',\n destructive: 'hover:bg-destructive hover:text-destructive-foreground',\n muted: 'hover:bg-muted hover:text-muted-foreground',\n link: 'hover:underline',\n ghost: 'hover:bg-light',\n };\n return colors[variant];\n}\n\nfunction Badge({\n className,\n variant,\n size,\n appearance,\n asChild = false,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'span';\n\n const outlineClasses =\n appearance === 'outline' || appearance === 'outline-filled' ? [getOutlineClasses(variant as BadgeVariant)] : [];\n if (appearance === 'outline-filled') {\n outlineClasses.push(getOutlineFilledClasses(variant as BadgeVariant));\n }\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant, size, appearance }), className, outlineClasses)}\n {...props}\n />\n );\n}\nexport { Badge, badgeVariants };\n"],"mappings":";;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,YAAY;AAGrB,IAAM,gBAAgB;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MACN;AAAA,MACA,YAAY;AAAA,QACV,OAAO;AAAA,QACP,SAAS;AAAA,QACT,kBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAUA,SAAS,kBAAkB,SAAuB;AAChD,QAAM,SAAuC;AAAA,IAC3C,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACA,SAAO,OAAO,OAAO;AACvB;AAEA,SAAS,wBAAwB,SAAuB;AACtD,QAAM,SAAuC;AAAA,IAC3C,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACA,SAAO,OAAO,OAAO;AACvB;AAEA,SAAS,MAAM,IAO+E;AAP/E,eACb;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EA3HZ,IAsHe,IAMV,kBANU,IAMV;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,OAAO,UAAU,KAAK,OAAO;AAEnC,QAAM,iBACJ,eAAe,aAAa,eAAe,mBAAmB,CAAC,kBAAkB,OAAuB,CAAC,IAAI,CAAC;AAChH,MAAI,eAAe,kBAAkB;AACnC,mBAAe,KAAK,wBAAwB,OAAuB,CAAC;AAAA,EACtE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,cAAc,EAAE,SAAS,MAAM,WAAW,CAAC,GAAG,WAAW,cAAc;AAAA,OACjF;AAAA,EACN;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WJBTXKFN.js","../components/form/date-picker.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WJBTXKFN.js","sourcesContent":[null,"\"use client\";\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\nimport _isUndefined from 'lodash-es/isUndefined';\nimport _isString from 'lodash-es/isString';\n\nimport { isEqualDate } from '../../utils/date';\nimport { cn } from '../../utils/ui';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\nimport { Matcher } from 'react-day-picker';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nfunction getStartOfDay(date: Date) {\n const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return startOfDay;\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: Matcher | Matcher[];\n initialValue?: Date | string;\n closeOnSelect?: boolean;\n value?: Date | string;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n button?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n closeOnSelect = true,\n disabled,\n initialValue,\n value,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const [date, setDate] = useState<Date | undefined>(undefined);\n const [initialized, setInitialized] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (!initialized) {\n const dt = initialValue ? getStartOfDay(new Date(initialValue)) : getStartOfDay(new Date());\n\n setDate(dt);\n setInitialized(true);\n }\n }, [initialized, initialValue]);\n\n useEffect(() => {\n if (_isUndefined(value)) {\n if (!_isUndefined(date)) {\n setDate(undefined);\n }\n } else {\n const dt = _isString(value) ? new Date(value) : value;\n if (!isEqualDate(date, dt)) {\n setDate(getStartOfDay(dt));\n }\n }\n }, [value]);\n\n useEffect(() => {\n if (initialized) {\n onChange(date);\n }\n }, [date, initialized]);\n\n if (!id) id = _kebabCase(name);\n\n const display = !initialized ? <span></span> : date ? <>{formatDate(date)}</> : <span>Pick a date</span>;\n\n return (\n <div className={cn('$form-date-picker space-y-1', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <div className={cn('grid gap-2')}>\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={date ? 'secondary' : 'muted'}\n appearance=\"outline\"\n className={cn('min-w-[145px] justify-start text-left font-normal', classNames?.button)}\n >\n <CalendarIcon />\n {display}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={date}\n selected={date}\n onSelect={(newdate) => {\n if (!isEqualDate(date, newdate)) {\n setDate(newdate);\n }\n if (closeOnSelect) setIsOpen(false);\n }}\n disabled={disabled}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WK4MG4VT.js","../components/ui/tag-picker.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACNA,2EAAuB;AACvB,iDAAgC;AAChC;AAKA,SAAS,gBAAA,CAAiB,IAAA,EAAc;AACtC,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CAAE,IAAA,CAAK,CAAA;AACxC;AAYO,SAAS,SAAA,CAAU;AAAA,EACxB,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,CAAC,CAAA;AAAA,EACf,YAAA,EAAc,aAAA;AAAA,EACd,SAAA,EAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,EAAA,EAAI,6BAAA,EAAW,CAAA;AAC/C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,EAAA,EAAI,6BAAA,KAAc,CAAA;AAEhD,EAAA,MAAM,aAAA,EAAe,4BAAA,CAAQ,EAAA,GAAM,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS,IAAA,CAAK,iBAAA,CAAkB,CAAC,CAAC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAClG,EAAA,MAAM,gBAAA,EAAkB,gBAAA,CAAiB,UAAU,CAAA;AACnD,EAAA,MAAM,mBAAA,EAAqB,eAAA,CAAgB,iBAAA,CAAkB,CAAA;AAE7D,EAAA,MAAM,oBAAA,EAAsB,4BAAA,CAAQ,EAAA,GAAM;AACxC,IAAA,OAAO,WAAA,CACJ,MAAA,CAAO,CAAC,UAAA,EAAA,GAAe,CAAC,YAAA,CAAa,GAAA,CAAI,UAAA,CAAW,iBAAA,CAAkB,CAAC,CAAC,CAAA,CACxE,MAAA,CAAO,CAAC,UAAA,EAAA,GAAe;AACtB,MAAA,GAAA,CAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,UAAA,CAAW,iBAAA,CAAkB,CAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA,IACnE,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,eAAA,EAAiB,kBAAA,EAAoB,YAAA,EAAc,WAAW,CAAC,CAAA;AAEnE,EAAA,MAAM,UAAA,EACJ,CAAC,CAAC,gBAAA,GACF,CAAC,YAAA,CAAa,GAAA,CAAI,kBAAkB,EAAA,GACpC,CAAC,WAAA,CAAY,IAAA,CAAK,CAAC,UAAA,EAAA,GAAe,UAAA,CAAW,iBAAA,CAAkB,EAAA,IAAM,kBAAkB,CAAA;AAEzF,EAAA,MAAM,OAAA,EAAS,CAAC,OAAA,EAAA,GAAoB;AAClC,IAAA,MAAM,SAAA,EAAW,gBAAA,CAAiB,OAAO,CAAA;AACzC,IAAA,GAAA,CAAI,CAAC,QAAA,EAAU;AACb,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,EAAU,QAAA,CAAS,iBAAA,CAAkB,CAAA;AAC3C,IAAA,MAAM,mBAAA,EAAqB,WAAA,CAAY,IAAA,CAAK,CAAC,UAAA,EAAA,GAAe,UAAA,CAAW,iBAAA,CAAkB,EAAA,IAAM,OAAO,CAAA;AACtG,IAAA,MAAM,UAAA,EAAY,mBAAA,GAAA,KAAA,EAAA,mBAAA,EAAsB,QAAA;AAExC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,SAAA,CAAU,iBAAA,CAAkB,CAAC,CAAA,EAAG;AACnD,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,CAAC,GAAG,KAAA,EAAO,SAAS,CAAC,CAAA;AAC9B,IAAA,aAAA,CAAc,EAAE,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,UAAA,EAAY,CAAC,OAAA,EAAA,GAAoB;AACrC,IAAA,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,EAAA,GAAS,IAAA,CAAK,iBAAA,CAAkB,EAAA,IAAM,OAAA,CAAQ,iBAAA,CAAkB,CAAC,CAAC,CAAA;AAAA,EAC3F,CAAA;AAEA,EAAA,MAAM,SAAA,EAAW,CAAC,SAAA,GAAY,UAAA,GAAA,CAAc,mBAAA,CAAoB,OAAA,EAAS,EAAA,GAAK,SAAA,CAAA;AAE9E,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,WAAG,EAAa,SAAS,EAAA,CAAA,kBACvC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,CAAA,kBACb,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,iCAAA;AAAA,QACT,6FAAA;AAAA,QACA,4CAAA;AAAA,QACA,SAAA,GAAY;AAAA,MACd;AAAA,IAAA,CAAA;AAAA,IAEC,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,EAAA,mBACV,KAAA,CAAA,aAAA,CAAC,sBAAA,EAAA,EAAM,GAAA,EAAK,OAAA,EAAS,OAAA,EAAQ,WAAA,EAAY,SAAA,EAAU,4CAAA,CAAA,kBACjD,KAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,CAAA,EAAW,OAAQ,CAAA,EAClC,CAAC,SAAA,mBACA,KAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,gLAAA;AAAA,QACV,WAAA,EAAa,CAAC,KAAA,EAAA,GAAU,KAAA,CAAM,cAAA,CAAe,CAAA;AAAA,QAC7C,OAAA,EAAS,CAAA,EAAA,GAAM,SAAA,CAAU,OAAO,CAAA;AAAA,QAChC,YAAA,EAAY,CAAA,OAAA,EAAU,OAAO,CAAA;AAAA,MAAA;AAAA,sBAAA;AAEE,IAAA;AAItC,oBAAA;AAED,MAAA;AAAC,MAAA;AAAA,QAAA;AACC,QAAA;AACO,QAAA;AACP,QAAA;AACgD,QAAA;AACtC,QAAA;AACsB,QAAA;AAE9B,UAAA;AAAgD,QAAA;AAClD,QAAA;AACqD,QAAA;AAEnD,UAAA;AACE,YAAA;AACA,YAAA;AAAsB,UAAA;AAGxB,UAAA;AACE,YAAA;AACA,YAAA;AAAiC,UAAA;AACnC,QAAA;AACF,MAAA;AAAA,IAAA;AACF,EAAA;AAMI,IAAA;AAAC,IAAA;AAAA,MAAA;AACM,MAAA;AACA,MAAA;AACK,MAAA;AACmC,MAAA;AACb,IAAA;AAAA,oBAAA;AAEd,oBAAA;AACsC,EAAA;AAK1D,IAAA;AAAC,IAAA;AAAA,MAAA;AACM,MAAA;AACK,MAAA;AACmC,MAAA;AACR,IAAA;AAAA,oBAAA;AAEH,oBAAA;AACQ,EAAA;AAQ1D;ADvCA;AACA;AACA;AACA","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WK4MG4VT.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { IconPlus, IconX } from '@tabler/icons-react';\nimport { useMemo, useState } from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Badge } from './badge';\n\nfunction normalizeTagName(name: string) {\n return name.replace(/\\s+/g, ' ').trim();\n}\n\nexport interface TagPickerProps {\n id?: string;\n value: string[];\n onChange: (values: string[]) => void;\n suggestions?: string[];\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function TagPicker({\n id,\n value,\n onChange,\n suggestions = [],\n placeholder = 'Add tags...',\n disabled = false,\n className,\n}: TagPickerProps) {\n const [inputValue, setInputValue] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n\n const selectedKeys = useMemo(() => new Set(value.map((item) => item.toLocaleLowerCase())), [value]);\n const normalizedInput = normalizeTagName(inputValue);\n const normalizedInputKey = normalizedInput.toLocaleLowerCase();\n\n const filteredSuggestions = useMemo(() => {\n return suggestions\n .filter((suggestion) => !selectedKeys.has(suggestion.toLocaleLowerCase()))\n .filter((suggestion) => {\n if (!normalizedInput) {\n return true;\n }\n return suggestion.toLocaleLowerCase().includes(normalizedInputKey);\n })\n .slice(0, 8);\n }, [normalizedInput, normalizedInputKey, selectedKeys, suggestions]);\n\n const canCreate =\n !!normalizedInput &&\n !selectedKeys.has(normalizedInputKey) &&\n !suggestions.some((suggestion) => suggestion.toLocaleLowerCase() === normalizedInputKey);\n\n const addTag = (rawName: string) => {\n const nextName = normalizeTagName(rawName);\n if (!nextName) {\n setInputValue('');\n return;\n }\n\n const nextKey = nextName.toLocaleLowerCase();\n const matchingSuggestion = suggestions.find((suggestion) => suggestion.toLocaleLowerCase() === nextKey);\n const finalName = matchingSuggestion ?? nextName;\n\n if (selectedKeys.has(finalName.toLocaleLowerCase())) {\n setInputValue('');\n return;\n }\n\n onChange([...value, finalName]);\n setInputValue('');\n };\n\n const removeTag = (tagName: string) => {\n onChange(value.filter((item) => item.toLocaleLowerCase() !== tagName.toLocaleLowerCase()));\n };\n\n const showMenu = !disabled && isFocused && (filteredSuggestions.length > 0 || canCreate);\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"relative\">\n <div\n className={cn(\n 'flex min-h-8 flex-wrap items-center gap-1 rounded-lg border bg-background px-2 py-1 text-sm',\n 'focus-within:ring-1 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n )}\n >\n {value.map((tagName) => (\n <Badge key={tagName} variant=\"secondary\" className=\"flex items-center gap-1 rounded-md px-1.5\">\n <span className=\"text-xs\">{tagName}</span>\n {!disabled && (\n <button\n type=\"button\"\n className=\"inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => removeTag(tagName)}\n aria-label={`Remove ${tagName}`}\n >\n <IconX className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </Badge>\n ))}\n\n <input\n id={id}\n value={inputValue}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : ''}\n className=\"min-w-24 flex-1 border-0 bg-transparent p-0 pl-1 text-sm outline-none placeholder:text-muted-foreground\"\n onFocus={() => setIsFocused(true)}\n onBlur={() => {\n window.setTimeout(() => setIsFocused(false), 100);\n }}\n onChange={(event) => setInputValue(event.target.value)}\n onKeyDown={(event) => {\n if ((event.key === 'Enter' || event.key === ',') && normalizedInput) {\n event.preventDefault();\n addTag(normalizedInput);\n }\n\n if (event.key === 'Backspace' && !inputValue && value.length > 0) {\n event.preventDefault();\n removeTag(value[value.length - 1]);\n }\n }}\n />\n </div>\n\n {showMenu && (\n <div className=\"absolute z-50 mt-1 w-full rounded-md border bg-background p-1 shadow-md\">\n {filteredSuggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n className=\"flex w-full items-center justify-between rounded-sm px-2 py-1.5 text-left text-sm hover:bg-muted\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => addTag(suggestion)}\n >\n <span>{suggestion}</span>\n <span className=\"text-xs text-muted-foreground\">Existing</span>\n </button>\n ))}\n\n {canCreate && (\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm hover:bg-muted\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => addTag(normalizedInput)}\n >\n <IconPlus className=\"h-3.5 w-3.5\" />\n <span>Create &quot;{normalizedInput}&quot;</span>\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WKQDHQAS.js","../components/ui/sheet.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WKQDHQAS.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { Dialog as SheetPrimitive } from 'radix-ui';\n\nimport { cn } from '../../utils/ui';\nimport { Button } from './button';\nimport { XIcon } from 'lucide-react';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'bg-black/10 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n 'bg-background fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close data-slot=\"sheet-close\" asChild>\n <Button variant=\"ghost\" className=\"absolute top-3 right-3\" size=\"icon-sm\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </Button>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-header\" className={cn('gap-0.5 p-4 flex flex-col', className)} {...props} />;\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-footer\" className={cn('gap-2 p-4 mt-auto flex flex-col', className)} {...props} />;\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground text-base font-medium cn-font-heading', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WXEEDLLR.js","../components/ui/multi-select.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-WXEEDLLR.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { IconCheck, IconX } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { type KeyboardEvent, createContext, forwardRef, useCallback, useContext, useState } from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Badge } from './badge';\nimport { Command, CommandEmpty, CommandItem, CommandList } from './command';\n\nexport type MultiSelectValue = {\n value: string;\n label: string;\n};\n\ninterface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive> {\n values: MultiSelectValue[];\n onValuesChange: (value: MultiSelectValue[]) => void;\n loop?: boolean;\n className?: string;\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n disabled?: boolean;\n}\n\ninterface MultiSelectContextProps {\n value: MultiSelectValue[];\n onValueChange: (value: MultiSelectValue) => void;\n open: boolean;\n setOpen: (value: boolean) => void;\n inputValue: string;\n setInputValue: React.Dispatch<React.SetStateAction<string>>;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n ref: React.RefObject<HTMLInputElement | null>;\n disabled: boolean;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextProps | null>(null);\n\nconst useMultiSelect = () => {\n const context = useContext(MultiSelectContext);\n if (!context) {\n throw new Error('useMultiSelect must be used within MultiSelectProvider');\n }\n return context;\n};\n\nfunction searchForValue(source: MultiSelectValue[], value: MultiSelectValue) {\n for (let i = 0; i < source.length; i++) {\n if (source[i].value === value.value) {\n return i;\n }\n }\n return -1;\n}\n\nconst MultiSelector = ({\n values: value,\n onValuesChange: onValueChange,\n loop = false,\n className,\n children,\n dir,\n disabled = false,\n ...props\n}: MultiSelectorProps) => {\n const [inputValue, setInputValue] = useState('');\n const [open, setOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const onValueChangeHandler = useCallback(\n (val: MultiSelectValue) => {\n if (disabled) return;\n\n const exists = value.some((currentValue) => currentValue.value === val.value);\n if (exists) {\n onValueChange(value.filter((currentValue) => currentValue.value !== val.value));\n } else {\n onValueChange([...value, val]);\n }\n },\n [disabled, onValueChange, value],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n e.stopPropagation();\n\n if (disabled) return;\n\n const target = inputRef.current;\n\n if (!target) return;\n\n const selectionStart = target.selectionStart ?? 0;\n const selectionEnd = target.selectionEnd ?? 0;\n\n if (selectionStart !== selectionEnd) {\n return;\n }\n\n const moveNext = () => {\n const nextIndex = activeIndex + 1;\n setActiveIndex(nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex);\n };\n\n const movePrev = () => {\n const prevIndex = activeIndex - 1;\n setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex);\n };\n\n const moveCurrent = () => {\n const newIndex = activeIndex - 1 <= 0 ? (value.length - 1 === 0 ? -1 : 0) : activeIndex - 1;\n setActiveIndex(newIndex);\n };\n\n switch (e.key) {\n case 'ArrowLeft':\n if (dir === 'rtl') {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n } else if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n break;\n\n case 'ArrowRight':\n if (dir === 'rtl') {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n } else if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n break;\n\n case 'Backspace':\n case 'Delete':\n if (value.length > 0) {\n if (activeIndex !== -1 && activeIndex < value.length) {\n onValueChangeHandler(value[activeIndex]);\n moveCurrent();\n } else if (target.selectionStart === 0) {\n onValueChangeHandler(value[value.length - 1]);\n }\n }\n break;\n\n case 'Enter':\n setOpen(true);\n break;\n\n case 'Escape':\n if (activeIndex !== -1) {\n setActiveIndex(-1);\n } else if (open) {\n setInputValue('');\n setOpen(false);\n }\n break;\n }\n },\n [activeIndex, dir, disabled, loop, onValueChangeHandler, open, value],\n );\n\n return (\n <MultiSelectContext.Provider\n value={{\n value,\n onValueChange: onValueChangeHandler,\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeIndex,\n setActiveIndex,\n ref: inputRef,\n disabled,\n }}\n >\n <Command\n onKeyDown={handleKeyDown}\n className={cn('flex flex-col overflow-visible bg-transparent', className)}\n dir={dir}\n {...props}\n >\n {children}\n </Command>\n </MultiSelectContext.Provider>\n );\n};\n\nconst MultiSelectorTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { value, onValueChange, activeIndex, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap gap-1 rounded-lg border bg-background px-2 py-1',\n activeIndex === -1 && 'focus-within:ring-1 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n {...props}\n >\n {value.map((item, index) => (\n <Badge\n key={item.value}\n className={cn(\n 'flex items-center gap-1 rounded-md px-1.5',\n activeIndex === index && 'ring-2 ring-muted-foreground',\n )}\n variant=\"secondary\"\n >\n <span className=\"text-xs\">{item.label}</span>\n <button\n aria-label={`Remove ${item.label} option`}\n type=\"button\"\n disabled={disabled}\n onMouseDown={mousePreventDefault}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n\n onValueChange(item);\n }}\n className=\"inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none disabled:cursor-not-allowed\"\n >\n <span className=\"sr-only\">Remove {item.label} option</span>\n <IconX className=\"h-3.5 w-3.5\" />\n </button>\n </Badge>\n ))}\n {children}\n </div>\n );\n },\n);\n\nMultiSelectorTrigger.displayName = 'MultiSelectorTrigger';\n\nconst MultiSelectorInput = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, disabled: disabledProp, ...props }, ref) => {\n const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef, disabled } = useMultiSelect();\n\n return (\n <CommandPrimitive.Input\n {...props}\n tabIndex={0}\n ref={inputRef}\n value={inputValue}\n disabled={disabled || disabledProp}\n onValueChange={activeIndex === -1 ? setInputValue : undefined}\n onBlur={() => {\n setInputValue('');\n setOpen(false);\n }}\n onFocus={() => setOpen(true)}\n onClick={() => setActiveIndex(-1)}\n className={cn(\n 'flex-1 border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground focus:outline-none focus:ring-0',\n className,\n activeIndex !== -1 && 'caret-transparent',\n )}\n />\n );\n});\n\nMultiSelectorInput.displayName = 'MultiSelectorInput';\n\nconst MultiSelectorContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ children }, ref) => {\n const { open } = useMultiSelect();\n\n if (!open) return null;\n\n return (\n <div ref={ref} className=\"relative\">\n {children}\n </div>\n );\n});\n\nMultiSelectorContent.displayName = 'MultiSelectorContent';\n\nconst MultiSelectorList = forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, children }, ref) => {\n return (\n <CommandList\n ref={ref}\n className={cn(\n 'absolute top-0 z-100 flex w-full flex-col gap-2 rounded-md border border-muted bg-background p-2 shadow-md scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-lg scrollbar-thumb-muted-foreground transition-colors dark:scrollbar-thumb-muted',\n className,\n )}\n >\n {children}\n <CommandEmpty>\n <span className=\"text-muted-foreground\">No results found</span>\n </CommandEmpty>\n </CommandList>\n );\n});\n\nMultiSelectorList.displayName = 'MultiSelectorList';\n\nconst MultiSelectorItem = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n { value: string; label: string } & React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, value, label, children, disabled: disabledProp, ...props }, ref) => {\n const { value: options, onValueChange, setInputValue, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const isIncluded =\n searchForValue(options, {\n value,\n label,\n }) !== -1;\n\n const isDisabled = disabled || disabledProp;\n\n return (\n <CommandItem\n ref={ref}\n {...props}\n disabled={isDisabled}\n onSelect={() => {\n if (isDisabled) return;\n\n onValueChange({\n value,\n label,\n });\n setInputValue('');\n }}\n className={cn(\n 'flex cursor-pointer justify-between rounded-md px-2 py-1 transition-colors',\n className,\n isIncluded && 'cursor-default opacity-50',\n isDisabled && 'cursor-not-allowed opacity-50',\n )}\n onMouseDown={mousePreventDefault}\n >\n {children}\n {isIncluded && <IconCheck className=\"h-4 w-4\" />}\n </CommandItem>\n );\n});\n\nMultiSelectorItem.displayName = 'MultiSelectorItem';\n\nexport {\n MultiSelector,\n MultiSelectorTrigger,\n MultiSelectorInput,\n MultiSelectorContent,\n MultiSelectorList,\n MultiSelectorItem,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../hooks/use-clipboard.tsx"],"sourcesContent":["\"use client\";\nimport { useState, useCallback } from 'react';\n\nexport function useClipboard({ timeout = 2000 }: { timeout?: number } = {}) {\n const [copied, setCopied] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const copy = useCallback(\n async (value: string) => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setError(null);\n setTimeout(() => setCopied(false), timeout);\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n },\n [timeout],\n );\n\n return { copied, copy, error };\n}\n"],"mappings":";AACA,SAAS,UAAU,mBAAmB;AAE/B,SAAS,aAAa,EAAE,UAAU,IAAK,IAA0B,CAAC,GAAG;AAC1E,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AAErD,QAAM,OAAO;AAAA,IACX,OAAO,UAAkB;AACvB,UAAI;AACF,cAAM,UAAU,UAAU,UAAU,KAAK;AACzC,kBAAU,IAAI;AACd,iBAAS,IAAI;AACb,mBAAW,MAAM,UAAU,KAAK,GAAG,OAAO;AAAA,MAC5C,SAAS,KAAK;AACZ,iBAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;AAAA,MAC9D;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,SAAO,EAAE,QAAQ,MAAM,MAAM;AAC/B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { Tooltip as TooltipPrimitive } from 'radix-ui';\n\nimport { cn } from '../../utils/ui';\n\nfunction TooltipProvider({ delayDuration = 0, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\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 'data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-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 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) bg-foreground text-background',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 rotate-45 rounded-[2px] z-50 translate-y-[calc(-50%_-_2px)] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n"],"mappings":";;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,WAAW,wBAAwB;AAI5C,SAAS,gBAAgB,IAAyF;AAAzF,eAAE,kBAAgB,EAN3C,IAMyB,IAAwB,kBAAxB,IAAwB,CAAtB;AACzB,SAAO,oCAAC,iBAAiB,UAAjB,iBAA0B,aAAU,oBAAmB,iBAAkC,MAAO;AAC1G;AAEA,SAAS,QAAQ,IAAkE;AAAlE,MAAK,kBAAL,IAAK;AACpB,SAAO,oCAAC,iBAAiB,MAAjB,iBAAsB,aAAU,aAAc,MAAO;AAC/D;AAEA,SAAS,eAAe,IAAqE;AAArE,MAAK,kBAAL,IAAK;AAC3B,SAAO,oCAAC,iBAAiB,SAAjB,iBAAyB,aAAU,qBAAsB,MAAO;AAC1E;AAEA,SAAS,eAAe,IAKkC;AALlC,eACtB;AAAA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EArBF,IAkBwB,IAInB,kBAJmB,IAInB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,oCAAC,iBAAiB,QAAjB,MACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,IAEH;AAAA,IACD,oCAAC,iBAAiB,OAAjB,EAAuB,WAAU,sGAAqG;AAAA,EACzI,CACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/toggle.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Toggle as TogglePrimitive } from 'radix-ui';\n\nimport { cn } from '../../utils/ui';\n\nconst toggleVariants = cva(\n \"hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-lg text-sm font-medium transition-all [&_svg:not([class*='size-'])]:size-4 group/toggle inline-flex items-center justify-center whitespace-nowrap outline-none hover:bg-muted focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border-input hover:bg-muted border bg-transparent',\n },\n size: {\n default: 'h-8 min-w-8 px-2',\n sm: 'h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]',\n lg: 'h-9 min-w-9 px-2.5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction Toggle({\n className,\n variant = 'default',\n size = 'default',\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />\n );\n}\n\nexport { Toggle, toggleVariants };\n"],"mappings":";;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,UAAU,uBAAuB;AAI1C,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO,IAK4E;AAL5E,eACd;AAAA;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,EA/BT,IA4BgB,IAIX,kBAJW,IAIX;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,oCAAC,gBAAgB,MAAhB,iBAAqB,aAAU,UAAS,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC,KAAO,MAAO;AAErH;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/input-group.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils/ui';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Textarea } from './textarea';\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n 'border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n 'inline-start': 'pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first',\n 'inline-end': 'pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last',\n 'block-start':\n 'px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start',\n 'block-end': 'px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = 'inline-start',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.currentTarget.parentElement?.querySelector('input')?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva('gap-2 text-sm flex items-center shadow-none', {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: '',\n 'icon-xs': 'size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0',\n 'icon-sm': 'size-8 p-0 has-[>svg]:p-0',\n },\n },\n defaultVariants: {\n size: 'xs',\n },\n});\n\nfunction InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'size'> & VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<'input'>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n 'rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n 'rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1 resize-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea };\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,WAA8B;AAOvC,SAAS,WAAW,IAAsD;AAAtD,eAAE,YATtB,IASoB,IAAgB,kBAAhB,IAAgB,CAAd;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,IAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,eACE;AAAA,QACF,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,IAIsD;AAJtD,eACvB;AAAA;AAAA,IACA,QAAQ;AAAA,EA3CV,IAyCyB,IAGpB,kBAHoB,IAGpB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW,GAAG,wBAAwB,EAAE,MAAM,CAAC,GAAG,SAAS;AAAA,MAC3D,SAAS,CAAC,MAAM;AApDtB,YAAAA,KAAAC;AAqDQ,YAAK,EAAE,OAAuB,QAAQ,QAAQ,GAAG;AAC/C;AAAA,QACF;AACA,SAAAA,OAAAD,MAAA,EAAE,cAAc,kBAAhB,gBAAAA,IAA+B,cAAc,aAA7C,gBAAAC,IAAuD;AAAA,MACzD;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,IAAM,2BAA2B,IAAI,+CAA+C;AAAA,EAClF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAED,SAAS,iBAAiB,IAM4E;AAN5E,eACxB;AAAA;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,EAjFT,IA6E0B,IAKrB,kBALqB,IAKrB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAW;AAAA,MACX;AAAA,MACA,WAAW,GAAG,yBAAyB,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,OACvD;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,IAAuD;AAAvD,eAAE,YA/F1B,IA+FwB,IAAgB,kBAAhB,IAAgB,CAAd;AACxB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,IAAwD;AAAxD,eAAE,YA3G3B,IA2GyB,IAAgB,kBAAhB,IAAgB,CAAd;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB,IAA2D;AAA3D,eAAE,YAxH9B,IAwH4B,IAAgB,kBAAhB,IAAgB,CAAd;AAC5B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;","names":["_a","_b"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-YEGS4ETW.js","../components/form/multi-select.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-YEGS4ETW.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _isString from 'lodash-es/isString';\nimport _kebabCase from 'lodash-es/kebabCase';\n\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport {\n MultiSelector,\n MultiSelectorInput,\n MultiSelectorItem,\n MultiSelectorList,\n MultiSelectorTrigger,\n type MultiSelectValue,\n} from '../ui/multi-select';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nexport interface FormMultiSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: MultiSelectValue[] | string[];\n value: string[];\n onChange: (values: string[]) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n trigger?: string;\n input?: string;\n content?: string;\n };\n required?: boolean;\n disabled?: boolean;\n loop?: boolean;\n}\n\nexport function FormMultiSelect({\n id,\n name,\n label,\n placeholder = 'Select options...',\n data,\n value = [],\n onChange,\n classNames,\n required,\n disabled,\n loop = false,\n}: FormMultiSelectProps) {\n const options: MultiSelectValue[] = React.useMemo(() => {\n if (!data || data.length === 0) return [];\n if (_isString(data[0])) {\n return (data as string[]).map((currentValue) => ({ label: currentValue, value: currentValue }));\n }\n return data as MultiSelectValue[];\n }, [data]);\n\n const selectedValues = React.useMemo(() => {\n return value\n .map((currentValue) => options.find((option) => option.value === currentValue))\n .filter((option): option is MultiSelectValue => !!option);\n }, [options, value]);\n\n const handleValueChange = (newValues: MultiSelectValue[]) => {\n onChange(newValues.map((currentValue) => currentValue.value));\n };\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('flex flex-col gap-2', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <MultiSelector\n values={selectedValues}\n onValuesChange={handleValueChange}\n loop={loop}\n disabled={disabled}\n className=\"p-0\"\n >\n <Popover>\n <PopoverTrigger asChild>\n <MultiSelectorTrigger className={cn('cursor-pointer', classNames?.trigger)}>\n <MultiSelectorInput\n id={id}\n disabled={disabled}\n placeholder={selectedValues.length === 0 ? placeholder : ''}\n className={classNames?.input}\n />\n </MultiSelectorTrigger>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <MultiSelectorList className=\"static relative border-none shadow-none\">\n {options.map((option) => (\n <MultiSelectorItem key={option.value} value={option.value} label={option.label}>\n <span>{option.label}</span>\n </MultiSelectorItem>\n ))}\n </MultiSelectorList>\n </PopoverContent>\n </Popover>\n </MultiSelector>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-YJR5JBXS.js","../components/ui/tooltip.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;ACPA,2EAAuB;AACvB,mCAA4C;AAI5C,SAAS,eAAA,CAAgB,EAAA,EAAyF;AAAzF,EAAA,IAAA,GAAA,EAAA,EAAA,EAAE,EAAA,cAAA,EAAgB,EAN3C,EAAA,EAMyB,EAAA,EAAwB,MAAA,EAAA,wCAAA,EAAxB,EAAwB,CAAtB,eAAA,CAAA,CAAA;AACzB,EAAA,uBAAO,KAAA,CAAA,aAAA,CAAC,gBAAA,CAAiB,QAAA,EAAjB,6CAAA,EAA0B,WAAA,EAAU,kBAAA,EAAmB,cAAA,CAAA,EAAkC,KAAA,CAAO,CAAA;AAC1G;AAEA,SAAS,OAAA,CAAQ,EAAA,EAAkE;AAAlE,EAAA,IAAK,MAAA,EAAA,wCAAA,EAAL,EAAK,CAAA,CAAA,CAAA;AACpB,EAAA,uBAAO,KAAA,CAAA,aAAA,CAAC,gBAAA,CAAiB,IAAA,EAAjB,6CAAA,EAAsB,WAAA,EAAU,UAAA,CAAA,EAAc,KAAA,CAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe,EAAA,EAAqE;AAArE,EAAA,IAAK,MAAA,EAAA,wCAAA,EAAL,EAAK,CAAA,CAAA,CAAA;AAC3B,EAAA,uBAAO,KAAA,CAAA,aAAA,CAAC,gBAAA,CAAiB,OAAA,EAAjB,6CAAA,EAAyB,WAAA,EAAU,kBAAA,CAAA,EAAsB,KAAA,CAAO,CAAA;AAC1E;AAEA,SAAS,cAAA,CAAe,EAAA,EAKkC;AALlC,EAAA,IAAA,GAAA,EAAA,EAAA,EACtB;AAAA,IAAA,SAAA;AAAA,IACA,WAAA,EAAa,CAAA;AAAA,IACb;AAAA,EArBF,EAAA,EAkBwB,EAAA,EAInB,MAAA,EAAA,wCAAA,EAJmB,EAInB;AAAA,IAHH,WAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,EAAA,CAAA,CAAA;AAGA,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,gBAAA,CAAiB,MAAA,EAAjB,IAAA,kBACC,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA,CAAiB,OAAA;AAAA,IAAjB,6CAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,iCAAA;AAAA,QACT,4rBAAA;AAAA,QACA;AAAA,MACF;AAAA,IAAA,CAAA,EACI,KAAA,CAAA;AAAA,IAEH,QAAA;AAAA,oBACD,KAAA,CAAA,aAAA,CAAC,gBAAA,CAAiB,KAAA,EAAjB,EAAuB,SAAA,EAAU,qGAAA,CAAqG;AAAA,EACzI,CACF,CAAA;AAEJ;ADOA;AACA;AACE;AACA;AACA;AACA;AACF,uJAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-YJR5JBXS.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { Tooltip as TooltipPrimitive } from 'radix-ui';\n\nimport { cn } from '../../utils/ui';\n\nfunction TooltipProvider({ delayDuration = 0, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\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 'data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-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 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) bg-foreground text-background',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 rotate-45 rounded-[2px] z-50 translate-y-[calc(-50%_-_2px)] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/textarea.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\n\nimport { cn } from '../../utils/ui';\n\nconst baseClassName = [\n 'aria-invalid:border-destructive',\n 'aria-invalid:ring-3',\n 'aria-invalid:ring-destructive/20',\n 'bg-transparent',\n 'border',\n 'border-input',\n 'dark:aria-invalid:border-destructive/50',\n 'dark:aria-invalid:ring-destructive/40',\n 'dark:bg-input/30',\n 'dark:disabled:bg-input/80',\n 'disabled:bg-input/50',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'field-sizing-content',\n 'flex',\n 'focus-visible:border-ring',\n 'focus-visible:ring-3',\n 'focus-visible:ring-ring/50',\n 'md:text-sm',\n 'min-h-16',\n 'outline-none',\n 'placeholder:text-muted-foreground',\n 'px-2.5',\n 'py-2',\n 'rounded-sm',\n 'text-base',\n 'transition-colors',\n 'w-full',\n].join(' ');\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, React.ComponentProps<'textarea'>>(\n ({ className, ...props }, ref) => {\n return <textarea className={cn(baseClassName, className)} ref={ref} {...props} />;\n },\n);\n\nexport { Textarea };\n"],"mappings":";;;;;;;;;AACA,YAAY,WAAW;AAIvB,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,IAAM,WAAiB;AAAA,EACrB,CAAC,IAAyB,QAAQ;AAAjC,iBAAE,YArCL,IAqCG,IAAgB,kBAAhB,IAAgB,CAAd;AACD,WAAO,oCAAC,6BAAS,WAAW,GAAG,eAAe,SAAS,GAAG,OAAc,MAAO;AAAA,EACjF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-Z342XYFY.js","../components/ui/alert.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-Z342XYFY.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/ui';\n\nconst alertVariants = cva(\n 'relative w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm ' +\n '[&>svg+div]:translate-y-[-3px] ' +\n '[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-2 [&>svg]:text-current ' +\n '[&>svg~*]:pl-7',\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground [&_[data-alert-description]]:text-primary-foreground/90',\n secondary: 'bg-secondary text-secondary-foreground [&_[data-alert-description]]:text-secondary-foreground/90',\n success: 'bg-success text-success-foreground [&_[data-alert-description]]:text-success-foreground/90',\n warning: 'bg-warning text-warning-foreground [&_[data-alert-description]]:text-warning-foreground/90',\n danger: 'bg-danger text-danger-foreground [&_[data-alert-description]]:text-danger-foreground/90',\n info: 'bg-info text-info-foreground [&_[data-alert-description]]:text-info-foreground/90',\n light: 'bg-light text-light-foreground [&_[data-alert-description]]:text-light-foreground/90',\n dark: 'bg-dark text-dark-foreground [&_[data-alert-description]]:text-dark-foreground/90',\n accent: 'bg-accent text-accent-foreground [&_[data-alert-description]]:text-accent-foreground/90',\n destructive:\n 'bg-destructive text-destructive-foreground [&_[data-alert-description]]:text-destructive-foreground/90',\n muted: 'bg-muted text-muted-foreground [&_[data-alert-description]]:text-muted-foreground/90',\n link: 'text-primary underline-offset-4 [&_[data-alert-description]]:text-primary/90',\n ghost: '[&_[data-alert-description]]:text-muted-foreground',\n },\n appearance: {\n solid: '',\n light: 'font-semibold',\n },\n },\n compoundVariants: [\n {\n variant: 'primary',\n appearance: 'light',\n class: 'bg-primary/20 text-primary [&_[data-alert-description]]:text-primary',\n },\n {\n variant: 'secondary',\n appearance: 'light',\n class: 'bg-secondary/20 text-secondary [&_[data-alert-description]]:text-secondary',\n },\n {\n variant: 'success',\n appearance: 'light',\n class: 'bg-success/20 text-success [&_[data-alert-description]]:text-success',\n },\n {\n variant: 'warning',\n appearance: 'light',\n class: 'bg-warning/20 text-warning [&_[data-alert-description]]:text-warning',\n },\n {\n variant: 'danger',\n appearance: 'light',\n class: 'bg-danger/20 text-danger [&_[data-alert-description]]:text-danger',\n },\n { variant: 'info', appearance: 'light', class: 'bg-info/20 text-info [&_[data-alert-description]]:text-info' },\n {\n variant: 'light',\n appearance: 'light',\n class: 'bg-light/20 text-light [&_[data-alert-description]]:text-light',\n },\n { variant: 'dark', appearance: 'light', class: 'bg-dark/20 text-dark [&_[data-alert-description]]:text-dark' },\n {\n variant: 'accent',\n appearance: 'light',\n class: 'bg-accent/20 text-accent [&_[data-alert-description]]:text-accent',\n },\n {\n variant: 'destructive',\n appearance: 'light',\n class: 'bg-destructive/20 text-destructive [&_[data-alert-description]]:text-destructive',\n },\n {\n variant: 'muted',\n appearance: 'light',\n class: 'bg-muted/20 text-muted [&_[data-alert-description]]:text-muted',\n },\n {\n variant: 'link',\n appearance: 'light',\n class: 'bg-primary/10 text-primary [&_[data-alert-description]]:text-primary',\n },\n {\n variant: 'ghost',\n appearance: 'light',\n class: 'bg-muted/10 text-muted-foreground [&_[data-alert-description]]:text-muted-foreground',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n appearance: 'solid',\n },\n },\n);\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {}\nexport type VariantType = NonNullable<VariantProps<typeof alertVariants>['variant']>;\n\nfunction Alert({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return <div data-slot=\"alert\" role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />;\n}\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'font-medium group-has-[>svg]/alert:col-start-2 cn-font-heading [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n );\n}\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n );\n}\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />;\n}\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../utils/time.ts"],"sourcesContent":["\"use client\";\nexport function convertToHours(value: string): string;\nexport function convertToHours(value: string, asNumber: true): number;\nexport function convertToHours(value: string, asNumber: false): string;\nexport function convertToHours(value: string, asNumber: boolean = false): string | number {\n let result: number;\n\n if (!value) {\n result = 0;\n }\n // Check if the input is a valid number without any suffix (e.g., \"1.5\")\n else if (!isNaN(Number(value))) {\n result = parseFloat(value);\n } else if (value.toLowerCase().endsWith('h')) {\n // Check if it ends with 'h' or 'H' (hours)\n result = parseFloat(value.slice(0, -1));\n } else if (value.toLowerCase().endsWith('m')) {\n // Check if it ends with 'm' or 'M' (minutes)\n const minutes = parseFloat(value.slice(0, -1));\n result = minutes / 60; // Convert minutes to hours\n } else if (value.toLowerCase().endsWith('s')) {\n // Check if it ends with 's' or 'S' (seconds)\n const seconds = parseFloat(value.slice(0, -1));\n result = seconds / 3600; // Convert seconds to hours\n } else {\n // For any other format, return 0\n result = 0;\n }\n\n // Return the result either as a number or string based on the 'asNumber' option\n return asNumber ? result : String(Number(result.toFixed(17))); // Convert to number to remove trailing zeros\n}\n\nexport function convertFromHours(value: string): string {\n const hours = parseFloat(value);\n\n if (isNaN(hours) || hours === 0) {\n return '0';\n }\n\n if (hours >= 1) {\n return `${hours}h`;\n }\n\n const minutes = hours * 60;\n if (minutes >= 1) {\n return `${Math.round(minutes)}m`;\n }\n\n const seconds = hours * 3600;\n return `${Math.round(seconds)}s`;\n}\n\nexport function convertToWholeFromHours(value: string): string {\n const hours = parseFloat(value);\n\n if (isNaN(hours) || hours === 0) {\n return '0';\n }\n\n // Convert to minutes if the value represents a whole number of minutes\n const minutes = hours * 60;\n if (Math.abs(minutes - Math.round(minutes)) < 1e-10) {\n return `${Math.round(minutes)}m`;\n }\n\n // Convert to seconds if the value represents a whole number of seconds\n const seconds = hours * 3600;\n if (Math.abs(seconds - Math.round(seconds)) < 1e-10) {\n return `${Math.round(seconds)}s`;\n }\n\n // Otherwise, return the value with the 'h' suffix for hours\n return `${hours}h`;\n}\n"],"mappings":";AAIO,SAAS,eAAe,OAAe,WAAoB,OAAwB;AACxF,MAAI;AAEJ,MAAI,CAAC,OAAO;AACV,aAAS;AAAA,EACX,WAES,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG;AAC9B,aAAS,WAAW,KAAK;AAAA,EAC3B,WAAW,MAAM,YAAY,EAAE,SAAS,GAAG,GAAG;AAE5C,aAAS,WAAW,MAAM,MAAM,GAAG,EAAE,CAAC;AAAA,EACxC,WAAW,MAAM,YAAY,EAAE,SAAS,GAAG,GAAG;AAE5C,UAAM,UAAU,WAAW,MAAM,MAAM,GAAG,EAAE,CAAC;AAC7C,aAAS,UAAU;AAAA,EACrB,WAAW,MAAM,YAAY,EAAE,SAAS,GAAG,GAAG;AAE5C,UAAM,UAAU,WAAW,MAAM,MAAM,GAAG,EAAE,CAAC;AAC7C,aAAS,UAAU;AAAA,EACrB,OAAO;AAEL,aAAS;AAAA,EACX;AAGA,SAAO,WAAW,SAAS,OAAO,OAAO,OAAO,QAAQ,EAAE,CAAC,CAAC;AAC9D;AAEO,SAAS,iBAAiB,OAAuB;AACtD,QAAM,QAAQ,WAAW,KAAK;AAE9B,MAAI,MAAM,KAAK,KAAK,UAAU,GAAG;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,GAAG;AACd,WAAO,GAAG,KAAK;AAAA,EACjB;AAEA,QAAM,UAAU,QAAQ;AACxB,MAAI,WAAW,GAAG;AAChB,WAAO,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EAC/B;AAEA,QAAM,UAAU,QAAQ;AACxB,SAAO,GAAG,KAAK,MAAM,OAAO,CAAC;AAC/B;AAEO,SAAS,wBAAwB,OAAuB;AAC7D,QAAM,QAAQ,WAAW,KAAK;AAE9B,MAAI,MAAM,KAAK,KAAK,UAAU,GAAG;AAC/B,WAAO;AAAA,EACT;AAGA,QAAM,UAAU,QAAQ;AACxB,MAAI,KAAK,IAAI,UAAU,KAAK,MAAM,OAAO,CAAC,IAAI,OAAO;AACnD,WAAO,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EAC/B;AAGA,QAAM,UAAU,QAAQ;AACxB,MAAI,KAAK,IAAI,UAAU,KAAK,MAAM,OAAO,CAAC,IAAI,OAAO;AACnD,WAAO,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EAC/B;AAGA,SAAO,GAAG,KAAK;AACjB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/command.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils/ui';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { InputGroup, InputGroupAddon } from './input-group';\nimport { SearchIcon, CheckIcon } from 'lucide-react';\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'bg-popover text-popover-foreground rounded-xl! p-1 flex size-full flex-col overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = false,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('rounded-xl! top-1/3 translate-y-0 overflow-hidden p-0', className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n <InputGroup className=\"bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!\">\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn('w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50', className)}\n {...props}\n />\n <InputGroupAddon>\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-6 text-center text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, children, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_svg:not([class*='size-'])]:size-4 group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n </CommandPrimitive.Item>\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-ZFSZ6K4K.js","../hooks/use-clipboard.tsx"],"names":[],"mappings":"AAAA;ACCA,8BAAsC;AAE/B,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,IAAK,EAAA,EAA0B,CAAC,CAAA,EAAG;AAC1E,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,EAAA,EAAI,6BAAA,KAAc,CAAA;AAC1C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,EAAA,EAAI,6BAAA,IAA2B,CAAA;AAErD,EAAA,MAAM,KAAA,EAAO,gCAAA;AAAA,IACX,MAAA,CAAO,KAAA,EAAA,GAAkB;AACvB,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAK,CAAA;AACzC,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,UAAA,CAAW,CAAA,EAAA,GAAM,SAAA,CAAU,KAAK,CAAA,EAAG,OAAO,CAAA;AAAA,MAC5C,EAAA,MAAA,CAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,IAAA,WAAe,MAAA,EAAQ,IAAA,EAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAAA,MAC9D;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,EACV,CAAA;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,MAAM,CAAA;AAC/B;ADFA;AACA;AACE;AACF,oCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-ZFSZ6K4K.js","sourcesContent":[null,"\"use client\";\nimport { useState, useCallback } from 'react';\n\nexport function useClipboard({ timeout = 2000 }: { timeout?: number } = {}) {\n const [copied, setCopied] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const copy = useCallback(\n async (value: string) => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setError(null);\n setTimeout(() => setCopied(false), timeout);\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n },\n [timeout],\n );\n\n return { copied, copy, error };\n}\n"]}