admin-ui-starter-kit 0.6.4 → 0.6.5

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 (880) hide show
  1. package/dist/_shared/auth-BZY91F5_.cjs +2 -0
  2. package/dist/_shared/auth-BZY91F5_.cjs.map +1 -0
  3. package/dist/_shared/auth-DcotjEbY.js +643 -0
  4. package/dist/_shared/auth-DcotjEbY.js.map +1 -0
  5. package/dist/_shared/cards-C1ythc0Q.js +354 -0
  6. package/dist/_shared/cards-C1ythc0Q.js.map +1 -0
  7. package/dist/_shared/cards-GSYfJ-oX.cjs +2 -0
  8. package/dist/_shared/cards-GSYfJ-oX.cjs.map +1 -0
  9. package/dist/_shared/comments-CmljtbAW.js +952 -0
  10. package/dist/_shared/comments-CmljtbAW.js.map +1 -0
  11. package/dist/_shared/comments-ColUq7eh.cjs +2 -0
  12. package/dist/_shared/comments-ColUq7eh.cjs.map +1 -0
  13. package/dist/_shared/containers-CB7zaAvN.cjs +2 -0
  14. package/dist/_shared/containers-CB7zaAvN.cjs.map +1 -0
  15. package/dist/_shared/containers-CLBmhGfs.js +48 -0
  16. package/dist/_shared/containers-CLBmhGfs.js.map +1 -0
  17. package/dist/_shared/data-display-BTsCY7A5.js +1873 -0
  18. package/dist/_shared/data-display-BTsCY7A5.js.map +1 -0
  19. package/dist/_shared/data-display-BdGQMXit.cjs +2 -0
  20. package/dist/_shared/data-display-BdGQMXit.cjs.map +1 -0
  21. package/dist/_shared/forms-CEE1te78.cjs +2 -0
  22. package/dist/_shared/forms-CEE1te78.cjs.map +1 -0
  23. package/dist/_shared/forms-CQoGvG7q.js +3533 -0
  24. package/dist/_shared/forms-CQoGvG7q.js.map +1 -0
  25. package/dist/_shared/header-B9IPDQRW.js +447 -0
  26. package/dist/_shared/header-B9IPDQRW.js.map +1 -0
  27. package/dist/_shared/header-C_1x4-rd.cjs +2 -0
  28. package/dist/_shared/header-C_1x4-rd.cjs.map +1 -0
  29. package/dist/_shared/hooks---vunGQ6.js +95 -0
  30. package/dist/_shared/hooks---vunGQ6.js.map +1 -0
  31. package/dist/_shared/hooks-CjVzmgvY.cjs +2 -0
  32. package/dist/_shared/hooks-CjVzmgvY.cjs.map +1 -0
  33. package/dist/_shared/layout-BXrQqUKq.js +262 -0
  34. package/dist/_shared/layout-BXrQqUKq.js.map +1 -0
  35. package/dist/_shared/layout-DWicdsPI.cjs +2 -0
  36. package/dist/_shared/layout-DWicdsPI.cjs.map +1 -0
  37. package/dist/_shared/layout.types-CXFAjJCj.cjs +2 -0
  38. package/dist/_shared/layout.types-CXFAjJCj.cjs.map +1 -0
  39. package/dist/_shared/layout.types-ip8BYRa7.js +28 -0
  40. package/dist/_shared/layout.types-ip8BYRa7.js.map +1 -0
  41. package/dist/_shared/settings-Bfr6PgSi.cjs +2 -0
  42. package/dist/_shared/settings-Bfr6PgSi.cjs.map +1 -0
  43. package/dist/_shared/settings-CrPaYr4A.js +143 -0
  44. package/dist/_shared/settings-CrPaYr4A.js.map +1 -0
  45. package/dist/_shared/sidebar-CDOLD8fN.js +548 -0
  46. package/dist/_shared/sidebar-CDOLD8fN.js.map +1 -0
  47. package/dist/_shared/sidebar-DcsxeNml.cjs +2 -0
  48. package/dist/_shared/sidebar-DcsxeNml.cjs.map +1 -0
  49. package/dist/_shared/workspace-C1twu23r.cjs +2 -0
  50. package/dist/_shared/workspace-C1twu23r.cjs.map +1 -0
  51. package/dist/_shared/workspace-CkOZLdcN.js +357 -0
  52. package/dist/_shared/workspace-CkOZLdcN.js.map +1 -0
  53. package/dist/components/base/cards/index.cjs +1 -1
  54. package/dist/components/base/cards/index.js +1 -1
  55. package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
  56. package/dist/components/base/forms/index.cjs +1 -1
  57. package/dist/components/base/forms/index.js +1 -1
  58. package/dist/components/composed/admin/index.cjs +1 -1
  59. package/dist/components/composed/admin/index.js +2 -2
  60. package/dist/components/composed/ai/index.cjs +1 -1
  61. package/dist/components/composed/ai/index.js +2 -2
  62. package/dist/components/composed/analytics/index.cjs +1 -1
  63. package/dist/components/composed/analytics/index.js +1 -1
  64. package/dist/components/composed/cards/index.cjs +1 -1
  65. package/dist/components/composed/cards/index.js +2 -2
  66. package/dist/components/composed/commerce/index.cjs +1 -1
  67. package/dist/components/composed/commerce/index.js +2 -2
  68. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  69. package/dist/components/composed/dark-surfaces/index.js +1 -1
  70. package/dist/components/composed/data-display/index.cjs +1 -1
  71. package/dist/components/composed/data-display/index.js +1 -1
  72. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -1
  73. package/dist/components/composed/navigation/index.cjs +1 -1
  74. package/dist/components/composed/navigation/index.js +1 -1
  75. package/dist/components/composed/timelines/index.cjs +1 -1
  76. package/dist/components/composed/timelines/index.js +1 -1
  77. package/dist/components/features/activities/index.cjs +1 -1
  78. package/dist/components/features/activities/index.js +1 -1
  79. package/dist/components/features/card/index.cjs +1 -1
  80. package/dist/components/features/card/index.js +1 -1
  81. package/dist/components/features/comments/index.cjs +1 -1
  82. package/dist/components/features/comments/index.js +1 -1
  83. package/dist/components/features/event-log/index.cjs +1 -1
  84. package/dist/components/features/event-log/index.js +2 -2
  85. package/dist/components/features/media-library/index.cjs +1 -1
  86. package/dist/components/features/media-library/index.js +1 -1
  87. package/dist/components/features/products/index.cjs +1 -1
  88. package/dist/components/features/products/index.js +3 -3
  89. package/dist/components/features/resource/index.cjs +1 -1
  90. package/dist/components/features/resource/index.js +2 -2
  91. package/dist/components/features/schema-form/index.cjs +1 -1
  92. package/dist/components/features/schema-form/index.js +2 -2
  93. package/dist/components/layout/auth/index.cjs +1 -1
  94. package/dist/components/layout/auth/index.js +1 -1
  95. package/dist/components/layout/containers/containers.types.d.ts +2 -2
  96. package/dist/components/layout/containers/containers.types.d.ts.map +1 -1
  97. package/dist/components/layout/containers/content-container.d.ts.map +1 -1
  98. package/dist/components/layout/containers/index.cjs +1 -1
  99. package/dist/components/layout/containers/index.js +1 -2
  100. package/dist/components/layout/header/index.cjs +1 -1
  101. package/dist/components/layout/header/index.js +1 -1
  102. package/dist/components/layout/hooks/index.cjs +1 -1
  103. package/dist/components/layout/hooks/index.js +1 -1
  104. package/dist/components/layout/index.cjs +1 -1
  105. package/dist/components/layout/index.js +10 -11
  106. package/dist/components/layout/layout.types.d.ts.map +1 -1
  107. package/dist/components/layout/page/index.cjs +1 -1
  108. package/dist/components/layout/page/index.js +2 -2
  109. package/dist/components/layout/settings/index.cjs +1 -1
  110. package/dist/components/layout/settings/index.js +1 -1
  111. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
  112. package/dist/components/layout/sidebar/index.cjs +1 -1
  113. package/dist/components/layout/sidebar/index.js +2 -2
  114. package/dist/components/layout/workspace/index.cjs +1 -1
  115. package/dist/components/layout/workspace/index.js +1 -1
  116. package/dist/showcase/assets/AreaChart-WJREayr9.js +6 -0
  117. package/dist/showcase/assets/CompositeItem-CY3XmFuI.js +1 -0
  118. package/dist/showcase/assets/CompositeRoot-BPMF0t1F.js +1 -0
  119. package/dist/showcase/assets/DialogTrigger-BzaF3YN8.js +1 -0
  120. package/dist/showcase/assets/LabelableContext-LKvvFFnV.js +1 -0
  121. package/dist/showcase/assets/PreviewLayout-B0n7l00P.js +1 -0
  122. package/dist/showcase/assets/RadioGroup-VBtGFETg.js +1 -0
  123. package/dist/showcase/assets/ScrollAreaCorner-BimGwdGs.js +1 -0
  124. package/dist/showcase/assets/Separator-BfKe0YiY.js +1 -0
  125. package/dist/showcase/assets/ToolbarRootContext-Cscyv1PN.js +1 -0
  126. package/dist/showcase/assets/accordion-BEN0VkL4.js +171 -0
  127. package/dist/showcase/assets/accordion-variants-QFG3H38z.js +1 -0
  128. package/dist/showcase/assets/action-menu-Bfw1tFqM.js +1 -0
  129. package/dist/showcase/assets/actions-CFpHs5IC.js +310 -0
  130. package/dist/showcase/assets/activities-CDxlaghU.js +500 -0
  131. package/dist/showcase/assets/activities-feed-card-BO1kcjRK.js +1 -0
  132. package/dist/showcase/assets/admin-DFpHXeuv.js +140 -0
  133. package/dist/showcase/assets/ai-DyO6VqQP.js +207 -0
  134. package/dist/showcase/assets/ai-artifact-MVA3ikv6.js +2 -0
  135. package/dist/showcase/assets/ai-chat-D-xcp6Jf.js +568 -0
  136. package/dist/showcase/assets/ai-elements-DlFqIOYp.js +387 -0
  137. package/dist/showcase/assets/ai-tool-call-DedG9TdK.js +1 -0
  138. package/dist/showcase/assets/alert-CmRK2lOe.js +1 -0
  139. package/dist/showcase/assets/alert-DCIVryEp.js +62 -0
  140. package/dist/showcase/assets/alert-DDP3Ktic.js +93 -0
  141. package/dist/showcase/assets/api-key-list-CWa997YX.js +1 -0
  142. package/dist/showcase/assets/api-key-list-mTPebHF3.js +73 -0
  143. package/dist/showcase/assets/app-sidebar-Cnfk9z5K.js +1 -0
  144. package/dist/showcase/assets/arrow-down-CCYWFimd.js +1 -0
  145. package/dist/showcase/assets/arrow-left-CrYjfZJ0.js +1 -0
  146. package/dist/showcase/assets/arrow-right-eLxbBrdm.js +1 -0
  147. package/dist/showcase/assets/arrow-up-kA33fcPv.js +1 -0
  148. package/dist/showcase/assets/arrow-up-right-BSWGQVDB.js +1 -0
  149. package/dist/showcase/assets/avatar-BDGhB3aA.js +57 -0
  150. package/dist/showcase/assets/avatar-CLBQvnYG.js +1 -0
  151. package/dist/showcase/assets/avatar-WUMW3Qjo.js +1 -0
  152. package/dist/showcase/assets/avatar-cKSNuTzf.js +67 -0
  153. package/dist/showcase/assets/badge--mqVg8Ry.js +31 -0
  154. package/dist/showcase/assets/badge-check-D7YjWqnm.js +1 -0
  155. package/dist/showcase/assets/bell-6YyocFK6.js +1 -0
  156. package/dist/showcase/assets/bot-BC4pGAB3.js +1 -0
  157. package/dist/showcase/assets/box-CPGIu4Nv.js +1 -0
  158. package/dist/showcase/assets/braces-9jywZtTA.js +1 -0
  159. package/dist/showcase/assets/brain-wf_S427C.js +1 -0
  160. package/dist/showcase/assets/brand-78lhbKSW.js +36 -0
  161. package/dist/showcase/assets/breadcrumb-6XHObtqO.js +1 -0
  162. package/dist/showcase/assets/breadcrumb-BVrrS53_.js +52 -0
  163. package/dist/showcase/assets/breadcrumbs-BwC3Iaae.js +1 -0
  164. package/dist/showcase/assets/briefcase-BViWYew9.js +1 -0
  165. package/dist/showcase/assets/building-2-CwR3gV1I.js +1 -0
  166. package/dist/showcase/assets/button-BWwsy37B.js +44 -0
  167. package/dist/showcase/assets/button-group-BTiMRQIO.js +1 -0
  168. package/dist/showcase/assets/buttons-D9pH8hPs.js +272 -0
  169. package/dist/showcase/assets/calendar-Bzl2i1lu.js +1 -0
  170. package/dist/showcase/assets/calendar-CNMlC7Fn.js +16 -0
  171. package/dist/showcase/assets/calendar-D5NdEmaD.js +1 -0
  172. package/dist/showcase/assets/calendar-days-j8QDBUc5.js +1 -0
  173. package/dist/showcase/assets/camera-Cwb84N8a.js +1 -0
  174. package/dist/showcase/assets/card-CX3vQ2Te.js +1 -0
  175. package/dist/showcase/assets/card-FLJkfdKP.js +188 -0
  176. package/dist/showcase/assets/card-primitives-C2s13Uvp.js +1 -0
  177. package/dist/showcase/assets/card-radio-group-BP27dErL.js +1 -0
  178. package/dist/showcase/assets/cards-DcdxRM9W.js +354 -0
  179. package/dist/showcase/assets/carousel-CTKyiHD2.js +449 -0
  180. package/dist/showcase/assets/cell-renderers-ouSypXTE.js +1 -0
  181. package/dist/showcase/assets/chart-CMsMyCah.js +358 -0
  182. package/dist/showcase/assets/chart-column-BrwpEFzy.js +1 -0
  183. package/dist/showcase/assets/checkbox-4qgEfnjv.js +1 -0
  184. package/dist/showcase/assets/checkbox-ratLYBAF.js +1 -0
  185. package/dist/showcase/assets/chevron-down-BInaIfd1.js +1 -0
  186. package/dist/showcase/assets/chevron-left-Bjy3FJ_M.js +1 -0
  187. package/dist/showcase/assets/chevron-up-Ufl6UEyV.js +1 -0
  188. package/dist/showcase/assets/chevrons-up-down-CrOH-P5z.js +1 -0
  189. package/dist/showcase/assets/circle-G0dEx2Ay.js +1 -0
  190. package/dist/showcase/assets/circle-alert-CiibDCe8.js +1 -0
  191. package/dist/showcase/assets/circle-check-Bqm54c03.js +1 -0
  192. package/dist/showcase/assets/circle-check-big-BfiY_qy_.js +1 -0
  193. package/dist/showcase/assets/circle-dot-VNm7CEgH.js +1 -0
  194. package/dist/showcase/assets/circle-question-mark-mM7PKy4G.js +1 -0
  195. package/dist/showcase/assets/circle-x-2tzzp_vB.js +1 -0
  196. package/dist/showcase/assets/clock-3-CfdZnMP2.js +1 -0
  197. package/dist/showcase/assets/clock-ByB7C11p.js +1 -0
  198. package/dist/showcase/assets/code-xml-D2fN-BaU.js +1 -0
  199. package/dist/showcase/assets/collapsible-B2lI_uVI.js +1 -0
  200. package/dist/showcase/assets/collapsible-Bs5YFx-M.js +27 -0
  201. package/dist/showcase/assets/combobox-BqNSwFaM.js +685 -0
  202. package/dist/showcase/assets/command-Dcbh_YP-.js +1 -0
  203. package/dist/showcase/assets/command-Mb30xkwq.js +1 -0
  204. package/dist/showcase/assets/comment-composer-DqTw0zIM.js +1 -0
  205. package/dist/showcase/assets/comment-item-DbQAZ3yP.js +1 -0
  206. package/dist/showcase/assets/comments-CGMOOi7k.js +357 -0
  207. package/dist/showcase/assets/commerce-bVpLHwpS.js +267 -0
  208. package/dist/showcase/assets/composite-CTpmYme_.js +1 -0
  209. package/dist/showcase/assets/contact-card-nuS10UKK.js +65 -0
  210. package/dist/showcase/assets/content-container-NexBp0FV.js +1 -0
  211. package/dist/showcase/assets/copyable-CNltkC2A.js +1 -0
  212. package/dist/showcase/assets/copyable-qr6--oJx.js +96 -0
  213. package/dist/showcase/assets/course-card-0kkl37FX.js +77 -0
  214. package/dist/showcase/assets/cpu-DSD9h0l5.js +1 -0
  215. package/dist/showcase/assets/credit-card-CN0E6FU8.js +1 -0
  216. package/dist/showcase/assets/css-variables-CzmmLWxt.js +1190 -0
  217. package/dist/showcase/assets/currency-BtofP745.js +149 -0
  218. package/dist/showcase/assets/dark-surfaces-BU7kfTIi.js +90 -0
  219. package/dist/showcase/assets/data-view-3W7_KBli.js +124 -0
  220. package/dist/showcase/assets/data-view-snL5QtHe.js +4 -0
  221. package/dist/showcase/assets/database-BarEYzaF.js +1 -0
  222. package/dist/showcase/assets/date-block-dTt9Rcfd.js +1 -0
  223. package/dist/showcase/assets/date-picker-BKzZeQGc.js +1 -0
  224. package/dist/showcase/assets/date-pickers-CYERVYRo.js +73 -0
  225. package/dist/showcase/assets/dense-info-hnKZfRnQ.js +106 -0
  226. package/dist/showcase/assets/design-system-consistency-D6qngflS.js +264 -0
  227. package/dist/showcase/assets/dialog-mO0FpHmT.js +1 -0
  228. package/dist/showcase/assets/dialog-xbuhPXmf.js +1 -0
  229. package/dist/showcase/assets/display-utilities-C4IflxoK.js +267 -0
  230. package/dist/showcase/assets/dist-BFChHTWK.js +45 -0
  231. package/dist/showcase/assets/dist-BkVfs5PY.js +1 -0
  232. package/dist/showcase/assets/dollar-sign-BES-Y4q8.js +1 -0
  233. package/dist/showcase/assets/download-CuEg-4DT.js +1 -0
  234. package/dist/showcase/assets/dropdown-menu-C4Fcfk9z.js +1 -0
  235. package/dist/showcase/assets/dropzone-CrJ_k9fJ.js +1 -0
  236. package/dist/showcase/assets/earth-Cmx-Axig.js +1 -0
  237. package/dist/showcase/assets/ellipsis-Co7iTzp_.js +1 -0
  238. package/dist/showcase/assets/ellipsis-vertical-DMYJFiqQ.js +1 -0
  239. package/dist/showcase/assets/empty-Dw4ozyll.js +1 -0
  240. package/dist/showcase/assets/empty-item-DQwAsl0J.js +49 -0
  241. package/dist/showcase/assets/empty-state-BKvbnAy1.js +1 -0
  242. package/dist/showcase/assets/empty-state-Dv6f2fmP.js +190 -0
  243. package/dist/showcase/assets/enhanced-activities-Ctmivg46.js +357 -0
  244. package/dist/showcase/assets/enhanced-combobox-D0AsPZ-b.js +1 -0
  245. package/dist/showcase/assets/esm-oZ6qcNoa.js +2 -0
  246. package/dist/showcase/assets/event-calendar-ChXdeehr.js +138 -0
  247. package/dist/showcase/assets/event-log-DeOCb2tT.js +330 -0
  248. package/dist/showcase/assets/example-CDvNeHNP.js +1 -0
  249. package/dist/showcase/assets/external-link-BaiCqIx3.js +1 -0
  250. package/dist/showcase/assets/eye-zG-fqYfd.js +1 -0
  251. package/dist/showcase/assets/feature-announcement-C2XGWNgI.js +34 -0
  252. package/dist/showcase/assets/file-sAbDfDuO.js +1 -0
  253. package/dist/showcase/assets/file-text-Boa9IOND.js +1 -0
  254. package/dist/showcase/assets/filter-layout-tZmZz-2B.js +1 -0
  255. package/dist/showcase/assets/filters-D8gEkDAE.js +139 -0
  256. package/dist/showcase/assets/flag-Cu20rcE4.js +1 -0
  257. package/dist/showcase/assets/folder-open-Cuk6KKLi.js +1 -0
  258. package/dist/showcase/assets/form-field-D8sL8tat.js +1 -0
  259. package/dist/showcase/assets/format-CaRklI--.js +1 -0
  260. package/dist/showcase/assets/forms-CNk2oX65.js +915 -0
  261. package/dist/showcase/assets/funnel-B2kBprKZ.js +1 -0
  262. package/dist/showcase/assets/generic-oWYKMvId.js +1 -0
  263. package/dist/showcase/assets/getPseudoElementBounds-GjucWEcD.js +1 -0
  264. package/dist/showcase/assets/gift-C_D_-5GL.js +1 -0
  265. package/dist/showcase/assets/giftcard-cards-B4DDGzdi.js +85 -0
  266. package/dist/showcase/assets/git-branch-DlTTLnjW.js +1 -0
  267. package/dist/showcase/assets/global-search-BjHAfaqS.js +215 -0
  268. package/dist/showcase/assets/global-search-hKQWHfrf.js +1 -0
  269. package/dist/showcase/assets/globe-D-gH7XQ2.js +1 -0
  270. package/dist/showcase/assets/gradient-card-jVxEisUP.js +58 -0
  271. package/dist/showcase/assets/hash-DySqEhph.js +1 -0
  272. package/dist/showcase/assets/header-B8hHkAVl.js +1 -0
  273. package/dist/showcase/assets/header-notifications-s180jNb1.js +1 -0
  274. package/dist/showcase/assets/heart-DDFCk8Tb.js +1 -0
  275. package/dist/showcase/assets/hooks-0A_FzYrt.js +220 -0
  276. package/dist/showcase/assets/house-BqE1X-Wf.js +1 -0
  277. package/dist/showcase/assets/icon-badge-CyiMjD7j.js +37 -0
  278. package/dist/showcase/assets/icon-badge-fJVhEHym.js +1 -0
  279. package/dist/showcase/assets/image-DCtwKHqe.js +1 -0
  280. package/dist/showcase/assets/inbox-DZA-pAGB.js +1 -0
  281. package/dist/showcase/assets/index-B37z19z3.js +10 -0
  282. package/dist/showcase/assets/index-CIsKgiSF.css +2 -0
  283. package/dist/showcase/assets/inertValue-SPYMBsOM.js +1 -0
  284. package/dist/showcase/assets/info-DrfDr3GT.js +1 -0
  285. package/dist/showcase/assets/inline-stat-BVJNx4xR.js +1 -0
  286. package/dist/showcase/assets/inline-stat-C3cWbSUK.js +15 -0
  287. package/dist/showcase/assets/input-CKTTGrnR.js +1 -0
  288. package/dist/showcase/assets/input-UHuWYPMF.js +1 -0
  289. package/dist/showcase/assets/input-group-BR_lU__a.js +1 -0
  290. package/dist/showcase/assets/input-group-iZaLbsTP.js +47 -0
  291. package/dist/showcase/assets/inputs-C7j8Xivm.js +155 -0
  292. package/dist/showcase/assets/installation-DYnTwaPR.js +134 -0
  293. package/dist/showcase/assets/invoice-header-D_0KvXQe.js +36 -0
  294. package/dist/showcase/assets/invoice-items-jcNb-sST.js +36 -0
  295. package/dist/showcase/assets/invoice-mini-DrZAbjPq.js +14 -0
  296. package/dist/showcase/assets/invoice-table-DlAw0U4U.js +30 -0
  297. package/dist/showcase/assets/isSameDay-Cl6v_syG.js +1 -0
  298. package/dist/showcase/assets/isToday-BBoFjSnJ.js +1 -0
  299. package/dist/showcase/assets/italic-j2U8krYa.js +1 -0
  300. package/dist/showcase/assets/item-B2WoC1SD.js +139 -0
  301. package/dist/showcase/assets/item-BMJ5hfT5.js +1 -0
  302. package/dist/showcase/assets/item-C_5-EHNK.js +1 -0
  303. package/dist/showcase/assets/kanban-Cv64Szxq.js +188 -0
  304. package/dist/showcase/assets/key-round-CORDYqE2.js +1 -0
  305. package/dist/showcase/assets/label-B0UjYqfw.js +1 -0
  306. package/dist/showcase/assets/languages-Njdo5y8i.js +1 -0
  307. package/dist/showcase/assets/layers-Dyew-8IP.js +1 -0
  308. package/dist/showcase/assets/layout-app-shell-DEZt0d84.js +608 -0
  309. package/dist/showcase/assets/layout-auth-BT84haSd.js +790 -0
  310. package/dist/showcase/assets/layout-containers-D6SP4vRB.js +101 -0
  311. package/dist/showcase/assets/layout-header-kLYjJnHz.js +203 -0
  312. package/dist/showcase/assets/layout-page-CmS4d8jw.js +314 -0
  313. package/dist/showcase/assets/layout-primitives-BW858Ymj.js +34 -0
  314. package/dist/showcase/assets/layout-sidebar-eIDEoyzV.js +224 -0
  315. package/dist/showcase/assets/layout-users-HyZHQIov.js +117 -0
  316. package/dist/showcase/assets/layout-workspace-BrDwVUvn.js +191 -0
  317. package/dist/showcase/assets/lib-Dhty05ZR.js +1 -0
  318. package/dist/showcase/assets/list-checks-CcWjdDq8.js +1 -0
  319. package/dist/showcase/assets/lock-CwH3bXx5.js +1 -0
  320. package/dist/showcase/assets/lock-keyhole-BdBxeIkW.js +1 -0
  321. package/dist/showcase/assets/mail-Cn94c8yp.js +1 -0
  322. package/dist/showcase/assets/mail-check-D-q_vPxD.js +1 -0
  323. package/dist/showcase/assets/map-BfUZMScw.js +124 -0
  324. package/dist/showcase/assets/map-pin-BZB9GUXP.js +1 -0
  325. package/dist/showcase/assets/media-library-DguE2q94.js +699 -0
  326. package/dist/showcase/assets/mention-inline-suggestions-CyGplHOl.js +1 -0
  327. package/dist/showcase/assets/mentions-lmr_XmfN.js +138 -0
  328. package/dist/showcase/assets/menus-D0qYbzKk.js +171 -0
  329. package/dist/showcase/assets/message-square-7VpiUwcS.js +1 -0
  330. package/dist/showcase/assets/metadata-list-B8O2ljIS.js +1 -0
  331. package/dist/showcase/assets/metadata-list-BcYg9Ru3.js +286 -0
  332. package/dist/showcase/assets/metric-HzQnjCpO.js +1 -0
  333. package/dist/showcase/assets/metric-bar-Fr1TDnSu.js +1 -0
  334. package/dist/showcase/assets/metric-grid-CM-P894v.js +1 -0
  335. package/dist/showcase/assets/metric-trend-chip-DqYH_U8e.js +1 -0
  336. package/dist/showcase/assets/metrics-analytics-bar-DKRLzyXq.js +44 -0
  337. package/dist/showcase/assets/metrics-analytics-cards-qMbAYBbk.js +50 -0
  338. package/dist/showcase/assets/metrics-comparison-GSWVebL_.js +76 -0
  339. package/dist/showcase/assets/metrics-heatmap-Fj5QZoO3.js +27 -0
  340. package/dist/showcase/assets/metrics-inline-badge-BuyhiYDl.js +17 -0
  341. package/dist/showcase/assets/metrics-kpi-row-xNn4bjZc.js +31 -0
  342. package/dist/showcase/assets/metrics-micro-grid-W_ZYCffp.js +42 -0
  343. package/dist/showcase/assets/metrics-overview-D-km110k.js +192 -0
  344. package/dist/showcase/assets/metrics-stat-cards-odVtufFY.js +54 -0
  345. package/dist/showcase/assets/minus-DZsXg5PW.js +1 -0
  346. package/dist/showcase/assets/money-display-C7Hp2pT3.js +1 -0
  347. package/dist/showcase/assets/month-year-picker-Dnr4J0mO.js +1 -0
  348. package/dist/showcase/assets/navigation-0nrtBP5O.js +90 -0
  349. package/dist/showcase/assets/navigation-BaWNq9oa.js +231 -0
  350. package/dist/showcase/assets/navigation-extras-B22W1Vkk.js +43 -0
  351. package/dist/showcase/assets/onboarding-checklist-BFj7rmdZ.js +119 -0
  352. package/dist/showcase/assets/overflow-tab-bar-D_rltswa.js +1 -0
  353. package/dist/showcase/assets/overlays-CNfiB-zF.js +408 -0
  354. package/dist/showcase/assets/overlays-CuxuFGC8.js +159 -0
  355. package/dist/showcase/assets/overview-CBmdAWO6.js +184 -0
  356. package/dist/showcase/assets/package-BwwfLMWb.js +1 -0
  357. package/dist/showcase/assets/package-check-BepTKJLy.js +1 -0
  358. package/dist/showcase/assets/page-_JDFUWqe.js +1 -0
  359. package/dist/showcase/assets/page-action-button-Cf34I-B2.js +1 -0
  360. package/dist/showcase/assets/page-header-pdHFvyTo.js +1 -0
  361. package/dist/showcase/assets/pagination-Db1WJvjK.js +42 -0
  362. package/dist/showcase/assets/pagination-s8_MGk9D.js +1 -0
  363. package/dist/showcase/assets/paperclip-B9HQ47_2.js +1 -0
  364. package/dist/showcase/assets/password-input-D-eZWMGX.js +1 -0
  365. package/dist/showcase/assets/pencil-Dm53P6Db.js +1 -0
  366. package/dist/showcase/assets/phone-a4Ja9xAp.js +1 -0
  367. package/dist/showcase/assets/plus-DbOlx2x0.js +1 -0
  368. package/dist/showcase/assets/popover-B8qrRgt3.js +1 -0
  369. package/dist/showcase/assets/popover-Bm5wETUP.js +1 -0
  370. package/dist/showcase/assets/popover-menu-EH4P-BuI.js +1 -0
  371. package/dist/showcase/assets/products-n6VBSMDh.js +423 -0
  372. package/dist/showcase/assets/progress-D9r6PSCF.js +1 -0
  373. package/dist/showcase/assets/progress-DVnMcpeq.js +18 -0
  374. package/dist/showcase/assets/props-table-udnF7Z46.js +1 -0
  375. package/dist/showcase/assets/quote-qVQF4JC7.js +1 -0
  376. package/dist/showcase/assets/receipt-DaC4l-Mr.js +1 -0
  377. package/dist/showcase/assets/receipt-text-BnwhWHdU.js +1 -0
  378. package/dist/showcase/assets/refinement-guide-zBbAE-vw.js +189 -0
  379. package/dist/showcase/assets/refresh-cw-CX6ghqEe.js +1 -0
  380. package/dist/showcase/assets/resolveValueLabel-Cjbd_80A.js +1 -0
  381. package/dist/showcase/assets/resource-D1fXD_Pt.js +139 -0
  382. package/dist/showcase/assets/resource-i2YV9aHL.js +1 -0
  383. package/dist/showcase/assets/resource-selector-card-CdQEPr9U.js +43 -0
  384. package/dist/showcase/assets/rich-text-editor-DJ2i03XV.js +143 -0
  385. package/dist/showcase/assets/rich-text-editor-Wh8r117d.js +124 -0
  386. package/dist/showcase/assets/rotate-ccw-2_FhUcdG.js +1 -0
  387. package/dist/showcase/assets/route-EGSdKgEp.js +1 -0
  388. package/dist/showcase/assets/save-nXKvyYEx.js +1 -0
  389. package/dist/showcase/assets/schema-form-D_9UkVBe.js +327 -0
  390. package/dist/showcase/assets/scroll-area-CB7X4JqZ.js +1 -0
  391. package/dist/showcase/assets/scroll-area-DCHN9iYj.js +32 -0
  392. package/dist/showcase/assets/section-C2ovQgbv.js +1 -0
  393. package/dist/showcase/assets/select-BTOraQSw.js +1 -0
  394. package/dist/showcase/assets/select-CE0BbUs7.js +1 -0
  395. package/dist/showcase/assets/send-CI0r12bX.js +1 -0
  396. package/dist/showcase/assets/separator-CmGfh7lI.js +1 -0
  397. package/dist/showcase/assets/separator-PhQTNRIB.js +28 -0
  398. package/dist/showcase/assets/settings-2-qkVb0lyz.js +1 -0
  399. package/dist/showcase/assets/settings-YXjlZ9zs.js +1 -0
  400. package/dist/showcase/assets/sheet-CFDUB2H1.js +1 -0
  401. package/dist/showcase/assets/shield-Dr_UeG6H.js +1 -0
  402. package/dist/showcase/assets/shield-alert-7rAVXg-K.js +1 -0
  403. package/dist/showcase/assets/shield-check-BbzHL-nM.js +1 -0
  404. package/dist/showcase/assets/shopping-bag-DeprN0fB.js +1 -0
  405. package/dist/showcase/assets/showcase-BU6Fvpg_.js +132 -0
  406. package/dist/showcase/assets/sidebar-CudnhnWN.js +1 -0
  407. package/dist/showcase/assets/sidebar.context-CZaDhRhh.js +1 -0
  408. package/dist/showcase/assets/skeleton-DD6VPVrv.js +1 -0
  409. package/dist/showcase/assets/skeleton-Dc5LvW7E.js +29 -0
  410. package/dist/showcase/assets/slider-BxvP9nxk.js +1 -0
  411. package/dist/showcase/assets/smart-card-B0Llbpiy.js +1 -0
  412. package/dist/showcase/assets/sonner-mszFoDWT.js +22 -0
  413. package/dist/showcase/assets/sortable.esm-J5bJPtH9.js +5 -0
  414. package/dist/showcase/assets/sparkles-CQSdl3Gw.js +1 -0
  415. package/dist/showcase/assets/spinner-BSxBn2qs.js +49 -0
  416. package/dist/showcase/assets/spinner-DJxoGJtq.js +30 -0
  417. package/dist/showcase/assets/spinner-DihTCcve.js +1 -0
  418. package/dist/showcase/assets/square-pen-CGMSA_p6.js +1 -0
  419. package/dist/showcase/assets/stacked-avatars-Ct8B4doW.js +1 -0
  420. package/dist/showcase/assets/star-DFlmmJdh.js +1 -0
  421. package/dist/showcase/assets/startOfDay-BedffeNt.js +1 -0
  422. package/dist/showcase/assets/styles-jR6uS97D.js +1 -0
  423. package/dist/showcase/assets/suggestions-DnjJ-U9n.js +126 -0
  424. package/dist/showcase/assets/switch-Dkojf4Yd.js +1 -0
  425. package/dist/showcase/assets/switch-bTb6CSLr.js +1 -0
  426. package/dist/showcase/assets/sync-rk8eFwoJ.js +124 -0
  427. package/dist/showcase/assets/table-4qIerTVI.js +686 -0
  428. package/dist/showcase/assets/table-BjMmmYd7.js +1 -0
  429. package/dist/showcase/assets/table-actions-DqofOI1V.js +1 -0
  430. package/dist/showcase/assets/tabs-BV6mMsfk.js +19 -0
  431. package/dist/showcase/assets/tabs-u2fkHRw8.js +1 -0
  432. package/dist/showcase/assets/tags-input-Cu_UwlwT.js +1 -0
  433. package/dist/showcase/assets/text-button-Fyy21evq.js +1 -0
  434. package/dist/showcase/assets/text-link-WRyY3ZZo.js +1 -0
  435. package/dist/showcase/assets/textarea-BbCxWNzV.js +1 -0
  436. package/dist/showcase/assets/textarea-CtD7JQsv.js +1 -0
  437. package/dist/showcase/assets/timelines-BBPQpCFX.js +200 -0
  438. package/dist/showcase/assets/toggle-group-B8mQ6wer.js +1 -0
  439. package/dist/showcase/assets/toggles-CCClWVXZ.js +71 -0
  440. package/dist/showcase/assets/toggles-group-DgCilPMo.js +32 -0
  441. package/dist/showcase/assets/tooltip-ClJCWWTI.js +31 -0
  442. package/dist/showcase/assets/trash-2-Cs7y4-K-.js +1 -0
  443. package/dist/showcase/assets/trending-up-spYhMxs6.js +1 -0
  444. package/dist/showcase/assets/truck-DENWgqxK.js +1 -0
  445. package/dist/showcase/assets/typography-DMmYNFQj.js +223 -0
  446. package/dist/showcase/assets/ui-badge-BJEtsa7X.js +28 -0
  447. package/dist/showcase/assets/ui-card-CrPKoi3P.js +30 -0
  448. package/dist/showcase/assets/ui-table-2HhDwPcu.js +42 -0
  449. package/dist/showcase/assets/upload-tray-CUZAErkI.js +138 -0
  450. package/dist/showcase/assets/use-layout-link-Co3GiFmb.js +1 -0
  451. package/dist/showcase/assets/useAnchoredPopupScrollLock-DgIA0IXg.js +1 -0
  452. package/dist/showcase/assets/useAriaLabelledBy-CDdoyQgg.js +1 -0
  453. package/dist/showcase/assets/useCollapsiblePanel-BT0RSjGM.js +1 -0
  454. package/dist/showcase/assets/useCompositeItem-DFghnuRZ.js +1 -0
  455. package/dist/showcase/assets/useCompositeListItem-vXyRoJ2x.js +1 -0
  456. package/dist/showcase/assets/useLabelableId-D__l5sQX.js +1 -0
  457. package/dist/showcase/assets/useOpenInteractionType-bZIaLWfE.js +1 -0
  458. package/dist/showcase/assets/useRender-BV0akLbc.js +1 -0
  459. package/dist/showcase/assets/useTriggerFocusGuards-dYriJrQP.js +1 -0
  460. package/dist/showcase/assets/useValueChanged-Dg0AWST0.js +1 -0
  461. package/dist/showcase/assets/user-B9eCi5Vl.js +1 -0
  462. package/dist/showcase/assets/user-plus-Uo4IAY7e.js +1 -0
  463. package/dist/showcase/assets/users-DLep-WjV.js +1 -0
  464. package/dist/showcase/assets/vendor-profile-BbcE51Pa.js +37 -0
  465. package/dist/showcase/assets/video-BasdlaQE.js +1 -0
  466. package/dist/showcase/assets/wrench-BYUVe1-z.js +1 -0
  467. package/dist/showcase/assets/x-Bx9ayVXr.js +1 -0
  468. package/dist/showcase/assets/zap-Mgu5HEtF.js +1 -0
  469. package/dist/showcase/index.html +2 -2
  470. package/dist/style.css +1 -1
  471. package/package.json +1 -1
  472. package/dist/_shared/auth-DdezEtKK.cjs +0 -2
  473. package/dist/_shared/auth-DdezEtKK.cjs.map +0 -1
  474. package/dist/_shared/auth-e7yab9pK.js +0 -643
  475. package/dist/_shared/auth-e7yab9pK.js.map +0 -1
  476. package/dist/_shared/cards-CbbHly7W.cjs +0 -2
  477. package/dist/_shared/cards-CbbHly7W.cjs.map +0 -1
  478. package/dist/_shared/cards-RZxRLx3f.js +0 -355
  479. package/dist/_shared/cards-RZxRLx3f.js.map +0 -1
  480. package/dist/_shared/comments-BJqgvSFY.js +0 -952
  481. package/dist/_shared/comments-BJqgvSFY.js.map +0 -1
  482. package/dist/_shared/comments-BjPciQfo.cjs +0 -2
  483. package/dist/_shared/comments-BjPciQfo.cjs.map +0 -1
  484. package/dist/_shared/containers-D7oZE4XI.cjs +0 -2
  485. package/dist/_shared/containers-D7oZE4XI.cjs.map +0 -1
  486. package/dist/_shared/containers-anBivbL9.js +0 -19
  487. package/dist/_shared/containers-anBivbL9.js.map +0 -1
  488. package/dist/_shared/content-container-CVUJCLhn.cjs +0 -2
  489. package/dist/_shared/content-container-CVUJCLhn.cjs.map +0 -1
  490. package/dist/_shared/content-container-Dv8XsAw4.js +0 -33
  491. package/dist/_shared/content-container-Dv8XsAw4.js.map +0 -1
  492. package/dist/_shared/data-display-C21skrV4.cjs +0 -2
  493. package/dist/_shared/data-display-C21skrV4.cjs.map +0 -1
  494. package/dist/_shared/data-display-C5-1dZua.js +0 -1873
  495. package/dist/_shared/data-display-C5-1dZua.js.map +0 -1
  496. package/dist/_shared/forms-BoquZE2Y.js +0 -3533
  497. package/dist/_shared/forms-BoquZE2Y.js.map +0 -1
  498. package/dist/_shared/forms-CzrEYejY.cjs +0 -2
  499. package/dist/_shared/forms-CzrEYejY.cjs.map +0 -1
  500. package/dist/_shared/header-CxhEtk9M.cjs +0 -2
  501. package/dist/_shared/header-CxhEtk9M.cjs.map +0 -1
  502. package/dist/_shared/header-h3f14vQx.js +0 -447
  503. package/dist/_shared/header-h3f14vQx.js.map +0 -1
  504. package/dist/_shared/hooks-CS55-w3h.js +0 -95
  505. package/dist/_shared/hooks-CS55-w3h.js.map +0 -1
  506. package/dist/_shared/hooks-sfHAyDgD.cjs +0 -2
  507. package/dist/_shared/hooks-sfHAyDgD.cjs.map +0 -1
  508. package/dist/_shared/layout.types-CYuDZ_4h.cjs +0 -2
  509. package/dist/_shared/layout.types-CYuDZ_4h.cjs.map +0 -1
  510. package/dist/_shared/layout.types-j7zZAPtg.js +0 -28
  511. package/dist/_shared/layout.types-j7zZAPtg.js.map +0 -1
  512. package/dist/_shared/page-D8UMXREv.cjs +0 -2
  513. package/dist/_shared/page-D8UMXREv.cjs.map +0 -1
  514. package/dist/_shared/page-D9LNsHMN.js +0 -262
  515. package/dist/_shared/page-D9LNsHMN.js.map +0 -1
  516. package/dist/_shared/settings-BeZOIEJB.js +0 -143
  517. package/dist/_shared/settings-BeZOIEJB.js.map +0 -1
  518. package/dist/_shared/settings-DI-K34bW.cjs +0 -2
  519. package/dist/_shared/settings-DI-K34bW.cjs.map +0 -1
  520. package/dist/_shared/sidebar-DfToCaiC.cjs +0 -2
  521. package/dist/_shared/sidebar-DfToCaiC.cjs.map +0 -1
  522. package/dist/_shared/sidebar-DhpRdTZH.js +0 -541
  523. package/dist/_shared/sidebar-DhpRdTZH.js.map +0 -1
  524. package/dist/_shared/workspace-BgtWS9fA.cjs +0 -2
  525. package/dist/_shared/workspace-BgtWS9fA.cjs.map +0 -1
  526. package/dist/_shared/workspace-D2jJ0PlS.js +0 -357
  527. package/dist/_shared/workspace-D2jJ0PlS.js.map +0 -1
  528. package/dist/showcase/assets/AreaChart-Y0ZwblHU.js +0 -6
  529. package/dist/showcase/assets/CompositeItem-BIY_Cp7P.js +0 -1
  530. package/dist/showcase/assets/CompositeRoot-DSPvBRQr.js +0 -1
  531. package/dist/showcase/assets/DialogTrigger-DHUp8vXe.js +0 -1
  532. package/dist/showcase/assets/LabelableContext-CasUI4hR.js +0 -1
  533. package/dist/showcase/assets/PreviewLayout-B_l930k0.js +0 -1
  534. package/dist/showcase/assets/RadioGroup-BgZ-UH79.js +0 -1
  535. package/dist/showcase/assets/ScrollAreaCorner-BbwFElLA.js +0 -1
  536. package/dist/showcase/assets/Separator-dQuencsA.js +0 -1
  537. package/dist/showcase/assets/ToolbarRootContext-BE0hbejq.js +0 -1
  538. package/dist/showcase/assets/accordion-D93ZNsLn.js +0 -171
  539. package/dist/showcase/assets/accordion-variants-Bl4bIQH4.js +0 -1
  540. package/dist/showcase/assets/action-menu--rEgMzDi.js +0 -1
  541. package/dist/showcase/assets/actions-3iedOWD9.js +0 -310
  542. package/dist/showcase/assets/activities-CyrAWFlu.js +0 -500
  543. package/dist/showcase/assets/activities-feed-card-bhIATc2O.js +0 -1
  544. package/dist/showcase/assets/admin-CZzNsj2q.js +0 -140
  545. package/dist/showcase/assets/ai-CasHwkW4.js +0 -207
  546. package/dist/showcase/assets/ai-artifact-BgWvrLAb.js +0 -2
  547. package/dist/showcase/assets/ai-chat-seS9aW-1.js +0 -568
  548. package/dist/showcase/assets/ai-elements-Tku5_ous.js +0 -387
  549. package/dist/showcase/assets/ai-tool-call-BU6xbmXG.js +0 -1
  550. package/dist/showcase/assets/alert-6Emt6KX2.js +0 -1
  551. package/dist/showcase/assets/alert-B6aLWiRW.js +0 -62
  552. package/dist/showcase/assets/alert-CtoTQ0vN.js +0 -93
  553. package/dist/showcase/assets/api-key-list-C0glWR3z.js +0 -1
  554. package/dist/showcase/assets/api-key-list-DcWSbY3u.js +0 -73
  555. package/dist/showcase/assets/app-sidebar-D_eNP_jh.js +0 -1
  556. package/dist/showcase/assets/arrow-down-qyKZ1H5j.js +0 -1
  557. package/dist/showcase/assets/arrow-left-C9I0h_su.js +0 -1
  558. package/dist/showcase/assets/arrow-right-DswaRsr6.js +0 -1
  559. package/dist/showcase/assets/arrow-up-5BijPOxK.js +0 -1
  560. package/dist/showcase/assets/arrow-up-right-CbVVNT6g.js +0 -1
  561. package/dist/showcase/assets/avatar-BYHVCvVW.js +0 -67
  562. package/dist/showcase/assets/avatar-BlLAVC87.js +0 -1
  563. package/dist/showcase/assets/avatar-DQTXjcS4.js +0 -1
  564. package/dist/showcase/assets/avatar-DveZy09C.js +0 -57
  565. package/dist/showcase/assets/badge-Bth3mRTh.js +0 -31
  566. package/dist/showcase/assets/badge-check-DocF8Ho3.js +0 -1
  567. package/dist/showcase/assets/bell-DXBoeAzi.js +0 -1
  568. package/dist/showcase/assets/bot-Ch-Y1HK8.js +0 -1
  569. package/dist/showcase/assets/box-72m9QSDa.js +0 -1
  570. package/dist/showcase/assets/braces-CC17X3TE.js +0 -1
  571. package/dist/showcase/assets/brain-Dvbla_5x.js +0 -1
  572. package/dist/showcase/assets/brand-D5ciAq8v.js +0 -36
  573. package/dist/showcase/assets/breadcrumb-BBCaOVyz.js +0 -52
  574. package/dist/showcase/assets/breadcrumb-Bt8yVTCj.js +0 -1
  575. package/dist/showcase/assets/breadcrumbs-CkVWfcAN.js +0 -1
  576. package/dist/showcase/assets/briefcase-8rQTJwpE.js +0 -1
  577. package/dist/showcase/assets/building-2-CV7gTtXz.js +0 -1
  578. package/dist/showcase/assets/button-HGjoBio3.js +0 -44
  579. package/dist/showcase/assets/button-group-LWToSCrp.js +0 -1
  580. package/dist/showcase/assets/buttons-Bn_dX6Kk.js +0 -272
  581. package/dist/showcase/assets/calendar-BTsffmY8.js +0 -1
  582. package/dist/showcase/assets/calendar-Bhpyn4u0.js +0 -1
  583. package/dist/showcase/assets/calendar-DjrUTKcD.js +0 -16
  584. package/dist/showcase/assets/calendar-days-BKCkzWjV.js +0 -1
  585. package/dist/showcase/assets/camera-EjpDG3mc.js +0 -1
  586. package/dist/showcase/assets/card-Bp6iGuOF.js +0 -188
  587. package/dist/showcase/assets/card-CHc6AVFt.js +0 -1
  588. package/dist/showcase/assets/card-primitives-Bv6XGPJd.js +0 -1
  589. package/dist/showcase/assets/card-radio-group-Ce9FsiSv.js +0 -1
  590. package/dist/showcase/assets/cards-_CGG9zir.js +0 -354
  591. package/dist/showcase/assets/carousel-BVbsKH2W.js +0 -449
  592. package/dist/showcase/assets/cell-renderers-CosD6Gby.js +0 -1
  593. package/dist/showcase/assets/chart-CwOp8Sf8.js +0 -358
  594. package/dist/showcase/assets/chart-column-sz871NdJ.js +0 -1
  595. package/dist/showcase/assets/checkbox-BO38TYqr.js +0 -1
  596. package/dist/showcase/assets/checkbox-W4MhlPlJ.js +0 -1
  597. package/dist/showcase/assets/chevron-down-BFh1Fz2P.js +0 -1
  598. package/dist/showcase/assets/chevron-left-C5_X5glO.js +0 -1
  599. package/dist/showcase/assets/chevron-up-DPH3boVS.js +0 -1
  600. package/dist/showcase/assets/chevrons-up-down-CM5mIDaw.js +0 -1
  601. package/dist/showcase/assets/circle-BFDzL1iF.js +0 -1
  602. package/dist/showcase/assets/circle-alert-C6MbOB0m.js +0 -1
  603. package/dist/showcase/assets/circle-check-C0X85t4j.js +0 -1
  604. package/dist/showcase/assets/circle-check-big-CBaodck_.js +0 -1
  605. package/dist/showcase/assets/circle-dot-DdRpIhnL.js +0 -1
  606. package/dist/showcase/assets/circle-question-mark-CKlcead7.js +0 -1
  607. package/dist/showcase/assets/circle-x-MO44aKHe.js +0 -1
  608. package/dist/showcase/assets/clock-3-CXQJFcbh.js +0 -1
  609. package/dist/showcase/assets/clock-GhBJJ6n1.js +0 -1
  610. package/dist/showcase/assets/code-xml-BSX7Qyi5.js +0 -1
  611. package/dist/showcase/assets/collapsible-CZLTO5EH.js +0 -1
  612. package/dist/showcase/assets/collapsible-LrDO_sSQ.js +0 -27
  613. package/dist/showcase/assets/combobox-TmDBXkM-.js +0 -685
  614. package/dist/showcase/assets/command-9-r1qrJt.js +0 -1
  615. package/dist/showcase/assets/command-DGne3l9s.js +0 -1
  616. package/dist/showcase/assets/comment-composer-BI0qnvuY.js +0 -1
  617. package/dist/showcase/assets/comment-item-Cedds6Lm.js +0 -1
  618. package/dist/showcase/assets/comments-De02NOns.js +0 -357
  619. package/dist/showcase/assets/commerce-DldtS83o.js +0 -267
  620. package/dist/showcase/assets/composite-BjZZlzzb.js +0 -1
  621. package/dist/showcase/assets/contact-card-muCZ3uXV.js +0 -65
  622. package/dist/showcase/assets/content-container-BxSLICeL.js +0 -1
  623. package/dist/showcase/assets/copyable-DYhhmTqM.js +0 -1
  624. package/dist/showcase/assets/copyable-MNU75-J9.js +0 -96
  625. package/dist/showcase/assets/course-card-Dl1wsuJx.js +0 -77
  626. package/dist/showcase/assets/cpu-CsWq4fcX.js +0 -1
  627. package/dist/showcase/assets/credit-card-B0AUZiWw.js +0 -1
  628. package/dist/showcase/assets/css-variables-Be7DzahT.js +0 -1190
  629. package/dist/showcase/assets/currency-BtPM_Xtw.js +0 -149
  630. package/dist/showcase/assets/dark-surfaces-DRFERSEv.js +0 -90
  631. package/dist/showcase/assets/data-view-DmWd0h7G.js +0 -4
  632. package/dist/showcase/assets/data-view-DnLH2o0i.js +0 -124
  633. package/dist/showcase/assets/database-C0YqGaQ_.js +0 -1
  634. package/dist/showcase/assets/date-block-BQH25FLS.js +0 -1
  635. package/dist/showcase/assets/date-picker-BF-jevhh.js +0 -1
  636. package/dist/showcase/assets/date-pickers-q2v3ajJm.js +0 -73
  637. package/dist/showcase/assets/dense-info-Cb-roqDU.js +0 -106
  638. package/dist/showcase/assets/design-system-consistency-DMSJknaM.js +0 -264
  639. package/dist/showcase/assets/dialog-C0ALRmbP.js +0 -1
  640. package/dist/showcase/assets/dialog-CbXon08k.js +0 -1
  641. package/dist/showcase/assets/display-utilities-kBUVw7o3.js +0 -267
  642. package/dist/showcase/assets/dist-CTSkWj_M.js +0 -45
  643. package/dist/showcase/assets/dist-W8bxVfew.js +0 -1
  644. package/dist/showcase/assets/dollar-sign-VNxVZleW.js +0 -1
  645. package/dist/showcase/assets/download-Ds_6eIpx.js +0 -1
  646. package/dist/showcase/assets/dropdown-menu-C1G_y9dv.js +0 -1
  647. package/dist/showcase/assets/dropzone-CxOLmdkt.js +0 -1
  648. package/dist/showcase/assets/earth-HLyEI1oq.js +0 -1
  649. package/dist/showcase/assets/ellipsis-BLyAd9A-.js +0 -1
  650. package/dist/showcase/assets/ellipsis-vertical-TG4mYU2J.js +0 -1
  651. package/dist/showcase/assets/empty-B54k9xAG.js +0 -1
  652. package/dist/showcase/assets/empty-item-BmA4rmq7.js +0 -49
  653. package/dist/showcase/assets/empty-state-CH7gjjg7.js +0 -190
  654. package/dist/showcase/assets/empty-state-hUKvmKa-.js +0 -1
  655. package/dist/showcase/assets/enhanced-activities-BRDVL9RR.js +0 -357
  656. package/dist/showcase/assets/enhanced-combobox-2wbQJS6R.js +0 -1
  657. package/dist/showcase/assets/esm-CUTefMLr.js +0 -2
  658. package/dist/showcase/assets/event-calendar-Bf9xFZlt.js +0 -138
  659. package/dist/showcase/assets/event-log-CeRDSL-h.js +0 -330
  660. package/dist/showcase/assets/example-CJMJcnb4.js +0 -1
  661. package/dist/showcase/assets/external-link-CvXhYrnd.js +0 -1
  662. package/dist/showcase/assets/eye-Cl_GfUKH.js +0 -1
  663. package/dist/showcase/assets/feature-announcement-Dw0SokLo.js +0 -34
  664. package/dist/showcase/assets/file-CJFWrwy1.js +0 -1
  665. package/dist/showcase/assets/file-text-BTTFP8Jo.js +0 -1
  666. package/dist/showcase/assets/filter-layout-DUVqG5Ql.js +0 -1
  667. package/dist/showcase/assets/filters-BLcCaplV.js +0 -139
  668. package/dist/showcase/assets/flag-BxI3EGPG.js +0 -1
  669. package/dist/showcase/assets/folder-open-4d8qsiAj.js +0 -1
  670. package/dist/showcase/assets/form-field-Dhy0eM5B.js +0 -1
  671. package/dist/showcase/assets/format-zGqa9Olc.js +0 -1
  672. package/dist/showcase/assets/forms-D99qG5Gb.js +0 -915
  673. package/dist/showcase/assets/funnel-Cg7SOShf.js +0 -1
  674. package/dist/showcase/assets/generic-CfrG943t.js +0 -1
  675. package/dist/showcase/assets/getPseudoElementBounds-lw5shsdM.js +0 -1
  676. package/dist/showcase/assets/gift-BXtKbzvA.js +0 -1
  677. package/dist/showcase/assets/giftcard-cards-CqYaN0jC.js +0 -85
  678. package/dist/showcase/assets/git-branch-BWAuIMOQ.js +0 -1
  679. package/dist/showcase/assets/global-search-CHUva8pR.js +0 -1
  680. package/dist/showcase/assets/global-search-Df7JovOG.js +0 -215
  681. package/dist/showcase/assets/globe-CvIW_foU.js +0 -1
  682. package/dist/showcase/assets/gradient-card-CdM2J1Hv.js +0 -58
  683. package/dist/showcase/assets/hash-wBs5gyr_.js +0 -1
  684. package/dist/showcase/assets/header-DXPFmpUT.js +0 -1
  685. package/dist/showcase/assets/header-notifications-FsnCJLpe.js +0 -1
  686. package/dist/showcase/assets/heart-B4fOMIr6.js +0 -1
  687. package/dist/showcase/assets/hooks-DtMOMalj.js +0 -220
  688. package/dist/showcase/assets/house-hebmAxEE.js +0 -1
  689. package/dist/showcase/assets/icon-badge-DrZ5qGpa.js +0 -1
  690. package/dist/showcase/assets/icon-badge-JEug_P_U.js +0 -37
  691. package/dist/showcase/assets/image-CxNywgkb.js +0 -1
  692. package/dist/showcase/assets/inbox-DqAmGdDd.js +0 -1
  693. package/dist/showcase/assets/index-DujM0kEF.css +0 -2
  694. package/dist/showcase/assets/index-jD-KSiHu.js +0 -10
  695. package/dist/showcase/assets/inertValue-Dg9TwvOb.js +0 -1
  696. package/dist/showcase/assets/info-B5fZn_ZC.js +0 -1
  697. package/dist/showcase/assets/inline-stat-CklKufoA.js +0 -1
  698. package/dist/showcase/assets/inline-stat-Dep7oHIi.js +0 -15
  699. package/dist/showcase/assets/input-CkNgwwCs.js +0 -1
  700. package/dist/showcase/assets/input-DAPMRlKO.js +0 -1
  701. package/dist/showcase/assets/input-group-06D68uB6.js +0 -47
  702. package/dist/showcase/assets/input-group-Bq9aXQPG.js +0 -1
  703. package/dist/showcase/assets/inputs-C8G3y-zR.js +0 -155
  704. package/dist/showcase/assets/installation-BV5xOvoE.js +0 -134
  705. package/dist/showcase/assets/invoice-header-BcUxzT68.js +0 -36
  706. package/dist/showcase/assets/invoice-items-B42Jfxl7.js +0 -36
  707. package/dist/showcase/assets/invoice-mini-RJGdlErg.js +0 -14
  708. package/dist/showcase/assets/invoice-table--MdP6ysv.js +0 -30
  709. package/dist/showcase/assets/isSameDay-srttAIjD.js +0 -1
  710. package/dist/showcase/assets/isToday-BPub5Zvi.js +0 -1
  711. package/dist/showcase/assets/italic-1BNA_XlU.js +0 -1
  712. package/dist/showcase/assets/item-B9KyqUGa.js +0 -139
  713. package/dist/showcase/assets/item-DoIlPm6J.js +0 -1
  714. package/dist/showcase/assets/item-ffIfXEGd.js +0 -1
  715. package/dist/showcase/assets/kanban-Cfad3edR.js +0 -188
  716. package/dist/showcase/assets/key-round-J11Zc216.js +0 -1
  717. package/dist/showcase/assets/label-DqaB8ZB2.js +0 -1
  718. package/dist/showcase/assets/languages-D9UaP3QU.js +0 -1
  719. package/dist/showcase/assets/layers-QXZ9Jfej.js +0 -1
  720. package/dist/showcase/assets/layout-app-shell-CW1eRJmU.js +0 -608
  721. package/dist/showcase/assets/layout-auth-j4K6lveg.js +0 -790
  722. package/dist/showcase/assets/layout-containers-NclLtsV0.js +0 -101
  723. package/dist/showcase/assets/layout-header-B8AOTiwL.js +0 -203
  724. package/dist/showcase/assets/layout-page-DM79QHyW.js +0 -314
  725. package/dist/showcase/assets/layout-primitives-Dyop-WMt.js +0 -34
  726. package/dist/showcase/assets/layout-sidebar-uBNaHqjD.js +0 -224
  727. package/dist/showcase/assets/layout-users-BkhDiOOz.js +0 -117
  728. package/dist/showcase/assets/layout-workspace-C2hSimZW.js +0 -191
  729. package/dist/showcase/assets/lib-CDssULuD.js +0 -1
  730. package/dist/showcase/assets/list-checks-DA2jqXdm.js +0 -1
  731. package/dist/showcase/assets/lock-BDZLNQLR.js +0 -1
  732. package/dist/showcase/assets/lock-keyhole-CWYENd9O.js +0 -1
  733. package/dist/showcase/assets/mail-CCdaRmft.js +0 -1
  734. package/dist/showcase/assets/mail-check-DZF1VbCX.js +0 -1
  735. package/dist/showcase/assets/map-CDFEmmZH.js +0 -124
  736. package/dist/showcase/assets/map-pin-CdV-R6nt.js +0 -1
  737. package/dist/showcase/assets/media-library-BJyn1s9d.js +0 -699
  738. package/dist/showcase/assets/mention-inline-suggestions-DPO6FhXx.js +0 -1
  739. package/dist/showcase/assets/mentions-DtWHbcS6.js +0 -138
  740. package/dist/showcase/assets/menus-BmjngFE4.js +0 -171
  741. package/dist/showcase/assets/message-square-bM29txT3.js +0 -1
  742. package/dist/showcase/assets/metadata-list-DvYTAJri.js +0 -286
  743. package/dist/showcase/assets/metadata-list-xVUTVyy9.js +0 -1
  744. package/dist/showcase/assets/metric-BPNCh4eA.js +0 -1
  745. package/dist/showcase/assets/metric-bar-BX4sCMrM.js +0 -1
  746. package/dist/showcase/assets/metric-grid-IyHP3nmU.js +0 -1
  747. package/dist/showcase/assets/metric-trend-chip-Dih8eR17.js +0 -1
  748. package/dist/showcase/assets/metrics-analytics-bar-DK16RNMs.js +0 -44
  749. package/dist/showcase/assets/metrics-analytics-cards-Byyl13YT.js +0 -50
  750. package/dist/showcase/assets/metrics-comparison-DGHFMBL-.js +0 -76
  751. package/dist/showcase/assets/metrics-heatmap-Bl6C7i0j.js +0 -27
  752. package/dist/showcase/assets/metrics-inline-badge-Bz79zbNK.js +0 -17
  753. package/dist/showcase/assets/metrics-kpi-row-DzZ9dRFY.js +0 -31
  754. package/dist/showcase/assets/metrics-micro-grid-DyoQiuzr.js +0 -42
  755. package/dist/showcase/assets/metrics-overview-DoyHPEZw.js +0 -192
  756. package/dist/showcase/assets/metrics-stat-cards-B1b7NFqW.js +0 -54
  757. package/dist/showcase/assets/minus-BE2L5hVc.js +0 -1
  758. package/dist/showcase/assets/money-display-CXQ_8LfA.js +0 -1
  759. package/dist/showcase/assets/month-year-picker-ra8FEN8F.js +0 -1
  760. package/dist/showcase/assets/navigation-CFfVZQJ1.js +0 -231
  761. package/dist/showcase/assets/navigation-Da0MVkqr.js +0 -90
  762. package/dist/showcase/assets/navigation-extras-LpsdoXfx.js +0 -43
  763. package/dist/showcase/assets/onboarding-checklist-DPNatNOk.js +0 -119
  764. package/dist/showcase/assets/overflow-tab-bar-C0vTzcEY.js +0 -1
  765. package/dist/showcase/assets/overlays-Blmbun0J.js +0 -408
  766. package/dist/showcase/assets/overlays-t0joc10Y.js +0 -159
  767. package/dist/showcase/assets/overview-Ckq8vbOR.js +0 -184
  768. package/dist/showcase/assets/package-Cjod_a06.js +0 -1
  769. package/dist/showcase/assets/package-check-JRHaNnkl.js +0 -1
  770. package/dist/showcase/assets/page-9xr7xnuW.js +0 -1
  771. package/dist/showcase/assets/page-action-button-BRXnfsEx.js +0 -1
  772. package/dist/showcase/assets/page-header-Bdlxfn_9.js +0 -1
  773. package/dist/showcase/assets/pagination-CeaYhOvv.js +0 -42
  774. package/dist/showcase/assets/pagination-DdZZHvNF.js +0 -1
  775. package/dist/showcase/assets/paperclip-BRM-yXTB.js +0 -1
  776. package/dist/showcase/assets/password-input-1FVEugoO.js +0 -1
  777. package/dist/showcase/assets/pencil-DiG2dQ8F.js +0 -1
  778. package/dist/showcase/assets/phone-BREyNZN-.js +0 -1
  779. package/dist/showcase/assets/plus-CQcelTNc.js +0 -1
  780. package/dist/showcase/assets/popover-Czmwspmc.js +0 -1
  781. package/dist/showcase/assets/popover-menu-beuCaiLt.js +0 -1
  782. package/dist/showcase/assets/popover-uqk7myG2.js +0 -1
  783. package/dist/showcase/assets/products-DGNqIbLs.js +0 -423
  784. package/dist/showcase/assets/progress-D76Df908.js +0 -1
  785. package/dist/showcase/assets/progress-DjUprSDD.js +0 -18
  786. package/dist/showcase/assets/props-table-DoDq8Mvr.js +0 -1
  787. package/dist/showcase/assets/quote-BvGGgyJ0.js +0 -1
  788. package/dist/showcase/assets/receipt-rgnlMgyi.js +0 -1
  789. package/dist/showcase/assets/receipt-text-CBQrVlnU.js +0 -1
  790. package/dist/showcase/assets/refinement-guide-B_BpIMxm.js +0 -189
  791. package/dist/showcase/assets/refresh-cw-C-yHy6B7.js +0 -1
  792. package/dist/showcase/assets/resolveValueLabel-0bwEvIG-.js +0 -1
  793. package/dist/showcase/assets/resource-8f61BZ8t.js +0 -1
  794. package/dist/showcase/assets/resource-BEh6R0gu.js +0 -139
  795. package/dist/showcase/assets/resource-selector-card-DJwXY_Ms.js +0 -43
  796. package/dist/showcase/assets/rich-text-editor-D433iv0N.js +0 -143
  797. package/dist/showcase/assets/rich-text-editor-vTRfWsOK.js +0 -124
  798. package/dist/showcase/assets/rotate-ccw-JuE4H14F.js +0 -1
  799. package/dist/showcase/assets/route-eSu1bFNn.js +0 -1
  800. package/dist/showcase/assets/save-Bpjj-rBP.js +0 -1
  801. package/dist/showcase/assets/schema-form-DmOpxd96.js +0 -327
  802. package/dist/showcase/assets/scroll-area-B9OdCBy9.js +0 -32
  803. package/dist/showcase/assets/scroll-area-BH80l2As.js +0 -1
  804. package/dist/showcase/assets/section-BPNIPavy.js +0 -1
  805. package/dist/showcase/assets/select-BauiG1a3.js +0 -1
  806. package/dist/showcase/assets/select-CPopSr5c.js +0 -1
  807. package/dist/showcase/assets/send-DNCcBKXs.js +0 -1
  808. package/dist/showcase/assets/separator-BK0beCOv.js +0 -28
  809. package/dist/showcase/assets/separator-CKM9A-mm.js +0 -1
  810. package/dist/showcase/assets/settings-2-B8fz7JZB.js +0 -1
  811. package/dist/showcase/assets/settings-Cy2y3sQw.js +0 -1
  812. package/dist/showcase/assets/sheet-C7VWkXE1.js +0 -1
  813. package/dist/showcase/assets/shield-ClPev4gS.js +0 -1
  814. package/dist/showcase/assets/shield-alert-6XO5YZ5u.js +0 -1
  815. package/dist/showcase/assets/shield-check-DSfGVZq0.js +0 -1
  816. package/dist/showcase/assets/shopping-bag-DzMrGvpF.js +0 -1
  817. package/dist/showcase/assets/showcase-DuZaO6q9.js +0 -132
  818. package/dist/showcase/assets/sidebar-7y9EQYWf.js +0 -1
  819. package/dist/showcase/assets/sidebar.context-DUheJD8t.js +0 -1
  820. package/dist/showcase/assets/skeleton-Dgr8Vabr.js +0 -29
  821. package/dist/showcase/assets/skeleton-HSpErFqw.js +0 -1
  822. package/dist/showcase/assets/slider-B7f81APg.js +0 -1
  823. package/dist/showcase/assets/smart-card-p97LLZCW.js +0 -1
  824. package/dist/showcase/assets/sonner-CWazrN19.js +0 -22
  825. package/dist/showcase/assets/sortable.esm-uufol7Mz.js +0 -5
  826. package/dist/showcase/assets/sparkles-Z4V23xKK.js +0 -1
  827. package/dist/showcase/assets/spinner-BUgjAjWE.js +0 -49
  828. package/dist/showcase/assets/spinner-CXu7z8-j.js +0 -1
  829. package/dist/showcase/assets/spinner-DCwR0mnD.js +0 -30
  830. package/dist/showcase/assets/square-pen-jwp_OWMQ.js +0 -1
  831. package/dist/showcase/assets/stacked-avatars-CHEpTotO.js +0 -1
  832. package/dist/showcase/assets/star-Ck8Lg5hm.js +0 -1
  833. package/dist/showcase/assets/startOfDay-BzULZHy4.js +0 -1
  834. package/dist/showcase/assets/styles-CNYitflH.js +0 -1
  835. package/dist/showcase/assets/suggestions-CSF9MlKl.js +0 -126
  836. package/dist/showcase/assets/switch-BX9KSLIF.js +0 -1
  837. package/dist/showcase/assets/switch-Bn0WaWa9.js +0 -1
  838. package/dist/showcase/assets/sync-BuKBnqWW.js +0 -124
  839. package/dist/showcase/assets/table-DNJcLaud.js +0 -686
  840. package/dist/showcase/assets/table-NfpOWGsG.js +0 -1
  841. package/dist/showcase/assets/table-actions-Ci9Yszp0.js +0 -1
  842. package/dist/showcase/assets/tabs-CYNFQdIr.js +0 -19
  843. package/dist/showcase/assets/tabs-Cm_p6znb.js +0 -1
  844. package/dist/showcase/assets/tags-input-DE4QZqS_.js +0 -1
  845. package/dist/showcase/assets/text-button-D9llh4pU.js +0 -1
  846. package/dist/showcase/assets/text-link-ZT6QGJOL.js +0 -1
  847. package/dist/showcase/assets/textarea-CgcHuGVq.js +0 -1
  848. package/dist/showcase/assets/textarea-D2uT_GJt.js +0 -1
  849. package/dist/showcase/assets/timelines-BEFO7tJ0.js +0 -200
  850. package/dist/showcase/assets/toggle-group-oYpa59lN.js +0 -1
  851. package/dist/showcase/assets/toggles-BL93YmQo.js +0 -71
  852. package/dist/showcase/assets/toggles-group-BG-xiQCY.js +0 -32
  853. package/dist/showcase/assets/tooltip-BMI7zHwP.js +0 -31
  854. package/dist/showcase/assets/trash-2-CtRtVsCy.js +0 -1
  855. package/dist/showcase/assets/trending-up-2NQ-P8vB.js +0 -1
  856. package/dist/showcase/assets/truck-Cl0nyN_j.js +0 -1
  857. package/dist/showcase/assets/typography-C7pCPhg7.js +0 -223
  858. package/dist/showcase/assets/ui-badge-BvmuMzSq.js +0 -28
  859. package/dist/showcase/assets/ui-card-B7ziOMAn.js +0 -30
  860. package/dist/showcase/assets/ui-table-BEFHakBU.js +0 -42
  861. package/dist/showcase/assets/upload-tray-CMKqTtEp.js +0 -138
  862. package/dist/showcase/assets/use-layout-link-nEU6ctSs.js +0 -1
  863. package/dist/showcase/assets/useAnchoredPopupScrollLock-B1xyKMh7.js +0 -1
  864. package/dist/showcase/assets/useAriaLabelledBy-BMlFgz-H.js +0 -1
  865. package/dist/showcase/assets/useCollapsiblePanel-BEzH6TC2.js +0 -1
  866. package/dist/showcase/assets/useCompositeItem-CIuww7-p.js +0 -1
  867. package/dist/showcase/assets/useCompositeListItem-PrMTh4tz.js +0 -1
  868. package/dist/showcase/assets/useLabelableId-BBLkeLGr.js +0 -1
  869. package/dist/showcase/assets/useOpenInteractionType-CW0quo3l.js +0 -1
  870. package/dist/showcase/assets/useRender-6NNMHJJU.js +0 -1
  871. package/dist/showcase/assets/useTriggerFocusGuards-DEza_iee.js +0 -1
  872. package/dist/showcase/assets/useValueChanged-BmWIb3SN.js +0 -1
  873. package/dist/showcase/assets/user-BDIP5UPS.js +0 -1
  874. package/dist/showcase/assets/user-plus-BCqHFh2h.js +0 -1
  875. package/dist/showcase/assets/users-Bh7xGRX2.js +0 -1
  876. package/dist/showcase/assets/vendor-profile-BlYcRbPI.js +0 -37
  877. package/dist/showcase/assets/video-BucshqNW.js +0 -1
  878. package/dist/showcase/assets/wrench-DQvhyTEb.js +0 -1
  879. package/dist/showcase/assets/x-DyuS4YRT.js +0 -1
  880. package/dist/showcase/assets/zap-Dpn8_pnQ.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-C_1x4-rd.cjs","names":[],"sources":["../../src/components/layout/header/partials/header-breadcrumbs.tsx","../../src/components/layout/header/header.tsx","../../src/components/layout/header/header.types.ts","../../src/components/layout/header/partials/header-search.tsx","../../src/components/layout/header/partials/header-global-search-trigger.tsx","../../src/components/layout/header/partials/header-tool-button.tsx","../../src/components/layout/header/partials/header-tool-popover.tsx","../../src/components/layout/header/partials/header-user-menu.tsx","../../src/components/layout/header/partials/header-notifications.tsx"],"sourcesContent":["/** HeaderBreadcrumbs — breadcrumbs trail with optional sidebar trigger. */\nimport * as React from 'react';\n\nimport { Separator } from '@/components/base/display/separator';\nimport { Breadcrumbs } from '@/components/base/navigation/breadcrumbs';\nimport { SidebarTrigger } from '@/components/base/sidebar';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { BreadcrumbItem } from '../../layout.types';\nimport type { HeaderBreadcrumbsProps } from '../header.types';\n\nexport function HeaderBreadcrumbs({\n\tbreadcrumbs = [],\n\thomeBreadcrumb = null,\n\tshowSidebarTrigger = true,\n\ttriggerSlot,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n}: HeaderBreadcrumbsProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst items = React.useMemo<BreadcrumbItem[]>(() => {\n\t\tconst out: BreadcrumbItem[] = [];\n\t\tif (homeBreadcrumb) out.push(homeBreadcrumb);\n\t\tout.push(...breadcrumbs);\n\t\treturn out;\n\t}, [homeBreadcrumb, breadcrumbs]);\n\n\tconst showCrumbs = items.length > 0;\n\n\treturn (\n\t\t<div className={cn('relative flex min-h-9 min-w-0 items-stretch gap-3 overflow-hidden', className)}>\n\t\t\t{!!showSidebarTrigger && (\n\t\t\t\t<div className=\"relative flex min-h-9 items-center justify-center gap-2\">\n\t\t\t\t\t{triggerSlot ?? <SidebarTrigger className=\"size-7 [&_svg]:size-4\" />}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!showCrumbs && (\n\t\t\t\t<>\n\t\t\t\t\t{!!showSidebarTrigger && <Separator orientation=\"vertical\" className=\"h-auto self-stretch\" />}\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center overflow-hidden\">\n\t\t\t\t\t\t<Breadcrumbs\n\t\t\t\t\t\t\tbreadcrumbs={items}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'min-w-0 overflow-hidden',\n\t\t\t\t\t\t\t\t'[&_[data-slot=breadcrumb-list]]:flex-nowrap [&_[data-slot=breadcrumb-list]]:overflow-hidden [&_[data-slot=breadcrumb-list]]:break-normal',\n\t\t\t\t\t\t\t\t'[&_[data-slot=breadcrumb-item]]:min-w-0 [&_[data-slot=breadcrumb-item]]:shrink',\n\t\t\t\t\t\t\t\t'[&_[data-slot=breadcrumb-link]]:truncate [&_[data-slot=breadcrumb-page]]:truncate',\n\t\t\t\t\t\t\t)}\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</div>\n\t);\n}\n","/** Header — sticky top bar with breadcrumbs and slot-driven content regions. */\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport { HeaderBreadcrumbs } from './partials/header-breadcrumbs';\nimport type { HeaderProps } from './header.types';\n\nexport function Header({\n\tshowBreadcrumbs = true,\n\tbreadcrumbs = [],\n\thomeBreadcrumb = null,\n\tshowSidebarTrigger = true,\n\tbrand,\n\tleftContent,\n\tcenterContent,\n\trightContent,\n\tslots,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tcontentClassName,\n\tleftClassName,\n\tcenterClassName,\n\trightClassName,\n\tbreadcrumbsClassName,\n}: HeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t'sticky top-0 z-40 flex min-h-shell-header items-center border-b bg-background/70 px-4 py-2 backdrop-blur-md transition-[width,height] ease-linear md:px-5',\n\t\t\t\t'dark:bg-topbar',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className={cn('flex min-h-9 min-w-0 flex-1 items-stretch gap-4', contentClassName)}>\n\t\t\t\t{!!(slots?.brand ?? brand) && (\n\t\t\t\t\t<div className=\"hidden min-w-0 shrink-0 items-center md:flex\">\n\t\t\t\t\t\t{slots?.brand ?? brand}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!showBreadcrumbs && (slots?.breadcrumbs ?? (\n\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t<HeaderBreadcrumbs\n\t\t\t\t\t\t\tbreadcrumbs={breadcrumbs}\n\t\t\t\t\t\t\thomeBreadcrumb={homeBreadcrumb}\n\t\t\t\t\t\t\tshowSidebarTrigger={showSidebarTrigger}\n\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\tclassName={breadcrumbsClassName}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\n\t\t\t\t{!!(slots?.left ?? leftContent) && (\n\t\t\t\t\t<div className={cn('flex min-w-0 items-center', leftClassName)}>\n\t\t\t\t\t\t{slots?.left ?? leftContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!(slots?.center ?? centerContent) && (\n\t\t\t\t\t<div className={cn('hidden min-w-0 shrink-0 items-center justify-center lg:flex', centerClassName)}>\n\t\t\t\t\t\t{slots?.center ?? centerContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!(slots?.right ?? rightContent) && (\n\t\t\t\t\t<div className={cn('ml-auto flex shrink-0 items-center gap-2', rightClassName)}>\n\t\t\t\t\t\t{slots?.right ?? rightContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</header>\n\t);\n}\n","/**\n * Header layout and partial types.\n *\n * This layer is intentionally framework-neutral: links and route state enter\n * through `renderLink`, and app-specific content enters through slots.\n */\nimport type { ComponentType, ReactNode } from 'react';\n\nimport type { StringsProp } from '@/lib/strings';\n\nimport type {\n\tBreadcrumbItem,\n\tLayoutNavigationAdapter,\n\tLayoutUser,\n\tLinkComponent,\n} from '../layout.types';\n\nexport interface HeaderBreadcrumbsProps extends LayoutNavigationAdapter {\n\tbreadcrumbs?: BreadcrumbItem[];\n\thomeBreadcrumb?: BreadcrumbItem | null;\n\tshowSidebarTrigger?: boolean;\n\ttriggerSlot?: ReactNode;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type NotificationTone = 'info' | 'success' | 'warning' | 'error';\n\nexport interface HeaderNotification {\n\tid: string | number;\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\ttime?: ReactNode;\n\tread?: boolean;\n\ttone?: NotificationTone;\n\thref?: string;\n}\n\nexport interface HeaderNotificationsStrings {\n\ttriggerLabel: string;\n\theading: string;\n\tmarkAllRead: string;\n\tempty: string;\n\tviewAll: string;\n}\n\nexport const defaultHeaderNotificationsStrings: HeaderNotificationsStrings = {\n\ttriggerLabel: 'Notifications',\n\theading: 'Notifications',\n\tmarkAllRead: 'Mark all as read',\n\tempty: 'No new notifications',\n\tviewAll: 'View all notifications',\n};\n\nexport interface HeaderNotificationsProps extends LayoutNavigationAdapter {\n\tnotifications?: HeaderNotification[];\n\tunreadCount?: number;\n\tonNotificationClick?: (notification: HeaderNotification) => void;\n\tonMarkAllRead?: () => void;\n\tonViewAll?: () => void;\n\tviewAllHref?: string;\n\talign?: 'start' | 'center' | 'end';\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\tstrings?: StringsProp<HeaderNotificationsStrings>;\n\tclassName?: string;\n\tcontentClassName?: string;\n\trenderNotification?: (notification: HeaderNotification) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface HeaderSearchStrings {\n\tplaceholder: string;\n\tshortcutMac: string;\n\tshortcutPc: string;\n}\n\nexport const defaultHeaderSearchStrings: HeaderSearchStrings = {\n\tplaceholder: 'Search...',\n\tshortcutMac: '⌘K',\n\tshortcutPc: 'Ctrl+K',\n};\n\nexport interface HeaderSearchProps {\n\tonOpen?: () => void;\n\tisMac?: boolean;\n\tenableShortcut?: boolean;\n\tstrings?: StringsProp<HeaderSearchStrings>;\n\tclassName?: string;\n\ticonClassName?: string;\n\tshortcutSlot?: ReactNode;\n}\n\nexport interface HeaderGlobalSearchTriggerProps extends HeaderSearchProps {\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport interface HeaderToolButtonProps {\n\tlabel: string;\n\ticon: ComponentType<{ className?: string }>;\n\tactive?: boolean;\n\tdisabled?: boolean;\n\tbadge?: ReactNode;\n\tonClick?: () => void;\n\tclassName?: string;\n\ticonClassName?: string;\n}\n\nexport interface HeaderToolPopoverProps {\n\tlabel: string;\n\ticon: ComponentType<{ className?: string }>;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tactive?: boolean;\n\tdisabled?: boolean;\n\tbadge?: ReactNode;\n\talign?: 'start' | 'center' | 'end';\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\tsideOffset?: number;\n\tclassName?: string;\n\ttriggerClassName?: string;\n\tcontentClassName?: string;\n\tchildren?: ReactNode;\n}\n\nexport interface HeaderUserMenuProps {\n\tuser: LayoutUser;\n\tshowEmail?: boolean;\n\tcustomContent?: ReactNode;\n\tonProfile?: () => void;\n\tonSettings?: () => void;\n\tonLogout?: () => void;\n\talign?: 'start' | 'center' | 'end';\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\tstrings?: StringsProp<HeaderUserMenuStrings>;\n\ttriggerClassName?: string;\n\tcontentClassName?: string;\n\trenderTrigger?: (user: LayoutUser) => ReactNode;\n}\n\nexport interface HeaderUserMenuStrings {\n\tprofile: string;\n\tsettings: string;\n\tlogout: string;\n}\n\nexport const defaultHeaderUserMenuStrings: HeaderUserMenuStrings = {\n\tprofile: 'Profile',\n\tsettings: 'Settings',\n\tlogout: 'Log out',\n};\n\nexport interface HeaderSlots {\n\t/** Leading brand/logo region before breadcrumbs. */\n\tbrand?: ReactNode;\n\t/** Replaces the breadcrumb/sidebar-trigger region. */\n\tbreadcrumbs?: ReactNode;\n\t/** Leading content after breadcrumbs. Prefer this over `leftContent` for new code. */\n\tleft?: ReactNode;\n\t/** Center content, usually search or a scope switcher. */\n\tcenter?: ReactNode;\n\t/** Trailing content, usually notifications/user menu/actions. */\n\tright?: ReactNode;\n}\n\nexport interface HeaderProps extends LayoutNavigationAdapter {\n\tshowBreadcrumbs?: boolean;\n\tbreadcrumbs?: BreadcrumbItem[];\n\thomeBreadcrumb?: BreadcrumbItem | null;\n\tshowSidebarTrigger?: boolean;\n\tbrand?: ReactNode;\n\t/** @deprecated Prefer `slots.left`. */\n\tleftContent?: ReactNode;\n\t/** @deprecated Prefer `slots.center`. */\n\tcenterContent?: ReactNode;\n\t/** @deprecated Prefer `slots.right`. */\n\trightContent?: ReactNode;\n\tslots?: HeaderSlots;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tleftClassName?: string;\n\tcenterClassName?: string;\n\trightClassName?: string;\n\tbreadcrumbsClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n","/** HeaderSearch — framework-neutral search trigger with optional Cmd/Ctrl+K. */\nimport { useMemo } from 'react';\nimport { Command, Search } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useCommandShortcut } from '../../hooks';\nimport {\n\tdefaultHeaderSearchStrings,\n\ttype HeaderSearchProps,\n} from '../header.types';\n\nfunction detectMac(): boolean {\n\tif (typeof navigator === 'undefined') return false;\n\tconst ua = (navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData;\n\tif (ua?.platform) return ua.platform === 'macOS';\n\treturn /Mac|iPhone|iPad/.test(navigator.platform);\n}\n\nexport function HeaderSearch({\n\tonOpen,\n\tisMac,\n\tenableShortcut = true,\n\tstrings: stringsProp,\n\tclassName,\n\ticonClassName,\n\tshortcutSlot,\n}: HeaderSearchProps) {\n\tconst strings = useStrings(defaultHeaderSearchStrings, stringsProp);\n\tconst isMacResolved = useMemo(() => isMac ?? detectMac(), [isMac]);\n\tuseCommandShortcut({ key: 'k', enabled: enableShortcut, onTrigger: onOpen });\n\n\tconst shortcutTitle = isMacResolved ? strings.shortcutMac : strings.shortcutPc;\n\tconst shortcut = shortcutSlot ?? (\n\t\t<kbd className=\"header-search--shortcut hidden h-5 shrink-0 items-center gap-space-sm rounded-md border border-border/70 bg-background/60 px-space-sm font-mono text-xxs text-muted-foreground lg:inline-flex\">\n\t\t\t{isMacResolved ? (\n\t\t\t\t<>\n\t\t\t\t\t<Command className=\"size-icon-sm text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">K</Text>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">Ctrl+K</Text>\n\t\t\t)}\n\t\t</kbd>\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tdata-component=\"header-search\"\n\t\t\tdata-slot=\"header-search-trigger\"\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"outline\"\n\t\t\tonClick={onOpen}\n\t\t\tclassName={cn(\n\t\t\t\t'header-search--component header-search--trigger h-control-sm w-full min-w-52 justify-start gap-space-md rounded-lg border-border/80 bg-muted/40 px-control-sm text-foreground shadow-none transition-[background-color,border-color,color,box-shadow] hover:border-border hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background dark:border-border/80 dark:bg-muted/40 dark:hover:bg-muted/60 dark:hover:text-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttitle={shortcutTitle}\n\t\t>\n\t\t\t<Search data-slot=\"header-search-icon\" className={cn('header-search--icon size-icon shrink-0 text-muted-foreground', iconClassName)} aria-hidden=\"true\" />\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" data-slot=\"header-search-placeholder\" className=\"header-search--placeholder flex-1 text-left\">\n\t\t\t\t{strings.placeholder}\n\t\t\t</Text>\n\t\t\t{shortcut}\n\t\t\t<span className=\"sr-only\">{strings.placeholder}</span>\n\t\t</Button>\n\t);\n}\n","/** HeaderGlobalSearchTrigger — header search trigger with controlled open callback. */\nimport { HeaderSearch } from './header-search';\nimport type { HeaderGlobalSearchTriggerProps } from '../header.types';\n\nexport function HeaderGlobalSearchTrigger({\n\tonOpen,\n\tonOpenChange,\n\t...props\n}: HeaderGlobalSearchTriggerProps) {\n\treturn (\n\t\t<HeaderSearch\n\t\t\t{...props}\n\t\t\tonOpen={() => {\n\t\t\t\tonOpen?.();\n\t\t\t\tonOpenChange?.(true);\n\t\t\t}}\n\t\t/>\n\t);\n}\n","/** HeaderToolButton — icon control for dense app headers. */\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { cn } from '@/lib/utils';\n\nimport type { HeaderToolButtonProps } from '../header.types';\n\nexport const HeaderToolButton = React.forwardRef<\n\tHTMLButtonElement,\n\tHeaderToolButtonProps\n>((\n\t{\n\t\tlabel,\n\t\ticon: Icon,\n\t\tactive = false,\n\t\tdisabled = false,\n\t\tbadge,\n\t\tonClick,\n\t\tclassName,\n\t\ticonClassName,\n\t},\n\tref,\n) => (\n\t<Button\n\t\tref={ref}\n\t\tdata-component=\"header-tool-button\"\n\t\tdata-slot=\"header-tool-button\"\n\t\ttype=\"button\"\n\t\tvariant=\"secondary\"\n\t\tbuttonStyle=\"ghost\"\n\t\tsize=\"icon-small\"\n\t\taria-label={label}\n\t\taria-pressed={active || undefined}\n\t\ttitle={label}\n\t\tdisabled={disabled}\n\t\tonClick={onClick}\n\t\tclassName={cn(\n\t\t\t'header-tool-button--component header-tool-button--trigger relative size-control rounded-lg text-foreground transition-[background-color,color,box-shadow] hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background',\n\t\t\tactive && 'bg-accent text-accent-foreground',\n\t\t\tclassName,\n\t\t)}\n\t>\n\t\t<Icon\n\t\t\tdata-slot=\"header-tool-icon\"\n\t\t\tclassName={cn('header-tool-button--icon size-icon', iconClassName)}\n\t\t\taria-hidden=\"true\"\n\t\t/>\n\t\t{!!badge && (\n\t\t\t<span data-slot=\"header-tool-badge\" className=\"header-tool-button--badge absolute right-space-xs top-space-xs flex min-h-space-lg min-w-space-lg items-center justify-center rounded-full bg-destructive px-space-2xs text-xxs font-medium leading-none text-destructive-foreground\">\n\t\t\t\t{badge}\n\t\t\t</span>\n\t\t)}\n\t\t<span className=\"sr-only\">{label}</span>\n\t</Button>\n));\n\nHeaderToolButton.displayName = 'HeaderToolButton';\n","/** HeaderToolPopover — controlled header icon trigger plus popover content. */\nimport {\n\tPopover,\n\tPopoverContent,\n\tPopoverTrigger,\n} from '@/components/base/popover';\nimport { cn } from '@/lib/utils';\n\nimport type { HeaderToolPopoverProps } from '../header.types';\nimport { HeaderToolButton } from './header-tool-button';\n\nexport function HeaderToolPopover({\n\tlabel,\n\ticon,\n\topen,\n\tdefaultOpen,\n\tonOpenChange,\n\tactive,\n\tdisabled,\n\tbadge,\n\talign = 'end',\n\tside = 'bottom',\n\tsideOffset = 8,\n\tclassName,\n\ttriggerClassName,\n\tcontentClassName,\n\tchildren,\n}: HeaderToolPopoverProps) {\n\treturn (\n\t\t<Popover\n\t\t\topen={open}\n\t\t\tdefaultOpen={defaultOpen}\n\t\t\tonOpenChange={onOpenChange}\n\t\t>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<HeaderToolButton\n\t\t\t\t\tlabel={label}\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tactive={active ?? open}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tbadge={badge}\n\t\t\t\t\tclassName={triggerClassName}\n\t\t\t\t/>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent\n\t\t\t\tdata-component=\"header-tool-popover\"\n\t\t\t\tdata-slot=\"header-tool-popover-content\"\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'header-tool-popover--component w-80 max-w-[calc(100vw-2rem)] p-0',\n\t\t\t\t\tclassName,\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","/** HeaderUserMenu — avatar/name trigger with consumer-wired menu callbacks. */\nimport type { ReactElement } from 'react';\n\nimport { ChevronsUpDown, LogOut, Settings, User } from 'lucide-react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultHeaderUserMenuStrings,\n\ttype HeaderUserMenuProps,\n} from '../header.types';\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 HeaderUserMenu({\n\tuser,\n\tshowEmail = true,\n\tcustomContent,\n\tonProfile,\n\tonSettings,\n\tonLogout,\n\talign = 'end',\n\tside = 'bottom',\n\tstrings: stringsProp,\n\ttriggerClassName,\n\tcontentClassName,\n\trenderTrigger,\n}: HeaderUserMenuProps) {\n\tconst strings = useStrings(defaultHeaderUserMenuStrings, stringsProp);\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-space-md size-icon\" 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-space-md size-icon\" 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-space-md size-icon\" 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\tconst trigger = renderTrigger?.(user) ?? (\n\t\t<Button\n\t\t\tdata-component=\"header-user-menu\"\n\t\t\tdata-slot=\"header-user-menu-trigger\"\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tclassName={cn(\n\t\t\t\t'header-user-menu--component header-user-menu--trigger group h-control-lg max-w-56 justify-start gap-space-md rounded-lg px-space-sm pr-space-md text-foreground shadow-none hover:bg-foreground/5 data-[state=open]:bg-foreground/5',\n\t\t\t\tshowEmail ? 'py-space-sm' : 'py-space-xs',\n\t\t\t\t'dark:text-background dark:hover:bg-topbar-accent/50',\n\t\t\t\ttriggerClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Avatar data-slot=\"header-user-avatar\" className=\"header-user-menu--avatar size-avatar-sm overflow-hidden rounded-full ring-1 ring-border/60\">\n\t\t\t\t{!!user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n\t\t\t\t<AvatarFallback className=\"rounded-md bg-success text-xxs font-semibold text-background\">\n\t\t\t\t\t{initials}\n\t\t\t\t</AvatarFallback>\n\t\t\t</Avatar>\n\t\t\t<div data-slot=\"header-user-identity\" className=\"header-user-menu--identity grid min-w-0 flex-1 text-left leading-none\">\n\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"truncate\">{user.name}</Text>\n\t\t\t\t{!!showEmail && !!user.email && (\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate\">{user.email}</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<ChevronsUpDown className=\"header-user-menu--chevron size-icon-sm shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n\t\t</Button>\n\t);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger render={trigger as ReactElement} />\n\t\t\t<DropdownMenuContent\n\t\t\t\tdata-component=\"header-user-menu-content\"\n\t\t\t\tdata-slot=\"header-user-menu-content\"\n\t\t\t\tclassName={cn('header-user-menu--content w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg p-surface-sm', contentClassName)}\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t>\n\t\t\t\t{customContent ?? defaultContent}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n","/** HeaderNotifications — bell dropdown for consumer-supplied notifications. */\nimport type { ReactElement } from 'react';\n\nimport { Bell } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuLinkItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultHeaderNotificationsStrings,\n\ttype HeaderNotification,\n\ttype HeaderNotificationsProps,\n} from '../header.types';\n\nexport function HeaderNotifications({\n\tnotifications = [],\n\tunreadCount = 0,\n\tonNotificationClick,\n\tonMarkAllRead,\n\tonViewAll,\n\tviewAllHref,\n\trenderLink,\n\tLinkComponent,\n\talign = 'end',\n\tside = 'bottom',\n\tstrings: stringsProp,\n\tclassName,\n\tcontentClassName,\n\trenderNotification,\n}: HeaderNotificationsProps) {\n\tconst strings = useStrings(defaultHeaderNotificationsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst badgeText = unreadCount > 99 ? '99+' : String(unreadCount);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-component=\"header-notifications\"\n\t\t\t\t\t\tdata-slot=\"header-notifications-trigger\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\taria-label={strings.triggerLabel}\n\t\t\t\t\t\tclassName={cn('header-notifications--component header-notifications--trigger relative', className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Bell className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t{unreadCount > 0 && (\n\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\tclassName=\"absolute -right-1 -top-1 flex h-4.5 min-w-4.5 items-center justify-center rounded-full px-1 py-0 text-xxs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{badgeText}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<DropdownMenuContent\n\t\t\t\tdata-component=\"header-notifications-content\"\n\t\t\t\tdata-slot=\"header-notifications-content\"\n\t\t\t\tclassName={cn('header-notifications--content w-80 max-w-[calc(100vw-2rem)]', contentClassName)}\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t>\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t<DropdownMenuLabel className=\"header-notifications--label flex items-center justify-between gap-3\">\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\">{strings.heading}</Text>\n\t\t\t\t\t\t{unreadCount > 0 && !!onMarkAllRead && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={onMarkAllRead}\n\t\t\t\t\t\t\t\tclassName=\"h-auto px-1 py-0 text-xs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings.markAllRead}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DropdownMenuLabel>\n\t\t\t\t\t<DropdownMenuSeparator />\n\n\t\t\t\t\t{notifications.length === 0 ? (\n\t\t\t\t\t\t<div className=\"header-notifications--empty p-4 text-center\">\n\t\t\t\t\t\t\t<Text type=\"secondary\">{strings.empty}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"space-y-1 p-1\">\n\t\t\t\t\t\t\t{notifications.map((notification) => (\n\t\t\t\t\t\t\t\t<NotificationRow\n\t\t\t\t\t\t\t\t\tkey={notification.id}\n\t\t\t\t\t\t\t\t\tnotification={notification}\n\t\t\t\t\t\t\t\t\tonClick={onNotificationClick}\n\t\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\t\trenderNotification={renderNotification}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</DropdownMenuGroup>\n\n\t\t\t\t{!!(onViewAll || viewAllHref) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t{viewAllHref ? (\n\t\t\t\t\t\t\t<DropdownMenuLinkItem\n\t\t\t\t\t\t\t\thref={viewAllHref}\n\t\t\t\t\t\t\t\trender={(props) =>\n\t\t\t\t\t\t\t\t\tresolvedRenderLink({\n\t\t\t\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\t\t\t\thref: viewAllHref,\n\t\t\t\t\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t\t\t\t\t}) as ReactElement\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{strings.viewAll}\n\t\t\t\t\t\t\t</DropdownMenuLinkItem>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<DropdownMenuItem onClick={onViewAll}>{strings.viewAll}</DropdownMenuItem>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction NotificationRow({\n\tnotification,\n\tonClick,\n\trenderLink,\n\trenderNotification,\n}: {\n\tnotification: HeaderNotification;\n\tonClick?: (n: HeaderNotification) => void;\n\trenderLink: NonNullable<HeaderNotificationsProps['renderLink']>;\n\trenderNotification?: HeaderNotificationsProps['renderNotification'];\n}) {\n\tif (renderNotification) return renderNotification(notification);\n\n\tconst content = (\n\t\t<div className=\"header-notifications--item-content min-w-0 space-y-1\">\n\t\t\t<Text weight=\"medium\">{notification.title}</Text>\n\t\t\t{!!notification.description && <Text size=\"xs\" type=\"secondary\">{notification.description}</Text>}\n\t\t\t{!!notification.time && <Text size=\"xxs\" type=\"secondary\">{notification.time}</Text>}\n\t\t</div>\n\t);\n\n\tconst className = cn(\n\t\t'header-notifications--item items-start rounded-md px-3 py-2',\n\t\t!notification.read && 'bg-muted/40',\n\t);\n\n\tif (notification.href) {\n\t\treturn (\n\t\t\t<DropdownMenuLinkItem\n\t\t\t\thref={notification.href}\n\t\t\t\tclassName={className}\n\t\t\t\tonClick={() => onClick?.(notification)}\n\t\t\t\trender={(props) =>\n\t\t\t\t\trenderLink({\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\thref: notification.href,\n\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t}) as ReactElement\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</DropdownMenuLinkItem>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DropdownMenuItem onClick={() => onClick?.(notification)} className={className}>\n\t\t\t{content}\n\t\t</DropdownMenuItem>\n\t);\n}\n\n/** @deprecated Re-exported for backwards compat — use `HeaderNotification`. */\nexport type Notification = HeaderNotification;\n"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { t } from "./badge-a2Z3K5aQ.js";
3
+ import { r as n } from "./layout.types-ip8BYRa7.js";
4
+ import * as r from "react";
5
+ import { useCallback as i, useEffect as a, useMemo as o } from "react";
6
+ import { jsx as s } from "react/jsx-runtime";
7
+ //#region src/components/layout/hooks/use-layout-link.tsx
8
+ function c({ renderLink: e, LinkComponent: t } = {}) {
9
+ return o(() => n({
10
+ renderLink: e,
11
+ LinkComponent: t
12
+ }), [e, t]);
13
+ }
14
+ //#endregion
15
+ //#region src/components/layout/sidebar/sidebar.utils.tsx
16
+ function l(e) {
17
+ if (e.startsWith("#/")) return e.slice(1).split("?")[0]?.split("#")[0] || "/";
18
+ try {
19
+ return new URL(e, "http://local.invalid").pathname;
20
+ } catch {
21
+ return e;
22
+ }
23
+ }
24
+ function u(e, t) {
25
+ let n = l(e);
26
+ return n === t || n.startsWith(t + "/") || n.startsWith(t + "?");
27
+ }
28
+ function d(e) {
29
+ return e.label ?? e.title ?? "";
30
+ }
31
+ function f(e, t) {
32
+ let n = d(e);
33
+ return e.handle ?? e.href ?? (typeof n == "string" || typeof n == "number" ? n : `nav-${t ?? 0}`);
34
+ }
35
+ function p({ value: n, size: r = "default" }) {
36
+ return /* @__PURE__ */ s(t, {
37
+ variant: "secondary",
38
+ className: e("ml-auto rounded-full tabular-nums text-sidebar-foreground", r === "small" ? "h-4 min-w-4 px-1.5" : "h-5 min-w-5 px-1.5"),
39
+ children: n
40
+ });
41
+ }
42
+ function m(e, t, n) {
43
+ return e && n && n[e] != null ? n[e] : t;
44
+ }
45
+ function h({ icon: t, iconMap: n = {}, size: i = 20, className: a = "size-4", ...o }) {
46
+ if (!t) return null;
47
+ if (typeof t == "string") {
48
+ let e = n[t];
49
+ return e ? /* @__PURE__ */ s(e, { className: a }) : null;
50
+ }
51
+ return r.isValidElement(t) ? r.cloneElement(t, {
52
+ className: e(a, t.props.className),
53
+ ...o
54
+ }) : typeof t == "function" || typeof t == "object" && t && "$$typeof" in t ? /* @__PURE__ */ s(t, {
55
+ className: a,
56
+ width: i,
57
+ height: i,
58
+ ...o
59
+ }) : null;
60
+ }
61
+ function g(e, t, n, r, i) {
62
+ return e({
63
+ href: t.href,
64
+ children: n,
65
+ className: r,
66
+ active: i,
67
+ disabled: t.disabled || !t.href,
68
+ external: t.external
69
+ });
70
+ }
71
+ //#endregion
72
+ //#region src/components/layout/hooks/use-active-path.ts
73
+ function _(e = "/") {
74
+ return i((t) => !!t && u(e, l(t)), [e]);
75
+ }
76
+ //#endregion
77
+ //#region src/components/layout/hooks/use-command-shortcut.ts
78
+ function v({ key: e, enabled: t = !0, onTrigger: n, preventDefault: r = !0 }) {
79
+ a(() => {
80
+ if (!t || !n || typeof document > "u") return;
81
+ let i = (t) => {
82
+ (t.metaKey || t.ctrlKey) && t.key.toLowerCase() === e.toLowerCase() && (r && t.preventDefault(), n());
83
+ };
84
+ return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
85
+ }, [
86
+ t,
87
+ e,
88
+ n,
89
+ r
90
+ ]);
91
+ }
92
+ //#endregion
93
+ export { f as a, g as c, c as d, p as i, m as l, _ as n, d as o, h as r, u as s, v as t, l as u };
94
+
95
+ //# sourceMappingURL=hooks---vunGQ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks---vunGQ6.js","names":[],"sources":["../../src/components/layout/hooks/use-layout-link.tsx","../../src/components/layout/sidebar/sidebar.utils.tsx","../../src/components/layout/hooks/use-active-path.ts","../../src/components/layout/hooks/use-command-shortcut.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport function useLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\treturn useMemo(\n\t\t() => resolveLayoutLinkRenderer({ renderLink, LinkComponent }),\n\t\t[renderLink, LinkComponent],\n\t);\n}\n"," \n/** Sidebar utilities — pure path helpers, labels, icon rendering, badge pill. */\nimport * as React from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { LayoutIconSource, LayoutLinkRenderer } from '../layout.types';\nimport type { SidebarNavItem } from './sidebar.types';\n\nexport function toPath(href: string): string {\n\tif (href.startsWith('#/')) {\n\t\treturn href.slice(1).split('?')[0]?.split('#')[0] || '/';\n\t}\n\n\ttry {\n\t\treturn new URL(href, 'http://local.invalid').pathname;\n\t} catch {\n\t\treturn href;\n\t}\n}\n\nexport function isPathMatch(currentUrl: string, path: string): boolean {\n\tconst currentPath = toPath(currentUrl);\n\treturn currentPath === path || currentPath.startsWith(path + '/') || currentPath.startsWith(path + '?');\n}\n\nexport function getNavLabel(item: Pick<SidebarNavItem, 'label' | 'title'>): React.ReactNode {\n\treturn item.label ?? item.title ?? '';\n}\n\nexport function getNavKey(item: SidebarNavItem, fallbackIndex?: number): React.Key {\n\tconst label = getNavLabel(item);\n\treturn item.handle ?? item.href ?? (typeof label === 'string' || typeof label === 'number' ? label : `nav-${fallbackIndex ?? 0}`);\n}\n\nexport function NavBadge({\n\tvalue,\n\tsize = 'default',\n}: {\n\tvalue: string | number;\n\tsize?: 'default' | 'small';\n}) {\n\treturn (\n\t\t<Badge\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\t'ml-auto rounded-full tabular-nums text-sidebar-foreground',\n\t\t\t\tsize === 'small' ? 'h-4 min-w-4 px-1.5' : 'h-5 min-w-5 px-1.5',\n\t\t\t)}\n\t\t>\n\t\t\t{value}\n\t\t</Badge>\n\t);\n}\n\nexport function resolveNavBadge(\n\thandle: string | undefined,\n\titemBadge: string | number | undefined,\n\tliveBadges: Record<string, string | number> | undefined,\n): string | number | undefined {\n\tif (handle && liveBadges && liveBadges[handle] != null) {\n\t\treturn liveBadges[handle];\n\t}\n\treturn itemBadge;\n}\n\nexport interface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n\ticon: LayoutIconSource;\n\ticonMap?: Record<string, React.ComponentType<{ className?: string }>>;\n\tsize?: number;\n\tclassName?: string;\n}\n\nexport function DynamicIcon({\n\ticon,\n\ticonMap = {},\n\tsize = 20,\n\tclassName = 'size-4',\n\t...props\n}: DynamicIconProps) {\n\tif (!icon) return null;\n\n\tif (typeof icon === 'string') {\n\t\tconst IconComponent = iconMap[icon];\n\t\treturn IconComponent ? <IconComponent className={className} /> : null;\n\t}\n\n\tif (React.isValidElement(icon)) {\n\t\treturn React.cloneElement(icon as React.ReactElement<React.SVGProps<SVGSVGElement>>, {\n\t\t\tclassName: cn(className, (icon.props as { className?: string }).className),\n\t\t\t...props,\n\t\t});\n\t}\n\n\tif (\n\t\ttypeof icon === 'function'\n\t\t|| (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\n\t) {\n\t\tconst IconComponent = icon as React.ElementType<React.SVGProps<SVGSVGElement>>;\n\t\treturn <IconComponent className={className} width={size} height={size} {...props} />;\n\t}\n\n\treturn null;\n}\n\nexport function renderSidebarLink(\n\trenderLink: LayoutLinkRenderer,\n\titem: SidebarNavItem,\n\tchildren: React.ReactNode,\n\tclassName?: string,\n\tactive?: boolean,\n) {\n\treturn renderLink({\n\t\thref: item.href,\n\t\tchildren,\n\t\tclassName,\n\t\tactive,\n\t\tdisabled: item.disabled || !item.href,\n\t\texternal: item.external,\n\t});\n}\n","import { useCallback } from 'react';\n\nimport { isPathMatch, toPath } from '../sidebar/sidebar.utils';\n\nexport function useActivePath(currentUrl = '/') {\n\treturn useCallback(\n\t\t(href?: string) => !!href && isPathMatch(currentUrl, toPath(href)),\n\t\t[currentUrl],\n\t);\n}\n","import { useEffect } from 'react';\n\nexport interface UseCommandShortcutOptions {\n\tkey: string;\n\tenabled?: boolean;\n\tonTrigger?: () => void;\n\tpreventDefault?: boolean;\n}\n\nexport function useCommandShortcut({\n\tkey,\n\tenabled = true,\n\tonTrigger,\n\tpreventDefault = true,\n}: UseCommandShortcutOptions) {\n\tuseEffect(() => {\n\t\tif (!enabled || !onTrigger || typeof document === 'undefined') return;\n\n\t\tconst handler = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey)) return;\n\t\t\tif (event.key.toLowerCase() !== key.toLowerCase()) return;\n\t\t\tif (preventDefault) event.preventDefault();\n\t\t\tonTrigger();\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handler);\n\t\treturn () => document.removeEventListener('keydown', handler);\n\t}, [enabled, key, onTrigger, preventDefault]);\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,EAAsB,EACrC,eACA,qBAC4B,CAAC,GAAuB;CACpD,OAAO,QACA,EAA0B;EAAE;EAAY;CAAc,CAAC,GAC7D,CAAC,GAAY,CAAa,CAC3B;AACD;;;ACNA,SAAgB,EAAO,GAAsB;CAC5C,IAAI,EAAK,WAAW,IAAI,GACvB,OAAO,EAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,MAAM;CAGtD,IAAI;EACH,OAAO,IAAI,IAAI,GAAM,sBAAsB,EAAE;CAC9C,QAAQ;EACP,OAAO;CACR;AACD;AAEA,SAAgB,EAAY,GAAoB,GAAuB;CACtE,IAAM,IAAc,EAAO,CAAU;CACrC,OAAO,MAAgB,KAAQ,EAAY,WAAW,IAAO,GAAG,KAAK,EAAY,WAAW,IAAO,GAAG;AACvG;AAEA,SAAgB,EAAY,GAAgE;CAC3F,OAAO,EAAK,SAAS,EAAK,SAAS;AACpC;AAEA,SAAgB,EAAU,GAAsB,GAAmC;CAClF,IAAM,IAAQ,EAAY,CAAI;CAC9B,OAAO,EAAK,UAAU,EAAK,SAAS,OAAO,KAAU,YAAY,OAAO,KAAU,WAAW,IAAQ,OAAO,KAAiB;AAC9H;AAEA,SAAgB,EAAS,EACxB,UACA,UAAO,aAIL;CACF,OACC,kBAAC,GAAD;EACC,SAAQ;EACR,WAAW,EACV,6DACA,MAAS,UAAU,uBAAuB,oBAC3C;YAEC;CACK,CAAA;AAET;AAEA,SAAgB,EACf,GACA,GACA,GAC8B;CAI9B,OAHI,KAAU,KAAc,EAAW,MAAW,OAC1C,EAAW,KAEZ;AACR;AASA,SAAgB,EAAY,EAC3B,SACA,aAAU,CAAC,GACX,UAAO,IACP,eAAY,UACZ,GAAG,KACiB;CACpB,IAAI,CAAC,GAAM,OAAO;CAElB,IAAI,OAAO,KAAS,UAAU;EAC7B,IAAM,IAAgB,EAAQ;EAC9B,OAAO,IAAgB,kBAAC,GAAD,EAA0B,aAAY,CAAA,IAAI;CAClE;CAiBA,OAfI,EAAM,eAAe,CAAI,IACrB,EAAM,aAAa,GAA2D;EACpF,WAAW,EAAG,GAAY,EAAK,MAAiC,SAAS;EACzE,GAAG;CACJ,CAAC,IAID,OAAO,KAAS,cACZ,OAAO,KAAS,YAAY,KAAiB,cAAc,IAGxD,kBAAC,GAAD;EAA0B;EAAW,OAAO;EAAM,QAAQ;EAAM,GAAI;CAAQ,CAAA,IAG7E;AACR;AAEA,SAAgB,EACf,GACA,GACA,GACA,GACA,GACC;CACD,OAAO,EAAW;EACjB,MAAM,EAAK;EACX;EACA;EACA;EACA,UAAU,EAAK,YAAY,CAAC,EAAK;EACjC,UAAU,EAAK;CAChB,CAAC;AACF;;;ACrHA,SAAgB,EAAc,IAAa,KAAK;CAC/C,OAAO,GACL,MAAkB,CAAC,CAAC,KAAQ,EAAY,GAAY,EAAO,CAAI,CAAC,GACjE,CAAC,CAAU,CACZ;AACD;;;ACAA,SAAgB,EAAmB,EAClC,QACA,aAAU,IACV,cACA,oBAAiB,MACY;CAC7B,QAAgB;EACf,IAAI,CAAC,KAAW,CAAC,KAAa,OAAO,WAAa,KAAa;EAE/D,IAAM,KAAW,MAAyB;GACnC,GAAM,WAAW,EAAM,YACzB,EAAM,IAAI,YAAY,MAAM,EAAI,YAAY,MAC5C,KAAgB,EAAM,eAAe,GACzC,EAAU;EACX;EAGA,OADA,SAAS,iBAAiB,WAAW,CAAO,SAC/B,SAAS,oBAAoB,WAAW,CAAO;CAC7D,GAAG;EAAC;EAAS;EAAK;EAAW;CAAc,CAAC;AAC7C"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/utils.cjs"),n=require("./badge-BeSKxX1u.cjs"),r=require("./layout.types-CXFAjJCj.cjs");let i=require("react");i=e.t(i,1);let a=require("react/jsx-runtime");function o({renderLink:e,LinkComponent:t}={}){return(0,i.useMemo)(()=>r.r({renderLink:e,LinkComponent:t}),[e,t])}function s(e){if(e.startsWith(`#/`))return e.slice(1).split(`?`)[0]?.split(`#`)[0]||`/`;try{return new URL(e,`http://local.invalid`).pathname}catch{return e}}function c(e,t){let n=s(e);return n===t||n.startsWith(t+`/`)||n.startsWith(t+`?`)}function l(e){return e.label??e.title??``}function u(e,t){let n=l(e);return e.handle??e.href??(typeof n==`string`||typeof n==`number`?n:`nav-${t??0}`)}function d({value:e,size:r=`default`}){return(0,a.jsx)(n.t,{variant:`secondary`,className:t.cn(`ml-auto rounded-full tabular-nums text-sidebar-foreground`,r===`small`?`h-4 min-w-4 px-1.5`:`h-5 min-w-5 px-1.5`),children:e})}function f(e,t,n){return e&&n&&n[e]!=null?n[e]:t}function p({icon:e,iconMap:n={},size:r=20,className:o=`size-4`,...s}){if(!e)return null;if(typeof e==`string`){let t=n[e];return t?(0,a.jsx)(t,{className:o}):null}return i.isValidElement(e)?i.cloneElement(e,{className:t.cn(o,e.props.className),...s}):typeof e==`function`||typeof e==`object`&&e&&`$$typeof`in e?(0,a.jsx)(e,{className:o,width:r,height:r,...s}):null}function m(e,t,n,r,i){return e({href:t.href,children:n,className:r,active:i,disabled:t.disabled||!t.href,external:t.external})}function h(e=`/`){return(0,i.useCallback)(t=>!!t&&c(e,s(t)),[e])}function g({key:e,enabled:t=!0,onTrigger:n,preventDefault:r=!0}){(0,i.useEffect)(()=>{if(!t||!n||typeof document>`u`)return;let i=t=>{(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===e.toLowerCase()&&(r&&t.preventDefault(),n())};return document.addEventListener(`keydown`,i),()=>document.removeEventListener(`keydown`,i)},[t,e,n,r])}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return s}});
2
+ //# sourceMappingURL=hooks-CjVzmgvY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-CjVzmgvY.cjs","names":[],"sources":["../../src/components/layout/hooks/use-layout-link.tsx","../../src/components/layout/sidebar/sidebar.utils.tsx","../../src/components/layout/hooks/use-active-path.ts","../../src/components/layout/hooks/use-command-shortcut.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport function useLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\treturn useMemo(\n\t\t() => resolveLayoutLinkRenderer({ renderLink, LinkComponent }),\n\t\t[renderLink, LinkComponent],\n\t);\n}\n"," \n/** Sidebar utilities — pure path helpers, labels, icon rendering, badge pill. */\nimport * as React from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { LayoutIconSource, LayoutLinkRenderer } from '../layout.types';\nimport type { SidebarNavItem } from './sidebar.types';\n\nexport function toPath(href: string): string {\n\tif (href.startsWith('#/')) {\n\t\treturn href.slice(1).split('?')[0]?.split('#')[0] || '/';\n\t}\n\n\ttry {\n\t\treturn new URL(href, 'http://local.invalid').pathname;\n\t} catch {\n\t\treturn href;\n\t}\n}\n\nexport function isPathMatch(currentUrl: string, path: string): boolean {\n\tconst currentPath = toPath(currentUrl);\n\treturn currentPath === path || currentPath.startsWith(path + '/') || currentPath.startsWith(path + '?');\n}\n\nexport function getNavLabel(item: Pick<SidebarNavItem, 'label' | 'title'>): React.ReactNode {\n\treturn item.label ?? item.title ?? '';\n}\n\nexport function getNavKey(item: SidebarNavItem, fallbackIndex?: number): React.Key {\n\tconst label = getNavLabel(item);\n\treturn item.handle ?? item.href ?? (typeof label === 'string' || typeof label === 'number' ? label : `nav-${fallbackIndex ?? 0}`);\n}\n\nexport function NavBadge({\n\tvalue,\n\tsize = 'default',\n}: {\n\tvalue: string | number;\n\tsize?: 'default' | 'small';\n}) {\n\treturn (\n\t\t<Badge\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\t'ml-auto rounded-full tabular-nums text-sidebar-foreground',\n\t\t\t\tsize === 'small' ? 'h-4 min-w-4 px-1.5' : 'h-5 min-w-5 px-1.5',\n\t\t\t)}\n\t\t>\n\t\t\t{value}\n\t\t</Badge>\n\t);\n}\n\nexport function resolveNavBadge(\n\thandle: string | undefined,\n\titemBadge: string | number | undefined,\n\tliveBadges: Record<string, string | number> | undefined,\n): string | number | undefined {\n\tif (handle && liveBadges && liveBadges[handle] != null) {\n\t\treturn liveBadges[handle];\n\t}\n\treturn itemBadge;\n}\n\nexport interface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n\ticon: LayoutIconSource;\n\ticonMap?: Record<string, React.ComponentType<{ className?: string }>>;\n\tsize?: number;\n\tclassName?: string;\n}\n\nexport function DynamicIcon({\n\ticon,\n\ticonMap = {},\n\tsize = 20,\n\tclassName = 'size-4',\n\t...props\n}: DynamicIconProps) {\n\tif (!icon) return null;\n\n\tif (typeof icon === 'string') {\n\t\tconst IconComponent = iconMap[icon];\n\t\treturn IconComponent ? <IconComponent className={className} /> : null;\n\t}\n\n\tif (React.isValidElement(icon)) {\n\t\treturn React.cloneElement(icon as React.ReactElement<React.SVGProps<SVGSVGElement>>, {\n\t\t\tclassName: cn(className, (icon.props as { className?: string }).className),\n\t\t\t...props,\n\t\t});\n\t}\n\n\tif (\n\t\ttypeof icon === 'function'\n\t\t|| (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\n\t) {\n\t\tconst IconComponent = icon as React.ElementType<React.SVGProps<SVGSVGElement>>;\n\t\treturn <IconComponent className={className} width={size} height={size} {...props} />;\n\t}\n\n\treturn null;\n}\n\nexport function renderSidebarLink(\n\trenderLink: LayoutLinkRenderer,\n\titem: SidebarNavItem,\n\tchildren: React.ReactNode,\n\tclassName?: string,\n\tactive?: boolean,\n) {\n\treturn renderLink({\n\t\thref: item.href,\n\t\tchildren,\n\t\tclassName,\n\t\tactive,\n\t\tdisabled: item.disabled || !item.href,\n\t\texternal: item.external,\n\t});\n}\n","import { useCallback } from 'react';\n\nimport { isPathMatch, toPath } from '../sidebar/sidebar.utils';\n\nexport function useActivePath(currentUrl = '/') {\n\treturn useCallback(\n\t\t(href?: string) => !!href && isPathMatch(currentUrl, toPath(href)),\n\t\t[currentUrl],\n\t);\n}\n","import { useEffect } from 'react';\n\nexport interface UseCommandShortcutOptions {\n\tkey: string;\n\tenabled?: boolean;\n\tonTrigger?: () => void;\n\tpreventDefault?: boolean;\n}\n\nexport function useCommandShortcut({\n\tkey,\n\tenabled = true,\n\tonTrigger,\n\tpreventDefault = true,\n}: UseCommandShortcutOptions) {\n\tuseEffect(() => {\n\t\tif (!enabled || !onTrigger || typeof document === 'undefined') return;\n\n\t\tconst handler = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey)) return;\n\t\t\tif (event.key.toLowerCase() !== key.toLowerCase()) return;\n\t\t\tif (preventDefault) event.preventDefault();\n\t\t\tonTrigger();\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handler);\n\t\treturn () => document.removeEventListener('keydown', handler);\n\t}, [enabled, key, onTrigger, preventDefault]);\n}\n"],"mappings":"sNAQA,SAAgB,EAAsB,CACrC,aACA,iBAC4B,CAAC,EAAuB,CACpD,OAAA,EAAA,EAAA,aACO,EAAA,EAA0B,CAAE,aAAY,eAAc,CAAC,EAC7D,CAAC,EAAY,CAAa,CAC3B,CACD,CCNA,SAAgB,EAAO,EAAsB,CAC5C,GAAI,EAAK,WAAW,IAAI,EACvB,OAAO,EAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,IAAM,IAGtD,GAAI,CACH,OAAO,IAAI,IAAI,EAAM,sBAAsB,EAAE,QAC9C,MAAQ,CACP,OAAO,CACR,CACD,CAEA,SAAgB,EAAY,EAAoB,EAAuB,CACtE,IAAM,EAAc,EAAO,CAAU,EACrC,OAAO,IAAgB,GAAQ,EAAY,WAAW,EAAO,GAAG,GAAK,EAAY,WAAW,EAAO,GAAG,CACvG,CAEA,SAAgB,EAAY,EAAgE,CAC3F,OAAO,EAAK,OAAS,EAAK,OAAS,EACpC,CAEA,SAAgB,EAAU,EAAsB,EAAmC,CAClF,IAAM,EAAQ,EAAY,CAAI,EAC9B,OAAO,EAAK,QAAU,EAAK,OAAS,OAAO,GAAU,UAAY,OAAO,GAAU,SAAW,EAAQ,OAAO,GAAiB,IAC9H,CAEA,SAAgB,EAAS,CACxB,QACA,OAAO,WAIL,CACF,OACC,EAAA,EAAA,KAAC,EAAA,EAAD,CACC,QAAQ,YACR,UAAW,EAAA,GACV,4DACA,IAAS,QAAU,qBAAuB,oBAC3C,WAEC,CACK,CAAA,CAET,CAEA,SAAgB,EACf,EACA,EACA,EAC8B,CAI9B,OAHI,GAAU,GAAc,EAAW,IAAW,KAC1C,EAAW,GAEZ,CACR,CASA,SAAgB,EAAY,CAC3B,OACA,UAAU,CAAC,EACX,OAAO,GACP,YAAY,SACZ,GAAG,GACiB,CACpB,GAAI,CAAC,EAAM,OAAO,KAElB,GAAI,OAAO,GAAS,SAAU,CAC7B,IAAM,EAAgB,EAAQ,GAC9B,OAAO,GAAgB,EAAA,EAAA,KAAC,EAAD,CAA0B,WAAY,CAAA,EAAI,IAClE,CAiBA,OAfI,EAAM,eAAe,CAAI,EACrB,EAAM,aAAa,EAA2D,CACpF,UAAW,EAAA,GAAG,EAAY,EAAK,MAAiC,SAAS,EACzE,GAAG,CACJ,CAAC,EAID,OAAO,GAAS,YACZ,OAAO,GAAS,UAAY,GAAiB,aAAc,GAGxD,EAAA,EAAA,KAAC,EAAD,CAA0B,YAAW,MAAO,EAAM,OAAQ,EAAM,GAAI,CAAQ,CAAA,EAG7E,IACR,CAEA,SAAgB,EACf,EACA,EACA,EACA,EACA,EACC,CACD,OAAO,EAAW,CACjB,KAAM,EAAK,KACX,WACA,YACA,SACA,SAAU,EAAK,UAAY,CAAC,EAAK,KACjC,SAAU,EAAK,QAChB,CAAC,CACF,CCrHA,SAAgB,EAAc,EAAa,IAAK,CAC/C,OAAA,EAAA,EAAA,aACE,GAAkB,CAAC,CAAC,GAAQ,EAAY,EAAY,EAAO,CAAI,CAAC,EACjE,CAAC,CAAU,CACZ,CACD,CCAA,SAAgB,EAAmB,CAClC,MACA,UAAU,GACV,YACA,iBAAiB,IACY,EAC7B,EAAA,EAAA,eAAgB,CACf,GAAI,CAAC,GAAW,CAAC,GAAa,OAAO,SAAa,IAAa,OAE/D,IAAM,EAAW,GAAyB,EACnC,EAAM,SAAW,EAAM,UACzB,EAAM,IAAI,YAAY,IAAM,EAAI,YAAY,IAC5C,GAAgB,EAAM,eAAe,EACzC,EAAU,EACX,EAGA,OADA,SAAS,iBAAiB,UAAW,CAAO,MAC/B,SAAS,oBAAoB,UAAW,CAAO,CAC7D,EAAG,CAAC,EAAS,EAAK,EAAW,CAAc,CAAC,CAC7C"}
@@ -0,0 +1,262 @@
1
+ import { useStrings as e } from "../lib/strings.js";
2
+ import { cn as t } from "../lib/utils.js";
3
+ import { t as n } from "./button-DHksjMvc.js";
4
+ import { t as r } from "./buttons-DcynMPnE.js";
5
+ import { o as i, s as a } from "./typography-DE0NGEIE.js";
6
+ import { t as o } from "./badge-a2Z3K5aQ.js";
7
+ import { a as s, s as c } from "./dropdown-menu-CoWmrjYX.js";
8
+ import { t as l } from "./separator-B8FBp-7E.js";
9
+ import { t as u } from "./action-menu-CNS-fwQr.js";
10
+ import { d } from "./hooks---vunGQ6.js";
11
+ import { n as f } from "./containers-CLBmhGfs.js";
12
+ import { Fragment as p, useEffect as m, useMemo as h, useState as g } from "react";
13
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
14
+ import { ArrowLeft as b, MoreHorizontal as x } from "lucide-react";
15
+ //#region src/components/layout/page/page.tsx
16
+ function S({ header: e, width: n = "narrow", children: r, className: i, bodyClassName: a, renderLink: o, LinkComponent: s }) {
17
+ return /* @__PURE__ */ y(f, {
18
+ width: n,
19
+ className: i,
20
+ children: [!!e && /* @__PURE__ */ v(E, {
21
+ ...e,
22
+ renderLink: e.renderLink ?? o,
23
+ LinkComponent: e.LinkComponent ?? s
24
+ }), !!r && /* @__PURE__ */ v("div", {
25
+ className: t("relative block w-full", a),
26
+ children: r
27
+ })]
28
+ });
29
+ }
30
+ //#endregion
31
+ //#region src/components/layout/page/page-content.tsx
32
+ var C = {
33
+ sm: "max-w-screen-sm",
34
+ md: "max-w-screen-md",
35
+ lg: "max-w-screen-lg",
36
+ xl: "max-w-screen-xl",
37
+ "2xl": "max-w-screen-2xl",
38
+ full: "max-w-full"
39
+ };
40
+ function w({ noPadding: e = !1, maxWidth: n, className: r, children: i, ...a }) {
41
+ return /* @__PURE__ */ v("main", {
42
+ className: t("flex-1", !e && "p-4 md:p-6", n && t("mx-auto w-full", C[n]), r),
43
+ ...a,
44
+ children: i
45
+ });
46
+ }
47
+ //#endregion
48
+ //#region src/components/layout/page/partials/page-header.tsx
49
+ var T = {
50
+ h1: "border-0 pb-0 text-xl",
51
+ h2: "border-0 pb-0 text-lg",
52
+ h3: "text-base",
53
+ h4: "text-sm",
54
+ h5: "text-sm",
55
+ h6: "text-sm"
56
+ };
57
+ function E({ title: e, description: r, headingTag: s = "h3", backHref: c, onBack: u, backLabel: f = "Back", titleBadges: p = [], actions: m, slots: h, renderLink: g, LinkComponent: _, className: x, contentClassName: S, actionsClassName: C, titleClassName: w, descriptionClassName: E }) {
58
+ let D = d({
59
+ renderLink: g,
60
+ LinkComponent: _
61
+ }), O = c || u ? /* @__PURE__ */ y("div", {
62
+ className: "flex items-center gap-1.5 pt-1",
63
+ children: [c && !u ? D({
64
+ href: c,
65
+ "aria-label": f,
66
+ children: /* @__PURE__ */ y(n, {
67
+ variant: "secondary",
68
+ buttonStyle: "ghost",
69
+ size: "icon-small",
70
+ className: "h-7 w-7 rounded p-1",
71
+ children: [/* @__PURE__ */ v(b, {
72
+ className: "size-4",
73
+ "aria-hidden": "true"
74
+ }), /* @__PURE__ */ v("span", {
75
+ className: "sr-only",
76
+ children: f
77
+ })]
78
+ })
79
+ }) : /* @__PURE__ */ v(n, {
80
+ type: "button",
81
+ variant: "secondary",
82
+ buttonStyle: "ghost",
83
+ size: "icon-small",
84
+ className: "h-7 w-7 rounded p-1",
85
+ onClick: u,
86
+ "aria-label": f,
87
+ children: /* @__PURE__ */ v(b, {
88
+ className: "size-4",
89
+ "aria-hidden": "true"
90
+ })
91
+ }), /* @__PURE__ */ v(l, {
92
+ orientation: "vertical",
93
+ className: "h-7"
94
+ })]
95
+ }) : null;
96
+ return /* @__PURE__ */ y("header", {
97
+ className: t("flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between", x),
98
+ children: [/* @__PURE__ */ y("div", {
99
+ className: "flex min-w-0 flex-1 items-start gap-3",
100
+ children: [h?.back ?? O, /* @__PURE__ */ y("div", {
101
+ className: "flex min-w-0 flex-1 flex-col gap-0.5",
102
+ children: [h?.beforeTitle, /* @__PURE__ */ y("div", {
103
+ className: t("flex max-w-3xl flex-col gap-0.5", S),
104
+ children: [
105
+ /* @__PURE__ */ y("div", {
106
+ className: "flex flex-wrap items-center gap-3",
107
+ children: [/* @__PURE__ */ v(i, {
108
+ tag: s,
109
+ containerClassName: "space-y-0",
110
+ className: t(T[s], w),
111
+ children: e
112
+ }), p.length > 0 && /* @__PURE__ */ v("div", {
113
+ className: "flex items-center gap-1.5",
114
+ children: p.map((e, t) => /* @__PURE__ */ v(o, {
115
+ variant: e.variant ?? "secondary",
116
+ children: e.label
117
+ }, e.key ?? t))
118
+ })]
119
+ }),
120
+ !!r && /* @__PURE__ */ v(a, {
121
+ size: "xs",
122
+ type: "secondary",
123
+ className: E,
124
+ children: r
125
+ }),
126
+ h?.afterDescription
127
+ ]
128
+ })]
129
+ })]
130
+ }), h?.actions ?? (!!m && /* @__PURE__ */ v("div", {
131
+ className: t("shrink-0", C),
132
+ children: m
133
+ }))]
134
+ });
135
+ }
136
+ //#endregion
137
+ //#region src/components/layout/page/page.types.ts
138
+ var D = { menuLabel: "Page actions" }, O = (e) => e === "destructive" ? "error" : e === "primary" || e === "success" || e === "warning" ? "primary" : "secondary", k = "max-h-[80vh] overflow-y-auto overscroll-contain", A = 4;
139
+ function j(e, t, n) {
140
+ if (e.visible === !1) return null;
141
+ if (e.element) return /* @__PURE__ */ v("div", { children: e.element }, e.id ?? t.index);
142
+ if (n) return n(e, t);
143
+ let i = e.id ?? t.index, a = !!e.disabled || !!e.loading, o = e.icon, s = /* @__PURE__ */ y(r, {
144
+ variant: O(e.variant),
145
+ onClick: e.onClick,
146
+ disabled: a,
147
+ children: [!!o && /* @__PURE__ */ v(o, {
148
+ className: "size-3.5",
149
+ "aria-hidden": "true"
150
+ }), e.label]
151
+ }, i);
152
+ return e.href && !e.onClick ? t.renderLink({
153
+ href: e.href,
154
+ children: s,
155
+ className: "inline-flex",
156
+ target: e.target,
157
+ rel: e.rel,
158
+ external: e.external,
159
+ disabled: a
160
+ }) : s;
161
+ }
162
+ function M(e, n, r) {
163
+ let i = [], o = null;
164
+ return e.forEach(({ action: e, index: u }) => {
165
+ let d = {
166
+ ...n,
167
+ index: u,
168
+ isInline: !1
169
+ }, f = e.group ?? null, p = f !== o;
170
+ if (i.length > 0 && p && i.push(/* @__PURE__ */ v(l, { className: "my-1" }, `sep-${o ?? "root"}-${f ?? "root"}-${e.id ?? u}`)), p && (o = f, f && i.push(/* @__PURE__ */ v("div", {
171
+ className: "px-2 pt-1",
172
+ children: /* @__PURE__ */ v(a, {
173
+ size: "xxs",
174
+ weight: "semibold",
175
+ type: "secondary",
176
+ className: "uppercase tracking-wider",
177
+ children: f
178
+ })
179
+ }, `group-${f}-${e.id ?? u}`))), e.element) {
180
+ i.push(/* @__PURE__ */ v("div", { children: e.element }, e.id ?? u));
181
+ return;
182
+ }
183
+ if (r) {
184
+ i.push(/* @__PURE__ */ v("div", { children: r(e, d) }, e.id ?? u));
185
+ return;
186
+ }
187
+ let m = e.icon, h = !!e.disabled || !!e.loading, g = /* @__PURE__ */ y(_, { children: [!!m && /* @__PURE__ */ v(m, {
188
+ className: "size-3.5",
189
+ "aria-hidden": "true"
190
+ }), typeof e.label == "string" ? /* @__PURE__ */ v(a, {
191
+ tag: "span",
192
+ size: "xs",
193
+ className: "text-inherit",
194
+ children: e.label
195
+ }) : e.label] }), b = t("gap-1.5 px-2 py-1.5 text-xs", e.variant === "destructive" && "text-destructive focus-visible:text-destructive");
196
+ if (e.href && !e.onClick && !h) {
197
+ i.push(/* @__PURE__ */ v(c, {
198
+ href: e.href,
199
+ className: b,
200
+ render: (t) => d.renderLink({
201
+ ...t,
202
+ href: e.href,
203
+ children: t.children,
204
+ target: e.target,
205
+ rel: e.rel,
206
+ external: e.external
207
+ }),
208
+ children: g
209
+ }, e.id ?? u));
210
+ return;
211
+ }
212
+ i.push(/* @__PURE__ */ v(s, {
213
+ disabled: h,
214
+ onClick: e.onClick,
215
+ className: b,
216
+ children: g
217
+ }, e.id ?? u));
218
+ }), i;
219
+ }
220
+ function N({ actions: n, display: r = "dropdown", breakpoint: i = 1040, maxInlineActions: a = A, renderLink: o, LinkComponent: s, strings: c, className: l, inlineClassName: f, menuClassName: _, renderAction: b }) {
221
+ let S = e(D, c), C = d({
222
+ renderLink: o,
223
+ LinkComponent: s
224
+ }), w = h(() => (n ?? []).map((e, t) => ({
225
+ action: e,
226
+ index: t
227
+ })).filter(({ action: e }) => e.visible !== !1), [n]), [T, E] = g(!1);
228
+ if (m(() => {
229
+ if (r !== "auto" || typeof window > "u") return;
230
+ let e = () => E(window.innerWidth <= i);
231
+ return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
232
+ }, [r, i]), w.length === 0) return null;
233
+ let O = { renderLink: C }, N = t("flex items-center gap-2", f, l), P = t(k, _);
234
+ if (r === "dropdown" || r === "auto" && T) return /* @__PURE__ */ v(u, {
235
+ icon: x,
236
+ srText: S.menuLabel,
237
+ align: "end",
238
+ closeOnSelect: !0,
239
+ contentClassName: P,
240
+ children: M(w, O, b)
241
+ });
242
+ let F = Math.max(0, a), I = w.filter(({ action: e }) => (e.placement ?? "auto") !== "menu"), L = I.slice(0, F), R = [...I.slice(F), ...w.filter(({ action: e }) => (e.placement ?? "auto") === "menu")];
243
+ return /* @__PURE__ */ y("div", {
244
+ className: N,
245
+ children: [L.map((e) => /* @__PURE__ */ v(p, { children: j(e.action, {
246
+ ...O,
247
+ index: e.index,
248
+ isInline: !0
249
+ }, b) }, e.action.id ?? e.index)), R.length > 0 && /* @__PURE__ */ v(u, {
250
+ icon: x,
251
+ srText: S.menuLabel,
252
+ align: "end",
253
+ closeOnSelect: !0,
254
+ contentClassName: P,
255
+ children: M(R, O, b)
256
+ })]
257
+ });
258
+ }
259
+ //#endregion
260
+ export { S as a, w as i, D as n, E as r, N as t };
261
+
262
+ //# sourceMappingURL=layout-BXrQqUKq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-BXrQqUKq.js","names":[],"sources":["../../src/components/layout/page/page.tsx","../../src/components/layout/page/page-content.tsx","../../src/components/layout/page/partials/page-header.tsx","../../src/components/layout/page/page.types.ts","../../src/components/layout/page/partials/page-actions.tsx"],"sourcesContent":["/**\n * Page — convenience wrapper that pairs `<PageHeader>` with `<Container>`.\n * For full control, compose `<PageHeader />`, `<PageContent />`, and\n * `<Container />` directly.\n */\nimport { Container } from '@/components/layout';\nimport { PageHeader } from '@/components/layout';\nimport type { PageProps } from './page.types';\nimport { cn } from '@/lib/utils';\n\nexport function Page({\n\theader,\n\twidth = 'narrow',\n\tchildren,\n\tclassName,\n\tbodyClassName,\n\trenderLink,\n\tLinkComponent,\n}: PageProps) {\n\treturn (\n\t\t<Container width={width} className={className}>\n\t\t\t{!!header && (\n\t\t\t\t<PageHeader\n\t\t\t\t\t{...header}\n\t\t\t\t\trenderLink={header.renderLink ?? renderLink}\n\t\t\t\t\tLinkComponent={header.LinkComponent ?? LinkComponent}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!children && (\n\t\t\t\t<div className={cn('relative block w-full', bodyClassName)}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Container>\n\t);\n}\n","/**\n * PageContent — `<main>` wrapper for the body region of an app shell.\n *\n * Provides consistent padding and an optional width clamp. Lighter-weight\n * than `Page` — use directly inside an `AppShell` flexbox where the surrounding\n * structure (header, sidebar) is already in place.\n */\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageContentMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport interface PageContentProps extends HTMLAttributes<HTMLElement> {\n\t/** Body content. */\n\tchildren?: ReactNode;\n\t/** When true, removes default `p-4 md:p-6` padding. */\n\tnoPadding?: boolean;\n\t/** Optional max-width clamp (centers when set). */\n\tmaxWidth?: PageContentMaxWidth;\n}\n\nconst MAX_WIDTH_CLASS: Record<PageContentMaxWidth, string> = {\n\tsm: 'max-w-screen-sm',\n\tmd: 'max-w-screen-md',\n\tlg: 'max-w-screen-lg',\n\txl: 'max-w-screen-xl',\n\t'2xl': 'max-w-screen-2xl',\n\tfull: 'max-w-full',\n};\n\nexport function PageContent({\n\tnoPadding = false,\n\tmaxWidth,\n\tclassName,\n\tchildren,\n\t...props\n}: PageContentProps) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t'flex-1',\n\t\t\t\t!noPadding && 'p-4 md:p-6',\n\t\t\t\tmaxWidth && cn('mx-auto w-full', MAX_WIDTH_CLASS[maxWidth]),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</main>\n\t);\n}\n","/**\n * PageHeader — page title, back control, title badges, and actions.\n *\n * Navigation goes through `renderLink`; consumer apps wire framework links at\n * the boundary. Slots let consumers replace any structural region without\n * forking the page wrapper.\n */\nimport { ArrowLeft } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { PageHeaderProps, PageHeadingTag } from '../page.types';\n\nconst PAGE_TITLE_CLASS: Record<PageHeadingTag, string> = {\n\th1: 'border-0 pb-0 text-xl',\n\th2: 'border-0 pb-0 text-lg',\n\th3: 'text-base',\n\th4: 'text-sm',\n\th5: 'text-sm',\n\th6: 'text-sm',\n};\n\nexport function PageHeader({\n\ttitle,\n\tdescription,\n\theadingTag = 'h3',\n\tbackHref,\n\tonBack,\n\tbackLabel = 'Back',\n\ttitleBadges = [],\n\tactions,\n\tslots,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tcontentClassName,\n\tactionsClassName,\n\ttitleClassName,\n\tdescriptionClassName,\n}: PageHeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst hasBack = !!backHref || !!onBack;\n\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-1.5 pt-1\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7 rounded p-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t<span className=\"sr-only\">{backLabel}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\tclassName=\"h-7 w-7 rounded p-1\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t<Separator orientation=\"vertical\" className=\"h-7\" />\n\t\t</div>\n\t) : null;\n\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 flex-1 items-start gap-3\">\n\t\t\t\t{slots?.back ?? defaultBack}\n\n\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n\t\t\t\t\t{slots?.beforeTitle}\n\t\t\t\t\t<div className={cn('flex max-w-3xl flex-col gap-0.5', contentClassName)}>\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-3\">\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag={headingTag}\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName={cn(PAGE_TITLE_CLASS[headingTag], titleClassName)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t{titleBadges.length > 0 && (\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t{titleBadges.map((badge, index) => (\n\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\tkey={badge.key ?? index}\n\t\t\t\t\t\t\t\t\t\t\tvariant={badge.variant ?? 'secondary'}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{badge.label}\n\t\t\t\t\t\t\t\t\t\t</Badge>\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)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={descriptionClassName}>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{slots?.afterDescription}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{slots?.actions ?? (\n\t\t\t\t!!actions && <div className={cn('shrink-0', actionsClassName)}>{actions}</div>\n\t\t\t)}\n\t\t</header>\n\t);\n}\n","/**\n * Page-level types for `Page`, `PageHeader`, `PageActions`, and exported\n * partials. All navigation is framework-neutral via `renderLink`.\n */\nimport type { ComponentType, JSX, Key, ReactNode } from 'react';\n\nimport type {\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLinkComponent,\n} from '../layout.types';\nimport type { ContainerWidth } from '../containers/containers.types';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type PageHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nexport interface PageTitleBadge {\n\tlabel: ReactNode;\n\tvariant?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'error';\n\tkey?: Key;\n}\n\nexport interface PageHeaderSlots {\n\t/** Replaces the leading back control entirely. */\n\tback?: ReactNode;\n\t/** Additional content before the title line. */\n\tbeforeTitle?: ReactNode;\n\t/** Additional content after the description. */\n\tafterDescription?: ReactNode;\n\t/** Replaces the trailing actions region. */\n\tactions?: ReactNode;\n}\n\nexport interface PageHeaderProps extends LayoutNavigationAdapter {\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\t/** Semantic heading level for the title. Defaults to `h3` for nested app pages. */\n\theadingTag?: PageHeadingTag;\n\tbackHref?: string;\n\tonBack?: () => void;\n\tbackLabel?: string;\n\ttitleBadges?: PageTitleBadge[];\n\tactions?: ReactNode;\n\tslots?: PageHeaderSlots;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tactionsClassName?: string;\n\ttitleClassName?: string;\n\tdescriptionClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type PageActionVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'destructive'\n\t| 'success'\n\t| 'warning';\n\nexport interface PageActionContext {\n\tindex: number;\n\tisInline: boolean;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface PageAction {\n\tid?: string;\n\tlabel: ReactNode;\n\tonClick?: () => void;\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\texternal?: boolean;\n\tdisabled?: boolean;\n\tloading?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\tvariant?: PageActionVariant;\n\tvisible?: boolean;\n\tgroup?: string;\n\tplacement?: 'auto' | 'inline' | 'menu';\n\t/** Escape hatch for one action only. Prefer `renderAction` for consistent customization. */\n\telement?: ReactNode | JSX.Element;\n}\n\nexport type PageActionsDisplay = 'flat' | 'dropdown' | 'auto';\n\nexport interface PageActionsStrings {\n\tmenuLabel: string;\n}\n\nexport const defaultPageActionsStrings: PageActionsStrings = {\n\tmenuLabel: 'Page actions',\n};\n\nexport interface PageActionsProps extends LayoutNavigationAdapter {\n\tactions?: PageAction[];\n\tdisplay?: PageActionsDisplay;\n\tbreakpoint?: number;\n\t/**\n\t * Maximum non-menu actions rendered inline before overflow moves them into\n\t * the dropdown menu. Defaults to 4 for admin header density.\n\t */\n\tmaxInlineActions?: number;\n\tstrings?: StringsProp<PageActionsStrings>;\n\tclassName?: string;\n\tinlineClassName?: string;\n\tmenuClassName?: string;\n\trenderAction?: (action: PageAction, context: PageActionContext) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface PageProps extends LayoutNavigationAdapter {\n\theader?: PageHeaderProps;\n\twidth?: ContainerWidth;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tbodyClassName?: string;\n}\n","/**\n * PageActions — composable action ribbon for page headers.\n *\n * Links go through `renderLink`, never router imports or DOM click hacks.\n * Use `renderAction` for app-specific rendering while keeping grouping,\n * filtering, breakpoint, and menu placement logic centralized.\n */\nimport { Fragment, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { PageActionButton } from '@/components/base/buttons/page-action-button';\nimport { Separator } from '@/components/base/display/separator';\nimport { ActionMenu } from '@/components/base/navigation/action-menu';\nimport {\n\tDropdownMenuItem,\n\tDropdownMenuLinkItem,\n} from '@/components/base/navigation/dropdown-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultPageActionsStrings,\n\ttype PageAction,\n\ttype PageActionContext,\n\ttype PageActionVariant,\n\ttype PageActionsProps,\n} from '../page.types';\n\nconst resolveBaseVariant = (\n\tvariant: PageActionVariant | undefined,\n): 'primary' | 'secondary' | 'error' => {\n\tif (variant === 'destructive') return 'error';\n\tif (variant === 'primary' || variant === 'success' || variant === 'warning') return 'primary';\n\treturn 'secondary';\n};\n\nconst PAGE_ACTIONS_MENU_CLASS = 'max-h-[80vh] overflow-y-auto overscroll-contain';\nconst DEFAULT_MAX_INLINE_ACTIONS = 4;\n\ntype PageActionEntry = {\n\taction: PageAction;\n\tindex: number;\n};\n\nfunction renderInlineAction(\n\taction: PageAction,\n\tcontext: PageActionContext,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode {\n\tif (action.visible === false) return null;\n\tif (action.element) return <div key={action.id ?? context.index}>{action.element}</div>;\n\tif (renderAction) return renderAction(action, context);\n\n\tconst key = action.id ?? context.index;\n\tconst disabled = !!action.disabled || !!action.loading;\n\tconst Icon = action.icon;\n\tconst button = (\n\t\t<PageActionButton\n\t\t\tkey={key}\n\t\t\tvariant={resolveBaseVariant(action.variant)}\n\t\t\tonClick={action.onClick}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t{action.label}\n\t\t</PageActionButton>\n\t);\n\n\tif (action.href && !action.onClick) {\n\t\treturn context.renderLink({\n\t\t\thref: action.href,\n\t\t\tchildren: button,\n\t\t\tclassName: 'inline-flex',\n\t\t\ttarget: action.target,\n\t\t\trel: action.rel,\n\t\t\texternal: action.external,\n\t\t\tdisabled,\n\t\t});\n\t}\n\n\treturn button;\n}\n\nfunction renderMenuItems(\n\tentries: PageActionEntry[],\n\tcontextBase: Omit<PageActionContext, 'index' | 'isInline'>,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode[] {\n\tconst items: ReactNode[] = [];\n\tlet currentGroup: string | null = null;\n\n\tentries.forEach(({ action, index }) => {\n\t\tconst context: PageActionContext = { ...contextBase, index, isInline: false };\n\t\tconst nextGroup = action.group ?? null;\n\t\tconst groupChanged = nextGroup !== currentGroup;\n\n\t\tif (items.length > 0 && groupChanged) {\n\t\t\titems.push(\n\t\t\t\t<Separator\n\t\t\t\t\tkey={`sep-${currentGroup ?? 'root'}-${nextGroup ?? 'root'}-${action.id ?? index}`}\n\t\t\t\t\tclassName=\"my-1\"\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tif (groupChanged) {\n\t\t\tcurrentGroup = nextGroup;\n\t\t\tif (nextGroup) {\n\t\t\t\titems.push(\n\t\t\t\t\t<div key={`group-${nextGroup}-${action.id ?? index}`} className=\"px-2 pt-1\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"uppercase tracking-wider\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nextGroup}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (action.element) {\n\t\t\titems.push(<div key={action.id ?? index}>{action.element}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tif (renderAction) {\n\t\t\titems.push(<div key={action.id ?? index}>{renderAction(action, context)}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tconst Icon = action.icon;\n\t\tconst disabled = !!action.disabled || !!action.loading;\n\t\tconst children = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t\t{typeof action.label === 'string' ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</Text>\n\t\t\t\t) : action.label}\n\t\t\t</>\n\t\t);\n\n\t\tconst itemClassName = cn(\n\t\t\t'gap-1.5 px-2 py-1.5 text-xs',\n\t\t\taction.variant === 'destructive' && 'text-destructive focus-visible:text-destructive',\n\t\t);\n\n\t\tif (action.href && !action.onClick && !disabled) {\n\t\t\titems.push(\n\t\t\t\t<DropdownMenuLinkItem\n\t\t\t\t\tkey={action.id ?? index}\n\t\t\t\t\thref={action.href}\n\t\t\t\t\tclassName={itemClassName}\n\t\t\t\t\trender={(props) =>\n\t\t\t\t\t\tcontext.renderLink({\n\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\thref: action.href,\n\t\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t\t\ttarget: action.target,\n\t\t\t\t\t\t\trel: action.rel,\n\t\t\t\t\t\t\texternal: action.external,\n\t\t\t\t\t\t}) as React.ReactElement\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</DropdownMenuLinkItem>,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\titems.push(\n\t\t\t<DropdownMenuItem\n\t\t\t\tkey={action.id ?? index}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={action.onClick}\n\t\t\t\tclassName={itemClassName}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</DropdownMenuItem>,\n\t\t);\n\t});\n\n\treturn items;\n}\n\nexport function PageActions({\n\tactions,\n\tdisplay = 'dropdown',\n\tbreakpoint = 1040,\n\tmaxInlineActions = DEFAULT_MAX_INLINE_ACTIONS,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n\tclassName,\n\tinlineClassName,\n\tmenuClassName,\n\trenderAction,\n}: PageActionsProps) {\n\tconst strings = useStrings(defaultPageActionsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\tconst filtered = useMemo<PageActionEntry[]>(\n\t\t() => (actions ?? [])\n\t\t\t.map((action, index) => ({ action, index }))\n\t\t\t.filter(({ action }) => action.visible !== false),\n\t\t[actions],\n\t);\n\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\tuseEffect(() => {\n\t\tif (display !== 'auto' || typeof window === 'undefined') return;\n\n\t\tconst check = () => setIsNarrow(window.innerWidth <= breakpoint);\n\t\tcheck();\n\t\twindow.addEventListener('resize', check);\n\t\treturn () => window.removeEventListener('resize', check);\n\t}, [display, breakpoint]);\n\n\tif (filtered.length === 0) return null;\n\n\tconst inlineContextBase = { renderLink: resolvedRenderLink };\n\tconst inlineClass = cn('flex items-center gap-2', inlineClassName, className);\n\tconst menuContentClass = cn(PAGE_ACTIONS_MENU_CLASS, menuClassName);\n\n\tif (display === 'dropdown' || (display === 'auto' && isNarrow)) {\n\t\treturn (\n\t\t\t<ActionMenu\n\t\t\t\ticon={MoreHorizontal}\n\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\talign=\"end\"\n\t\t\t\tcloseOnSelect\n\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t>\n\t\t\t\t{renderMenuItems(filtered, inlineContextBase, renderAction)}\n\t\t\t</ActionMenu>\n\t\t);\n\t}\n\n\tconst inlineLimit = Math.max(0, maxInlineActions);\n\tconst inlineCandidates = filtered.filter(({ action }) => (action.placement ?? 'auto') !== 'menu');\n\tconst inline = inlineCandidates.slice(0, inlineLimit);\n\tconst overflow = inlineCandidates.slice(inlineLimit);\n\tconst menu = [\n\t\t...overflow,\n\t\t...filtered.filter(({ action }) => (action.placement ?? 'auto') === 'menu'),\n\t];\n\n\treturn (\n\t\t<div className={inlineClass}>\n\t\t\t{inline.map((action) => (\n\t\t\t\t<Fragment key={action.action.id ?? action.index}>\n\t\t\t\t\t{renderInlineAction(\n\t\t\t\t\t\taction.action,\n\t\t\t\t\t\t{ ...inlineContextBase, index: action.index, isInline: true },\n\t\t\t\t\t\trenderAction,\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t))}\n\t\t\t{menu.length > 0 && (\n\t\t\t\t<ActionMenu\n\t\t\t\t\ticon={MoreHorizontal}\n\t\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\t>\n\t\t\t\t\t{renderMenuItems(menu, inlineContextBase, renderAction)}\n\t\t\t\t</ActionMenu>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../lib/strings.cjs"),t=require("../lib/utils.cjs"),n=require("./button-Bd5bEIiB.cjs"),r=require("./buttons-Bek9F7qK.cjs"),i=require("./typography-CO9uwZhF.cjs"),a=require("./badge-BeSKxX1u.cjs"),o=require("./dropdown-menu-CHQzQWUK.cjs"),s=require("./separator-q42IlFFA.cjs"),c=require("./action-menu-B6yFRDz1.cjs"),l=require("./hooks-CjVzmgvY.cjs"),u=require("./containers-CB7zaAvN.cjs");let d=require("react"),f=require("react/jsx-runtime"),p=require("lucide-react");function m({header:e,width:n=`narrow`,children:r,className:i,bodyClassName:a,renderLink:o,LinkComponent:s}){return(0,f.jsxs)(u.n,{width:n,className:i,children:[!!e&&(0,f.jsx)(v,{...e,renderLink:e.renderLink??o,LinkComponent:e.LinkComponent??s}),!!r&&(0,f.jsx)(`div`,{className:t.cn(`relative block w-full`,a),children:r})]})}var h={sm:`max-w-screen-sm`,md:`max-w-screen-md`,lg:`max-w-screen-lg`,xl:`max-w-screen-xl`,"2xl":`max-w-screen-2xl`,full:`max-w-full`};function g({noPadding:e=!1,maxWidth:n,className:r,children:i,...a}){return(0,f.jsx)(`main`,{className:t.cn(`flex-1`,!e&&`p-4 md:p-6`,n&&t.cn(`mx-auto w-full`,h[n]),r),...a,children:i})}var _={h1:`border-0 pb-0 text-xl`,h2:`border-0 pb-0 text-lg`,h3:`text-base`,h4:`text-sm`,h5:`text-sm`,h6:`text-sm`};function v({title:e,description:r,headingTag:o=`h3`,backHref:c,onBack:u,backLabel:d=`Back`,titleBadges:m=[],actions:h,slots:g,renderLink:v,LinkComponent:y,className:b,contentClassName:x,actionsClassName:S,titleClassName:C,descriptionClassName:w}){let T=l.d({renderLink:v,LinkComponent:y}),E=c||u?(0,f.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-1`,children:[c&&!u?T({href:c,"aria-label":d,children:(0,f.jsxs)(n.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,className:`h-7 w-7 rounded p-1`,children:[(0,f.jsx)(p.ArrowLeft,{className:`size-4`,"aria-hidden":`true`}),(0,f.jsx)(`span`,{className:`sr-only`,children:d})]})}):(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,className:`h-7 w-7 rounded p-1`,onClick:u,"aria-label":d,children:(0,f.jsx)(p.ArrowLeft,{className:`size-4`,"aria-hidden":`true`})}),(0,f.jsx)(s.t,{orientation:`vertical`,className:`h-7`})]}):null;return(0,f.jsxs)(`header`,{className:t.cn(`flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between`,b),children:[(0,f.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[g?.back??E,(0,f.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[g?.beforeTitle,(0,f.jsxs)(`div`,{className:t.cn(`flex max-w-3xl flex-col gap-0.5`,x),children:[(0,f.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,f.jsx)(i.o,{tag:o,containerClassName:`space-y-0`,className:t.cn(_[o],C),children:e}),m.length>0&&(0,f.jsx)(`div`,{className:`flex items-center gap-1.5`,children:m.map((e,t)=>(0,f.jsx)(a.t,{variant:e.variant??`secondary`,children:e.label},e.key??t))})]}),!!r&&(0,f.jsx)(i.s,{size:`xs`,type:`secondary`,className:w,children:r}),g?.afterDescription]})]})]}),g?.actions??(!!h&&(0,f.jsx)(`div`,{className:t.cn(`shrink-0`,S),children:h}))]})}var y={menuLabel:`Page actions`},b=e=>e===`destructive`?`error`:e===`primary`||e===`success`||e===`warning`?`primary`:`secondary`,x=`max-h-[80vh] overflow-y-auto overscroll-contain`,S=4;function C(e,t,n){if(e.visible===!1)return null;if(e.element)return(0,f.jsx)(`div`,{children:e.element},e.id??t.index);if(n)return n(e,t);let i=e.id??t.index,a=!!e.disabled||!!e.loading,o=e.icon,s=(0,f.jsxs)(r.t,{variant:b(e.variant),onClick:e.onClick,disabled:a,children:[!!o&&(0,f.jsx)(o,{className:`size-3.5`,"aria-hidden":`true`}),e.label]},i);return e.href&&!e.onClick?t.renderLink({href:e.href,children:s,className:`inline-flex`,target:e.target,rel:e.rel,external:e.external,disabled:a}):s}function w(e,n,r){let a=[],c=null;return e.forEach(({action:e,index:l})=>{let u={...n,index:l,isInline:!1},d=e.group??null,p=d!==c;if(a.length>0&&p&&a.push((0,f.jsx)(s.t,{className:`my-1`},`sep-${c??`root`}-${d??`root`}-${e.id??l}`)),p&&(c=d,d&&a.push((0,f.jsx)(`div`,{className:`px-2 pt-1`,children:(0,f.jsx)(i.s,{size:`xxs`,weight:`semibold`,type:`secondary`,className:`uppercase tracking-wider`,children:d})},`group-${d}-${e.id??l}`))),e.element){a.push((0,f.jsx)(`div`,{children:e.element},e.id??l));return}if(r){a.push((0,f.jsx)(`div`,{children:r(e,u)},e.id??l));return}let m=e.icon,h=!!e.disabled||!!e.loading,g=(0,f.jsxs)(f.Fragment,{children:[!!m&&(0,f.jsx)(m,{className:`size-3.5`,"aria-hidden":`true`}),typeof e.label==`string`?(0,f.jsx)(i.s,{tag:`span`,size:`xs`,className:`text-inherit`,children:e.label}):e.label]}),_=t.cn(`gap-1.5 px-2 py-1.5 text-xs`,e.variant===`destructive`&&`text-destructive focus-visible:text-destructive`);if(e.href&&!e.onClick&&!h){a.push((0,f.jsx)(o.s,{href:e.href,className:_,render:t=>u.renderLink({...t,href:e.href,children:t.children,target:e.target,rel:e.rel,external:e.external}),children:g},e.id??l));return}a.push((0,f.jsx)(o.a,{disabled:h,onClick:e.onClick,className:_,children:g},e.id??l))}),a}function T({actions:n,display:r=`dropdown`,breakpoint:i=1040,maxInlineActions:a=S,renderLink:o,LinkComponent:s,strings:u,className:m,inlineClassName:h,menuClassName:g,renderAction:_}){let v=e.useStrings(y,u),b=l.d({renderLink:o,LinkComponent:s}),T=(0,d.useMemo)(()=>(n??[]).map((e,t)=>({action:e,index:t})).filter(({action:e})=>e.visible!==!1),[n]),[E,D]=(0,d.useState)(!1);if((0,d.useEffect)(()=>{if(r!==`auto`||typeof window>`u`)return;let e=()=>D(window.innerWidth<=i);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[r,i]),T.length===0)return null;let O={renderLink:b},k=t.cn(`flex items-center gap-2`,h,m),A=t.cn(x,g);if(r===`dropdown`||r===`auto`&&E)return(0,f.jsx)(c.t,{icon:p.MoreHorizontal,srText:v.menuLabel,align:`end`,closeOnSelect:!0,contentClassName:A,children:w(T,O,_)});let j=Math.max(0,a),M=T.filter(({action:e})=>(e.placement??`auto`)!==`menu`),N=M.slice(0,j),P=[...M.slice(j),...T.filter(({action:e})=>(e.placement??`auto`)===`menu`)];return(0,f.jsxs)(`div`,{className:k,children:[N.map(e=>(0,f.jsx)(d.Fragment,{children:C(e.action,{...O,index:e.index,isInline:!0},_)},e.action.id??e.index)),P.length>0&&(0,f.jsx)(c.t,{icon:p.MoreHorizontal,srText:v.menuLabel,align:`end`,closeOnSelect:!0,contentClassName:A,children:w(P,O,_)})]})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return T}});
2
+ //# sourceMappingURL=layout-DWicdsPI.cjs.map