@customafk/lunas-ui 0.0.6 → 0.0.8

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 (621) hide show
  1. package/dist/{add-new-BaABbnol.js → add-new-C--Ee4bj.js} +1 -2
  2. package/dist/{add-new-DUoS_-n2.cjs → add-new-pfLdk0Hp.cjs} +1 -2
  3. package/dist/{alert-dialog-0KwdjY-6.js → alert-dialog-CQa0TLlF.js} +1 -2
  4. package/dist/{alert-dialog-D5ZqgIiC.cjs → alert-dialog-D1DFrl-0.cjs} +1 -2
  5. package/dist/badge-D_qEoSL8.js +1 -2
  6. package/dist/{badge-CRXT2dH_.cjs → badge-DfSj5nwV.cjs} +1 -2
  7. package/dist/button-Bku3bKv9.js +1 -2
  8. package/dist/{button-DN7a1ENd.d.ts → button-CS0x-mYR.d.cts} +5 -6
  9. package/dist/{button-D-ldkdUf.d.cts → button-CxHABSnr.d.ts} +6 -7
  10. package/dist/{button-Dzv_nos1.cjs → button-CycE0WzB.cjs} +1 -2
  11. package/dist/calendar-DaYVxwJx.js +1 -0
  12. package/dist/calendar-DzAxQqFI.cjs +1 -0
  13. package/dist/{card-Dta5eW8u.cjs → card-D7C05tvk.cjs} +1 -2
  14. package/dist/card-D8cxRC5y.js +1 -2
  15. package/dist/cards/simple-card.cjs +1 -2
  16. package/dist/cards/simple-card.d.cts +1 -2
  17. package/dist/cards/simple-card.d.ts +3 -4
  18. package/dist/cards/simple-card.js +1 -2
  19. package/dist/chunk-hhQzssFb.cjs +1 -0
  20. package/dist/{command-DPWCoUcB.d.cts → command-BfYiUikG.d.cts} +12 -13
  21. package/dist/{command-CsntVmEz.cjs → command-CkGJbvFq.cjs} +1 -2
  22. package/dist/{command-DswMfHba.d.ts → command-CycGGWOh.d.ts} +12 -13
  23. package/dist/{command-_L9bD9a-.js → command-Ir_Vqgds.js} +1 -2
  24. package/dist/data-display/country.cjs +1 -2
  25. package/dist/data-display/country.d.cts +1 -2
  26. package/dist/data-display/country.d.ts +2 -3
  27. package/dist/data-display/country.js +1 -2
  28. package/dist/data-display/data-list.cjs +1 -2
  29. package/dist/data-display/data-list.d.cts +1 -2
  30. package/dist/data-display/data-list.d.ts +1 -2
  31. package/dist/data-display/data-list.js +1 -2
  32. package/dist/data-display/date.cjs +1 -1
  33. package/dist/data-display/date.d.cts +1 -2
  34. package/dist/data-display/date.d.ts +1 -2
  35. package/dist/data-display/empty.cjs +1 -2
  36. package/dist/data-display/empty.d.cts +3 -4
  37. package/dist/data-display/empty.d.ts +3 -4
  38. package/dist/data-display/empty.js +1 -2
  39. package/dist/data-display/name.cjs +1 -2
  40. package/dist/data-display/name.d.cts +1 -2
  41. package/dist/data-display/name.d.ts +1 -2
  42. package/dist/data-display/name.js +1 -2
  43. package/dist/data-display/phone-number.cjs +1 -2
  44. package/dist/data-display/phone-number.d.cts +1 -2
  45. package/dist/data-display/phone-number.d.ts +1 -2
  46. package/dist/data-display/phone-number.js +1 -2
  47. package/dist/data-display/role-badge.cjs +1 -2
  48. package/dist/data-display/role-badge.d.cts +1 -2
  49. package/dist/data-display/role-badge.d.ts +2 -3
  50. package/dist/data-display/role-badge.js +1 -2
  51. package/dist/data-display/statistic.cjs +1 -2
  52. package/dist/data-display/statistic.d.cts +3 -4
  53. package/dist/data-display/statistic.d.ts +3 -4
  54. package/dist/data-display/statistic.js +1 -2
  55. package/dist/date-BMq_DNsv.js +1 -2
  56. package/dist/{date-nd8WkPlx.cjs → date-ByLOGsKl.cjs} +1 -2
  57. package/dist/{dialog-CQI6CMkF.d.cts → dialog-B13T--98.d.ts} +12 -13
  58. package/dist/{dialog-W-DmDMEE.cjs → dialog-B3cQOpjg.cjs} +1 -2
  59. package/dist/{dialog-C4hf-Puw.js → dialog-BLDh3Gqw.js} +1 -2
  60. package/dist/{dialog-I7tlD4sO.d.ts → dialog-Dspjpsjh.d.cts} +12 -13
  61. package/dist/dialogs/confirm-dialog.cjs +1 -2
  62. package/dist/dialogs/confirm-dialog.d.cts +1 -2
  63. package/dist/dialogs/confirm-dialog.d.ts +1 -2
  64. package/dist/dialogs/confirm-dialog.js +1 -2
  65. package/dist/dialogs/detail-dialog/index.cjs +1 -2
  66. package/dist/dialogs/detail-dialog/index.d.cts +1 -2
  67. package/dist/dialogs/detail-dialog/index.d.ts +1 -2
  68. package/dist/dialogs/detail-dialog/index.js +1 -2
  69. package/dist/dialogs/error-dialog.cjs +1 -1
  70. package/dist/dialogs/error-dialog.d.cts +1 -2
  71. package/dist/dialogs/error-dialog.d.ts +1 -2
  72. package/dist/dialogs/error-dialog.js +1 -1
  73. package/dist/dialogs/form-dialog.cjs +1 -2
  74. package/dist/dialogs/form-dialog.d.cts +3 -4
  75. package/dist/dialogs/form-dialog.d.ts +3 -4
  76. package/dist/dialogs/form-dialog.js +1 -2
  77. package/dist/dialogs/loading-dialog.cjs +1 -2
  78. package/dist/dialogs/loading-dialog.d.cts +1 -2
  79. package/dist/dialogs/loading-dialog.d.ts +1 -2
  80. package/dist/dialogs/loading-dialog.js +1 -2
  81. package/dist/{dropdown-menu-Bv18S56o.cjs → dropdown-menu-CPvB_jOC.cjs} +1 -2
  82. package/dist/{dropdown-menu-jCQwh2rG.js → dropdown-menu-Cx-Wime0.js} +1 -2
  83. package/dist/{error-dialog-DpQgL5Hy.cjs → error-dialog-BTjeT7x-.cjs} +1 -2
  84. package/dist/{error-dialog-D_4WL-Hj.js → error-dialog-DlhosP10.js} +1 -2
  85. package/dist/flex-ILvQrYMJ.js +1 -2
  86. package/dist/{flex-CNA_SId-.cjs → flex-yTyoLpgH.cjs} +1 -2
  87. package/dist/form-CA4hhSV5.js +1 -2
  88. package/dist/{form-CYZkgobJ.cjs → form-C_PCHrpx.cjs} +1 -2
  89. package/dist/{form-wrapper-BYbwt1zC.cjs → form-wrapper-CCqogufb.cjs} +1 -2
  90. package/dist/{form-wrapper-D-2Uz518.js → form-wrapper-YPIbD8rh.js} +1 -2
  91. package/dist/forms/combobox-field.cjs +41 -0
  92. package/dist/forms/combobox-field.d.cts +27 -0
  93. package/dist/forms/combobox-field.d.ts +27 -0
  94. package/dist/forms/combobox-field.js +41 -0
  95. package/dist/forms/date-field.cjs +1 -0
  96. package/dist/forms/date-field.d.cts +21 -0
  97. package/dist/forms/date-field.d.ts +21 -0
  98. package/dist/forms/date-field.js +1 -0
  99. package/dist/forms/form-wrapper.cjs +1 -1
  100. package/dist/forms/form-wrapper.d.cts +3 -4
  101. package/dist/forms/form-wrapper.d.ts +3 -4
  102. package/dist/forms/form-wrapper.js +1 -1
  103. package/dist/forms/multi-select-field.cjs +1 -0
  104. package/dist/forms/multi-select-field.d.cts +29 -0
  105. package/dist/forms/multi-select-field.d.ts +29 -0
  106. package/dist/forms/multi-select-field.js +1 -0
  107. package/dist/forms/number-field.cjs +1 -0
  108. package/dist/forms/number-field.d.cts +27 -0
  109. package/dist/forms/number-field.d.ts +27 -0
  110. package/dist/forms/number-field.js +1 -0
  111. package/dist/forms/password-field.cjs +1 -0
  112. package/dist/forms/password-field.d.cts +22 -0
  113. package/dist/forms/password-field.d.ts +22 -0
  114. package/dist/forms/password-field.js +1 -0
  115. package/dist/forms/select-field.cjs +1 -0
  116. package/dist/forms/select-field.d.cts +32 -0
  117. package/dist/forms/select-field.d.ts +32 -0
  118. package/dist/forms/select-field.js +1 -0
  119. package/dist/forms/switch-field.cjs +1 -0
  120. package/dist/forms/switch-field.d.cts +18 -0
  121. package/dist/forms/switch-field.d.ts +18 -0
  122. package/dist/forms/switch-field.js +1 -0
  123. package/dist/forms/text-field.cjs +1 -0
  124. package/dist/forms/text-field.d.cts +30 -0
  125. package/dist/forms/text-field.d.ts +30 -0
  126. package/dist/forms/text-field.js +1 -0
  127. package/dist/forms/textarea-field.cjs +1 -0
  128. package/dist/forms/textarea-field.d.cts +26 -0
  129. package/dist/forms/textarea-field.d.ts +26 -0
  130. package/dist/forms/textarea-field.js +1 -0
  131. package/dist/{input-k2bQHeqx.d.ts → input-BcIy0lq8.d.cts} +3 -4
  132. package/dist/{input-DXEBB91E.cjs → input-C8Sebaue.cjs} +1 -2
  133. package/dist/{input-BZ9_HhgL.d.cts → input-Cux9upuQ.d.ts} +3 -4
  134. package/dist/{input-FzKbxUq2.js → input-Dmaq3fzf.js} +1 -2
  135. package/dist/label-Cxbctr6x.js +1 -2
  136. package/dist/{label-CunjD1rx.cjs → label-i858Jr98.cjs} +1 -2
  137. package/dist/layouts/flex.cjs +1 -1
  138. package/dist/layouts/flex.d.cts +6 -7
  139. package/dist/layouts/flex.d.ts +8 -9
  140. package/dist/layouts/main/index.cjs +1 -2
  141. package/dist/layouts/main/index.d.cts +13 -6
  142. package/dist/layouts/main/index.d.ts +13 -6
  143. package/dist/layouts/main/index.js +1 -2
  144. package/dist/multi-select-DZBXSr7F.cjs +1 -0
  145. package/dist/multi-select-LYl29d4h.js +1 -0
  146. package/dist/paragraph-Bey03JkA.js +1 -2
  147. package/dist/{paragraph-ZxI8zxuf.cjs → paragraph-DWQ0PZt_.cjs} +1 -2
  148. package/dist/popover-Ce0OTSQL.cjs +1 -0
  149. package/dist/popover-tDri6Ded.js +1 -0
  150. package/dist/{progress-BnnOfAZN.cjs → progress-CHh9eRZi.cjs} +1 -2
  151. package/dist/{progress-CBccqUUJ.js → progress-CeXKNvJc.js} +1 -2
  152. package/dist/{refresh-BHt_h3N_.js → refresh-BPlmkCzH.js} +1 -2
  153. package/dist/{refresh-DrolZxuC.cjs → refresh-Dtz354hW.cjs} +1 -2
  154. package/dist/{scroll-area-DWWpaz5j.cjs → scroll-area-Ba9RvkDf.cjs} +1 -2
  155. package/dist/{scroll-area-Bdb_LSFF.js → scroll-area-D-IhBWqm.js} +1 -2
  156. package/dist/{search-input-L2sq0eB0.js → search-input-BG4-fO9W.js} +1 -2
  157. package/dist/{search-input-Bf4-FeWu.cjs → search-input-DVMQEBvb.cjs} +1 -2
  158. package/dist/{select-CWUsisI0.js → select-4IO3vAjO.js} +1 -2
  159. package/dist/{select-ZSyt5zCe.cjs → select-UsiicIRo.cjs} +1 -2
  160. package/dist/{separator-DTB3sDNG.cjs → separator-D4iTmsID.cjs} +1 -2
  161. package/dist/{separator-BpsL0PlX.js → separator-DMdqEz29.js} +1 -2
  162. package/dist/{separator-DQ9iJjVc.d.ts → separator-DtZ0fiIK.d.cts} +3 -4
  163. package/dist/{separator-DSY4OI_p.d.cts → separator-J8f9PdbI.d.ts} +3 -4
  164. package/dist/{sheet-C8r2QGpq.js → sheet-2JqHfdYi.js} +1 -2
  165. package/dist/{sheet-CCwbAaA6.cjs → sheet-Dr-a3-o2.cjs} +1 -2
  166. package/dist/{sidebar-C166f_9B.js → sidebar-COBzB7S8.js} +1 -2
  167. package/dist/{sidebar-BLPMNltJ.cjs → sidebar-gXuaHBie.cjs} +1 -2
  168. package/dist/skeleton-BTQm_mtV.cjs +1 -0
  169. package/dist/{skeleton-DYmX0k94.js → skeleton-D1_Brnl9.js} +1 -2
  170. package/dist/switch-BlK-TC1h.js +1 -0
  171. package/dist/switch-CoP3UwNk.cjs +1 -0
  172. package/dist/table/index.cjs +1 -2
  173. package/dist/table/index.d.cts +3 -4
  174. package/dist/table/index.d.ts +3 -4
  175. package/dist/table/index.js +1 -2
  176. package/dist/{table-BSeev7T0.cjs → table-C46bXpzd.cjs} +1 -2
  177. package/dist/{table-BvA64mE8.js → table-nHFRC3DG.js} +1 -2
  178. package/dist/textarea-Dz6npuI4.cjs +1 -0
  179. package/dist/textarea-dM1DYNfF.js +1 -0
  180. package/dist/{title-xsPZpQpb.cjs → title-BlLBscIg.cjs} +1 -2
  181. package/dist/title-DTkABsIG.js +1 -2
  182. package/dist/{toggle-DygwYpUS.d.ts → toggle-3yC7NgOb.d.ts} +4 -5
  183. package/dist/{toggle-B3RSxTKL.d.cts → toggle-8wPArWPq.d.cts} +4 -5
  184. package/dist/{toggle-D_MDMruK.js → toggle-CHJ2edke.js} +1 -2
  185. package/dist/{toggle-CfL3GVe2.cjs → toggle-CzMYdDvC.cjs} +1 -2
  186. package/dist/{tooltip-Ct7VJoYo.d.ts → tooltip-Bo9id3nz.d.ts} +6 -7
  187. package/dist/tooltip-Dzyf5smh.js +1 -2
  188. package/dist/{tooltip-DNtfXZW2.d.cts → tooltip-JbjxxBNd.d.cts} +6 -7
  189. package/dist/{tooltip-Beb-_EPp.cjs → tooltip-MgToVOzy.cjs} +1 -2
  190. package/dist/types-B0V1F4Ml.d.cts +1 -2
  191. package/dist/{types-DLrIc2fL.d.ts → types-CmcNT14g.d.ts} +1 -2
  192. package/dist/types-CrbWxjnp.cjs +1 -2
  193. package/dist/types-DaIHddx7.js +1 -2
  194. package/dist/typography/paragraph.cjs +1 -1
  195. package/dist/typography/paragraph.d.cts +3 -4
  196. package/dist/typography/paragraph.d.ts +3 -4
  197. package/dist/typography/title.cjs +1 -1
  198. package/dist/typography/title.d.cts +3 -4
  199. package/dist/typography/title.d.ts +3 -4
  200. package/dist/ui/alert-dialog.cjs +1 -1
  201. package/dist/ui/alert-dialog.d.cts +13 -14
  202. package/dist/ui/alert-dialog.d.ts +13 -14
  203. package/dist/ui/alert-dialog.js +1 -1
  204. package/dist/ui/alert.cjs +1 -2
  205. package/dist/ui/alert.d.cts +7 -8
  206. package/dist/ui/alert.d.ts +7 -8
  207. package/dist/ui/alert.js +1 -2
  208. package/dist/ui/aspect-ratio.cjs +1 -2
  209. package/dist/ui/aspect-ratio.d.cts +3 -4
  210. package/dist/ui/aspect-ratio.d.ts +3 -4
  211. package/dist/ui/aspect-ratio.js +1 -2
  212. package/dist/ui/avatar.cjs +1 -2
  213. package/dist/ui/avatar.d.cts +5 -6
  214. package/dist/ui/avatar.d.ts +5 -6
  215. package/dist/ui/avatar.js +1 -2
  216. package/dist/ui/badge.cjs +1 -1
  217. package/dist/ui/badge.d.cts +6 -7
  218. package/dist/ui/badge.d.ts +6 -7
  219. package/dist/ui/breadcrumb.cjs +1 -2
  220. package/dist/ui/breadcrumb.d.cts +9 -10
  221. package/dist/ui/breadcrumb.d.ts +9 -10
  222. package/dist/ui/breadcrumb.js +1 -2
  223. package/dist/ui/button.cjs +1 -1
  224. package/dist/ui/button.d.cts +1 -1
  225. package/dist/ui/button.d.ts +1 -1
  226. package/dist/ui/buttons/add-new.cjs +1 -1
  227. package/dist/ui/buttons/add-new.d.cts +1 -2
  228. package/dist/ui/buttons/add-new.d.ts +1 -2
  229. package/dist/ui/buttons/add-new.js +1 -1
  230. package/dist/ui/buttons/refresh.cjs +1 -1
  231. package/dist/ui/buttons/refresh.d.cts +1 -2
  232. package/dist/ui/buttons/refresh.d.ts +1 -2
  233. package/dist/ui/buttons/refresh.js +1 -1
  234. package/dist/ui/calendar.cjs +1 -2
  235. package/dist/ui/calendar.d.cts +5 -6
  236. package/dist/ui/calendar.d.ts +5 -6
  237. package/dist/ui/calendar.js +1 -2
  238. package/dist/ui/card.cjs +1 -1
  239. package/dist/ui/card.d.cts +9 -10
  240. package/dist/ui/card.d.ts +9 -10
  241. package/dist/ui/carousel.cjs +1 -2
  242. package/dist/ui/carousel.d.cts +8 -9
  243. package/dist/ui/carousel.d.ts +8 -9
  244. package/dist/ui/carousel.js +1 -2
  245. package/dist/ui/collapsible.cjs +1 -2
  246. package/dist/ui/collapsible.d.cts +5 -6
  247. package/dist/ui/collapsible.d.ts +5 -6
  248. package/dist/ui/collapsible.js +1 -2
  249. package/dist/ui/command.cjs +1 -1
  250. package/dist/ui/command.d.cts +2 -2
  251. package/dist/ui/command.d.ts +2 -2
  252. package/dist/ui/command.js +1 -1
  253. package/dist/ui/context-menu.cjs +1 -2
  254. package/dist/ui/context-menu.d.cts +17 -18
  255. package/dist/ui/context-menu.d.ts +17 -18
  256. package/dist/ui/context-menu.js +1 -2
  257. package/dist/ui/dialog.cjs +1 -1
  258. package/dist/ui/dialog.d.cts +1 -1
  259. package/dist/ui/dialog.d.ts +1 -1
  260. package/dist/ui/dialog.js +1 -1
  261. package/dist/ui/dropdown-menu.cjs +1 -1
  262. package/dist/ui/dropdown-menu.d.cts +17 -18
  263. package/dist/ui/dropdown-menu.d.ts +17 -18
  264. package/dist/ui/dropdown-menu.js +1 -1
  265. package/dist/ui/file-uploader.cjs +2 -3
  266. package/dist/ui/file-uploader.d.cts +3 -4
  267. package/dist/ui/file-uploader.d.ts +3 -4
  268. package/dist/ui/file-uploader.js +2 -3
  269. package/dist/ui/form.cjs +1 -1
  270. package/dist/ui/form.d.cts +8 -9
  271. package/dist/ui/form.d.ts +8 -9
  272. package/dist/ui/hover-card.cjs +1 -2
  273. package/dist/ui/hover-card.d.cts +5 -6
  274. package/dist/ui/hover-card.d.ts +5 -6
  275. package/dist/ui/hover-card.js +1 -2
  276. package/dist/ui/input-otp.cjs +1 -2
  277. package/dist/ui/input-otp.d.cts +6 -7
  278. package/dist/ui/input-otp.d.ts +6 -7
  279. package/dist/ui/input-otp.js +1 -2
  280. package/dist/ui/input.cjs +1 -1
  281. package/dist/ui/input.d.cts +1 -1
  282. package/dist/ui/input.d.ts +1 -1
  283. package/dist/ui/input.js +1 -1
  284. package/dist/ui/inputs/search-input.cjs +1 -1
  285. package/dist/ui/inputs/search-input.d.cts +4 -5
  286. package/dist/ui/inputs/search-input.d.ts +4 -5
  287. package/dist/ui/inputs/search-input.js +1 -1
  288. package/dist/ui/label.cjs +1 -1
  289. package/dist/ui/label.d.cts +3 -4
  290. package/dist/ui/label.d.ts +3 -4
  291. package/dist/ui/menubar.cjs +1 -2
  292. package/dist/ui/menubar.d.cts +18 -19
  293. package/dist/ui/menubar.d.ts +18 -19
  294. package/dist/ui/menubar.js +1 -2
  295. package/dist/ui/multi-select.cjs +1 -2
  296. package/dist/ui/multi-select.d.cts +3 -4
  297. package/dist/ui/multi-select.d.ts +3 -4
  298. package/dist/ui/multi-select.js +1 -2
  299. package/dist/ui/navigation-menu.cjs +1 -2
  300. package/dist/ui/navigation-menu.d.cts +10 -11
  301. package/dist/ui/navigation-menu.d.ts +12 -13
  302. package/dist/ui/navigation-menu.js +1 -2
  303. package/dist/ui/pagination.cjs +1 -2
  304. package/dist/ui/pagination.d.cts +10 -11
  305. package/dist/ui/pagination.d.ts +10 -11
  306. package/dist/ui/pagination.js +1 -2
  307. package/dist/ui/popover.cjs +1 -2
  308. package/dist/ui/popover.d.cts +6 -7
  309. package/dist/ui/popover.d.ts +6 -7
  310. package/dist/ui/popover.js +1 -2
  311. package/dist/ui/progress.cjs +1 -1
  312. package/dist/ui/progress.d.cts +3 -4
  313. package/dist/ui/progress.d.ts +3 -4
  314. package/dist/ui/progress.js +1 -1
  315. package/dist/ui/radio-group.cjs +1 -2
  316. package/dist/ui/radio-group.d.cts +4 -5
  317. package/dist/ui/radio-group.d.ts +4 -5
  318. package/dist/ui/radio-group.js +1 -2
  319. package/dist/ui/resizable.cjs +1 -2
  320. package/dist/ui/resizable.d.cts +5 -6
  321. package/dist/ui/resizable.d.ts +5 -6
  322. package/dist/ui/resizable.js +1 -2
  323. package/dist/ui/scroll-area.cjs +1 -1
  324. package/dist/ui/scroll-area.d.cts +4 -5
  325. package/dist/ui/scroll-area.d.ts +4 -5
  326. package/dist/ui/scroll-area.js +1 -1
  327. package/dist/ui/select.cjs +1 -1
  328. package/dist/ui/select.d.cts +12 -13
  329. package/dist/ui/select.d.ts +12 -13
  330. package/dist/ui/select.js +1 -1
  331. package/dist/ui/separator.cjs +1 -1
  332. package/dist/ui/separator.d.cts +1 -1
  333. package/dist/ui/separator.d.ts +1 -1
  334. package/dist/ui/separator.js +1 -1
  335. package/dist/ui/sheet.cjs +1 -1
  336. package/dist/ui/sheet.d.cts +10 -11
  337. package/dist/ui/sheet.d.ts +10 -11
  338. package/dist/ui/sheet.js +1 -1
  339. package/dist/ui/sidebar.cjs +1 -1
  340. package/dist/ui/sidebar.d.cts +30 -31
  341. package/dist/ui/sidebar.d.ts +32 -33
  342. package/dist/ui/sidebar.js +1 -1
  343. package/dist/ui/skeleton.cjs +1 -1
  344. package/dist/ui/skeleton.d.cts +3 -4
  345. package/dist/ui/skeleton.d.ts +3 -4
  346. package/dist/ui/skeleton.js +1 -1
  347. package/dist/ui/slider.cjs +1 -2
  348. package/dist/ui/slider.d.cts +3 -4
  349. package/dist/ui/slider.d.ts +3 -4
  350. package/dist/ui/slider.js +1 -2
  351. package/dist/ui/sonner.cjs +1 -2
  352. package/dist/ui/sonner.d.cts +3 -4
  353. package/dist/ui/sonner.d.ts +3 -4
  354. package/dist/ui/sonner.js +1 -2
  355. package/dist/ui/switch.cjs +1 -2
  356. package/dist/ui/switch.d.cts +3 -4
  357. package/dist/ui/switch.d.ts +3 -4
  358. package/dist/ui/switch.js +1 -2
  359. package/dist/ui/table.cjs +1 -1
  360. package/dist/ui/table.d.cts +10 -11
  361. package/dist/ui/table.d.ts +10 -11
  362. package/dist/ui/table.js +1 -1
  363. package/dist/ui/tabs.cjs +1 -2
  364. package/dist/ui/tabs.d.cts +6 -7
  365. package/dist/ui/tabs.d.ts +6 -7
  366. package/dist/ui/tabs.js +1 -2
  367. package/dist/ui/textarea.cjs +1 -2
  368. package/dist/ui/textarea.d.cts +3 -4
  369. package/dist/ui/textarea.d.ts +3 -4
  370. package/dist/ui/textarea.js +1 -2
  371. package/dist/ui/toggle-group.cjs +1 -2
  372. package/dist/ui/toggle-group.d.cts +5 -6
  373. package/dist/ui/toggle-group.d.ts +5 -6
  374. package/dist/ui/toggle-group.js +1 -2
  375. package/dist/ui/toggle.cjs +1 -1
  376. package/dist/ui/toggle.d.cts +1 -1
  377. package/dist/ui/toggle.d.ts +1 -1
  378. package/dist/ui/toggle.js +1 -1
  379. package/dist/ui/tooltip.cjs +1 -1
  380. package/dist/ui/tooltip.d.cts +1 -1
  381. package/dist/ui/tooltip.d.ts +1 -1
  382. package/dist/utils-D9AH0PUV.js +1 -2
  383. package/dist/utils-DaJ1XZgX.cjs +1 -0
  384. package/package.json +54 -9
  385. package/packages/components/cards/simple-card.tsx +37 -0
  386. package/packages/components/data-display/country.tsx +59 -0
  387. package/packages/components/data-display/data-list.tsx +38 -0
  388. package/packages/components/data-display/date.tsx +215 -0
  389. package/packages/components/data-display/empty.tsx +25 -0
  390. package/packages/components/data-display/name.tsx +25 -0
  391. package/packages/components/data-display/phone-number.tsx +22 -0
  392. package/packages/components/data-display/role-badge.tsx +33 -0
  393. package/packages/components/data-display/statistic.tsx +141 -0
  394. package/packages/components/dialogs/confirm-dialog.tsx +51 -0
  395. package/packages/components/dialogs/detail-dialog/component/header.tsx +14 -0
  396. package/packages/components/dialogs/detail-dialog/component/main.tsx +39 -0
  397. package/packages/components/dialogs/detail-dialog/component/sidebar.tsx +747 -0
  398. package/packages/components/dialogs/detail-dialog/component/wrapper.tsx +17 -0
  399. package/packages/components/dialogs/detail-dialog/index.tsx +100 -0
  400. package/packages/components/dialogs/error-dialog.tsx +48 -0
  401. package/packages/components/dialogs/form-dialog.tsx +106 -0
  402. package/packages/components/dialogs/loading-dialog.tsx +23 -0
  403. package/packages/components/forms/combobox-field.tsx +113 -0
  404. package/packages/components/forms/date-field.tsx +65 -0
  405. package/packages/components/forms/form-wrapper.tsx +146 -0
  406. package/packages/components/forms/multi-select-field.tsx +56 -0
  407. package/packages/components/forms/number-field.tsx +56 -0
  408. package/packages/components/forms/password-field.tsx +38 -0
  409. package/packages/components/forms/select-field.tsx +58 -0
  410. package/packages/components/forms/switch-field.tsx +42 -0
  411. package/packages/components/forms/text-field.tsx +80 -0
  412. package/packages/components/forms/textarea-field.tsx +53 -0
  413. package/packages/components/index.tsx +0 -0
  414. package/packages/components/layouts/flex.tsx +110 -0
  415. package/packages/components/layouts/main/content.tsx +11 -0
  416. package/packages/components/layouts/main/header.tsx +53 -0
  417. package/packages/components/layouts/main/index.tsx +3 -0
  418. package/packages/components/layouts/main/wrapper.tsx +5 -0
  419. package/packages/components/table/data-table-pagination.tsx +99 -0
  420. package/packages/components/table/data-table.tsx +328 -0
  421. package/packages/components/table/index.tsx +126 -0
  422. package/packages/components/typography/paragraph.tsx +32 -0
  423. package/packages/components/typography/title.tsx +36 -0
  424. package/packages/components/ui/alert-dialog.tsx +173 -0
  425. package/packages/components/ui/alert.tsx +71 -0
  426. package/packages/components/ui/aspect-ratio.tsx +20 -0
  427. package/packages/components/ui/avatar.tsx +52 -0
  428. package/packages/components/ui/badge.tsx +63 -0
  429. package/packages/components/ui/breadcrumb.tsx +110 -0
  430. package/packages/components/ui/button.tsx +88 -0
  431. package/packages/components/ui/buttons/add-new.tsx +26 -0
  432. package/packages/components/ui/buttons/refresh.tsx +30 -0
  433. package/packages/components/ui/calendar.tsx +209 -0
  434. package/packages/components/ui/card.tsx +95 -0
  435. package/packages/components/ui/carousel.tsx +241 -0
  436. package/packages/components/ui/checkbox.tsx +44 -0
  437. package/packages/components/ui/collapsible.tsx +33 -0
  438. package/packages/components/ui/command.tsx +217 -0
  439. package/packages/components/ui/context-menu.tsx +258 -0
  440. package/packages/components/ui/dialog.tsx +174 -0
  441. package/packages/components/ui/dropdown-menu.tsx +318 -0
  442. package/packages/components/ui/file-uploader.tsx +372 -0
  443. package/packages/components/ui/form.tsx +168 -0
  444. package/packages/components/ui/hover-card.tsx +43 -0
  445. package/packages/components/ui/input-otp.tsx +76 -0
  446. package/packages/components/ui/input.tsx +59 -0
  447. package/packages/components/ui/inputs/number-input.tsx +325 -0
  448. package/packages/components/ui/inputs/password-input.tsx +35 -0
  449. package/packages/components/ui/inputs/search-input.tsx +24 -0
  450. package/packages/components/ui/label.tsx +29 -0
  451. package/packages/components/ui/menubar.tsx +275 -0
  452. package/packages/components/ui/multi-select.tsx +693 -0
  453. package/packages/components/ui/navigation-menu.tsx +170 -0
  454. package/packages/components/ui/pagination.tsx +128 -0
  455. package/packages/components/ui/popover.tsx +64 -0
  456. package/packages/components/ui/progress.tsx +30 -0
  457. package/packages/components/ui/radio-group.tsx +53 -0
  458. package/packages/components/ui/resizable.tsx +55 -0
  459. package/packages/components/ui/scroll-area.tsx +51 -0
  460. package/packages/components/ui/select.tsx +246 -0
  461. package/packages/components/ui/separator.tsx +27 -0
  462. package/packages/components/ui/sheet.tsx +155 -0
  463. package/packages/components/ui/sidebar.tsx +751 -0
  464. package/packages/components/ui/skeleton.tsx +15 -0
  465. package/packages/components/ui/slider.tsx +62 -0
  466. package/packages/components/ui/sonner.tsx +43 -0
  467. package/packages/components/ui/switch.tsx +52 -0
  468. package/packages/components/ui/table.tsx +118 -0
  469. package/packages/components/ui/tabs.tsx +85 -0
  470. package/packages/components/ui/textarea.tsx +47 -0
  471. package/packages/components/ui/toggle-group.tsx +72 -0
  472. package/packages/components/ui/toggle.tsx +47 -0
  473. package/packages/components/ui/tooltip.tsx +71 -0
  474. package/packages/constants.tsx +79 -0
  475. package/packages/hooks/use-callback-ref.ts +27 -0
  476. package/packages/hooks/use-controllable-state.ts +67 -0
  477. package/packages/hooks/use-mobile.ts +21 -0
  478. package/packages/index.css +392 -0
  479. package/packages/lib/utils.ts +28 -0
  480. package/packages/types.ts +50 -0
  481. package/dist/add-new-BaABbnol.js.map +0 -1
  482. package/dist/add-new-DUoS_-n2.cjs.map +0 -1
  483. package/dist/alert-dialog-0KwdjY-6.js.map +0 -1
  484. package/dist/alert-dialog-D5ZqgIiC.cjs.map +0 -1
  485. package/dist/badge-CRXT2dH_.cjs.map +0 -1
  486. package/dist/badge-D_qEoSL8.js.map +0 -1
  487. package/dist/button-Bku3bKv9.js.map +0 -1
  488. package/dist/button-Dzv_nos1.cjs.map +0 -1
  489. package/dist/card-D8cxRC5y.js.map +0 -1
  490. package/dist/card-Dta5eW8u.cjs.map +0 -1
  491. package/dist/cards/simple-card.cjs.map +0 -1
  492. package/dist/cards/simple-card.js.map +0 -1
  493. package/dist/chunk-CUT6urMc.cjs +0 -1
  494. package/dist/command-CsntVmEz.cjs.map +0 -1
  495. package/dist/command-_L9bD9a-.js.map +0 -1
  496. package/dist/data-display/country.cjs.map +0 -1
  497. package/dist/data-display/country.js.map +0 -1
  498. package/dist/data-display/data-list.cjs.map +0 -1
  499. package/dist/data-display/data-list.js.map +0 -1
  500. package/dist/data-display/empty.cjs.map +0 -1
  501. package/dist/data-display/empty.js.map +0 -1
  502. package/dist/data-display/name.cjs.map +0 -1
  503. package/dist/data-display/name.js.map +0 -1
  504. package/dist/data-display/phone-number.cjs.map +0 -1
  505. package/dist/data-display/phone-number.js.map +0 -1
  506. package/dist/data-display/role-badge.cjs.map +0 -1
  507. package/dist/data-display/role-badge.js.map +0 -1
  508. package/dist/data-display/statistic.cjs.map +0 -1
  509. package/dist/data-display/statistic.js.map +0 -1
  510. package/dist/date-BMq_DNsv.js.map +0 -1
  511. package/dist/date-nd8WkPlx.cjs.map +0 -1
  512. package/dist/dialog-C4hf-Puw.js.map +0 -1
  513. package/dist/dialog-W-DmDMEE.cjs.map +0 -1
  514. package/dist/dialogs/confirm-dialog.cjs.map +0 -1
  515. package/dist/dialogs/confirm-dialog.js.map +0 -1
  516. package/dist/dialogs/detail-dialog/index.cjs.map +0 -1
  517. package/dist/dialogs/detail-dialog/index.js.map +0 -1
  518. package/dist/dialogs/form-dialog.cjs.map +0 -1
  519. package/dist/dialogs/form-dialog.js.map +0 -1
  520. package/dist/dialogs/loading-dialog.cjs.map +0 -1
  521. package/dist/dialogs/loading-dialog.js.map +0 -1
  522. package/dist/dropdown-menu-Bv18S56o.cjs.map +0 -1
  523. package/dist/dropdown-menu-jCQwh2rG.js.map +0 -1
  524. package/dist/error-dialog-D_4WL-Hj.js.map +0 -1
  525. package/dist/error-dialog-DpQgL5Hy.cjs.map +0 -1
  526. package/dist/flex-CNA_SId-.cjs.map +0 -1
  527. package/dist/flex-ILvQrYMJ.js.map +0 -1
  528. package/dist/form-CA4hhSV5.js.map +0 -1
  529. package/dist/form-CYZkgobJ.cjs.map +0 -1
  530. package/dist/form-wrapper-BYbwt1zC.cjs.map +0 -1
  531. package/dist/form-wrapper-D-2Uz518.js.map +0 -1
  532. package/dist/input-DXEBB91E.cjs.map +0 -1
  533. package/dist/input-FzKbxUq2.js.map +0 -1
  534. package/dist/label-CunjD1rx.cjs.map +0 -1
  535. package/dist/label-Cxbctr6x.js.map +0 -1
  536. package/dist/layouts/main/index.cjs.map +0 -1
  537. package/dist/layouts/main/index.js.map +0 -1
  538. package/dist/paragraph-Bey03JkA.js.map +0 -1
  539. package/dist/paragraph-ZxI8zxuf.cjs.map +0 -1
  540. package/dist/progress-BnnOfAZN.cjs.map +0 -1
  541. package/dist/progress-CBccqUUJ.js.map +0 -1
  542. package/dist/refresh-BHt_h3N_.js.map +0 -1
  543. package/dist/refresh-DrolZxuC.cjs.map +0 -1
  544. package/dist/scroll-area-Bdb_LSFF.js.map +0 -1
  545. package/dist/scroll-area-DWWpaz5j.cjs.map +0 -1
  546. package/dist/search-input-Bf4-FeWu.cjs.map +0 -1
  547. package/dist/search-input-L2sq0eB0.js.map +0 -1
  548. package/dist/select-CWUsisI0.js.map +0 -1
  549. package/dist/select-ZSyt5zCe.cjs.map +0 -1
  550. package/dist/separator-BpsL0PlX.js.map +0 -1
  551. package/dist/separator-DTB3sDNG.cjs.map +0 -1
  552. package/dist/sheet-C8r2QGpq.js.map +0 -1
  553. package/dist/sheet-CCwbAaA6.cjs.map +0 -1
  554. package/dist/sidebar-BLPMNltJ.cjs.map +0 -1
  555. package/dist/sidebar-C166f_9B.js.map +0 -1
  556. package/dist/skeleton-DYmX0k94.js.map +0 -1
  557. package/dist/skeleton-m3giaF4T.cjs +0 -2
  558. package/dist/skeleton-m3giaF4T.cjs.map +0 -1
  559. package/dist/table/index.cjs.map +0 -1
  560. package/dist/table/index.js.map +0 -1
  561. package/dist/table-BSeev7T0.cjs.map +0 -1
  562. package/dist/table-BvA64mE8.js.map +0 -1
  563. package/dist/title-DTkABsIG.js.map +0 -1
  564. package/dist/title-xsPZpQpb.cjs.map +0 -1
  565. package/dist/toggle-CfL3GVe2.cjs.map +0 -1
  566. package/dist/toggle-D_MDMruK.js.map +0 -1
  567. package/dist/tooltip-Beb-_EPp.cjs.map +0 -1
  568. package/dist/tooltip-Dzyf5smh.js.map +0 -1
  569. package/dist/types-CrbWxjnp.cjs.map +0 -1
  570. package/dist/types-DaIHddx7.js.map +0 -1
  571. package/dist/ui/alert.cjs.map +0 -1
  572. package/dist/ui/alert.js.map +0 -1
  573. package/dist/ui/aspect-ratio.cjs.map +0 -1
  574. package/dist/ui/aspect-ratio.js.map +0 -1
  575. package/dist/ui/avatar.cjs.map +0 -1
  576. package/dist/ui/avatar.js.map +0 -1
  577. package/dist/ui/breadcrumb.cjs.map +0 -1
  578. package/dist/ui/breadcrumb.js.map +0 -1
  579. package/dist/ui/calendar.cjs.map +0 -1
  580. package/dist/ui/calendar.js.map +0 -1
  581. package/dist/ui/carousel.cjs.map +0 -1
  582. package/dist/ui/carousel.js.map +0 -1
  583. package/dist/ui/collapsible.cjs.map +0 -1
  584. package/dist/ui/collapsible.js.map +0 -1
  585. package/dist/ui/context-menu.cjs.map +0 -1
  586. package/dist/ui/context-menu.js.map +0 -1
  587. package/dist/ui/file-uploader.cjs.map +0 -1
  588. package/dist/ui/file-uploader.js.map +0 -1
  589. package/dist/ui/hover-card.cjs.map +0 -1
  590. package/dist/ui/hover-card.js.map +0 -1
  591. package/dist/ui/input-otp.cjs.map +0 -1
  592. package/dist/ui/input-otp.js.map +0 -1
  593. package/dist/ui/menubar.cjs.map +0 -1
  594. package/dist/ui/menubar.js.map +0 -1
  595. package/dist/ui/multi-select.cjs.map +0 -1
  596. package/dist/ui/multi-select.js.map +0 -1
  597. package/dist/ui/navigation-menu.cjs.map +0 -1
  598. package/dist/ui/navigation-menu.js.map +0 -1
  599. package/dist/ui/pagination.cjs.map +0 -1
  600. package/dist/ui/pagination.js.map +0 -1
  601. package/dist/ui/popover.cjs.map +0 -1
  602. package/dist/ui/popover.js.map +0 -1
  603. package/dist/ui/radio-group.cjs.map +0 -1
  604. package/dist/ui/radio-group.js.map +0 -1
  605. package/dist/ui/resizable.cjs.map +0 -1
  606. package/dist/ui/resizable.js.map +0 -1
  607. package/dist/ui/slider.cjs.map +0 -1
  608. package/dist/ui/slider.js.map +0 -1
  609. package/dist/ui/sonner.cjs.map +0 -1
  610. package/dist/ui/sonner.js.map +0 -1
  611. package/dist/ui/switch.cjs.map +0 -1
  612. package/dist/ui/switch.js.map +0 -1
  613. package/dist/ui/tabs.cjs.map +0 -1
  614. package/dist/ui/tabs.js.map +0 -1
  615. package/dist/ui/textarea.cjs.map +0 -1
  616. package/dist/ui/textarea.js.map +0 -1
  617. package/dist/ui/toggle-group.cjs.map +0 -1
  618. package/dist/ui/toggle-group.js.map +0 -1
  619. package/dist/utils-BsjVK5EW.cjs +0 -2
  620. package/dist/utils-BsjVK5EW.cjs.map +0 -1
  621. package/dist/utils-D9AH0PUV.js.map +0 -1
@@ -0,0 +1,751 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { Slot as SlotPrimitive } from "radix-ui";
4
+ import { cva, type VariantProps } from "class-variance-authority";
5
+ import { MenuIcon } from "lucide-react";
6
+
7
+ import { Button } from "@/components/ui/button";
8
+ import { Input } from "@/components/ui/input";
9
+ import { Separator } from "@/components/ui/separator";
10
+ import {
11
+ Sheet,
12
+ SheetContent,
13
+ SheetDescription,
14
+ SheetHeader,
15
+ SheetTitle,
16
+ } from "@/components/ui/sheet";
17
+ import { Skeleton } from "@/components/ui/skeleton";
18
+ import {
19
+ Tooltip,
20
+ TooltipContent,
21
+ TooltipProvider,
22
+ TooltipTrigger,
23
+ } from "@/components/ui/tooltip";
24
+ import { useIsMobile } from "@/hooks/use-mobile";
25
+ import { cn } from "@/lib/utils";
26
+
27
+ const SIDEBAR_COOKIE_NAME = "sidebar_state";
28
+ const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
29
+ const SIDEBAR_WIDTH = "16rem";
30
+ const SIDEBAR_WIDTH_MOBILE = "18rem";
31
+ const SIDEBAR_WIDTH_ICON = "3rem";
32
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b";
33
+
34
+ type SidebarContextProps = {
35
+ state: "expanded" | "collapsed";
36
+ open: boolean;
37
+ setOpen: (open: boolean) => void;
38
+ openMobile: boolean;
39
+ setOpenMobile: (open: boolean) => void;
40
+ isMobile: boolean;
41
+ toggleSidebar: () => void;
42
+ };
43
+
44
+ const SidebarContext = React.createContext<SidebarContextProps | null>(null);
45
+
46
+ function useSidebar() {
47
+ const context = React.useContext(SidebarContext);
48
+ if (!context) {
49
+ throw new Error("useSidebar must be used within a SidebarProvider.");
50
+ }
51
+
52
+ return context;
53
+ }
54
+
55
+ function SidebarProvider({
56
+ defaultOpen = true,
57
+ open: openProp,
58
+ onOpenChange: setOpenProp,
59
+ className,
60
+ style,
61
+ children,
62
+ ...props
63
+ }: React.ComponentProps<"div"> & {
64
+ defaultOpen?: boolean;
65
+ open?: boolean;
66
+ onOpenChange?: (open: boolean) => void;
67
+ }) {
68
+ const isMobile = useIsMobile();
69
+ const [openMobile, setOpenMobile] = React.useState(false);
70
+
71
+ // This is the internal state of the sidebar.
72
+ // We use openProp and setOpenProp for control from outside the component.
73
+ const [_open, _setOpen] = React.useState(defaultOpen);
74
+ const open = openProp ?? _open;
75
+ const setOpen = React.useCallback(
76
+ (value: boolean | ((value: boolean) => boolean)) => {
77
+ const openState = typeof value === "function" ? value(open) : value;
78
+ if (setOpenProp) {
79
+ setOpenProp(openState);
80
+ } else {
81
+ _setOpen(openState);
82
+ }
83
+
84
+ // This sets the cookie to keep the sidebar state.
85
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
86
+ },
87
+ [setOpenProp, open],
88
+ );
89
+
90
+ // Helper to toggle the sidebar.
91
+ const toggleSidebar = React.useCallback(() => {
92
+ return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);
93
+ }, [isMobile, setOpen, setOpenMobile]);
94
+
95
+ // Adds a keyboard shortcut to toggle the sidebar.
96
+ React.useEffect(() => {
97
+ const handleKeyDown = (event: KeyboardEvent) => {
98
+ if (
99
+ event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
100
+ (event.metaKey || event.ctrlKey)
101
+ ) {
102
+ event.preventDefault();
103
+ toggleSidebar();
104
+ }
105
+ };
106
+
107
+ window.addEventListener("keydown", handleKeyDown);
108
+ return () => window.removeEventListener("keydown", handleKeyDown);
109
+ }, [toggleSidebar]);
110
+
111
+ // We add a state so that we can do data-state="expanded" or "collapsed".
112
+ // This makes it easier to style the sidebar with Tailwind classes.
113
+ const state = open ? "expanded" : "collapsed";
114
+
115
+ const contextValue = React.useMemo<SidebarContextProps>(
116
+ () => ({
117
+ state,
118
+ isMobile,
119
+
120
+ toggleSidebar,
121
+
122
+ open,
123
+ setOpen,
124
+
125
+ openMobile,
126
+ setOpenMobile,
127
+ }),
128
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],
129
+ );
130
+
131
+ return (
132
+ <SidebarContext.Provider value={contextValue}>
133
+ <TooltipProvider delayDuration={0}>
134
+ <div
135
+ data-slot="sidebar-wrapper"
136
+ style={
137
+ {
138
+ "--sidebar-width": SIDEBAR_WIDTH,
139
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
140
+ ...style,
141
+ } as React.CSSProperties
142
+ }
143
+ className={cn(
144
+ "group/sidebar-wrapper",
145
+ "has-data-[variant=inset]:bg-sidebar",
146
+ "flex min-h-svh w-full",
147
+ className,
148
+ )}
149
+ {...props}
150
+ >
151
+ {children}
152
+ </div>
153
+ </TooltipProvider>
154
+ </SidebarContext.Provider>
155
+ );
156
+ }
157
+
158
+ function Sidebar({
159
+ side = "left",
160
+ variant = "sidebar",
161
+ collapsible = "offcanvas",
162
+ className,
163
+ children,
164
+ ...props
165
+ }: React.ComponentProps<"div"> & {
166
+ side?: "left" | "right";
167
+ variant?: "sidebar" | "floating" | "inset";
168
+ collapsible?: "offcanvas" | "icon" | "none";
169
+ }) {
170
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
171
+
172
+ if (collapsible === "none") {
173
+ return (
174
+ <aside
175
+ data-slot="sidebar"
176
+ className={cn(
177
+ "bg-sidebar",
178
+ "text-sidebar-foreground",
179
+ "flex h-full w-(--sidebar-width) flex-col",
180
+ "border-r",
181
+ className,
182
+ )}
183
+ {...props}
184
+ >
185
+ {children}
186
+ </aside>
187
+ );
188
+ }
189
+
190
+ if (isMobile) {
191
+ return (
192
+ <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>
193
+ <SheetContent
194
+ data-sidebar="sidebar"
195
+ data-slot="sidebar"
196
+ data-mobile="true"
197
+ className="bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden"
198
+ style={
199
+ {
200
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE,
201
+ } as React.CSSProperties
202
+ }
203
+ side={side}
204
+ >
205
+ <SheetHeader className="sr-only">
206
+ <SheetTitle>Sidebar</SheetTitle>
207
+ <SheetDescription>Displays the mobile sidebar.</SheetDescription>
208
+ </SheetHeader>
209
+ <div className="flex h-full w-full flex-col">{children}</div>
210
+ </SheetContent>
211
+ </Sheet>
212
+ );
213
+ }
214
+
215
+ return (
216
+ <aside
217
+ className="group peer text-sidebar-foreground bg-card hidden md:block"
218
+ data-state={state}
219
+ data-collapsible={state === "collapsed" ? collapsible : ""}
220
+ data-variant={variant}
221
+ data-side={side}
222
+ data-slot="sidebar"
223
+ >
224
+ {/* This is what handles the sidebar gap on desktop */}
225
+ <div
226
+ data-slot="sidebar-gap"
227
+ className={cn(
228
+ "relative",
229
+ "bg-transparent",
230
+ "transition-[width] duration-200 ease-linear",
231
+ "h-14 w-(--sidebar-width)",
232
+ "group-data-[collapsible=offcanvas]:w-0",
233
+ "group-data-[side=right]:rotate-180",
234
+ variant === "floating" || variant === "inset"
235
+ ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]"
236
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)",
237
+ )}
238
+ />
239
+ <div
240
+ data-slot="sidebar-container"
241
+ className={cn(
242
+ "hidden md:flex",
243
+ "fixed inset-y-0 top-14 z-10",
244
+ "h-[calc(100svh-3.5rem)] w-(--sidebar-width)",
245
+ "border-r",
246
+ "transition-[left,right,width] duration-200 ease-linear",
247
+ side === "left" &&
248
+ "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]",
249
+ side === "right" &&
250
+ "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
251
+ // Adjust the padding for floating and inset variants.
252
+ variant === "floating" || variant === "inset"
253
+ ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
254
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
255
+ className,
256
+ )}
257
+ {...props}
258
+ >
259
+ <div
260
+ data-sidebar="sidebar"
261
+ data-slot="sidebar-inner"
262
+ className={cn(
263
+ "flex size-full flex-col",
264
+ "group-data-[variant=floating]:rounded-lg",
265
+ "group-data-[variant=floating]:border",
266
+ "group-data-[variant=floating]:border-sidebar-border",
267
+ "group-data-[variant=floating]:shadow-sm",
268
+ )}
269
+ >
270
+ {children}
271
+ </div>
272
+ </div>
273
+ </aside>
274
+ );
275
+ }
276
+
277
+ function SidebarTrigger({
278
+ className,
279
+ onClick,
280
+ ...props
281
+ }: React.ComponentProps<typeof Button>) {
282
+ const { toggleSidebar } = useSidebar();
283
+
284
+ return (
285
+ <Button
286
+ data-sidebar="trigger"
287
+ data-slot="sidebar-trigger"
288
+ variant="ghost"
289
+ size="icon"
290
+ className={cn("size-10 rounded-full", className)}
291
+ onClick={(event) => {
292
+ onClick?.(event);
293
+ toggleSidebar();
294
+ }}
295
+ {...props}
296
+ >
297
+ <MenuIcon className="!size-6" />
298
+ <span className="sr-only">Toggle Sidebar</span>
299
+ </Button>
300
+ );
301
+ }
302
+
303
+ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
304
+ const { toggleSidebar } = useSidebar();
305
+
306
+ return (
307
+ <button
308
+ data-sidebar="rail"
309
+ data-slot="sidebar-rail"
310
+ aria-label="Toggle Sidebar"
311
+ tabIndex={-1}
312
+ onClick={toggleSidebar}
313
+ title="Toggle Sidebar"
314
+ className={cn(
315
+ "hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex",
316
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
317
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
318
+ "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full",
319
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
320
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
321
+ className,
322
+ )}
323
+ {...props}
324
+ />
325
+ );
326
+ }
327
+
328
+ function SidebarInset({
329
+ className,
330
+ children,
331
+ ...props
332
+ }: React.ComponentProps<"main">) {
333
+ return (
334
+ <main
335
+ data-slot="sidebar-inset"
336
+ className={cn("w-full", "relative", "flex flex-1 flex-col", className)}
337
+ {...props}
338
+ >
339
+ <div className="h-14 w-full" />
340
+ <div className={cn("flex-1 inset-shadow-sm")}>{children}</div>
341
+ </main>
342
+ );
343
+ }
344
+
345
+ function SidebarInput({
346
+ className,
347
+ ...props
348
+ }: React.ComponentProps<typeof Input>) {
349
+ return (
350
+ <Input
351
+ data-slot="sidebar-input"
352
+ data-sidebar="input"
353
+ className={cn("bg-background h-8 w-full shadow-none", className)}
354
+ {...props}
355
+ />
356
+ );
357
+ }
358
+
359
+ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
360
+ return (
361
+ <div
362
+ data-slot="sidebar-header"
363
+ data-sidebar="header"
364
+ className={cn("flex flex-col gap-2 p-2", className)}
365
+ {...props}
366
+ />
367
+ );
368
+ }
369
+
370
+ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
371
+ return (
372
+ <div
373
+ data-slot="sidebar-footer"
374
+ data-sidebar="footer"
375
+ className={cn("flex flex-col gap-2 p-2", className)}
376
+ {...props}
377
+ />
378
+ );
379
+ }
380
+
381
+ function SidebarSeparator({
382
+ className,
383
+ ...props
384
+ }: React.ComponentProps<typeof Separator>) {
385
+ return (
386
+ <Separator
387
+ data-slot="sidebar-separator"
388
+ data-sidebar="separator"
389
+ className={cn("bg-sidebar-border mx-2 w-auto", className)}
390
+ {...props}
391
+ />
392
+ );
393
+ }
394
+
395
+ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
396
+ return (
397
+ <div
398
+ data-slot="sidebar-content"
399
+ data-sidebar="content"
400
+ className={cn(
401
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
402
+ className,
403
+ )}
404
+ {...props}
405
+ />
406
+ );
407
+ }
408
+
409
+ function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
410
+ return (
411
+ <div
412
+ data-slot="sidebar-group"
413
+ data-sidebar="group"
414
+ className={cn("relative flex w-full min-w-0 flex-col p-2", className)}
415
+ {...props}
416
+ />
417
+ );
418
+ }
419
+
420
+ function SidebarGroupLabel({
421
+ className,
422
+ asChild = false,
423
+ ...props
424
+ }: React.ComponentProps<"div"> & { asChild?: boolean }) {
425
+ const Comp = asChild ? SlotPrimitive.Slot : "div";
426
+
427
+ return (
428
+ <Comp
429
+ data-slot="sidebar-group-label"
430
+ data-sidebar="group-label"
431
+ className={cn(
432
+ "text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
433
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
434
+ className,
435
+ )}
436
+ {...props}
437
+ />
438
+ );
439
+ }
440
+
441
+ function SidebarGroupAction({
442
+ className,
443
+ asChild = false,
444
+ ...props
445
+ }: React.ComponentProps<"button"> & { asChild?: boolean }) {
446
+ const Comp = asChild ? SlotPrimitive.Slot : "button";
447
+
448
+ return (
449
+ <Comp
450
+ data-slot="sidebar-group-action"
451
+ data-sidebar="group-action"
452
+ className={cn(
453
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
454
+ // Increases the hit area of the button on mobile.
455
+ "after:absolute after:-inset-2 md:after:hidden",
456
+ "group-data-[collapsible=icon]:hidden",
457
+ className,
458
+ )}
459
+ {...props}
460
+ />
461
+ );
462
+ }
463
+
464
+ function SidebarGroupContent({
465
+ className,
466
+ ...props
467
+ }: React.ComponentProps<"div">) {
468
+ return (
469
+ <div
470
+ data-slot="sidebar-group-content"
471
+ data-sidebar="group-content"
472
+ className={cn("w-full text-sm", className)}
473
+ {...props}
474
+ />
475
+ );
476
+ }
477
+
478
+ function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
479
+ return (
480
+ <ul
481
+ data-slot="sidebar-menu"
482
+ data-sidebar="menu"
483
+ className={cn("flex w-full min-w-0 flex-col gap-1", className)}
484
+ {...props}
485
+ />
486
+ );
487
+ }
488
+
489
+ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
490
+ return (
491
+ <li
492
+ data-slot="sidebar-menu-item"
493
+ data-sidebar="menu-item"
494
+ className={cn("group/menu-item relative", className)}
495
+ {...props}
496
+ />
497
+ );
498
+ }
499
+
500
+ const sidebarMenuButtonVariants = cva(
501
+ "peer/menu-button cursor-pointer flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
502
+ {
503
+ variants: {
504
+ variant: {
505
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
506
+ outline:
507
+ "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))]",
508
+ },
509
+ size: {
510
+ default: "h-8 text-sm",
511
+ sm: "h-7 text-xs",
512
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
513
+ },
514
+ },
515
+ defaultVariants: {
516
+ variant: "default",
517
+ size: "default",
518
+ },
519
+ },
520
+ );
521
+
522
+ function SidebarMenuButton({
523
+ asChild = false,
524
+ isActive = false,
525
+ variant = "default",
526
+ size = "default",
527
+ tooltip,
528
+ className,
529
+ ...props
530
+ }: React.ComponentProps<"button"> & {
531
+ asChild?: boolean;
532
+ isActive?: boolean;
533
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
534
+ } & VariantProps<typeof sidebarMenuButtonVariants>) {
535
+ const Comp = asChild ? SlotPrimitive.Slot : "button";
536
+ const { isMobile, state } = useSidebar();
537
+
538
+ const button = (
539
+ <Comp
540
+ data-slot="sidebar-menu-button"
541
+ data-sidebar="menu-button"
542
+ data-size={size}
543
+ data-active={isActive}
544
+ className={cn(sidebarMenuButtonVariants({ variant, size }), className)}
545
+ {...props}
546
+ />
547
+ );
548
+
549
+ if (!tooltip) {
550
+ return button;
551
+ }
552
+
553
+ if (typeof tooltip === "string") {
554
+ tooltip = {
555
+ children: tooltip,
556
+ };
557
+ }
558
+
559
+ return (
560
+ <Tooltip>
561
+ <TooltipTrigger asChild>{button}</TooltipTrigger>
562
+ <TooltipContent
563
+ side="right"
564
+ align="center"
565
+ hidden={state !== "collapsed" || isMobile}
566
+ {...tooltip}
567
+ />
568
+ </Tooltip>
569
+ );
570
+ }
571
+
572
+ function SidebarMenuAction({
573
+ className,
574
+ asChild = false,
575
+ showOnHover = false,
576
+ ...props
577
+ }: React.ComponentProps<"button"> & {
578
+ asChild?: boolean;
579
+ showOnHover?: boolean;
580
+ }) {
581
+ const Comp = asChild ? SlotPrimitive.Slot : "button";
582
+
583
+ return (
584
+ <Comp
585
+ data-slot="sidebar-menu-action"
586
+ data-sidebar="menu-action"
587
+ className={cn(
588
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
589
+ // Increases the hit area of the button on mobile.
590
+ "after:absolute after:-inset-2 md:after:hidden",
591
+ "peer-data-[size=sm]/menu-button:top-1",
592
+ "peer-data-[size=default]/menu-button:top-1.5",
593
+ "peer-data-[size=lg]/menu-button:top-2.5",
594
+ "group-data-[collapsible=icon]:hidden",
595
+ showOnHover &&
596
+ "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
597
+ className,
598
+ )}
599
+ {...props}
600
+ />
601
+ );
602
+ }
603
+
604
+ function SidebarMenuBadge({
605
+ className,
606
+ ...props
607
+ }: React.ComponentProps<"div">) {
608
+ return (
609
+ <div
610
+ data-slot="sidebar-menu-badge"
611
+ data-sidebar="menu-badge"
612
+ className={cn(
613
+ "text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none",
614
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
615
+ "peer-data-[size=sm]/menu-button:top-1",
616
+ "peer-data-[size=default]/menu-button:top-1.5",
617
+ "peer-data-[size=lg]/menu-button:top-2.5",
618
+ "group-data-[collapsible=icon]:hidden",
619
+ className,
620
+ )}
621
+ {...props}
622
+ />
623
+ );
624
+ }
625
+
626
+ function SidebarMenuSkeleton({
627
+ className,
628
+ showIcon = false,
629
+ ...props
630
+ }: React.ComponentProps<"div"> & {
631
+ showIcon?: boolean;
632
+ }) {
633
+ // Random width between 50 to 90%.
634
+ const width = React.useMemo(() => {
635
+ return `${Math.floor(Math.random() * 40) + 50}%`;
636
+ }, []);
637
+
638
+ return (
639
+ <div
640
+ data-slot="sidebar-menu-skeleton"
641
+ data-sidebar="menu-skeleton"
642
+ className={cn("flex h-8 items-center gap-2 rounded-md px-2", className)}
643
+ {...props}
644
+ >
645
+ {showIcon && (
646
+ <Skeleton
647
+ className="size-4 rounded-md"
648
+ data-sidebar="menu-skeleton-icon"
649
+ />
650
+ )}
651
+ <Skeleton
652
+ className="h-4 max-w-(--skeleton-width) flex-1"
653
+ data-sidebar="menu-skeleton-text"
654
+ style={
655
+ {
656
+ "--skeleton-width": width,
657
+ } as React.CSSProperties
658
+ }
659
+ />
660
+ </div>
661
+ );
662
+ }
663
+
664
+ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
665
+ return (
666
+ <ul
667
+ data-slot="sidebar-menu-sub"
668
+ data-sidebar="menu-sub"
669
+ className={cn(
670
+ "border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5",
671
+ "group-data-[collapsible=icon]:hidden",
672
+ className,
673
+ )}
674
+ {...props}
675
+ />
676
+ );
677
+ }
678
+
679
+ function SidebarMenuSubItem({
680
+ className,
681
+ ...props
682
+ }: React.ComponentProps<"li">) {
683
+ return (
684
+ <li
685
+ data-slot="sidebar-menu-sub-item"
686
+ data-sidebar="menu-sub-item"
687
+ className={cn("group/menu-sub-item relative", className)}
688
+ {...props}
689
+ />
690
+ );
691
+ }
692
+
693
+ function SidebarMenuSubButton({
694
+ asChild = false,
695
+ size = "md",
696
+ isActive = false,
697
+ className,
698
+ ...props
699
+ }: React.ComponentProps<"a"> & {
700
+ asChild?: boolean;
701
+ size?: "sm" | "md";
702
+ isActive?: boolean;
703
+ }) {
704
+ const Comp = asChild ? SlotPrimitive.Slot : "a";
705
+
706
+ return (
707
+ <Comp
708
+ data-slot="sidebar-menu-sub-button"
709
+ data-sidebar="menu-sub-button"
710
+ data-size={size}
711
+ data-active={isActive}
712
+ className={cn(
713
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
714
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
715
+ size === "sm" && "text-xs",
716
+ size === "md" && "text-sm",
717
+ "group-data-[collapsible=icon]:hidden",
718
+ className,
719
+ )}
720
+ {...props}
721
+ />
722
+ );
723
+ }
724
+
725
+ export {
726
+ Sidebar,
727
+ SidebarContent,
728
+ SidebarFooter,
729
+ SidebarGroup,
730
+ SidebarGroupAction,
731
+ SidebarGroupContent,
732
+ SidebarGroupLabel,
733
+ SidebarHeader,
734
+ SidebarInput,
735
+ SidebarInset,
736
+ SidebarMenu,
737
+ SidebarMenuAction,
738
+ SidebarMenuBadge,
739
+ SidebarMenuButton,
740
+ SidebarMenuItem,
741
+ SidebarMenuSkeleton,
742
+ SidebarMenuSub,
743
+ SidebarMenuSubButton,
744
+ SidebarMenuSubItem,
745
+ SidebarProvider,
746
+ SidebarRail,
747
+ SidebarSeparator,
748
+ SidebarTrigger,
749
+ // eslint-disable-next-line react-refresh/only-export-components
750
+ useSidebar,
751
+ };