ikoncomponents 1.4.8 → 1.5.0

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 (576) hide show
  1. package/bin.js +2 -0
  2. package/dist/commands/init.js +57 -0
  3. package/dist/index.js +3 -116
  4. package/dist/utlis/copyDir.js +7 -0
  5. package/package.json +18 -92
  6. package/templates/default/hooks/use-mobile.ts +19 -0
  7. package/templates/default/ikonShade/accordion.tsx +66 -0
  8. package/templates/default/ikonShade/alert-dialog.tsx +179 -0
  9. package/templates/default/ikonShade/alert.tsx +66 -0
  10. package/templates/default/ikonShade/aspect-ratio.tsx +11 -0
  11. package/templates/default/ikonShade/avatar.tsx +53 -0
  12. package/templates/default/ikonShade/badge.tsx +49 -0
  13. package/templates/default/ikonShade/breadcrumb.tsx +109 -0
  14. package/templates/default/ikonShade/button.tsx +64 -0
  15. package/templates/default/ikonShade/calendar.tsx +227 -0
  16. package/templates/default/ikonShade/card.tsx +92 -0
  17. package/templates/default/ikonShade/checkbox.tsx +33 -0
  18. package/templates/default/ikonShade/collapsible.tsx +33 -0
  19. package/templates/default/ikonShade/command.tsx +184 -0
  20. package/templates/default/ikonShade/date-input.tsx +259 -0
  21. package/templates/default/ikonShade/date-range-picker.tsx +103 -0
  22. package/templates/default/ikonShade/dialog.tsx +143 -0
  23. package/templates/default/ikonShade/drawer.tsx +134 -0
  24. package/templates/default/ikonShade/dropdown-menu.tsx +259 -0
  25. package/templates/default/ikonShade/form.tsx +166 -0
  26. package/templates/default/ikonShade/hover-card.tsx +44 -0
  27. package/templates/default/ikonShade/input-otp.tsx +71 -0
  28. package/templates/default/ikonShade/input.tsx +22 -0
  29. package/templates/default/ikonShade/label.tsx +24 -0
  30. package/templates/default/ikonShade/navigation-menu.tsx +195 -0
  31. package/templates/default/ikonShade/popover.tsx +48 -0
  32. package/templates/default/ikonShade/progress.tsx +40 -0
  33. package/templates/default/ikonShade/radio-group.tsx +45 -0
  34. package/templates/default/ikonShade/scroll-area.tsx +58 -0
  35. package/templates/default/ikonShade/select.tsx +184 -0
  36. package/templates/default/ikonShade/separator.tsx +28 -0
  37. package/templates/default/ikonShade/sheet.tsx +139 -0
  38. package/templates/default/ikonShade/sidebar.tsx +726 -0
  39. package/templates/default/ikonShade/skeleton.tsx +15 -0
  40. package/templates/default/ikonShade/slider.tsx +64 -0
  41. package/templates/default/ikonShade/sonner.tsx +25 -0
  42. package/templates/default/ikonShade/switch.tsx +31 -0
  43. package/templates/default/ikonShade/table.tsx +116 -0
  44. package/templates/default/ikonShade/tabs.tsx +67 -0
  45. package/templates/default/ikonShade/textarea.tsx +18 -0
  46. package/templates/default/ikonShade/toggle-group.tsx +83 -0
  47. package/templates/default/ikonShade/toggle.tsx +47 -0
  48. package/templates/default/ikonShade/tooltip.tsx +65 -0
  49. package/templates/default/ikonShade/workflow.tsx +119 -0
  50. package/templates/default/ikoncomponents/action-menu/index.tsx +108 -0
  51. package/templates/default/ikoncomponents/action-menu/type.ts +18 -0
  52. package/templates/default/ikoncomponents/activity-sheet/index.tsx +63 -0
  53. package/templates/default/ikoncomponents/alert-dialog/dialog-context.tsx +65 -0
  54. package/templates/default/ikoncomponents/alert-dialog/index.tsx +80 -0
  55. package/templates/default/ikoncomponents/app-breadcrumb/BreadcrumbProvider.tsx +68 -0
  56. package/templates/default/ikoncomponents/app-breadcrumb/index.tsx +222 -0
  57. package/templates/default/ikoncomponents/big-calendar/big-calender-event/index.tsx +38 -0
  58. package/templates/default/ikoncomponents/big-calendar/big-calender-toolbar/index.tsx +81 -0
  59. package/templates/default/ikoncomponents/big-calendar/index.css +879 -0
  60. package/templates/default/ikoncomponents/big-calendar/index.tsx +59 -0
  61. package/templates/default/ikoncomponents/big-calendar/type.ts +37 -0
  62. package/templates/default/ikoncomponents/buttons/index.tsx +127 -0
  63. package/templates/default/ikoncomponents/combobox-input/index.tsx +75 -0
  64. package/templates/default/ikoncomponents/combobox-input/type.ts +14 -0
  65. package/templates/default/ikoncomponents/custom-combo-dropdown/index.tsx +242 -0
  66. package/templates/default/ikoncomponents/data-table/datatable-column-filter/index.tsx +80 -0
  67. package/templates/default/ikoncomponents/data-table/datatable-faceted-filter/index.tsx +149 -0
  68. package/templates/default/ikoncomponents/data-table/datatable-filter-menu/index.tsx +98 -0
  69. package/templates/default/ikoncomponents/data-table/datatable-pagination/index.tsx +119 -0
  70. package/templates/default/ikoncomponents/data-table/datatable-toolbar/index.tsx +45 -0
  71. package/templates/default/ikoncomponents/data-table/function.ts +7 -0
  72. package/templates/default/ikoncomponents/data-table/index.tsx +549 -0
  73. package/templates/default/ikoncomponents/data-table/type.ts +75 -0
  74. package/templates/default/ikoncomponents/e-chart/index.tsx +183 -0
  75. package/templates/default/ikoncomponents/file-input/index.tsx +27 -0
  76. package/templates/default/ikoncomponents/fileUpload/index.tsx +121 -0
  77. package/templates/default/ikoncomponents/form-fields/combobox-input/index.tsx +111 -0
  78. package/templates/default/ikoncomponents/form-fields/combobox-input-value/index.tsx +121 -0
  79. package/templates/default/ikoncomponents/form-fields/date-input/index.tsx +80 -0
  80. package/templates/default/ikoncomponents/form-fields/file-input/index.tsx +9 -0
  81. package/templates/default/ikoncomponents/form-fields/input/index.tsx +27 -0
  82. package/{dist/ikoncomponents/form-fields/multi-combobox-input/index.js → templates/default/ikoncomponents/form-fields/multi-combobox-input/index.tsx} +574 -381
  83. package/templates/default/ikoncomponents/form-fields/otp-input/index.tsx +39 -0
  84. package/templates/default/ikoncomponents/form-fields/password-input/index.tsx +52 -0
  85. package/templates/default/ikoncomponents/form-fields/phone-input/index.tsx +7 -0
  86. package/templates/default/ikoncomponents/form-fields/textarea/index.tsx +28 -0
  87. package/templates/default/ikoncomponents/form-fields/types/index.ts +46 -0
  88. package/templates/default/ikoncomponents/glowing-effect/index.tsx +171 -0
  89. package/templates/default/ikoncomponents/icon/index.tsx +22 -0
  90. package/templates/default/ikoncomponents/image-cropper-upload/components/cropperImg.css +19 -0
  91. package/{dist/ikoncomponents/image-cropper-upload/components/newCropper.js → templates/default/ikoncomponents/image-cropper-upload/components/newCropper.tsx} +117 -85
  92. package/templates/default/ikoncomponents/image-cropper-upload/components/newImageUploadForm.tsx +352 -0
  93. package/templates/default/ikoncomponents/image-cropper-upload/cropper-form/index.tsx +250 -0
  94. package/templates/default/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.tsx +32 -0
  95. package/{dist/ikoncomponents/image-cropper-upload/image-cropper/index.js → templates/default/ikoncomponents/image-cropper-upload/image-cropper/index.tsx} +119 -87
  96. package/templates/default/ikoncomponents/image-cropper-upload/index.tsx +95 -0
  97. package/templates/default/ikoncomponents/image-cropper-upload/utils/index.ts +117 -0
  98. package/templates/default/ikoncomponents/loading-spinner/index.tsx +43 -0
  99. package/templates/default/ikoncomponents/main-layout/RefreshContext.tsx +30 -0
  100. package/templates/default/ikoncomponents/main-layout/SidebarNavContext.tsx +103 -0
  101. package/templates/default/ikoncomponents/main-layout/app-sidebar.tsx +36 -0
  102. package/templates/default/ikoncomponents/main-layout/footer.tsx +21 -0
  103. package/templates/default/ikoncomponents/main-layout/header.tsx +53 -0
  104. package/templates/default/ikoncomponents/main-layout/index.tsx +43 -0
  105. package/templates/default/ikoncomponents/main-layout/main-sidebar.tsx +389 -0
  106. package/templates/default/ikoncomponents/main-layout/nav-main.tsx +103 -0
  107. package/templates/default/ikoncomponents/multi-combobox/index.tsx +345 -0
  108. package/templates/default/ikoncomponents/no-data/index.tsx +11 -0
  109. package/templates/default/ikoncomponents/page-wrapper/index.tsx +30 -0
  110. package/templates/default/ikoncomponents/password-strength-meter/index.tsx +49 -0
  111. package/templates/default/ikoncomponents/phone-input/index.tsx +72 -0
  112. package/templates/default/ikoncomponents/provider-wrapper/index.tsx +32 -0
  113. package/templates/default/ikoncomponents/search-input/index.tsx +18 -0
  114. package/templates/default/ikoncomponents/sheet/index.tsx +34 -0
  115. package/templates/default/ikoncomponents/simple-widget/index.tsx +54 -0
  116. package/templates/default/ikoncomponents/skeleton-loader/skeleton-table.tsx +34 -0
  117. package/templates/default/ikoncomponents/skeleton-loader/skeleton-widget.tsx +13 -0
  118. package/templates/default/ikoncomponents/tabs/index.tsx +139 -0
  119. package/{dist/ikoncomponents/tabs/type.d.ts → templates/default/ikoncomponents/tabs/type.ts} +20 -20
  120. package/{dist/ikoncomponents/theme-toggle-btn/index.js → templates/default/ikoncomponents/theme-toggle-btn/index.tsx} +189 -118
  121. package/templates/default/ikoncomponents/title-progress/index.tsx +41 -0
  122. package/templates/default/ikoncomponents/tooltip/index.tsx +17 -0
  123. package/templates/default/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.tsx +33 -0
  124. package/templates/default/ikoncomponents/twolevel-dropdown/index.tsx +279 -0
  125. package/templates/default/ikoncomponents/upload-tab/index.tsx +237 -0
  126. package/templates/default/ikoncomponents/widgets/index.tsx +81 -0
  127. package/templates/default/ikoncomponents/widgets/type.ts +11 -0
  128. package/templates/default/ikoncomponents/work-in-progress/index.tsx +16 -0
  129. package/{dist/index.d.ts → templates/default/index.ts} +234 -139
  130. package/templates/default/styles.css +1159 -0
  131. package/templates/default/utils/actions/account/index.ts +33 -0
  132. package/templates/default/utils/actions/account/type.ts +4 -0
  133. package/{dist/utils/actions/auth/index.js → templates/default/utils/actions/auth/index.ts} +69 -58
  134. package/templates/default/utils/actions/common/revalidate.ts +18 -0
  135. package/templates/default/utils/actions/common/type.ts +4 -0
  136. package/{dist/utils/actions/common/utils.js → templates/default/utils/actions/common/utils.ts} +28 -25
  137. package/templates/default/utils/actions/software/index.ts +106 -0
  138. package/templates/default/utils/api/accountService/index.ts +103 -0
  139. package/templates/default/utils/api/accountService/type.ts +4 -0
  140. package/templates/default/utils/api/file-upload/index.ts +103 -0
  141. package/templates/default/utils/api/file-upload/type.ts +8 -0
  142. package/{dist/utils/api/ikonBaseApi.js → templates/default/utils/api/ikonBaseApi.ts} +132 -104
  143. package/templates/default/utils/api/loginService/index.ts +108 -0
  144. package/{dist/utils/api/loginService/type.d.ts → templates/default/utils/api/loginService/type.ts} +35 -32
  145. package/templates/default/utils/api/softwareService/index.ts +356 -0
  146. package/templates/default/utils/api/softwareService/type.ts +62 -0
  147. package/{dist/utils/border-radius-provider.js → templates/default/utils/border-radius-provider.tsx} +59 -35
  148. package/templates/default/utils/cn.ts +6 -0
  149. package/{dist/utils/font-provider.js → templates/default/utils/font-provider.tsx} +61 -37
  150. package/templates/default/utils/session/cookieSession.ts +49 -0
  151. package/templates/default/utils/theme-provider/index.tsx +11 -0
  152. package/templates/default/utils/token-management/index.ts +115 -0
  153. package/templates/default/utils/token-management/types.ts +6 -0
  154. package/dist/hooks/use-mobile.d.ts +0 -2
  155. package/dist/hooks/use-mobile.d.ts.map +0 -1
  156. package/dist/hooks/use-mobile.js +0 -15
  157. package/dist/ikoncomponents/action-menu/index.d.ts +0 -6
  158. package/dist/ikoncomponents/action-menu/index.d.ts.map +0 -1
  159. package/dist/ikoncomponents/action-menu/index.js +0 -42
  160. package/dist/ikoncomponents/action-menu/type.d.ts +0 -15
  161. package/dist/ikoncomponents/action-menu/type.d.ts.map +0 -1
  162. package/dist/ikoncomponents/action-menu/type.js +0 -1
  163. package/dist/ikoncomponents/activity-sheet/index.d.ts +0 -12
  164. package/dist/ikoncomponents/activity-sheet/index.d.ts.map +0 -1
  165. package/dist/ikoncomponents/activity-sheet/index.js +0 -23
  166. package/dist/ikoncomponents/alert-dialog/dialog-context.d.ts +0 -22
  167. package/dist/ikoncomponents/alert-dialog/dialog-context.d.ts.map +0 -1
  168. package/dist/ikoncomponents/alert-dialog/dialog-context.js +0 -30
  169. package/dist/ikoncomponents/alert-dialog/index.d.ts +0 -15
  170. package/dist/ikoncomponents/alert-dialog/index.d.ts.map +0 -1
  171. package/dist/ikoncomponents/alert-dialog/index.js +0 -20
  172. package/dist/ikoncomponents/app-breadcrumb/BreadcrumbProvider.d.ts +0 -19
  173. package/dist/ikoncomponents/app-breadcrumb/BreadcrumbProvider.d.ts.map +0 -1
  174. package/dist/ikoncomponents/app-breadcrumb/BreadcrumbProvider.js +0 -43
  175. package/dist/ikoncomponents/app-breadcrumb/index.d.ts +0 -6
  176. package/dist/ikoncomponents/app-breadcrumb/index.d.ts.map +0 -1
  177. package/dist/ikoncomponents/app-breadcrumb/index.js +0 -57
  178. package/dist/ikoncomponents/big-calendar/big-calender-event/index.d.ts +0 -6
  179. package/dist/ikoncomponents/big-calendar/big-calender-event/index.d.ts.map +0 -1
  180. package/dist/ikoncomponents/big-calendar/big-calender-event/index.js +0 -16
  181. package/dist/ikoncomponents/big-calendar/big-calender-toolbar/index.d.ts +0 -3
  182. package/dist/ikoncomponents/big-calendar/big-calender-toolbar/index.d.ts.map +0 -1
  183. package/dist/ikoncomponents/big-calendar/big-calender-toolbar/index.js +0 -39
  184. package/dist/ikoncomponents/big-calendar/index.d.ts +0 -4
  185. package/dist/ikoncomponents/big-calendar/index.d.ts.map +0 -1
  186. package/dist/ikoncomponents/big-calendar/index.js +0 -35
  187. package/dist/ikoncomponents/big-calendar/type.d.ts +0 -32
  188. package/dist/ikoncomponents/big-calendar/type.d.ts.map +0 -1
  189. package/dist/ikoncomponents/big-calendar/type.js +0 -1
  190. package/dist/ikoncomponents/buttons/index.d.ts +0 -19
  191. package/dist/ikoncomponents/buttons/index.d.ts.map +0 -1
  192. package/dist/ikoncomponents/buttons/index.js +0 -38
  193. package/dist/ikoncomponents/combobox-input/index.d.ts +0 -3
  194. package/dist/ikoncomponents/combobox-input/index.d.ts.map +0 -1
  195. package/dist/ikoncomponents/combobox-input/index.js +0 -18
  196. package/dist/ikoncomponents/combobox-input/type.d.ts +0 -14
  197. package/dist/ikoncomponents/combobox-input/type.d.ts.map +0 -1
  198. package/dist/ikoncomponents/combobox-input/type.js +0 -1
  199. package/dist/ikoncomponents/custom-combo-dropdown/index.d.ts +0 -22
  200. package/dist/ikoncomponents/custom-combo-dropdown/index.d.ts.map +0 -1
  201. package/dist/ikoncomponents/custom-combo-dropdown/index.js +0 -85
  202. package/dist/ikoncomponents/data-table/datatable-column-filter/index.d.ts +0 -3
  203. package/dist/ikoncomponents/data-table/datatable-column-filter/index.d.ts.map +0 -1
  204. package/dist/ikoncomponents/data-table/datatable-column-filter/index.js +0 -22
  205. package/dist/ikoncomponents/data-table/datatable-faceted-filter/index.d.ts +0 -3
  206. package/dist/ikoncomponents/data-table/datatable-faceted-filter/index.d.ts.map +0 -1
  207. package/dist/ikoncomponents/data-table/datatable-faceted-filter/index.js +0 -35
  208. package/dist/ikoncomponents/data-table/datatable-filter-menu/index.d.ts +0 -3
  209. package/dist/ikoncomponents/data-table/datatable-filter-menu/index.d.ts.map +0 -1
  210. package/dist/ikoncomponents/data-table/datatable-filter-menu/index.js +0 -38
  211. package/dist/ikoncomponents/data-table/datatable-pagination/index.d.ts +0 -3
  212. package/dist/ikoncomponents/data-table/datatable-pagination/index.d.ts.map +0 -1
  213. package/dist/ikoncomponents/data-table/datatable-pagination/index.js +0 -13
  214. package/dist/ikoncomponents/data-table/datatable-toolbar/index.d.ts +0 -3
  215. package/dist/ikoncomponents/data-table/datatable-toolbar/index.d.ts.map +0 -1
  216. package/dist/ikoncomponents/data-table/datatable-toolbar/index.js +0 -18
  217. package/dist/ikoncomponents/data-table/function.d.ts +0 -2
  218. package/dist/ikoncomponents/data-table/function.d.ts.map +0 -1
  219. package/dist/ikoncomponents/data-table/function.js +0 -6
  220. package/dist/ikoncomponents/data-table/index.d.ts +0 -3
  221. package/dist/ikoncomponents/data-table/index.d.ts.map +0 -1
  222. package/dist/ikoncomponents/data-table/index.js +0 -223
  223. package/dist/ikoncomponents/data-table/type.d.ts +0 -61
  224. package/dist/ikoncomponents/data-table/type.d.ts.map +0 -1
  225. package/dist/ikoncomponents/data-table/type.js +0 -1
  226. package/dist/ikoncomponents/e-chart/index.d.ts +0 -16
  227. package/dist/ikoncomponents/e-chart/index.d.ts.map +0 -1
  228. package/dist/ikoncomponents/e-chart/index.js +0 -115
  229. package/dist/ikoncomponents/file-input/index.d.ts +0 -2
  230. package/dist/ikoncomponents/file-input/index.d.ts.map +0 -1
  231. package/dist/ikoncomponents/file-input/index.js +0 -21
  232. package/dist/ikoncomponents/fileUpload/index.d.ts +0 -16
  233. package/dist/ikoncomponents/fileUpload/index.d.ts.map +0 -1
  234. package/dist/ikoncomponents/fileUpload/index.js +0 -69
  235. package/dist/ikoncomponents/form-fields/combobox-input/index.d.ts +0 -3
  236. package/dist/ikoncomponents/form-fields/combobox-input/index.d.ts.map +0 -1
  237. package/dist/ikoncomponents/form-fields/combobox-input/index.js +0 -21
  238. package/dist/ikoncomponents/form-fields/combobox-input-value/index.d.ts +0 -19
  239. package/dist/ikoncomponents/form-fields/combobox-input-value/index.d.ts.map +0 -1
  240. package/dist/ikoncomponents/form-fields/combobox-input-value/index.js +0 -26
  241. package/dist/ikoncomponents/form-fields/date-input/index.d.ts +0 -3
  242. package/dist/ikoncomponents/form-fields/date-input/index.d.ts.map +0 -1
  243. package/dist/ikoncomponents/form-fields/date-input/index.js +0 -15
  244. package/dist/ikoncomponents/form-fields/file-input/index.d.ts +0 -2
  245. package/dist/ikoncomponents/form-fields/file-input/index.d.ts.map +0 -1
  246. package/dist/ikoncomponents/form-fields/file-input/index.js +0 -4
  247. package/dist/ikoncomponents/form-fields/input/index.d.ts +0 -3
  248. package/dist/ikoncomponents/form-fields/input/index.d.ts.map +0 -1
  249. package/dist/ikoncomponents/form-fields/input/index.js +0 -18
  250. package/dist/ikoncomponents/form-fields/multi-combobox-input/index.d.ts +0 -7
  251. package/dist/ikoncomponents/form-fields/multi-combobox-input/index.d.ts.map +0 -1
  252. package/dist/ikoncomponents/form-fields/otp-input/index.d.ts +0 -3
  253. package/dist/ikoncomponents/form-fields/otp-input/index.d.ts.map +0 -1
  254. package/dist/ikoncomponents/form-fields/otp-input/index.js +0 -18
  255. package/dist/ikoncomponents/form-fields/password-input/index.d.ts +0 -3
  256. package/dist/ikoncomponents/form-fields/password-input/index.d.ts.map +0 -1
  257. package/dist/ikoncomponents/form-fields/password-input/index.js +0 -23
  258. package/dist/ikoncomponents/form-fields/phone-input/index.d.ts +0 -2
  259. package/dist/ikoncomponents/form-fields/phone-input/index.d.ts.map +0 -1
  260. package/dist/ikoncomponents/form-fields/phone-input/index.js +0 -4
  261. package/dist/ikoncomponents/form-fields/textarea/index.d.ts +0 -3
  262. package/dist/ikoncomponents/form-fields/textarea/index.d.ts.map +0 -1
  263. package/dist/ikoncomponents/form-fields/textarea/index.js +0 -18
  264. package/dist/ikoncomponents/form-fields/types/index.d.ts +0 -37
  265. package/dist/ikoncomponents/form-fields/types/index.d.ts.map +0 -1
  266. package/dist/ikoncomponents/form-fields/types/index.js +0 -1
  267. package/dist/ikoncomponents/glowing-effect/index.d.ts +0 -15
  268. package/dist/ikoncomponents/glowing-effect/index.d.ts.map +0 -1
  269. package/dist/ikoncomponents/glowing-effect/index.js +0 -84
  270. package/dist/ikoncomponents/icon/index.d.ts +0 -9
  271. package/dist/ikoncomponents/icon/index.d.ts.map +0 -1
  272. package/dist/ikoncomponents/icon/index.js +0 -23
  273. package/dist/ikoncomponents/image-cropper-upload/components/newCropper.d.ts +0 -16
  274. package/dist/ikoncomponents/image-cropper-upload/components/newCropper.d.ts.map +0 -1
  275. package/dist/ikoncomponents/image-cropper-upload/components/newImageUploadForm.d.ts +0 -8
  276. package/dist/ikoncomponents/image-cropper-upload/components/newImageUploadForm.d.ts.map +0 -1
  277. package/dist/ikoncomponents/image-cropper-upload/components/newImageUploadForm.js +0 -145
  278. package/dist/ikoncomponents/image-cropper-upload/cropper-form/index.d.ts +0 -7
  279. package/dist/ikoncomponents/image-cropper-upload/cropper-form/index.d.ts.map +0 -1
  280. package/dist/ikoncomponents/image-cropper-upload/cropper-form/index.js +0 -92
  281. package/dist/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.d.ts +0 -7
  282. package/dist/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.d.ts.map +0 -1
  283. package/dist/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.js +0 -14
  284. package/dist/ikoncomponents/image-cropper-upload/image-cropper/index.d.ts +0 -15
  285. package/dist/ikoncomponents/image-cropper-upload/image-cropper/index.d.ts.map +0 -1
  286. package/dist/ikoncomponents/image-cropper-upload/index.d.ts +0 -28
  287. package/dist/ikoncomponents/image-cropper-upload/index.d.ts.map +0 -1
  288. package/dist/ikoncomponents/image-cropper-upload/index.js +0 -49
  289. package/dist/ikoncomponents/image-cropper-upload/utils/index.d.ts +0 -17
  290. package/dist/ikoncomponents/image-cropper-upload/utils/index.d.ts.map +0 -1
  291. package/dist/ikoncomponents/image-cropper-upload/utils/index.js +0 -73
  292. package/dist/ikoncomponents/loading-spinner/index.d.ts +0 -10
  293. package/dist/ikoncomponents/loading-spinner/index.d.ts.map +0 -1
  294. package/dist/ikoncomponents/loading-spinner/index.js +0 -19
  295. package/dist/ikoncomponents/main-layout/RefreshContext.d.ts +0 -11
  296. package/dist/ikoncomponents/main-layout/RefreshContext.d.ts.map +0 -1
  297. package/dist/ikoncomponents/main-layout/RefreshContext.js +0 -17
  298. package/dist/ikoncomponents/main-layout/SidebarNavContext.d.ts +0 -34
  299. package/dist/ikoncomponents/main-layout/SidebarNavContext.d.ts.map +0 -1
  300. package/dist/ikoncomponents/main-layout/SidebarNavContext.js +0 -52
  301. package/dist/ikoncomponents/main-layout/app-sidebar.d.ts +0 -4
  302. package/dist/ikoncomponents/main-layout/app-sidebar.d.ts.map +0 -1
  303. package/dist/ikoncomponents/main-layout/app-sidebar.js +0 -24
  304. package/dist/ikoncomponents/main-layout/footer.d.ts +0 -2
  305. package/dist/ikoncomponents/main-layout/footer.d.ts.map +0 -1
  306. package/dist/ikoncomponents/main-layout/footer.js +0 -5
  307. package/dist/ikoncomponents/main-layout/header.d.ts +0 -4
  308. package/dist/ikoncomponents/main-layout/header.d.ts.map +0 -1
  309. package/dist/ikoncomponents/main-layout/header.js +0 -15
  310. package/dist/ikoncomponents/main-layout/index.d.ts +0 -7
  311. package/dist/ikoncomponents/main-layout/index.d.ts.map +0 -1
  312. package/dist/ikoncomponents/main-layout/index.js +0 -12
  313. package/dist/ikoncomponents/main-layout/main-sidebar.d.ts +0 -61
  314. package/dist/ikoncomponents/main-layout/main-sidebar.d.ts.map +0 -1
  315. package/dist/ikoncomponents/main-layout/main-sidebar.js +0 -119
  316. package/dist/ikoncomponents/main-layout/nav-main.d.ts +0 -12
  317. package/dist/ikoncomponents/main-layout/nav-main.d.ts.map +0 -1
  318. package/dist/ikoncomponents/main-layout/nav-main.js +0 -33
  319. package/dist/ikoncomponents/multi-combobox/index.d.ts +0 -14
  320. package/dist/ikoncomponents/multi-combobox/index.d.ts.map +0 -1
  321. package/dist/ikoncomponents/multi-combobox/index.js +0 -202
  322. package/dist/ikoncomponents/no-data/index.d.ts +0 -4
  323. package/dist/ikoncomponents/no-data/index.d.ts.map +0 -1
  324. package/dist/ikoncomponents/no-data/index.js +0 -5
  325. package/dist/ikoncomponents/page-wrapper/index.d.ts +0 -10
  326. package/dist/ikoncomponents/page-wrapper/index.d.ts.map +0 -1
  327. package/dist/ikoncomponents/page-wrapper/index.js +0 -7
  328. package/dist/ikoncomponents/password-strength-meter/index.d.ts +0 -4
  329. package/dist/ikoncomponents/password-strength-meter/index.d.ts.map +0 -1
  330. package/dist/ikoncomponents/password-strength-meter/index.js +0 -40
  331. package/dist/ikoncomponents/phone-input/index.d.ts +0 -2
  332. package/dist/ikoncomponents/phone-input/index.d.ts.map +0 -1
  333. package/dist/ikoncomponents/phone-input/index.js +0 -41
  334. package/dist/ikoncomponents/provider-wrapper/index.d.ts +0 -7
  335. package/dist/ikoncomponents/provider-wrapper/index.d.ts.map +0 -1
  336. package/dist/ikoncomponents/provider-wrapper/index.js +0 -10
  337. package/dist/ikoncomponents/search-input/index.d.ts +0 -2
  338. package/dist/ikoncomponents/search-input/index.d.ts.map +0 -1
  339. package/dist/ikoncomponents/search-input/index.js +0 -19
  340. package/dist/ikoncomponents/sheet/index.d.ts +0 -11
  341. package/dist/ikoncomponents/sheet/index.d.ts.map +0 -1
  342. package/dist/ikoncomponents/sheet/index.js +0 -6
  343. package/dist/ikoncomponents/simple-widget/index.d.ts +0 -15
  344. package/dist/ikoncomponents/simple-widget/index.d.ts.map +0 -1
  345. package/dist/ikoncomponents/simple-widget/index.js +0 -14
  346. package/dist/ikoncomponents/skeleton-loader/skeleton-table.d.ts +0 -6
  347. package/dist/ikoncomponents/skeleton-loader/skeleton-table.d.ts.map +0 -1
  348. package/dist/ikoncomponents/skeleton-loader/skeleton-table.js +0 -6
  349. package/dist/ikoncomponents/skeleton-loader/skeleton-widget.d.ts +0 -4
  350. package/dist/ikoncomponents/skeleton-loader/skeleton-widget.d.ts.map +0 -1
  351. package/dist/ikoncomponents/skeleton-loader/skeleton-widget.js +0 -5
  352. package/dist/ikoncomponents/tabs/index.d.ts +0 -3
  353. package/dist/ikoncomponents/tabs/index.d.ts.map +0 -1
  354. package/dist/ikoncomponents/tabs/index.js +0 -50
  355. package/dist/ikoncomponents/tabs/type.d.ts.map +0 -1
  356. package/dist/ikoncomponents/tabs/type.js +0 -2
  357. package/dist/ikoncomponents/theme-toggle-btn/index.d.ts +0 -2
  358. package/dist/ikoncomponents/theme-toggle-btn/index.d.ts.map +0 -1
  359. package/dist/ikoncomponents/title-progress/index.d.ts +0 -13
  360. package/dist/ikoncomponents/title-progress/index.d.ts.map +0 -1
  361. package/dist/ikoncomponents/title-progress/index.js +0 -10
  362. package/dist/ikoncomponents/tooltip/index.d.ts +0 -6
  363. package/dist/ikoncomponents/tooltip/index.d.ts.map +0 -1
  364. package/dist/ikoncomponents/tooltip/index.js +0 -5
  365. package/dist/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.d.ts +0 -10
  366. package/dist/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.d.ts.map +0 -1
  367. package/dist/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.js +0 -24
  368. package/dist/ikoncomponents/twolevel-dropdown/index.d.ts +0 -32
  369. package/dist/ikoncomponents/twolevel-dropdown/index.d.ts.map +0 -1
  370. package/dist/ikoncomponents/twolevel-dropdown/index.js +0 -143
  371. package/dist/ikoncomponents/upload-tab/index.d.ts +0 -2
  372. package/dist/ikoncomponents/upload-tab/index.d.ts.map +0 -1
  373. package/dist/ikoncomponents/upload-tab/index.js +0 -92
  374. package/dist/ikoncomponents/widgets/index.d.ts +0 -3
  375. package/dist/ikoncomponents/widgets/index.d.ts.map +0 -1
  376. package/dist/ikoncomponents/widgets/index.js +0 -14
  377. package/dist/ikoncomponents/widgets/type.d.ts +0 -11
  378. package/dist/ikoncomponents/widgets/type.d.ts.map +0 -1
  379. package/dist/ikoncomponents/widgets/type.js +0 -2
  380. package/dist/ikoncomponents/work-in-progress/index.d.ts +0 -2
  381. package/dist/ikoncomponents/work-in-progress/index.d.ts.map +0 -1
  382. package/dist/ikoncomponents/work-in-progress/index.js +0 -4
  383. package/dist/index.d.ts.map +0 -1
  384. package/dist/shadcn/accordion.d.ts +0 -8
  385. package/dist/shadcn/accordion.d.ts.map +0 -1
  386. package/dist/shadcn/accordion.js +0 -33
  387. package/dist/shadcn/alert-dialog.d.ts +0 -21
  388. package/dist/shadcn/alert-dialog.d.ts.map +0 -1
  389. package/dist/shadcn/alert-dialog.js +0 -83
  390. package/dist/shadcn/alert.d.ts +0 -10
  391. package/dist/shadcn/alert.d.ts.map +0 -1
  392. package/dist/shadcn/alert.js +0 -38
  393. package/dist/shadcn/aspect-ratio.d.ts +0 -4
  394. package/dist/shadcn/aspect-ratio.d.ts.map +0 -1
  395. package/dist/shadcn/aspect-ratio.js +0 -19
  396. package/dist/shadcn/avatar.d.ts +0 -7
  397. package/dist/shadcn/avatar.d.ts.map +0 -1
  398. package/dist/shadcn/avatar.js +0 -28
  399. package/dist/shadcn/badge.d.ts +0 -10
  400. package/dist/shadcn/badge.d.ts.map +0 -1
  401. package/dist/shadcn/badge.js +0 -35
  402. package/dist/shadcn/breadcrumb.d.ts +0 -12
  403. package/dist/shadcn/breadcrumb.d.ts.map +0 -1
  404. package/dist/shadcn/breadcrumb.js +0 -45
  405. package/dist/shadcn/button.d.ts +0 -11
  406. package/dist/shadcn/button.d.ts.map +0 -1
  407. package/dist/shadcn/button.js +0 -47
  408. package/dist/shadcn/calendar.d.ts +0 -9
  409. package/dist/shadcn/calendar.d.ts.map +0 -1
  410. package/dist/shadcn/calendar.js +0 -61
  411. package/dist/shadcn/card.d.ts +0 -10
  412. package/dist/shadcn/card.d.ts.map +0 -1
  413. package/dist/shadcn/card.js +0 -42
  414. package/dist/shadcn/checkbox.d.ts +0 -5
  415. package/dist/shadcn/checkbox.d.ts.map +0 -1
  416. package/dist/shadcn/checkbox.js +0 -21
  417. package/dist/shadcn/collapsible.d.ts +0 -6
  418. package/dist/shadcn/collapsible.d.ts.map +0 -1
  419. package/dist/shadcn/collapsible.js +0 -27
  420. package/dist/shadcn/command.d.ts +0 -19
  421. package/dist/shadcn/command.d.ts.map +0 -1
  422. package/dist/shadcn/command.js +0 -54
  423. package/dist/shadcn/date-input.d.ts +0 -8
  424. package/dist/shadcn/date-input.d.ts.map +0 -1
  425. package/dist/shadcn/date-input.js +0 -179
  426. package/dist/shadcn/date-range-picker.d.ts +0 -25
  427. package/dist/shadcn/date-range-picker.d.ts.map +0 -1
  428. package/dist/shadcn/date-range-picker.js +0 -45
  429. package/dist/shadcn/dialog.d.ts +0 -16
  430. package/dist/shadcn/dialog.d.ts.map +0 -1
  431. package/dist/shadcn/dialog.js +0 -57
  432. package/dist/shadcn/drawer.d.ts +0 -14
  433. package/dist/shadcn/drawer.d.ts.map +0 -1
  434. package/dist/shadcn/drawer.js +0 -56
  435. package/dist/shadcn/dropdown-menu.d.ts +0 -26
  436. package/dist/shadcn/dropdown-menu.d.ts.map +0 -1
  437. package/dist/shadcn/dropdown-menu.js +0 -77
  438. package/dist/shadcn/form.d.ts +0 -25
  439. package/dist/shadcn/form.d.ts.map +0 -1
  440. package/dist/shadcn/form.js +0 -70
  441. package/dist/shadcn/hover-card.d.ts +0 -7
  442. package/dist/shadcn/hover-card.d.ts.map +0 -1
  443. package/dist/shadcn/hover-card.js +0 -28
  444. package/dist/shadcn/input-otp.d.ts +0 -35
  445. package/dist/shadcn/input-otp.d.ts.map +0 -1
  446. package/dist/shadcn/input-otp.js +0 -40
  447. package/dist/shadcn/input.d.ts +0 -4
  448. package/dist/shadcn/input.d.ts.map +0 -1
  449. package/dist/shadcn/input.js +0 -18
  450. package/dist/shadcn/label.d.ts +0 -5
  451. package/dist/shadcn/label.d.ts.map +0 -1
  452. package/dist/shadcn/label.js +0 -20
  453. package/dist/shadcn/navigation-menu.d.ts +0 -17
  454. package/dist/shadcn/navigation-menu.d.ts.map +0 -1
  455. package/dist/shadcn/navigation-menu.js +0 -74
  456. package/dist/shadcn/popover.d.ts +0 -8
  457. package/dist/shadcn/popover.d.ts.map +0 -1
  458. package/dist/shadcn/popover.js +0 -32
  459. package/dist/shadcn/progress.d.ts +0 -9
  460. package/dist/shadcn/progress.d.ts.map +0 -1
  461. package/dist/shadcn/progress.js +0 -23
  462. package/dist/shadcn/radio-group.d.ts +0 -6
  463. package/dist/shadcn/radio-group.d.ts.map +0 -1
  464. package/dist/shadcn/radio-group.js +0 -25
  465. package/dist/shadcn/scroll-area.d.ts +0 -6
  466. package/dist/shadcn/scroll-area.d.ts.map +0 -1
  467. package/dist/shadcn/scroll-area.js +0 -26
  468. package/dist/shadcn/select.d.ts +0 -16
  469. package/dist/shadcn/select.d.ts.map +0 -1
  470. package/dist/shadcn/select.js +0 -59
  471. package/dist/shadcn/separator.d.ts +0 -5
  472. package/dist/shadcn/separator.d.ts.map +0 -1
  473. package/dist/shadcn/separator.js +0 -20
  474. package/dist/shadcn/sheet.d.ts +0 -14
  475. package/dist/shadcn/sheet.d.ts.map +0 -1
  476. package/dist/shadcn/sheet.js +0 -61
  477. package/dist/shadcn/sidebar.d.ts +0 -70
  478. package/dist/shadcn/sidebar.d.ts.map +0 -1
  479. package/dist/shadcn/sidebar.js +0 -242
  480. package/dist/shadcn/skeleton.d.ts +0 -4
  481. package/dist/shadcn/skeleton.d.ts.map +0 -1
  482. package/dist/shadcn/skeleton.js +0 -18
  483. package/dist/shadcn/slider.d.ts +0 -5
  484. package/dist/shadcn/slider.d.ts.map +0 -1
  485. package/dist/shadcn/slider.js +0 -26
  486. package/dist/shadcn/sonner.d.ts +0 -4
  487. package/dist/shadcn/sonner.d.ts.map +0 -1
  488. package/dist/shadcn/sonner.js +0 -25
  489. package/dist/shadcn/switch.d.ts +0 -5
  490. package/dist/shadcn/switch.d.ts.map +0 -1
  491. package/dist/shadcn/switch.js +0 -20
  492. package/dist/shadcn/table.d.ts +0 -11
  493. package/dist/shadcn/table.d.ts.map +0 -1
  494. package/dist/shadcn/table.js +0 -47
  495. package/dist/shadcn/tabs.d.ts +0 -8
  496. package/dist/shadcn/tabs.d.ts.map +0 -1
  497. package/dist/shadcn/tabs.js +0 -32
  498. package/dist/shadcn/textarea.d.ts +0 -4
  499. package/dist/shadcn/textarea.d.ts.map +0 -1
  500. package/dist/shadcn/textarea.js +0 -18
  501. package/dist/shadcn/toggle-group.d.ts +0 -10
  502. package/dist/shadcn/toggle-group.d.ts.map +0 -1
  503. package/dist/shadcn/toggle-group.js +0 -35
  504. package/dist/shadcn/toggle.d.ts +0 -10
  505. package/dist/shadcn/toggle.d.ts.map +0 -1
  506. package/dist/shadcn/toggle.js +0 -38
  507. package/dist/shadcn/tooltip.d.ts +0 -8
  508. package/dist/shadcn/tooltip.d.ts.map +0 -1
  509. package/dist/shadcn/tooltip.js +0 -32
  510. package/dist/shadcn/workflow.d.ts +0 -21
  511. package/dist/shadcn/workflow.d.ts.map +0 -1
  512. package/dist/shadcn/workflow.js +0 -20
  513. package/dist/styles.css +0 -1302
  514. package/dist/utils/actions/account/index.d.ts +0 -6
  515. package/dist/utils/actions/account/index.d.ts.map +0 -1
  516. package/dist/utils/actions/account/index.js +0 -28
  517. package/dist/utils/actions/account/type.d.ts +0 -5
  518. package/dist/utils/actions/account/type.d.ts.map +0 -1
  519. package/dist/utils/actions/account/type.js +0 -1
  520. package/dist/utils/actions/auth/index.d.ts +0 -8
  521. package/dist/utils/actions/auth/index.d.ts.map +0 -1
  522. package/dist/utils/actions/common/revalidate.d.ts +0 -3
  523. package/dist/utils/actions/common/revalidate.d.ts.map +0 -1
  524. package/dist/utils/actions/common/revalidate.js +0 -14
  525. package/dist/utils/actions/common/type.d.ts +0 -5
  526. package/dist/utils/actions/common/type.d.ts.map +0 -1
  527. package/dist/utils/actions/common/type.js +0 -1
  528. package/dist/utils/actions/common/utils.d.ts +0 -6
  529. package/dist/utils/actions/common/utils.d.ts.map +0 -1
  530. package/dist/utils/actions/software/index.d.ts +0 -12
  531. package/dist/utils/actions/software/index.d.ts.map +0 -1
  532. package/dist/utils/actions/software/index.js +0 -75
  533. package/dist/utils/api/accountService/index.d.ts +0 -24
  534. package/dist/utils/api/accountService/index.d.ts.map +0 -1
  535. package/dist/utils/api/accountService/index.js +0 -64
  536. package/dist/utils/api/accountService/type.d.ts +0 -5
  537. package/dist/utils/api/accountService/type.d.ts.map +0 -1
  538. package/dist/utils/api/accountService/type.js +0 -1
  539. package/dist/utils/api/file-upload/index.d.ts +0 -6
  540. package/dist/utils/api/file-upload/index.d.ts.map +0 -1
  541. package/dist/utils/api/file-upload/index.js +0 -80
  542. package/dist/utils/api/file-upload/type.d.ts +0 -7
  543. package/dist/utils/api/file-upload/type.d.ts.map +0 -1
  544. package/dist/utils/api/file-upload/type.js +0 -1
  545. package/dist/utils/api/ikonBaseApi.d.ts +0 -13
  546. package/dist/utils/api/ikonBaseApi.d.ts.map +0 -1
  547. package/dist/utils/api/loginService/index.d.ts +0 -13
  548. package/dist/utils/api/loginService/index.d.ts.map +0 -1
  549. package/dist/utils/api/loginService/index.js +0 -72
  550. package/dist/utils/api/loginService/type.d.ts.map +0 -1
  551. package/dist/utils/api/loginService/type.js +0 -1
  552. package/dist/utils/api/softwareService/index.d.ts +0 -65
  553. package/dist/utils/api/softwareService/index.d.ts.map +0 -1
  554. package/dist/utils/api/softwareService/index.js +0 -212
  555. package/dist/utils/api/softwareService/type.d.ts +0 -55
  556. package/dist/utils/api/softwareService/type.d.ts.map +0 -1
  557. package/dist/utils/api/softwareService/type.js +0 -1
  558. package/dist/utils/border-radius-provider.d.ts +0 -12
  559. package/dist/utils/border-radius-provider.d.ts.map +0 -1
  560. package/dist/utils/cn.d.ts +0 -3
  561. package/dist/utils/cn.d.ts.map +0 -1
  562. package/dist/utils/cn.js +0 -5
  563. package/dist/utils/font-provider.d.ts +0 -12
  564. package/dist/utils/font-provider.d.ts.map +0 -1
  565. package/dist/utils/session/cookieSession.d.ts +0 -9
  566. package/dist/utils/session/cookieSession.d.ts.map +0 -1
  567. package/dist/utils/session/cookieSession.js +0 -33
  568. package/dist/utils/theme-provider/index.d.ts +0 -4
  569. package/dist/utils/theme-provider/index.d.ts.map +0 -1
  570. package/dist/utils/theme-provider/index.js +0 -18
  571. package/dist/utils/token-management/index.d.ts +0 -11
  572. package/dist/utils/token-management/index.d.ts.map +0 -1
  573. package/dist/utils/token-management/index.js +0 -69
  574. package/dist/utils/token-management/types.d.ts +0 -7
  575. package/dist/utils/token-management/types.d.ts.map +0 -1
  576. package/dist/utils/token-management/types.js +0 -1
@@ -0,0 +1,726 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Slot } from "@radix-ui/react-slot"
5
+ import { cva, VariantProps } from "class-variance-authority"
6
+ import { PanelLeftIcon } from "lucide-react"
7
+
8
+ import { useIsMobile } from "../../templates/default/hooks/use-mobile"
9
+ import { cn } from "../utils/cn"
10
+ import { Button } from "./button"
11
+ import { Input } from "./input"
12
+ import { Separator } from "./separator"
13
+ import {
14
+ Sheet,
15
+ SheetContent,
16
+ SheetDescription,
17
+ SheetHeader,
18
+ SheetTitle,
19
+ } from "./sheet"
20
+ import { Skeleton } from "./skeleton"
21
+ import {
22
+ Tooltip,
23
+ TooltipContent,
24
+ TooltipProvider,
25
+ TooltipTrigger,
26
+ } from "./tooltip"
27
+
28
+ const SIDEBAR_COOKIE_NAME = "sidebar_state"
29
+ const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
30
+ const SIDEBAR_WIDTH = "16rem"
31
+ const SIDEBAR_WIDTH_MOBILE = "18rem"
32
+ const SIDEBAR_WIDTH_ICON = "3rem"
33
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b"
34
+
35
+ type SidebarContextProps = {
36
+ state: "expanded" | "collapsed"
37
+ open: boolean
38
+ setOpen: (open: boolean) => void
39
+ openMobile: boolean
40
+ setOpenMobile: (open: boolean) => void
41
+ isMobile: boolean
42
+ toggleSidebar: () => void
43
+ }
44
+
45
+ const SidebarContext = React.createContext<SidebarContextProps | null>(null)
46
+
47
+ function useSidebar() {
48
+ const context = React.useContext(SidebarContext)
49
+ if (!context) {
50
+ throw new Error("useSidebar must be used within a SidebarProvider.")
51
+ }
52
+
53
+ return context
54
+ }
55
+
56
+ function SidebarProvider({
57
+ defaultOpen = true,
58
+ open: openProp,
59
+ onOpenChange: setOpenProp,
60
+ className,
61
+ style,
62
+ children,
63
+ ...props
64
+ }: React.ComponentProps<"div"> & {
65
+ defaultOpen?: boolean
66
+ open?: boolean
67
+ onOpenChange?: (open: boolean) => void
68
+ }) {
69
+ const isMobile = useIsMobile()
70
+ const [openMobile, setOpenMobile] = React.useState(false)
71
+
72
+ // This is the internal state of the sidebar.
73
+ // We use openProp and setOpenProp for control from outside the component.
74
+ const [_open, _setOpen] = React.useState(defaultOpen)
75
+ const open = openProp ?? _open
76
+ const setOpen = React.useCallback(
77
+ (value: boolean | ((value: boolean) => boolean)) => {
78
+ const openState = typeof value === "function" ? value(open) : value
79
+ if (setOpenProp) {
80
+ setOpenProp(openState)
81
+ } else {
82
+ _setOpen(openState)
83
+ }
84
+
85
+ // This sets the cookie to keep the sidebar state.
86
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`
87
+ },
88
+ [setOpenProp, open]
89
+ )
90
+
91
+ // Helper to toggle the sidebar.
92
+ const toggleSidebar = React.useCallback(() => {
93
+ return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)
94
+ }, [isMobile, setOpen, setOpenMobile])
95
+
96
+ // Adds a keyboard shortcut to toggle the sidebar.
97
+ React.useEffect(() => {
98
+ const handleKeyDown = (event: KeyboardEvent) => {
99
+ if (
100
+ event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
101
+ (event.metaKey || event.ctrlKey)
102
+ ) {
103
+ event.preventDefault()
104
+ toggleSidebar()
105
+ }
106
+ }
107
+
108
+ window.addEventListener("keydown", handleKeyDown)
109
+ return () => window.removeEventListener("keydown", handleKeyDown)
110
+ }, [toggleSidebar])
111
+
112
+ // We add a state so that we can do data-state="expanded" or "collapsed".
113
+ // This makes it easier to style the sidebar with Tailwind classes.
114
+ const state = open ? "expanded" : "collapsed"
115
+
116
+ const contextValue = React.useMemo<SidebarContextProps>(
117
+ () => ({
118
+ state,
119
+ open,
120
+ setOpen,
121
+ isMobile,
122
+ openMobile,
123
+ setOpenMobile,
124
+ toggleSidebar,
125
+ }),
126
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
127
+ )
128
+
129
+ return (
130
+ <SidebarContext.Provider value={contextValue}>
131
+ <TooltipProvider delayDuration={0}>
132
+ <div
133
+ data-slot="sidebar-wrapper"
134
+ style={
135
+ {
136
+ "--sidebar-width": SIDEBAR_WIDTH,
137
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
138
+ ...style,
139
+ } as React.CSSProperties
140
+ }
141
+ className={cn(
142
+ "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
143
+ className
144
+ )}
145
+ {...props}
146
+ >
147
+ {children}
148
+ </div>
149
+ </TooltipProvider>
150
+ </SidebarContext.Provider>
151
+ )
152
+ }
153
+
154
+ function Sidebar({
155
+ side = "left",
156
+ variant = "sidebar",
157
+ collapsible = "offcanvas",
158
+ className,
159
+ children,
160
+ ...props
161
+ }: React.ComponentProps<"div"> & {
162
+ side?: "left" | "right"
163
+ variant?: "sidebar" | "floating" | "inset"
164
+ collapsible?: "offcanvas" | "icon" | "none"
165
+ }) {
166
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
167
+
168
+ if (collapsible === "none") {
169
+ return (
170
+ <div
171
+ data-slot="sidebar"
172
+ className={cn(
173
+ "bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",
174
+ className
175
+ )}
176
+ {...props}
177
+ >
178
+ {children}
179
+ </div>
180
+ )
181
+ }
182
+
183
+ if (isMobile) {
184
+ return (
185
+ <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>
186
+ <SheetContent
187
+ data-sidebar="sidebar"
188
+ data-slot="sidebar"
189
+ data-mobile="true"
190
+ className="bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden"
191
+ style={
192
+ {
193
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE,
194
+ } as React.CSSProperties
195
+ }
196
+ side={side}
197
+ >
198
+ <SheetHeader className="sr-only">
199
+ <SheetTitle>Sidebar</SheetTitle>
200
+ <SheetDescription>Displays the mobile sidebar.</SheetDescription>
201
+ </SheetHeader>
202
+ <div className="flex h-full w-full flex-col">{children}</div>
203
+ </SheetContent>
204
+ </Sheet>
205
+ )
206
+ }
207
+
208
+ return (
209
+ <div
210
+ className="group peer text-sidebar-foreground hidden md:block"
211
+ data-state={state}
212
+ data-collapsible={state === "collapsed" ? collapsible : ""}
213
+ data-variant={variant}
214
+ data-side={side}
215
+ data-slot="sidebar"
216
+ >
217
+ {/* This is what handles the sidebar gap on desktop */}
218
+ <div
219
+ data-slot="sidebar-gap"
220
+ className={cn(
221
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
222
+ "group-data-[collapsible=offcanvas]:w-0",
223
+ "group-data-[side=right]:rotate-180",
224
+ variant === "floating" || variant === "inset"
225
+ ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]"
226
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
227
+ )}
228
+ />
229
+ <div
230
+ data-slot="sidebar-container"
231
+ className={cn(
232
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
233
+ side === "left"
234
+ ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
235
+ : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
236
+ // Adjust the padding for floating and inset variants.
237
+ variant === "floating" || variant === "inset"
238
+ ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
239
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
240
+ className
241
+ )}
242
+ {...props}
243
+ >
244
+ <div
245
+ data-sidebar="sidebar"
246
+ data-slot="sidebar-inner"
247
+ className="bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm"
248
+ >
249
+ {children}
250
+ </div>
251
+ </div>
252
+ </div>
253
+ )
254
+ }
255
+
256
+ function SidebarTrigger({
257
+ className,
258
+ onClick,
259
+ ...props
260
+ }: React.ComponentProps<typeof Button>) {
261
+ const { toggleSidebar } = useSidebar()
262
+
263
+ return (
264
+ <Button
265
+ data-sidebar="trigger"
266
+ data-slot="sidebar-trigger"
267
+ variant="ghost"
268
+ size="icon"
269
+ className={cn("size-7", className)}
270
+ onClick={(event) => {
271
+ onClick?.(event)
272
+ toggleSidebar()
273
+ }}
274
+ {...props}
275
+ >
276
+ <PanelLeftIcon />
277
+ <span className="sr-only">Toggle Sidebar</span>
278
+ </Button>
279
+ )
280
+ }
281
+
282
+ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
283
+ const { toggleSidebar } = useSidebar()
284
+
285
+ return (
286
+ <button
287
+ data-sidebar="rail"
288
+ data-slot="sidebar-rail"
289
+ aria-label="Toggle Sidebar"
290
+ tabIndex={-1}
291
+ onClick={toggleSidebar}
292
+ title="Toggle Sidebar"
293
+ className={cn(
294
+ "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",
295
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
296
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
297
+ "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full",
298
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
299
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
300
+ className
301
+ )}
302
+ {...props}
303
+ />
304
+ )
305
+ }
306
+
307
+ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
308
+ return (
309
+ <main
310
+ data-slot="sidebar-inset"
311
+ className={cn(
312
+ "bg-background relative flex w-full flex-1 flex-col",
313
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
314
+ className
315
+ )}
316
+ {...props}
317
+ />
318
+ )
319
+ }
320
+
321
+ function SidebarInput({
322
+ className,
323
+ ...props
324
+ }: React.ComponentProps<typeof Input>) {
325
+ return (
326
+ <Input
327
+ data-slot="sidebar-input"
328
+ data-sidebar="input"
329
+ className={cn("bg-background h-8 w-full shadow-none", className)}
330
+ {...props}
331
+ />
332
+ )
333
+ }
334
+
335
+ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
336
+ return (
337
+ <div
338
+ data-slot="sidebar-header"
339
+ data-sidebar="header"
340
+ className={cn("flex flex-col gap-2 p-2", className)}
341
+ {...props}
342
+ />
343
+ )
344
+ }
345
+
346
+ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
347
+ return (
348
+ <div
349
+ data-slot="sidebar-footer"
350
+ data-sidebar="footer"
351
+ className={cn("flex flex-col gap-2 p-2", className)}
352
+ {...props}
353
+ />
354
+ )
355
+ }
356
+
357
+ function SidebarSeparator({
358
+ className,
359
+ ...props
360
+ }: React.ComponentProps<typeof Separator>) {
361
+ return (
362
+ <Separator
363
+ data-slot="sidebar-separator"
364
+ data-sidebar="separator"
365
+ className={cn("bg-sidebar-border mx-2 w-auto", className)}
366
+ {...props}
367
+ />
368
+ )
369
+ }
370
+
371
+ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
372
+ return (
373
+ <div
374
+ data-slot="sidebar-content"
375
+ data-sidebar="content"
376
+ className={cn(
377
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
378
+ className
379
+ )}
380
+ {...props}
381
+ />
382
+ )
383
+ }
384
+
385
+ function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
386
+ return (
387
+ <div
388
+ data-slot="sidebar-group"
389
+ data-sidebar="group"
390
+ className={cn("relative flex w-full min-w-0 flex-col p-2", className)}
391
+ {...props}
392
+ />
393
+ )
394
+ }
395
+
396
+ function SidebarGroupLabel({
397
+ className,
398
+ asChild = false,
399
+ ...props
400
+ }: React.ComponentProps<"div"> & { asChild?: boolean }) {
401
+ const Comp = asChild ? Slot : "div"
402
+
403
+ return (
404
+ <Comp
405
+ data-slot="sidebar-group-label"
406
+ data-sidebar="group-label"
407
+ className={cn(
408
+ "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",
409
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
410
+ className
411
+ )}
412
+ {...props}
413
+ />
414
+ )
415
+ }
416
+
417
+ function SidebarGroupAction({
418
+ className,
419
+ asChild = false,
420
+ ...props
421
+ }: React.ComponentProps<"button"> & { asChild?: boolean }) {
422
+ const Comp = asChild ? Slot : "button"
423
+
424
+ return (
425
+ <Comp
426
+ data-slot="sidebar-group-action"
427
+ data-sidebar="group-action"
428
+ className={cn(
429
+ "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",
430
+ // Increases the hit area of the button on mobile.
431
+ "after:absolute after:-inset-2 md:after:hidden",
432
+ "group-data-[collapsible=icon]:hidden",
433
+ className
434
+ )}
435
+ {...props}
436
+ />
437
+ )
438
+ }
439
+
440
+ function SidebarGroupContent({
441
+ className,
442
+ ...props
443
+ }: React.ComponentProps<"div">) {
444
+ return (
445
+ <div
446
+ data-slot="sidebar-group-content"
447
+ data-sidebar="group-content"
448
+ className={cn("w-full text-sm", className)}
449
+ {...props}
450
+ />
451
+ )
452
+ }
453
+
454
+ function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
455
+ return (
456
+ <ul
457
+ data-slot="sidebar-menu"
458
+ data-sidebar="menu"
459
+ className={cn("flex w-full min-w-0 flex-col gap-1", className)}
460
+ {...props}
461
+ />
462
+ )
463
+ }
464
+
465
+ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
466
+ return (
467
+ <li
468
+ data-slot="sidebar-menu-item"
469
+ data-sidebar="menu-item"
470
+ className={cn("group/menu-item relative", className)}
471
+ {...props}
472
+ />
473
+ )
474
+ }
475
+
476
+ const sidebarMenuButtonVariants = cva(
477
+ "peer/menu-button 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",
478
+ {
479
+ variants: {
480
+ variant: {
481
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
482
+ outline:
483
+ "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))]",
484
+ },
485
+ size: {
486
+ default: "h-8 text-sm",
487
+ sm: "h-7 text-xs",
488
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
489
+ },
490
+ },
491
+ defaultVariants: {
492
+ variant: "default",
493
+ size: "default",
494
+ },
495
+ }
496
+ )
497
+
498
+ function SidebarMenuButton({
499
+ asChild = false,
500
+ isActive = false,
501
+ variant = "default",
502
+ size = "default",
503
+ tooltip,
504
+ className,
505
+ ...props
506
+ }: React.ComponentProps<"button"> & {
507
+ asChild?: boolean
508
+ isActive?: boolean
509
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>
510
+ } & VariantProps<typeof sidebarMenuButtonVariants>) {
511
+ const Comp = asChild ? Slot : "button"
512
+ const { isMobile, state } = useSidebar()
513
+
514
+ const button = (
515
+ <Comp
516
+ data-slot="sidebar-menu-button"
517
+ data-sidebar="menu-button"
518
+ data-size={size}
519
+ data-active={isActive}
520
+ className={cn(sidebarMenuButtonVariants({ variant, size }), className)}
521
+ {...props}
522
+ />
523
+ )
524
+
525
+ if (!tooltip) {
526
+ return button
527
+ }
528
+
529
+ if (typeof tooltip === "string") {
530
+ tooltip = {
531
+ children: tooltip,
532
+ }
533
+ }
534
+
535
+ return (
536
+ <Tooltip>
537
+ <TooltipTrigger asChild>{button}</TooltipTrigger>
538
+ <TooltipContent
539
+ side="right"
540
+ align="center"
541
+ hidden={state !== "collapsed" || isMobile}
542
+ {...tooltip}
543
+ />
544
+ </Tooltip>
545
+ )
546
+ }
547
+
548
+ function SidebarMenuAction({
549
+ className,
550
+ asChild = false,
551
+ showOnHover = false,
552
+ ...props
553
+ }: React.ComponentProps<"button"> & {
554
+ asChild?: boolean
555
+ showOnHover?: boolean
556
+ }) {
557
+ const Comp = asChild ? Slot : "button"
558
+
559
+ return (
560
+ <Comp
561
+ data-slot="sidebar-menu-action"
562
+ data-sidebar="menu-action"
563
+ className={cn(
564
+ "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",
565
+ // Increases the hit area of the button on mobile.
566
+ "after:absolute after:-inset-2 md:after:hidden",
567
+ "peer-data-[size=sm]/menu-button:top-1",
568
+ "peer-data-[size=default]/menu-button:top-1.5",
569
+ "peer-data-[size=lg]/menu-button:top-2.5",
570
+ "group-data-[collapsible=icon]:hidden",
571
+ showOnHover &&
572
+ "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",
573
+ className
574
+ )}
575
+ {...props}
576
+ />
577
+ )
578
+ }
579
+
580
+ function SidebarMenuBadge({
581
+ className,
582
+ ...props
583
+ }: React.ComponentProps<"div">) {
584
+ return (
585
+ <div
586
+ data-slot="sidebar-menu-badge"
587
+ data-sidebar="menu-badge"
588
+ className={cn(
589
+ "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",
590
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
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
+ className
596
+ )}
597
+ {...props}
598
+ />
599
+ )
600
+ }
601
+
602
+ function SidebarMenuSkeleton({
603
+ className,
604
+ showIcon = false,
605
+ ...props
606
+ }: React.ComponentProps<"div"> & {
607
+ showIcon?: boolean
608
+ }) {
609
+ // Random width between 50 to 90%.
610
+ const width = React.useMemo(() => {
611
+ return `${Math.floor(Math.random() * 40) + 50}%`
612
+ }, [])
613
+
614
+ return (
615
+ <div
616
+ data-slot="sidebar-menu-skeleton"
617
+ data-sidebar="menu-skeleton"
618
+ className={cn("flex h-8 items-center gap-2 rounded-md px-2", className)}
619
+ {...props}
620
+ >
621
+ {showIcon && (
622
+ <Skeleton
623
+ className="size-4 rounded-md"
624
+ data-sidebar="menu-skeleton-icon"
625
+ />
626
+ )}
627
+ <Skeleton
628
+ className="h-4 max-w-(--skeleton-width) flex-1"
629
+ data-sidebar="menu-skeleton-text"
630
+ style={
631
+ {
632
+ "--skeleton-width": width,
633
+ } as React.CSSProperties
634
+ }
635
+ />
636
+ </div>
637
+ )
638
+ }
639
+
640
+ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
641
+ return (
642
+ <ul
643
+ data-slot="sidebar-menu-sub"
644
+ data-sidebar="menu-sub"
645
+ className={cn(
646
+ "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",
647
+ "group-data-[collapsible=icon]:hidden",
648
+ className
649
+ )}
650
+ {...props}
651
+ />
652
+ )
653
+ }
654
+
655
+ function SidebarMenuSubItem({
656
+ className,
657
+ ...props
658
+ }: React.ComponentProps<"li">) {
659
+ return (
660
+ <li
661
+ data-slot="sidebar-menu-sub-item"
662
+ data-sidebar="menu-sub-item"
663
+ className={cn("group/menu-sub-item relative", className)}
664
+ {...props}
665
+ />
666
+ )
667
+ }
668
+
669
+ function SidebarMenuSubButton({
670
+ asChild = false,
671
+ size = "md",
672
+ isActive = false,
673
+ className,
674
+ ...props
675
+ }: React.ComponentProps<"a"> & {
676
+ asChild?: boolean
677
+ size?: "sm" | "md"
678
+ isActive?: boolean
679
+ }) {
680
+ const Comp = asChild ? Slot : "a"
681
+
682
+ return (
683
+ <Comp
684
+ data-slot="sidebar-menu-sub-button"
685
+ data-sidebar="menu-sub-button"
686
+ data-size={size}
687
+ data-active={isActive}
688
+ className={cn(
689
+ "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",
690
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
691
+ size === "sm" && "text-xs",
692
+ size === "md" && "text-sm",
693
+ "group-data-[collapsible=icon]:hidden",
694
+ className
695
+ )}
696
+ {...props}
697
+ />
698
+ )
699
+ }
700
+
701
+ export {
702
+ Sidebar,
703
+ SidebarContent,
704
+ SidebarFooter,
705
+ SidebarGroup,
706
+ SidebarGroupAction,
707
+ SidebarGroupContent,
708
+ SidebarGroupLabel,
709
+ SidebarHeader,
710
+ SidebarInput,
711
+ SidebarInset,
712
+ SidebarMenu,
713
+ SidebarMenuAction,
714
+ SidebarMenuBadge,
715
+ SidebarMenuButton,
716
+ SidebarMenuItem,
717
+ SidebarMenuSkeleton,
718
+ SidebarMenuSub,
719
+ SidebarMenuSubButton,
720
+ SidebarMenuSubItem,
721
+ SidebarProvider,
722
+ SidebarRail,
723
+ SidebarSeparator,
724
+ SidebarTrigger,
725
+ useSidebar,
726
+ }