@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
package/package.json CHANGED
@@ -1,32 +1,59 @@
1
1
  {
2
- "version": "0.1.10",
3
- "description": "shadcn UI theme",
4
- "license": "MIT",
2
+ "version": "0.1.12",
3
+ "description": "shadcn UI theme for React",
4
+ "keywords": [
5
+ "shadcn",
6
+ "shadcn-ui",
7
+ "react",
8
+ "tailwindcss",
9
+ "ui",
10
+ "components",
11
+ "design-system"
12
+ ],
13
+ "homepage": "https://github.com/egose/shadcn-theme",
14
+ "bugs": {
15
+ "url": "https://github.com/egose/shadcn-theme/issues"
16
+ },
17
+ "license": "Apache-2.0",
18
+ "author": "Junmin Ahn",
5
19
  "sideEffects": false,
20
+ "files": [
21
+ "components",
22
+ "hooks",
23
+ "utils",
24
+ "layouts",
25
+ "lib",
26
+ "*.mjs",
27
+ "*.js",
28
+ "README.md",
29
+ "LICENSE",
30
+ "llms.txt"
31
+ ],
6
32
  "repository": {
7
33
  "type": "git",
8
- "url": "https://github.com/egose/shadcn-theme"
34
+ "url": "https://github.com/egose/shadcn-theme",
35
+ "directory": "packages/react"
9
36
  },
10
37
  "dependencies": {
11
- "@base-ui/react": "^1.3.0",
12
- "@hookform/resolvers": "^5.0.0",
13
- "@tabler/icons-react": "^3.40.0",
38
+ "@base-ui/react": "^1.6.0",
39
+ "@hookform/resolvers": "^5.4.0",
40
+ "@tabler/icons-react": "^3.44.0",
14
41
  "class-variance-authority": "^0.7.1",
15
42
  "clsx": "^2.1.1",
16
43
  "cmdk": "1.1.1",
17
- "date-fns": "^4.1.0",
44
+ "date-fns": "^4.4.0",
18
45
  "embla-carousel-react": "^8.5.2",
19
46
  "input-otp": "^1.4.2",
20
- "lodash-es": "^4.17.23",
21
- "lucide-react": "^0.555.0",
47
+ "lodash-es": "^4.18.1",
48
+ "lucide-react": "^1.23.0",
22
49
  "next-themes": "^0.4.4",
23
- "radix-ui": "^1.4.3",
24
- "react-day-picker": "9.13.0",
25
- "react-resizable-panels": "^4.7.4",
26
- "tailwind-merge": "^3.5.0",
27
- "valtio": "^2.3.1",
50
+ "radix-ui": "^1.6.1",
51
+ "react-day-picker": "10.0.1",
52
+ "react-resizable-panels": "^4.12.1",
53
+ "tailwind-merge": "^3.6.0",
54
+ "valtio": "^2.3.2",
28
55
  "vaul": "^1.1.2",
29
- "zod": "^4.3.6"
56
+ "zod": "^4.4.3"
30
57
  },
31
58
  "peerDependencies": {
32
59
  "react": "^18.3.1 || ^19.0.0",
@@ -37,6 +64,59 @@
37
64
  "engines": {
38
65
  "node": ">=20"
39
66
  },
67
+ "exports": {
68
+ "./components/ui/*": {
69
+ "types": "./components/ui/*.d.mts",
70
+ "import": "./components/ui/*.mjs",
71
+ "require": "./components/ui/*.js"
72
+ },
73
+ "./components/form/*": {
74
+ "types": "./components/form/*.d.mts",
75
+ "import": "./components/form/*.mjs",
76
+ "require": "./components/form/*.js"
77
+ },
78
+ "./components/widgets/dialog-manager": {
79
+ "types": "./components/widgets/dialog-manager/index.d.mts",
80
+ "import": "./components/widgets/dialog-manager/index.mjs",
81
+ "require": "./components/widgets/dialog-manager/index.js"
82
+ },
83
+ "./components/widgets/dialog-manager/*": {
84
+ "types": "./components/widgets/dialog-manager/*.d.mts",
85
+ "import": "./components/widgets/dialog-manager/*.mjs",
86
+ "require": "./components/widgets/dialog-manager/*.js"
87
+ },
88
+ "./hooks/*": {
89
+ "types": "./hooks/*.d.mts",
90
+ "import": "./hooks/*.mjs",
91
+ "require": "./hooks/*.js"
92
+ },
93
+ "./utils/*": {
94
+ "types": "./utils/*.d.mts",
95
+ "import": "./utils/*.mjs",
96
+ "require": "./utils/*.js"
97
+ },
98
+ "./layouts/simple": {
99
+ "types": "./layouts/simple/index.d.mts",
100
+ "import": "./layouts/simple/index.mjs",
101
+ "require": "./layouts/simple/index.js"
102
+ },
103
+ "./layouts/simple/*": {
104
+ "types": "./layouts/simple/*.d.mts",
105
+ "import": "./layouts/simple/*.mjs",
106
+ "require": "./layouts/simple/*.js"
107
+ },
108
+ "./layouts/sidebar1": {
109
+ "types": "./layouts/sidebar1/index.d.mts",
110
+ "import": "./layouts/sidebar1/index.mjs",
111
+ "require": "./layouts/sidebar1/index.js"
112
+ },
113
+ "./layouts/sidebar1/*": {
114
+ "types": "./layouts/sidebar1/*.d.mts",
115
+ "import": "./layouts/sidebar1/*.mjs",
116
+ "require": "./layouts/sidebar1/*.js"
117
+ },
118
+ "./package.json": "./package.json"
119
+ },
40
120
  "name": "@egose/shadcn-theme",
41
121
  "publishConfig": {
42
122
  "access": "public"
package/utils/date.d.mts CHANGED
@@ -1,4 +1,13 @@
1
+ /**
2
+ * Compare two dates by value, treating `null` and `undefined` as equivalent.
3
+ * Returns true when both are nil or when both refer to the same calendar
4
+ * instant (date-fns `isEqual`).
5
+ */
1
6
  declare function isEqualDate(dt1: Date | undefined, dt2: Date | undefined): boolean;
7
+ /**
8
+ * Compare two date ranges (each expressed as `[start, end]`) for equality
9
+ * using {@link isEqualDate} on both ends. Useful for date-range picker state.
10
+ */
2
11
  declare function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]): boolean;
3
12
 
4
13
  export { isEqualDate, isEqualDates };
package/utils/date.d.ts CHANGED
@@ -1,4 +1,13 @@
1
+ /**
2
+ * Compare two dates by value, treating `null` and `undefined` as equivalent.
3
+ * Returns true when both are nil or when both refer to the same calendar
4
+ * instant (date-fns `isEqual`).
5
+ */
1
6
  declare function isEqualDate(dt1: Date | undefined, dt2: Date | undefined): boolean;
7
+ /**
8
+ * Compare two date ranges (each expressed as `[start, end]`) for equality
9
+ * using {@link isEqualDate} on both ends. Useful for date-range picker state.
10
+ */
2
11
  declare function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]): boolean;
3
12
 
4
13
  export { isEqualDate, isEqualDates };
package/utils/date.js CHANGED
@@ -3,10 +3,10 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkIYVLRZJ4js = require('../chunk-IYVLRZJ4.js');
6
+ var _chunkC74J4JWAjs = require('../chunk-C74J4JWA.js');
7
7
  require('../chunk-2NMEKWO5.js');
8
8
 
9
9
 
10
10
 
11
- exports.isEqualDate = _chunkIYVLRZJ4js.isEqualDate; exports.isEqualDates = _chunkIYVLRZJ4js.isEqualDates;
11
+ exports.isEqualDate = _chunkC74J4JWAjs.isEqualDate; exports.isEqualDates = _chunkC74J4JWAjs.isEqualDates;
12
12
  //# sourceMappingURL=date.js.map
package/utils/date.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  isEqualDate,
4
4
  isEqualDates
5
- } from "../chunk-SX4LQFOF.mjs";
5
+ } from "../chunk-HD7GX5UE.mjs";
6
6
  import "../chunk-YOSPWY5K.mjs";
7
7
  export {
8
8
  isEqualDate,
package/utils/time.d.mts CHANGED
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Parse a human-readable duration string into hours.
3
+ *
4
+ * Accepts bare numbers (`"1.5"`), and strings with `h` / `m` / `s` suffixes
5
+ * (case-insensitive). Unparseable input returns `0`. Pass `asNumber: true`
6
+ * for a numeric return value; otherwise a string is returned (no trailing
7
+ * zeros).
8
+ *
9
+ * @example
10
+ * convertToHours('90m') // '1.5'
11
+ * convertToHours('90m', true) // 1.5
12
+ */
1
13
  declare function convertToHours(value: string): string;
2
14
  declare function convertToHours(value: string, asNumber: true): number;
3
15
  declare function convertToHours(value: string, asNumber: false): string;
package/utils/time.d.ts CHANGED
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Parse a human-readable duration string into hours.
3
+ *
4
+ * Accepts bare numbers (`"1.5"`), and strings with `h` / `m` / `s` suffixes
5
+ * (case-insensitive). Unparseable input returns `0`. Pass `asNumber: true`
6
+ * for a numeric return value; otherwise a string is returned (no trailing
7
+ * zeros).
8
+ *
9
+ * @example
10
+ * convertToHours('90m') // '1.5'
11
+ * convertToHours('90m', true) // 1.5
12
+ */
1
13
  declare function convertToHours(value: string): string;
2
14
  declare function convertToHours(value: string, asNumber: true): number;
3
15
  declare function convertToHours(value: string, asNumber: false): string;
package/utils/time.js CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
 
6
6
 
7
- var _chunk4SYFVOM2js = require('../chunk-4SYFVOM2.js');
7
+ var _chunkVRY6WSXJjs = require('../chunk-VRY6WSXJ.js');
8
8
  require('../chunk-2NMEKWO5.js');
9
9
 
10
10
 
11
11
 
12
12
 
13
- exports.convertFromHours = _chunk4SYFVOM2js.convertFromHours; exports.convertToHours = _chunk4SYFVOM2js.convertToHours; exports.convertToWholeFromHours = _chunk4SYFVOM2js.convertToWholeFromHours;
13
+ exports.convertFromHours = _chunkVRY6WSXJjs.convertFromHours; exports.convertToHours = _chunkVRY6WSXJjs.convertToHours; exports.convertToWholeFromHours = _chunkVRY6WSXJjs.convertToWholeFromHours;
14
14
  //# sourceMappingURL=time.js.map
package/utils/time.mjs CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  convertFromHours,
4
4
  convertToHours,
5
5
  convertToWholeFromHours
6
- } from "../chunk-ZEZK2FJ4.mjs";
6
+ } from "../chunk-O6E6RGZT.mjs";
7
7
  import "../chunk-YOSPWY5K.mjs";
8
8
  export {
9
9
  convertFromHours,
package/utils/ui.d.mts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { ClassValue } from 'clsx';
2
2
 
3
+ /**
4
+ * Merge Tailwind CSS class names safely. Combines `clsx` (conditional classes)
5
+ * with `tailwind-merge` (de-duplicates conflicting Tailwind utilities, last
6
+ * one wins). Use this for every component's `className` / `classNames` prop.
7
+ *
8
+ * @example
9
+ * cn('px-2 py-1', isActive && 'bg-primary', condition && 'hidden')
10
+ */
3
11
  declare function cn(...inputs: ClassValue[]): string;
4
12
 
5
13
  export { cn };
package/utils/ui.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  import { ClassValue } from 'clsx';
2
2
 
3
+ /**
4
+ * Merge Tailwind CSS class names safely. Combines `clsx` (conditional classes)
5
+ * with `tailwind-merge` (de-duplicates conflicting Tailwind utilities, last
6
+ * one wins). Use this for every component's `className` / `classNames` prop.
7
+ *
8
+ * @example
9
+ * cn('px-2 py-1', isActive && 'bg-primary', condition && 'hidden')
10
+ */
3
11
  declare function cn(...inputs: ClassValue[]): string;
4
12
 
5
13
  export { cn };
package/utils/ui.js CHANGED
@@ -2,9 +2,9 @@
2
2
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
3
 
4
4
 
5
- var _chunkPSPAJNNBjs = require('../chunk-PSPAJNNB.js');
5
+ var _chunkNBQEF4JDjs = require('../chunk-NBQEF4JD.js');
6
6
  require('../chunk-2NMEKWO5.js');
7
7
 
8
8
 
9
- exports.cn = _chunkPSPAJNNBjs.cn;
9
+ exports.cn = _chunkNBQEF4JDjs.cn;
10
10
  //# sourceMappingURL=ui.js.map
package/utils/ui.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  cn
4
- } from "../chunk-KGUUDFJE.mjs";
4
+ } from "../chunk-KKCJ2GMO.mjs";
5
5
  import "../chunk-YOSPWY5K.mjs";
6
6
  export {
7
7
  cn
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-2NMEKWO5.js"],"names":[],"mappings":"AAAA,6EAAI,UAAU,EAAE,MAAM,CAAC,cAAc;AACrC,IAAI,WAAW,EAAE,MAAM,CAAC,gBAAgB;AACxC,IAAI,kBAAkB,EAAE,MAAM,CAAC,yBAAyB;AACxD,IAAI,oBAAoB,EAAE,MAAM,CAAC,qBAAqB;AACtD,IAAI,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAI,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAI,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAC/J,IAAI,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AAC/B,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,GAAG,CAAC,mBAAmB;AACzB,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,IAAI;AACJ,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAI,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG;AACrC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AACjB,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM;AACzB,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;AACjC,EAAE,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,mBAAmB;AAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;AACnC,IAAI;AACJ,EAAE,OAAO,MAAM;AACf,CAAC;AACD;AACA;AACE;AACA;AACA;AACF,8GAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-2NMEKWO5.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-2YMMYND2.js","../components/ui/badge.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-2YMMYND2.js","sourcesContent":[null,"\"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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/spinner.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cn } from '../../utils/ui';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { Loader2 } from 'lucide-react';\n\nconst spinnerVariants = cva('flex-col items-center justify-center', {\n variants: {\n show: {\n true: 'flex',\n false: 'hidden',\n },\n },\n defaultVariants: {\n show: true,\n },\n});\n\nconst loaderVariants = cva('animate-spin text-primary', {\n variants: {\n size: {\n small: 'size-6',\n medium: 'size-8',\n large: 'size-12',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\ninterface SpinnerContentProps extends VariantProps<typeof spinnerVariants>, VariantProps<typeof loaderVariants> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function Spinner({ size, show, children, className }: SpinnerContentProps) {\n return (\n <span className={spinnerVariants({ show })}>\n <Loader2 role=\"status\" aria-label=\"Loading\" className={cn(loaderVariants({ size }), className)} />\n {children}\n </span>\n );\n}\n\nSpinner.displayName = 'Spinner';\n"],"mappings":";;;;;AACA,YAAY,WAAW;AAEvB,SAAuB,WAAW;AAClC,SAAS,eAAe;AAExB,IAAM,kBAAkB,IAAI,wCAAwC;AAAA,EAClE,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAED,IAAM,iBAAiB,IAAI,6BAA6B;AAAA,EACtD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAOM,SAAS,QAAQ,EAAE,MAAM,MAAM,UAAU,UAAU,GAAwB;AAChF,SACE,oCAAC,UAAK,WAAW,gBAAgB,EAAE,KAAK,CAAC,KACvC,oCAAC,WAAQ,MAAK,UAAS,cAAW,WAAU,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,SAAS,GAAG,GAC/F,QACH;AAEJ;AAEA,QAAQ,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3HZTA2ZQ.js","../components/ui/select.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3HZTA2ZQ.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { Select as SelectPrimitive } from 'radix-ui';\n\nimport { cn } from '../../utils/ui';\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from 'lucide-react';\n\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" className={cn('scroll-my-1 p-1', className)} {...props} />;\n}\n\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-sm border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-full items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"text-muted-foreground size-4 pointer-events-none\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'item-aligned',\n align = 'center',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n data-align-trigger={position === 'item-aligned'}\n className={cn(\n 'bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-sm shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n data-position={position}\n className={cn(\n 'data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)',\n position === 'popper' && '',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('text-muted-foreground px-1.5 py-1 text-xs', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-sm py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('bg-border -mx-1 my-1 h-px pointer-events-none', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../layouts/sidebar1/app-sidebar.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\n\nexport interface ISidebarContext {\n title?: string;\n addText?: string;\n items?: INavContext[];\n canAdd?: boolean;\n}\n\nexport interface ISidebarData {\n user?: INavUser;\n context?: ISidebarContext;\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n newContext?: () => void;\n contextSelect?: (context: INavContext) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n const { context } = data;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n {context?.items && context.items.length > 0 && (\n <SidebarHeader>\n <ContextSwitcher\n items={context.items}\n title={context.title}\n newContextText={context.addText}\n canAdd={context.canAdd}\n onContextAdd={() => {\n if (data.events?.newContext) {\n data.events.newContext();\n }\n }}\n onContextSelected={(context: INavContext) => {\n if (data.events?.contextSelect) {\n data.events.contextSelect(context);\n }\n }}\n />\n </SidebarHeader>\n )}\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"action\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AA4BhB,SAAS,WAAW,IAKxB;AALwB,MACtB,kBADsB,IACtB;AA9BL;AAmCE,QAAkCA,MAAA,OAA1B,QAAM,OAnChB,IAmCoCA,KAAT,iBAASA,KAAT,CAAjB,QAAM;AACd,QAAM,EAAE,QAAQ,IAAI;AAEpB,SACE,oCAAC,0BAAQ,aAAY,UAAW,QAC7B,mCAAS,UAAS,QAAQ,MAAM,SAAS,KACxC,oCAAC,qBACC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,QAAQ;AAAA,MACf,OAAO,QAAQ;AAAA,MACf,gBAAgB,QAAQ;AAAA,MACxB,QAAQ,QAAQ;AAAA,MAChB,cAAc,MAAM;AA/ChC,YAAAA;AAgDc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,YAAY;AAC3B,eAAK,OAAO,WAAW;AAAA,QACzB;AAAA,MACF;AAAA,MACA,mBAAmB,CAACC,aAAyB;AApDzD,YAAAD;AAqDc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,eAAe;AAC9B,eAAK,OAAO,cAAcC,QAAO;AAAA,QACnC;AAAA,MACF;AAAA;AAAA,EACF,CACF,GAGF,oCAAC,sBACC,oCAAC,YAAS,OAAO,KAAK,OAAO,QAAgB,CAC/C,GAEA,oCAAC,qBACE,KAAK,OACJ,oCAAC,WAAQ,MAAM,KAAK,MAAM,OAAO,KAAK,WAAW,QAAgB,WAAU,UAAK,WAAL,mBAAa,QAAQ,IAEhG;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAAS,MAAM;AAvE3B,YAAAD;AAwEc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,OAAO;AACtB,eAAK,OAAO,MAAM;AAAA,QACpB;AAAA,MACF;AAAA;AAAA,IACD;AAAA,EAED,CAEJ,GAEA,oCAAC,iBAAY,CACf;AAEJ;","names":["_a","context"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4BKWF5FK.js","../components/form/select.tsx"],"names":["_a"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4BKWF5FK.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from '../ui/select';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nfunction listToSelectOptions(items: string[]) {\n return items.map((item) => {\n return { label: item, value: item };\n });\n}\n\nexport interface FormSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: SelectOption[] | string[];\n defaultValue?: string;\n value?: string;\n onChange: (value?: string) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n required?: boolean;\n disabled?: boolean;\n}\n\nexport function FormSelect({\n id,\n name,\n label,\n placeholder = '',\n data,\n defaultValue,\n value,\n onChange,\n classNames,\n required,\n disabled,\n ...rest\n}: FormSelectProps) {\n let _options: SelectOption[] = [];\n if (data.length > 0) {\n if (_isString(data[0])) {\n _options = listToSelectOptions(data as string[]);\n } else {\n _options = data as SelectOption[];\n }\n }\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('$form-select space-y-1', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <Select onValueChange={onChange} defaultValue={defaultValue ?? value ?? ''} value={value}>\n <SelectTrigger className=\"mb-0\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n\n <SelectContent className={cn(classNames?.input)}>\n {_options.map((option, index) => {\n return (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4ETXRZKO.js","../components/ui/avatar.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4ETXRZKO.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\nimport { cn } from '../../utils/ui';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image data-slot=\"avatar-image\" className={cn('aspect-square size-full', className)} {...props} />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/sidebar.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\n\nimport { useIsMobile } from '../../hooks/use-mobile';\nimport { cn } from '../../utils/ui';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from './sheet';\nimport { Skeleton } from './skeleton';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\nimport { PanelLeftIcon } from 'lucide-react';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar', className)}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon className=\"cn-rtl-flip\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('gap-2 p-2 flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('gap-2 p-2 flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'no-scrollbar gap-0 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('p-2 relative flex w-full min-w-0 flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('text-sm w-full', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('gap-0 flex w-full min-w-0 flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-[active=true]:font-medium peer/menu-button group/menu-button flex w-full items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot.Root : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n });\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('h-8 gap-2 rounded-md px-2 flex items-center', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,YAAY;AAUrB,SAAS,qBAAqB;AAE9B,IAAM,sBAAsB;AAC5B,IAAM,yBAAyB,KAAK,KAAK,KAAK;AAC9C,IAAM,gBAAgB;AACtB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,4BAA4B;AAYlC,IAAM,iBAAuB,oBAA0C,IAAI;AAE3E,SAAS,aAAa;AACpB,QAAM,UAAgB,iBAAW,cAAc;AAC/C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;AAEA,SAAS,gBAAgB,IAYtB;AAZsB,eACvB;AAAA,kBAAc;AAAA,IACd,MAAM;AAAA,IACN,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EAjDF,IA2CyB,IAOpB,kBAPoB,IAOpB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,YAAY,aAAa,IAAU,eAAS,KAAK;AAIxD,QAAM,CAAC,OAAO,QAAQ,IAAU,eAAS,WAAW;AACpD,QAAM,OAAO,8BAAY;AACzB,QAAM,UAAgB;AAAA,IACpB,CAAC,UAAmD;AAClD,YAAM,YAAY,OAAO,UAAU,aAAa,MAAM,IAAI,IAAI;AAC9D,UAAI,aAAa;AACf,oBAAY,SAAS;AAAA,MACvB,OAAO;AACL,iBAAS,SAAS;AAAA,MACpB;AAGA,eAAS,SAAS,GAAG,mBAAmB,IAAI,SAAS,qBAAqB,sBAAsB;AAAA,IAClG;AAAA,IACA,CAAC,aAAa,IAAI;AAAA,EACpB;AAGA,QAAM,gBAAsB,kBAAY,MAAM;AAC5C,WAAO,WAAW,cAAc,CAACA,UAAS,CAACA,KAAI,IAAI,QAAQ,CAACA,UAAS,CAACA,KAAI;AAAA,EAC5E,GAAG,CAAC,UAAU,SAAS,aAAa,CAAC;AAGrC,EAAM,gBAAU,MAAM;AACpB,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,MAAM,QAAQ,8BAA8B,MAAM,WAAW,MAAM,UAAU;AAC/E,cAAM,eAAe;AACrB,sBAAc;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,aAAa,CAAC;AAIlB,QAAM,QAAQ,OAAO,aAAa;AAElC,QAAM,eAAqB;AAAA,IACzB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,OAAO,MAAM,SAAS,UAAU,YAAY,eAAe,aAAa;AAAA,EAC3E;AAEA,SACE,oCAAC,eAAe,UAAf,EAAwB,OAAO,gBAC9B;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,OACE;AAAA,QACE,mBAAmB;AAAA,QACnB,wBAAwB;AAAA,SACrB;AAAA,MAGP,WAAW,GAAG,mFAAmF,SAAS;AAAA,OACtG;AAAA,IAEH;AAAA,EACH,CACF;AAEJ;AAEA,SAAS,QAAQ,IAYd;AAZc,eACf;AAAA,WAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EA3IF,IAqIiB,IAOZ,kBAPY,IAOZ;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,QAAM,EAAE,UAAU,OAAO,YAAY,cAAc,IAAI,WAAW;AAElE,MAAI,gBAAgB,QAAQ;AAC1B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAW,GAAG,+EAA+E,SAAS;AAAA,SAClG;AAAA,MAEH;AAAA,IACH;AAAA,EAEJ;AAEA,MAAI,UAAU;AACZ,WACE,oCAAC,wBAAM,MAAM,YAAY,cAAc,iBAAmB,QACxD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,gBAAa;AAAA,QACb,aAAU;AAAA,QACV,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,OACE;AAAA,UACE,mBAAmB;AAAA,QACrB;AAAA,QAEF;AAAA;AAAA,MAEA,oCAAC,eAAY,WAAU,aACrB,oCAAC,kBAAW,SAAO,GACnB,oCAAC,wBAAiB,8BAA4B,CAChD;AAAA,MACA,oCAAC,SAAI,WAAU,iCAA+B,QAAS;AAAA,IACzD,CACF;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAY;AAAA,MACZ,oBAAkB,UAAU,cAAc,cAAc;AAAA,MACxD,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,aAAU;AAAA;AAAA,IAGV;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY,cAAc,YAAY,UAClC,qFACA;AAAA,QACN;AAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,aAAW;AAAA,QACX,WAAW;AAAA,UACT;AAAA;AAAA,UAEA,YAAY,cAAc,YAAY,UAClC,6FACA;AAAA,UACJ;AAAA,QACF;AAAA,SACI;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,gBAAa;AAAA,UACb,aAAU;AAAA,UACV,WAAU;AAAA;AAAA,QAET;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEJ;AAEA,SAAS,eAAe,IAAuE;AAAvE,eAAE,aAAW,QAxOrC,IAwOwB,IAAyB,kBAAzB,IAAyB,CAAvB,aAAW;AACnC,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAa;AAAA,MACb,aAAU;AAAA,MACV,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAW,GAAG,SAAS;AAAA,MACvB,SAAS,CAAC,UAAU;AAClB,2CAAU;AACV,sBAAc;AAAA,MAChB;AAAA,OACI;AAAA,IAEJ,oCAAC,iBAAc,WAAU,eAAc;AAAA,IACvC,oCAAC,UAAK,WAAU,aAAU,gBAAc;AAAA,EAC1C;AAEJ;AAEA,SAAS,YAAY,IAAyD;AAAzD,eAAE,YA9PvB,IA8PqB,IAAgB,kBAAhB,IAAgB,CAAd;AACrB,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAa;AAAA,MACb,aAAU;AAAA,MACV,cAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,OAAM;AAAA,MACN,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,IAAuD;AAAvD,eAAE,YAvRxB,IAuRsB,IAAgB,kBAAhB,IAAgB,CAAd;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,IAA6D;AAA7D,eAAE,YApSxB,IAoSsB,IAAgB,kBAAhB,IAAgB,CAAd;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,wCAAwC,SAAS;AAAA,OAC3D;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,IAAsD;AAAtD,eAAE,YA/SzB,IA+SuB,IAAgB,kBAAhB,IAAgB,CAAd;AACvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,IAAsD;AAAtD,eAAE,YA1TzB,IA0TuB,IAAgB,kBAAhB,IAAgB,CAAd;AACvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB,IAAiE;AAAjE,eAAE,YArU5B,IAqU0B,IAAgB,kBAAhB,IAAgB,CAAd;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,IAAsD;AAAtD,eAAE,YAhV1B,IAgVwB,IAAgB,kBAAhB,IAAgB,CAAd;AACxB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,IAAsD;AAAtD,eAAE,YA9VxB,IA8VsB,IAAgB,kBAAhB,IAAgB,CAAd;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,6CAA6C,SAAS;AAAA,OAChE;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB,IAI6B;AAJ7B,eACzB;AAAA;AAAA,IACA,UAAU;AAAA,EA3WZ,IAyW2B,IAGtB,kBAHsB,IAGtB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAM,OAAO,UAAU,KAAK,OAAO;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB,IAI+B;AAJ/B,eAC1B;AAAA;AAAA,IACA,UAAU;AAAA,EA/XZ,IA6X4B,IAGvB,kBAHuB,IAGvB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAM,OAAO,UAAU,KAAK,OAAO;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB,IAAsD;AAAtD,eAAE,YAjZ/B,IAiZ6B,IAAgB,kBAAhB,IAAgB,CAAd;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,kBAAkB,SAAS;AAAA,OACrC;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,IAAqD;AAArD,eAAE,YA5ZvB,IA4ZqB,IAAgB,kBAAhB,IAAgB,CAAd;AACrB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,sCAAsC,SAAS;AAAA,OACzD;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,IAAqD;AAArD,eAAE,YAva3B,IAuayB,IAAgB,kBAAhB,IAAgB,CAAd;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,4BAA4B,SAAS;AAAA,OAC/C;AAAA,EACN;AAEJ;AAEA,IAAM,4BAA4B;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MACJ;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,kBAAkB,IAYyB;AAZzB,eACzB;AAAA,cAAU;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EA9cF,IAwc2B,IAOtB,kBAPsB,IAOtB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,QAAM,OAAO,UAAU,KAAK,OAAO;AACnC,QAAM,EAAE,UAAU,MAAM,IAAI,WAAW;AAEvC,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,aAAW;AAAA,MACX,eAAa;AAAA,MACb,WAAW,GAAG,0BAA0B,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,OACjE;AAAA,EACN;AAGF,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,YAAY,UAAU;AAC/B,cAAU;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,SACE,oCAAC,eACC,oCAAC,kBAAe,SAAO,QAAE,MAAO,GAChC,oCAAC,iCAAe,MAAK,SAAQ,OAAM,UAAS,QAAQ,UAAU,eAAe,YAAc,QAAS,CACtG;AAEJ;AAEA,SAAS,kBAAkB,IAQxB;AARwB,eACzB;AAAA;AAAA,IACA,UAAU;AAAA,IACV,cAAc;AAAA,EAxfhB,IAqf2B,IAItB,kBAJsB,IAItB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAMA,QAAM,OAAO,UAAU,KAAK,OAAO;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA,eACE;AAAA,QACF;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB,IAAsD;AAAtD,eAAE,YA/gB5B,IA+gB0B,IAAgB,kBAAhB,IAAgB,CAAd;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB,IAM1B;AAN0B,eAC3B;AAAA;AAAA,IACA,WAAW;AAAA,EA/hBb,IA6hB6B,IAGxB,kBAHwB,IAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAMA,QAAM,CAAC,KAAK,IAAU,eAAS,MAAM;AACnC,WAAO,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE;AAAA,EAC/C,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,+CAA+C,SAAS;AAAA,OAClE;AAAA,IAEH,YAAY,oCAAC,YAAS,WAAU,qBAAoB,gBAAa,sBAAqB;AAAA,IACvF;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,gBAAa;AAAA,QACb,OACE;AAAA,UACE,oBAAoB;AAAA,QACtB;AAAA;AAAA,IAEJ;AAAA,EACF;AAEJ;AAEA,SAAS,eAAe,IAAqD;AAArD,eAAE,YA9jB1B,IA8jBwB,IAAgB,kBAAhB,IAAgB,CAAd;AACxB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB,IAAqD;AAArD,eAAE,YA5kB9B,IA4kB4B,IAAgB,kBAAhB,IAAgB,CAAd;AAC5B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,gCAAgC,SAAS;AAAA,OACnD;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB,IAU3B;AAV2B,eAC5B;AAAA,cAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX;AAAA,EA3lBF,IAulB8B,IAKzB,kBALyB,IAKzB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,QAAM,OAAO,UAAU,KAAK,OAAO;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,aAAW;AAAA,MACX,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;","names":["open"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4SYFVOM2.js","../utils/time.ts"],"names":[],"mappings":"AAAA;ACIO,SAAS,cAAA,CAAe,KAAA,EAAe,SAAA,EAAoB,KAAA,EAAwB;AACxF,EAAA,IAAI,MAAA;AAEJ,EAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAA,EAAS,CAAA;AAAA,EACX,EAAA,KAAA,GAAA,CAES,CAAC,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA,EAAG;AAC9B,IAAA,OAAA,EAAS,UAAA,CAAW,KAAK,CAAA;AAAA,EAC3B,EAAA,KAAA,GAAA,CAAW,KAAA,CAAM,WAAA,CAAY,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AAE5C,IAAA,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA;AAAA,EACxC,EAAA,KAAA,GAAA,CAAW,KAAA,CAAM,WAAA,CAAY,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AAE5C,IAAA,MAAM,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA;AAC7C,IAAA,OAAA,EAAS,QAAA,EAAU,EAAA;AAAA,EACrB,EAAA,KAAA,GAAA,CAAW,KAAA,CAAM,WAAA,CAAY,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,EAAG;AAE5C,IAAA,MAAM,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA;AAC7C,IAAA,OAAA,EAAS,QAAA,EAAU,IAAA;AAAA,EACrB,EAAA,KAAO;AAEL,IAAA,OAAA,EAAS,CAAA;AAAA,EACX;AAGA,EAAA,OAAO,SAAA,EAAW,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA;AAC9D;AAEO,SAAS,gBAAA,CAAiB,KAAA,EAAuB;AACtD,EAAA,MAAM,MAAA,EAAQ,UAAA,CAAW,KAAK,CAAA;AAE9B,EAAA,GAAA,CAAI,KAAA,CAAM,KAAK,EAAA,GAAK,MAAA,IAAU,CAAA,EAAG;AAC/B,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AACd,IAAA,OAAO,CAAA,EAAA;AACT,EAAA;AAEM,EAAA;AACF,EAAA;AACK,IAAA;AACT,EAAA;AAEM,EAAA;AACI,EAAA;AACZ;AAEgB;AACR,EAAA;AAEI,EAAA;AACD,IAAA;AACT,EAAA;AAGM,EAAA;AACG,EAAA;AACA,IAAA;AACT,EAAA;AAGM,EAAA;AACG,EAAA;AACA,IAAA;AACT,EAAA;AAGU,EAAA;AACZ;ADxBY;AACA;AACA;AACA;AACA;AACA","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4SYFVOM2.js","sourcesContent":[null,"\"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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../layouts/sidebar1/nav-menus.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../components/ui/collapsible';\nimport {\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n} from '../../components/ui/sidebar';\nimport { useSidebar } from '../../components/ui/sidebar';\nimport { cn } from '../../utils/ui';\n\nexport interface IMenuSubItem {\n title: string;\n url?: string;\n icon?: React.ElementType;\n isActive?: boolean;\n onClick?: (title: string) => void;\n}\n\nexport interface IMenuItem extends IMenuSubItem {\n subItems?: IMenuSubItem[];\n}\n\nexport interface INavMenu {\n title: string;\n items: IMenuItem[];\n hideTitle?: boolean;\n className?: string;\n}\n\nfunction SidebarMenuLink({ item, as: LinkComponent }: { item: IMenuSubItem; as: React.ElementType }) {\n const { setOpenMobile } = useSidebar();\n const Comp = LinkComponent && item.url ? LinkComponent : 'button';\n\n return (\n <SidebarMenuItem>\n <SidebarMenuButton asChild isActive={item.isActive} tooltip={item.title} onClick={() => setOpenMobile(false)}>\n <Comp to={item.url} href={item.url} onClick={() => item.onClick?.(item.title)}>\n {item.icon && <item.icon />}\n <span>{item.title}</span>\n </Comp>\n </SidebarMenuButton>\n </SidebarMenuItem>\n );\n}\n\nfunction SidebarMenuCollapsible({ item, as: LinkComponent }: { item: IMenuItem; as: React.ElementType }) {\n const { setOpenMobile } = useSidebar();\n if (!item.subItems) return null;\n\n return (\n <Collapsible key={item.title} asChild defaultOpen={item.isActive} className=\"group/collapsible\">\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton tooltip={item.title}>\n {item.icon && <item.icon />}\n <span>{item.title}</span>\n\n <ChevronRight className=\"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90\" />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n\n <CollapsibleContent>\n <SidebarMenuSub>\n {item.subItems.map((subItem) => {\n const Comp = LinkComponent && subItem.url ? LinkComponent : 'button';\n\n return (\n <SidebarMenuSubItem key={subItem.title}>\n <SidebarMenuSubButton asChild isActive={subItem.isActive} onClick={() => setOpenMobile(false)}>\n <Comp\n to={subItem.url}\n href={subItem.url}\n onClick={() => item.onClick?.(subItem.title)}\n className=\"block w-full\"\n >\n {subItem.icon && <subItem.icon />}\n <span>{subItem.title}</span>\n </Comp>\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n );\n })}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n );\n}\n\nexport function NavMenus({ menus, aslink }: { menus: INavMenu[]; aslink: React.ElementType }) {\n return menus.map((menu) => {\n return (\n <SidebarGroup key={menu.title} className={cn(menu.className)}>\n {!menu.hideTitle && <SidebarGroupLabel>{menu.title}</SidebarGroupLabel>}\n\n <SidebarMenu>\n {menu.items.map((item) =>\n item.subItems && item.subItems.length > 0 ? (\n <SidebarMenuCollapsible key={item.title} item={item} as={aslink} />\n ) : (\n <SidebarMenuLink key={item.title} item={item} as={aslink} />\n ),\n )}\n </SidebarMenu>\n </SidebarGroup>\n );\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,oBAAoB;AAkC7B,SAAS,gBAAgB,EAAE,MAAM,IAAI,cAAc,GAAkD;AACnG,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,QAAM,OAAO,iBAAiB,KAAK,MAAM,gBAAgB;AAEzD,SACE,oCAAC,uBACC,oCAAC,qBAAkB,SAAO,MAAC,UAAU,KAAK,UAAU,SAAS,KAAK,OAAO,SAAS,MAAM,cAAc,KAAK,KACzG,oCAAC,QAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,SAAS,MAAG;AA3CxD;AA2C2D,sBAAK,YAAL,8BAAe,KAAK;AAAA,OACpE,KAAK,QAAQ,oCAAC,KAAK,MAAL,IAAU,GACzB,oCAAC,cAAM,KAAK,KAAM,CACpB,CACF,CACF;AAEJ;AAEA,SAAS,uBAAuB,EAAE,MAAM,IAAI,cAAc,GAA+C;AACvG,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,MAAI,CAAC,KAAK,SAAU,QAAO;AAE3B,SACE,oCAAC,eAAY,KAAK,KAAK,OAAO,SAAO,MAAC,aAAa,KAAK,UAAU,WAAU,uBAC1E,oCAAC,uBACC,oCAAC,sBAAmB,SAAO,QACzB,oCAAC,qBAAkB,SAAS,KAAK,SAC9B,KAAK,QAAQ,oCAAC,KAAK,MAAL,IAAU,GACzB,oCAAC,cAAM,KAAK,KAAM,GAElB,oCAAC,gBAAa,WAAU,2FAA0F,CACpH,CACF,GAEA,oCAAC,0BACC,oCAAC,sBACE,KAAK,SAAS,IAAI,CAAC,YAAY;AAC9B,UAAM,OAAO,iBAAiB,QAAQ,MAAM,gBAAgB;AAE5D,WACE,oCAAC,sBAAmB,KAAK,QAAQ,SAC/B,oCAAC,wBAAqB,SAAO,MAAC,UAAU,QAAQ,UAAU,SAAS,MAAM,cAAc,KAAK,KAC1F;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,QAAQ;AAAA,QACZ,MAAM,QAAQ;AAAA,QACd,SAAS,MAAG;AA/ElC;AA+EqC,4BAAK,YAAL,8BAAe,QAAQ;AAAA;AAAA,QACtC,WAAU;AAAA;AAAA,MAET,QAAQ,QAAQ,oCAAC,QAAQ,MAAR,IAAa;AAAA,MAC/B,oCAAC,cAAM,QAAQ,KAAM;AAAA,IACvB,CACF,CACF;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CACF;AAEJ;AAEO,SAAS,SAAS,EAAE,OAAO,OAAO,GAAqD;AAC5F,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,WACE,oCAAC,gBAAa,KAAK,KAAK,OAAO,WAAW,GAAG,KAAK,SAAS,KACxD,CAAC,KAAK,aAAa,oCAAC,yBAAmB,KAAK,KAAM,GAEnD,oCAAC,mBACE,KAAK,MAAM;AAAA,MAAI,CAAC,SACf,KAAK,YAAY,KAAK,SAAS,SAAS,IACtC,oCAAC,0BAAuB,KAAK,KAAK,OAAO,MAAY,IAAI,QAAQ,IAEjE,oCAAC,mBAAgB,KAAK,KAAK,OAAO,MAAY,IAAI,QAAQ;AAAA,IAE9D,CACF,CACF;AAAA,EAEJ,CAAC;AACH;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-5SLUBHNN.js"],"names":[],"mappings":"AAAA","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-5SLUBHNN.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-5TXFHYQ5.js","../layouts/sidebar1/theme-switcher.tsx"],"names":[],"mappings":"AAAA;ACCA,2EAAuB;AACvB,yCAAyB;AACzB,2CAAmC;AAE5B,SAAS,aAAA,CAAA,EAAgB;AAC9B,EAAA,MAAM,EAAE,SAAS,EAAA,EAAI,kCAAA,CAAS;AAE9B,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,CAAA,kBACb,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,CAAA,EAAA,GAAM,QAAA,CAAS,OAAO,CAAA;AAAA,MAC/B,SAAA,EAAU,qGAAA;AAAA,MACV,KAAA,EAAM;AAAA,IAAA,CAAA;AAAA,oBAEN,KAAA,CAAA,aAAA,CAAC,gBAAA,EAAA,EAAI,SAAA,EAAU,UAAA,CAAU;AAAA,EAC3B,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,CAAA,EAAA,GAAM,QAAA,CAAS,MAAM,CAAA;AAAA,MAC9B,SAAA,EAAU,qGAAA;AAAA,MACV,KAAA,EAAM;AAAA,IAAA,CAAA;AAAA,oBAEN,KAAA,CAAA,aAAA,CAAC,iBAAA,EAAA,EAAK,SAAA,EAAU,UAAA,CAAU;AAAA,EAC5B,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,CAAA,EAAA,GAAM,QAAA,CAAS,QAAQ,CAAA;AAAA,MAChC,SAAA,EAAU,qGAAA;AAAA,MACV,KAAA,EAAM;AAAA,IAAA,CAAA;AAAA,oBAEN,KAAA,CAAA,aAAA,CAAC,oBAAA,EAAA,EAAQ,SAAA,EAAU,UAAA,CAAU;AAAA,EAC/B,CACF,CAAA;AAEJ;ADDA;AACA;AACE;AACF,sCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-5TXFHYQ5.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { useTheme } from 'next-themes';\nimport { Moon, Sun, Monitor } from 'lucide-react';\n\nexport function ThemeSwitcher() {\n const { setTheme } = useTheme();\n\n return (\n <div className=\"flex items-center justify-around p-1\">\n <button\n onClick={() => setTheme('light')}\n className=\"flex flex-1 items-center justify-center rounded-md p-2 hover:bg-accent hover:text-accent-foreground\"\n title=\"Light Mode\"\n >\n <Sun className=\"h-4 w-4\" />\n </button>\n <button\n onClick={() => setTheme('dark')}\n className=\"flex flex-1 items-center justify-center rounded-md p-2 hover:bg-accent hover:text-accent-foreground\"\n title=\"Dark Mode\"\n >\n <Moon className=\"h-4 w-4\" />\n </button>\n <button\n onClick={() => setTheme('system')}\n className=\"flex flex-1 items-center justify-center rounded-md p-2 hover:bg-accent hover:text-accent-foreground\"\n title=\"System Mode\"\n >\n <Monitor className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-6CRGZEQF.js","../components/form/time-input.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;AChBA,4EAAwD;AAWjD,SAAS,aAAA,CAAc,EAAA,EAA8E;AAA9E,EAAA,IAAA,GAAA,EAAA,EAAA,EAAE,EAAA,KAAA,EAAO,YAAA,EAAc,CAAA,EAAG,QAAA,EAAU,UAZlE,EAAA,EAY8B,EAAA,EAAkD,KAAA,EAAA,wCAAA,EAAlD,EAAkD,CAAhD,OAAA,EAAwB,UAAA,EAAU,WAAA,CAAA,CAAA;AAChE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,EAAA,EAAI,6BAAA,MAAiB,CAAO,WAAW,CAAC,CAAA;AAE9D,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,QAAA,CAAS,MAAA,CAAO,YAAA,GAAA,KAAA,EAAA,YAAA,EAAe,EAAE,CAAC,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,aAAA,EAAe,CAAC,CAAA,EAAA,GAAqC;AACzD,IAAA,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,WAAA,EAAa,CAAC,CAAA,EAAA,GAAqC;AACvD,IAAA,MAAM,SAAA,EAAW,6CAAA,CAAe,CAAE,MAAA,CAAO,KAAK,CAAA;AAC9C,IAAA,MAAM,aAAA,EAAe,MAAA,CAAO,QAAQ,CAAA;AAEpC,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,SAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,QAAA,CAAW,YAAA,CAAA;AAAA,EACb,CAAA;AAEA,EAAA,MAAM,YAAA,EAAc,+CAAA,KAAsB,CAAA;AAC1C,EAAA,MAAM,aAAA,EAAe,sDAAA,KAA6B,CAAA;AAClD,EAAA,MAAM,MAAA,EAAQ,YAAA,IAAgB,aAAA,EAAe,CAAA,EAAA;AAG3C,EAAA;AAAC,IAAA;AAAA,IAAA;AAEmC,MAAA;AAClC,MAAA;AACU,MAAA;AACF,MAAA;AACR,MAAA;AAAA,IAAA;AACF,EAAA;AAEJ;ADGgD;AACA;AACA;AACA","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-6CRGZEQF.js","sourcesContent":[null,"\"use client\";\nimport React, { useState, useEffect, ChangeEvent } from 'react';\nimport { FormTextInput } from './text-input';\nimport type { FormTextInputProps } from './text-input';\nimport { cn } from '../../utils/ui';\nimport { convertToHours, convertFromHours, convertToWholeFromHours } from '../../utils/time';\n\nexport interface FormTimeInputProps extends Omit<FormTextInputProps, 'onChange' | 'value'> {\n value?: number;\n onChange?: (value: number) => void;\n}\n\nexport function FormTimeInput({ value: parentValue = 0, onChange, className, ...rest }: FormTimeInputProps) {\n const [value, setValue] = useState<string>(String(parentValue));\n\n useEffect(() => {\n setValue(String(parentValue ?? ''));\n }, [parentValue]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n };\n\n const handleBlur = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = convertToHours(e.target.value);\n const numericValue = Number(newValue);\n\n setValue(newValue);\n onChange?.(numericValue);\n };\n\n const displayText = convertFromHours(value);\n const displayWhole = convertToWholeFromHours(value);\n const title = displayText !== displayWhole ? `${displayText} (${displayWhole})` : displayText;\n\n return (\n <FormTextInput\n {...rest}\n className={cn('$form-time-input', className)}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n title={title}\n />\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/form/checkbox.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport { Checkbox } from '../ui/checkbox';\n\nexport interface FormCheckboxProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n checkbox?: string;\n };\n}\n\nexport function FormCheckbox({\n id,\n name,\n label,\n required,\n disabled,\n checked,\n onCheckedChange,\n classNames,\n}: FormCheckboxProps) {\n const checkboxId = id || _kebabCase(name);\n\n return (\n <div className={cn('$form-checkbox flex items-center gap-3', classNames?.wrapper)}>\n <Checkbox\n id={checkboxId}\n name={name}\n disabled={disabled}\n required={required}\n checked={checked}\n onCheckedChange={onCheckedChange}\n className={cn(classNames?.checkbox)}\n />\n\n {label && (\n <Label htmlFor={checkboxId} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AACA,OAAO,WAAW;AAClB,OAAO,gBAAgB;AAoBhB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,aAAa,MAAM,WAAW,IAAI;AAExC,SACE,oCAAC,SAAI,WAAW,GAAG,0CAA0C,yCAAY,OAAO,KAC9E;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,GAAG,yCAAY,QAAQ;AAAA;AAAA,EACpC,GAEC,SACC,oCAAC,SAAM,SAAS,YAAY,WAAW,yCAAY,OAAO,YACvD,KACH,CAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-6POWZMND.js","../components/form/error.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACHA,4EAAkB;AAClB,gFAAiB;AAEjB,gDAA+B;AAGxB,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,UAAA,EAAY,EAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA,EAIG;AACD,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,EAAE,OAAO;AAAA,EACtB,EAAA,EAAI,2CAAA,CAAe;AAEnB,EAAA,MAAM,WAAA,EAAa,2BAAA,MAAK,EAAQ,KAAK,CAAA;AACrC,EAAA,GAAA,CAAI,CAAC,UAAA,EAAY,OAAO,IAAA;AACxB,EAAA,uBAAO,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,0BAAG,EAA4B,SAAS,EAAA,CAAA,EAAI,QAAA,GAAW,MAAA,CAAO,UAAA,CAAW,OAAO,CAAE,CAAA;AAC3G;ADHA;AACA;AACE;AACF,8BAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-6POWZMND.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _get from 'lodash-es/get';\nimport _startCase from 'lodash-es/startCase';\nimport { useFormContext } from 'react-hook-form';\nimport { cn } from '../../utils/ui';\n\nexport function FormError({\n field,\n className = '',\n message = '',\n}: {\n field: string;\n className?: string;\n message?: string;\n}) {\n const {\n formState: { errors },\n } = useFormContext();\n\n const fieldError = _get(errors, field);\n if (!fieldError) return null;\n return <div className={cn('text-sm text-danger mb-2', className)}>{message || String(fieldError.message)}</div>;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ui/unstyled-button.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\n\ninterface UnstyledButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport function UnstyledButton({ className, ...props }: UnstyledButtonProps) {\n return (\n <button\n type=\"button\"\n className={`appearance-none bg-none border-none p-0 m-0 text-inherit font-inherit ${className ?? ''}`}\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;AACA,YAAY,WAAW;AAIhB,SAAS,eAAe,IAA8C;AAA9C,eAAE,YALjC,IAK+B,IAAgB,kBAAhB,IAAgB,CAAd;AAC/B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,yEAAyE,gCAAa,EAAE;AAAA,OAC/F;AAAA,EACN;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../hooks/use-mobile.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n"],"mappings":";AACA,YAAY,WAAW;AAEvB,IAAM,oBAAoB;AAEnB,SAAS,cAAc;AAC5B,QAAM,CAAC,UAAU,WAAW,IAAU,eAA8B,MAAS;AAE7E,EAAM,gBAAU,MAAM;AACpB,UAAM,MAAM,OAAO,WAAW,eAAe,oBAAoB,CAAC,KAAK;AACvE,UAAM,WAAW,MAAM;AACrB,kBAAY,OAAO,aAAa,iBAAiB;AAAA,IACnD;AACA,QAAI,iBAAiB,UAAU,QAAQ;AACvC,gBAAY,OAAO,aAAa,iBAAiB;AACjD,WAAO,MAAM,IAAI,oBAAoB,UAAU,QAAQ;AAAA,EACzD,GAAG,CAAC,CAAC;AAEL,SAAO,CAAC,CAAC;AACX;","names":[]}