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