admin-ui-starter-kit 0.6.8 → 0.6.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 (962) hide show
  1. package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +15 -8
  2. package/dist/_shared/ai-artifact-Cv8VBibf.cjs +3 -0
  3. package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +1 -0
  4. package/dist/_shared/ai-artifact-DwfXQuh4.js +1099 -0
  5. package/dist/_shared/ai-artifact-DwfXQuh4.js.map +1 -0
  6. package/dist/_shared/auth-Cz5ci18c.cjs +2 -0
  7. package/dist/_shared/auth-Cz5ci18c.cjs.map +1 -0
  8. package/dist/_shared/auth-DDWsgFUL.js +643 -0
  9. package/dist/_shared/auth-DDWsgFUL.js.map +1 -0
  10. package/dist/_shared/badge-C65rt1M9.cjs +2 -0
  11. package/dist/_shared/badge-C65rt1M9.cjs.map +1 -0
  12. package/dist/_shared/badge-r8ae66Vd.js +110 -0
  13. package/dist/_shared/badge-r8ae66Vd.js.map +1 -0
  14. package/dist/_shared/comments-DAzpeuQq.cjs +2 -0
  15. package/dist/_shared/comments-DAzpeuQq.cjs.map +1 -0
  16. package/dist/_shared/comments-DzZaKP9x.js +952 -0
  17. package/dist/_shared/comments-DzZaKP9x.js.map +1 -0
  18. package/dist/_shared/data-display-DQUUEzCx.cjs +2 -0
  19. package/dist/_shared/data-display-DQUUEzCx.cjs.map +1 -0
  20. package/dist/_shared/data-display-LlvMEFTK.js +1878 -0
  21. package/dist/_shared/data-display-LlvMEFTK.js.map +1 -0
  22. package/dist/_shared/date-picker-CrC-lHyF.cjs +2 -0
  23. package/dist/_shared/date-picker-CrC-lHyF.cjs.map +1 -0
  24. package/dist/_shared/date-picker-DbYBek-b.js +1361 -0
  25. package/dist/_shared/date-picker-DbYBek-b.js.map +1 -0
  26. package/dist/_shared/date-pickers-9AU8YQK2.js +329 -0
  27. package/dist/_shared/date-pickers-9AU8YQK2.js.map +1 -0
  28. package/dist/_shared/date-pickers-DUEwCWig.cjs +2 -0
  29. package/dist/_shared/date-pickers-DUEwCWig.cjs.map +1 -0
  30. package/dist/_shared/display-BqoPOdof.cjs +2 -0
  31. package/dist/_shared/display-BqoPOdof.cjs.map +1 -0
  32. package/dist/_shared/display-CQoSwU74.js +986 -0
  33. package/dist/_shared/display-CQoSwU74.js.map +1 -0
  34. package/dist/_shared/forms-CNh-S9FK.cjs +2 -0
  35. package/dist/_shared/forms-CNh-S9FK.cjs.map +1 -0
  36. package/dist/_shared/forms-DIz3SCA9.js +3534 -0
  37. package/dist/_shared/forms-DIz3SCA9.js.map +1 -0
  38. package/dist/_shared/header-Bs61tQla.js +447 -0
  39. package/dist/_shared/header-Bs61tQla.js.map +1 -0
  40. package/dist/_shared/header-D01oOxna.cjs +2 -0
  41. package/dist/_shared/header-D01oOxna.cjs.map +1 -0
  42. package/dist/_shared/hooks-ACnpaIli.js +95 -0
  43. package/dist/_shared/hooks-ACnpaIli.js.map +1 -0
  44. package/dist/_shared/hooks-B7khuHkk.cjs +2 -0
  45. package/dist/_shared/hooks-B7khuHkk.cjs.map +1 -0
  46. package/dist/_shared/layout-CGi5w1mo.js +268 -0
  47. package/dist/_shared/layout-CGi5w1mo.js.map +1 -0
  48. package/dist/_shared/layout-ccVwjUG8.cjs +2 -0
  49. package/dist/_shared/layout-ccVwjUG8.cjs.map +1 -0
  50. package/dist/_shared/mentions-Cg_4vFxd.cjs +2 -0
  51. package/dist/_shared/mentions-Cg_4vFxd.cjs.map +1 -0
  52. package/dist/_shared/mentions-Ci9RFTfw.js +506 -0
  53. package/dist/_shared/mentions-Ci9RFTfw.js.map +1 -0
  54. package/dist/_shared/navigation-C1QN2-Vq.cjs +2 -0
  55. package/dist/_shared/navigation-C1QN2-Vq.cjs.map +1 -0
  56. package/dist/_shared/navigation-CMrLO8v5.js +436 -0
  57. package/dist/_shared/navigation-CMrLO8v5.js.map +1 -0
  58. package/dist/_shared/separator-BXn_fnly.cjs +2 -0
  59. package/dist/_shared/separator-BXn_fnly.cjs.map +1 -0
  60. package/dist/_shared/separator-DiH-j--f.js +20 -0
  61. package/dist/_shared/separator-DiH-j--f.js.map +1 -0
  62. package/dist/_shared/settings-CgtcSI8L.js +143 -0
  63. package/dist/_shared/settings-CgtcSI8L.js.map +1 -0
  64. package/dist/_shared/settings-csNmeT7b.cjs +2 -0
  65. package/dist/_shared/settings-csNmeT7b.cjs.map +1 -0
  66. package/dist/_shared/sidebar-DyGIcJd9.cjs +2 -0
  67. package/dist/_shared/sidebar-DyGIcJd9.cjs.map +1 -0
  68. package/dist/_shared/sidebar-OT-xIguQ.js +548 -0
  69. package/dist/_shared/sidebar-OT-xIguQ.js.map +1 -0
  70. package/dist/_shared/table-BVWemr79.cjs +2 -0
  71. package/dist/_shared/table-BVWemr79.cjs.map +1 -0
  72. package/dist/_shared/table-WYSjfQRr.js +1377 -0
  73. package/dist/_shared/table-WYSjfQRr.js.map +1 -0
  74. package/dist/_shared/workspace-BkwsqTrc.cjs +2 -0
  75. package/dist/_shared/workspace-BkwsqTrc.cjs.map +1 -0
  76. package/dist/_shared/workspace-DpU1YG1t.js +357 -0
  77. package/dist/_shared/workspace-DpU1YG1t.js.map +1 -0
  78. package/dist/components/base/badge/index.cjs +1 -1
  79. package/dist/components/base/badge/index.js +1 -1
  80. package/dist/components/base/date-pickers/index.cjs +1 -1
  81. package/dist/components/base/date-pickers/index.js +2 -2
  82. package/dist/components/base/display/index.cjs +1 -1
  83. package/dist/components/base/display/index.js +2 -2
  84. package/dist/components/base/display/separator.d.ts +10 -1
  85. package/dist/components/base/display/separator.d.ts.map +1 -1
  86. package/dist/components/base/event-calendar/index.cjs +1 -1
  87. package/dist/components/base/event-calendar/index.js +1 -1
  88. package/dist/components/base/forms/index.cjs +1 -1
  89. package/dist/components/base/forms/index.js +2 -2
  90. package/dist/components/base/navigation/index.cjs +1 -1
  91. package/dist/components/base/navigation/index.js +1 -1
  92. package/dist/components/base/table/index.cjs +1 -1
  93. package/dist/components/base/table/index.js +1 -1
  94. package/dist/components/composed/admin/index.cjs +1 -1
  95. package/dist/components/composed/admin/index.js +3 -3
  96. package/dist/components/composed/ai/index.cjs +1 -1
  97. package/dist/components/composed/ai/index.js +4 -4
  98. package/dist/components/composed/cards/index.cjs +1 -1
  99. package/dist/components/composed/cards/index.js +3 -3
  100. package/dist/components/composed/commerce/index.cjs +1 -1
  101. package/dist/components/composed/commerce/index.js +4 -4
  102. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  103. package/dist/components/composed/dark-surfaces/index.js +2 -2
  104. package/dist/components/composed/data-display/index.cjs +1 -1
  105. package/dist/components/composed/data-display/index.js +1 -1
  106. package/dist/components/composed/navigation/index.cjs +1 -1
  107. package/dist/components/composed/navigation/index.js +1 -1
  108. package/dist/components/composed/timelines/index.cjs +1 -1
  109. package/dist/components/composed/timelines/index.js +1 -1
  110. package/dist/components/features/activities/index.cjs +1 -1
  111. package/dist/components/features/activities/index.js +1 -1
  112. package/dist/components/features/ai-chat/index.cjs +1 -1
  113. package/dist/components/features/ai-chat/index.js +2 -2
  114. package/dist/components/features/comments/index.cjs +1 -1
  115. package/dist/components/features/comments/index.js +2 -2
  116. package/dist/components/features/event-log/index.cjs +1 -1
  117. package/dist/components/features/event-log/index.js +2 -2
  118. package/dist/components/features/filters/index.cjs +1 -1
  119. package/dist/components/features/filters/index.js +2 -2
  120. package/dist/components/features/global-search/index.cjs +1 -1
  121. package/dist/components/features/global-search/index.js +1 -1
  122. package/dist/components/features/media-library/index.cjs +1 -1
  123. package/dist/components/features/media-library/index.js +3 -3
  124. package/dist/components/features/mentions/index.cjs +1 -1
  125. package/dist/components/features/mentions/index.js +1 -1
  126. package/dist/components/features/products/index.cjs +1 -1
  127. package/dist/components/features/products/index.js +5 -5
  128. package/dist/components/features/resource/index.cjs +1 -1
  129. package/dist/components/features/resource/index.js +2 -2
  130. package/dist/components/features/schema-form/index.cjs +1 -1
  131. package/dist/components/features/schema-form/index.js +2 -2
  132. package/dist/components/layout/auth/index.cjs +1 -1
  133. package/dist/components/layout/auth/index.js +1 -1
  134. package/dist/components/layout/header/index.cjs +1 -1
  135. package/dist/components/layout/header/index.js +1 -1
  136. package/dist/components/layout/hooks/index.cjs +1 -1
  137. package/dist/components/layout/hooks/index.js +1 -1
  138. package/dist/components/layout/index.cjs +1 -1
  139. package/dist/components/layout/index.js +7 -7
  140. package/dist/components/layout/page/index.cjs +1 -1
  141. package/dist/components/layout/page/index.js +1 -1
  142. package/dist/components/layout/settings/index.cjs +1 -1
  143. package/dist/components/layout/settings/index.js +1 -1
  144. package/dist/components/layout/sidebar/index.cjs +1 -1
  145. package/dist/components/layout/sidebar/index.js +2 -2
  146. package/dist/components/layout/workspace/index.cjs +1 -1
  147. package/dist/components/layout/workspace/index.js +1 -1
  148. package/dist/showcase/assets/AreaChart-DxDBymDt.js +6 -0
  149. package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +1 -0
  150. package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +1 -0
  151. package/dist/showcase/assets/DialogTrigger-OUBMI353.js +1 -0
  152. package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +1 -0
  153. package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +1 -0
  154. package/dist/showcase/assets/RadioGroup-BzveyiIV.js +1 -0
  155. package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +1 -0
  156. package/dist/showcase/assets/Separator-CSYYEo-X.js +1 -0
  157. package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +1 -0
  158. package/dist/showcase/assets/accordion-B9VkLXiy.js +171 -0
  159. package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +1 -0
  160. package/dist/showcase/assets/action-menu-CWIvuiLO.js +1 -0
  161. package/dist/showcase/assets/actions-BuwzXYEF.js +310 -0
  162. package/dist/showcase/assets/activities-BTBlr1G4.js +500 -0
  163. package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +1 -0
  164. package/dist/showcase/assets/admin-kbK6nUjx.js +140 -0
  165. package/dist/showcase/assets/ai-CKu9EGmA.js +207 -0
  166. package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +2 -0
  167. package/dist/showcase/assets/ai-chat-DEntRhJD.js +568 -0
  168. package/dist/showcase/assets/ai-elements-DyKRCWiS.js +387 -0
  169. package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +1 -0
  170. package/dist/showcase/assets/alert-C0wSpBYn.js +93 -0
  171. package/dist/showcase/assets/alert-CZ4rgwPr.js +62 -0
  172. package/dist/showcase/assets/alert-WTKIdE4s.js +1 -0
  173. package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +1 -0
  174. package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +73 -0
  175. package/dist/showcase/assets/app-sidebar-B3veRbac.js +1 -0
  176. package/dist/showcase/assets/arrow-down-CEXJx115.js +1 -0
  177. package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +1 -0
  178. package/dist/showcase/assets/arrow-right-a3STqWgx.js +1 -0
  179. package/dist/showcase/assets/arrow-up-CCU1MaGq.js +1 -0
  180. package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +1 -0
  181. package/dist/showcase/assets/avatar-Bwgai0SK.js +67 -0
  182. package/dist/showcase/assets/avatar-DSmL52Us.js +57 -0
  183. package/dist/showcase/assets/avatar-kK9n1a25.js +1 -0
  184. package/dist/showcase/assets/avatar-nb7MgV_x.js +1 -0
  185. package/dist/showcase/assets/badge-CTGPRSXm.js +31 -0
  186. package/dist/showcase/assets/badge-check-zqoYYrVj.js +1 -0
  187. package/dist/showcase/assets/bell-D7HWGStL.js +1 -0
  188. package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +1 -0
  189. package/dist/showcase/assets/bot-Owx4SMiU.js +1 -0
  190. package/dist/showcase/assets/box-BeeoLlMd.js +1 -0
  191. package/dist/showcase/assets/braces-fzrExVIx.js +1 -0
  192. package/dist/showcase/assets/brain-Da2fsBjd.js +1 -0
  193. package/dist/showcase/assets/brand-Bo6uwdGf.js +36 -0
  194. package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +1 -0
  195. package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +52 -0
  196. package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +1 -0
  197. package/dist/showcase/assets/briefcase-DQjbh28E.js +1 -0
  198. package/dist/showcase/assets/building-2-DaQW5yJa.js +1 -0
  199. package/dist/showcase/assets/button-D3skvyQS.js +44 -0
  200. package/dist/showcase/assets/button-group-BYtbrhme.js +1 -0
  201. package/dist/showcase/assets/buttons-B3IkMmNQ.js +272 -0
  202. package/dist/showcase/assets/calendar-C4fCDK3O.js +1 -0
  203. package/dist/showcase/assets/calendar-CcwkVxCK.js +16 -0
  204. package/dist/showcase/assets/calendar-DBkwxV9H.js +1 -0
  205. package/dist/showcase/assets/calendar-days-BWed1W3Z.js +1 -0
  206. package/dist/showcase/assets/camera-BUoAyoZT.js +1 -0
  207. package/dist/showcase/assets/card-7DBPqWuv.js +1 -0
  208. package/dist/showcase/assets/card-ClwyNDHJ.js +188 -0
  209. package/dist/showcase/assets/card-primitives-BE1YpEQW.js +1 -0
  210. package/dist/showcase/assets/card-radio-group-1NMbocuG.js +1 -0
  211. package/dist/showcase/assets/cards-Bu8uaGSU.js +354 -0
  212. package/dist/showcase/assets/carousel-dTTRRSQg.js +449 -0
  213. package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +1 -0
  214. package/dist/showcase/assets/chart-BSboeIO6.js +358 -0
  215. package/dist/showcase/assets/chart-column-CCzA6B9l.js +1 -0
  216. package/dist/showcase/assets/checkbox-CSdEPNT5.js +1 -0
  217. package/dist/showcase/assets/checkbox-CqNLi9Q3.js +1 -0
  218. package/dist/showcase/assets/chevron-down-C91gNQdT.js +1 -0
  219. package/dist/showcase/assets/chevron-left-SiAoYFSo.js +1 -0
  220. package/dist/showcase/assets/chevron-up-Beb1_ET_.js +1 -0
  221. package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +1 -0
  222. package/dist/showcase/assets/circle-D9KiRp8C.js +1 -0
  223. package/dist/showcase/assets/circle-alert-BQkAwFkl.js +1 -0
  224. package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +1 -0
  225. package/dist/showcase/assets/circle-check-dqmKTiDe.js +1 -0
  226. package/dist/showcase/assets/circle-dot-B7LPN_0V.js +1 -0
  227. package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +1 -0
  228. package/dist/showcase/assets/circle-x-CW2dFcX-.js +1 -0
  229. package/dist/showcase/assets/clock-3-CXJ_JotW.js +1 -0
  230. package/dist/showcase/assets/clock-DUqvfazQ.js +1 -0
  231. package/dist/showcase/assets/code-xml-BmdQDeID.js +1 -0
  232. package/dist/showcase/assets/collapsible-C-WYhJxn.js +1 -0
  233. package/dist/showcase/assets/collapsible-CL37AlCX.js +27 -0
  234. package/dist/showcase/assets/collapsible-uGO5Rj8q.js +1 -0
  235. package/dist/showcase/assets/combobox-CFh5kUzj.js +685 -0
  236. package/dist/showcase/assets/command-CtpLaHjh.js +1 -0
  237. package/dist/showcase/assets/command-DSlK-QAE.js +1 -0
  238. package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +1 -0
  239. package/dist/showcase/assets/comment-item-Dme2o2KI.js +1 -0
  240. package/dist/showcase/assets/comments-CW2nz465.js +357 -0
  241. package/dist/showcase/assets/commerce-bwcq6oPn.js +267 -0
  242. package/dist/showcase/assets/composite-DMIR0vmP.js +1 -0
  243. package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +1 -0
  244. package/dist/showcase/assets/contact-card-BCXS9tWq.js +65 -0
  245. package/dist/showcase/assets/content-container-b1dC2caJ.js +1 -0
  246. package/dist/showcase/assets/copyable-BIABx-Vv.js +96 -0
  247. package/dist/showcase/assets/copyable-Ic9wzVaj.js +1 -0
  248. package/dist/showcase/assets/course-card-Bo5P3TYv.js +77 -0
  249. package/dist/showcase/assets/cpu-_VqU6yRO.js +1 -0
  250. package/dist/showcase/assets/credit-card-BbxO8xLo.js +1 -0
  251. package/dist/showcase/assets/css-variables-zqpBgnS1.js +1205 -0
  252. package/dist/showcase/assets/currency-Cjvt4F0b.js +149 -0
  253. package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +90 -0
  254. package/dist/showcase/assets/data-view-AtyUp7b-.js +124 -0
  255. package/dist/showcase/assets/data-view-cnEmgP1C.js +4 -0
  256. package/dist/showcase/assets/database-TbVXEw7v.js +1 -0
  257. package/dist/showcase/assets/date-block-CDHemKnP.js +1 -0
  258. package/dist/showcase/assets/date-block-COb89Y_-.js +1 -0
  259. package/dist/showcase/assets/date-picker-CK8llBIN.js +1 -0
  260. package/dist/showcase/assets/date-pickers-DFfDnW9w.js +73 -0
  261. package/dist/showcase/assets/dense-info-CaFVDE90.js +106 -0
  262. package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +264 -0
  263. package/dist/showcase/assets/dialog-CRQNEK2K.js +1 -0
  264. package/dist/showcase/assets/dialog-CsCLDb0G.js +1 -0
  265. package/dist/showcase/assets/dialog-Qh3EHEKq.js +1 -0
  266. package/dist/showcase/assets/display-utilities-rP3hb4FK.js +4 -0
  267. package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +309 -0
  268. package/dist/showcase/assets/dist-CbqRct9s.js +1 -0
  269. package/dist/showcase/assets/dist-iivamCjp.js +45 -0
  270. package/dist/showcase/assets/dollar-sign-COaRmdJE.js +1 -0
  271. package/dist/showcase/assets/download-yCcb4rfH.js +1 -0
  272. package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +1 -0
  273. package/dist/showcase/assets/dropzone-DLguWnmu.js +1 -0
  274. package/dist/showcase/assets/earth-TDRqTA4S.js +1 -0
  275. package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +1 -0
  276. package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +1 -0
  277. package/dist/showcase/assets/empty-DvmDTSAj.js +1 -0
  278. package/dist/showcase/assets/empty-item-C3HP5nuw.js +49 -0
  279. package/dist/showcase/assets/empty-state-Dcin4cOt.js +190 -0
  280. package/dist/showcase/assets/empty-state-IV_GTNEI.js +1 -0
  281. package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +357 -0
  282. package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +1 -0
  283. package/dist/showcase/assets/esm-Cf6QQstQ.js +2 -0
  284. package/dist/showcase/assets/event-calendar-zrfI_3AM.js +138 -0
  285. package/dist/showcase/assets/event-log-D-_CViAw.js +330 -0
  286. package/dist/showcase/assets/example-6bZGEb3-.js +1 -0
  287. package/dist/showcase/assets/external-link-7ldgjHZM.js +1 -0
  288. package/dist/showcase/assets/eye-pXVkim6z.js +1 -0
  289. package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +34 -0
  290. package/dist/showcase/assets/file-Bn9sAGaT.js +1 -0
  291. package/dist/showcase/assets/file-text-Cvxg6pjh.js +1 -0
  292. package/dist/showcase/assets/filter-layout-DqNRRzDU.js +1 -0
  293. package/dist/showcase/assets/filters-CQMI_T63.js +139 -0
  294. package/dist/showcase/assets/flag-vI_WJ-BU.js +1 -0
  295. package/dist/showcase/assets/folder-open-0AyKSRQS.js +1 -0
  296. package/dist/showcase/assets/form-field-BaBeXn7a.js +1 -0
  297. package/dist/showcase/assets/format-DLLMyN-3.js +1 -0
  298. package/dist/showcase/assets/forms-gPD-Caru.js +915 -0
  299. package/dist/showcase/assets/funnel-Ca9nWMHm.js +1 -0
  300. package/dist/showcase/assets/generic-AAssz0h7.js +1 -0
  301. package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +1 -0
  302. package/dist/showcase/assets/gift-BC42Oxfz.js +1 -0
  303. package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +85 -0
  304. package/dist/showcase/assets/git-branch-B-nF8w-J.js +1 -0
  305. package/dist/showcase/assets/global-search-D6Gxw0G3.js +1 -0
  306. package/dist/showcase/assets/global-search-jsb_4idg.js +215 -0
  307. package/dist/showcase/assets/globe-C92uBSrO.js +1 -0
  308. package/dist/showcase/assets/gradient-card-D4ly60sD.js +58 -0
  309. package/dist/showcase/assets/hash-BShTbxlR.js +1 -0
  310. package/dist/showcase/assets/header-CSiNqg9Q.js +1 -0
  311. package/dist/showcase/assets/header-notifications-CpHeFPQF.js +1 -0
  312. package/dist/showcase/assets/heart-B3hXs7fr.js +1 -0
  313. package/dist/showcase/assets/hooks-CamAqFFh.js +220 -0
  314. package/dist/showcase/assets/house-4_CouE-Y.js +1 -0
  315. package/dist/showcase/assets/icon-badge-CePIZqWR.js +1 -0
  316. package/dist/showcase/assets/icon-badge-DSbvvnxh.js +37 -0
  317. package/dist/showcase/assets/image-BxbFIbVJ.js +1 -0
  318. package/dist/showcase/assets/inbox-BXab1SM6.js +1 -0
  319. package/dist/showcase/assets/index-BPUtPJjB.css +2 -0
  320. package/dist/showcase/assets/index-BjjNfnhP.js +10 -0
  321. package/dist/showcase/assets/inertValue-CZOzgsmF.js +1 -0
  322. package/dist/showcase/assets/info-DzqwCq93.js +1 -0
  323. package/dist/showcase/assets/inline-stat-D5ybpUh-.js +15 -0
  324. package/dist/showcase/assets/inline-stat-Dq34wv-6.js +1 -0
  325. package/dist/showcase/assets/input-C8OfUHCK.js +1 -0
  326. package/dist/showcase/assets/input-D34Ge3rh.js +1 -0
  327. package/dist/showcase/assets/input-group-BCPZ6Pwq.js +1 -0
  328. package/dist/showcase/assets/input-group-CySTANka.js +47 -0
  329. package/dist/showcase/assets/inputs-CnmHo_lj.js +155 -0
  330. package/dist/showcase/assets/installation-BPvseS46.js +134 -0
  331. package/dist/showcase/assets/invoice-header-C9JjJWQX.js +36 -0
  332. package/dist/showcase/assets/invoice-items-DB8tbCv9.js +36 -0
  333. package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +14 -0
  334. package/dist/showcase/assets/invoice-table-CLDvpLib.js +30 -0
  335. package/dist/showcase/assets/isSameDay-D8bDebyL.js +1 -0
  336. package/dist/showcase/assets/isToday-XVjRuMtp.js +1 -0
  337. package/dist/showcase/assets/italic-Cm13b8qb.js +1 -0
  338. package/dist/showcase/assets/item-C07859JQ.js +1 -0
  339. package/dist/showcase/assets/item-LinnMxvu.js +1 -0
  340. package/dist/showcase/assets/item-i7ZUMs5t.js +140 -0
  341. package/dist/showcase/assets/kanban-CIMTpuN5.js +188 -0
  342. package/dist/showcase/assets/key-round-Bh7EzOyR.js +1 -0
  343. package/dist/showcase/assets/label-C3A4CjeG.js +1 -0
  344. package/dist/showcase/assets/languages-C37jhetw.js +1 -0
  345. package/dist/showcase/assets/layers-Lyr6p-Nt.js +1 -0
  346. package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +608 -0
  347. package/dist/showcase/assets/layout-auth-y1alnhc8.js +790 -0
  348. package/dist/showcase/assets/layout-containers-B6c-uvil.js +101 -0
  349. package/dist/showcase/assets/layout-header-DNhJHWNw.js +203 -0
  350. package/dist/showcase/assets/layout-page-CXU7CnQK.js +315 -0
  351. package/dist/showcase/assets/layout-primitives-StuFwfwh.js +34 -0
  352. package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +224 -0
  353. package/dist/showcase/assets/layout-users-D7KMzs3-.js +117 -0
  354. package/dist/showcase/assets/layout-workspace-Butr7CL5.js +191 -0
  355. package/dist/showcase/assets/lib-D5nOMXIt.js +1 -0
  356. package/dist/showcase/assets/list-checks-Cg9HZf4W.js +1 -0
  357. package/dist/showcase/assets/lock-Da21HhQx.js +1 -0
  358. package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +1 -0
  359. package/dist/showcase/assets/mail-Bamky-ti.js +1 -0
  360. package/dist/showcase/assets/mail-check-BfVYPC42.js +1 -0
  361. package/dist/showcase/assets/map-BTlWnRAQ.js +124 -0
  362. package/dist/showcase/assets/map-pin-BU2RBuvC.js +1 -0
  363. package/dist/showcase/assets/media-library-DJxgoGAF.js +699 -0
  364. package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +1 -0
  365. package/dist/showcase/assets/mentions-kMT-Z3qU.js +138 -0
  366. package/dist/showcase/assets/menus-bhp_n9PT.js +171 -0
  367. package/dist/showcase/assets/message-square-DC5Bb9Zs.js +1 -0
  368. package/dist/showcase/assets/metadata-list-DGr729EW.js +286 -0
  369. package/dist/showcase/assets/metadata-list-DyjhZi6d.js +1 -0
  370. package/dist/showcase/assets/metric-DRDok6Ci.js +1 -0
  371. package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +1 -0
  372. package/dist/showcase/assets/metric-grid-BlFXTrid.js +1 -0
  373. package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +1 -0
  374. package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +44 -0
  375. package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +50 -0
  376. package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +76 -0
  377. package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +27 -0
  378. package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +17 -0
  379. package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +31 -0
  380. package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +42 -0
  381. package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +192 -0
  382. package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +54 -0
  383. package/dist/showcase/assets/minus-Dr1iTc_q.js +1 -0
  384. package/dist/showcase/assets/money-display-B5_VqQC0.js +1 -0
  385. package/dist/showcase/assets/money-display-bU2_cVGX.js +1 -0
  386. package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +1 -0
  387. package/dist/showcase/assets/navigation-DBKvJoe-.js +231 -0
  388. package/dist/showcase/assets/navigation-DOhfmtgy.js +90 -0
  389. package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +43 -0
  390. package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +1 -0
  391. package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +119 -0
  392. package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +1 -0
  393. package/dist/showcase/assets/overlays-4E_sUgkz.js +408 -0
  394. package/dist/showcase/assets/overlays-ulNl-Vhr.js +159 -0
  395. package/dist/showcase/assets/overview-CgymfIBq.js +184 -0
  396. package/dist/showcase/assets/package-CADuUP1u.js +1 -0
  397. package/dist/showcase/assets/package-check-O7MD6XE_.js +1 -0
  398. package/dist/showcase/assets/page-GB6OIgID.js +1 -0
  399. package/dist/showcase/assets/page-action-button-Dpprot7y.js +1 -0
  400. package/dist/showcase/assets/page-header-2VEUPx67.js +1 -0
  401. package/dist/showcase/assets/pagination-BBuRtAX9.js +1 -0
  402. package/dist/showcase/assets/pagination-C4mt4Q4l.js +42 -0
  403. package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +1 -0
  404. package/dist/showcase/assets/password-input-CgZj1niQ.js +1 -0
  405. package/dist/showcase/assets/pencil-CtdXjogr.js +1 -0
  406. package/dist/showcase/assets/phone-CAFMH1vV.js +1 -0
  407. package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +1 -0
  408. package/dist/showcase/assets/plus-CN2dzUxL.js +1 -0
  409. package/dist/showcase/assets/popover-DILNXLWy.js +1 -0
  410. package/dist/showcase/assets/popover-menu-Bp08xxOf.js +1 -0
  411. package/dist/showcase/assets/popover-o1EO2yVS.js +1 -0
  412. package/dist/showcase/assets/products-CCLAbHBN.js +423 -0
  413. package/dist/showcase/assets/progress-BGna-ZmU.js +18 -0
  414. package/dist/showcase/assets/progress-BSYlNLIJ.js +1 -0
  415. package/dist/showcase/assets/progress-CZVy3LGB.js +1 -0
  416. package/dist/showcase/assets/props-table-X9St7Q4m.js +1 -0
  417. package/dist/showcase/assets/props.generated-f_jHBhPb.json +41753 -0
  418. package/dist/showcase/assets/qr-code-CEmKf9xU.js +1 -0
  419. package/dist/showcase/assets/quote-IH6r-rlY.js +1 -0
  420. package/dist/showcase/assets/receipt-m9rOe5lY.js +1 -0
  421. package/dist/showcase/assets/receipt-text-C0TobatH.js +1 -0
  422. package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +189 -0
  423. package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +1 -0
  424. package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +1 -0
  425. package/dist/showcase/assets/resource-BcJ8O6uj.js +1 -0
  426. package/dist/showcase/assets/resource-_zDXez77.js +139 -0
  427. package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +43 -0
  428. package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +143 -0
  429. package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +124 -0
  430. package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +1 -0
  431. package/dist/showcase/assets/route-C7EZ2Njy.js +1 -0
  432. package/dist/showcase/assets/save-fKrt-yFG.js +1 -0
  433. package/dist/showcase/assets/schema-form-k7TXeirD.js +327 -0
  434. package/dist/showcase/assets/scroll-area-CqNwdlI6.js +32 -0
  435. package/dist/showcase/assets/scroll-area-UVtlGOgx.js +1 -0
  436. package/dist/showcase/assets/section-DuBNJP4P.js +1 -0
  437. package/dist/showcase/assets/select-CINVEIWn.js +1 -0
  438. package/dist/showcase/assets/select-ZLaamXrm.js +1 -0
  439. package/dist/showcase/assets/send-DBvt_4jT.js +1 -0
  440. package/dist/showcase/assets/separator-BdBXRpc3.js +28 -0
  441. package/dist/showcase/assets/separator-CkJjJQWW.js +1 -0
  442. package/dist/showcase/assets/separator-CxOeStjL.js +1 -0
  443. package/dist/showcase/assets/separator-O-VQMSf_.js +1 -0
  444. package/dist/showcase/assets/settings-2-BWjMVlyS.js +1 -0
  445. package/dist/showcase/assets/settings-D9Z79UcG.js +1 -0
  446. package/dist/showcase/assets/sheet-CK9C6r7_.js +1 -0
  447. package/dist/showcase/assets/shield-BboB3Zlo.js +1 -0
  448. package/dist/showcase/assets/shield-alert-CAAobStl.js +1 -0
  449. package/dist/showcase/assets/shield-check-Rfyzz9bK.js +1 -0
  450. package/dist/showcase/assets/shopping-bag-5hLD82YW.js +1 -0
  451. package/dist/showcase/assets/showcase-DhOQXB5E.js +132 -0
  452. package/dist/showcase/assets/sidebar-ZTUACc0t.js +1 -0
  453. package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +1 -0
  454. package/dist/showcase/assets/skeleton-BZUSoHbk.js +1 -0
  455. package/dist/showcase/assets/skeleton-BZkYzAdq.js +1 -0
  456. package/dist/showcase/assets/skeleton-CrOp8tx3.js +29 -0
  457. package/dist/showcase/assets/skeleton-P5GXAj4U.js +1 -0
  458. package/dist/showcase/assets/slider-zlE7nLrp.js +1 -0
  459. package/dist/showcase/assets/smart-card-OExZHSsj.js +1 -0
  460. package/dist/showcase/assets/sonner-eMphKM9E.js +22 -0
  461. package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +5 -0
  462. package/dist/showcase/assets/sparkles-CIB5irID.js +1 -0
  463. package/dist/showcase/assets/spinner-11-kP-Ob.js +1 -0
  464. package/dist/showcase/assets/spinner-D4G5TFSm.js +49 -0
  465. package/dist/showcase/assets/spinner-DKGukuFV.js +30 -0
  466. package/dist/showcase/assets/square-pen-zflKy9oX.js +1 -0
  467. package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +1 -0
  468. package/dist/showcase/assets/star-DleXDkCp.js +1 -0
  469. package/dist/showcase/assets/startOfDay-TDP2erzM.js +1 -0
  470. package/dist/showcase/assets/styles-BKlX_Ipc.js +1 -0
  471. package/dist/showcase/assets/suggestions-Dt2hm1NY.js +126 -0
  472. package/dist/showcase/assets/switch-DAPAgJbv.js +1 -0
  473. package/dist/showcase/assets/switch-fQpP2tJl.js +1 -0
  474. package/dist/showcase/assets/sync-BRcK160D.js +124 -0
  475. package/dist/showcase/assets/table-Dhmbe1yN.js +686 -0
  476. package/dist/showcase/assets/table-actions-GGrPOQcv.js +1 -0
  477. package/dist/showcase/assets/table-v0Eu5yZn.js +1 -0
  478. package/dist/showcase/assets/tabs-DmaXB1aF.js +19 -0
  479. package/dist/showcase/assets/tabs-vbNIJ-eo.js +1 -0
  480. package/dist/showcase/assets/tags-input-Bms_Q5CE.js +1 -0
  481. package/dist/showcase/assets/text-button-gvJCzaXS.js +1 -0
  482. package/dist/showcase/assets/text-link-DkByVX4d.js +1 -0
  483. package/dist/showcase/assets/textarea-B6Ho29y3.js +1 -0
  484. package/dist/showcase/assets/textarea-JCb0yhZ1.js +1 -0
  485. package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +1 -0
  486. package/dist/showcase/assets/timelines-Bw7mvAdx.js +200 -0
  487. package/dist/showcase/assets/toggle-group-jlIGX1zh.js +1 -0
  488. package/dist/showcase/assets/toggles-DV6V9vj-.js +71 -0
  489. package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +32 -0
  490. package/dist/showcase/assets/tooltip-CDtPyNOv.js +31 -0
  491. package/dist/showcase/assets/trash-2-CXRm3lMl.js +1 -0
  492. package/dist/showcase/assets/trending-up-Bcyp9cw8.js +1 -0
  493. package/dist/showcase/assets/truck-DVgzuKLP.js +1 -0
  494. package/dist/showcase/assets/typography-BKPf4j85.js +223 -0
  495. package/dist/showcase/assets/ui-badge-D-Ud2MES.js +28 -0
  496. package/dist/showcase/assets/ui-card-gGqI2cfr.js +30 -0
  497. package/dist/showcase/assets/ui-table-Bqcab_kq.js +42 -0
  498. package/dist/showcase/assets/upload-tray-BFh6twLE.js +138 -0
  499. package/dist/showcase/assets/use-layout-link-e9jr981L.js +1 -0
  500. package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +1 -0
  501. package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +1 -0
  502. package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +1 -0
  503. package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +1 -0
  504. package/dist/showcase/assets/useLabelableId-COfjI9qt.js +1 -0
  505. package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +1 -0
  506. package/dist/showcase/assets/useRender-Bgu76j1u.js +1 -0
  507. package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +1 -0
  508. package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +1 -0
  509. package/dist/showcase/assets/user-CmkLnMh9.js +1 -0
  510. package/dist/showcase/assets/user-plus-3CGFNUf0.js +1 -0
  511. package/dist/showcase/assets/users-CuO8W7wn.js +1 -0
  512. package/dist/showcase/assets/vendor-profile-HLMsE22G.js +37 -0
  513. package/dist/showcase/assets/video-CoHnn0fp.js +1 -0
  514. package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +1 -0
  515. package/dist/showcase/assets/wrench-C93IxaGt.js +1 -0
  516. package/dist/showcase/assets/x-BJDvVLAz.js +1 -0
  517. package/dist/showcase/assets/zap-DYD_Ljkv.js +1 -0
  518. package/dist/showcase/index.html +2 -2
  519. package/dist/style.css +1 -1
  520. package/package.json +1 -1
  521. package/src/css/themes/shadcn.default.css +2 -2
  522. package/dist/_shared/ai-artifact-BylloxGO.js +0 -1099
  523. package/dist/_shared/ai-artifact-BylloxGO.js.map +0 -1
  524. package/dist/_shared/ai-artifact-DfT97Mpi.cjs +0 -3
  525. package/dist/_shared/ai-artifact-DfT97Mpi.cjs.map +0 -1
  526. package/dist/_shared/auth-1Ht9Kevx.js +0 -643
  527. package/dist/_shared/auth-1Ht9Kevx.js.map +0 -1
  528. package/dist/_shared/auth-DTN6sFXM.cjs +0 -2
  529. package/dist/_shared/auth-DTN6sFXM.cjs.map +0 -1
  530. package/dist/_shared/badge-LSAgdmGt.cjs +0 -2
  531. package/dist/_shared/badge-LSAgdmGt.cjs.map +0 -1
  532. package/dist/_shared/badge-nZ2zbAV4.js +0 -110
  533. package/dist/_shared/badge-nZ2zbAV4.js.map +0 -1
  534. package/dist/_shared/comments-B_WKQUol.js +0 -952
  535. package/dist/_shared/comments-B_WKQUol.js.map +0 -1
  536. package/dist/_shared/comments-DMHMNObS.cjs +0 -2
  537. package/dist/_shared/comments-DMHMNObS.cjs.map +0 -1
  538. package/dist/_shared/data-display-4E_irfF2.js +0 -1878
  539. package/dist/_shared/data-display-4E_irfF2.js.map +0 -1
  540. package/dist/_shared/data-display-BPn-7qFO.cjs +0 -2
  541. package/dist/_shared/data-display-BPn-7qFO.cjs.map +0 -1
  542. package/dist/_shared/date-picker-CvqLnlxm.js +0 -1361
  543. package/dist/_shared/date-picker-CvqLnlxm.js.map +0 -1
  544. package/dist/_shared/date-picker-D83fCi2g.cjs +0 -2
  545. package/dist/_shared/date-picker-D83fCi2g.cjs.map +0 -1
  546. package/dist/_shared/date-pickers-C6ku2BPp.cjs +0 -2
  547. package/dist/_shared/date-pickers-C6ku2BPp.cjs.map +0 -1
  548. package/dist/_shared/date-pickers-RdbwIhdY.js +0 -329
  549. package/dist/_shared/date-pickers-RdbwIhdY.js.map +0 -1
  550. package/dist/_shared/display-DFVeSuWL.js +0 -986
  551. package/dist/_shared/display-DFVeSuWL.js.map +0 -1
  552. package/dist/_shared/display-Lr3xTd4a.cjs +0 -2
  553. package/dist/_shared/display-Lr3xTd4a.cjs.map +0 -1
  554. package/dist/_shared/forms-BA8Aa_fi.js +0 -3534
  555. package/dist/_shared/forms-BA8Aa_fi.js.map +0 -1
  556. package/dist/_shared/forms-CNjjdFcf.cjs +0 -2
  557. package/dist/_shared/forms-CNjjdFcf.cjs.map +0 -1
  558. package/dist/_shared/header-BEsz1_so.cjs +0 -2
  559. package/dist/_shared/header-BEsz1_so.cjs.map +0 -1
  560. package/dist/_shared/header-bJx8z6zT.js +0 -447
  561. package/dist/_shared/header-bJx8z6zT.js.map +0 -1
  562. package/dist/_shared/hooks-gRgVhyY2.js +0 -95
  563. package/dist/_shared/hooks-gRgVhyY2.js.map +0 -1
  564. package/dist/_shared/hooks-nFiRfUxX.cjs +0 -2
  565. package/dist/_shared/hooks-nFiRfUxX.cjs.map +0 -1
  566. package/dist/_shared/layout-C_dYiKtE.cjs +0 -2
  567. package/dist/_shared/layout-C_dYiKtE.cjs.map +0 -1
  568. package/dist/_shared/layout-nigj488k.js +0 -268
  569. package/dist/_shared/layout-nigj488k.js.map +0 -1
  570. package/dist/_shared/mentions-BE51BNeq.cjs +0 -2
  571. package/dist/_shared/mentions-BE51BNeq.cjs.map +0 -1
  572. package/dist/_shared/mentions-CBhP29St.js +0 -506
  573. package/dist/_shared/mentions-CBhP29St.js.map +0 -1
  574. package/dist/_shared/navigation-CWK_YQ5Y.js +0 -436
  575. package/dist/_shared/navigation-CWK_YQ5Y.js.map +0 -1
  576. package/dist/_shared/navigation-DTBMb7-M.cjs +0 -2
  577. package/dist/_shared/navigation-DTBMb7-M.cjs.map +0 -1
  578. package/dist/_shared/settings-D-HAOE3R.js +0 -143
  579. package/dist/_shared/settings-D-HAOE3R.js.map +0 -1
  580. package/dist/_shared/settings-DkL3bOk0.cjs +0 -2
  581. package/dist/_shared/settings-DkL3bOk0.cjs.map +0 -1
  582. package/dist/_shared/sidebar-BTyx7ipN.cjs +0 -2
  583. package/dist/_shared/sidebar-BTyx7ipN.cjs.map +0 -1
  584. package/dist/_shared/sidebar-DkBNualh.js +0 -548
  585. package/dist/_shared/sidebar-DkBNualh.js.map +0 -1
  586. package/dist/_shared/table-Cq0jkSm5.js +0 -1377
  587. package/dist/_shared/table-Cq0jkSm5.js.map +0 -1
  588. package/dist/_shared/table-GqTKCC8F.cjs +0 -2
  589. package/dist/_shared/table-GqTKCC8F.cjs.map +0 -1
  590. package/dist/_shared/workspace-5UId04M9.js +0 -357
  591. package/dist/_shared/workspace-5UId04M9.js.map +0 -1
  592. package/dist/_shared/workspace-BMws_rFf.cjs +0 -2
  593. package/dist/_shared/workspace-BMws_rFf.cjs.map +0 -1
  594. package/dist/showcase/assets/AreaChart-oKO7Ng_P.js +0 -6
  595. package/dist/showcase/assets/CompositeItem-CK7jBYU8.js +0 -1
  596. package/dist/showcase/assets/CompositeRoot-_AuToqhT.js +0 -1
  597. package/dist/showcase/assets/DialogTrigger-C44ZZXQ9.js +0 -1
  598. package/dist/showcase/assets/LabelableContext-DLVZlnur.js +0 -1
  599. package/dist/showcase/assets/PreviewLayout-Oik7TDHN.js +0 -1
  600. package/dist/showcase/assets/RadioGroup-DeYb8CGE.js +0 -1
  601. package/dist/showcase/assets/ScrollAreaCorner-BZlE_Bil.js +0 -1
  602. package/dist/showcase/assets/Separator-uiIktHzk.js +0 -1
  603. package/dist/showcase/assets/ToolbarRootContext-CEzj5dKk.js +0 -1
  604. package/dist/showcase/assets/accordion-B_wg_YOp.js +0 -171
  605. package/dist/showcase/assets/accordion-variants-O6U7E38x.js +0 -1
  606. package/dist/showcase/assets/action-menu-D_wGvb_o.js +0 -1
  607. package/dist/showcase/assets/actions-u4Fl4zm1.js +0 -310
  608. package/dist/showcase/assets/activities-C6iITHzB.js +0 -500
  609. package/dist/showcase/assets/activities-feed-card-OpYs16UV.js +0 -1
  610. package/dist/showcase/assets/admin-Bq15E5Wd.js +0 -140
  611. package/dist/showcase/assets/ai-DcUzGTlb.js +0 -207
  612. package/dist/showcase/assets/ai-artifact-BUAu1_jV.js +0 -2
  613. package/dist/showcase/assets/ai-chat-C6OWWBqh.js +0 -568
  614. package/dist/showcase/assets/ai-elements-CCe4Aqj_.js +0 -387
  615. package/dist/showcase/assets/ai-tool-call-B_NF1ePn.js +0 -1
  616. package/dist/showcase/assets/alert-B4VWkFPE.js +0 -1
  617. package/dist/showcase/assets/alert-BDIqciKo.js +0 -62
  618. package/dist/showcase/assets/alert-jvCEGWe6.js +0 -93
  619. package/dist/showcase/assets/api-key-list-BH8mde9A.js +0 -1
  620. package/dist/showcase/assets/api-key-list-CA6O3hsc.js +0 -73
  621. package/dist/showcase/assets/app-sidebar-DsMTwSAB.js +0 -1
  622. package/dist/showcase/assets/arrow-down-BzPC0rON.js +0 -1
  623. package/dist/showcase/assets/arrow-left-DNehZvF-.js +0 -1
  624. package/dist/showcase/assets/arrow-right-CKIgWncF.js +0 -1
  625. package/dist/showcase/assets/arrow-up-YjujZi8v.js +0 -1
  626. package/dist/showcase/assets/arrow-up-right-KnVxFmw9.js +0 -1
  627. package/dist/showcase/assets/avatar-BBLri7tX.js +0 -57
  628. package/dist/showcase/assets/avatar-BeFx8JQd.js +0 -1
  629. package/dist/showcase/assets/avatar-CFWUZzaF.js +0 -67
  630. package/dist/showcase/assets/avatar-D6exHRSK.js +0 -1
  631. package/dist/showcase/assets/badge-check-BfY3RIjR.js +0 -1
  632. package/dist/showcase/assets/badge-jGj2HQsg.js +0 -31
  633. package/dist/showcase/assets/bell-CTDSIOv8.js +0 -1
  634. package/dist/showcase/assets/boolean-indicator-C1u7OFcR.js +0 -1
  635. package/dist/showcase/assets/bot-D-iqtYiQ.js +0 -1
  636. package/dist/showcase/assets/box-DxjjLEh2.js +0 -1
  637. package/dist/showcase/assets/braces-B6XLlZwJ.js +0 -1
  638. package/dist/showcase/assets/brain-BdNpswBH.js +0 -1
  639. package/dist/showcase/assets/brand-C6srYuIa.js +0 -36
  640. package/dist/showcase/assets/breadcrumb-BaeV7C4t.js +0 -52
  641. package/dist/showcase/assets/breadcrumb-jKu4EUFo.js +0 -1
  642. package/dist/showcase/assets/breadcrumbs-D7vYX_5y.js +0 -1
  643. package/dist/showcase/assets/briefcase-cs9wyoxL.js +0 -1
  644. package/dist/showcase/assets/building-2-rcMEYcbf.js +0 -1
  645. package/dist/showcase/assets/button-group-D1oXfasP.js +0 -1
  646. package/dist/showcase/assets/button-oBRwhAhs.js +0 -44
  647. package/dist/showcase/assets/buttons-D_SDu9w3.js +0 -272
  648. package/dist/showcase/assets/calendar-CGTiVckW.js +0 -1
  649. package/dist/showcase/assets/calendar-ChLkVME0.js +0 -16
  650. package/dist/showcase/assets/calendar-CjMPvWfI.js +0 -1
  651. package/dist/showcase/assets/calendar-days-CNom8Y38.js +0 -1
  652. package/dist/showcase/assets/camera-D0rjOOcs.js +0 -1
  653. package/dist/showcase/assets/card-CYz4UxYz.js +0 -1
  654. package/dist/showcase/assets/card-D9updr3B.js +0 -188
  655. package/dist/showcase/assets/card-primitives-BQ0hSEWX.js +0 -1
  656. package/dist/showcase/assets/card-radio-group-CrNG04Bl.js +0 -1
  657. package/dist/showcase/assets/cards-D4Lw-AI6.js +0 -354
  658. package/dist/showcase/assets/carousel-C6Mmapzw.js +0 -449
  659. package/dist/showcase/assets/cell-renderers-BF80Z3jW.js +0 -1
  660. package/dist/showcase/assets/chart-BHgMfUB5.js +0 -358
  661. package/dist/showcase/assets/chart-column-CE_VhlUz.js +0 -1
  662. package/dist/showcase/assets/checkbox-CDLT09vU.js +0 -1
  663. package/dist/showcase/assets/checkbox-Dj24Tegr.js +0 -1
  664. package/dist/showcase/assets/chevron-down-1GeJ4hOO.js +0 -1
  665. package/dist/showcase/assets/chevron-left-wqlWv2Qy.js +0 -1
  666. package/dist/showcase/assets/chevron-up-CZAm-2rZ.js +0 -1
  667. package/dist/showcase/assets/chevrons-up-down-DgysGYWR.js +0 -1
  668. package/dist/showcase/assets/circle-C9Ooo8Lv.js +0 -1
  669. package/dist/showcase/assets/circle-alert-C6XBfkf2.js +0 -1
  670. package/dist/showcase/assets/circle-check-DvCYlVmL.js +0 -1
  671. package/dist/showcase/assets/circle-check-big-C8o9clAE.js +0 -1
  672. package/dist/showcase/assets/circle-dot-BoYf3vOR.js +0 -1
  673. package/dist/showcase/assets/circle-question-mark-DYPX0qe9.js +0 -1
  674. package/dist/showcase/assets/circle-x-GosnT0l7.js +0 -1
  675. package/dist/showcase/assets/clock-3-DklFhayq.js +0 -1
  676. package/dist/showcase/assets/clock-BvwTkk1w.js +0 -1
  677. package/dist/showcase/assets/code-xml-AGOwtN8Z.js +0 -1
  678. package/dist/showcase/assets/collapsible-CBkbr3ho.js +0 -1
  679. package/dist/showcase/assets/collapsible-CmY1SA28.js +0 -27
  680. package/dist/showcase/assets/collapsible-DfDnQ_t_.js +0 -1
  681. package/dist/showcase/assets/combobox-BsZQo7hF.js +0 -685
  682. package/dist/showcase/assets/command-B0Q84gg6.js +0 -1
  683. package/dist/showcase/assets/command-BtADdA65.js +0 -1
  684. package/dist/showcase/assets/comment-composer-BmBnkba9.js +0 -1
  685. package/dist/showcase/assets/comment-item-y5mTfSmU.js +0 -1
  686. package/dist/showcase/assets/comments-BuYiGPxI.js +0 -357
  687. package/dist/showcase/assets/commerce-21Ef_rsW.js +0 -267
  688. package/dist/showcase/assets/composite-fKT6fZFs.js +0 -1
  689. package/dist/showcase/assets/conditional-rendering-DsTG0sOE.js +0 -1
  690. package/dist/showcase/assets/contact-card-S8koA9Sr.js +0 -65
  691. package/dist/showcase/assets/content-container-B4gW5fmA.js +0 -1
  692. package/dist/showcase/assets/copyable-D2xL2rMm.js +0 -96
  693. package/dist/showcase/assets/copyable-gLrmPayI.js +0 -1
  694. package/dist/showcase/assets/course-card-B8eEvF7a.js +0 -77
  695. package/dist/showcase/assets/cpu-Cp1On3tr.js +0 -1
  696. package/dist/showcase/assets/credit-card-QbZMZB90.js +0 -1
  697. package/dist/showcase/assets/css-variables-BXICo9fV.js +0 -1205
  698. package/dist/showcase/assets/currency-D2MSLjLt.js +0 -149
  699. package/dist/showcase/assets/dark-surfaces-CJsxuvQU.js +0 -90
  700. package/dist/showcase/assets/data-view-syhKhdz9.js +0 -124
  701. package/dist/showcase/assets/data-view-znnAeb6b.js +0 -4
  702. package/dist/showcase/assets/database-isLkCvDd.js +0 -1
  703. package/dist/showcase/assets/date-block-BDn9lGVM.js +0 -1
  704. package/dist/showcase/assets/date-block-CqRL1xfo.js +0 -1
  705. package/dist/showcase/assets/date-picker-DNcmSgQk.js +0 -1
  706. package/dist/showcase/assets/date-pickers-3lQUDDS7.js +0 -73
  707. package/dist/showcase/assets/dense-info-CfvqiIpM.js +0 -106
  708. package/dist/showcase/assets/design-system-consistency-C3yRhKwF.js +0 -264
  709. package/dist/showcase/assets/dialog-DiAkrPHO.js +0 -1
  710. package/dist/showcase/assets/dialog-feUFM03m.js +0 -1
  711. package/dist/showcase/assets/dialog-ruVOqJnB.js +0 -1
  712. package/dist/showcase/assets/display-utilities-SPJxlrkp.js +0 -4
  713. package/dist/showcase/assets/display-utilities.examples-ByRydMl0.js +0 -302
  714. package/dist/showcase/assets/dist-C9DVZddl.js +0 -45
  715. package/dist/showcase/assets/dist-DNARKM_B.js +0 -1
  716. package/dist/showcase/assets/dollar-sign-CUDuWyun.js +0 -1
  717. package/dist/showcase/assets/download-CIbh9VUU.js +0 -1
  718. package/dist/showcase/assets/dropdown-menu-MoIAG0ES.js +0 -1
  719. package/dist/showcase/assets/dropzone-D0kHIUuh.js +0 -1
  720. package/dist/showcase/assets/earth-BpNTeF25.js +0 -1
  721. package/dist/showcase/assets/ellipsis-B9w0cuoH.js +0 -1
  722. package/dist/showcase/assets/ellipsis-vertical-DHbOsjTF.js +0 -1
  723. package/dist/showcase/assets/empty-DvYVgcNF.js +0 -1
  724. package/dist/showcase/assets/empty-item-oFM5kPCp.js +0 -49
  725. package/dist/showcase/assets/empty-state-DTq86muv.js +0 -1
  726. package/dist/showcase/assets/empty-state-De7XCht-.js +0 -190
  727. package/dist/showcase/assets/enhanced-activities--XHjx99M.js +0 -357
  728. package/dist/showcase/assets/enhanced-combobox-CX_mTkei.js +0 -1
  729. package/dist/showcase/assets/esm-XXqBjGGF.js +0 -2
  730. package/dist/showcase/assets/event-calendar-zTiCWOF5.js +0 -138
  731. package/dist/showcase/assets/event-log-C_zSlY6y.js +0 -330
  732. package/dist/showcase/assets/example-Cv05rz75.js +0 -1
  733. package/dist/showcase/assets/external-link-DaR-AMyf.js +0 -1
  734. package/dist/showcase/assets/eye-CDSbB0kZ.js +0 -1
  735. package/dist/showcase/assets/feature-announcement-DJ26ZDVB.js +0 -34
  736. package/dist/showcase/assets/file-DPSK5cGC.js +0 -1
  737. package/dist/showcase/assets/file-text-BBWpAppG.js +0 -1
  738. package/dist/showcase/assets/filter-layout-CZRGcd6Z.js +0 -1
  739. package/dist/showcase/assets/filters-Bn7hYUeq.js +0 -139
  740. package/dist/showcase/assets/flag-BRs-GTCx.js +0 -1
  741. package/dist/showcase/assets/folder-open-DnFjlB3X.js +0 -1
  742. package/dist/showcase/assets/form-field-SW-Yp7H7.js +0 -1
  743. package/dist/showcase/assets/format-Bki5m7M3.js +0 -1
  744. package/dist/showcase/assets/forms-CAUL2gGq.js +0 -915
  745. package/dist/showcase/assets/funnel-D6g2Suhd.js +0 -1
  746. package/dist/showcase/assets/generic-CU6JNqKO.js +0 -1
  747. package/dist/showcase/assets/getPseudoElementBounds-yqDwWA_y.js +0 -1
  748. package/dist/showcase/assets/gift-B2Qp9Vqt.js +0 -1
  749. package/dist/showcase/assets/giftcard-cards-Dk0DYoN2.js +0 -85
  750. package/dist/showcase/assets/git-branch-CPtvCNGc.js +0 -1
  751. package/dist/showcase/assets/global-search-D1ow01VA.js +0 -1
  752. package/dist/showcase/assets/global-search-DQR2AgDO.js +0 -215
  753. package/dist/showcase/assets/globe-BiZgUZFZ.js +0 -1
  754. package/dist/showcase/assets/gradient-card-D5isLy3_.js +0 -58
  755. package/dist/showcase/assets/hash-NJ5ohGOa.js +0 -1
  756. package/dist/showcase/assets/header-Df9uYSSH.js +0 -1
  757. package/dist/showcase/assets/header-notifications-sPR5NuON.js +0 -1
  758. package/dist/showcase/assets/heart-C4t7PVKW.js +0 -1
  759. package/dist/showcase/assets/hooks-0TKg0ZAK.js +0 -220
  760. package/dist/showcase/assets/house-CuLXFtjd.js +0 -1
  761. package/dist/showcase/assets/icon-badge-Cr6DD-_7.js +0 -1
  762. package/dist/showcase/assets/icon-badge-DMdMSSRL.js +0 -37
  763. package/dist/showcase/assets/image-DYjJaO0i.js +0 -1
  764. package/dist/showcase/assets/inbox-DGF8FgvV.js +0 -1
  765. package/dist/showcase/assets/index-ATou_nFA.js +0 -10
  766. package/dist/showcase/assets/index-C8U-r6l7.css +0 -2
  767. package/dist/showcase/assets/inertValue-CBi0sj8C.js +0 -1
  768. package/dist/showcase/assets/info-DLaTRPUT.js +0 -1
  769. package/dist/showcase/assets/inline-stat-DGpunTNF.js +0 -1
  770. package/dist/showcase/assets/inline-stat-rUaaOSmR.js +0 -15
  771. package/dist/showcase/assets/input-Cmrgo51H.js +0 -1
  772. package/dist/showcase/assets/input-CnmnWnGb.js +0 -1
  773. package/dist/showcase/assets/input-group-BwujFvXM.js +0 -1
  774. package/dist/showcase/assets/input-group-DvXgZtra.js +0 -47
  775. package/dist/showcase/assets/inputs-CjzW_R8z.js +0 -155
  776. package/dist/showcase/assets/installation-2dW-rmF2.js +0 -134
  777. package/dist/showcase/assets/invoice-header-DeWxMKCe.js +0 -36
  778. package/dist/showcase/assets/invoice-items-Dxb95w0e.js +0 -36
  779. package/dist/showcase/assets/invoice-mini-EMzCkmR7.js +0 -14
  780. package/dist/showcase/assets/invoice-table-ClWJaclJ.js +0 -30
  781. package/dist/showcase/assets/isSameDay-BNPzVySj.js +0 -1
  782. package/dist/showcase/assets/isToday-D6n7oLej.js +0 -1
  783. package/dist/showcase/assets/italic-B8w3dpYw.js +0 -1
  784. package/dist/showcase/assets/item-B8_dwOlT.js +0 -1
  785. package/dist/showcase/assets/item-Baq-Mmy2.js +0 -1
  786. package/dist/showcase/assets/item-BtMuqGwy.js +0 -140
  787. package/dist/showcase/assets/kanban-B-QxvKMg.js +0 -188
  788. package/dist/showcase/assets/key-round-CrBIyzIa.js +0 -1
  789. package/dist/showcase/assets/label-VWe_nbHh.js +0 -1
  790. package/dist/showcase/assets/languages-N0uGt5nC.js +0 -1
  791. package/dist/showcase/assets/layers-DEZvT5cX.js +0 -1
  792. package/dist/showcase/assets/layout-app-shell-T9UqKX2o.js +0 -608
  793. package/dist/showcase/assets/layout-auth-IVC4DuU3.js +0 -790
  794. package/dist/showcase/assets/layout-containers-naBpuH05.js +0 -101
  795. package/dist/showcase/assets/layout-header-9i_7ygKU.js +0 -203
  796. package/dist/showcase/assets/layout-page-CrEUiJpW.js +0 -315
  797. package/dist/showcase/assets/layout-primitives-DPrVHpu3.js +0 -34
  798. package/dist/showcase/assets/layout-sidebar-D7z6-kPu.js +0 -224
  799. package/dist/showcase/assets/layout-users-Cov9D84d.js +0 -117
  800. package/dist/showcase/assets/layout-workspace-Czlmi8gY.js +0 -191
  801. package/dist/showcase/assets/lib-DNMH46Rn.js +0 -1
  802. package/dist/showcase/assets/list-checks-DygDRIGi.js +0 -1
  803. package/dist/showcase/assets/lock-DqEahakB.js +0 -1
  804. package/dist/showcase/assets/lock-keyhole-CETEK3R0.js +0 -1
  805. package/dist/showcase/assets/mail-LKhBlrEc.js +0 -1
  806. package/dist/showcase/assets/mail-check-BOTjWQJf.js +0 -1
  807. package/dist/showcase/assets/map-0vJT2r8C.js +0 -124
  808. package/dist/showcase/assets/map-pin-D0qrpDJI.js +0 -1
  809. package/dist/showcase/assets/media-library-Bp99WaS9.js +0 -699
  810. package/dist/showcase/assets/mention-inline-suggestions-mlV7LRvD.js +0 -1
  811. package/dist/showcase/assets/mentions-Cmd1zxOR.js +0 -138
  812. package/dist/showcase/assets/menus-CtjFPoDr.js +0 -171
  813. package/dist/showcase/assets/message-square-BXyvikcZ.js +0 -1
  814. package/dist/showcase/assets/metadata-list-DLUBcy7E.js +0 -286
  815. package/dist/showcase/assets/metadata-list-F3bWXtZB.js +0 -1
  816. package/dist/showcase/assets/metric-CXPRptlh.js +0 -1
  817. package/dist/showcase/assets/metric-bar-BY25WVZ0.js +0 -1
  818. package/dist/showcase/assets/metric-grid-DQtf9y6E.js +0 -1
  819. package/dist/showcase/assets/metric-trend-chip-CXHpkj3U.js +0 -1
  820. package/dist/showcase/assets/metrics-analytics-bar-BIuwiVrn.js +0 -44
  821. package/dist/showcase/assets/metrics-analytics-cards-yx5lMGQf.js +0 -50
  822. package/dist/showcase/assets/metrics-comparison-BC_7jLXf.js +0 -76
  823. package/dist/showcase/assets/metrics-heatmap-C_nhCljz.js +0 -27
  824. package/dist/showcase/assets/metrics-inline-badge-3oySQnoR.js +0 -17
  825. package/dist/showcase/assets/metrics-kpi-row-zS4-oiTO.js +0 -31
  826. package/dist/showcase/assets/metrics-micro-grid-UJkA2LNR.js +0 -42
  827. package/dist/showcase/assets/metrics-overview-DQFr22ol.js +0 -192
  828. package/dist/showcase/assets/metrics-stat-cards-DnBirxKV.js +0 -54
  829. package/dist/showcase/assets/minus-BOVQEx6C.js +0 -1
  830. package/dist/showcase/assets/money-display-DV7xlrNV.js +0 -1
  831. package/dist/showcase/assets/money-display-DxnM5--7.js +0 -1
  832. package/dist/showcase/assets/month-year-picker-BzRXCrQ7.js +0 -1
  833. package/dist/showcase/assets/navigation-ChJKLv4Y.js +0 -90
  834. package/dist/showcase/assets/navigation-D7VJsKrP.js +0 -231
  835. package/dist/showcase/assets/navigation-extras-BVc1xQuB.js +0 -43
  836. package/dist/showcase/assets/notification-banner-1ivcmPLe.js +0 -1
  837. package/dist/showcase/assets/onboarding-checklist-CbARgwpX.js +0 -119
  838. package/dist/showcase/assets/overflow-tab-bar-DlqMmyTx.js +0 -1
  839. package/dist/showcase/assets/overlays-DkWO50b8.js +0 -159
  840. package/dist/showcase/assets/overlays-KKZpxWjt.js +0 -408
  841. package/dist/showcase/assets/overview-BjQe-YZE.js +0 -184
  842. package/dist/showcase/assets/package-DhQRoFDo.js +0 -1
  843. package/dist/showcase/assets/package-check-CBgGiccG.js +0 -1
  844. package/dist/showcase/assets/page-BWTmyV5J.js +0 -1
  845. package/dist/showcase/assets/page-action-button-DV-YYRA4.js +0 -1
  846. package/dist/showcase/assets/page-header-Bmg4NU_P.js +0 -1
  847. package/dist/showcase/assets/pagination-ByQ_OXRU.js +0 -1
  848. package/dist/showcase/assets/pagination-Db5CuoBb.js +0 -42
  849. package/dist/showcase/assets/paperclip-BQNPUzG_.js +0 -1
  850. package/dist/showcase/assets/password-input-CPvjzM1f.js +0 -1
  851. package/dist/showcase/assets/pencil-DuBakHme.js +0 -1
  852. package/dist/showcase/assets/phone-t94LTB1m.js +0 -1
  853. package/dist/showcase/assets/placeholder-pattern-BNou2ep-.js +0 -1
  854. package/dist/showcase/assets/plus-BRcp6JhT.js +0 -1
  855. package/dist/showcase/assets/popover-CVuJP03o.js +0 -1
  856. package/dist/showcase/assets/popover-D_P2gTn8.js +0 -1
  857. package/dist/showcase/assets/popover-menu-DGY5jEk4.js +0 -1
  858. package/dist/showcase/assets/products-8sUfDMPU.js +0 -423
  859. package/dist/showcase/assets/progress-BrMvIZIz.js +0 -1
  860. package/dist/showcase/assets/progress-CSXZAavT.js +0 -18
  861. package/dist/showcase/assets/progress-Dvqpf_O0.js +0 -1
  862. package/dist/showcase/assets/props-table-BAfz1Zc6.js +0 -1
  863. package/dist/showcase/assets/props.generated-CuVoOKYT.json +0 -41746
  864. package/dist/showcase/assets/qr-code-C-CaHJQ2.js +0 -1
  865. package/dist/showcase/assets/quote-Ci80eS0u.js +0 -1
  866. package/dist/showcase/assets/receipt-jvwbPuE3.js +0 -1
  867. package/dist/showcase/assets/receipt-text-CT0GiMQm.js +0 -1
  868. package/dist/showcase/assets/refinement-guide-BnCQ9-6f.js +0 -189
  869. package/dist/showcase/assets/refresh-cw-CXDARnCe.js +0 -1
  870. package/dist/showcase/assets/resolveValueLabel-DJanfUim.js +0 -1
  871. package/dist/showcase/assets/resource-Bir-z7ie.js +0 -139
  872. package/dist/showcase/assets/resource-D19qhfYP.js +0 -1
  873. package/dist/showcase/assets/resource-selector-card-BUbuu-QH.js +0 -43
  874. package/dist/showcase/assets/rich-text-editor-BCtz589M.js +0 -124
  875. package/dist/showcase/assets/rich-text-editor-uu9FmB8B.js +0 -143
  876. package/dist/showcase/assets/rotate-ccw-DEIVfiHA.js +0 -1
  877. package/dist/showcase/assets/route-B5vtDLsE.js +0 -1
  878. package/dist/showcase/assets/save-DQ4Up8ZB.js +0 -1
  879. package/dist/showcase/assets/schema-form-D7wbdl5u.js +0 -327
  880. package/dist/showcase/assets/scroll-area-B0QD6o1Y.js +0 -32
  881. package/dist/showcase/assets/scroll-area-BoZ1SrfI.js +0 -1
  882. package/dist/showcase/assets/section-BXsVHOsI.js +0 -1
  883. package/dist/showcase/assets/select-CW8SYsOY.js +0 -1
  884. package/dist/showcase/assets/select-DmRqLSoG.js +0 -1
  885. package/dist/showcase/assets/send-Dxs1-xSj.js +0 -1
  886. package/dist/showcase/assets/separator-BLOG_8oO.js +0 -1
  887. package/dist/showcase/assets/separator-DZC_uQU-.js +0 -1
  888. package/dist/showcase/assets/separator-OlLHRN7k.js +0 -28
  889. package/dist/showcase/assets/settings-2-BSpgytsy.js +0 -1
  890. package/dist/showcase/assets/settings-CCNP7XOu.js +0 -1
  891. package/dist/showcase/assets/sheet-DIfJjbgA.js +0 -1
  892. package/dist/showcase/assets/shield-D2gTWkwA.js +0 -1
  893. package/dist/showcase/assets/shield-alert-C-3oWpoe.js +0 -1
  894. package/dist/showcase/assets/shield-check-D11r1eJ8.js +0 -1
  895. package/dist/showcase/assets/shopping-bag-DAeaVQ5O.js +0 -1
  896. package/dist/showcase/assets/showcase-GdZcH6OR.js +0 -132
  897. package/dist/showcase/assets/sidebar-RBzHNuB7.js +0 -1
  898. package/dist/showcase/assets/sidebar.context-Dyw470Qp.js +0 -1
  899. package/dist/showcase/assets/skeleton-B7crngMw.js +0 -1
  900. package/dist/showcase/assets/skeleton-BwEVNdGJ.js +0 -1
  901. package/dist/showcase/assets/skeleton-DM73_ueB.js +0 -1
  902. package/dist/showcase/assets/skeleton-cHsWJOtO.js +0 -29
  903. package/dist/showcase/assets/slider-DRPnIs0S.js +0 -1
  904. package/dist/showcase/assets/smart-card-DER7dpD9.js +0 -1
  905. package/dist/showcase/assets/sonner-Go1YsPBH.js +0 -22
  906. package/dist/showcase/assets/sortable.esm-q6LdsxSr.js +0 -5
  907. package/dist/showcase/assets/sparkles-DqH40POl.js +0 -1
  908. package/dist/showcase/assets/spinner-C0YWWxyj.js +0 -1
  909. package/dist/showcase/assets/spinner-CpHNR13f.js +0 -30
  910. package/dist/showcase/assets/spinner-Dwvf24e9.js +0 -49
  911. package/dist/showcase/assets/square-pen-D-xHmIA0.js +0 -1
  912. package/dist/showcase/assets/stacked-avatars-C92NYKIa.js +0 -1
  913. package/dist/showcase/assets/star-dD4CAJ83.js +0 -1
  914. package/dist/showcase/assets/startOfDay-BXZshd4g.js +0 -1
  915. package/dist/showcase/assets/styles-BPJdkO_3.js +0 -1
  916. package/dist/showcase/assets/suggestions-CyhKme4Q.js +0 -126
  917. package/dist/showcase/assets/switch-C7DVTgQd.js +0 -1
  918. package/dist/showcase/assets/switch-LU6nljdS.js +0 -1
  919. package/dist/showcase/assets/sync-bERw1shm.js +0 -124
  920. package/dist/showcase/assets/table-BuIv4nqB.js +0 -686
  921. package/dist/showcase/assets/table-CDMDtBgJ.js +0 -1
  922. package/dist/showcase/assets/table-actions-DsK7d8Yb.js +0 -1
  923. package/dist/showcase/assets/tabs-BDryywGb.js +0 -19
  924. package/dist/showcase/assets/tabs-BNaZmM48.js +0 -1
  925. package/dist/showcase/assets/tags-input-CzE_5BJl.js +0 -1
  926. package/dist/showcase/assets/text-button-B1m5cpX_.js +0 -1
  927. package/dist/showcase/assets/text-link-CqjW10Ce.js +0 -1
  928. package/dist/showcase/assets/textarea-xJ3EE8R9.js +0 -1
  929. package/dist/showcase/assets/textarea-xOekToAG.js +0 -1
  930. package/dist/showcase/assets/throttle-alert-BH1HMiaI.js +0 -1
  931. package/dist/showcase/assets/timelines-DjWkuOz3.js +0 -200
  932. package/dist/showcase/assets/toggle-group-Css6pfUI.js +0 -1
  933. package/dist/showcase/assets/toggles-DhDrn3YH.js +0 -71
  934. package/dist/showcase/assets/toggles-group-e4xtKzkl.js +0 -32
  935. package/dist/showcase/assets/tooltip-DMvMUrGe.js +0 -31
  936. package/dist/showcase/assets/trash-2-zILxQmtX.js +0 -1
  937. package/dist/showcase/assets/trending-up-CRH278ig.js +0 -1
  938. package/dist/showcase/assets/truck-At9CEKg7.js +0 -1
  939. package/dist/showcase/assets/typography-B0ehvSV4.js +0 -223
  940. package/dist/showcase/assets/ui-badge-CyLWYf3f.js +0 -28
  941. package/dist/showcase/assets/ui-card-BPnLZmkJ.js +0 -30
  942. package/dist/showcase/assets/ui-table-C-zXhcOm.js +0 -42
  943. package/dist/showcase/assets/upload-tray-IyQJEM9n.js +0 -138
  944. package/dist/showcase/assets/use-layout-link-Cux4giQO.js +0 -1
  945. package/dist/showcase/assets/useAriaLabelledBy-Bo0rTGvc.js +0 -1
  946. package/dist/showcase/assets/useCollapsiblePanel-CzU-1LY3.js +0 -1
  947. package/dist/showcase/assets/useCompositeItem-CJFNnVql.js +0 -1
  948. package/dist/showcase/assets/useCompositeListItem-BAuO9hue.js +0 -1
  949. package/dist/showcase/assets/useLabelableId-HuACs9ba.js +0 -1
  950. package/dist/showcase/assets/useOpenInteractionType-MEUfJuxN.js +0 -1
  951. package/dist/showcase/assets/useRender-B-6DpRfj.js +0 -1
  952. package/dist/showcase/assets/useTriggerFocusGuards-B-mRyUJJ.js +0 -1
  953. package/dist/showcase/assets/useValueChanged-CVn_Rfso.js +0 -1
  954. package/dist/showcase/assets/user-eelwPGBI.js +0 -1
  955. package/dist/showcase/assets/user-plus-DhswMZvb.js +0 -1
  956. package/dist/showcase/assets/users-BVMmaveS.js +0 -1
  957. package/dist/showcase/assets/vendor-profile-FHaiInTe.js +0 -37
  958. package/dist/showcase/assets/video-C42fxAyj.js +0 -1
  959. package/dist/showcase/assets/visually-hidden-BwzlEinj.js +0 -1
  960. package/dist/showcase/assets/wrench-EKI7PaKp.js +0 -1
  961. package/dist/showcase/assets/x--LIqlhum.js +0 -1
  962. package/dist/showcase/assets/zap-C1fX30vt.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-CMrLO8v5.js","names":[],"sources":["../../src/components/base/navigation/language-switcher.tsx","../../src/components/base/navigation/aside-navigation-menu.tsx","../../src/components/base/navigation/navigation-tabs.tsx","../../src/components/base/navigation/tab-navigation-menu.tsx","../../src/components/base/navigation/page-header/page-header.tsx","../../src/components/base/navigation/section-nav/section-nav.tsx","../../src/components/base/navigation/side-nav.tsx","../../src/components/base/navigation/overflow-tab-bar.tsx"],"sourcesContent":["/**\n * LanguageSwitcher — locale picker with two layouts: `buttons` (chunky\n * primary buttons) and `inline` (small text links separated by dots, prefixed\n * with a globe icon). Defaults to `buttons`.\n *\n * The library never navigates on its own. The consumer wires routing /\n * locale switching by passing `onSelect` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`). When `onSelect` is\n * absent the click is a no-op.\n */\nimport { Globe } from 'lucide-react';\nimport { Fragment, useCallback } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { cn } from '@/lib/utils';\nimport type { LocaleOption } from '@/types/locale.types';\n\ninterface LanguageSwitcherProps {\n\tlocales: LocaleOption[];\n\tonRenderLabel?: (options: LocaleOption) => string;\n\tvariant?: 'buttons' | 'inline';\n\tonSelect?: (value: string) => void;\n}\n\nexport function LanguageSwitcher({\n\tlocales,\n\tonRenderLabel,\n\tvariant = 'buttons',\n\tonSelect,\n}: LanguageSwitcherProps) {\n\tconst handleSelect = useCallback((value: string, isActive: boolean) => {\n\t\tif (isActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tonSelect?.(value);\n\t}, [onSelect]);\n\n\tif (locales.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (variant === 'inline') {\n\t\treturn (\n\t\t\t<div className={cn('language-switcher--component', 'flex items-center justify-center gap-2.5')}>\n\t\t\t\t<Globe className=\"size-4 text-muted-foreground/70\" aria-hidden=\"true\" />\n\t\t\t\t<div className=\"flex items-center justify-center gap-2.5\">\n\t\t\t\t\t{locales.map((locale, index) => {\n\t\t\t\t\t\tconst label = onRenderLabel\n\t\t\t\t\t\t\t? onRenderLabel(locale)\n\t\t\t\t\t\t\t: locale.nativeLabel;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Fragment key={locale.value}>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\thandleSelect(locale.value, locale.active)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\tlocale.active\n\t\t\t\t\t\t\t\t\t\t\t? 'text-primary font-medium'\n\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:text-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{index < locales.length - 1 && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"size-1 rounded-full bg-border\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"flex flex-wrap items-center justify-center gap-2\">\n\t\t\t{locales.map((locale) => {\n\t\t\t\tconst label = onRenderLabel ? onRenderLabel(locale) : locale.nativeLabel;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={locale.value}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle={locale.active ? 'solid' : 'ghost'}\n\t\t\t\t\t\tonClick={() => handleSelect(locale.value, locale.active)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'min-w-18 justify-center transition-colors',\n\t\t\t\t\t\t\tlocale.active ? 'font-semibold text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nLanguageSwitcher.displayName = 'LanguageSwitcher';\n","/**\n * AsideNavigationMenu — vertical list of navigation links with active-state\n * highlight. Active item is matched by deepest path prefix so nested routes\n * still highlight their parent. Pass `currentPath` explicitly when SSR-ing or\n * when the consuming router does not update `window.location` synchronously.\n */\nimport { BaseButton } from '@/components/base/buttons';\nimport { cn } from '@/lib/utils';\nimport { type NavItem } from '@/types';\n\ninterface AsideNavigationMenuProps {\n\titems: NavItem[];\n\tcurrentPath?: string;\n\tactiveClassName?: string;\n\titemClassName?: string;\n}\n\nfunction normalizePath(rawUrl: string): string {\n\tif (rawUrl.length === 0) {\n\t\treturn '/';\n\t}\n\n\ttry {\n\t\tconst baseOrigin =\n\t\t\ttypeof window !== 'undefined'\n\t\t\t\t? window.location.origin\n\t\t\t\t: 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nexport default function AsideNavigationMenu({\n\titems,\n\tcurrentPath,\n\tactiveClassName,\n\titemClassName,\n}: AsideNavigationMenuProps) {\n\tconst rawActivePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\tconst activePath = normalizePath(rawActivePath);\n\tconst resolvedActiveClassName =\n\t\ttypeof activeClassName === 'string' && activeClassName.length > 0\n\t\t\t? activeClassName\n\t\t\t: 'bg-muted';\n\tconst normalizedItems = items.map((item) => ({\n\t\titem,\n\t\tnormalizedPath: normalizePath(item.href),\n\t}));\n\n\tconst activeItemPath =\n\t\tnormalizedItems\n\t\t\t.filter(\n\t\t\t\t({ normalizedPath }) =>\n\t\t\t\t\tactivePath === normalizedPath ||\n\t\t\t\t\tactivePath.startsWith(`${normalizedPath}/`),\n\t\t\t)\n\t\t\t.sort((a, b) => b.normalizedPath.length - a.normalizedPath.length)[0]\n\t\t\t?.normalizedPath ?? null;\n\n\treturn (\n\t\t<nav className={cn('aside-navigation-menu--component', 'flex flex-col space-y-1 space-x-0')}>\n\t\t\t{normalizedItems.map(({ item, normalizedPath }) => {\n\t\t\t\tconst isActive = normalizedPath === activeItemPath;\n\n\t\t\t\treturn (\n\t\t\t\t\t<BaseButton\n\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"default\"\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'justify-start',\n\t\t\t\t\t\t\titemClassName,\n\t\t\t\t\t\t\tisActive ? resolvedActiveClassName : null,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tnativeButton={false}\n\t\t\t\t\t\trender={(renderProps) => (\n\t\t\t\t\t\t\t<a {...renderProps} href={item.href} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t</BaseButton>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n\nAsideNavigationMenu.displayName = 'AsideNavigationMenu';\n","/**\n * NavigationTabs — large pill tab strip for prominent in-page navigation.\n * Active tab gets full-primary fill with inverse text. Lighter-weight\n * alternative is `TabNavigationMenu` (compact card-style pills).\n */\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nexport interface NavigationTabItem {\n\tlabel: string;\n\tto: string;\n}\n\nexport interface NavigationTabsItem {\n\tlabel: string;\n\turl: string;\n\tactive?: boolean;\n}\n\nexport interface NavigationTabsStrings {\n\ttabsAria: string;\n}\n\nexport const defaultNavigationTabsStrings: NavigationTabsStrings = {\n\ttabsAria: 'Tabs',\n};\n\ninterface NavigationTabsProps {\n\titems: NavigationTabsItem[];\n\tcurrentUrl?: string;\n\tstrings?: StringsProp<NavigationTabsStrings>;\n}\n\nfunction NavigationTabs({ items, currentUrl: currentUrlProp, strings: stringsProp }: NavigationTabsProps) {\n\tconst strings = useStrings(defaultNavigationTabsStrings, stringsProp);\n\tconst url = currentUrlProp ?? (typeof window !== 'undefined' ? window.location.pathname : '/');\n\n\tconst normalizeUrl = (rawUrl: string): string => {\n\t\ttry {\n\t\t\tconst urlObj = new URL(rawUrl, window.location.origin);\n\t\t\treturn urlObj.pathname.replace(/\\/+$/, '');\n\t\t} catch {\n\t\t\treturn rawUrl.replace(/\\/+$/, '').split('?')[0];\n\t\t}\n\t};\n\n\tconst currentUrl = normalizeUrl(url);\n\n\tconst clsDefault = 'flex h-control whitespace-nowrap items-center gap-space-sm rounded-md border border-transparent bg-background px-control text-sm leading-tight text-foreground transition-all duration-150 hover:bg-primary hover:text-background';\n\treturn (\n\t\t<div className={cn('navigation-tabs--component', 'navigation-tabs-container w-full')}>\n\t\t\t<nav className=\"inline-flex items-center gap-1 rounded-lg bg-muted/60 p-1\" aria-label={strings.tabsAria}>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst itemUrl = normalizeUrl(item.url);\n\t\t\t\t\tconst isActive = currentUrl === itemUrl;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={item.url}\n\t\t\t\t\t\t\tkey={item.url}\n\t\t\t\t\t\t\tclassName={cn(clsDefault, {\n\t\t\t\t\t\t\t\t'!bg-primary !text-background font-semibold': isActive,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</nav>\n\t\t</div>\n\t);\n}\n\nexport default NavigationTabs;\n\nNavigationTabs.displayName = 'NavigationTabs';\n","/**\n * TabNavigationMenu — pill-style horizontal navigation. Active tab gets the\n * elevated card background; inactive tabs hover into a translucent variant.\n * Supports optional badges and per-item icons (Lucide component or string).\n */\nimport { useMemo, type ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { type NavItem } from '@/types';\n\ninterface TabNavigationMenuProps {\n\titems: NavItem[];\n\tcurrentPath?: string;\n\tclassName?: string;\n\tariaLabel?: string;\n}\n\nfunction TabNavigationMenu({ items, currentPath, className, ariaLabel = 'Tab navigation' }: TabNavigationMenuProps) {\n\tconst activePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\n\tconst normalizedItems = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst isActive = activePath === item.href;\n\t\t\tlet iconNode: ReactNode = null;\n\n\t\t\tif (typeof item.icon === 'string') {\n\t\t\t\ticonNode = <span className=\"text-inherit\">{item.icon}</span>;\n\t\t\t} else if (item.icon) {\n\t\t\t\tconst IconComp = item.icon;\n\t\t\t\ticonNode = <IconComp className=\"size-icon-sm\" />;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: item.href,\n\t\t\t\titem,\n\t\t\t\tisActive,\n\t\t\t\ticonNode,\n\t\t\t\tariaCurrent: isActive ? ('page' as const) : undefined,\n\t\t\t};\n\t\t});\n\t}, [activePath, items]);\n\n\treturn (\n\t\t<div className={cn('tab-navigation-menu--component', 'w-full', className)}>\n\t\t\t<nav className=\"inline-flex bg-muted rounded-full items-center gap-1 p-1\" aria-label={ariaLabel}>\n\t\t\t\t{normalizedItems.map(({ key, item, isActive, iconNode, ariaCurrent }) => (\n\t\t\t\t\t<a\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\thref={item.href}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex h-control whitespace-nowrap items-center gap-space-sm',\n\t\t\t\t\t\t\t'rounded-full px-control',\n\t\t\t\t\t\t\t'text-sm font-medium',\n\t\t\t\t\t\t\t'transition-all duration-200',\n\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2',\n\t\t\t\t\t\t\t'focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'bg-background text-foreground shadow-sm': isActive,\n\t\t\t\t\t\t\t\t'text-muted-foreground hover:text-foreground hover:bg-background/50': !isActive,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-current={ariaCurrent}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!iconNode && (\n\t\t\t\t\t\t\t<span className=\"text-inherit\">\n\t\t\t\t\t\t\t\t{iconNode}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'ml-space-sm rounded-full px-space-md py-space-2xs text-sm font-medium',\n\t\t\t\t\t\t\t\t\tisActive\n\t\t\t\t\t\t\t\t\t\t? 'bg-primary/10 text-primary'\n\t\t\t\t\t\t\t\t\t\t: 'bg-muted-foreground/10 text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</a>\n\t\t\t\t))}\n\t\t\t</nav>\n\t\t</div>\n\t);\n}\n\nTabNavigationMenu.displayName = 'TabNavigationMenu';\n\nexport default TabNavigationMenu;\n","/**\n * PageHeader — section / page heading with optional eyebrow, breadcrumbs slot,\n * description, status badge, and a row of action buttons. Designed to sit at the top\n * of every dashboard or detail page for consistent vertical rhythm.\n */\nimport type { ReactNode } from 'react';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography';\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Separator } from '@/components/base/display/separator';\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n\teyebrow?: ReactNode;\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\tbadge?: { label: string; variant?: ComposedBadgeVariant };\n\tbreadcrumbs?: ReactNode;\n\tactions?: ReactNode;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\twithSeparator?: boolean;\n}\n\nexport function PageHeader({\n\teyebrow,\n\ttitle,\n\tdescription,\n\tbadge,\n\tbreadcrumbs,\n\tactions,\n\tchildren,\n\tclassName,\n\twithSeparator = true,\n}: PageHeaderProps) {\n\treturn (\n\t\t<header className={cn('page-header--component', 'w-full', className)}>\n\t\t\t{!!breadcrumbs && <div className=\"mb-3\">{breadcrumbs}</div>}\n\n\t\t\t<div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"semibold\" className=\"mb-1 uppercase tracking-wider\">\n\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Heading tag=\"h2\" className=\"text-base border-0 pb-0\">{title}</Heading>\n\t\t\t\t\t\t{!!badge && (\n\t\t\t\t\t\t\t<Badge variant={badge.variant ?? 'secondary'}>{badge.label}</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text type=\"secondary\" className=\"mt-1 max-w-2xl\">{description}</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n\t\t\t</div>\n\n\t\t\t{!!children && <div className=\"mt-4\">{children}</div>}\n\n\t\t\t{!!withSeparator && <Separator className=\"mt-4\" />}\n\t\t</header>\n\t);\n}\n\nPageHeader.displayName = 'PageHeader';\n","/**\n * SectionNav — sticky in-page anchor nav. Pass a list of section ids; the active one\n * is tracked via IntersectionObserver and the matching item is highlighted. Click to\n * scroll to that section. Pure JS — no router required.\n */\nimport { useEffect, useState } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface SectionNavItem {\n\tid: string;\n\tlabel: string;\n\ticon?: LucideIcon;\n}\n\nexport interface SectionNavProps {\n\titems: SectionNavItem[];\n\trootMargin?: string;\n\tclassName?: string;\n\tonSelect?: (id: string) => void;\n}\n\nexport function SectionNav({ items, rootMargin = '-40% 0px -50% 0px', className, onSelect }: SectionNavProps) {\n\tconst [active, setActive] = useState<string | null>(items[0]?.id ?? null);\n\n\tuseEffect(() => {\n\t\tconst obs = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst visible = entries.find((e) => e.isIntersecting);\n\t\t\t\tif (visible?.target.id) setActive(visible.target.id);\n\t\t\t},\n\t\t\t{ rootMargin, threshold: 0 },\n\t\t);\n\t\titems.forEach((it) => {\n\t\t\tconst el = document.getElementById(it.id);\n\t\t\tif (el) obs.observe(el);\n\t\t});\n\t\treturn () => obs.disconnect();\n\t}, [items, rootMargin]);\n\n\treturn (\n\t\t<nav className={cn('section-nav--component', 'flex flex-col gap-0.5', className)} aria-label=\"Section navigation\">\n\t\t\t{items.map((it) => {\n\t\t\t\tconst Icon = it.icon;\n\t\t\t\tconst isActive = active === it.id;\n\t\t\t\treturn (\n\t\t\t\t\t<a\n\t\t\t\t\t\tkey={it.id}\n\t\t\t\t\t\thref={`#${it.id}`}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tdocument.getElementById(it.id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\tsetActive(it.id);\n\t\t\t\t\t\t\tonSelect?.(it.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors',\n\t\t\t\t\t\t\tisActive ? 'bg-primary/10 text-primary' : 'text-muted-foreground hover:bg-muted/50 hover:text-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!Icon && <Icon className=\"size-3.5 shrink-0\" />}\n\t\t\t\t\t\t<Text tag=\"span\" weight={isActive ? 'semibold' : 'medium'}>{it.label}</Text>\n\t\t\t\t\t</a>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n\nSectionNav.displayName = 'SectionNav';\n","/**\n * SideNav — collapsible vertical sidebar navigation. Items can be grouped\n * with a heading and optionally collapsed; each item supports an icon, badge,\n * and active-state highlight. The active item is matched by deepest path\n * prefix so nested routes still highlight their parent group.\n *\n * Use this when AsideNavigationMenu (flat) is not enough — e.g. settings\n * panes with multiple sections, or a primary app nav with collapsible groups.\n */\nimport { ChevronDown, type LucideIcon } from 'lucide-react';\nimport { useMemo, useState, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface SideNavItem {\n\tlabel: ReactNode;\n\thref: string;\n\ticon?: LucideIcon;\n\tbadge?: ReactNode;\n\tdisabled?: boolean;\n}\n\nexport interface SideNavGroup {\n\tid: string;\n\tlabel?: ReactNode;\n\titems: SideNavItem[];\n\tdefaultCollapsed?: boolean;\n\tcollapsible?: boolean;\n}\n\nexport interface SideNavProps {\n\t/** Groups of items. Pass a single group with no `label` for an ungrouped list. */\n\tgroups: SideNavGroup[];\n\tcurrentPath?: string;\n\tclassName?: string;\n\titemClassName?: string;\n\tactiveItemClassName?: string;\n\tariaLabel?: string;\n}\n\nfunction normalizePath(rawUrl: string): string {\n\tif (rawUrl.length === 0) return '/';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nexport function SideNav({\n\tgroups,\n\tcurrentPath,\n\tclassName,\n\titemClassName,\n\tactiveItemClassName,\n\tariaLabel = 'Side navigation',\n}: SideNavProps) {\n\tconst rawActivePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\tconst activePath = normalizePath(rawActivePath);\n\n\tconst allNormalized = useMemo(() => {\n\t\treturn groups.flatMap((g) =>\n\t\t\tg.items.map((item) => ({ groupId: g.id, normalizedPath: normalizePath(item.href) })),\n\t\t);\n\t}, [groups]);\n\n\tconst activeNormalized =\n\t\tallNormalized\n\t\t\t.filter(\n\t\t\t\t({ normalizedPath }) =>\n\t\t\t\t\tactivePath === normalizedPath || activePath.startsWith(`${normalizedPath}/`),\n\t\t\t)\n\t\t\t.sort((a, b) => b.normalizedPath.length - a.normalizedPath.length)[0]?.normalizedPath ??\n\t\tnull;\n\n\tconst [collapsed, setCollapsed] = useState<Record<string, boolean>>(() =>\n\t\tObject.fromEntries(groups.map((g) => [g.id, Boolean(g.defaultCollapsed)])),\n\t);\n\n\tconst toggleGroup = (id: string) =>\n\t\tsetCollapsed((prev) => ({ ...prev, [id]: !prev[id] }));\n\n\tconst resolvedActive =\n\t\tactiveItemClassName && activeItemClassName.length > 0\n\t\t\t? activeItemClassName\n\t\t\t: 'bg-primary/5 text-primary';\n\n\treturn (\n\t\t<nav className={cn('side-nav--component', 'flex flex-col gap-4', className)} aria-label={ariaLabel}>\n\t\t\t{groups.map((group) => {\n\t\t\t\tconst isCollapsed = group.collapsible !== false && collapsed[group.id];\n\t\t\t\tconst showLabel = !!group.label;\n\t\t\t\tconst shouldRenderItems = !isCollapsed;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={group.id} className=\"flex flex-col gap-1\">\n\t\t\t\t\t\t{!!showLabel && (\n\t\t\t\t\t\t\tgroup.collapsible !== false ? (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => toggleGroup(group.id)}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'flex w-full items-center justify-between px-3 py-1.5 rounded-md',\n\t\t\t\t\t\t\t\t\t\t'text-sm font-medium uppercase tracking-wider text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t'hover:text-foreground transition-colors',\n\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\taria-expanded={!isCollapsed}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>{group.label}</span>\n\t\t\t\t\t\t\t\t\t<ChevronDown\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'size-3.5 transition-transform',\n\t\t\t\t\t\t\t\t\t\t\tisCollapsed && '-rotate-90',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\tclassName=\"px-3 py-1.5 uppercase tracking-wider\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!shouldRenderItems && (\n\t\t\t\t\t\t\t<div className=\"flex flex-col gap-0.5\">\n\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\tconst itemPath = normalizePath(item.href);\n\t\t\t\t\t\t\t\t\tconst isActive = itemPath === activeNormalized;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\t\t\t\t\t\thref={item.disabled ? undefined : item.href}\n\t\t\t\t\t\t\t\t\t\t\taria-current={isActive ? 'page' : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={item.disabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'group flex items-center gap-2.5 rounded-md px-3 py-1.5',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t'hover:bg-muted/60',\n\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\tisActive && resolvedActive,\n\t\t\t\t\t\t\t\t\t\t\t\titemClassName,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-4 shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive ? 'text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant={isActive ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n\nSideNav.displayName = 'SideNav';\n","/**\n * OverflowTabBar — horizontal tab strip that gracefully degrades on narrow\n * containers. Tabs that would overflow are moved into a trailing \"More\"\n * dropdown so the strip never wraps. Uses a ResizeObserver to recompute on\n * container resize; the active tab is always kept visible by being moved\n * out of the overflow set when needed.\n *\n * Pair with `TabNavigationMenu` for fixed sets where overflow is impossible,\n * or with `NavigationTabs` for marketing-weight pill bars.\n */\nimport { MoreHorizontal, type LucideIcon } from 'lucide-react';\nimport { useEffect, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from 'react';\n\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nexport interface OverflowTabItem {\n\tid: string;\n\tlabel: ReactNode;\n\thref?: string;\n\ticon?: LucideIcon;\n\tbadge?: ReactNode;\n\tonClick?: () => void;\n}\n\nexport interface OverflowTabBarProps {\n\titems: OverflowTabItem[];\n\t/** Currently active tab id. */\n\tvalue?: string;\n\tonChange?: (id: string) => void;\n\tclassName?: string;\n\ttabClassName?: string;\n\tactiveTabClassName?: string;\n\tmoreLabel?: string;\n\tariaLabel?: string;\n}\n\nconst TAB_BUTTON_BASE =\n\t'inline-flex h-control shrink-0 items-center gap-space-sm rounded-md px-control text-sm font-medium whitespace-nowrap transition-colors ' +\n\t'hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40';\n\nexport function OverflowTabBar({\n\titems,\n\tvalue,\n\tonChange,\n\tclassName,\n\ttabClassName,\n\tactiveTabClassName,\n\tmoreLabel = 'More',\n\tariaLabel = 'Tab navigation',\n}: OverflowTabBarProps) {\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\tconst measureRef = useRef<HTMLDivElement | null>(null);\n\tconst [visibleCount, setVisibleCount] = useState(items.length);\n\n\t// Recompute how many tabs fit when container or items change.\n\tuseLayoutEffect(() => {\n\t\tif (!containerRef.current || !measureRef.current) return;\n\t\tconst container = containerRef.current;\n\t\tconst measure = measureRef.current;\n\n\t\tconst compute = () => {\n\t\t\tconst containerWidth = container.clientWidth;\n\t\t\tif (containerWidth === 0) {\n\t\t\t\tsetVisibleCount(items.length);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst moreReserve = 72; // approximate \"More\" trigger width\n\t\t\tconst buttons = Array.from(measure.querySelectorAll<HTMLElement>('[data-tab-id]'));\n\t\t\tlet used = 0;\n\t\t\tlet count = 0;\n\t\t\tfor (const btn of buttons) {\n\t\t\t\tconst w = btn.offsetWidth + 4; // gap allowance\n\t\t\t\tif (used + w + moreReserve <= containerWidth) {\n\t\t\t\t\tused += w;\n\t\t\t\t\tcount += 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetVisibleCount(count === buttons.length ? count : Math.max(1, count));\n\t\t};\n\n\t\tcompute();\n\t\tif (typeof ResizeObserver === 'undefined') {\n\t\t\treturn;\n\t\t}\n\t\tconst observer = new ResizeObserver(compute);\n\t\tobserver.observe(container);\n\t\treturn () => observer.disconnect();\n\t}, [items]);\n\n\t// Ensure active tab is always visible; if it falls into the overflow set,\n\t// pull it forward by reducing the visible count to where it lives.\n\tconst orderedItems = useMemo(() => {\n\t\tif (!value) return items;\n\t\tconst activeIdx = items.findIndex((i) => i.id === value);\n\t\tif (activeIdx < 0 || activeIdx < visibleCount) return items;\n\t\t// Move active item into the visible window (swap with last visible).\n\t\tconst next = [...items];\n\t\tconst lastVisibleIdx = Math.max(0, visibleCount - 1);\n\t\t[next[activeIdx], next[lastVisibleIdx]] = [next[lastVisibleIdx], next[activeIdx]];\n\t\treturn next;\n\t}, [items, value, visibleCount]);\n\n\tconst visibleItems = orderedItems.slice(0, visibleCount);\n\tconst overflowItems = orderedItems.slice(visibleCount);\n\n\tconst handleSelect = (item: OverflowTabItem) => {\n\t\tonChange?.(item.id);\n\t\titem.onClick?.();\n\t};\n\n\tconst renderTab = (item: OverflowTabItem, isActive: boolean, options?: { measure?: boolean }) => {\n\t\tconst Icon = item.icon;\n\t\tconst tabClasses = cn(\n\t\t\tTAB_BUTTON_BASE,\n\t\t\tisActive\n\t\t\t\t? cn('bg-card text-foreground shadow-sm', activeTabClassName)\n\t\t\t\t: 'text-muted-foreground hover:bg-muted/60',\n\t\t\ttabClassName,\n\t\t);\n\t\tconst inner = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t\t<span>{item.label}</span>\n\t\t\t\t{!!item.badge && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'ml-1 inline-flex items-center rounded-full px-1.5 py-0.5 text-sm font-semibold',\n\t\t\t\t\t\t\tisActive ? 'bg-primary/10 text-primary' : 'bg-muted-foreground/10 text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t\tif (options?.measure) {\n\t\t\treturn (\n\t\t\t\t<span\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tdata-tab-id={item.id}\n\t\t\t\t\tclassName={cn('overflow-tab-bar--measure', tabClasses)}\n\t\t\t\t>\n\t\t\t\t\t{inner}\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\tif (item.href) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\thref={item.href}\n\t\t\t\t\tdata-tab-id={item.id}\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\taria-selected={isActive}\n\t\t\t\t\ttabIndex={isActive || !value ? 0 : -1}\n\t\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\t\tclassName={cn('overflow-tab-bar--component', tabClasses)}\n\t\t\t\t>\n\t\t\t\t\t{inner}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<button\n\t\t\t\tkey={item.id}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-tab-id={item.id}\n\t\t\t\trole=\"tab\"\n\t\t\t\taria-selected={isActive}\n\t\t\t\ttabIndex={isActive || !value ? 0 : -1}\n\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\tclassName={tabClasses}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</button>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{/* Hidden measure row: always renders all tabs at native width so\n\t\t\t we can measure how many fit. Visually hidden but laid out. */}\n\t\t\t<div\n\t\t\t\tref={measureRef}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-1 overflow-hidden opacity-0\"\n\t\t\t>\n\t\t\t\t{items.map((i) => renderTab(i, false, { measure: true }))}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={cn('relative flex w-full min-w-0 max-w-full items-center gap-1 overflow-hidden rounded-lg bg-muted/40 p-1', className)}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"tablist\"\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-orientation=\"horizontal\"\n\t\t\t\t\tclassName=\"flex min-w-0 flex-1 items-center gap-1 overflow-hidden\"\n\t\t\t\t>\n\t\t\t\t\t{visibleItems.map((item) => renderTab(item, item.id === value))}\n\t\t\t\t</div>\n\t\t\t\t{overflowItems.length > 0 && (\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label={moreLabel}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tTAB_BUTTON_BASE,\n\t\t\t\t\t\t\t\t'text-muted-foreground hover:bg-muted/60',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<MoreHorizontal className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t<span>{moreLabel}</span>\n\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\" className=\"min-w-40\">\n\t\t\t\t\t\t\t{overflowItems.map((item) => {\n\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'text-sm gap-1.5 px-2 py-1.5',\n\t\t\t\t\t\t\t\t\t\t\titem.id === value && 'bg-primary/5 text-primary',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" />}\n\t\t\t\t\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nOverflowTabBar.displayName = 'OverflowTabBar';\n\n// useEffect is referenced indirectly through useLayoutEffect above; keep the\n// import so SSR builds that fall back to useEffect still compile cleanly.\nvoid useEffect;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/utils.cjs"),n=require("./separator-q42IlFFA.cjs");let r=require("react");r=e.t(r,1);let i=require("react/jsx-runtime");function a({className:e,dashed:r=!1,...a}){return(0,i.jsx)(n.t,{className:t.cn(`separator--component`,r&&[`bg-transparent border-border border-dashed`,`data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t`,`data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l`],e),...a})}a.displayName=`Separator`,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
2
+ //# sourceMappingURL=separator-BXn_fnly.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator-BXn_fnly.cjs","names":[],"sources":["../../src/components/base/display/separator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Separator as PrimitiveSeparator } from '@/components/ui/separator';\nimport { cn } from '@/lib/utils';\n\nexport interface SeparatorProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSeparator> {\n\t/** Render the rule as a dashed line instead of a solid border fill. */\n\tdashed?: boolean;\n}\n\nexport function Separator({\n\tclassName,\n\tdashed = false,\n\t...props\n}: SeparatorProps) {\n\treturn (\n\t\t<PrimitiveSeparator\n\t\t\tclassName={cn(\n\t\t\t\t'separator--component',\n\t\t\t\tdashed && [\n\t\t\t\t\t'bg-transparent border-border border-dashed',\n\t\t\t\t\t'data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t',\n\t\t\t\t\t'data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l',\n\t\t\t\t],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nSeparator.displayName = 'Separator';\n"],"mappings":"iLAUA,SAAgB,EAAU,CACzB,YACA,SAAS,GACT,GAAG,GACe,CAClB,OACC,EAAA,EAAA,KAAC,EAAA,EAAD,CACC,UAAW,EAAA,GACV,uBACA,GAAU,CACT,6CACA,2EACA,sEACD,EACA,CACD,EACA,GAAI,CACJ,CAAA,CAEH,CAEA,EAAU,YAAc"}
@@ -0,0 +1,20 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { t } from "./separator-B8FBp-7E.js";
3
+ import "react";
4
+ import { jsx as n } from "react/jsx-runtime";
5
+ //#region src/components/base/display/separator.tsx
6
+ function r({ className: r, dashed: i = !1, ...a }) {
7
+ return /* @__PURE__ */ n(t, {
8
+ className: e("separator--component", i && [
9
+ "bg-transparent border-border border-dashed",
10
+ "data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t",
11
+ "data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l"
12
+ ], r),
13
+ ...a
14
+ });
15
+ }
16
+ r.displayName = "Separator";
17
+ //#endregion
18
+ export { r as t };
19
+
20
+ //# sourceMappingURL=separator-DiH-j--f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator-DiH-j--f.js","names":[],"sources":["../../src/components/base/display/separator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Separator as PrimitiveSeparator } from '@/components/ui/separator';\nimport { cn } from '@/lib/utils';\n\nexport interface SeparatorProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSeparator> {\n\t/** Render the rule as a dashed line instead of a solid border fill. */\n\tdashed?: boolean;\n}\n\nexport function Separator({\n\tclassName,\n\tdashed = false,\n\t...props\n}: SeparatorProps) {\n\treturn (\n\t\t<PrimitiveSeparator\n\t\t\tclassName={cn(\n\t\t\t\t'separator--component',\n\t\t\t\tdashed && [\n\t\t\t\t\t'bg-transparent border-border border-dashed',\n\t\t\t\t\t'data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t',\n\t\t\t\t\t'data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l',\n\t\t\t\t],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nSeparator.displayName = 'Separator';\n"],"mappings":";;;;;AAUA,SAAgB,EAAU,EACzB,cACA,YAAS,IACT,GAAG,KACe;CAClB,OACC,kBAAC,GAAD;EACC,WAAW,EACV,wBACA,KAAU;GACT;GACA;GACA;EACD,GACA,CACD;EACA,GAAI;CACJ,CAAA;AAEH;AAEA,EAAU,cAAc"}
@@ -0,0 +1,143 @@
1
+ import { useStrings as e } from "../lib/strings.js";
2
+ import { cn as t } from "../lib/utils.js";
3
+ import { o as n, s as r } from "./typography-5bLhAYaK.js";
4
+ import { t as i } from "./badge-r8ae66Vd.js";
5
+ import { t as a } from "./cards-BJctT9KD.js";
6
+ import { r as o } from "./layout.types-ip8BYRa7.js";
7
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ //#region src/components/layout/settings/settings.tsx
9
+ var l = { navigationAriaLabel: "Settings navigation" };
10
+ function u(e) {
11
+ if (!e) return "";
12
+ try {
13
+ let t = typeof window < "u" ? window.location.origin : "http://localhost", n = new URL(e, t).pathname.replace(/\/+$/, "");
14
+ return n.length > 0 ? n : "/";
15
+ } catch {
16
+ let t = (e.split("?")[0] ?? e).replace(/\/+$/, "");
17
+ return t.length > 0 ? t : "/";
18
+ }
19
+ }
20
+ function d(e, t, n) {
21
+ if (t) return e.id === t;
22
+ if (!n || !e.href) return !1;
23
+ let r = u(n), i = u(e.href);
24
+ return r === i || r.startsWith(`${i}/`);
25
+ }
26
+ function f({ title: u, description: f, groups: p, currentId: m, currentPath: h, children: g, aside: _, actions: v, footer: y, className: b, navClassName: x, contentClassName: S, renderLink: C, LinkComponent: w, strings: T }) {
27
+ let E = e(l, T), D = o({
28
+ renderLink: C,
29
+ LinkComponent: w
30
+ });
31
+ return /* @__PURE__ */ c("section", {
32
+ "data-component": "aside-nav-shell",
33
+ "data-slot": "aside-nav-shell",
34
+ className: t("aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]", b),
35
+ children: [/* @__PURE__ */ s("aside", {
36
+ "data-slot": "aside-nav-shell-aside",
37
+ className: "aside-nav-shell--aside min-w-0",
38
+ children: /* @__PURE__ */ c(a, {
39
+ padding: "default",
40
+ surface: "card",
41
+ className: t("aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]", x),
42
+ contentClassName: "grid gap-4",
43
+ children: [!!_ && /* @__PURE__ */ s("div", {
44
+ className: "aside-nav-shell--aside-header",
45
+ children: _
46
+ }), /* @__PURE__ */ s("nav", {
47
+ "aria-label": E.navigationAriaLabel,
48
+ className: "grid gap-4",
49
+ children: p.map((e) => /* @__PURE__ */ c("div", {
50
+ className: "grid gap-1.5",
51
+ children: [!!e.label && /* @__PURE__ */ s(r, {
52
+ size: "xs",
53
+ type: "secondary",
54
+ weight: "medium",
55
+ className: "px-2 uppercase tracking-normal",
56
+ children: e.label
57
+ }), /* @__PURE__ */ s("div", {
58
+ className: "grid gap-0.5",
59
+ children: e.items.map((e) => {
60
+ let n = e.icon, a = d(e, m, h), o = /* @__PURE__ */ c("span", {
61
+ className: "flex min-w-0 items-center gap-2",
62
+ children: [
63
+ !!n && /* @__PURE__ */ s(n, { className: t("size-4 shrink-0", a ? "text-primary" : "text-muted-foreground") }),
64
+ /* @__PURE__ */ c("span", {
65
+ className: "grid min-w-0 flex-1 gap-0.5",
66
+ children: [/* @__PURE__ */ s(r, {
67
+ tag: "span",
68
+ weight: a ? "semibold" : "medium",
69
+ className: "truncate",
70
+ children: e.label
71
+ }), !!e.description && /* @__PURE__ */ s(r, {
72
+ tag: "span",
73
+ size: "xs",
74
+ type: "secondary",
75
+ className: "truncate",
76
+ children: e.description
77
+ })]
78
+ }),
79
+ !!e.badge && /* @__PURE__ */ s(i, {
80
+ variant: a ? "primary" : "secondary",
81
+ className: "shrink-0",
82
+ children: e.badge
83
+ })
84
+ ]
85
+ });
86
+ return /* @__PURE__ */ s("div", {
87
+ onClick: () => e.onSelect?.(e.id),
88
+ children: D({
89
+ href: e.href,
90
+ children: o,
91
+ active: a,
92
+ disabled: e.disabled,
93
+ external: e.external,
94
+ className: t("aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40", a ? "bg-primary/8 text-foreground" : "text-muted-foreground hover:bg-muted/60 hover:text-foreground", e.disabled && "pointer-events-none opacity-50"),
95
+ "aria-label": typeof e.label == "string" ? e.label : void 0
96
+ })
97
+ }, e.id);
98
+ })
99
+ })]
100
+ }, e.id))
101
+ })]
102
+ })
103
+ }), /* @__PURE__ */ c("div", {
104
+ "data-slot": "aside-nav-shell-main",
105
+ className: t("aside-nav-shell--main min-w-0 space-y-4", S),
106
+ children: [
107
+ (u || f || v) && /* @__PURE__ */ c("header", {
108
+ className: "aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
109
+ children: [/* @__PURE__ */ c("div", {
110
+ className: "min-w-0",
111
+ children: [!!u && /* @__PURE__ */ s(n, {
112
+ tag: "h2",
113
+ className: "border-0 pb-0",
114
+ children: u
115
+ }), !!f && /* @__PURE__ */ s(r, {
116
+ type: "secondary",
117
+ className: "mt-1 max-w-3xl",
118
+ children: f
119
+ })]
120
+ }), !!v && /* @__PURE__ */ s("div", {
121
+ className: "flex shrink-0 flex-wrap items-center gap-2",
122
+ children: v
123
+ })]
124
+ }),
125
+ /* @__PURE__ */ s("div", {
126
+ "data-slot": "aside-nav-shell-content",
127
+ className: "aside-nav-shell--content min-w-0",
128
+ children: g
129
+ }),
130
+ !!y && /* @__PURE__ */ s("footer", {
131
+ className: "aside-nav-shell--footer",
132
+ children: y
133
+ })
134
+ ]
135
+ })]
136
+ });
137
+ }
138
+ var p = f;
139
+ f.displayName = "AsideNavShell";
140
+ //#endregion
141
+ export { p as n, l as r, f as t };
142
+
143
+ //# sourceMappingURL=settings-CgtcSI8L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-CgtcSI8L.js","names":[],"sources":["../../src/components/layout/settings/settings.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport interface AsideNavShellStrings {\n\tnavigationAriaLabel: string;\n}\n\nexport const defaultAsideNavShellStrings: AsideNavShellStrings = {\n\tnavigationAriaLabel: 'Settings navigation',\n};\n\nexport interface AsideNavItem {\n\tid: string;\n\tlabel: ReactNode;\n\thref?: string;\n\tdescription?: ReactNode;\n\ticon?: ComponentType<{ className?: string }>;\n\tbadge?: ReactNode;\n\tdisabled?: boolean;\n\texternal?: boolean;\n\tonSelect?: (id: string) => void;\n}\n\nexport interface AsideNavGroup {\n\tid: string;\n\tlabel?: ReactNode;\n\titems: AsideNavItem[];\n}\n\nexport interface AsideNavShellProps extends LayoutNavigationAdapter {\n\ttitle?: ReactNode;\n\tdescription?: ReactNode;\n\tgroups: AsideNavGroup[];\n\tcurrentId?: string;\n\tcurrentPath?: string;\n\tchildren?: ReactNode;\n\taside?: ReactNode;\n\tactions?: ReactNode;\n\tfooter?: ReactNode;\n\tclassName?: string;\n\tnavClassName?: string;\n\tcontentClassName?: string;\n\tstrings?: StringsProp<AsideNavShellStrings>;\n}\n\nexport type SettingsShellProps = AsideNavShellProps;\n\nfunction normalizePath(rawUrl?: string): string {\n\tif (!rawUrl) return '';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nfunction isActiveItem(item: AsideNavItem, currentId?: string, currentPath?: string): boolean {\n\tif (currentId) return item.id === currentId;\n\tif (!currentPath || !item.href) return false;\n\tconst activePath = normalizePath(currentPath);\n\tconst itemPath = normalizePath(item.href);\n\treturn activePath === itemPath || activePath.startsWith(`${itemPath}/`);\n}\n\nexport function AsideNavShell({\n\ttitle,\n\tdescription,\n\tgroups,\n\tcurrentId,\n\tcurrentPath,\n\tchildren,\n\taside,\n\tactions,\n\tfooter,\n\tclassName,\n\tnavClassName,\n\tcontentClassName,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n}: AsideNavShellProps) {\n\tconst strings = useStrings(defaultAsideNavShellStrings, stringsProp);\n\tconst linkRenderer = resolveLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<section\n\t\t\tdata-component=\"aside-nav-shell\"\n\t\t\tdata-slot=\"aside-nav-shell\"\n\t\t\tclassName={cn('aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]', className)}\n\t\t>\n\t\t\t<aside data-slot=\"aside-nav-shell-aside\" className=\"aside-nav-shell--aside min-w-0\">\n\t\t\t\t<SmartCard\n\t\t\t\t\tpadding=\"default\"\n\t\t\t\t\tsurface=\"card\"\n\t\t\t\t\tclassName={cn('aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]', navClassName)}\n\t\t\t\t\tcontentClassName=\"grid gap-4\"\n\t\t\t\t>\n\t\t\t\t\t{!!aside && <div className=\"aside-nav-shell--aside-header\">{aside}</div>}\n\t\t\t\t\t<nav aria-label={strings.navigationAriaLabel} className=\"grid gap-4\">\n\t\t\t\t\t\t{groups.map((group) => (\n\t\t\t\t\t\t\t<div key={group.id} className=\"grid gap-1.5\">\n\t\t\t\t\t\t\t\t{!!group.label && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"px-2 uppercase tracking-normal\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className=\"grid gap-0.5\">\n\t\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\t\tconst active = isActiveItem(item, currentId, currentPath);\n\t\t\t\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex min-w-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-4 shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive ? 'text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"grid min-w-0 flex-1 gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight={active ? 'semibold' : 'medium'} className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={active ? 'primary' : 'secondary'} className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div key={item.id} onClick={() => item.onSelect?.(item.id)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{linkRenderer({\n\t\t\t\t\t\t\t\t\t\t\t\t\thref: item.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: content,\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\t\t\t\t\t\texternal: item.external,\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary/8 text-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:bg-muted/60 hover:text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t'aria-label': typeof item.label === 'string' ? item.label : undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</nav>\n\t\t\t\t</SmartCard>\n\t\t\t</aside>\n\n\t\t\t<div data-slot=\"aside-nav-shell-main\" className={cn('aside-nav-shell--main min-w-0 space-y-4', contentClassName)}>\n\t\t\t\t{(title || description || actions) && (\n\t\t\t\t\t<header className=\"aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t{!!title && <Heading tag=\"h2\" className=\"border-0 pb-0\">{title}</Heading>}\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"mt-1 max-w-3xl\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!actions && <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{actions}</div>}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\t\t\t\t<div data-slot=\"aside-nav-shell-content\" className=\"aside-nav-shell--content min-w-0\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t\t{!!footer && <footer className=\"aside-nav-shell--footer\">{footer}</footer>}\n\t\t\t</div>\n\t\t</section>\n\t);\n}\n\nexport const SettingsShell = AsideNavShell;\n\nAsideNavShell.displayName = 'AsideNavShell';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../lib/strings.cjs"),t=require("../lib/utils.cjs"),n=require("./typography-CWEobAJV.cjs"),r=require("./badge-C65rt1M9.cjs"),i=require("./cards-m03XN10f.cjs"),a=require("./layout.types-CXFAjJCj.cjs");let o=require("react/jsx-runtime");var s={navigationAriaLabel:`Settings navigation`};function c(e){if(!e)return``;try{let t=typeof window<`u`?window.location.origin:`http://localhost`,n=new URL(e,t).pathname.replace(/\/+$/,``);return n.length>0?n:`/`}catch{let t=(e.split(`?`)[0]??e).replace(/\/+$/,``);return t.length>0?t:`/`}}function l(e,t,n){if(t)return e.id===t;if(!n||!e.href)return!1;let r=c(n),i=c(e.href);return r===i||r.startsWith(`${i}/`)}function u({title:c,description:u,groups:d,currentId:f,currentPath:p,children:m,aside:h,actions:g,footer:_,className:v,navClassName:y,contentClassName:b,renderLink:x,LinkComponent:S,strings:C}){let w=e.useStrings(s,C),T=a.r({renderLink:x,LinkComponent:S});return(0,o.jsxs)(`section`,{"data-component":`aside-nav-shell`,"data-slot":`aside-nav-shell`,className:t.cn(`aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]`,v),children:[(0,o.jsx)(`aside`,{"data-slot":`aside-nav-shell-aside`,className:`aside-nav-shell--aside min-w-0`,children:(0,o.jsxs)(i.t,{padding:`default`,surface:`card`,className:t.cn(`aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]`,y),contentClassName:`grid gap-4`,children:[!!h&&(0,o.jsx)(`div`,{className:`aside-nav-shell--aside-header`,children:h}),(0,o.jsx)(`nav`,{"aria-label":w.navigationAriaLabel,className:`grid gap-4`,children:d.map(e=>(0,o.jsxs)(`div`,{className:`grid gap-1.5`,children:[!!e.label&&(0,o.jsx)(n.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`px-2 uppercase tracking-normal`,children:e.label}),(0,o.jsx)(`div`,{className:`grid gap-0.5`,children:e.items.map(e=>{let i=e.icon,a=l(e,f,p),s=(0,o.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[!!i&&(0,o.jsx)(i,{className:t.cn(`size-4 shrink-0`,a?`text-primary`:`text-muted-foreground`)}),(0,o.jsxs)(`span`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,o.jsx)(n.s,{tag:`span`,weight:a?`semibold`:`medium`,className:`truncate`,children:e.label}),!!e.description&&(0,o.jsx)(n.s,{tag:`span`,size:`xs`,type:`secondary`,className:`truncate`,children:e.description})]}),!!e.badge&&(0,o.jsx)(r.t,{variant:a?`primary`:`secondary`,className:`shrink-0`,children:e.badge})]});return(0,o.jsx)(`div`,{onClick:()=>e.onSelect?.(e.id),children:T({href:e.href,children:s,active:a,disabled:e.disabled,external:e.external,className:t.cn(`aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,a?`bg-primary/8 text-foreground`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`,e.disabled&&`pointer-events-none opacity-50`),"aria-label":typeof e.label==`string`?e.label:void 0})},e.id)})})]},e.id))})]})}),(0,o.jsxs)(`div`,{"data-slot":`aside-nav-shell-main`,className:t.cn(`aside-nav-shell--main min-w-0 space-y-4`,b),children:[(c||u||g)&&(0,o.jsxs)(`header`,{className:`aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,o.jsxs)(`div`,{className:`min-w-0`,children:[!!c&&(0,o.jsx)(n.o,{tag:`h2`,className:`border-0 pb-0`,children:c}),!!u&&(0,o.jsx)(n.s,{type:`secondary`,className:`mt-1 max-w-3xl`,children:u})]}),!!g&&(0,o.jsx)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:g})]}),(0,o.jsx)(`div`,{"data-slot":`aside-nav-shell-content`,className:`aside-nav-shell--content min-w-0`,children:m}),!!_&&(0,o.jsx)(`footer`,{className:`aside-nav-shell--footer`,children:_})]})]})}var d=u;u.displayName=`AsideNavShell`,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
2
+ //# sourceMappingURL=settings-csNmeT7b.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-csNmeT7b.cjs","names":[],"sources":["../../src/components/layout/settings/settings.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport interface AsideNavShellStrings {\n\tnavigationAriaLabel: string;\n}\n\nexport const defaultAsideNavShellStrings: AsideNavShellStrings = {\n\tnavigationAriaLabel: 'Settings navigation',\n};\n\nexport interface AsideNavItem {\n\tid: string;\n\tlabel: ReactNode;\n\thref?: string;\n\tdescription?: ReactNode;\n\ticon?: ComponentType<{ className?: string }>;\n\tbadge?: ReactNode;\n\tdisabled?: boolean;\n\texternal?: boolean;\n\tonSelect?: (id: string) => void;\n}\n\nexport interface AsideNavGroup {\n\tid: string;\n\tlabel?: ReactNode;\n\titems: AsideNavItem[];\n}\n\nexport interface AsideNavShellProps extends LayoutNavigationAdapter {\n\ttitle?: ReactNode;\n\tdescription?: ReactNode;\n\tgroups: AsideNavGroup[];\n\tcurrentId?: string;\n\tcurrentPath?: string;\n\tchildren?: ReactNode;\n\taside?: ReactNode;\n\tactions?: ReactNode;\n\tfooter?: ReactNode;\n\tclassName?: string;\n\tnavClassName?: string;\n\tcontentClassName?: string;\n\tstrings?: StringsProp<AsideNavShellStrings>;\n}\n\nexport type SettingsShellProps = AsideNavShellProps;\n\nfunction normalizePath(rawUrl?: string): string {\n\tif (!rawUrl) return '';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nfunction isActiveItem(item: AsideNavItem, currentId?: string, currentPath?: string): boolean {\n\tif (currentId) return item.id === currentId;\n\tif (!currentPath || !item.href) return false;\n\tconst activePath = normalizePath(currentPath);\n\tconst itemPath = normalizePath(item.href);\n\treturn activePath === itemPath || activePath.startsWith(`${itemPath}/`);\n}\n\nexport function AsideNavShell({\n\ttitle,\n\tdescription,\n\tgroups,\n\tcurrentId,\n\tcurrentPath,\n\tchildren,\n\taside,\n\tactions,\n\tfooter,\n\tclassName,\n\tnavClassName,\n\tcontentClassName,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n}: AsideNavShellProps) {\n\tconst strings = useStrings(defaultAsideNavShellStrings, stringsProp);\n\tconst linkRenderer = resolveLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<section\n\t\t\tdata-component=\"aside-nav-shell\"\n\t\t\tdata-slot=\"aside-nav-shell\"\n\t\t\tclassName={cn('aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]', className)}\n\t\t>\n\t\t\t<aside data-slot=\"aside-nav-shell-aside\" className=\"aside-nav-shell--aside min-w-0\">\n\t\t\t\t<SmartCard\n\t\t\t\t\tpadding=\"default\"\n\t\t\t\t\tsurface=\"card\"\n\t\t\t\t\tclassName={cn('aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]', navClassName)}\n\t\t\t\t\tcontentClassName=\"grid gap-4\"\n\t\t\t\t>\n\t\t\t\t\t{!!aside && <div className=\"aside-nav-shell--aside-header\">{aside}</div>}\n\t\t\t\t\t<nav aria-label={strings.navigationAriaLabel} className=\"grid gap-4\">\n\t\t\t\t\t\t{groups.map((group) => (\n\t\t\t\t\t\t\t<div key={group.id} className=\"grid gap-1.5\">\n\t\t\t\t\t\t\t\t{!!group.label && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"px-2 uppercase tracking-normal\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className=\"grid gap-0.5\">\n\t\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\t\tconst active = isActiveItem(item, currentId, currentPath);\n\t\t\t\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex min-w-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-4 shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive ? 'text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"grid min-w-0 flex-1 gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight={active ? 'semibold' : 'medium'} className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={active ? 'primary' : 'secondary'} className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div key={item.id} onClick={() => item.onSelect?.(item.id)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{linkRenderer({\n\t\t\t\t\t\t\t\t\t\t\t\t\thref: item.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: content,\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\t\t\t\t\t\texternal: item.external,\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary/8 text-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:bg-muted/60 hover:text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t'aria-label': typeof item.label === 'string' ? item.label : undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</nav>\n\t\t\t\t</SmartCard>\n\t\t\t</aside>\n\n\t\t\t<div data-slot=\"aside-nav-shell-main\" className={cn('aside-nav-shell--main min-w-0 space-y-4', contentClassName)}>\n\t\t\t\t{(title || description || actions) && (\n\t\t\t\t\t<header className=\"aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t{!!title && <Heading tag=\"h2\" className=\"border-0 pb-0\">{title}</Heading>}\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"mt-1 max-w-3xl\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!actions && <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{actions}</div>}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\t\t\t\t<div data-slot=\"aside-nav-shell-content\" className=\"aside-nav-shell--content min-w-0\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t\t{!!footer && <footer className=\"aside-nav-shell--footer\">{footer}</footer>}\n\t\t\t</div>\n\t\t</section>\n\t);\n}\n\nexport const SettingsShell = AsideNavShell;\n\nAsideNavShell.displayName = 'AsideNavShell';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("../lib/utils.cjs"),r=require("./tooltip-mvxZV_Lu.cjs"),i=require("./typography-CWEobAJV.cjs"),a=require("./dropdown-menu-CHQzQWUK.cjs"),o=require("./scroll-area-CIRXK7s0.cjs"),s=require("./avatar-BnKM_o2d.cjs"),c=require("./skeleton-DwF5VdMh.cjs"),l=require("./sheet-BOgUA4fC.cjs"),u=require("./sidebar-Cwhom9QE.cjs"),d=require("./hooks-B7khuHkk.cjs");let f=require("react");f=e.t(f,1);let p=require("react/jsx-runtime"),m=require("lucide-react"),h=require("class-variance-authority");var g=u.w;function _({defaultOpen:e=!0,open:t,onOpenChange:i,className:a,style:o,children:s,...c}){return(0,p.jsx)(r.r,{delayDuration:0,children:(0,p.jsx)(u.b,{defaultOpen:e,open:t,onOpenChange:i,style:o,className:n.cn(`min-h-svh`,a),...c,children:s})})}var v=`18rem`;(0,h.cva)(`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`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});var y={mobileTitle:`Sidebar`,mobileDescription:`Displays the mobile sidebar.`};function b({side:e=`left`,variant:r=`sidebar`,collapsible:i=`offcanvas`,className:a,surfaceClassName:o,children:s,strings:c,...u}){let{isMobile:d,state:f,openMobile:m,setOpenMobile:h}=g(),_=t.useStrings(y,c);return i===`none`?(0,p.jsx)(`div`,{"data-slot":`sidebar`,className:n.cn(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,o,a),...u,children:s}):d?(0,p.jsx)(l.t,{open:m,onOpenChange:h,...u,children:(0,p.jsxs)(l.r,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:n.cn(`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden`,o),style:{"--sidebar-width":v},side:e,children:[(0,p.jsxs)(l.o,{className:`sr-only`,children:[(0,p.jsx)(l.s,{children:_.mobileTitle}),(0,p.jsx)(l.i,{children:_.mobileDescription})]}),(0,p.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:s})]})}):(0,p.jsx)(`div`,{className:`group peer sticky top-0 hidden h-full text-sidebar-foreground md:block`,"data-state":f,"data-collapsible":f===`collapsed`?i:``,"data-variant":r,"data-side":e,"data-slot":`sidebar`,children:(0,p.jsx)(`div`,{className:n.cn(`inset-y-0 z-10 hidden h-full w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,r===`floating`||r===`inset`?`px-2 py-3 group-data-[collapsible=icon]:w-17`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,a),...u,children:(0,p.jsx)(`div`,{"data-sidebar":`sidebar`,className:n.cn(`sidebar flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm`,o),children:s})})})}function x({item:e,active:t=!1}){let n=d.o(e);return(0,p.jsx)(i.s,{tag:`span`,weight:t?`bold`:`medium`,className:`truncate text-inherit`,children:n})}function S({navigationByGroups:e,currentUrl:t=`/`,iconMap:r={},liveBadges:a,renderLink:o,LinkComponent:s,emptySlot:c,renderItem:l,className:m}){let h=d.d({renderLink:o,LinkComponent:s}),g=e=>!!e&&d.s(t,d.u(e)),_=e=>{let n=-1,r=-1;for(let i=0;i<e.length;i+=1){let a=e[i],o=a?.href?d.u(a.href):``;o&&d.s(t,o)&&o.length>r&&(r=o.length,n=i)}return n},v=e=>!!e?.some(e=>g(e.href)||v(e.children)),y=(e,t=0,o=0)=>{let s=!!e.children?.length,c=g(e.href),m=s?v(e.children):!1,y=c||m,b=d.l(e.handle,e.badge,a),S=d.o(e),C={depth:t,active:c,expanded:y,badge:b,renderLink:h};if(l)return(0,p.jsx)(f.Fragment,{children:l(e,C)},d.a(e,o));if(s){let t=_(e.children??[]),s=(0,p.jsxs)(p.Fragment,{children:[!!e.icon&&(0,p.jsx)(d.r,{icon:e.icon,iconMap:r,className:`size-4`,"aria-hidden":`true`}),(0,p.jsx)(x,{item:e,active:y}),!!b&&(0,p.jsx)(d.i,{value:b})]});return(0,p.jsxs)(u.g,{children:[(0,p.jsx)(u.t,{isActive:y,render:e.href&&!e.disabled?d.c(h,e,s,void 0,y):void 0,tooltip:{children:S},disabled:e.disabled,className:n.cn(`h-8 font-medium`,y&&`font-bold data-active:font-bold data-[active=true]:font-bold`,c&&`bg-sidebar-accent text-sidebar-foreground`,!c&&m&&`bg-sidebar-accent/60 text-sidebar-foreground`,e.disabled&&`cursor-not-allowed opacity-50`),children:s}),!!y&&(0,p.jsx)(u.v,{className:`gap-0.5`,children:e.children?.map((e,r)=>{let o=r===t||g(e.href),s=d.l(e.handle,e.badge,a),c=d.o(e),l=(0,p.jsxs)(p.Fragment,{children:[typeof c==`string`||typeof c==`number`?(0,p.jsx)(i.s,{tag:`span`,weight:o?`semibold`:`regular`,className:`min-w-0 flex-1 truncate text-inherit`,children:c}):c,!!s&&(0,p.jsx)(d.i,{value:s,size:`small`})]});return(0,p.jsx)(u.y,{children:(0,p.jsx)(u.n,{isActive:o,render:e.href&&!e.disabled?d.c(h,e,l,void 0,o):void 0,className:n.cn(`w-full`,o&&`bg-transparent font-semibold text-primary hover:text-primary active:text-primary data-active:text-primary data-[active=true]:text-primary`),children:l})},d.a(e,r))})})]},d.a(e,o))}let w=(0,p.jsxs)(p.Fragment,{children:[!!e.icon&&(0,p.jsx)(d.r,{icon:e.icon,iconMap:r,className:`size-4`,"aria-hidden":`true`}),(0,p.jsx)(x,{item:e,active:c}),!!b&&(0,p.jsx)(d.i,{value:b})]});return(0,p.jsx)(u.g,{children:(0,p.jsx)(u.t,{isActive:c,render:e.href&&!e.disabled?d.c(h,e,w,void 0,c):void 0,tooltip:{children:S},disabled:e.disabled,className:n.cn(`h-8 font-medium`,c&&`font-bold data-active:font-bold data-[active=true]:font-bold`,c&&`bg-sidebar-accent text-sidebar-foreground`,e.disabled&&`cursor-not-allowed opacity-50`),children:w})},d.a(e,o))},b=Object.entries(e).filter(([,e])=>e.length>0);return b.length===0?c??null:(0,p.jsx)(`div`,{className:m,children:b.map(([e,t],n)=>(0,p.jsxs)(f.Fragment,{children:[(0,p.jsxs)(u.o,{className:`px-2 py-0`,children:[!e.startsWith(`_`)&&(0,p.jsx)(u.l,{children:e}),(0,p.jsx)(u.p,{className:`gap-0.5`,children:t.map((e,t)=>y(e,0,t))})]}),n<b.length-1&&(0,p.jsx)(u.S,{className:`!mx-auto !my-1.5 !w-11/12 overflow-hidden px-4`})]},e))})}function C({logo:e,collapsedLogo:t=null,className:r}){let{state:i}=g(),a=i===`collapsed`?t:e;return a?(0,p.jsx)(`div`,{className:n.cn(`min-w-0`,r),children:a}):null}function w({items:e,label:t,currentUrl:r=`/`,iconMap:a={},liveBadges:o,renderLink:s,LinkComponent:c,className:l}){let f=d.d({renderLink:s,LinkComponent:c});return(0,p.jsxs)(u.o,{className:n.cn(`group-data-[collapsible=icon]:p-0`,l),children:[!!t&&(0,p.jsx)(u.l,{children:t}),(0,p.jsx)(u.c,{children:(0,p.jsx)(u.p,{className:`gap-0.5`,children:e.map((e,t)=>{let s=!!e.href&&d.s(r,d.u(e.href)),c=d.l(e.handle,e.badge,o),l=d.o(e),h=(0,p.jsxs)(p.Fragment,{children:[!!e.icon&&(0,p.jsx)(d.r,{icon:e.icon,iconMap:a,className:`size-4`,"aria-hidden":`true`}),typeof l==`string`||typeof l==`number`?(0,p.jsx)(i.s,{tag:`span`,className:`truncate text-inherit`,children:l}):l,!!c&&(0,p.jsx)(d.i,{value:c}),!!e.external&&(0,p.jsx)(m.ExternalLink,{className:`ml-auto size-3 opacity-50`,"aria-hidden":`true`})]});return(0,p.jsx)(u.g,{children:(0,p.jsx)(u.t,{isActive:s,render:e.href&&!e.disabled?d.c(f,e,h,void 0,s):void 0,className:n.cn(`h-8 font-medium text-sidebar-foreground/70 hover:text-sidebar-accent-foreground`,s&&`bg-sidebar-accent text-sidebar-accent-foreground`),tooltip:{children:l},disabled:e.disabled,children:h})},d.a(e,t))})})})]})}var T={label:`Workspace`,select:`Select workspace`};function E({logo:e,collapsedLogo:r,workspaceLinks:o,renderLink:s,LinkComponent:c,strings:l,contentClassName:f}){let h=t.useStrings(T,l),_=d.d({renderLink:s,LinkComponent:c}),{state:v}=g(),y=v===`collapsed`;return(0,p.jsx)(u.p,{children:(0,p.jsx)(u.g,{children:(0,p.jsxs)(a.t,{children:[(0,p.jsxs)(a.g,{render:(0,p.jsx)(u.t,{size:`lg`,className:`data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground`}),children:[(0,p.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[y?r??e:e,!y&&(0,p.jsx)(i.s,{tag:`span`,size:`xs`,className:`sr-only`,children:h.select})]}),!y&&(0,p.jsx)(m.ChevronsUpDown,{className:`ml-auto size-4 shrink-0`,"aria-hidden":`true`})]}),(0,p.jsx)(a.r,{className:n.cn(`min-w-56`,f),align:`start`,side:`right`,sideOffset:8,children:(0,p.jsxs)(a.i,{children:[(0,p.jsx)(a.o,{children:(0,p.jsx)(i.s,{weight:`semibold`,children:h.label})}),(0,p.jsx)(a.d,{}),o.map(e=>{let t=(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(e.icon??m.ExternalLink,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,p.jsx)(i.s,{tag:`span`,size:`xs`,className:`text-inherit`,children:e.label})]});return(0,p.jsx)(a.a,{render:_({href:e.url,external:e.external??!0,children:null,className:`flex items-center gap-2`}),children:t},e.url)})]})})]})})})}function D({navigationGroups:e,footerNavItems:t=[],footerLabel:r,logo:i,collapsedLogo:a,workspaceLinks:s=[],workspaceStrings:c,workspaceContentClassName:l,headerClassName:d,logoClassName:f,iconMap:m,currentUrl:h=`/`,liveBadges:g,renderLink:_,LinkComponent:v,loading:y,collapsible:x=`icon`,variant:T=`sidebar`,side:D=`left`,className:k,surfaceClassName:A,contentClassName:j,slots:M,renderItem:N}){let P=t.length>0||!!M?.footer,F=y||!e,I=s.length>0;return(0,p.jsxs)(b,{collapsible:x,variant:T,side:D,className:n.cn(`h-svh`,k),surfaceClassName:A,children:[M?.header??(!!i&&(0,p.jsx)(u.u,{className:d,children:I?(0,p.jsx)(E,{logo:i,collapsedLogo:a,workspaceLinks:s,strings:c,contentClassName:l,renderLink:_,LinkComponent:v}):(0,p.jsx)(C,{logo:i,collapsedLogo:a,className:f})})),(0,p.jsx)(u.i,{className:j,children:(0,p.jsxs)(o.t,{className:`h-full pr-1.5 pt-4`,children:[M?.beforeNavigation,F?M?.loading??(0,p.jsx)(O,{}):(0,p.jsx)(S,{navigationByGroups:e,currentUrl:h,iconMap:m,liveBadges:g,renderLink:_,LinkComponent:v,emptySlot:M?.empty,renderItem:N}),M?.afterNavigation]})}),P&&(0,p.jsx)(u.a,{children:M?.footer??(0,p.jsx)(w,{items:t,label:r,currentUrl:h,iconMap:m,liveBadges:g,renderLink:_,LinkComponent:v})})]})}function O(){let e=[9,3,4,2,1];return(0,p.jsx)(p.Fragment,{children:e.map((t,n)=>(0,p.jsxs)(f.Fragment,{children:[(0,p.jsx)(u.o,{className:`px-2 py-0`,children:(0,p.jsx)(u.p,{className:`gap-0.5`,children:Array.from({length:t},(e,t)=>(0,p.jsx)(u.g,{children:(0,p.jsxs)(`div`,{className:`flex h-8 items-center gap-2 px-2`,children:[(0,p.jsx)(c.r,{className:`h-4 w-4 shrink-0 rounded`}),(0,p.jsx)(c.r,{className:`h-3.5 rounded`,style:{width:`${60+(n*7+t*13)%40}px`}})]})},t))})}),n<e.length-1&&(0,p.jsx)(u.S,{className:`!mx-auto !my-1 !w-11/12 overflow-hidden px-4`})]},n))})}function k({item:e}){return(0,p.jsx)(i.s,{tag:`span`,weight:`medium`,className:`truncate text-inherit`,children:d.o(e)})}function A({items:e,label:t=`Platform`,currentUrl:r=`/`,iconMap:i={},liveBadges:a,renderLink:o,LinkComponent:s,renderItem:c,className:l}){let m=d.d({renderLink:o,LinkComponent:s});return(0,p.jsxs)(u.o,{className:n.cn(`px-2 py-0`,l),children:[!!t&&(0,p.jsx)(u.l,{children:t}),(0,p.jsx)(u.p,{className:`gap-0.5`,children:e.map((e,t)=>{let o=!!e.href&&d.s(r,d.u(e.href)),s=d.l(e.handle,e.badge,a),l={depth:0,active:o,expanded:!1,badge:s,renderLink:m},h=d.o(e);if(c)return(0,p.jsx)(f.Fragment,{children:c(e,l)},d.a(e,t));let g=(0,p.jsxs)(p.Fragment,{children:[!!e.icon&&(0,p.jsx)(d.r,{icon:e.icon,iconMap:i,className:`size-4`,"aria-hidden":`true`}),(0,p.jsx)(k,{item:e}),!!s&&(0,p.jsx)(d.i,{value:s})]});return(0,p.jsx)(u.g,{children:(0,p.jsx)(u.t,{isActive:o,render:e.href&&!e.disabled?d.c(m,e,g,void 0,o):void 0,tooltip:{children:h},disabled:e.disabled,className:n.cn(`h-8 font-medium`,o&&`bg-sidebar-accent text-sidebar-foreground`,e.disabled&&`cursor-not-allowed opacity-50`),children:g})},d.a(e,t))})})]})}var j={profile:`Profile`,settings:`Settings`,logout:`Log out`};function M(e){return e.split(` `).map(e=>e[0]).filter(Boolean).slice(0,2).join(``).toUpperCase()}function N({user:e,customContent:n,onProfile:r,onSettings:o,onLogout:c,strings:l,renderTrigger:d}){let f=t.useStrings(j,l),{state:h,isMobile:_}=g(),v=_||h!==`collapsed`?`bottom`:`right`,y=M(e.name),b=(0,p.jsxs)(p.Fragment,{children:[!!r&&(0,p.jsxs)(a.a,{onClick:r,children:[(0,p.jsx)(m.User,{className:`mr-2 size-4`,"aria-hidden":`true`}),(0,p.jsx)(i.s,{tag:`span`,size:`xs`,className:`text-inherit`,children:f.profile})]}),!!o&&(0,p.jsxs)(a.a,{onClick:o,children:[(0,p.jsx)(m.Settings,{className:`mr-2 size-4`,"aria-hidden":`true`}),(0,p.jsx)(i.s,{tag:`span`,size:`xs`,className:`text-inherit`,children:f.settings})]}),!!(r||o)&&!!c&&(0,p.jsx)(a.d,{}),!!c&&(0,p.jsxs)(a.a,{onClick:c,children:[(0,p.jsx)(m.LogOut,{className:`mr-2 size-4`,"aria-hidden":`true`}),(0,p.jsx)(i.s,{tag:`span`,size:`xs`,className:`text-inherit`,children:f.logout})]})]});return(0,p.jsx)(u.p,{children:(0,p.jsx)(u.g,{children:(0,p.jsxs)(a.t,{children:[(0,p.jsx)(a.g,{render:(0,p.jsx)(u.t,{size:`lg`,className:`group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent`}),children:d?.(e)??(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,p.jsxs)(s.t,{className:`size-avatar rounded-full`,children:[!!e.avatar&&(0,p.jsx)(s.o,{src:e.avatar,alt:e.name}),(0,p.jsx)(s.r,{className:`bg-sidebar-accent text-xs text-sidebar-accent-foreground`,children:y})]}),(0,p.jsxs)(`div`,{className:`flex flex-1 flex-col items-start justify-center overflow-hidden`,children:[(0,p.jsx)(i.s,{weight:`medium`,className:`w-full truncate`,children:e.name}),!!e.email&&(0,p.jsx)(i.s,{size:`xs`,type:`secondary`,className:`w-full truncate`,children:e.email})]})]}),(0,p.jsx)(m.ChevronsUpDown,{className:`ml-auto size-4 shrink-0`,"aria-hidden":`true`})]})}),(0,p.jsx)(a.r,{className:`w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg`,align:`end`,side:v,sideOffset:4,children:n??b})]})})})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return b}});
2
+ //# sourceMappingURL=sidebar-DyGIcJd9.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-DyGIcJd9.cjs","names":[],"sources":["../../src/components/layout/sidebar/sidebar.context.tsx","../../src/components/layout/sidebar/sidebar.settings.ts","../../src/components/layout/sidebar/sidebar.tsx","../../src/components/layout/sidebar/components/sidebar-grouped-navigation.tsx","../../src/components/layout/sidebar/components/sidebar-logo.tsx","../../src/components/layout/sidebar/components/sidebar-navigation-footer.tsx","../../src/components/layout/sidebar/sidebar.types.ts","../../src/components/layout/sidebar/components/sidebar-workspace-dropdown.tsx","../../src/components/layout/sidebar/app-sidebar.tsx","../../src/components/layout/sidebar/components/sidebar-navigation.tsx","../../src/components/layout/sidebar/components/sidebar-navigation-user.tsx"],"sourcesContent":[" \n/** SidebarProvider — layout-scoped wrapper around the shadcn sidebar context. */\nimport * as React from 'react';\n\nimport { TooltipProvider } from '@/components/base/display/tooltip';\nimport {\n\tSidebarProvider as PrimitiveSidebarProvider,\n\tuseSidebar as primitiveUseSidebar,\n} from '@/components/base/sidebar';\nimport { cn } from '@/lib/utils';\n\nexport const useSidebar = primitiveUseSidebar;\nexport type SidebarContext = ReturnType<typeof primitiveUseSidebar>;\n\nexport type SidebarProviderProps = React.ComponentProps<'div'> & {\n\tdefaultOpen?: boolean;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n};\n\nexport function SidebarProvider({\n\tdefaultOpen = true,\n\topen,\n\tonOpenChange,\n\tclassName,\n\tstyle,\n\tchildren,\n\t...props\n}: SidebarProviderProps) {\n\treturn (\n\t\t<TooltipProvider delayDuration={0}>\n\t\t\t<PrimitiveSidebarProvider\n\t\t\t\tdefaultOpen={defaultOpen}\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\tstyle={style}\n\t\t\t\tclassName={cn('min-h-svh', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</PrimitiveSidebarProvider>\n\t\t</TooltipProvider>\n\t);\n}\n","import { cva } from \"class-variance-authority\"\n\nexport const SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nexport const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nexport const SIDEBAR_WIDTH = \"16rem\"\nexport const SIDEBAR_WIDTH_MOBILE = \"18rem\"\nexport const SIDEBAR_WIDTH_ICON = \"3rem\"\nexport const SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\nexport const sidebarMenuButtonVariants = cva(\n \"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\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n"," \n/** Sidebar — responsive shell around the shadcn sidebar primitive pieces. */\nimport * as React from 'react';\n\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from '@/components/base/sheet';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useSidebar } from './sidebar.context';\nimport { SIDEBAR_WIDTH_MOBILE } from './sidebar.settings';\n\nexport interface SidebarStrings {\n\tmobileTitle: string;\n\tmobileDescription: string;\n}\n\nexport const defaultSidebarStrings: SidebarStrings = {\n\tmobileTitle: 'Sidebar',\n\tmobileDescription: 'Displays the mobile sidebar.',\n};\n\nexport type SidebarProps = React.ComponentProps<'div'> & {\n\tside?: 'left' | 'right';\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\tstrings?: StringsProp<SidebarStrings>;\n\tsurfaceClassName?: string;\n};\n\nexport function Sidebar({\n\tside = 'left',\n\tvariant = 'sidebar',\n\tcollapsible = 'offcanvas',\n\tclassName,\n\tsurfaceClassName,\n\tchildren,\n\tstrings: stringsProp,\n\t...props\n}: SidebarProps) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\tconst strings = useStrings(defaultSidebarStrings, stringsProp);\n\n\tif (collapsible === 'none') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\tclassName={cn('flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground', surfaceClassName, className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName={cn('w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden', surfaceClassName)}\n\t\t\t\t\tstyle={{ '--sidebar-width': SIDEBAR_WIDTH_MOBILE } as React.CSSProperties}\n\t\t\t\t\tside={side}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>{strings.mobileTitle}</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>{strings.mobileDescription}</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"group peer sticky top-0 hidden h-full text-sidebar-foreground md:block\"\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === 'collapsed' ? collapsible : ''}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t\tdata-slot=\"sidebar\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'inset-y-0 z-10 hidden h-full w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n\t\t\t\t\tside === 'left'\n\t\t\t\t\t\t? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n\t\t\t\t\t\t: 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? 'px-2 py-3 group-data-[collapsible=icon]:w-17'\n\t\t\t\t\t\t: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'sidebar flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm',\n\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/** SidebarGroupedNavigation — grouped tree navigation with composable rows. */\nimport * as React from 'react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarSeparator,\n} from '@/components/base/sidebar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarGroupedNavigationProps, SidebarNavItem, SidebarRenderItemContext } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nfunction NavLabel({\n\titem,\n\tactive = false,\n}: {\n\titem: SidebarNavItem;\n\tactive?: boolean;\n}) {\n\tconst label = getNavLabel(item);\n\treturn (\n\t\t<Text tag=\"span\" weight={active ? 'bold' : 'medium'} className=\"truncate text-inherit\">\n\t\t\t{label}\n\t\t</Text>\n\t);\n}\n\nexport function SidebarGroupedNavigation({\n\tnavigationByGroups,\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\temptySlot,\n\trenderItem,\n\tclassName,\n}: SidebarGroupedNavigationProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst isActive = (href?: string): boolean => !!href && isPathMatch(currentUrl, toPath(href));\n\n\tconst bestMatchIndex = (siblings: SidebarNavItem[]): number => {\n\t\tlet bestIdx = -1;\n\t\tlet bestLen = -1;\n\t\tfor (let i = 0; i < siblings.length; i += 1) {\n\t\t\tconst sibling = siblings[i];\n\t\t\tconst path = sibling?.href ? toPath(sibling.href) : '';\n\t\t\tif (path && isPathMatch(currentUrl, path) && path.length > bestLen) {\n\t\t\t\tbestLen = path.length;\n\t\t\t\tbestIdx = i;\n\t\t\t}\n\t\t}\n\t\treturn bestIdx;\n\t};\n\n\tconst hasActiveChild = (children?: SidebarNavItem[]): boolean =>\n\t\t!!children?.some((child) => isActive(child.href) || hasActiveChild(child.children));\n\n\tconst renderDefaultItem = (item: SidebarNavItem, depth = 0, index = 0): React.ReactNode => {\n\t\tconst hasChildren = !!item.children?.length;\n\t\tconst itemActive = isActive(item.href);\n\t\tconst childActive = hasChildren ? hasActiveChild(item.children) : false;\n\t\tconst expanded = itemActive || childActive;\n\t\tconst badge = resolveNavBadge(item.handle, item.badge, liveBadges);\n\t\tconst label = getNavLabel(item);\n\t\tconst context: SidebarRenderItemContext = {\n\t\t\tdepth,\n\t\t\tactive: itemActive,\n\t\t\texpanded,\n\t\t\tbadge,\n\t\t\trenderLink: resolvedRenderLink,\n\t\t};\n\n\t\tif (renderItem) {\n\t\t\treturn <React.Fragment key={getNavKey(item, index)}>{renderItem(item, context)}</React.Fragment>;\n\t\t}\n\n\t\tif (hasChildren) {\n\t\t\tconst activeChildIdx = bestMatchIndex(item.children ?? []);\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t\t<NavLabel item={item} active={expanded} />\n\t\t\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t\t\t</>\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\tisActive={expanded}\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, expanded) as React.ReactElement\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttooltip={{ children: label }}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'h-8 font-medium',\n\t\t\t\t\t\t\texpanded && 'font-bold data-active:font-bold data-[active=true]:font-bold',\n\t\t\t\t\t\t\titemActive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\t\t\t!itemActive && childActive && 'bg-sidebar-accent/60 text-sidebar-foreground',\n\t\t\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{content}\n\t\t\t\t\t</SidebarMenuButton>\n\n\t\t\t\t\t{!!expanded && (\n\t\t\t\t\t\t<SidebarMenuSub className=\"gap-0.5\">\n\t\t\t\t\t\t\t{item.children?.map((child, childIndex) => {\n\t\t\t\t\t\t\t\tconst childActiveNow = childIndex === activeChildIdx || isActive(child.href);\n\t\t\t\t\t\t\t\tconst childBadge = resolveNavBadge(child.handle, child.badge, liveBadges);\n\t\t\t\t\t\t\t\tconst childLabel = getNavLabel(child);\n\t\t\t\t\t\t\t\tconst childContent = (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{typeof childLabel === 'string' || typeof childLabel === 'number' ? (\n\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tweight={childActiveNow ? 'semibold' : 'regular'}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"min-w-0 flex-1 truncate text-inherit\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{childLabel}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : childLabel}\n\t\t\t\t\t\t\t\t\t\t{!!childBadge && <NavBadge value={childBadge} size=\"small\" />}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<SidebarMenuSubItem key={getNavKey(child, childIndex)}>\n\t\t\t\t\t\t\t\t\t\t<SidebarMenuSubButton\n\t\t\t\t\t\t\t\t\t\t\tisActive={childActiveNow}\n\t\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t\tchild.href && !child.disabled\n\t\t\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, child, childContent, undefined, childActiveNow) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'w-full',\n\t\t\t\t\t\t\t\t\t\t\t\tchildActiveNow && 'bg-transparent font-semibold text-primary hover:text-primary active:text-primary data-active:text-primary data-[active=true]:text-primary',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{childContent}\n\t\t\t\t\t\t\t\t\t\t</SidebarMenuSubButton>\n\t\t\t\t\t\t\t\t\t</SidebarMenuSubItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</SidebarMenuSub>\n\t\t\t\t\t)}\n\t\t\t</SidebarMenuItem>\n\t\t);\n\t}\n\n\tconst content = (\n\t\t<>\n\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t<NavLabel item={item} active={itemActive} />\n\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t<SidebarMenuButton\n\t\t\t\tisActive={itemActive}\n\t\t\t\trender={\n\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, itemActive) as React.ReactElement\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\ttooltip={{ children: label }}\n\t\t\t\tdisabled={item.disabled}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'h-8 font-medium',\n\t\t\t\t\titemActive && 'font-bold data-active:font-bold data-[active=true]:font-bold',\n\t\t\t\t\titemActive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</SidebarMenuButton>\n\t\t</SidebarMenuItem>\n\t);\n\t};\n\n\tconst groupEntries = Object.entries(navigationByGroups).filter(([, items]) => items.length > 0);\n\tif (groupEntries.length === 0) return emptySlot ?? null;\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{groupEntries.map(([groupName, items], groupIndex) => (\n\t\t\t\t<React.Fragment key={groupName}>\n\t\t\t\t\t<SidebarGroup className=\"px-2 py-0\">\n\t\t\t\t\t\t{!groupName.startsWith('_') && <SidebarGroupLabel>{groupName}</SidebarGroupLabel>}\n\t\t\t\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t\t\t\t{items.map((item, index) => renderDefaultItem(item, 0, index))}\n\t\t\t\t\t\t</SidebarMenu>\n\t\t\t\t\t</SidebarGroup>\n\t\t\t\t\t{groupIndex < groupEntries.length - 1 && (\n\t\t\t\t\t\t<SidebarSeparator className=\"!mx-auto !my-1.5 !w-11/12 overflow-hidden px-4\" />\n\t\t\t\t\t)}\n\t\t\t\t</React.Fragment>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","/** SidebarLogo — hides its logo content when the sidebar is icon-collapsed. */\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport { useSidebar } from '../sidebar.context';\n\nexport interface SidebarLogoProps {\n\tlogo: ReactNode;\n\tcollapsedLogo?: ReactNode;\n\tclassName?: string;\n}\n\nexport function SidebarLogo({ logo, collapsedLogo = null, className }: SidebarLogoProps) {\n\tconst { state } = useSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst content = isCollapsed ? collapsedLogo : logo;\n\tif (!content) return null;\n\treturn <div className={cn('min-w-0', className)}>{content}</div>;\n}\n","/** SidebarNavigationFooter — secondary footer navigation using renderLink. */\nimport { ExternalLink } from 'lucide-react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarNavigationFooterProps } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nexport function SidebarNavigationFooter({\n\titems,\n\tlabel,\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n}: SidebarNavigationFooterProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<SidebarGroup className={cn('group-data-[collapsible=icon]:p-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarGroupContent>\n\t\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\t\tconst badge = resolveNavBadge(item.handle, item.badge, liveBadges);\n\t\t\t\t\t\tconst labelNode = getNavLabel(item);\n\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t\t{typeof labelNode === 'string' || typeof labelNode === 'number' ? (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" className=\"truncate text-inherit\">{labelNode}</Text>\n\t\t\t\t\t\t\t\t) : labelNode}\n\t\t\t\t\t\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t\t\t\t\t\t\t{!!item.external && <ExternalLink className=\"ml-auto size-3 opacity-50\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\t\tisActive={active}\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-8 font-medium text-sidebar-foreground/70 hover:text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</SidebarMenu>\n\t\t\t</SidebarGroupContent>\n\t\t</SidebarGroup>\n\t);\n}\n","/**\n * Sidebar types — framework-neutral navigation tree, render contexts, slots,\n * strings, and composition props.\n */\nimport type { ComponentType, ReactNode } from 'react';\n\nimport type {\n\tLayoutIconSource,\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLinkComponent,\n} from '../layout.types';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface SidebarNavItem {\n\t/** New preferred label. */\n\tlabel?: ReactNode;\n\t/** Back-compat label used by older call sites. */\n\ttitle?: ReactNode;\n\thref?: string;\n\thandle?: string;\n\ticon?: LayoutIconSource;\n\tdisabled?: boolean;\n\tbadge?: string | number;\n\tchildren?: SidebarNavItem[];\n\tgroup?: string;\n\texternal?: boolean;\n}\n\nexport type SidebarFlatNavItem = Omit<SidebarNavItem, 'children' | 'group'>;\n\nexport interface SidebarRenderItemContext {\n\tdepth: number;\n\tactive: boolean;\n\texpanded: boolean;\n\tbadge?: string | number;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface SidebarSlots {\n\theader?: ReactNode;\n\tbeforeNavigation?: ReactNode;\n\tafterNavigation?: ReactNode;\n\tfooter?: ReactNode;\n\tempty?: ReactNode;\n\tloading?: ReactNode;\n}\n\nexport interface AppSidebarProps extends LayoutNavigationAdapter {\n\tnavigationGroups?: Record<string, SidebarNavItem[]>;\n\tfooterNavItems?: SidebarFlatNavItem[];\n\tfooterLabel?: ReactNode;\n\tlogo?: ReactNode;\n\tcollapsedLogo?: ReactNode;\n\tworkspaceLinks?: WorkspaceLink[];\n\tworkspaceStrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\tworkspaceContentClassName?: string;\n\theaderClassName?: string;\n\tlogoClassName?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tcurrentUrl?: string;\n\tliveBadges?: Record<string, string | number>;\n\tloading?: boolean;\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\tside?: 'left' | 'right';\n\tclassName?: string;\n\tsurfaceClassName?: string;\n\tcontentClassName?: string;\n\tslots?: SidebarSlots;\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface SidebarGroupedNavigationProps extends LayoutNavigationAdapter {\n\tnavigationByGroups: Record<string, SidebarNavItem[]>;\n\tcurrentUrl?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tliveBadges?: Record<string, string | number>;\n\temptySlot?: ReactNode;\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface SidebarFlatNavigationProps extends LayoutNavigationAdapter {\n\titems: SidebarFlatNavItem[];\n\tlabel?: ReactNode;\n\tcurrentUrl?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tliveBadges?: Record<string, string | number>;\n\trenderItem?: (item: SidebarFlatNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface WorkspaceLink {\n\tlabel: ReactNode;\n\turl: string;\n\ticon?: ComponentType<{ className?: string }>;\n\texternal?: boolean;\n}\n\nexport interface SidebarWorkspaceDropdownStrings {\n\tlabel: string;\n\tselect: string;\n}\n\nexport const defaultSidebarWorkspaceDropdownStrings: SidebarWorkspaceDropdownStrings = {\n\tlabel: 'Workspace',\n\tselect: 'Select workspace',\n};\n\nexport interface SidebarWorkspaceDropdownProps extends LayoutNavigationAdapter {\n\tlogo: ReactNode;\n\tcollapsedLogo?: ReactNode;\n\tworkspaceLinks: WorkspaceLink[];\n\tstrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\tcontentClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type SidebarFooterNavigationItem = SidebarFlatNavItem;\n\nexport interface SidebarNavigationFooterProps extends LayoutNavigationAdapter {\n\titems: SidebarFooterNavigationItem[];\n\tlabel?: ReactNode;\n\tcurrentUrl?: string;\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\tliveBadges?: Record<string, string | number>;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n","/** SidebarWorkspaceDropdown — workspace selector using consumer link rendering. */\nimport { ChevronsUpDown, ExternalLink } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultSidebarWorkspaceDropdownStrings,\n\ttype SidebarWorkspaceDropdownProps,\n} from '../sidebar.types';\nimport { useSidebar } from '../sidebar.context';\n\nexport function SidebarWorkspaceDropdown({\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n\tcontentClassName,\n}: SidebarWorkspaceDropdownProps) {\n\tconst strings = useStrings(defaultSidebarWorkspaceDropdownStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst { state } = useSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst visibleLogo = isCollapsed ? (collapsedLogo ?? logo) : logo;\n\n\treturn (\n\t\t<SidebarMenu>\n\t\t\t<SidebarMenuItem>\n\t\t\t\t<DropdownMenu>\n\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\tclassName=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-2\">\n\t\t\t\t\t\t\t{visibleLogo}\n\t\t\t\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"sr-only\">\n\t\t\t\t\t\t\t\t\t{strings.select}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!isCollapsed && <ChevronsUpDown className=\"ml-auto size-4 shrink-0\" aria-hidden=\"true\" />}\n\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t<DropdownMenuContent className={cn('min-w-56', contentClassName)} align=\"start\" side=\"right\" sideOffset={8}>\n\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t<DropdownMenuLabel>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.label}</Text>\n\t\t\t\t\t\t\t</DropdownMenuLabel>\n\t\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t\t{workspaceLinks.map((link) => {\n\t\t\t\t\t\t\t\tconst Icon = link.icon ?? ExternalLink;\n\t\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{link.label}</Text>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={link.url}\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\tresolvedRenderLink({\n\t\t\t\t\t\t\t\t\t\t\t\thref: link.url,\n\t\t\t\t\t\t\t\t\t\t\t\texternal: link.external ?? true,\n\t\t\t\t\t\t\t\t\t\t\t\tchildren: null,\n\t\t\t\t\t\t\t\t\t\t\t\tclassName: 'flex items-center gap-2',\n\t\t\t\t\t\t\t\t\t\t\t}) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t</DropdownMenu>\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n","/**\n * AppSidebar — opinionated assembly of logo/header, grouped navigation, and\n * footer links. Consumers still own framework routing through `renderLink`.\n */\nimport * as React from 'react';\n\nimport { ScrollArea } from '@/components/base/display/scroll-area';\nimport { Skeleton } from '@/components/base/display/skeleton';\nimport {\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarHeader,\n\tSidebarMenu,\n\tSidebarMenuItem,\n\tSidebarSeparator,\n} from '@/components/base/sidebar';\nimport { cn } from '@/lib/utils';\n\nimport { SidebarGroupedNavigation } from './components/sidebar-grouped-navigation';\nimport { SidebarLogo } from './components/sidebar-logo';\nimport { SidebarNavigationFooter } from './components/sidebar-navigation-footer';\nimport { SidebarWorkspaceDropdown } from './components/sidebar-workspace-dropdown';\nimport { Sidebar } from './sidebar';\nimport type { AppSidebarProps } from './sidebar.types';\n\nexport function AppSidebar({\n\tnavigationGroups,\n\tfooterNavItems = [],\n\tfooterLabel,\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks = [],\n\tworkspaceStrings,\n\tworkspaceContentClassName,\n\theaderClassName,\n\tlogoClassName,\n\ticonMap,\n\tcurrentUrl = '/',\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\tloading,\n\tcollapsible = 'icon',\n\tvariant = 'sidebar',\n\tside = 'left',\n\tclassName,\n\tsurfaceClassName,\n\tcontentClassName,\n\tslots,\n\trenderItem,\n}: AppSidebarProps) {\n\tconst hasFooter = footerNavItems.length > 0 || !!slots?.footer;\n\tconst isLoading = loading || !navigationGroups;\n\tconst hasWorkspaceLinks = workspaceLinks.length > 0;\n\n\treturn (\n\t\t<Sidebar collapsible={collapsible} variant={variant} side={side} className={cn('h-svh', className)} surfaceClassName={surfaceClassName}>\n\t\t\t{slots?.header ?? (!!logo && (\n\t\t\t\t<SidebarHeader className={headerClassName}>\n\t\t\t\t\t{hasWorkspaceLinks ? (\n\t\t\t\t\t\t<SidebarWorkspaceDropdown\n\t\t\t\t\t\t\tlogo={logo}\n\t\t\t\t\t\t\tcollapsedLogo={collapsedLogo}\n\t\t\t\t\t\t\tworkspaceLinks={workspaceLinks}\n\t\t\t\t\t\t\tstrings={workspaceStrings}\n\t\t\t\t\t\t\tcontentClassName={workspaceContentClassName}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SidebarLogo logo={logo} collapsedLogo={collapsedLogo} className={logoClassName} />\n\t\t\t\t\t)}\n\t\t\t\t</SidebarHeader>\n\t\t\t))}\n\n\t\t\t<SidebarContent className={contentClassName}>\n\t\t\t\t<ScrollArea className=\"h-full pr-1.5 pt-4\">\n\t\t\t\t\t{slots?.beforeNavigation}\n\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\tslots?.loading ?? <AppSidebarSkeleton />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SidebarGroupedNavigation\n\t\t\t\t\t\t\tnavigationByGroups={navigationGroups}\n\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t\t\t\temptySlot={slots?.empty}\n\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{slots?.afterNavigation}\n\t\t\t\t</ScrollArea>\n\t\t\t</SidebarContent>\n\n\t\t\t{hasFooter && (\n\t\t\t\t<SidebarFooter>\n\t\t\t\t\t{slots?.footer ?? (\n\t\t\t\t\t\t<SidebarNavigationFooter\n\t\t\t\t\t\t\titems={footerNavItems}\n\t\t\t\t\t\t\tlabel={footerLabel}\n\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</SidebarFooter>\n\t\t\t)}\n\t\t</Sidebar>\n\t);\n}\n\nfunction AppSidebarSkeleton() {\n\tconst groups = [9, 3, 4, 2, 1];\n\n\treturn (\n\t\t<>\n\t\t\t{groups.map((count, groupIdx) => (\n\t\t\t\t<React.Fragment key={groupIdx}>\n\t\t\t\t\t<SidebarGroup className=\"px-2 py-0\">\n\t\t\t\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t\t\t\t{Array.from({ length: count }, (_, i) => (\n\t\t\t\t\t\t\t\t<SidebarMenuItem key={i}>\n\t\t\t\t\t\t\t\t\t<div className=\"flex h-8 items-center gap-2 px-2\">\n\t\t\t\t\t\t\t\t\t\t<Skeleton className=\"h-4 w-4 shrink-0 rounded\" />\n\t\t\t\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-3.5 rounded\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ width: `${60 + ((groupIdx * 7 + i * 13) % 40)}px` }}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</SidebarMenu>\n\t\t\t\t\t</SidebarGroup>\n\t\t\t\t\t{groupIdx < groups.length - 1 && (\n\t\t\t\t\t\t<SidebarSeparator className=\"!mx-auto !my-1 !w-11/12 overflow-hidden px-4\" />\n\t\t\t\t\t)}\n\t\t\t\t</React.Fragment>\n\t\t\t))}\n\t\t</>\n\t);\n}\n","/** SidebarNavigation — flat, framework-neutral sidebar nav list. */\nimport * as React from 'react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarFlatNavigationProps, SidebarFlatNavItem, SidebarRenderItemContext } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nexport { DynamicIcon } from '../sidebar.utils';\nexport { DynamicIcon as Icon } from '../sidebar.utils';\n\nfunction NavLabel({ item }: { item: SidebarFlatNavItem }) {\n\tconst label = getNavLabel(item);\n\treturn (\n\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate text-inherit\">\n\t\t\t{label}\n\t\t</Text>\n\t);\n}\n\nexport function SidebarNavigation({\n\titems,\n\tlabel = 'Platform',\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\trenderLink,\n\tLinkComponent,\n\trenderItem,\n\tclassName,\n}: SidebarFlatNavigationProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<SidebarGroup className={cn('px-2 py-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarMenu className=\"gap-0.5\">\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\tconst badge = resolveNavBadge(item.handle, item.badge, liveBadges);\n\t\t\t\t\tconst context: SidebarRenderItemContext = {\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tactive,\n\t\t\t\t\t\texpanded: false,\n\t\t\t\t\t\tbadge,\n\t\t\t\t\t\trenderLink: resolvedRenderLink,\n\t\t\t\t\t};\n\t\t\t\t\tconst labelNode = getNavLabel(item);\n\n\t\t\t\t\tif (renderItem) {\n\t\t\t\t\t\treturn <React.Fragment key={getNavKey(item, index)}>{renderItem(item, context)}</React.Fragment>;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t<NavLabel item={item} />\n\t\t\t\t\t\t\t{!!badge && <NavBadge value={badge} />}\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tisActive={active}\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'h-8 font-medium',\n\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</SidebarMenu>\n\t\t</SidebarGroup>\n\t);\n}\n\n/** @deprecated Use `SidebarFlatNavItem` from `sidebar.types`. */\nexport type SidebarNavigationItem = SidebarFlatNavItem;\n"," \n/** SidebarNavigationUser — user profile dropdown for sidebar footer. */\nimport { ChevronsUpDown, LogOut, Settings, User } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport { Text } from '@/components/typography';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '@/components/base/sidebar';\nimport { useStrings, type StringsProp } from '@/lib/strings';\n\nimport type { LayoutUser } from '../../layout.types';\nimport { useSidebar } from '../sidebar.context';\n\nexport interface SidebarNavigationUserStrings {\n\tprofile: string;\n\tsettings: string;\n\tlogout: string;\n}\n\nexport const defaultSidebarNavigationUserStrings: SidebarNavigationUserStrings = {\n\tprofile: 'Profile',\n\tsettings: 'Settings',\n\tlogout: 'Log out',\n};\n\nexport interface SidebarNavigationUserProps {\n\tuser: LayoutUser;\n\tcustomContent?: ReactNode;\n\tonProfile?: () => void;\n\tonSettings?: () => void;\n\tonLogout?: () => void;\n\tstrings?: StringsProp<SidebarNavigationUserStrings>;\n\trenderTrigger?: (user: LayoutUser) => ReactNode;\n}\n\nfunction deriveInitials(name: string): string {\n\treturn name\n\t\t.split(' ')\n\t\t.map((part) => part[0])\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.join('')\n\t\t.toUpperCase();\n}\n\nexport function SidebarNavigationUser({\n\tuser,\n\tcustomContent,\n\tonProfile,\n\tonSettings,\n\tonLogout,\n\tstrings: stringsProp,\n\trenderTrigger,\n}: SidebarNavigationUserProps) {\n\tconst strings = useStrings(defaultSidebarNavigationUserStrings, stringsProp);\n\tconst { state, isMobile } = useSidebar();\n\tconst dropdownSide = isMobile || state !== 'collapsed' ? 'bottom' : 'right';\n\tconst initials = deriveInitials(user.name);\n\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{!!onProfile && (\n\t\t\t\t<DropdownMenuItem onClick={onProfile}>\n\t\t\t\t\t<User className=\"mr-2 size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.profile}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t\t{!!onSettings && (\n\t\t\t\t<DropdownMenuItem onClick={onSettings}>\n\t\t\t\t\t<Settings className=\"mr-2 size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.settings}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t\t{!!(onProfile || onSettings) && !!onLogout && <DropdownMenuSeparator />}\n\t\t\t{!!onLogout && (\n\t\t\t\t<DropdownMenuItem onClick={onLogout}>\n\t\t\t\t\t<LogOut className=\"mr-2 size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.logout}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<SidebarMenu>\n\t\t\t<SidebarMenuItem>\n\t\t\t\t<DropdownMenu>\n\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\tclassName=\"group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderTrigger?.(user) ?? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t<Avatar className=\"size-avatar rounded-full\">\n\t\t\t\t\t\t\t\t\t\t{!!user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n\t\t\t\t\t\t\t\t\t\t<AvatarFallback className=\"bg-sidebar-accent text-xs text-sidebar-accent-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t\t\t\t<div className=\"flex flex-1 flex-col items-start justify-center overflow-hidden\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className=\"w-full truncate\">{user.name}</Text>\n\t\t\t\t\t\t\t\t\t\t{!!user.email && <Text size=\"xs\" type=\"secondary\" className=\"w-full truncate\">{user.email}</Text>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<ChevronsUpDown className=\"ml-auto size-4 shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DropdownMenuTrigger>\n\n\t\t\t\t\t<DropdownMenuContent\n\t\t\t\t\t\tclassName=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tside={dropdownSide}\n\t\t\t\t\t\tsideOffset={4}\n\t\t\t\t\t>\n\t\t\t\t\t\t{customContent ?? defaultContent}\n\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t</DropdownMenu>\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n\n/** @deprecated — use `LayoutUser` from `layout.types`. */\nexport type SidebarUserData = LayoutUser;\n"],"mappings":"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"}