@customafk/lunas-ui 0.2.8 → 0.2.9

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 (267) hide show
  1. package/dist/{alert-DIC1_ymv.cjs → alert-BqJVf4wD.cjs} +1 -1
  2. package/dist/{alert-DIC1_ymv.cjs.map → alert-BqJVf4wD.cjs.map} +1 -1
  3. package/dist/{alert-CA1RS1CG.d.cts → alert-D3OOxNtK.d.mts} +6 -6
  4. package/dist/{alert-VP3giy31.mjs → alert-DQHE-pdI.mjs} +1 -1
  5. package/dist/{alert-VP3giy31.mjs.map → alert-DQHE-pdI.mjs.map} +1 -1
  6. package/dist/{alert-DDL82_U3.d.mts → alert-W_Q1Gsld.d.cts} +7 -7
  7. package/dist/{badge-BFTGDsBm.d.cts → badge-Dm1IEgtT.d.cts} +5 -5
  8. package/dist/{badge-Cg0e-djv.d.mts → badge-YFen8D8o.d.mts} +5 -5
  9. package/dist/{button-C76drZpd.d.mts → button-BnbtzQAN.d.mts} +5 -5
  10. package/dist/{button-Bn54lPVz.d.cts → button-Ckjev2AT.d.cts} +3 -3
  11. package/dist/{calendar-CyAPpT2m.cjs → calendar-B2V4Lv0T.cjs} +1 -1
  12. package/dist/{calendar-CyAPpT2m.cjs.map → calendar-B2V4Lv0T.cjs.map} +1 -1
  13. package/dist/{calendar-JKxWM6AF.mjs → calendar-Cw1G0sVL.mjs} +1 -1
  14. package/dist/{calendar-JKxWM6AF.mjs.map → calendar-Cw1G0sVL.mjs.map} +1 -1
  15. package/dist/{checkbox-RZrRNYP2.cjs → checkbox-Di7ACavC.cjs} +1 -1
  16. package/dist/{checkbox-RZrRNYP2.cjs.map → checkbox-Di7ACavC.cjs.map} +1 -1
  17. package/dist/{checkbox-DJEdYOjA.mjs → checkbox-Dzo6oI4y.mjs} +1 -1
  18. package/dist/{checkbox-DJEdYOjA.mjs.map → checkbox-Dzo6oI4y.mjs.map} +1 -1
  19. package/dist/{cms-layout-HfnOQS16.mjs → cms-layout-Bp6rU_of.mjs} +2 -2
  20. package/dist/{cms-layout-HfnOQS16.mjs.map → cms-layout-Bp6rU_of.mjs.map} +1 -1
  21. package/dist/{cms-layout-Dc4moos1.cjs → cms-layout-r9TmK6hi.cjs} +2 -2
  22. package/dist/{cms-layout-Dc4moos1.cjs.map → cms-layout-r9TmK6hi.cjs.map} +1 -1
  23. package/dist/data-display/country.d.mts +1 -1
  24. package/dist/data-display/role-badge.d.mts +1 -1
  25. package/dist/data-display/statistic.d.cts +2 -2
  26. package/dist/data-display/statistic.d.mts +4 -4
  27. package/dist/{dialog-D6ygAOSV.d.mts → dialog-DTtlGouy.d.mts} +12 -12
  28. package/dist/{dialog-CNhwBcEl.d.cts → dialog-DW1Axqio.d.cts} +12 -12
  29. package/dist/dialogs/detail-dialog/components/sidebar.d.cts +1 -1
  30. package/dist/dialogs/detail-dialog/components/sidebar.d.mts +26 -26
  31. package/dist/features/descriptions/index.d.cts +1 -1
  32. package/dist/features/descriptions/index.d.mts +1 -1
  33. package/dist/features/search-modal/index.d.cts +2 -2
  34. package/dist/features/search-modal/index.d.mts +2 -2
  35. package/dist/features/tables/index.cjs +1 -1
  36. package/dist/features/tables/index.d.cts +156 -6
  37. package/dist/features/tables/index.d.mts +157 -7
  38. package/dist/features/tables/index.mjs +1 -1
  39. package/dist/features/tanstack-form/index.cjs +1 -1
  40. package/dist/features/tanstack-form/index.d.cts +1 -1
  41. package/dist/features/tanstack-form/index.d.mts +1 -1
  42. package/dist/features/tanstack-form/index.mjs +1 -1
  43. package/dist/{field-CppNvoxV.cjs → field-C51eJ6QN.cjs} +2 -2
  44. package/dist/{field-CppNvoxV.cjs.map → field-C51eJ6QN.cjs.map} +1 -1
  45. package/dist/{field-CXVnw75a.mjs → field-DfsTE4Ie.mjs} +2 -2
  46. package/dist/{field-CXVnw75a.mjs.map → field-DfsTE4Ie.mjs.map} +1 -1
  47. package/dist/{index-75nSAiSe.d.mts → index-BIT9bkka.d.mts} +106 -106
  48. package/dist/{index-aTMCQQms.d.cts → index-CO4_ENw7.d.cts} +291 -291
  49. package/dist/index.cjs +1 -1
  50. package/dist/index.d.cts +8 -8
  51. package/dist/index.d.mts +8 -8
  52. package/dist/index.mjs +1 -1
  53. package/dist/{input-Cd0G5y-9.mjs → input-6f9JTc79.mjs} +1 -1
  54. package/dist/{input-Cd0G5y-9.mjs.map → input-6f9JTc79.mjs.map} +1 -1
  55. package/dist/{input-Cl5VkKQh.cjs → input-BMOYFJYM.cjs} +1 -1
  56. package/dist/{input-Cl5VkKQh.cjs.map → input-BMOYFJYM.cjs.map} +1 -1
  57. package/dist/{input-D5dtkW6g.d.mts → input-BrM6EExy.d.mts} +6 -6
  58. package/dist/{input-t2hpPP2K.d.cts → input-CigimPoX.d.cts} +4 -4
  59. package/dist/{label-OmlGaZ5h.mjs → label-3vAlNtF9.mjs} +1 -1
  60. package/dist/{label-OmlGaZ5h.mjs.map → label-3vAlNtF9.mjs.map} +1 -1
  61. package/dist/{label-DkMTQ3Ch.cjs → label-zyBJYydC.cjs} +1 -1
  62. package/dist/{label-DkMTQ3Ch.cjs.map → label-zyBJYydC.cjs.map} +1 -1
  63. package/dist/layouts/cms-layout/index.cjs +1 -1
  64. package/dist/layouts/cms-layout/index.mjs +1 -1
  65. package/dist/layouts/flex.d.cts +4 -4
  66. package/dist/layouts/flex.d.mts +4 -4
  67. package/dist/layouts/payment-layout/index.cjs +1 -1
  68. package/dist/layouts/payment-layout/index.mjs +1 -1
  69. package/dist/pages/FeatureDeveloping.d.cts +2 -2
  70. package/dist/pages/FeatureDeveloping.d.mts +2 -2
  71. package/dist/pages/FeatureFixing.d.cts +2 -2
  72. package/dist/pages/FeatureFixing.d.mts +2 -2
  73. package/dist/pages/NotAuthorized.d.cts +2 -2
  74. package/dist/pages/NotAuthorized.d.mts +2 -2
  75. package/dist/pages/NotFound.d.cts +2 -2
  76. package/dist/pages/NotFound.d.mts +2 -2
  77. package/dist/{payment-layout-Da29dHJe.cjs → payment-layout-C9pP5HdT.cjs} +1 -1
  78. package/dist/{payment-layout-Da29dHJe.cjs.map → payment-layout-C9pP5HdT.cjs.map} +1 -1
  79. package/dist/{payment-layout-wN5c7MCM.mjs → payment-layout-D-69gOPJ.mjs} +1 -1
  80. package/dist/{payment-layout-wN5c7MCM.mjs.map → payment-layout-D-69gOPJ.mjs.map} +1 -1
  81. package/dist/{popover-OJXFbqJi.mjs → popover-BFJhuzW3.mjs} +1 -1
  82. package/dist/{popover-OJXFbqJi.mjs.map → popover-BFJhuzW3.mjs.map} +1 -1
  83. package/dist/{popover-AEt-aSy3.cjs → popover-CmoqhK17.cjs} +1 -1
  84. package/dist/{popover-AEt-aSy3.cjs.map → popover-CmoqhK17.cjs.map} +1 -1
  85. package/dist/progress-0cpDwgAJ.mjs +2 -0
  86. package/dist/progress-0cpDwgAJ.mjs.map +1 -0
  87. package/dist/progress-DE1FdQ1J.cjs +2 -0
  88. package/dist/progress-DE1FdQ1J.cjs.map +1 -0
  89. package/dist/{radio-group-CAgfOr7-.mjs → radio-group-D5OurBIG.mjs} +1 -1
  90. package/dist/{radio-group-CAgfOr7-.mjs.map → radio-group-D5OurBIG.mjs.map} +1 -1
  91. package/dist/{radio-group-BWLdQw7M.cjs → radio-group-DAv2EU3F.cjs} +1 -1
  92. package/dist/{radio-group-BWLdQw7M.cjs.map → radio-group-DAv2EU3F.cjs.map} +1 -1
  93. package/dist/{resizable-DWh_mp5P.mjs → resizable-C2Zl-iLF.mjs} +1 -1
  94. package/dist/{resizable-DWh_mp5P.mjs.map → resizable-C2Zl-iLF.mjs.map} +1 -1
  95. package/dist/{resizable-D6UKwvFa.cjs → resizable-DDPMwd28.cjs} +1 -1
  96. package/dist/{resizable-D6UKwvFa.cjs.map → resizable-DDPMwd28.cjs.map} +1 -1
  97. package/dist/{select-Ze8Fq88G.mjs → select-DRCKwnTV.mjs} +1 -1
  98. package/dist/{select-Ze8Fq88G.mjs.map → select-DRCKwnTV.mjs.map} +1 -1
  99. package/dist/{select-Py_t2nX1.cjs → select-DfvSMRUq.cjs} +1 -1
  100. package/dist/{select-Py_t2nX1.cjs.map → select-DfvSMRUq.cjs.map} +1 -1
  101. package/dist/{spinner-EgMJOaQi.mjs → spinner-B3F9W53l.mjs} +1 -1
  102. package/dist/{spinner-EgMJOaQi.mjs.map → spinner-B3F9W53l.mjs.map} +1 -1
  103. package/dist/{spinner-MKXqwF9G.cjs → spinner-rA8pMY6v.cjs} +1 -1
  104. package/dist/{spinner-MKXqwF9G.cjs.map → spinner-rA8pMY6v.cjs.map} +1 -1
  105. package/dist/tables-D1JyNmcV.cjs +2 -0
  106. package/dist/tables-D1JyNmcV.cjs.map +1 -0
  107. package/dist/tables-DTazQIyy.mjs +2 -0
  108. package/dist/tables-DTazQIyy.mjs.map +1 -0
  109. package/dist/{tanstack-form-BmV2BXDz.cjs → tanstack-form-Bb9JXuEq.cjs} +2 -2
  110. package/dist/{tanstack-form-BmV2BXDz.cjs.map → tanstack-form-Bb9JXuEq.cjs.map} +1 -1
  111. package/dist/{tanstack-form-CJ43hVb_.mjs → tanstack-form-BwyHENeF.mjs} +2 -2
  112. package/dist/{tanstack-form-CJ43hVb_.mjs.map → tanstack-form-BwyHENeF.mjs.map} +1 -1
  113. package/dist/{textarea-CdGSEkZB.mjs → textarea-5RD9ToTV.mjs} +1 -1
  114. package/dist/{textarea-CdGSEkZB.mjs.map → textarea-5RD9ToTV.mjs.map} +1 -1
  115. package/dist/{textarea-BsgmN4jy.cjs → textarea-CvoBIPlJ.cjs} +1 -1
  116. package/dist/{textarea-BsgmN4jy.cjs.map → textarea-CvoBIPlJ.cjs.map} +1 -1
  117. package/dist/{types-B_32Ieia.d.mts → types-CkRjAQZ2.d.mts} +1 -1
  118. package/dist/typography/paragraph.d.cts +4 -4
  119. package/dist/typography/paragraph.d.mts +4 -4
  120. package/dist/typography/title.d.cts +2 -2
  121. package/dist/typography/title.d.mts +2 -2
  122. package/dist/ui/alert-dialog.d.cts +12 -12
  123. package/dist/ui/alert-dialog.d.mts +12 -12
  124. package/dist/ui/alert.cjs +1 -1
  125. package/dist/ui/alert.d.cts +1 -1
  126. package/dist/ui/alert.d.mts +1 -1
  127. package/dist/ui/alert.mjs +1 -1
  128. package/dist/ui/aspect-ratio.d.cts +2 -2
  129. package/dist/ui/aspect-ratio.d.mts +2 -2
  130. package/dist/ui/avatar.d.cts +4 -4
  131. package/dist/ui/avatar.d.mts +4 -4
  132. package/dist/ui/badge.d.cts +1 -1
  133. package/dist/ui/badge.d.mts +1 -1
  134. package/dist/ui/breadcrumb.d.cts +8 -8
  135. package/dist/ui/breadcrumb.d.mts +8 -8
  136. package/dist/ui/button-group.d.cts +6 -6
  137. package/dist/ui/button-group.d.mts +6 -6
  138. package/dist/ui/button.d.cts +1 -1
  139. package/dist/ui/button.d.mts +1 -1
  140. package/dist/ui/calendar.cjs +1 -1
  141. package/dist/ui/calendar.d.cts +4 -4
  142. package/dist/ui/calendar.d.mts +4 -4
  143. package/dist/ui/calendar.mjs +1 -1
  144. package/dist/ui/card.d.cts +8 -8
  145. package/dist/ui/card.d.mts +8 -8
  146. package/dist/ui/carousel.d.cts +7 -7
  147. package/dist/ui/carousel.d.mts +7 -7
  148. package/dist/ui/checkbox.cjs +1 -1
  149. package/dist/ui/checkbox.d.cts +2 -2
  150. package/dist/ui/checkbox.d.mts +2 -2
  151. package/dist/ui/checkbox.mjs +1 -1
  152. package/dist/ui/collapsible.d.cts +4 -4
  153. package/dist/ui/collapsible.d.mts +4 -4
  154. package/dist/ui/command.d.cts +11 -11
  155. package/dist/ui/command.d.mts +11 -11
  156. package/dist/ui/context-menu.d.cts +16 -16
  157. package/dist/ui/context-menu.d.mts +16 -16
  158. package/dist/ui/dialog.d.cts +1 -1
  159. package/dist/ui/dialog.d.mts +1 -1
  160. package/dist/ui/drawer.d.cts +11 -11
  161. package/dist/ui/drawer.d.mts +11 -11
  162. package/dist/ui/dropdown-menu.d.cts +16 -16
  163. package/dist/ui/dropdown-menu.d.mts +16 -16
  164. package/dist/ui/empty.d.cts +7 -7
  165. package/dist/ui/empty.d.mts +9 -9
  166. package/dist/ui/field.cjs +1 -1
  167. package/dist/ui/field.d.cts +24 -24
  168. package/dist/ui/field.d.mts +24 -24
  169. package/dist/ui/field.mjs +1 -1
  170. package/dist/ui/file-uploader.cjs +2 -2
  171. package/dist/ui/file-uploader.cjs.map +1 -1
  172. package/dist/ui/file-uploader.d.cts +2 -2
  173. package/dist/ui/file-uploader.d.mts +2 -2
  174. package/dist/ui/file-uploader.mjs +1 -1
  175. package/dist/ui/file-uploader.mjs.map +1 -1
  176. package/dist/ui/form.cjs +1 -1
  177. package/dist/ui/form.d.cts +11 -11
  178. package/dist/ui/form.d.mts +11 -11
  179. package/dist/ui/form.mjs +1 -1
  180. package/dist/ui/hover-card.d.cts +4 -4
  181. package/dist/ui/hover-card.d.mts +4 -4
  182. package/dist/ui/input-otp.d.cts +5 -5
  183. package/dist/ui/input-otp.d.mts +5 -5
  184. package/dist/ui/input.cjs +1 -1
  185. package/dist/ui/input.d.cts +1 -1
  186. package/dist/ui/input.d.mts +1 -1
  187. package/dist/ui/input.mjs +1 -1
  188. package/dist/ui/inputs/search-input.cjs +1 -1
  189. package/dist/ui/inputs/search-input.d.cts +3 -3
  190. package/dist/ui/inputs/search-input.d.mts +3 -3
  191. package/dist/ui/inputs/search-input.mjs +1 -1
  192. package/dist/ui/item.d.cts +14 -14
  193. package/dist/ui/item.d.mts +11 -11
  194. package/dist/ui/label.cjs +1 -1
  195. package/dist/ui/label.d.cts +2 -2
  196. package/dist/ui/label.d.mts +2 -2
  197. package/dist/ui/label.mjs +1 -1
  198. package/dist/ui/menubar.d.cts +17 -17
  199. package/dist/ui/multi-select.d.cts +2 -2
  200. package/dist/ui/multi-select.d.mts +3 -3
  201. package/dist/ui/navigation-menu.d.cts +11 -11
  202. package/dist/ui/navigation-menu.d.mts +9 -9
  203. package/dist/ui/pagination.d.cts +9 -9
  204. package/dist/ui/pagination.d.mts +9 -9
  205. package/dist/ui/popover.cjs +1 -1
  206. package/dist/ui/popover.d.cts +6 -6
  207. package/dist/ui/popover.d.mts +6 -6
  208. package/dist/ui/popover.mjs +1 -1
  209. package/dist/ui/progress.cjs +1 -2
  210. package/dist/ui/progress.d.cts +2 -2
  211. package/dist/ui/progress.d.mts +2 -2
  212. package/dist/ui/progress.mjs +1 -2
  213. package/dist/ui/radio-group.cjs +1 -1
  214. package/dist/ui/radio-group.d.cts +3 -3
  215. package/dist/ui/radio-group.d.mts +3 -3
  216. package/dist/ui/radio-group.mjs +1 -1
  217. package/dist/ui/resizable.cjs +1 -1
  218. package/dist/ui/resizable.d.cts +9 -9
  219. package/dist/ui/resizable.d.mts +9 -9
  220. package/dist/ui/resizable.mjs +1 -1
  221. package/dist/ui/scroll-area.d.cts +6 -6
  222. package/dist/ui/scroll-area.d.mts +6 -6
  223. package/dist/ui/select.cjs +1 -1
  224. package/dist/ui/select.d.cts +9 -9
  225. package/dist/ui/select.d.mts +9 -9
  226. package/dist/ui/select.mjs +1 -1
  227. package/dist/ui/separator.d.cts +2 -2
  228. package/dist/ui/separator.d.mts +2 -2
  229. package/dist/ui/sheet.d.cts +9 -9
  230. package/dist/ui/sheet.d.mts +9 -9
  231. package/dist/ui/sidebar.cjs +1 -1
  232. package/dist/ui/sidebar.d.cts +28 -28
  233. package/dist/ui/sidebar.d.mts +26 -26
  234. package/dist/ui/sidebar.mjs +1 -1
  235. package/dist/ui/skeleton.d.cts +2 -2
  236. package/dist/ui/skeleton.d.mts +2 -2
  237. package/dist/ui/slider.d.cts +2 -2
  238. package/dist/ui/slider.d.mts +2 -2
  239. package/dist/ui/sonner.d.cts +2 -2
  240. package/dist/ui/sonner.d.mts +2 -2
  241. package/dist/ui/spinner.cjs +1 -1
  242. package/dist/ui/spinner.d.cts +2 -2
  243. package/dist/ui/spinner.d.mts +2 -2
  244. package/dist/ui/spinner.mjs +1 -1
  245. package/dist/ui/switch.d.cts +2 -2
  246. package/dist/ui/switch.d.mts +2 -2
  247. package/dist/ui/table.d.cts +18 -18
  248. package/dist/ui/table.d.mts +9 -9
  249. package/dist/ui/tabs.d.cts +5 -5
  250. package/dist/ui/tabs.d.mts +5 -5
  251. package/dist/ui/textarea.cjs +1 -1
  252. package/dist/ui/textarea.d.cts +2 -2
  253. package/dist/ui/textarea.d.mts +2 -2
  254. package/dist/ui/textarea.mjs +1 -1
  255. package/dist/ui/toggle-group.d.cts +3 -3
  256. package/dist/ui/toggle-group.d.mts +3 -3
  257. package/dist/ui/toggle.d.cts +4 -4
  258. package/dist/ui/toggle.d.mts +2 -2
  259. package/dist/ui/tooltip.d.cts +5 -5
  260. package/dist/ui/tooltip.d.mts +5 -5
  261. package/package.json +1 -1
  262. package/dist/tables-Cc3Wik4i.cjs +0 -2
  263. package/dist/tables-Cc3Wik4i.cjs.map +0 -1
  264. package/dist/tables-DrJKQPsT.mjs +0 -2
  265. package/dist/tables-DrJKQPsT.mjs.map +0 -1
  266. package/dist/ui/progress.cjs.map +0 -1
  267. package/dist/ui/progress.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
1
  const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`react`),r=require(`react/jsx-runtime`),i=require(`@customafk/react-toolkit/utils`),a=require(`class-variance-authority`);const o=(0,a.cva)([`relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm`,`grid-cols-[0_1fr]`,`has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3`,`[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,`transition-colors duration-150`],{variants:{variant:{default:`bg-card text-text-positive-strong border-border`,destructive:`bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong`,warning:`bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong`,success:`bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong`,info:`bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong`}},defaultVariants:{variant:`default`}});function s({className:e,variant:a,children:s,icon:c,dismissible:l,onDismiss:u,...d}){let f=(0,n.useMemo)(()=>{if(!c)switch(a){case`destructive`:return(0,r.jsx)(t.AlertCircle,{});case`warning`:return(0,r.jsx)(t.AlertTriangle,{});case`success`:return(0,r.jsx)(t.CheckCircle,{});case`info`:return(0,r.jsx)(t.Info,{});default:return null}return c},[c,a]);return(0,r.jsxs)(`div`,{"data-slot":`alert`,role:`alert`,"data-variant":a,className:(0,i.cn)(o({variant:a}),e),...d,children:[f,s,l&&(0,r.jsx)(`button`,{type:`button`,onClick:u,"aria-label":`Close alert`,className:`absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100`,"data-slot":`alert-close`,children:(0,r.jsx)(t.X,{size:16})})]})}function c({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-title`,className:(0,i.cn)(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function l({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-description`,className:(0,i.cn)(`text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
2
- //# sourceMappingURL=alert-DIC1_ymv.cjs.map
2
+ //# sourceMappingURL=alert-BqJVf4wD.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-DIC1_ymv.cjs","names":["AlertCircle","AlertTriangle","CheckCircle","Info","X"],"sources":["../packages/components/ui/alert-variants.ts","../packages/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Alert component variants for styling using class-variance-authority\n */\nexport const alertVariants = cva(\n [\n 'relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm',\n 'grid-cols-[0_1fr]',\n 'has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3',\n '[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n 'transition-colors duration-150',\n ],\n {\n variants: {\n variant: {\n default: 'bg-card text-text-positive-strong border-border',\n destructive:\n 'bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong',\n warning:\n 'bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong',\n success:\n 'bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong',\n info: 'bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type AlertVariantProps = VariantProps<typeof alertVariants>;\n","'use client';\n\nimport { useMemo } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircle, AlertTriangle, CheckCircle, Info, X } from 'lucide-react';\n\nimport { type AlertVariantProps, alertVariants } from './alert-variants';\n\n/**\n * Props for the Alert component.\n */\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, Omit<AlertVariantProps, 'className'> {\n /**\n * Optional icon to display in the alert; defaults to a variant-appropriate icon when omitted.\n */\n icon?: React.ReactNode;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback invoked when the dismiss button is clicked.\n */\n onDismiss?: () => void;\n}\n\n/**\n * Displays a contextual feedback message with optional icon, title, description, and dismiss button.\n *\n * @example\n * ```tsx\n * import { Alert, AlertTitle, AlertDescription } from '@customafk/lunas-ui/ui/alert';\n *\n * <Alert variant=\"success\" dismissible onDismiss={() => setOpen(false)}>\n * <AlertTitle>Saved successfully</AlertTitle>\n * <AlertDescription>Your changes have been saved.</AlertDescription>\n * </Alert>\n * ```\n */\nfunction Alert({ className, variant, children, icon, dismissible, onDismiss, ...props }: AlertProps) {\n // Default icons based on variant\n const defaultIcon = useMemo(() => {\n if (!icon) {\n switch (variant) {\n case 'destructive':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'success':\n return <CheckCircle />;\n case 'info':\n return <Info />;\n default:\n return null;\n }\n }\n return icon;\n }, [icon, variant]);\n\n return (\n <div data-slot=\"alert\" role=\"alert\" data-variant={variant} className={cn(alertVariants({ variant }), className)} {...props}>\n {defaultIcon}\n {children}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label=\"Close alert\"\n className=\"absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100\"\n data-slot=\"alert-close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n/**\n * Props for the AlertTitle component.\n */\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Title text or elements to display.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the bold title line inside an Alert.\n */\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return <div data-slot=\"alert-title\" className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)} {...props} />;\n}\n\n/**\n * Props for the AlertDescription component.\n */\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Descriptive text or elements displayed below the title.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the supporting body text inside an Alert.\n */\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n"],"mappings":"0MAKA,MAAa,GAAA,EAAA,EAAA,KACX,CACE,iFACA,oBACA,qDACA,8DACA,iCACD,CACD,CACE,SAAU,CACR,QAAS,CACP,QAAS,kDACT,YACE,6IACF,QACE,kJACF,QACE,kJACF,KAAM,mIACP,CACF,CACD,gBAAiB,CACf,QAAS,UACV,CACF,CACF,CCUD,SAAS,EAAM,CAAE,YAAW,UAAS,WAAU,OAAM,cAAa,YAAW,GAAG,GAAqB,CAEnG,IAAM,GAAA,EAAA,EAAA,aAA4B,CAChC,GAAI,CAAC,EACH,OAAQ,EAAR,CACE,IAAK,cACH,OAAO,EAAA,EAAA,KAACA,EAAAA,YAAAA,EAAAA,CAAc,CACxB,IAAK,UACH,OAAO,EAAA,EAAA,KAACC,EAAAA,cAAAA,EAAAA,CAAgB,CAC1B,IAAK,UACH,OAAO,EAAA,EAAA,KAACC,EAAAA,YAAAA,EAAAA,CAAc,CACxB,IAAK,OACH,OAAO,EAAA,EAAA,KAACC,EAAAA,KAAAA,EAAAA,CAAO,CACjB,QACE,OAAO,KAGb,OAAO,GACN,CAAC,EAAM,EAAQ,CAAC,CAEnB,OACE,EAAA,EAAA,MAAC,MAAA,CAAI,YAAU,QAAQ,KAAK,QAAQ,eAAc,EAAS,WAAA,EAAA,EAAA,IAAc,EAAc,CAAE,UAAS,CAAC,CAAE,EAAU,CAAE,GAAI,YAClH,EACA,EACA,IACC,EAAA,EAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,aAAW,cACX,UAAU,4GACV,YAAU,wBAEV,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAE,KAAM,GAAA,CAAM,EACR,GAEP,CAiBV,SAAS,EAAW,CAAE,YAAW,GAAG,GAA0B,CAC5D,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,cAAc,WAAA,EAAA,EAAA,IAAc,8DAA+D,EAAU,CAAE,GAAI,GAAS,CAgB5I,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAgC,CACxE,OACE,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,oBACV,WAAA,EAAA,EAAA,IAAc,mGAAoG,EAAU,CAC5H,GAAI,GACJ"}
1
+ {"version":3,"file":"alert-BqJVf4wD.cjs","names":["AlertCircle","AlertTriangle","CheckCircle","Info","X"],"sources":["../packages/components/ui/alert-variants.ts","../packages/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Alert component variants for styling using class-variance-authority\n */\nexport const alertVariants = cva(\n [\n 'relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm',\n 'grid-cols-[0_1fr]',\n 'has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3',\n '[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n 'transition-colors duration-150',\n ],\n {\n variants: {\n variant: {\n default: 'bg-card text-text-positive-strong border-border',\n destructive:\n 'bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong',\n warning:\n 'bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong',\n success:\n 'bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong',\n info: 'bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type AlertVariantProps = VariantProps<typeof alertVariants>;\n","'use client';\n\nimport { useMemo } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircle, AlertTriangle, CheckCircle, Info, X } from 'lucide-react';\n\nimport { type AlertVariantProps, alertVariants } from './alert-variants';\n\n/**\n * Props for the Alert component.\n */\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, Omit<AlertVariantProps, 'className'> {\n /**\n * Optional icon to display in the alert; defaults to a variant-appropriate icon when omitted.\n */\n icon?: React.ReactNode;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback invoked when the dismiss button is clicked.\n */\n onDismiss?: () => void;\n}\n\n/**\n * Displays a contextual feedback message with optional icon, title, description, and dismiss button.\n *\n * @example\n * ```tsx\n * import { Alert, AlertTitle, AlertDescription } from '@customafk/lunas-ui/ui/alert';\n *\n * <Alert variant=\"success\" dismissible onDismiss={() => setOpen(false)}>\n * <AlertTitle>Saved successfully</AlertTitle>\n * <AlertDescription>Your changes have been saved.</AlertDescription>\n * </Alert>\n * ```\n */\nfunction Alert({ className, variant, children, icon, dismissible, onDismiss, ...props }: AlertProps) {\n // Default icons based on variant\n const defaultIcon = useMemo(() => {\n if (!icon) {\n switch (variant) {\n case 'destructive':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'success':\n return <CheckCircle />;\n case 'info':\n return <Info />;\n default:\n return null;\n }\n }\n return icon;\n }, [icon, variant]);\n\n return (\n <div data-slot=\"alert\" role=\"alert\" data-variant={variant} className={cn(alertVariants({ variant }), className)} {...props}>\n {defaultIcon}\n {children}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label=\"Close alert\"\n className=\"absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100\"\n data-slot=\"alert-close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n/**\n * Props for the AlertTitle component.\n */\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Title text or elements to display.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the bold title line inside an Alert.\n */\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return <div data-slot=\"alert-title\" className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)} {...props} />;\n}\n\n/**\n * Props for the AlertDescription component.\n */\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Descriptive text or elements displayed below the title.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the supporting body text inside an Alert.\n */\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n"],"mappings":"0MAKA,MAAa,GAAA,EAAA,EAAA,KACX,CACE,iFACA,oBACA,qDACA,8DACA,iCACD,CACD,CACE,SAAU,CACR,QAAS,CACP,QAAS,kDACT,YACE,6IACF,QACE,kJACF,QACE,kJACF,KAAM,mIACP,CACF,CACD,gBAAiB,CACf,QAAS,UACV,CACF,CACF,CCUD,SAAS,EAAM,CAAE,YAAW,UAAS,WAAU,OAAM,cAAa,YAAW,GAAG,GAAqB,CAEnG,IAAM,GAAA,EAAA,EAAA,aAA4B,CAChC,GAAI,CAAC,EACH,OAAQ,EAAR,CACE,IAAK,cACH,OAAO,EAAA,EAAA,KAACA,EAAAA,YAAAA,EAAAA,CAAc,CACxB,IAAK,UACH,OAAO,EAAA,EAAA,KAACC,EAAAA,cAAAA,EAAAA,CAAgB,CAC1B,IAAK,UACH,OAAO,EAAA,EAAA,KAACC,EAAAA,YAAAA,EAAAA,CAAc,CACxB,IAAK,OACH,OAAO,EAAA,EAAA,KAACC,EAAAA,KAAAA,EAAAA,CAAO,CACjB,QACE,OAAO,KAGb,OAAO,GACN,CAAC,EAAM,EAAQ,CAAC,CAEnB,OACE,EAAA,EAAA,MAAC,MAAA,CAAI,YAAU,QAAQ,KAAK,QAAQ,eAAc,EAAS,WAAA,EAAA,EAAA,IAAc,EAAc,CAAE,UAAS,CAAC,CAAE,EAAU,CAAE,GAAI,YAClH,EACA,EACA,IACC,EAAA,EAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,aAAW,cACX,UAAU,4GACV,YAAU,wBAEV,EAAA,EAAA,KAACC,EAAAA,EAAAA,CAAE,KAAM,GAAA,CAAM,EACR,GAEP,CAiBV,SAAS,EAAW,CAAE,YAAW,GAAG,GAA0B,CAC5D,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,cAAc,WAAA,EAAA,EAAA,IAAc,8DAA+D,EAAU,CAAE,GAAI,GAAS,CAgB5I,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAgC,CACxE,OACE,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,oBACV,WAAA,EAAA,EAAA,IAAc,mGAAoG,EAAU,CAC5H,GAAI,GACJ"}
@@ -1,6 +1,6 @@
1
- import * as react_jsx_runtime47 from "react/jsx-runtime";
2
- import * as class_variance_authority_types13 from "class-variance-authority/types";
1
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
3
2
  import { VariantProps } from "class-variance-authority";
3
+ import * as class_variance_authority_types13 from "class-variance-authority/types";
4
4
 
5
5
  //#region packages/components/ui/alert-variants.d.ts
6
6
  /**
@@ -50,7 +50,7 @@ declare function Alert({
50
50
  dismissible,
51
51
  onDismiss,
52
52
  ...props
53
- }: AlertProps): react_jsx_runtime47.JSX.Element;
53
+ }: AlertProps): react_jsx_runtime8.JSX.Element;
54
54
  /**
55
55
  * Props for the AlertTitle component.
56
56
  */
@@ -66,7 +66,7 @@ interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {
66
66
  declare function AlertTitle({
67
67
  className,
68
68
  ...props
69
- }: AlertTitleProps): react_jsx_runtime47.JSX.Element;
69
+ }: AlertTitleProps): react_jsx_runtime8.JSX.Element;
70
70
  /**
71
71
  * Props for the AlertDescription component.
72
72
  */
@@ -82,7 +82,7 @@ interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {
82
82
  declare function AlertDescription({
83
83
  className,
84
84
  ...props
85
- }: AlertDescriptionProps): react_jsx_runtime47.JSX.Element;
85
+ }: AlertDescriptionProps): react_jsx_runtime8.JSX.Element;
86
86
  //#endregion
87
87
  export { AlertTitle as a, AlertProps as i, AlertDescription as n, AlertTitleProps as o, AlertDescriptionProps as r, Alert as t };
88
- //# sourceMappingURL=alert-CA1RS1CG.d.cts.map
88
+ //# sourceMappingURL=alert-D3OOxNtK.d.mts.map
@@ -1,2 +1,2 @@
1
1
  import{AlertCircle as e,AlertTriangle as t,CheckCircle as n,Info as r,X as i}from"lucide-react";import{useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{cn as c}from"@customafk/react-toolkit/utils";import{cva as l}from"class-variance-authority";const u=l([`relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm`,`grid-cols-[0_1fr]`,`has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3`,`[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,`transition-colors duration-150`],{variants:{variant:{default:`bg-card text-text-positive-strong border-border`,destructive:`bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong`,warning:`bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong`,success:`bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong`,info:`bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong`}},defaultVariants:{variant:`default`}});function d({className:l,variant:d,children:f,icon:p,dismissible:m,onDismiss:h,...g}){let _=a(()=>{if(!p)switch(d){case`destructive`:return o(e,{});case`warning`:return o(t,{});case`success`:return o(n,{});case`info`:return o(r,{});default:return null}return p},[p,d]);return s(`div`,{"data-slot":`alert`,role:`alert`,"data-variant":d,className:c(u({variant:d}),l),...g,children:[_,f,m&&o(`button`,{type:`button`,onClick:h,"aria-label":`Close alert`,className:`absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100`,"data-slot":`alert-close`,children:o(i,{size:16})})]})}function f({className:e,...t}){return o(`div`,{"data-slot":`alert-title`,className:c(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function p({className:e,...t}){return o(`div`,{"data-slot":`alert-description`,className:c(`text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}export{p as n,f as r,d as t};
2
- //# sourceMappingURL=alert-VP3giy31.mjs.map
2
+ //# sourceMappingURL=alert-DQHE-pdI.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-VP3giy31.mjs","names":[],"sources":["../packages/components/ui/alert-variants.ts","../packages/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Alert component variants for styling using class-variance-authority\n */\nexport const alertVariants = cva(\n [\n 'relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm',\n 'grid-cols-[0_1fr]',\n 'has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3',\n '[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n 'transition-colors duration-150',\n ],\n {\n variants: {\n variant: {\n default: 'bg-card text-text-positive-strong border-border',\n destructive:\n 'bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong',\n warning:\n 'bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong',\n success:\n 'bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong',\n info: 'bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type AlertVariantProps = VariantProps<typeof alertVariants>;\n","'use client';\n\nimport { useMemo } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircle, AlertTriangle, CheckCircle, Info, X } from 'lucide-react';\n\nimport { type AlertVariantProps, alertVariants } from './alert-variants';\n\n/**\n * Props for the Alert component.\n */\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, Omit<AlertVariantProps, 'className'> {\n /**\n * Optional icon to display in the alert; defaults to a variant-appropriate icon when omitted.\n */\n icon?: React.ReactNode;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback invoked when the dismiss button is clicked.\n */\n onDismiss?: () => void;\n}\n\n/**\n * Displays a contextual feedback message with optional icon, title, description, and dismiss button.\n *\n * @example\n * ```tsx\n * import { Alert, AlertTitle, AlertDescription } from '@customafk/lunas-ui/ui/alert';\n *\n * <Alert variant=\"success\" dismissible onDismiss={() => setOpen(false)}>\n * <AlertTitle>Saved successfully</AlertTitle>\n * <AlertDescription>Your changes have been saved.</AlertDescription>\n * </Alert>\n * ```\n */\nfunction Alert({ className, variant, children, icon, dismissible, onDismiss, ...props }: AlertProps) {\n // Default icons based on variant\n const defaultIcon = useMemo(() => {\n if (!icon) {\n switch (variant) {\n case 'destructive':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'success':\n return <CheckCircle />;\n case 'info':\n return <Info />;\n default:\n return null;\n }\n }\n return icon;\n }, [icon, variant]);\n\n return (\n <div data-slot=\"alert\" role=\"alert\" data-variant={variant} className={cn(alertVariants({ variant }), className)} {...props}>\n {defaultIcon}\n {children}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label=\"Close alert\"\n className=\"absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100\"\n data-slot=\"alert-close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n/**\n * Props for the AlertTitle component.\n */\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Title text or elements to display.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the bold title line inside an Alert.\n */\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return <div data-slot=\"alert-title\" className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)} {...props} />;\n}\n\n/**\n * Props for the AlertDescription component.\n */\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Descriptive text or elements displayed below the title.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the supporting body text inside an Alert.\n */\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n"],"mappings":"qRAKA,MAAa,EAAgB,EAC3B,CACE,iFACA,oBACA,qDACA,8DACA,iCACD,CACD,CACE,SAAU,CACR,QAAS,CACP,QAAS,kDACT,YACE,6IACF,QACE,kJACF,QACE,kJACF,KAAM,mIACP,CACF,CACD,gBAAiB,CACf,QAAS,UACV,CACF,CACF,CCUD,SAAS,EAAM,CAAE,YAAW,UAAS,WAAU,OAAM,cAAa,YAAW,GAAG,GAAqB,CAEnG,IAAM,EAAc,MAAc,CAChC,GAAI,CAAC,EACH,OAAQ,EAAR,CACE,IAAK,cACH,OAAO,EAAC,EAAA,EAAA,CAAc,CACxB,IAAK,UACH,OAAO,EAAC,EAAA,EAAA,CAAgB,CAC1B,IAAK,UACH,OAAO,EAAC,EAAA,EAAA,CAAc,CACxB,IAAK,OACH,OAAO,EAAC,EAAA,EAAA,CAAO,CACjB,QACE,OAAO,KAGb,OAAO,GACN,CAAC,EAAM,EAAQ,CAAC,CAEnB,OACE,EAAC,MAAA,CAAI,YAAU,QAAQ,KAAK,QAAQ,eAAc,EAAS,UAAW,EAAG,EAAc,CAAE,UAAS,CAAC,CAAE,EAAU,CAAE,GAAI,YAClH,EACA,EACA,GACC,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,aAAW,cACX,UAAU,4GACV,YAAU,uBAEV,EAAC,EAAA,CAAE,KAAM,GAAA,CAAM,EACR,GAEP,CAiBV,SAAS,EAAW,CAAE,YAAW,GAAG,GAA0B,CAC5D,OAAO,EAAC,MAAA,CAAI,YAAU,cAAc,UAAW,EAAG,8DAA+D,EAAU,CAAE,GAAI,GAAS,CAgB5I,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAgC,CACxE,OACE,EAAC,MAAA,CACC,YAAU,oBACV,UAAW,EAAG,mGAAoG,EAAU,CAC5H,GAAI,GACJ"}
1
+ {"version":3,"file":"alert-DQHE-pdI.mjs","names":[],"sources":["../packages/components/ui/alert-variants.ts","../packages/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Alert component variants for styling using class-variance-authority\n */\nexport const alertVariants = cva(\n [\n 'relative grid w-full items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm',\n 'grid-cols-[0_1fr]',\n 'has-[>svg]:grid-cols-[24px_1fr] has-[>svg]:gap-x-3',\n '[&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n 'transition-colors duration-150',\n ],\n {\n variants: {\n variant: {\n default: 'bg-card text-text-positive-strong border-border',\n destructive:\n 'bg-danger-bg-subtle text-danger-intense border-danger-border-subtle [&>svg]:text-danger *:data-[slot=alert-description]:text-danger-strong',\n warning:\n 'bg-warning-bg-subtle text-warning-intense border-warning-border-subtle [&>svg]:text-warning *:data-[slot=alert-description]:text-warning-strong',\n success:\n 'bg-success-bg-subtle text-success-intense border-success-border-subtle [&>svg]:text-success *:data-[slot=alert-description]:text-success-strong',\n info: 'bg-info-bg-subtle text-info-intense border-info-border-subtle [&>svg]:text-info *:data-[slot=alert-description]:text-info-strong',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type AlertVariantProps = VariantProps<typeof alertVariants>;\n","'use client';\n\nimport { useMemo } from 'react';\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { AlertCircle, AlertTriangle, CheckCircle, Info, X } from 'lucide-react';\n\nimport { type AlertVariantProps, alertVariants } from './alert-variants';\n\n/**\n * Props for the Alert component.\n */\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, Omit<AlertVariantProps, 'className'> {\n /**\n * Optional icon to display in the alert; defaults to a variant-appropriate icon when omitted.\n */\n icon?: React.ReactNode;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback invoked when the dismiss button is clicked.\n */\n onDismiss?: () => void;\n}\n\n/**\n * Displays a contextual feedback message with optional icon, title, description, and dismiss button.\n *\n * @example\n * ```tsx\n * import { Alert, AlertTitle, AlertDescription } from '@customafk/lunas-ui/ui/alert';\n *\n * <Alert variant=\"success\" dismissible onDismiss={() => setOpen(false)}>\n * <AlertTitle>Saved successfully</AlertTitle>\n * <AlertDescription>Your changes have been saved.</AlertDescription>\n * </Alert>\n * ```\n */\nfunction Alert({ className, variant, children, icon, dismissible, onDismiss, ...props }: AlertProps) {\n // Default icons based on variant\n const defaultIcon = useMemo(() => {\n if (!icon) {\n switch (variant) {\n case 'destructive':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'success':\n return <CheckCircle />;\n case 'info':\n return <Info />;\n default:\n return null;\n }\n }\n return icon;\n }, [icon, variant]);\n\n return (\n <div data-slot=\"alert\" role=\"alert\" data-variant={variant} className={cn(alertVariants({ variant }), className)} {...props}>\n {defaultIcon}\n {children}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n aria-label=\"Close alert\"\n className=\"absolute top-2 right-2 size-6 rounded-md p-1 opacity-70 transition-opacity duration-100 hover:opacity-100\"\n data-slot=\"alert-close\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n/**\n * Props for the AlertTitle component.\n */\nexport interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Title text or elements to display.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the bold title line inside an Alert.\n */\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return <div data-slot=\"alert-title\" className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)} {...props} />;\n}\n\n/**\n * Props for the AlertDescription component.\n */\nexport interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Descriptive text or elements displayed below the title.\n */\n children: React.ReactNode;\n}\n\n/**\n * Renders the supporting body text inside an Alert.\n */\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('text-text-positive-weak col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n"],"mappings":"qRAKA,MAAa,EAAgB,EAC3B,CACE,iFACA,oBACA,qDACA,8DACA,iCACD,CACD,CACE,SAAU,CACR,QAAS,CACP,QAAS,kDACT,YACE,6IACF,QACE,kJACF,QACE,kJACF,KAAM,mIACP,CACF,CACD,gBAAiB,CACf,QAAS,UACV,CACF,CACF,CCUD,SAAS,EAAM,CAAE,YAAW,UAAS,WAAU,OAAM,cAAa,YAAW,GAAG,GAAqB,CAEnG,IAAM,EAAc,MAAc,CAChC,GAAI,CAAC,EACH,OAAQ,EAAR,CACE,IAAK,cACH,OAAO,EAAC,EAAA,EAAA,CAAc,CACxB,IAAK,UACH,OAAO,EAAC,EAAA,EAAA,CAAgB,CAC1B,IAAK,UACH,OAAO,EAAC,EAAA,EAAA,CAAc,CACxB,IAAK,OACH,OAAO,EAAC,EAAA,EAAA,CAAO,CACjB,QACE,OAAO,KAGb,OAAO,GACN,CAAC,EAAM,EAAQ,CAAC,CAEnB,OACE,EAAC,MAAA,CAAI,YAAU,QAAQ,KAAK,QAAQ,eAAc,EAAS,UAAW,EAAG,EAAc,CAAE,UAAS,CAAC,CAAE,EAAU,CAAE,GAAI,YAClH,EACA,EACA,GACC,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,aAAW,cACX,UAAU,4GACV,YAAU,uBAEV,EAAC,EAAA,CAAE,KAAM,GAAA,CAAM,EACR,GAEP,CAiBV,SAAS,EAAW,CAAE,YAAW,GAAG,GAA0B,CAC5D,OAAO,EAAC,MAAA,CAAI,YAAU,cAAc,UAAW,EAAG,8DAA+D,EAAU,CAAE,GAAI,GAAS,CAgB5I,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAgC,CACxE,OACE,EAAC,MAAA,CACC,YAAU,oBACV,UAAW,EAAG,mGAAoG,EAAU,CAC5H,GAAI,GACJ"}
@@ -1,6 +1,6 @@
1
- import * as react_jsx_runtime31 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime59 from "react/jsx-runtime";
2
+ import * as class_variance_authority_types13 from "class-variance-authority/types";
2
3
  import { VariantProps } from "class-variance-authority";
3
- import * as class_variance_authority_types15 from "class-variance-authority/types";
4
4
 
5
5
  //#region packages/components/ui/alert-variants.d.ts
6
6
  /**
@@ -8,7 +8,7 @@ import * as class_variance_authority_types15 from "class-variance-authority/type
8
8
  */
9
9
  declare const alertVariants: (props?: ({
10
10
  variant?: "default" | "info" | "success" | "warning" | "destructive" | null | undefined;
11
- } & class_variance_authority_types15.ClassProp) | undefined) => string;
11
+ } & class_variance_authority_types13.ClassProp) | undefined) => string;
12
12
  type AlertVariantProps = VariantProps<typeof alertVariants>;
13
13
  //#endregion
14
14
  //#region packages/components/ui/alert.d.ts
@@ -50,7 +50,7 @@ declare function Alert({
50
50
  dismissible,
51
51
  onDismiss,
52
52
  ...props
53
- }: AlertProps): react_jsx_runtime31.JSX.Element;
53
+ }: AlertProps): react_jsx_runtime59.JSX.Element;
54
54
  /**
55
55
  * Props for the AlertTitle component.
56
56
  */
@@ -66,7 +66,7 @@ interface AlertTitleProps extends React.HTMLAttributes<HTMLDivElement> {
66
66
  declare function AlertTitle({
67
67
  className,
68
68
  ...props
69
- }: AlertTitleProps): react_jsx_runtime31.JSX.Element;
69
+ }: AlertTitleProps): react_jsx_runtime59.JSX.Element;
70
70
  /**
71
71
  * Props for the AlertDescription component.
72
72
  */
@@ -82,7 +82,7 @@ interface AlertDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {
82
82
  declare function AlertDescription({
83
83
  className,
84
84
  ...props
85
- }: AlertDescriptionProps): react_jsx_runtime31.JSX.Element;
85
+ }: AlertDescriptionProps): react_jsx_runtime59.JSX.Element;
86
86
  //#endregion
87
87
  export { AlertTitle as a, AlertProps as i, AlertDescription as n, AlertTitleProps as o, AlertDescriptionProps as r, Alert as t };
88
- //# sourceMappingURL=alert-DDL82_U3.d.mts.map
88
+ //# sourceMappingURL=alert-W_Q1Gsld.d.cts.map
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime50 from "react/jsx-runtime";
2
- import * as class_variance_authority_types3 from "class-variance-authority/types";
1
+ import * as react_jsx_runtime27 from "react/jsx-runtime";
2
+ import * as class_variance_authority_types1 from "class-variance-authority/types";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
 
5
5
  //#region packages/components/ui/badge.d.ts
@@ -8,7 +8,7 @@ declare const badgeVariants: (props?: ({
8
8
  color?: "muted" | "primary" | "secondary" | "accent" | "info" | "success" | "warning" | "danger" | null | undefined;
9
9
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
10
10
  pill?: boolean | null | undefined;
11
- } & class_variance_authority_types3.ClassProp) | undefined) => string;
11
+ } & class_variance_authority_types1.ClassProp) | undefined) => string;
12
12
  /**
13
13
  * Props for the `Badge` component.
14
14
  *
@@ -36,7 +36,7 @@ declare function Badge({
36
36
  size,
37
37
  pill,
38
38
  ...props
39
- }: BadgeProps): react_jsx_runtime50.JSX.Element;
39
+ }: BadgeProps): react_jsx_runtime27.JSX.Element;
40
40
  //#endregion
41
41
  export { BadgeProps as n, badgeVariants as r, Badge as t };
42
- //# sourceMappingURL=badge-BFTGDsBm.d.cts.map
42
+ //# sourceMappingURL=badge-Dm1IEgtT.d.cts.map
@@ -1,6 +1,6 @@
1
- import * as react_jsx_runtime50 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime175 from "react/jsx-runtime";
2
2
  import { VariantProps } from "class-variance-authority";
3
- import * as class_variance_authority_types3 from "class-variance-authority/types";
3
+ import * as class_variance_authority_types9 from "class-variance-authority/types";
4
4
 
5
5
  //#region packages/components/ui/badge.d.ts
6
6
  declare const badgeVariants: (props?: ({
@@ -8,7 +8,7 @@ declare const badgeVariants: (props?: ({
8
8
  color?: "muted" | "primary" | "secondary" | "accent" | "info" | "success" | "warning" | "danger" | null | undefined;
9
9
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
10
10
  pill?: boolean | null | undefined;
11
- } & class_variance_authority_types3.ClassProp) | undefined) => string;
11
+ } & class_variance_authority_types9.ClassProp) | undefined) => string;
12
12
  /**
13
13
  * Props for the `Badge` component.
14
14
  *
@@ -36,7 +36,7 @@ declare function Badge({
36
36
  size,
37
37
  pill,
38
38
  ...props
39
- }: BadgeProps): react_jsx_runtime50.JSX.Element;
39
+ }: BadgeProps): react_jsx_runtime175.JSX.Element;
40
40
  //#endregion
41
41
  export { BadgeProps as n, badgeVariants as r, Badge as t };
42
- //# sourceMappingURL=badge-Cg0e-djv.d.mts.map
42
+ //# sourceMappingURL=badge-YFen8D8o.d.mts.map
@@ -1,6 +1,6 @@
1
- import * as react_jsx_runtime51 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime45 from "react/jsx-runtime";
2
2
  import { VariantProps } from "class-variance-authority";
3
- import * as class_variance_authority_types13 from "class-variance-authority/types";
3
+ import * as class_variance_authority_types20 from "class-variance-authority/types";
4
4
 
5
5
  //#region packages/components/ui/button.variants.d.ts
6
6
 
@@ -11,7 +11,7 @@ declare const buttonVariants: (props?: ({
11
11
  variant?: "default" | "outline" | "link" | "soft" | "ghost" | "subtle" | null | undefined;
12
12
  color?: "muted" | "primary" | "secondary" | "info" | "success" | "warning" | "danger" | "important" | null | undefined;
13
13
  size?: "xs" | "sm" | "md" | "lg" | "xl" | "default" | "icon" | null | undefined;
14
- } & class_variance_authority_types13.ClassProp) | undefined) => string;
14
+ } & class_variance_authority_types20.ClassProp) | undefined) => string;
15
15
  type ButtonVariantProps = VariantProps<typeof buttonVariants>;
16
16
  //#endregion
17
17
  //#region packages/components/ui/button.d.ts
@@ -168,7 +168,7 @@ declare function Button({
168
168
  type,
169
169
  innerClassName,
170
170
  ...props
171
- }: ButtonProps): react_jsx_runtime51.JSX.Element;
171
+ }: ButtonProps): react_jsx_runtime45.JSX.Element;
172
172
  //#endregion
173
173
  export { ButtonProps as n, Button as t };
174
- //# sourceMappingURL=button-C76drZpd.d.mts.map
174
+ //# sourceMappingURL=button-BnbtzQAN.d.mts.map
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime46 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime33 from "react/jsx-runtime";
2
2
  import * as class_variance_authority_types14 from "class-variance-authority/types";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
 
@@ -168,7 +168,7 @@ declare function Button({
168
168
  type,
169
169
  innerClassName,
170
170
  ...props
171
- }: ButtonProps): react_jsx_runtime46.JSX.Element;
171
+ }: ButtonProps): react_jsx_runtime33.JSX.Element;
172
172
  //#endregion
173
173
  export { ButtonProps as n, Button as t };
174
- //# sourceMappingURL=button-Bn54lPVz.d.cts.map
174
+ //# sourceMappingURL=button-Ckjev2AT.d.cts.map
@@ -1,2 +1,2 @@
1
1
  const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./button.variants-tnhb123u.cjs`),n=require(`./button-CwDT3m4m.cjs`);let r=require(`lucide-react`),i=require(`react`),a=require(`react/jsx-runtime`),o=require(`@customafk/react-toolkit/utils`),s=require(`react-day-picker`);const c=({rootRef:e,className:t,...n})=>(0,a.jsx)(`div`,{"data-slot":`calendar`,ref:e,className:(0,o.cn)(t),...n}),l=e=>e.orientation===`left`?(0,a.jsx)(r.ChevronLeftIcon,{size:16,className:e.className,...e}):e.orientation===`right`?(0,a.jsx)(r.ChevronRightIcon,{size:16,className:e.className,...e}):(0,a.jsx)(r.ChevronDownIcon,{size:16,className:e.className,...e}),u=({className:e,day:t,modifiers:r,color:c,...l})=>{let u=(0,s.getDefaultClassNames)(),d=(0,i.useRef)(null);return(0,i.useEffect)(()=>{r.focused&&d.current?.focus()},[r.focused]),(0,a.jsx)(n.t,{ref:d,variant:`ghost`,color:`muted`,"data-day":t.date.toLocaleDateString(),"data-selected-single":r.selected&&!r.range_start&&!r.range_end&&!r.range_middle,"data-range-start":r.range_start,"data-range-end":r.range_end,"data-range-middle":r.range_middle,className:(0,o.cn)(`flex aspect-square size-9 flex-col rounded font-normal text-sm tabular-nums leading-none`,`data-[selected-single=true]:bg-primary`,`data-[selected-single=true]:text-white`,`data-[range-middle=true]:bg-muted-muted`,`data-[range-middle=true]:text-text-positive`,`data-[range-start=true]:bg-primary-muted`,`data-[range-start=true]:text-text-positive-strong`,`data-[range-end=true]:bg-primary`,`data-[range-end=true]:text-text-positive-strong`,`group-data-[focused=true]/day:border-primary-strong`,`group-data-[focused=true]/day:relative`,`group-data-[focused=true]/day:z-10`,`data-[range-end=true]:rounded`,`data-[range-end=true]:rounded-r`,`data-[range-middle=true]:rounded-none`,`data-[range-start=true]:rounded`,`data-[range-start=true]:rounded-l`,`[&>span]:text-xs [&>span]:opacity-70`,u.day,e),...l})},d=({children:e,...t})=>(0,a.jsx)(`td`,{...t,children:(0,a.jsx)(`div`,{className:`flex size-(--cell-size) items-center justify-center text-center`,children:e})});function f({className:e,classNames:n,showOutsideDays:r=!0,captionLayout:i=`label`,buttonVariant:f=`ghost`,formatters:p,components:m,...h}){let g=(0,s.getDefaultClassNames)();return(0,a.jsx)(s.DayPicker,{showOutsideDays:r,className:(0,o.cn)(`group/calendar bg-background p-3`,`[--cell-size:--spacing(8)]`,`in-data-[slot=card-content]:bg-transparent`,`in-data-[slot=popover-content]:bg-transparent`,String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,e),captionLayout:i,formatters:{formatMonthDropdown:e=>e.toLocaleString(`default`,{month:`short`}),...p},classNames:{root:(0,o.cn)(g.root),months:(0,o.cn)(`flex gap-4 flex-col md:flex-row relative`,g.months),month:(0,o.cn)(`flex flex-col w-full gap-4`,g.month),nav:(0,o.cn)(`flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between`,g.nav),button_previous:(0,o.cn)(t.n({variant:`outline`,color:`muted`}),`size-(--cell-size) aria-disabled:opacity-50 p-0 select-none`,g.button_previous),button_next:(0,o.cn)(t.n({variant:`outline`,color:`muted`}),`size-(--cell-size) aria-disabled:opacity-50 p-0 select-none`,g.button_next),month_caption:(0,o.cn)(`flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)`,g.month_caption),dropdowns:(0,o.cn)(`w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5`,g.dropdowns),dropdown_root:(0,o.cn)(`relative has-focus:border-primary-strong border border-border-weak shadow-xs has-focus:ring-primary-weak has-focus:ring-[3px] rounded`,g.dropdown_root),dropdown:(0,o.cn)(`absolute inset-0 opacity-0`,g.dropdown),caption_label:(0,o.cn)(`select-none font-medium`,i===`label`&&`text-sm`,i!==`label`&&`rounded shadow-xs px-2 flex items-center gap-0.5 text-sm h-8 [&>svg]:text-text-positive [&>svg]:size-3.5`,g.caption_label),table:`w-full border-collapse`,weekdays:(0,o.cn)(`flex`,g.weekdays),weekday:(0,o.cn)(`text-text-positive rounded flex-1 font-normal text-[0.8rem] select-none`,g.weekday),week:(0,o.cn)(`flex w-full mt-2`,g.week),week_number_header:(0,o.cn)(`select-none w-(--cell-size)`,g.week_number_header),week_number:(0,o.cn)(`text-[0.8rem] select-none text-text-positive`,g.week_number),day:(0,o.cn)(`relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l [&:last-child[data-selected=true]_button]:rounded-r group/day aspect-square select-none`,g.day),range_start:(0,o.cn)(`rounded-l bg-muted-muted`,g.range_start),range_middle:(0,o.cn)(`rounded-none`,g.range_middle),range_end:(0,o.cn)(`rounded-r bg-muted-muted`,g.range_end),today:(0,o.cn)(`bg-muted-muted text-text-positive rounded data-[selected=true]:rounded-none`,g.today),outside:(0,o.cn)(`[&>button]:text-text-positive-muted aria-selected:text-text-positive`),disabled:(0,o.cn)(`bg-muted-muted text-text-positive opacity-50`,g.disabled),hidden:(0,o.cn)(`invisible`,g.hidden),...n},components:{Root:c,Chevron:l,DayButton:u,WeekNumber:d,...m},...h})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
2
- //# sourceMappingURL=calendar-CyAPpT2m.cjs.map
2
+ //# sourceMappingURL=calendar-B2V4Lv0T.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-CyAPpT2m.cjs","names":["ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","Button","DayPicker","buttonVariants"],"sources":["../packages/components/ui/calendar.tsx"],"sourcesContent":["'use client';\nimport { type HTMLAttributes, type ThHTMLAttributes, useEffect, useRef } from 'react';\n\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { buttonVariants } from '@/components/ui/button.variants';\n\nimport { type CalendarWeek, type CustomComponents, type DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nconst CalendarRoot = ({\n rootRef,\n className,\n ...props\n}: {\n rootRef?: React.Ref<HTMLDivElement>;\n} & HTMLAttributes<HTMLDivElement>) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n};\n\nconst CalendarChevron = (props: { className?: string; size?: number; disabled?: boolean; orientation?: 'up' | 'down' | 'left' | 'right' }) => {\n if (props.orientation === 'left') {\n return <ChevronLeftIcon size={16} className={props.className} {...props} />;\n }\n\n if (props.orientation === 'right') {\n return <ChevronRightIcon size={16} className={props.className} {...props} />;\n }\n\n return <ChevronDownIcon size={16} className={props.className} {...props} />;\n};\n\nconst CalendarDayButton = ({ className, day, modifiers, color: _, ...props }: React.ComponentProps<typeof DayButton>) => {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n color=\"muted\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle}\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'flex aspect-square size-9 flex-col rounded font-normal text-sm tabular-nums leading-none',\n 'data-[selected-single=true]:bg-primary',\n 'data-[selected-single=true]:text-white',\n 'data-[range-middle=true]:bg-muted-muted',\n 'data-[range-middle=true]:text-text-positive',\n 'data-[range-start=true]:bg-primary-muted',\n 'data-[range-start=true]:text-text-positive-strong',\n 'data-[range-end=true]:bg-primary',\n 'data-[range-end=true]:text-text-positive-strong',\n 'group-data-[focused=true]/day:border-primary-strong',\n 'group-data-[focused=true]/day:relative',\n 'group-data-[focused=true]/day:z-10',\n 'data-[range-end=true]:rounded',\n 'data-[range-end=true]:rounded-r',\n 'data-[range-middle=true]:rounded-none',\n 'data-[range-start=true]:rounded',\n 'data-[range-start=true]:rounded-l',\n '[&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n};\n\nconst CalendarWeekNumber = ({\n children,\n ...props\n}: {\n week: CalendarWeek;\n} & ThHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">{children}</div>\n </td>\n );\n};\n\n/**\n * A fully styled date-picker calendar built on top of react-day-picker, supporting single, range, and multiple selection modes.\n *\n * @example\n * ```tsx\n * import { Calendar } from '@customafk/lunas-ui/ui/calendar';\n *\n * const [date, setDate] = React.useState<Date>();\n *\n * <Calendar\n * mode=\"single\"\n * selected={date}\n * onSelect={setDate}\n * captionLayout=\"dropdown\"\n * />\n * ```\n */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Variant applied to the previous/next navigation buttons. */\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'group/calendar bg-background p-3',\n '[--cell-size:--spacing(8)]',\n 'in-data-[slot=card-content]:bg-transparent',\n 'in-data-[slot=popover-content]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn(defaultClassNames.root),\n months: cn('flex gap-4 flex-col md:flex-row relative', defaultClassNames.months),\n month: cn('flex flex-col w-full gap-4', defaultClassNames.month),\n nav: cn('flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between', defaultClassNames.nav),\n button_previous: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_next\n ),\n month_caption: cn('flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)', defaultClassNames.month_caption),\n dropdowns: cn('w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5', defaultClassNames.dropdowns),\n dropdown_root: cn(\n 'relative has-focus:border-primary-strong border border-border-weak shadow-xs has-focus:ring-primary-weak has-focus:ring-[3px] rounded',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label' && 'text-sm',\n captionLayout !== 'label' && 'rounded shadow-xs px-2 flex items-center gap-0.5 text-sm h-8 [&>svg]:text-text-positive [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn('text-text-positive rounded flex-1 font-normal text-[0.8rem] select-none', defaultClassNames.weekday),\n week: cn('flex w-full mt-2', defaultClassNames.week),\n week_number_header: cn('select-none w-(--cell-size)', defaultClassNames.week_number_header),\n week_number: cn('text-[0.8rem] select-none text-text-positive', defaultClassNames.week_number),\n day: cn(\n 'relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l [&:last-child[data-selected=true]_button]:rounded-r group/day aspect-square select-none',\n defaultClassNames.day\n ),\n range_start: cn('rounded-l bg-muted-muted', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('rounded-r bg-muted-muted', defaultClassNames.range_end),\n today: cn('bg-muted-muted text-text-positive rounded data-[selected=true]:rounded-none', defaultClassNames.today),\n outside: cn('[&>button]:text-text-positive-muted aria-selected:text-text-positive'),\n disabled: cn('bg-muted-muted text-text-positive opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: CalendarRoot as CustomComponents['Root'],\n Chevron: CalendarChevron as CustomComponents['Chevron'],\n DayButton: CalendarDayButton as CustomComponents['DayButton'],\n WeekNumber: CalendarWeekNumber as CustomComponents['WeekNumber'],\n ...components,\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
1
+ {"version":3,"file":"calendar-B2V4Lv0T.cjs","names":["ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","Button","DayPicker","buttonVariants"],"sources":["../packages/components/ui/calendar.tsx"],"sourcesContent":["'use client';\nimport { type HTMLAttributes, type ThHTMLAttributes, useEffect, useRef } from 'react';\n\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { buttonVariants } from '@/components/ui/button.variants';\n\nimport { type CalendarWeek, type CustomComponents, type DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nconst CalendarRoot = ({\n rootRef,\n className,\n ...props\n}: {\n rootRef?: React.Ref<HTMLDivElement>;\n} & HTMLAttributes<HTMLDivElement>) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n};\n\nconst CalendarChevron = (props: { className?: string; size?: number; disabled?: boolean; orientation?: 'up' | 'down' | 'left' | 'right' }) => {\n if (props.orientation === 'left') {\n return <ChevronLeftIcon size={16} className={props.className} {...props} />;\n }\n\n if (props.orientation === 'right') {\n return <ChevronRightIcon size={16} className={props.className} {...props} />;\n }\n\n return <ChevronDownIcon size={16} className={props.className} {...props} />;\n};\n\nconst CalendarDayButton = ({ className, day, modifiers, color: _, ...props }: React.ComponentProps<typeof DayButton>) => {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n color=\"muted\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle}\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'flex aspect-square size-9 flex-col rounded font-normal text-sm tabular-nums leading-none',\n 'data-[selected-single=true]:bg-primary',\n 'data-[selected-single=true]:text-white',\n 'data-[range-middle=true]:bg-muted-muted',\n 'data-[range-middle=true]:text-text-positive',\n 'data-[range-start=true]:bg-primary-muted',\n 'data-[range-start=true]:text-text-positive-strong',\n 'data-[range-end=true]:bg-primary',\n 'data-[range-end=true]:text-text-positive-strong',\n 'group-data-[focused=true]/day:border-primary-strong',\n 'group-data-[focused=true]/day:relative',\n 'group-data-[focused=true]/day:z-10',\n 'data-[range-end=true]:rounded',\n 'data-[range-end=true]:rounded-r',\n 'data-[range-middle=true]:rounded-none',\n 'data-[range-start=true]:rounded',\n 'data-[range-start=true]:rounded-l',\n '[&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n};\n\nconst CalendarWeekNumber = ({\n children,\n ...props\n}: {\n week: CalendarWeek;\n} & ThHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">{children}</div>\n </td>\n );\n};\n\n/**\n * A fully styled date-picker calendar built on top of react-day-picker, supporting single, range, and multiple selection modes.\n *\n * @example\n * ```tsx\n * import { Calendar } from '@customafk/lunas-ui/ui/calendar';\n *\n * const [date, setDate] = React.useState<Date>();\n *\n * <Calendar\n * mode=\"single\"\n * selected={date}\n * onSelect={setDate}\n * captionLayout=\"dropdown\"\n * />\n * ```\n */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Variant applied to the previous/next navigation buttons. */\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'group/calendar bg-background p-3',\n '[--cell-size:--spacing(8)]',\n 'in-data-[slot=card-content]:bg-transparent',\n 'in-data-[slot=popover-content]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn(defaultClassNames.root),\n months: cn('flex gap-4 flex-col md:flex-row relative', defaultClassNames.months),\n month: cn('flex flex-col w-full gap-4', defaultClassNames.month),\n nav: cn('flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between', defaultClassNames.nav),\n button_previous: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_next\n ),\n month_caption: cn('flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)', defaultClassNames.month_caption),\n dropdowns: cn('w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5', defaultClassNames.dropdowns),\n dropdown_root: cn(\n 'relative has-focus:border-primary-strong border border-border-weak shadow-xs has-focus:ring-primary-weak has-focus:ring-[3px] rounded',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label' && 'text-sm',\n captionLayout !== 'label' && 'rounded shadow-xs px-2 flex items-center gap-0.5 text-sm h-8 [&>svg]:text-text-positive [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn('text-text-positive rounded flex-1 font-normal text-[0.8rem] select-none', defaultClassNames.weekday),\n week: cn('flex w-full mt-2', defaultClassNames.week),\n week_number_header: cn('select-none w-(--cell-size)', defaultClassNames.week_number_header),\n week_number: cn('text-[0.8rem] select-none text-text-positive', defaultClassNames.week_number),\n day: cn(\n 'relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l [&:last-child[data-selected=true]_button]:rounded-r group/day aspect-square select-none',\n defaultClassNames.day\n ),\n range_start: cn('rounded-l bg-muted-muted', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('rounded-r bg-muted-muted', defaultClassNames.range_end),\n today: cn('bg-muted-muted text-text-positive rounded data-[selected=true]:rounded-none', defaultClassNames.today),\n outside: cn('[&>button]:text-text-positive-muted aria-selected:text-text-positive'),\n disabled: cn('bg-muted-muted text-text-positive opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: CalendarRoot as CustomComponents['Root'],\n Chevron: CalendarChevron as CustomComponents['Chevron'],\n DayButton: CalendarDayButton as CustomComponents['DayButton'],\n WeekNumber: CalendarWeekNumber as CustomComponents['WeekNumber'],\n ...components,\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import{n as e}from"./button.variants-DeCyas1F.mjs";import{t}from"./button-C6ybzxxj.mjs";import{ChevronDownIcon as n,ChevronLeftIcon as r,ChevronRightIcon as i}from"lucide-react";import{useEffect as a,useRef as o}from"react";import{jsx as s}from"react/jsx-runtime";import{cn as c}from"@customafk/react-toolkit/utils";import{DayPicker as l,getDefaultClassNames as u}from"react-day-picker";const d=({rootRef:e,className:t,...n})=>s(`div`,{"data-slot":`calendar`,ref:e,className:c(t),...n}),f=e=>e.orientation===`left`?s(r,{size:16,className:e.className,...e}):e.orientation===`right`?s(i,{size:16,className:e.className,...e}):s(n,{size:16,className:e.className,...e}),p=({className:e,day:n,modifiers:r,color:i,...l})=>{let d=u(),f=o(null);return a(()=>{r.focused&&f.current?.focus()},[r.focused]),s(t,{ref:f,variant:`ghost`,color:`muted`,"data-day":n.date.toLocaleDateString(),"data-selected-single":r.selected&&!r.range_start&&!r.range_end&&!r.range_middle,"data-range-start":r.range_start,"data-range-end":r.range_end,"data-range-middle":r.range_middle,className:c(`flex aspect-square size-9 flex-col rounded font-normal text-sm tabular-nums leading-none`,`data-[selected-single=true]:bg-primary`,`data-[selected-single=true]:text-white`,`data-[range-middle=true]:bg-muted-muted`,`data-[range-middle=true]:text-text-positive`,`data-[range-start=true]:bg-primary-muted`,`data-[range-start=true]:text-text-positive-strong`,`data-[range-end=true]:bg-primary`,`data-[range-end=true]:text-text-positive-strong`,`group-data-[focused=true]/day:border-primary-strong`,`group-data-[focused=true]/day:relative`,`group-data-[focused=true]/day:z-10`,`data-[range-end=true]:rounded`,`data-[range-end=true]:rounded-r`,`data-[range-middle=true]:rounded-none`,`data-[range-start=true]:rounded`,`data-[range-start=true]:rounded-l`,`[&>span]:text-xs [&>span]:opacity-70`,d.day,e),...l})},m=({children:e,...t})=>s(`td`,{...t,children:s(`div`,{className:`flex size-(--cell-size) items-center justify-center text-center`,children:e})});function h({className:t,classNames:n,showOutsideDays:r=!0,captionLayout:i=`label`,buttonVariant:a=`ghost`,formatters:o,components:h,...g}){let _=u();return s(l,{showOutsideDays:r,className:c(`group/calendar bg-background p-3`,`[--cell-size:--spacing(8)]`,`in-data-[slot=card-content]:bg-transparent`,`in-data-[slot=popover-content]:bg-transparent`,String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:i,formatters:{formatMonthDropdown:e=>e.toLocaleString(`default`,{month:`short`}),...o},classNames:{root:c(_.root),months:c(`flex gap-4 flex-col md:flex-row relative`,_.months),month:c(`flex flex-col w-full gap-4`,_.month),nav:c(`flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between`,_.nav),button_previous:c(e({variant:`outline`,color:`muted`}),`size-(--cell-size) aria-disabled:opacity-50 p-0 select-none`,_.button_previous),button_next:c(e({variant:`outline`,color:`muted`}),`size-(--cell-size) aria-disabled:opacity-50 p-0 select-none`,_.button_next),month_caption:c(`flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)`,_.month_caption),dropdowns:c(`w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5`,_.dropdowns),dropdown_root:c(`relative has-focus:border-primary-strong border border-border-weak shadow-xs has-focus:ring-primary-weak has-focus:ring-[3px] rounded`,_.dropdown_root),dropdown:c(`absolute inset-0 opacity-0`,_.dropdown),caption_label:c(`select-none font-medium`,i===`label`&&`text-sm`,i!==`label`&&`rounded shadow-xs px-2 flex items-center gap-0.5 text-sm h-8 [&>svg]:text-text-positive [&>svg]:size-3.5`,_.caption_label),table:`w-full border-collapse`,weekdays:c(`flex`,_.weekdays),weekday:c(`text-text-positive rounded flex-1 font-normal text-[0.8rem] select-none`,_.weekday),week:c(`flex w-full mt-2`,_.week),week_number_header:c(`select-none w-(--cell-size)`,_.week_number_header),week_number:c(`text-[0.8rem] select-none text-text-positive`,_.week_number),day:c(`relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l [&:last-child[data-selected=true]_button]:rounded-r group/day aspect-square select-none`,_.day),range_start:c(`rounded-l bg-muted-muted`,_.range_start),range_middle:c(`rounded-none`,_.range_middle),range_end:c(`rounded-r bg-muted-muted`,_.range_end),today:c(`bg-muted-muted text-text-positive rounded data-[selected=true]:rounded-none`,_.today),outside:c(`[&>button]:text-text-positive-muted aria-selected:text-text-positive`),disabled:c(`bg-muted-muted text-text-positive opacity-50`,_.disabled),hidden:c(`invisible`,_.hidden),...n},components:{Root:d,Chevron:f,DayButton:p,WeekNumber:m,...h},...g})}export{p as n,h as t};
2
- //# sourceMappingURL=calendar-JKxWM6AF.mjs.map
2
+ //# sourceMappingURL=calendar-Cw1G0sVL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-JKxWM6AF.mjs","names":[],"sources":["../packages/components/ui/calendar.tsx"],"sourcesContent":["'use client';\nimport { type HTMLAttributes, type ThHTMLAttributes, useEffect, useRef } from 'react';\n\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { buttonVariants } from '@/components/ui/button.variants';\n\nimport { type CalendarWeek, type CustomComponents, type DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nconst CalendarRoot = ({\n rootRef,\n className,\n ...props\n}: {\n rootRef?: React.Ref<HTMLDivElement>;\n} & HTMLAttributes<HTMLDivElement>) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n};\n\nconst CalendarChevron = (props: { className?: string; size?: number; disabled?: boolean; orientation?: 'up' | 'down' | 'left' | 'right' }) => {\n if (props.orientation === 'left') {\n return <ChevronLeftIcon size={16} className={props.className} {...props} />;\n }\n\n if (props.orientation === 'right') {\n return <ChevronRightIcon size={16} className={props.className} {...props} />;\n }\n\n return <ChevronDownIcon size={16} className={props.className} {...props} />;\n};\n\nconst CalendarDayButton = ({ className, day, modifiers, color: _, ...props }: React.ComponentProps<typeof DayButton>) => {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n color=\"muted\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle}\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'flex aspect-square size-9 flex-col rounded font-normal text-sm tabular-nums leading-none',\n 'data-[selected-single=true]:bg-primary',\n 'data-[selected-single=true]:text-white',\n 'data-[range-middle=true]:bg-muted-muted',\n 'data-[range-middle=true]:text-text-positive',\n 'data-[range-start=true]:bg-primary-muted',\n 'data-[range-start=true]:text-text-positive-strong',\n 'data-[range-end=true]:bg-primary',\n 'data-[range-end=true]:text-text-positive-strong',\n 'group-data-[focused=true]/day:border-primary-strong',\n 'group-data-[focused=true]/day:relative',\n 'group-data-[focused=true]/day:z-10',\n 'data-[range-end=true]:rounded',\n 'data-[range-end=true]:rounded-r',\n 'data-[range-middle=true]:rounded-none',\n 'data-[range-start=true]:rounded',\n 'data-[range-start=true]:rounded-l',\n '[&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n};\n\nconst CalendarWeekNumber = ({\n children,\n ...props\n}: {\n week: CalendarWeek;\n} & ThHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">{children}</div>\n </td>\n );\n};\n\n/**\n * A fully styled date-picker calendar built on top of react-day-picker, supporting single, range, and multiple selection modes.\n *\n * @example\n * ```tsx\n * import { Calendar } from '@customafk/lunas-ui/ui/calendar';\n *\n * const [date, setDate] = React.useState<Date>();\n *\n * <Calendar\n * mode=\"single\"\n * selected={date}\n * onSelect={setDate}\n * captionLayout=\"dropdown\"\n * />\n * ```\n */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Variant applied to the previous/next navigation buttons. */\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'group/calendar bg-background p-3',\n '[--cell-size:--spacing(8)]',\n 'in-data-[slot=card-content]:bg-transparent',\n 'in-data-[slot=popover-content]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn(defaultClassNames.root),\n months: cn('flex gap-4 flex-col md:flex-row relative', defaultClassNames.months),\n month: cn('flex flex-col w-full gap-4', defaultClassNames.month),\n nav: cn('flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between', defaultClassNames.nav),\n button_previous: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_next\n ),\n month_caption: cn('flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)', defaultClassNames.month_caption),\n dropdowns: cn('w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5', defaultClassNames.dropdowns),\n dropdown_root: cn(\n 'relative has-focus:border-primary-strong border border-border-weak shadow-xs has-focus:ring-primary-weak has-focus:ring-[3px] rounded',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label' && 'text-sm',\n captionLayout !== 'label' && 'rounded shadow-xs px-2 flex items-center gap-0.5 text-sm h-8 [&>svg]:text-text-positive [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn('text-text-positive rounded flex-1 font-normal text-[0.8rem] select-none', defaultClassNames.weekday),\n week: cn('flex w-full mt-2', defaultClassNames.week),\n week_number_header: cn('select-none w-(--cell-size)', defaultClassNames.week_number_header),\n week_number: cn('text-[0.8rem] select-none text-text-positive', defaultClassNames.week_number),\n day: cn(\n 'relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l [&:last-child[data-selected=true]_button]:rounded-r group/day aspect-square select-none',\n defaultClassNames.day\n ),\n range_start: cn('rounded-l bg-muted-muted', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('rounded-r bg-muted-muted', defaultClassNames.range_end),\n today: cn('bg-muted-muted text-text-positive rounded data-[selected=true]:rounded-none', defaultClassNames.today),\n outside: cn('[&>button]:text-text-positive-muted aria-selected:text-text-positive'),\n disabled: cn('bg-muted-muted text-text-positive opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: CalendarRoot as CustomComponents['Root'],\n Chevron: CalendarChevron as CustomComponents['Chevron'],\n DayButton: CalendarDayButton as CustomComponents['DayButton'],\n WeekNumber: CalendarWeekNumber as CustomComponents['WeekNumber'],\n ...components,\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
1
+ {"version":3,"file":"calendar-Cw1G0sVL.mjs","names":[],"sources":["../packages/components/ui/calendar.tsx"],"sourcesContent":["'use client';\nimport { type HTMLAttributes, type ThHTMLAttributes, useEffect, useRef } from 'react';\n\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Button } from '@/components/ui/button';\nimport { buttonVariants } from '@/components/ui/button.variants';\n\nimport { type CalendarWeek, type CustomComponents, type DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nconst CalendarRoot = ({\n rootRef,\n className,\n ...props\n}: {\n rootRef?: React.Ref<HTMLDivElement>;\n} & HTMLAttributes<HTMLDivElement>) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n};\n\nconst CalendarChevron = (props: { className?: string; size?: number; disabled?: boolean; orientation?: 'up' | 'down' | 'left' | 'right' }) => {\n if (props.orientation === 'left') {\n return <ChevronLeftIcon size={16} className={props.className} {...props} />;\n }\n\n if (props.orientation === 'right') {\n return <ChevronRightIcon size={16} className={props.className} {...props} />;\n }\n\n return <ChevronDownIcon size={16} className={props.className} {...props} />;\n};\n\nconst CalendarDayButton = ({ className, day, modifiers, color: _, ...props }: React.ComponentProps<typeof DayButton>) => {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n color=\"muted\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle}\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'flex aspect-square size-9 flex-col rounded font-normal text-sm tabular-nums leading-none',\n 'data-[selected-single=true]:bg-primary',\n 'data-[selected-single=true]:text-white',\n 'data-[range-middle=true]:bg-muted-muted',\n 'data-[range-middle=true]:text-text-positive',\n 'data-[range-start=true]:bg-primary-muted',\n 'data-[range-start=true]:text-text-positive-strong',\n 'data-[range-end=true]:bg-primary',\n 'data-[range-end=true]:text-text-positive-strong',\n 'group-data-[focused=true]/day:border-primary-strong',\n 'group-data-[focused=true]/day:relative',\n 'group-data-[focused=true]/day:z-10',\n 'data-[range-end=true]:rounded',\n 'data-[range-end=true]:rounded-r',\n 'data-[range-middle=true]:rounded-none',\n 'data-[range-start=true]:rounded',\n 'data-[range-start=true]:rounded-l',\n '[&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n};\n\nconst CalendarWeekNumber = ({\n children,\n ...props\n}: {\n week: CalendarWeek;\n} & ThHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">{children}</div>\n </td>\n );\n};\n\n/**\n * A fully styled date-picker calendar built on top of react-day-picker, supporting single, range, and multiple selection modes.\n *\n * @example\n * ```tsx\n * import { Calendar } from '@customafk/lunas-ui/ui/calendar';\n *\n * const [date, setDate] = React.useState<Date>();\n *\n * <Calendar\n * mode=\"single\"\n * selected={date}\n * onSelect={setDate}\n * captionLayout=\"dropdown\"\n * />\n * ```\n */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Variant applied to the previous/next navigation buttons. */\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'group/calendar bg-background p-3',\n '[--cell-size:--spacing(8)]',\n 'in-data-[slot=card-content]:bg-transparent',\n 'in-data-[slot=popover-content]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn(defaultClassNames.root),\n months: cn('flex gap-4 flex-col md:flex-row relative', defaultClassNames.months),\n month: cn('flex flex-col w-full gap-4', defaultClassNames.month),\n nav: cn('flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between', defaultClassNames.nav),\n button_previous: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', color: 'muted' }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_next\n ),\n month_caption: cn('flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)', defaultClassNames.month_caption),\n dropdowns: cn('w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5', defaultClassNames.dropdowns),\n dropdown_root: cn(\n 'relative has-focus:border-primary-strong border border-border-weak shadow-xs has-focus:ring-primary-weak has-focus:ring-[3px] rounded',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label' && 'text-sm',\n captionLayout !== 'label' && 'rounded shadow-xs px-2 flex items-center gap-0.5 text-sm h-8 [&>svg]:text-text-positive [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn('text-text-positive rounded flex-1 font-normal text-[0.8rem] select-none', defaultClassNames.weekday),\n week: cn('flex w-full mt-2', defaultClassNames.week),\n week_number_header: cn('select-none w-(--cell-size)', defaultClassNames.week_number_header),\n week_number: cn('text-[0.8rem] select-none text-text-positive', defaultClassNames.week_number),\n day: cn(\n 'relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l [&:last-child[data-selected=true]_button]:rounded-r group/day aspect-square select-none',\n defaultClassNames.day\n ),\n range_start: cn('rounded-l bg-muted-muted', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('rounded-r bg-muted-muted', defaultClassNames.range_end),\n today: cn('bg-muted-muted text-text-positive rounded data-[selected=true]:rounded-none', defaultClassNames.today),\n outside: cn('[&>button]:text-text-positive-muted aria-selected:text-text-positive'),\n disabled: cn('bg-muted-muted text-text-positive opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: CalendarRoot as CustomComponents['Root'],\n Chevron: CalendarChevron as CustomComponents['Chevron'],\n DayButton: CalendarDayButton as CustomComponents['DayButton'],\n WeekNumber: CalendarWeekNumber as CustomComponents['WeekNumber'],\n ...components,\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`lucide-react`),n=require(`react/jsx-runtime`),r=require(`@customafk/react-toolkit/utils`),i=require(`radix-ui`);function a({className:e,...a}){return(0,n.jsx)(i.Checkbox.Root,{"data-slot":`checkbox`,className:(0,r.cn)(`peer border-border`,`size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all`,`disabled:cursor-not-allowed disabled:opacity-50`,`focus-visible:border-primary-strong`,`focus-visible:ring-3`,`focus-visible:ring-primary-weak`,`aria-invalid:border-danger aria-invalid:ring-danger-weak`,`aria-readonly:bg-muted-muted`,`aria-readonly:pointer-events-none`,`data-[state=checked]:aria-readonly:bg-muted-muted`,`data-[state=checked]:aria-readonly:border-border`,`data-[state=checked]:aria-readonly:text-text-positive-strong`,`data-[state=checked]:bg-primary`,`data-[state=checked]:border-primary-strong`,`data-[state=checked]:text-text-negative-strong`,e),...a,children:(0,n.jsx)(i.Checkbox.Indicator,{"data-slot":`checkbox-indicator`,className:`flex items-center justify-center text-current transition-none`,children:(0,n.jsx)(t.CheckIcon,{size:14})})})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=checkbox-RZrRNYP2.cjs.map
2
+ //# sourceMappingURL=checkbox-Di7ACavC.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-RZrRNYP2.cjs","names":["CheckboxPrimitive","CheckIcon"],"sources":["../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"uKAsBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAAA,EAAA,KAACA,EAAAA,SAAkB,KAAA,CACjB,YAAU,WACV,WAAA,EAAA,EAAA,IACE,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,EACD,CACD,GAAI,YAEJ,EAAA,EAAA,KAACA,EAAAA,SAAkB,UAAA,CAAU,YAAU,qBAAqB,UAAU,0EACpE,EAAA,EAAA,KAACC,EAAAA,UAAAA,CAAU,KAAM,GAAA,CAAM,EACK,EACP"}
1
+ {"version":3,"file":"checkbox-Di7ACavC.cjs","names":["CheckboxPrimitive","CheckIcon"],"sources":["../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"uKAsBA,SAAS,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAAA,EAAA,KAACA,EAAAA,SAAkB,KAAA,CACjB,YAAU,WACV,WAAA,EAAA,EAAA,IACE,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,EACD,CACD,GAAI,YAEJ,EAAA,EAAA,KAACA,EAAAA,SAAkB,UAAA,CAAU,YAAU,qBAAqB,UAAU,0EACpE,EAAA,EAAA,KAACC,EAAAA,UAAAA,CAAU,KAAM,GAAA,CAAM,EACK,EACP"}
@@ -1,2 +1,2 @@
1
1
  import{CheckIcon as e}from"lucide-react";import{jsx as t}from"react/jsx-runtime";import{cn as n}from"@customafk/react-toolkit/utils";import{Checkbox as r}from"radix-ui";function i({className:i,...a}){return t(r.Root,{"data-slot":`checkbox`,className:n(`peer border-border`,`size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all`,`disabled:cursor-not-allowed disabled:opacity-50`,`focus-visible:border-primary-strong`,`focus-visible:ring-3`,`focus-visible:ring-primary-weak`,`aria-invalid:border-danger aria-invalid:ring-danger-weak`,`aria-readonly:bg-muted-muted`,`aria-readonly:pointer-events-none`,`data-[state=checked]:aria-readonly:bg-muted-muted`,`data-[state=checked]:aria-readonly:border-border`,`data-[state=checked]:aria-readonly:text-text-positive-strong`,`data-[state=checked]:bg-primary`,`data-[state=checked]:border-primary-strong`,`data-[state=checked]:text-text-negative-strong`,i),...a,children:t(r.Indicator,{"data-slot":`checkbox-indicator`,className:`flex items-center justify-center text-current transition-none`,children:t(e,{size:14})})})}export{i as t};
2
- //# sourceMappingURL=checkbox-DJEdYOjA.mjs.map
2
+ //# sourceMappingURL=checkbox-Dzo6oI4y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-DJEdYOjA.mjs","names":["Checkbox","CheckboxPrimitive"],"sources":["../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"yKAsBA,SAASA,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAACC,EAAkB,KAAA,CACjB,YAAU,WACV,UAAW,EACT,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,EACD,CACD,GAAI,WAEJ,EAACA,EAAkB,UAAA,CAAU,YAAU,qBAAqB,UAAU,yEACpE,EAAC,EAAA,CAAU,KAAM,GAAA,CAAM,EACK,EACP"}
1
+ {"version":3,"file":"checkbox-Dzo6oI4y.mjs","names":["Checkbox","CheckboxPrimitive"],"sources":["../packages/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\n/**\n * Accessible checkbox input built on Radix UI's Checkbox primitive with checked, indeterminate, focus, invalid, and read-only states.\n *\n * @example\n * ```tsx\n * import { Checkbox } from '@customafk/lunas-ui/ui/checkbox';\n * import { Label } from '@customafk/lunas-ui/ui/label';\n *\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n * </div>\n * ```\n */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-border',\n 'size-4 shrink-0 cursor-pointer rounded border shadow-xs outline-none transition-all',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-3',\n 'focus-visible:ring-primary-weak',\n 'aria-invalid:border-danger aria-invalid:ring-danger-weak',\n 'aria-readonly:bg-muted-muted',\n 'aria-readonly:pointer-events-none',\n 'data-[state=checked]:aria-readonly:bg-muted-muted',\n 'data-[state=checked]:aria-readonly:border-border',\n 'data-[state=checked]:aria-readonly:text-text-positive-strong',\n 'data-[state=checked]:bg-primary',\n 'data-[state=checked]:border-primary-strong',\n 'data-[state=checked]:text-text-negative-strong',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator data-slot=\"checkbox-indicator\" className=\"flex items-center justify-center text-current transition-none\">\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":"yKAsBA,SAASA,EAAS,CAAE,YAAW,GAAG,GAA8D,CAC9F,OACE,EAACC,EAAkB,KAAA,CACjB,YAAU,WACV,UAAW,EACT,qBACA,sFACA,kDACA,sCACA,uBACA,kCACA,2DACA,+BACA,oCACA,oDACA,mDACA,+DACA,kCACA,6CACA,iDACA,EACD,CACD,GAAI,WAEJ,EAACA,EAAkB,UAAA,CAAU,YAAU,qBAAqB,UAAU,yEACpE,EAAC,EAAA,CAAU,KAAM,GAAA,CAAM,EACK,EACP"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./dist-CIN9T2FB.mjs";import{t}from"./button-C6ybzxxj.mjs";import{i as n,n as r,r as i,t as a}from"./tooltip-Bj0iOG4s.mjs";import{t as o}from"./separator-BMsbHAVt.mjs";import{i as s,o as c,r as l,s as u,t as d}from"./sheet-DMIqn1iv.mjs";import{a as f,h as p,i as m,r as h,t as g}from"./dropdown-menu-DWSfXhHo.mjs";import{t as _}from"./input-Cd0G5y-9.mjs";import{EarthIcon as v,LogOutIcon as y,MenuIcon as b,ShoppingCartIcon as x}from"lucide-react";import{createContext as S,memo as C,useCallback as w,useContext as T,useEffect as E,useMemo as D,useState as O}from"react";import{jsx as k,jsxs as A}from"react/jsx-runtime";import{cn as j}from"@customafk/react-toolkit/utils";import{cva as M}from"class-variance-authority";import{useIsMobile as N}from"@customafk/react-toolkit/hooks/useMobile";const P=S(null);function F(){let e=T(P);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function I({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:a,children:o,...s}){let c=N(),[l,u]=O(!1),[d,f]=O(e),p=t??d,m=w(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,p]),h=w(()=>c?u(e=>!e):m(e=>!e),[c,m]);E(()=>{let e=e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),h())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h]);let g=p?`expanded`:`collapsed`,_=D(()=>({state:g,open:p,setOpen:m,isMobile:c,openMobile:l,setOpenMobile:u,toggleSidebar:h}),[g,p,m,c,l,h]);return k(P.Provider,{value:_,children:k(i,{delayDuration:0,children:k(`section`,{"data-slot":`layout-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...a},className:j(`relative group/sidebar-wrapper flex h-dvh bg-sidebar`,r),...s,children:o})})})}const L=C(({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o})=>{let{isMobile:f,state:p,openMobile:m,setOpenMobile:h,toggleSidebar:g}=F(),_=w(e=>{g(),e.preventDefault(),e.stopPropagation()},[g]);return r===`none`?k(`aside`,{"data-slot":`sidebar`,className:j(`flex w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,i),...o,children:a}):f?k(d,{open:m,onOpenChange:h,...o,children:A(l,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,style:{"--sidebar-width":`18rem`},side:e,className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden`,children:[A(c,{className:`sr-only`,children:[k(u,{children:`Sidebar`}),k(s,{children:`Displays the mobile sidebar.`})]}),A(`div`,{className:`flex size-full flex-col`,children:[A(`div`,{className:`flex flex-0 items-center gap-x-2 border-b border-border-weak p-2 pr-4`,children:[A(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:j(`size-10 rounded-full`,i),onClick:_,children:[k(b,{className:`size-6!`}),k(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),k(`div`,{className:`ml-2 flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:k(x,{size:20})}),A(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[k(`span`,{className:`truncate font-medium`,children:`Lunas Store`}),k(`span`,{className:`truncate text-xs`,children:`Established 2023`})]})]}),k(`div`,{className:`flex flex-1 flex-col p-2`,children:a})]})]})}):A(`aside`,{className:`group peer hidden bg-card text-sidebar-foreground md:block`,"data-state":p,"data-collapsible":p===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[k(`div`,{"data-slot":`sidebar-gap`,className:j(`bg-transparent`,`transition-[width] duration-200 ease-linear`,`h-(--header-height) sm:h-[calc(var(--header-height)+0.5rem)]`,`w-(--sidebar-width)`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`)}),k(`div`,{"data-slot":`sidebar-container`,className:j(`hidden md:flex shadow-nav`,`fixed left-0 inset-y-0 p-2`,`top-[calc(var(--header-height)+0.5rem)] z-10`,`w-(--sidebar-width)`,`transition-all duration-200 ease-linear`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`,i),...o,children:k(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:`relative flex size-full flex-col`,children:a})})]})});L.displayName=`CMSLayoutSidebar`;const R=C(({className:e,children:t,...n})=>A(`main`,{"data-slot":`sidebar-inset`,className:j(`relative flex w-full flex-1 flex-col`,e),...n,children:[k(`div`,{className:`h-(--header-height) sm:h-[calc(var(--header-height)+0.5rem)]`}),k(`div`,{className:`relative flex-1 size-full overflow-auto`,children:t})]}));R.displayName=`CMSLayoutMain`;const z=C(({className:e,...t})=>k(_,{"data-slot":`sidebar-input`,"data-sidebar":`input`,className:j(`h-8 w-full bg-background shadow-none`,e),...t}));z.displayName=`SidebarInput`;const B=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:j(`flex flex-col gap-2 p-2`,e),...t}));B.displayName=`SidebarHeader`;const V=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:j(`flex flex-col gap-2`,e),...t}));V.displayName=`SidebarFooter`;const H=C(({className:e,...t})=>k(o,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:j(`mx-2 w-auto bg-sidebar-border`,e),...t}));H.displayName=`SidebarSeparator`;const U=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:j(`flex flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t}));U.displayName=`SidebarContent`;const W=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:j(`relative flex w-full flex-col`,e),...t}));W.displayName=`SidebarGroup`;const G=C(({className:t,asChild:n=!1,...r})=>k(n?e:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:j(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,t),...r}));G.displayName=`SidebarGroupLabel`;const K=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:j(`w-full text-sm`,e),...t}));K.displayName=`SidebarGroupContent`;const q=C(({className:e,...t})=>k(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:j(`flex w-full min-w-0 flex-col gap-1`,e),...t}));q.displayName=`SidebarMenu`;const J=C(({className:e,...t})=>k(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:j(`group/menu-item relative`,e),...t}));J.displayName=`SidebarMenuItem`;const Y=M([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:p-3! group-data-[collapsible=icon]:gap-3!`,`[&>svg]:size-6 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-10 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}}),X=C(({asChild:t=!1,isActive:i=!1,variant:o=`default`,size:s=`default`,tooltip:c,className:l,...u})=>{let d=t?e:`button`,{isMobile:f,state:p}=F(),m=w(e=>{u.onClick?.(),e.preventDefault(),e.stopPropagation()},[u.onClick]),h=k(d,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":s,"data-active":i,className:j(Y({variant:o,size:s}),l),onClick:m,...u});return c?(typeof c==`string`&&(c={children:c}),A(a,{children:[k(n,{asChild:!0,children:h}),k(r,{side:`right`,align:`center`,hidden:p!==`collapsed`||f,...c})]})):h});X.displayName=`SidebarMenuButton`;const Z=({i18nText:e,onChangeToEnLocale:n,onChangeToViLocale:r})=>{let{toggleSidebar:i}=F(),a=w(e=>{e.preventDefault(),e.stopPropagation(),i()},[i]),o=w(e=>{e.preventDefault(),e.stopPropagation(),n?.()},[n]),s=w(e=>{e.preventDefault(),e.stopPropagation(),r?.()},[r]);return A(`header`,{"data-slot":`cms-layout-header`,className:j(`bg-card`,`h-(--header-height)`,`sm:h-[calc(var(--header-height)+0.5rem)] sm:px-4 sm:pr-6`,`absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-4.5`,`flex items-center shadow-nav`,`transition-[height] ease-linear`),children:[A(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:`size-10 rounded-full transition-all hover:text-text-positive`,onClick:a,children:[k(b,{className:`size-6!`}),k(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),A(`div`,{className:`flex flex-1 gap-x-2 sm:ml-2.5`,children:[k(`div`,{className:`flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:k(x,{size:20})}),A(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[k(`span`,{className:`truncate font-medium`,children:`Lunas Enterprise`}),k(`span`,{className:`truncate text-xs`,children:`Established 2025`})]})]}),A(g,{children:[k(p,{asChild:!0,children:A(t,{"data-slot":`locale-trigger`,variant:`ghost`,color:`muted`,className:`gap-x-1 rounded-full transition-all hover:text-text-positive`,children:[k(v,{className:`size-6!`}),e]})}),k(h,{align:`end`,children:A(m,{children:[k(f,{onClick:o,children:`EN - English`}),k(f,{onClick:s,children:`VI - Vietnamese`})]})})]})]})},Q=C(({id:e,label:t,icon:n,activeNavItemId:r,onClick:i})=>k(J,{children:A(X,{isActive:e===r,onClick:i,children:[n,t]})}));Q.displayName=`SidebarContentGroupItem`;const $=C(({id:e,label:t,children:n})=>A(W,{children:[k(G,{children:t}),k(K,{children:k(q,{children:n})})]}));$.displayName=`SidebarContentGroup`;const ee=({i18nText:e,activeNavItemId:t,sidebar:n,children:r,onChangeToEnLocale:i,onChangeToViLocale:a,onLogout:o,logoutLabel:s=`Log out`,copyright:c=`Copyright © ${new Date().getFullYear()}, Lunas.`})=>{let l=n?.groupcontent??[];return A(I,{children:[k(Z,{i18nText:e,onChangeToEnLocale:i,onChangeToViLocale:a}),A(L,{variant:`inset`,collapsible:`icon`,children:[k(U,{children:l.map(e=>k($,{id:e.id,label:e.label,children:e.items.map(e=>k(Q,{id:e.id,activeNavItemId:t,label:e.label,icon:e.icon,onClick:e.onClick},e.id))},e.id))}),k(V,{children:A(q,{children:[k(J,{children:A(X,{className:`border border-border`,onClick:o,children:[k(y,{className:`text-text-positive-weak`}),s]})}),k(J,{className:`mt-2 border-t border-t-border`,children:k(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:c})})]})})]}),k(R,{children:r})]})};export{ee as t};
2
- //# sourceMappingURL=cms-layout-HfnOQS16.mjs.map
1
+ import{t as e}from"./dist-CIN9T2FB.mjs";import{t}from"./button-C6ybzxxj.mjs";import{i as n,n as r,r as i,t as a}from"./tooltip-Bj0iOG4s.mjs";import{t as o}from"./separator-BMsbHAVt.mjs";import{i as s,o as c,r as l,s as u,t as d}from"./sheet-DMIqn1iv.mjs";import{a as f,h as p,i as m,r as h,t as g}from"./dropdown-menu-DWSfXhHo.mjs";import{t as _}from"./input-6f9JTc79.mjs";import{EarthIcon as v,LogOutIcon as y,MenuIcon as b,ShoppingCartIcon as x}from"lucide-react";import{createContext as S,memo as C,useCallback as w,useContext as T,useEffect as E,useMemo as D,useState as O}from"react";import{jsx as k,jsxs as A}from"react/jsx-runtime";import{cn as j}from"@customafk/react-toolkit/utils";import{cva as M}from"class-variance-authority";import{useIsMobile as N}from"@customafk/react-toolkit/hooks/useMobile";const P=S(null);function F(){let e=T(P);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function I({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:a,children:o,...s}){let c=N(),[l,u]=O(!1),[d,f]=O(e),p=t??d,m=w(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[n,p]),h=w(()=>c?u(e=>!e):m(e=>!e),[c,m]);E(()=>{let e=e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),h())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[h]);let g=p?`expanded`:`collapsed`,_=D(()=>({state:g,open:p,setOpen:m,isMobile:c,openMobile:l,setOpenMobile:u,toggleSidebar:h}),[g,p,m,c,l,h]);return k(P.Provider,{value:_,children:k(i,{delayDuration:0,children:k(`section`,{"data-slot":`layout-wrapper`,style:{"--sidebar-width":`16rem`,"--sidebar-width-icon":`3rem`,...a},className:j(`relative group/sidebar-wrapper flex h-dvh bg-sidebar`,r),...s,children:o})})})}const L=C(({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,...o})=>{let{isMobile:f,state:p,openMobile:m,setOpenMobile:h,toggleSidebar:g}=F(),_=w(e=>{g(),e.preventDefault(),e.stopPropagation()},[g]);return r===`none`?k(`aside`,{"data-slot":`sidebar`,className:j(`flex w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,i),...o,children:a}):f?k(d,{open:m,onOpenChange:h,...o,children:A(l,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,style:{"--sidebar-width":`18rem`},side:e,className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground sm:max-w-3xs [&>button]:hidden`,children:[A(c,{className:`sr-only`,children:[k(u,{children:`Sidebar`}),k(s,{children:`Displays the mobile sidebar.`})]}),A(`div`,{className:`flex size-full flex-col`,children:[A(`div`,{className:`flex flex-0 items-center gap-x-2 border-b border-border-weak p-2 pr-4`,children:[A(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:j(`size-10 rounded-full`,i),onClick:_,children:[k(b,{className:`size-6!`}),k(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),k(`div`,{className:`ml-2 flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:k(x,{size:20})}),A(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[k(`span`,{className:`truncate font-medium`,children:`Lunas Store`}),k(`span`,{className:`truncate text-xs`,children:`Established 2023`})]})]}),k(`div`,{className:`flex flex-1 flex-col p-2`,children:a})]})]})}):A(`aside`,{className:`group peer hidden bg-card text-sidebar-foreground md:block`,"data-state":p,"data-collapsible":p===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[k(`div`,{"data-slot":`sidebar-gap`,className:j(`bg-transparent`,`transition-[width] duration-200 ease-linear`,`h-(--header-height) sm:h-[calc(var(--header-height)+0.5rem)]`,`w-(--sidebar-width)`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`)}),k(`div`,{"data-slot":`sidebar-container`,className:j(`hidden md:flex shadow-nav`,`fixed left-0 inset-y-0 p-2`,`top-[calc(var(--header-height)+0.5rem)] z-10`,`w-(--sidebar-width)`,`transition-all duration-200 ease-linear`,`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`,i),...o,children:k(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:`relative flex size-full flex-col`,children:a})})]})});L.displayName=`CMSLayoutSidebar`;const R=C(({className:e,children:t,...n})=>A(`main`,{"data-slot":`sidebar-inset`,className:j(`relative flex w-full flex-1 flex-col`,e),...n,children:[k(`div`,{className:`h-(--header-height) sm:h-[calc(var(--header-height)+0.5rem)]`}),k(`div`,{className:`relative flex-1 size-full overflow-auto`,children:t})]}));R.displayName=`CMSLayoutMain`;const z=C(({className:e,...t})=>k(_,{"data-slot":`sidebar-input`,"data-sidebar":`input`,className:j(`h-8 w-full bg-background shadow-none`,e),...t}));z.displayName=`SidebarInput`;const B=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:j(`flex flex-col gap-2 p-2`,e),...t}));B.displayName=`SidebarHeader`;const V=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:j(`flex flex-col gap-2`,e),...t}));V.displayName=`SidebarFooter`;const H=C(({className:e,...t})=>k(o,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:j(`mx-2 w-auto bg-sidebar-border`,e),...t}));H.displayName=`SidebarSeparator`;const U=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:j(`flex flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t}));U.displayName=`SidebarContent`;const W=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:j(`relative flex w-full flex-col`,e),...t}));W.displayName=`SidebarGroup`;const G=C(({className:t,asChild:n=!1,...r})=>k(n?e:`div`,{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,className:j(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity,color] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,t),...r}));G.displayName=`SidebarGroupLabel`;const K=C(({className:e,...t})=>k(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:j(`w-full text-sm`,e),...t}));K.displayName=`SidebarGroupContent`;const q=C(({className:e,...t})=>k(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:j(`flex w-full min-w-0 flex-col gap-1`,e),...t}));q.displayName=`SidebarMenu`;const J=C(({className:e,...t})=>k(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:j(`group/menu-item relative`,e),...t}));J.displayName=`SidebarMenuItem`;const Y=M([`peer/menu-button`,`cursor-pointer`,`flex w-full items-center gap-2`,`overflow-hidden rounded-md p-2 outline-hidden`,`truncate text-left font-normal`,`transition-[color,background-color,width,height,padding]`,`active:bg-sidebar-accent active:text-sidebar-accent-foreground`,`disabled:pointer-events-none disabled:opacity-50`,`group-has-data-[sidebar=menu-action]/menu-item:pr-8`,`aria-disabled:pointer-events-none aria-disabled:opacity-50`,`data-[active=true]:bg-sidebar-primary-muted data-[active=true]:text-sidebar-primary`,`data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground`,`group-data-[collapsible=icon]:size-12! group-data-[collapsible=icon]:p-3! group-data-[collapsible=icon]:gap-3!`,`[&>svg]:size-6 [&>svg]:shrink-0`,`[&>span:last-child]:truncate`],{variants:{variant:{default:`hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-10 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}}),X=C(({asChild:t=!1,isActive:i=!1,variant:o=`default`,size:s=`default`,tooltip:c,className:l,...u})=>{let d=t?e:`button`,{isMobile:f,state:p}=F(),m=w(e=>{u.onClick?.(),e.preventDefault(),e.stopPropagation()},[u.onClick]),h=k(d,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":s,"data-active":i,className:j(Y({variant:o,size:s}),l),onClick:m,...u});return c?(typeof c==`string`&&(c={children:c}),A(a,{children:[k(n,{asChild:!0,children:h}),k(r,{side:`right`,align:`center`,hidden:p!==`collapsed`||f,...c})]})):h});X.displayName=`SidebarMenuButton`;const Z=({i18nText:e,onChangeToEnLocale:n,onChangeToViLocale:r})=>{let{toggleSidebar:i}=F(),a=w(e=>{e.preventDefault(),e.stopPropagation(),i()},[i]),o=w(e=>{e.preventDefault(),e.stopPropagation(),n?.()},[n]),s=w(e=>{e.preventDefault(),e.stopPropagation(),r?.()},[r]);return A(`header`,{"data-slot":`cms-layout-header`,className:j(`bg-card`,`h-(--header-height)`,`sm:h-[calc(var(--header-height)+0.5rem)] sm:px-4 sm:pr-6`,`absolute inset-x-0 top-0 z-20 gap-2 px-2 pr-4.5`,`flex items-center shadow-nav`,`transition-[height] ease-linear`),children:[A(t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,color:`muted`,size:`icon`,className:`size-10 rounded-full transition-all hover:text-text-positive`,onClick:a,children:[k(b,{className:`size-6!`}),k(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]}),A(`div`,{className:`flex flex-1 gap-x-2 sm:ml-2.5`,children:[k(`div`,{className:`flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground`,children:k(x,{size:20})}),A(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[k(`span`,{className:`truncate font-medium`,children:`Lunas Enterprise`}),k(`span`,{className:`truncate text-xs`,children:`Established 2025`})]})]}),A(g,{children:[k(p,{asChild:!0,children:A(t,{"data-slot":`locale-trigger`,variant:`ghost`,color:`muted`,className:`gap-x-1 rounded-full transition-all hover:text-text-positive`,children:[k(v,{className:`size-6!`}),e]})}),k(h,{align:`end`,children:A(m,{children:[k(f,{onClick:o,children:`EN - English`}),k(f,{onClick:s,children:`VI - Vietnamese`})]})})]})]})},Q=C(({id:e,label:t,icon:n,activeNavItemId:r,onClick:i})=>k(J,{children:A(X,{isActive:e===r,onClick:i,children:[n,t]})}));Q.displayName=`SidebarContentGroupItem`;const $=C(({id:e,label:t,children:n})=>A(W,{children:[k(G,{children:t}),k(K,{children:k(q,{children:n})})]}));$.displayName=`SidebarContentGroup`;const ee=({i18nText:e,activeNavItemId:t,sidebar:n,children:r,onChangeToEnLocale:i,onChangeToViLocale:a,onLogout:o,logoutLabel:s=`Log out`,copyright:c=`Copyright © ${new Date().getFullYear()}, Lunas.`})=>{let l=n?.groupcontent??[];return A(I,{children:[k(Z,{i18nText:e,onChangeToEnLocale:i,onChangeToViLocale:a}),A(L,{variant:`inset`,collapsible:`icon`,children:[k(U,{children:l.map(e=>k($,{id:e.id,label:e.label,children:e.items.map(e=>k(Q,{id:e.id,activeNavItemId:t,label:e.label,icon:e.icon,onClick:e.onClick},e.id))},e.id))}),k(V,{children:A(q,{children:[k(J,{children:A(X,{className:`border border-border`,onClick:o,children:[k(y,{className:`text-text-positive-weak`}),s]})}),k(J,{className:`mt-2 border-t border-t-border`,children:k(`p`,{className:`pt-2 text-center text-xs text-text-positive-subtle`,children:c})})]})})]}),k(R,{children:r})]})};export{ee as t};
2
+ //# sourceMappingURL=cms-layout-Bp6rU_of.mjs.map