themelia-react-ui 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/README.md +67 -16
  3. package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
  4. package/dist/accordion-CQXVcd7Q.js.map +1 -0
  5. package/dist/action-menu-BTpyPWJ2.js +264 -0
  6. package/dist/action-menu-BTpyPWJ2.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
  8. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
  10. package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
  12. package/dist/app-shell-BE_j8-AT.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
  14. package/dist/attachment-q69dlt5Y.js.map +1 -0
  15. package/dist/auth-M3vGMgDR.js +723 -0
  16. package/dist/auth-M3vGMgDR.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
  18. package/dist/avatar-djdaaQ_s.js.map +1 -0
  19. package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
  20. package/dist/badge-0tATj-tW.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +33 -35
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +246 -222
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +94 -92
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +7 -4
  51. package/dist/base/qr-code.js.map +1 -1
  52. package/dist/base/repeaters.js +53 -53
  53. package/dist/base/repeaters.js.map +1 -1
  54. package/dist/base/sheet.js +1 -1
  55. package/dist/base/sidebar.js +1 -1
  56. package/dist/base/signature-pad.js +84 -82
  57. package/dist/base/signature-pad.js.map +1 -1
  58. package/dist/base/skeleton.js +1 -1
  59. package/dist/base/spinner.js +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +2 -2
  63. package/dist/base/toaster.js +7 -7
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/blocks/admin.js +228 -219
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +182 -212
  72. package/dist/blocks/ai.js.map +1 -1
  73. package/dist/blocks/analytics/usage-card.js +1 -1
  74. package/dist/blocks/analytics.js +665 -620
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +2 -2
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1439 -1553
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +1 -1
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +88 -97
  84. package/dist/blocks/planning.js.map +1 -1
  85. package/dist/blocks/timelines.js +1 -1
  86. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
  87. package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
  88. package/dist/button-BS3KDg00.js +674 -0
  89. package/dist/button-BS3KDg00.js.map +1 -0
  90. package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
  91. package/dist/button-R9CCoH7A.js.map +1 -0
  92. package/dist/buttons-DS0ZIwJ_.js +99 -0
  93. package/dist/buttons-DS0ZIwJ_.js.map +1 -0
  94. package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
  95. package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
  96. package/dist/chart-DwYRKKc-.js +152 -0
  97. package/dist/chart-DwYRKKc-.js.map +1 -0
  98. package/dist/checkbox-B7ygNTYp.js +35 -0
  99. package/dist/checkbox-B7ygNTYp.js.map +1 -0
  100. package/dist/choice-inputs-DrJ17tpL.js +752 -0
  101. package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
  102. package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
  103. package/dist/code-block-CD0B7M93.js.map +1 -0
  104. package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
  105. package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
  106. package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
  107. package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
  108. package/dist/combobox-6dvVny2q.js +272 -0
  109. package/dist/combobox-6dvVny2q.js.map +1 -0
  110. package/dist/combobox-CB7039j7.js +865 -0
  111. package/dist/combobox-CB7039j7.js.map +1 -0
  112. package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
  113. package/dist/command-kPMPjIxJ.js.map +1 -0
  114. package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
  115. package/dist/comments-You0Bzbr.js.map +1 -0
  116. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -2
  118. package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
  119. package/dist/components/base/badge/badge.d.ts +1 -1
  120. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  121. package/dist/components/base/buttons/base-button.d.ts +7 -0
  122. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  123. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  124. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  125. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  126. package/dist/components/base/buttons/text-button.d.ts +2 -2
  127. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  128. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  129. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  130. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  131. package/dist/components/base/carousel/carousel.d.ts +3 -1
  132. package/dist/components/base/chart/chart.d.ts +7 -7
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
  135. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  136. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  137. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  138. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  139. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  140. package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
  141. package/dist/components/base/display/alert-dialog.d.ts +8 -2
  142. package/dist/components/base/display/content-block.d.ts +4 -2
  143. package/dist/components/base/display/date-block.d.ts +1 -1
  144. package/dist/components/base/display/dialog.d.ts +12 -5
  145. package/dist/components/base/display/surface-title.d.ts +6 -1
  146. package/dist/components/base/feedback/alert.d.ts +1 -1
  147. package/dist/components/base/feedback/state-display.d.ts +5 -4
  148. package/dist/components/base/forms/form-field.d.ts +1 -0
  149. package/dist/components/base/forms/form-sizing.d.ts +35 -3
  150. package/dist/components/base/forms/workflow.d.ts +2 -0
  151. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  152. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  153. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  154. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  155. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  156. package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
  157. package/dist/components/base/navigation/tabs.d.ts +3 -5
  158. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  159. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  160. package/dist/components/base/sheet/index.d.ts +29 -1
  161. package/dist/components/base/sheet/sheet.d.ts +14 -5
  162. package/dist/components/base/spinner/spinner.d.ts +3 -2
  163. package/dist/components/base/structure/structure.types.d.ts +1 -1
  164. package/dist/components/base/table/index.d.ts +1 -1
  165. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  166. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  167. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  168. package/dist/components/base/upload/upload.recipes.d.ts +11 -0
  169. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  170. package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
  171. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  172. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  173. package/dist/components/blocks/analytics/index.d.ts +1 -1
  174. package/dist/components/blocks/analytics/types.d.ts +1 -1
  175. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  176. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  177. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  178. package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
  179. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  180. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  181. package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
  182. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  183. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  184. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  185. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
  186. package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
  187. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  188. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  190. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  191. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  192. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  193. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  194. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  195. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  196. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  197. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  198. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  199. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  200. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  201. package/dist/components/features/media-library/media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  203. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  204. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  205. package/dist/components/features/overlays/drawer.d.ts +1 -1
  206. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  207. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  208. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  209. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  210. package/dist/components/features/overlays/overlays.types.d.ts +46 -22
  211. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  212. package/dist/components/features/products/partials/index.d.ts +1 -1
  213. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  214. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  215. package/dist/components/features/products/products.types.d.ts +2 -1
  216. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  217. package/dist/components/features/table/data-table.d.ts +1 -1
  218. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  219. package/dist/components/features/table/table.types.d.ts +1 -1
  220. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  221. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  222. package/dist/components/layout/page/index.d.ts +1 -1
  223. package/dist/components/layout/page/page.d.ts +0 -1
  224. package/dist/components/layout/page/page.types.d.ts +62 -6
  225. package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
  226. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  227. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  228. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  229. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  230. package/dist/components/primitives/date.d.ts +16 -3
  231. package/dist/components/primitives/dimensions.d.ts +6 -0
  232. package/dist/components/primitives/duration.d.ts +6 -0
  233. package/dist/components/primitives/file-size.d.ts +6 -0
  234. package/dist/components/primitives/index.d.ts +1 -1
  235. package/dist/components/primitives/initials.d.ts +11 -2
  236. package/dist/components/primitives/link.d.ts +7 -0
  237. package/dist/components/primitives/money.d.ts +29 -7
  238. package/dist/components/primitives/number.d.ts +17 -0
  239. package/dist/components/primitives/value-typography.d.ts +54 -0
  240. package/dist/components/primitives/value.d.ts +31 -6
  241. package/dist/components/typography/heading.d.ts +13 -2
  242. package/dist/components/typography/index.d.ts +1 -1
  243. package/dist/components/typography/label.d.ts +3 -0
  244. package/dist/components/typography/running-text.d.ts +12 -0
  245. package/dist/components/typography/text-link.d.ts +23 -1
  246. package/dist/components/typography/text.d.ts +12 -0
  247. package/dist/components/typography/text.styles.d.ts +37 -5
  248. package/dist/components/ui/button.d.ts +1 -1
  249. package/dist/components/ui/checkbox.d.ts +5 -0
  250. package/dist/components/ui/overlay.recipes.d.ts +15 -2
  251. package/dist/components/ui/popover.d.ts +1 -1
  252. package/dist/components/ui/select.d.ts +3 -1
  253. package/dist/components/ui/sidebar.d.ts +1 -1
  254. package/dist/components/ui/switch.d.ts +5 -0
  255. package/dist/components/ui/table.d.ts +2 -1
  256. package/dist/container.recipes-D9t8MHR3.js +27 -0
  257. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  258. package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
  259. package/dist/containers-D_L4mTVb.js.map +1 -0
  260. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  261. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  262. package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
  263. package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
  264. package/dist/data-display-3xWQUnMA.js +1335 -0
  265. package/dist/data-display-3xWQUnMA.js.map +1 -0
  266. package/dist/date-picker-DrDFj8Lo.js +1527 -0
  267. package/dist/date-picker-DrDFj8Lo.js.map +1 -0
  268. package/dist/date-pickers-CnFCb0n2.js +174 -0
  269. package/dist/date-pickers-CnFCb0n2.js.map +1 -0
  270. package/dist/date-uf3z37Nm.js +144 -0
  271. package/dist/date-uf3z37Nm.js.map +1 -0
  272. package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
  273. package/dist/display-DrdvPwF0.js.map +1 -0
  274. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
  275. package/dist/dropdown-menu-CURh59jb.js.map +1 -0
  276. package/dist/features/activities.js +177 -163
  277. package/dist/features/activities.js.map +1 -1
  278. package/dist/features/ai-chat.js +187 -183
  279. package/dist/features/ai-chat.js.map +1 -1
  280. package/dist/features/async-preview.js +9 -9
  281. package/dist/features/async-preview.js.map +1 -1
  282. package/dist/features/combobox.js +1 -1
  283. package/dist/features/comments.js +1 -1
  284. package/dist/features/data-view.js +25 -23
  285. package/dist/features/data-view.js.map +1 -1
  286. package/dist/features/email-composer/engine.js +1 -1
  287. package/dist/features/email-composer.js +353 -355
  288. package/dist/features/email-composer.js.map +1 -1
  289. package/dist/features/event-calendar.js +346 -354
  290. package/dist/features/event-calendar.js.map +1 -1
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +225 -227
  293. package/dist/features/global-search.js.map +1 -1
  294. package/dist/features/kanban.js +29 -29
  295. package/dist/features/kanban.js.map +1 -1
  296. package/dist/features/map.js +59 -58
  297. package/dist/features/map.js.map +1 -1
  298. package/dist/features/media-library.js +898 -900
  299. package/dist/features/media-library.js.map +1 -1
  300. package/dist/features/mentions.js +1 -1
  301. package/dist/features/overlays.js +1 -1
  302. package/dist/features/products.js +1412 -1444
  303. package/dist/features/products.js.map +1 -1
  304. package/dist/features/questionnaire.js +51 -49
  305. package/dist/features/questionnaire.js.map +1 -1
  306. package/dist/features/resource-assignment.js +103 -97
  307. package/dist/features/resource-assignment.js.map +1 -1
  308. package/dist/features/resource.js +13 -13
  309. package/dist/features/resource.js.map +1 -1
  310. package/dist/features/rich-text-editor.js +2 -2
  311. package/dist/features/schema-form.js +187 -183
  312. package/dist/features/schema-form.js.map +1 -1
  313. package/dist/features/suggestions.js +3 -3
  314. package/dist/features/sync.js +7 -7
  315. package/dist/features/sync.js.map +1 -1
  316. package/dist/features/table.js +1 -1
  317. package/dist/features/theme-tweaker.js +508 -503
  318. package/dist/features/theme-tweaker.js.map +1 -1
  319. package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
  320. package/dist/feedback-C7nR0UtT.js.map +1 -0
  321. package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
  322. package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
  323. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
  324. package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
  325. package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
  326. package/dist/filters-Da-gNPsE.js.map +1 -0
  327. package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
  328. package/dist/form-field-VZRULhUK.js.map +1 -0
  329. package/dist/form-sizing-uWP4lzVh.js +126 -0
  330. package/dist/form-sizing-uWP4lzVh.js.map +1 -0
  331. package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
  332. package/dist/forms-DDeEnXSY.js.map +1 -0
  333. package/dist/forms-numeric-D3CO60IF.js +905 -0
  334. package/dist/forms-numeric-D3CO60IF.js.map +1 -0
  335. package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
  336. package/dist/header-2ycNqGOR.js.map +1 -0
  337. package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
  338. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
  339. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  340. package/dist/http-CdEIHyQf.js.map +1 -0
  341. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
  342. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
  343. package/dist/index.js +2 -2
  344. package/dist/input-BoLm9Hks.js +20 -0
  345. package/dist/input-BoLm9Hks.js.map +1 -0
  346. package/dist/input-DhQdBnV3.js +255 -0
  347. package/dist/input-DhQdBnV3.js.map +1 -0
  348. package/dist/item-xzh8Df65.js +264 -0
  349. package/dist/item-xzh8Df65.js.map +1 -0
  350. package/dist/layout/app-shell.js +1 -1
  351. package/dist/layout/auth.js +1 -1
  352. package/dist/layout/containers.js +1 -1
  353. package/dist/layout/header.js +1 -1
  354. package/dist/layout/hooks.js +1 -1
  355. package/dist/layout/navigation.js +1 -1
  356. package/dist/layout/page.js +1 -1
  357. package/dist/layout/settings.js +1 -1
  358. package/dist/layout/sidebar.js +2 -2
  359. package/dist/layout/workspace.js +1 -1
  360. package/dist/layout.js +10 -10
  361. package/dist/lib/affordance-geometry.generated.d.ts +46 -10
  362. package/dist/lib/control-group-recipes.d.ts +22 -0
  363. package/dist/lib/field-affordance-recipes.d.ts +70 -2
  364. package/dist/lib/field-state-recipes.d.ts +6 -4
  365. package/dist/lib/format.d.ts +9 -0
  366. package/dist/lib/money-format.d.ts +30 -0
  367. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  368. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
  369. package/dist/lib/surface-recipes.d.ts +13 -8
  370. package/dist/lib/token-merge.generated.d.ts +144 -2
  371. package/dist/lib/track-recipes.d.ts +1 -1
  372. package/dist/lib/ui-provider/provider.d.ts +7 -2
  373. package/dist/lib/ui-provider/store.d.ts +6 -2
  374. package/dist/lib/ui-provider/types.d.ts +9 -4
  375. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  376. package/dist/lib/utils.js +1 -1
  377. package/dist/media-gallery-DQUQ0m3O.js +201 -0
  378. package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
  379. package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
  380. package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
  381. package/dist/message-YfFmbXNP.js +127 -0
  382. package/dist/message-YfFmbXNP.js.map +1 -0
  383. package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
  384. package/dist/navigation-Cbp5V8gG.js.map +1 -0
  385. package/dist/navigation-Cs1npsPm.js +300 -0
  386. package/dist/navigation-Cs1npsPm.js.map +1 -0
  387. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
  388. package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
  389. package/dist/number-CKRBYmZK.js +352 -0
  390. package/dist/number-CKRBYmZK.js.map +1 -0
  391. package/dist/overlay.recipes-CNO2S9V6.js +34 -0
  392. package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
  393. package/dist/overlays-DhZO7N-I.js +994 -0
  394. package/dist/overlays-DhZO7N-I.js.map +1 -0
  395. package/dist/page-C6R_8jFt.js +325 -0
  396. package/dist/page-C6R_8jFt.js.map +1 -0
  397. package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
  398. package/dist/page-header-hUTzcRZX.js.map +1 -0
  399. package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
  400. package/dist/pagination-Cm0jqa3I.js.map +1 -0
  401. package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
  402. package/dist/popover-Dcv_9jxr.js.map +1 -0
  403. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
  404. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
  405. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
  406. package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
  407. package/dist/primitives-BHrwQXFC.js +379 -0
  408. package/dist/primitives-BHrwQXFC.js.map +1 -0
  409. package/dist/primitives.js +5 -5
  410. package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
  411. package/dist/progress-Br9WTFya.js.map +1 -0
  412. package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
  413. package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
  414. package/dist/rich-text-editor-CF8QYt5p.js +574 -0
  415. package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
  416. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
  417. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
  418. package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
  419. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
  420. package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
  421. package/dist/scroll-area-DRdr16Pt.js.map +1 -0
  422. package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
  423. package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
  424. package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
  425. package/dist/separator-Do5GWDYi.js.map +1 -0
  426. package/dist/services/actions/action-adapters.d.ts +4 -0
  427. package/dist/services/actions.js +8 -3
  428. package/dist/services/actions.js.map +1 -1
  429. package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
  430. package/dist/settings-DHk0L2MF.js.map +1 -0
  431. package/dist/sheet-DRFNY1_D.js +207 -0
  432. package/dist/sheet-DRFNY1_D.js.map +1 -0
  433. package/dist/sidebar-Cb8WzOvE.js +511 -0
  434. package/dist/sidebar-Cb8WzOvE.js.map +1 -0
  435. package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
  436. package/dist/sidebar-Crc9M9JV.js.map +1 -0
  437. package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
  438. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
  439. package/dist/smart-card-Bek-TwUp.js +599 -0
  440. package/dist/smart-card-Bek-TwUp.js.map +1 -0
  441. package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
  442. package/dist/spinner-CmTAbEp0.js.map +1 -0
  443. package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
  444. package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
  445. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  446. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  447. package/dist/style.css +1 -1
  448. package/dist/surface-recipes-DOdoBXGm.js +28 -0
  449. package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
  450. package/dist/table-D6zKeYQX.js +162 -0
  451. package/dist/table-D6zKeYQX.js.map +1 -0
  452. package/dist/table-Dn4XSrSB.js +1444 -0
  453. package/dist/table-Dn4XSrSB.js.map +1 -0
  454. package/dist/tabs-Dk8E_knt.js +189 -0
  455. package/dist/tabs-Dk8E_knt.js.map +1 -0
  456. package/dist/text-inputs-BFpku0Qd.js +331 -0
  457. package/dist/text-inputs-BFpku0Qd.js.map +1 -0
  458. package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
  459. package/dist/text.styles-g4He6UIW.js.map +1 -0
  460. package/dist/theme.css +90 -124
  461. package/dist/themes/green.css +24 -0
  462. package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
  463. package/dist/timelines-CxuAFIc2.js.map +1 -0
  464. package/dist/track-recipes-CDcKmndW.js +10 -0
  465. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  466. package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
  467. package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
  468. package/dist/typography/rich-text.js +1 -1
  469. package/dist/typography-CAr3dQhX.js +116 -0
  470. package/dist/typography-CAr3dQhX.js.map +1 -0
  471. package/dist/typography.js +2 -2
  472. package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
  473. package/dist/ui-provider-D2_TeLqw.js.map +1 -0
  474. package/dist/ui-provider.js +1 -1
  475. package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
  476. package/dist/upload-B0WHW7ak.js.map +1 -0
  477. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
  478. package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
  479. package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
  480. package/dist/usage-card-U0YBLTNT.js.map +1 -0
  481. package/dist/utils-Cospvlj1.js +4445 -0
  482. package/dist/utils-Cospvlj1.js.map +1 -0
  483. package/dist/value-inputs-CjfzGMsN.js +854 -0
  484. package/dist/value-inputs-CjfzGMsN.js.map +1 -0
  485. package/dist/value-typography-Deb3yQZg.js +116 -0
  486. package/dist/value-typography-Deb3yQZg.js.map +1 -0
  487. package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
  488. package/dist/workspace-YoFjXi6i.js.map +1 -0
  489. package/docs/consumer-skill/SKILL.md +123 -119
  490. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  491. package/docs/consumer-skill/examples/app-layout.tsx +42 -14
  492. package/docs/consumer-skill/examples/detail.tsx +20 -5
  493. package/docs/consumer-skill/examples/edit.tsx +1 -1
  494. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  495. package/docs/consumer-skill/examples/manifest.json +37 -3
  496. package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
  497. package/docs/consumer-skill/examples/website.tsx +56 -0
  498. package/docs/consumer-skill/references/analytics.md +70 -0
  499. package/docs/consumer-skill/references/composition.md +195 -9
  500. package/docs/consumer-skill/references/design-contract.md +33 -7
  501. package/docs/consumer-skill/references/discovery.md +80 -5
  502. package/docs/consumer-skill/references/installation.md +22 -0
  503. package/docs/consumer-skill/references/integration.md +46 -1
  504. package/docs/consumer-skill/references/public-api.json +2083 -237
  505. package/docs/consumer-skill/references/review.md +74 -6
  506. package/docs/consumer-skill/references/theming.md +59 -8
  507. package/docs/consumer-skill/references/tokens.json +180 -9
  508. package/docs/consumer-skill/references/workflows.md +34 -0
  509. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  510. package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
  511. package/docs/consumer-skill/scripts/discovery.mjs +69 -9
  512. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  513. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  514. package/package.json +11 -6
  515. package/dist/accordion-B-5Focs8.js.map +0 -1
  516. package/dist/action-menu-Cx3SdfbN.js +0 -265
  517. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  518. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  519. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  520. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  521. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  522. package/dist/attachment-BO2R47wn.js.map +0 -1
  523. package/dist/auth-OFwWSAap.js +0 -704
  524. package/dist/auth-OFwWSAap.js.map +0 -1
  525. package/dist/avatar-Bpzty83c.js.map +0 -1
  526. package/dist/badge-BZXZT9wd.js.map +0 -1
  527. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  528. package/dist/button-BS6l5JUw.js.map +0 -1
  529. package/dist/buttons-Co6GavvM.js +0 -674
  530. package/dist/buttons-Co6GavvM.js.map +0 -1
  531. package/dist/chart-DVfcwQu6.js +0 -149
  532. package/dist/chart-DVfcwQu6.js.map +0 -1
  533. package/dist/checkbox-BavDRjF7.js +0 -34
  534. package/dist/checkbox-BavDRjF7.js.map +0 -1
  535. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  536. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  537. package/dist/code-block-xHKbAJDj.js.map +0 -1
  538. package/dist/combobox-DEbdr-3u.js +0 -273
  539. package/dist/combobox-DEbdr-3u.js.map +0 -1
  540. package/dist/combobox-xv3yJbzl.js +0 -850
  541. package/dist/combobox-xv3yJbzl.js.map +0 -1
  542. package/dist/command-C0xe7u9B.js.map +0 -1
  543. package/dist/comments-DviPLnwy.js.map +0 -1
  544. package/dist/containers-6s-ucRQQ.js.map +0 -1
  545. package/dist/data-display-cWIRdeaf.js +0 -1129
  546. package/dist/data-display-cWIRdeaf.js.map +0 -1
  547. package/dist/date-BFNMnrS5.js +0 -140
  548. package/dist/date-BFNMnrS5.js.map +0 -1
  549. package/dist/date-picker-CA6ogMQB.js +0 -1521
  550. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  551. package/dist/date-pickers-BPIKLdsD.js +0 -224
  552. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  553. package/dist/display-CFM5myut.js.map +0 -1
  554. package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
  555. package/dist/feedback-DWUkgEjR.js.map +0 -1
  556. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  557. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  558. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  559. package/dist/filters-BhsUtsxW.js.map +0 -1
  560. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  561. package/dist/form-sizing-BWs70_a2.js +0 -100
  562. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  563. package/dist/format-iamDSqs2.js +0 -110
  564. package/dist/format-iamDSqs2.js.map +0 -1
  565. package/dist/forms-B7pzS25o.js.map +0 -1
  566. package/dist/forms-numeric-BUBxELBv.js +0 -867
  567. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  568. package/dist/header-C59QZyxV.js.map +0 -1
  569. package/dist/http-CLTVJc5I.js.map +0 -1
  570. package/dist/input-WwYQZJzG.js +0 -202
  571. package/dist/input-WwYQZJzG.js.map +0 -1
  572. package/dist/input-ci9fIgFH.js +0 -20
  573. package/dist/input-ci9fIgFH.js.map +0 -1
  574. package/dist/item-pJ0GsOiJ.js +0 -257
  575. package/dist/item-pJ0GsOiJ.js.map +0 -1
  576. package/dist/media-gallery-DhDRgnVZ.js +0 -200
  577. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  578. package/dist/message-COsdEvXT.js +0 -108
  579. package/dist/message-COsdEvXT.js.map +0 -1
  580. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  581. package/dist/navigation-DBEu4POU.js +0 -267
  582. package/dist/navigation-DBEu4POU.js.map +0 -1
  583. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  584. package/dist/number-BNT_BIzJ.js +0 -269
  585. package/dist/number-BNT_BIzJ.js.map +0 -1
  586. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  587. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  588. package/dist/overlays-B11wZka6.js +0 -982
  589. package/dist/overlays-B11wZka6.js.map +0 -1
  590. package/dist/page-BV6ioQg3.js +0 -202
  591. package/dist/page-BV6ioQg3.js.map +0 -1
  592. package/dist/page-header-DQRa0jug.js.map +0 -1
  593. package/dist/pagination-C29vvt3I.js.map +0 -1
  594. package/dist/popover-CoLDEg19.js.map +0 -1
  595. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  596. package/dist/primitives-DKPOGVpj.js +0 -330
  597. package/dist/primitives-DKPOGVpj.js.map +0 -1
  598. package/dist/progress-BOe8l_FZ.js.map +0 -1
  599. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  600. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  601. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  602. package/dist/scroll-area-BheMQ270.js.map +0 -1
  603. package/dist/select-B2mb-qN2.js +0 -108
  604. package/dist/select-B2mb-qN2.js.map +0 -1
  605. package/dist/separator-Gk_WXH-l.js.map +0 -1
  606. package/dist/settings-BnCyyPOJ.js.map +0 -1
  607. package/dist/sheet-B-q914Ad.js +0 -205
  608. package/dist/sheet-B-q914Ad.js.map +0 -1
  609. package/dist/sidebar-C_2p3Tfj.js +0 -501
  610. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  611. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  612. package/dist/smart-card-CYLn46e6.js +0 -578
  613. package/dist/smart-card-CYLn46e6.js.map +0 -1
  614. package/dist/spinner-BY9HbUEh.js.map +0 -1
  615. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  616. package/dist/surface-recipes-CQfRr-VL.js +0 -27
  617. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  618. package/dist/table-BS39xnlq.js +0 -1424
  619. package/dist/table-BS39xnlq.js.map +0 -1
  620. package/dist/table-DnlAJ-xR.js +0 -146
  621. package/dist/table-DnlAJ-xR.js.map +0 -1
  622. package/dist/tabs-B5cNMWiP.js +0 -187
  623. package/dist/tabs-B5cNMWiP.js.map +0 -1
  624. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  625. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  626. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  627. package/dist/timelines-B9ICkQcV.js.map +0 -1
  628. package/dist/track-recipes-LLPNVwFg.js +0 -10
  629. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  630. package/dist/typography-Cv8MT-82.js +0 -96
  631. package/dist/typography-Cv8MT-82.js.map +0 -1
  632. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  633. package/dist/upload-D8Za5x_c.js.map +0 -1
  634. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  635. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  636. package/dist/utils-C2EKeIw3.js +0 -72
  637. package/dist/utils-C2EKeIw3.js.map +0 -1
  638. package/dist/value-inputs-DX2dbxjj.js +0 -824
  639. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  640. package/dist/workspace-C1PZmk8L.js.map +0 -1
@@ -0,0 +1,511 @@
1
+ "use client";
2
+ import { useStrings as e } from "./lib/strings.js";
3
+ import { t } from "./utils-Cospvlj1.js";
4
+ import { s as n } from "./typography-CAr3dQhX.js";
5
+ import { s as r } from "./button-BS3KDg00.js";
6
+ import { t as i } from "./structure-hzCW-XsV.js";
7
+ import { g as a, r as o, t as s } from "./dropdown-menu-CURh59jb.js";
8
+ import { n as c } from "./action-menu-BTpyPWJ2.js";
9
+ import { r as l } from "./skeleton-DVMXr15h.js";
10
+ import { t as u } from "./initials-format-CDoQEOd_.js";
11
+ import { i as d, n as f, s as p } from "./avatar-djdaaQ_s.js";
12
+ import { n as m, r as h, t as g } from "./collapsible-oMUGM4tr.js";
13
+ import { t as _ } from "./scroll-area-DRdr16Pt.js";
14
+ import { E as v, T as y, _ as ee, b, c as x, d as S, f as te, h as C, i as w, l as T, m as E, n as ne, o as D, r as re, s as O, t as k, v as ie, y as ae } from "./sidebar-Crc9M9JV.js";
15
+ import { a as A, c as j, d as M, i as N, l as P, o as F, r as I, s as L, u as R } from "./hooks-DQ5SPwZw.js";
16
+ import * as z from "react";
17
+ import { Fragment as B, jsx as V, jsxs as H } from "react/jsx-runtime";
18
+ import { ChevronRight as oe, ChevronsUpDown as U, ExternalLink as se, LogOut as W, Settings as G, User as K } from "lucide-react";
19
+ //#region src/components/layout/sidebar/sidebar.tsx
20
+ function q({ className: e, surfaceClassName: n, ...r }) {
21
+ return /* @__PURE__ */ V(k, {
22
+ contained: !0,
23
+ rootClassName: "layout-sidebar--component",
24
+ className: e,
25
+ surfaceClassName: t("layout-sidebar--surface", n),
26
+ ...r
27
+ });
28
+ }
29
+ //#endregion
30
+ //#region src/components/layout/sidebar/sidebar.context.tsx
31
+ var J = y;
32
+ function ce({ defaultOpen: e = !0, menuDensity: n = "compact", open: i, onOpenChange: a, className: o, style: s, children: c, ...l }) {
33
+ return /* @__PURE__ */ V(r, {
34
+ delayDuration: 0,
35
+ children: /* @__PURE__ */ V(b, {
36
+ defaultOpen: e,
37
+ menuDensity: n,
38
+ open: i,
39
+ onOpenChange: a,
40
+ style: s,
41
+ className: t("layout-sidebar-provider--component min-h-svh", o),
42
+ ...l,
43
+ children: c
44
+ })
45
+ });
46
+ }
47
+ //#endregion
48
+ //#region src/components/layout/sidebar/sidebar.types.ts
49
+ var le = {
50
+ search: "Search navigation…",
51
+ noResults: "No matching pages.",
52
+ expand: (e) => `Expand ${e}`,
53
+ collapse: (e) => `Collapse ${e}`
54
+ }, Y = {
55
+ label: "Workspace",
56
+ select: "Select workspace"
57
+ };
58
+ //#endregion
59
+ //#region src/components/layout/sidebar/components/sidebar-grouped-navigation.tsx
60
+ function ue(e, t) {
61
+ return t ? e.flatMap((e) => {
62
+ if (`${typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : e.handle ?? ""} ${e.handle ?? ""}`.toLocaleLowerCase().includes(t)) return [e];
63
+ let n = ue(e.children ?? [], t);
64
+ return n.length ? [{
65
+ ...e,
66
+ children: n
67
+ }] : [];
68
+ }) : e;
69
+ }
70
+ function X({ navigationByGroups: r, currentUrl: i = "/", iconMap: a = {}, liveBadges: o, showBadges: s = !0, renderLink: c, emptySlot: l, renderItem: u, className: d, menuDensity: f, expandedItems: p, defaultExpandedItems: _ = [], onExpandedItemsChange: y, searchValue: b = "", strings: x }) {
71
+ let T = v(), { setOpen: ne } = J(), D = f ?? T ?? "default", re = M({ renderLink: c }), k = e(le, x), [U, se] = z.useState(() => Object.fromEntries(_.map((e) => [e, {
72
+ open: !0,
73
+ route: i
74
+ }]))), W = b.trim().toLocaleLowerCase(), G = (e) => !!e && L(i, R(e)), K = (e) => !!e?.some((e) => G(e.href) || K(e.children)), q = (e, t) => p === void 0 ? U[t]?.route === i ? U[t].open : !!U[t]?.open || G(e.href) || K(e.children) : p.includes(t), ce = (e) => e.flatMap((e, t) => e.children?.length ? [String(A(e, t)), ...ce(e.children)] : []), Y = Object.values(r).flat(), X = (e, t) => {
75
+ for (let [n, r] of t.entries()) {
76
+ if (String(A(r, n)) === e) return r;
77
+ let t = X(e, r.children ?? []);
78
+ if (t) return t;
79
+ }
80
+ }, Z = (e, t) => {
81
+ if (W) return;
82
+ let n = new Set(p ?? ce(Y).filter((e) => {
83
+ let t = X(e, Y);
84
+ return t && q(t, e);
85
+ }));
86
+ t ? n.add(e) : n.delete(e), p === void 0 && se((n) => ({
87
+ ...n,
88
+ [e]: {
89
+ open: t,
90
+ route: i
91
+ }
92
+ })), y?.([...n]);
93
+ }, Q = (e, r, i, c = !1) => {
94
+ let l = String(A(e, i)), d = c || !!e.disabled, f = e.children ?? [], p = f.length > 0, _ = G(e.href), v = p && (!!W || q(e, l)), y = s ? P(e.handle, e.badge, o) : void 0, b = () => /* @__PURE__ */ V(ee, { children: f.map((e, t) => Q(e, r + 1, t, d)) }), x = {
95
+ depth: r,
96
+ active: _,
97
+ expanded: v,
98
+ disabled: d,
99
+ badge: y,
100
+ renderLink: re,
101
+ setExpanded: p ? (e) => {
102
+ d || Z(l, e);
103
+ } : void 0,
104
+ get children() {
105
+ return p && v ? b() : void 0;
106
+ }
107
+ };
108
+ if (u) return /* @__PURE__ */ V(z.Fragment, { children: u(e, x) }, l);
109
+ let S = F(e), w = typeof S == "string" || typeof S == "number" ? String(S) : e.handle ?? "", T = /* @__PURE__ */ H(B, { children: [
110
+ !!e.icon && /* @__PURE__ */ V(I, {
111
+ icon: e.icon,
112
+ iconMap: a,
113
+ className: "size-icon",
114
+ "aria-hidden": "true"
115
+ }),
116
+ /* @__PURE__ */ V(n, {
117
+ tag: "span",
118
+ weight: "medium",
119
+ className: "min-w-0 flex-1 truncate text-start text-inherit",
120
+ children: S
121
+ }),
122
+ y !== void 0 && /* @__PURE__ */ V(N, {
123
+ value: y,
124
+ size: r ? "sm" : "md"
125
+ }),
126
+ p && !e.href && /* @__PURE__ */ V(oe, {
127
+ className: t("size-icon shrink-0 transition-transform rtl:rotate-180", v && "rotate-90 rtl:rotate-90"),
128
+ "aria-hidden": "true"
129
+ })
130
+ ] }), D = r ? ie : E, O = r ? ae : C, M = /* @__PURE__ */ V(D, {
131
+ ...r === 0 ? { tooltip: { children: S } } : {},
132
+ active: _ || p && K(f),
133
+ render: e.href && !d ? j(re, e, T, void 0, _ && !K(f)) : /* @__PURE__ */ V("button", {
134
+ type: "button",
135
+ disabled: d
136
+ }),
137
+ "aria-disabled": d || void 0,
138
+ className: t("w-full font-medium", r > 0 && _ && "bg-transparent text-primary-accent hover:text-primary-accent active:text-primary-accent data-active:text-primary-accent data-[active=true]:text-primary-accent", d && "cursor-not-allowed opacity-50"),
139
+ children: T
140
+ });
141
+ return p ? /* @__PURE__ */ H(g, {
142
+ open: v,
143
+ onOpenChange: (t, n) => {
144
+ let i = n.event.target;
145
+ r === 0 && !e.href && i instanceof Element && i.closest("[data-collapsible=\"icon\"]") ? (ne(!0), Z(l, !0)) : Z(l, t);
146
+ },
147
+ disabled: d || !!W,
148
+ render: /* @__PURE__ */ V(O, {}),
149
+ children: [e.href ? /* @__PURE__ */ H(B, { children: [M, /* @__PURE__ */ V(h, {
150
+ render: /* @__PURE__ */ V(te, {}),
151
+ "aria-label": v ? k.collapse(w) : k.expand(w),
152
+ children: /* @__PURE__ */ V(oe, {
153
+ className: t("size-icon shrink-0 transition-transform rtl:rotate-180", v && "rotate-90 rtl:rotate-90"),
154
+ "aria-hidden": "true"
155
+ })
156
+ })] }) : /* @__PURE__ */ V(h, { render: M }), /* @__PURE__ */ V(m, { children: b() })]
157
+ }, l) : /* @__PURE__ */ V(O, { children: M }, l);
158
+ }, $ = Object.entries(r).map(([e, t]) => [e, ue(t, W)]).filter(([, e]) => e.length);
159
+ return $.length ? /* @__PURE__ */ V("div", {
160
+ className: t("sidebar-grouped-navigation--component flex flex-col gap-space-xl", d),
161
+ children: $.map(([e, t]) => /* @__PURE__ */ H(w, {
162
+ className: "py-0",
163
+ children: [!e.startsWith("_") && /* @__PURE__ */ V(O, { children: e }), /* @__PURE__ */ V(S, {
164
+ menuDensity: D,
165
+ children: t.map((e, t) => Q(e, 0, t))
166
+ })]
167
+ }, e))
168
+ }) : l ?? (W ? /* @__PURE__ */ V(w, { children: /* @__PURE__ */ V(n, {
169
+ type: "secondary",
170
+ children: k.noResults
171
+ }) }) : null);
172
+ }
173
+ //#endregion
174
+ //#region src/components/layout/sidebar/components/sidebar-logo.tsx
175
+ function Z({ logo: e, collapsedLogo: n = null, className: r }) {
176
+ let { state: i } = J(), a = i === "collapsed" ? n : e;
177
+ return a ? /* @__PURE__ */ V("div", {
178
+ className: t("sidebar-logo--component min-w-0", r),
179
+ children: a
180
+ }) : null;
181
+ }
182
+ //#endregion
183
+ //#region src/components/layout/sidebar/components/sidebar-navigation-footer.tsx
184
+ function Q({ items: e, label: r, currentUrl: i = "/", iconMap: a = {}, liveBadges: o, showBadges: s = !0, renderLink: c, className: l, menuDensity: u }) {
185
+ let d = v(), f = u ?? d ?? "default", p = M({ renderLink: c });
186
+ return /* @__PURE__ */ H(w, {
187
+ className: t("sidebar-navigation-footer--component group-data-[collapsible=icon]:p-0", l),
188
+ children: [!!r && /* @__PURE__ */ V(O, { children: r }), /* @__PURE__ */ V(D, { children: /* @__PURE__ */ V(S, {
189
+ menuDensity: f,
190
+ children: e.map((e, r) => {
191
+ let c = !!e.href && L(i, R(e.href)), l = s ? P(e.handle, e.badge, o) : void 0, u = F(e), d = /* @__PURE__ */ H(B, { children: [
192
+ !!e.icon && /* @__PURE__ */ V(I, {
193
+ icon: e.icon,
194
+ iconMap: a,
195
+ className: "size-icon",
196
+ "aria-hidden": "true"
197
+ }),
198
+ typeof u == "string" || typeof u == "number" ? /* @__PURE__ */ V(n, {
199
+ tag: "span",
200
+ weight: "medium",
201
+ className: "truncate text-inherit",
202
+ children: u
203
+ }) : u,
204
+ l !== void 0 && /* @__PURE__ */ V(N, { value: l }),
205
+ !!e.external && /* @__PURE__ */ V(se, {
206
+ className: "ml-auto size-icon-sm opacity-50",
207
+ "aria-hidden": "true"
208
+ })
209
+ ] });
210
+ return /* @__PURE__ */ V(C, { children: /* @__PURE__ */ V(E, {
211
+ active: c,
212
+ render: e.href && !e.disabled ? j(p, e, d, void 0, c) : void 0,
213
+ className: t("font-medium text-sidebar-foreground/70 hover:text-sidebar-accent-foreground", c && "bg-sidebar-accent text-sidebar-accent-foreground"),
214
+ tooltip: { children: u },
215
+ disabled: e.disabled,
216
+ children: d
217
+ }) }, A(e, r));
218
+ })
219
+ }) })]
220
+ });
221
+ }
222
+ //#endregion
223
+ //#region src/components/layout/sidebar/components/sidebar-workspace-dropdown.tsx
224
+ function $({ logo: r, collapsedLogo: a, workspaceLinks: o, renderLink: s, strings: l, contentClassName: u }) {
225
+ let d = e(Y, l), f = M({ renderLink: s }), { state: p, isMobile: m } = J(), h = p === "collapsed", g = h ? a ?? r : r, _ = o.map((e) => ({
226
+ id: e.url,
227
+ label: e.label,
228
+ icon: e.icon ?? se,
229
+ href: e.url,
230
+ external: e.external ?? !0,
231
+ group: d.label
232
+ })), v = /* @__PURE__ */ H(E, {
233
+ size: "lg",
234
+ "aria-label": d.select,
235
+ className: "group-data-[collapsible=icon]:p-0! data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
236
+ children: [/* @__PURE__ */ H(i, {
237
+ direction: "horizontal",
238
+ align: "center",
239
+ gap: "md",
240
+ wrap: !1,
241
+ className: "min-w-0 flex-1",
242
+ children: [g, !h && /* @__PURE__ */ V(n, {
243
+ tag: "span",
244
+ size: "xs",
245
+ className: "sr-only",
246
+ children: d.select
247
+ })]
248
+ }), !h && /* @__PURE__ */ V(U, {
249
+ className: "ml-auto size-icon shrink-0",
250
+ "aria-hidden": "true"
251
+ })]
252
+ });
253
+ return /* @__PURE__ */ V(S, {
254
+ className: "sidebar-workspace-dropdown--component",
255
+ children: /* @__PURE__ */ V(C, { children: /* @__PURE__ */ V(c, {
256
+ actions: _,
257
+ align: "start",
258
+ side: m ? "bottom" : "right",
259
+ contentClassName: t("min-w-56", u),
260
+ width: "w-auto",
261
+ closeOnSelect: !0,
262
+ preserveOrder: !0,
263
+ renderTrigger: v,
264
+ renderLink: ({ children: e, ...t }) => f({
265
+ ...t,
266
+ children: e ?? null
267
+ })
268
+ }) })
269
+ });
270
+ }
271
+ //#endregion
272
+ //#region src/components/layout/sidebar/app-sidebar.tsx
273
+ function de({ navigationGroups: n, footerNavItems: r = [], footerLabel: i, logo: a, collapsedLogo: o, workspaceLinks: s = [], workspaceStrings: c, workspaceContentClassName: l, headerClassName: u, logoClassName: d, iconMap: f, currentUrl: p = "/", liveBadges: m, showBadges: h = !0, menuDensity: g, renderLink: v, loading: y, collapsible: ee = "icon", variant: b = "sidebar", side: S = "left", className: te, surfaceClassName: C, contentClassName: w, slots: E, renderItem: D, searchable: O = !1, searchValue: k, defaultSearchValue: ie = "", onSearchValueChange: ae, strings: A, expandedItems: j, defaultExpandedItems: M, onExpandedItemsChange: N }) {
274
+ let P = e(le, A), [F, I] = z.useState(ie), L = k ?? F, R = r.length > 0 || !!E?.footer, B = y || !n, oe = s.length > 0;
275
+ return /* @__PURE__ */ H(q, {
276
+ collapsible: ee,
277
+ variant: b,
278
+ side: S,
279
+ className: t("app-sidebar--component h-svh", te),
280
+ surfaceClassName: C,
281
+ children: [
282
+ E?.header ?? ((!!a || !!E?.headerStart || !!E?.headerEnd) && /* @__PURE__ */ H(x, {
283
+ className: u,
284
+ children: [
285
+ E?.headerStart,
286
+ !!a && (oe ? /* @__PURE__ */ V($, {
287
+ logo: a,
288
+ collapsedLogo: o,
289
+ workspaceLinks: s,
290
+ strings: c,
291
+ contentClassName: l,
292
+ renderLink: v
293
+ }) : /* @__PURE__ */ V(Z, {
294
+ logo: a,
295
+ collapsedLogo: o,
296
+ className: d
297
+ })),
298
+ E?.headerEnd
299
+ ]
300
+ })),
301
+ O && /* @__PURE__ */ V(x, {
302
+ className: "group-data-[collapsible=icon]:hidden",
303
+ children: /* @__PURE__ */ V(T, {
304
+ "aria-label": P.search,
305
+ placeholder: P.search,
306
+ value: L,
307
+ disabled: B,
308
+ onChange: (e) => {
309
+ k === void 0 && I(e.target.value), ae?.(e.target.value);
310
+ }
311
+ })
312
+ }),
313
+ /* @__PURE__ */ V(ne, {
314
+ className: t("overflow-hidden", w),
315
+ children: /* @__PURE__ */ V(_, {
316
+ className: "min-h-0 flex-1 pt-space-sm",
317
+ children: /* @__PURE__ */ H("div", {
318
+ className: "app-sidebar--navigation flex flex-col gap-space-xl",
319
+ children: [
320
+ E?.beforeNavigation,
321
+ B ? E?.loading ?? /* @__PURE__ */ V(fe, {}) : /* @__PURE__ */ V(X, {
322
+ navigationByGroups: n,
323
+ currentUrl: p,
324
+ searchValue: L,
325
+ strings: P,
326
+ expandedItems: j,
327
+ defaultExpandedItems: M,
328
+ onExpandedItemsChange: N,
329
+ iconMap: f,
330
+ liveBadges: m,
331
+ showBadges: h,
332
+ menuDensity: g,
333
+ renderLink: v,
334
+ emptySlot: E?.empty,
335
+ renderItem: D
336
+ }),
337
+ E?.afterNavigation
338
+ ]
339
+ })
340
+ })
341
+ }),
342
+ R && /* @__PURE__ */ V(re, { children: E?.footer ?? /* @__PURE__ */ V(Q, {
343
+ className: "p-0",
344
+ items: r,
345
+ label: i,
346
+ currentUrl: p,
347
+ iconMap: f,
348
+ liveBadges: m,
349
+ showBadges: h,
350
+ menuDensity: g,
351
+ renderLink: v
352
+ }) })
353
+ ]
354
+ });
355
+ }
356
+ function fe() {
357
+ return /* @__PURE__ */ V("div", {
358
+ className: "flex flex-col gap-space-xl",
359
+ children: [
360
+ 9,
361
+ 3,
362
+ 4,
363
+ 2,
364
+ 1
365
+ ].map((e, t) => /* @__PURE__ */ V(w, {
366
+ className: "py-0",
367
+ children: /* @__PURE__ */ V(S, { children: Array.from({ length: e }, (e, n) => /* @__PURE__ */ V(C, { children: /* @__PURE__ */ H("div", {
368
+ className: "flex h-action-sm items-center gap-space-md px-control-sm",
369
+ children: [/* @__PURE__ */ V(l, { className: "size-icon shrink-0 rounded" }), /* @__PURE__ */ V(l, {
370
+ className: "h-3.5 rounded",
371
+ style: { width: `${60 + (t * 7 + n * 13) % 40}px` }
372
+ })]
373
+ }) }, n)) })
374
+ }, t))
375
+ });
376
+ }
377
+ //#endregion
378
+ //#region src/components/layout/sidebar/components/sidebar-navigation.tsx
379
+ function pe({ item: e }) {
380
+ let t = F(e);
381
+ return /* @__PURE__ */ V(n, {
382
+ tag: "span",
383
+ weight: "medium",
384
+ className: "truncate text-inherit",
385
+ children: t
386
+ });
387
+ }
388
+ function me({ items: e, label: n = "Platform", currentUrl: r = "/", iconMap: i = {}, liveBadges: a, showBadges: o = !0, renderLink: s, renderItem: c, className: l, menuDensity: u }) {
389
+ let d = v(), f = u ?? d ?? "default", p = M({ renderLink: s });
390
+ return /* @__PURE__ */ H(w, {
391
+ className: t("sidebar-navigation--component py-0", l),
392
+ children: [!!n && /* @__PURE__ */ V(O, { children: n }), /* @__PURE__ */ V(S, {
393
+ menuDensity: f,
394
+ children: e.map((e, n) => {
395
+ let s = !!e.href && L(r, R(e.href)), l = o ? P(e.handle, e.badge, a) : void 0, u = {
396
+ depth: 0,
397
+ active: s,
398
+ expanded: !1,
399
+ disabled: !!e.disabled,
400
+ badge: l,
401
+ renderLink: p
402
+ }, d = F(e);
403
+ if (c) return /* @__PURE__ */ V(z.Fragment, { children: c(e, u) }, A(e, n));
404
+ let f = /* @__PURE__ */ H(B, { children: [
405
+ !!e.icon && /* @__PURE__ */ V(I, {
406
+ icon: e.icon,
407
+ iconMap: i,
408
+ className: "size-icon",
409
+ "aria-hidden": "true"
410
+ }),
411
+ /* @__PURE__ */ V(pe, { item: e }),
412
+ l !== void 0 && /* @__PURE__ */ V(N, { value: l })
413
+ ] });
414
+ return /* @__PURE__ */ V(C, { children: /* @__PURE__ */ V(E, {
415
+ active: s,
416
+ render: e.href && !e.disabled ? j(p, e, f, void 0, s) : void 0,
417
+ tooltip: { children: d },
418
+ disabled: e.disabled,
419
+ className: t("font-medium", s && "bg-sidebar-accent text-sidebar-foreground", e.disabled && "cursor-not-allowed opacity-50"),
420
+ children: f
421
+ }) }, A(e, n));
422
+ })
423
+ })]
424
+ });
425
+ }
426
+ //#endregion
427
+ //#region src/components/layout/sidebar/components/sidebar-navigation-user.tsx
428
+ var he = {
429
+ profile: "Profile",
430
+ settings: "Settings",
431
+ logout: "Log out"
432
+ };
433
+ function ge({ user: t, customContent: r, onProfile: l, onSettings: m, onLogout: h, strings: g, renderTrigger: _ }) {
434
+ let v = e(he, g), { state: y, isMobile: ee } = J(), b = ee || y !== "collapsed" ? "bottom" : "right", x = u(t.name, { strategy: "first-words" }), te = [
435
+ ...l ? [{
436
+ id: "profile",
437
+ label: v.profile,
438
+ icon: K,
439
+ onClick: l
440
+ }] : [],
441
+ ...m ? [{
442
+ id: "settings",
443
+ label: v.settings,
444
+ icon: G,
445
+ onClick: m
446
+ }] : [],
447
+ ...h ? [{
448
+ id: "logout",
449
+ label: v.logout,
450
+ icon: W,
451
+ onClick: h,
452
+ ...l || m ? { group: !0 } : null
453
+ }] : []
454
+ ], w = /* @__PURE__ */ V(E, {
455
+ size: "lg",
456
+ className: "group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent",
457
+ children: _?.(t) ?? /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ H(i, {
458
+ direction: "horizontal",
459
+ align: "center",
460
+ gap: "md",
461
+ className: "min-w-0 flex-1",
462
+ children: [/* @__PURE__ */ H(f, {
463
+ className: "size-avatar rounded-full",
464
+ children: [!!t.avatar && /* @__PURE__ */ V(p, {
465
+ src: t.avatar,
466
+ alt: t.name
467
+ }), /* @__PURE__ */ V(d, {
468
+ className: "bg-sidebar-accent text-xs text-sidebar-accent-foreground",
469
+ children: x
470
+ })]
471
+ }), /* @__PURE__ */ H("div", {
472
+ className: "flex flex-1 flex-col items-start justify-center overflow-hidden",
473
+ children: [/* @__PURE__ */ V(n, {
474
+ weight: "medium",
475
+ className: "w-full truncate",
476
+ children: t.name
477
+ }), !!t.email && /* @__PURE__ */ V(n, {
478
+ size: "xs",
479
+ type: "secondary",
480
+ className: "w-full truncate",
481
+ children: t.email
482
+ })]
483
+ })]
484
+ }), /* @__PURE__ */ V(U, {
485
+ className: "ml-auto size-icon shrink-0",
486
+ "aria-hidden": "true"
487
+ })] })
488
+ }), T = "w-(--anchor-width) min-w-56 rounded-radius";
489
+ return /* @__PURE__ */ V(S, {
490
+ className: "sidebar-navigation-user--component",
491
+ children: /* @__PURE__ */ V(C, { children: r ? /* @__PURE__ */ H(s, { children: [/* @__PURE__ */ V(a, { render: w }), /* @__PURE__ */ V(o, {
492
+ className: T,
493
+ align: "end",
494
+ side: b,
495
+ sideOffset: 4,
496
+ children: r
497
+ })] }) : /* @__PURE__ */ V(c, {
498
+ actions: te,
499
+ align: "end",
500
+ side: b,
501
+ contentClassName: T,
502
+ width: "w-auto",
503
+ closeOnSelect: !0,
504
+ renderTrigger: w
505
+ }) })
506
+ });
507
+ }
508
+ //#endregion
509
+ export { $ as a, X as c, ce as d, J as f, de as i, le as l, he as n, Q as o, q as p, me as r, Z as s, ge as t, Y as u };
510
+
511
+ //# sourceMappingURL=sidebar-Cb8WzOvE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-Cb8WzOvE.js","names":["BaseSidebar","PrimitiveSidebarProvider","React","_Fragment","_Fragment","React","React","_Fragment","_Fragment","Text","TooltipProvider","Stack","DropdownMenuTrigger","DropdownMenuContent","DropdownMenu","ActionMenu","Skeleton","formatInitials","AvatarFallback","Avatar","AvatarImage","CollapsibleContent","CollapsibleTrigger","Collapsible","ScrollArea","useBaseSidebarMenuDensity","useBaseSidebarContext","SidebarMenuSub","SidebarHeader","SidebarMenu","SidebarMenuAction","SidebarMenuItem","SidebarGroup","SidebarInput","SidebarMenuButton","SidebarContent","SidebarGroupContent","SidebarFooter","SidebarGroupLabel","Sidebar","SidebarMenuSubButton","SidebarMenuSubItem","getNavKey","renderSidebarLink","useLayoutLinkRenderer","NavBadge","resolveNavBadge","getNavLabel","DynamicIcon","isPathMatch","toPath","React$1","Fragment$1","LayoutSidebar","props","cn","surfaceClassName","useLayoutSidebar","LayoutSidebarProvider","SidebarProvider","className","defaultSidebarNavigationStrings","label","defaultSidebarWorkspaceDropdownStrings","filterNavigation","query","items","item","children","SidebarGroupedNavigation","stringsProp","inheritedMenuDensity","density","menuDensity","resolvedRenderLink","strings","useStrings","overrides","setOverrides","defaultExpandedItems","key","currentUrl","searchValue","isActive","href","hasActiveChild","isExpanded","expandedItems","allBranchKeys","index","branchItems","navigationByGroups","findBranch","nested","setExpanded","keys","candidate","open","previous","onExpandedItemsChange","renderNode","disabled","ancestorDisabled","branch","active","expanded","badge","showBadges","liveBadges","renderChildren","child","depth","childIndex","context","renderItem","labelText","content","ChevronRight","Row","Item","row","target","details","setOpen","groupEntries","group","name","emptySlot","SidebarLogo","state","collapsedLogo","logo","SidebarNavigationFooter","resolvedMenuDensity","labelNode","ExternalLink","SidebarWorkspaceDropdown","isCollapsed","visibleLogo","actions","workspaceLinks","link","triggerElement","ChevronsUpDown","isMobile","contentClassName","linkProps","AppSidebar","localSearch","setLocalSearch","defaultSearchValue","hasFooter","footerNavItems","slots","isLoading","loading","navigationGroups","hasWorkspaceLinks","headerClassName","workspaceStrings","workspaceContentClassName","logoClassName","searchable","event","onSearchValueChange","AppSidebarSkeleton","footerLabel","count","groupIdx","i","NavLabel","SidebarNavigation","defaultSidebarNavigationUserStrings","SidebarNavigationUser","dropdownSide","initials","user","onProfile","User","onSettings","Settings","onLogout","LogOut","renderTrigger","contentClasses","customContent"],"sources":["../src/components/layout/sidebar/sidebar.tsx","../src/components/layout/sidebar/sidebar.context.tsx","../src/components/layout/sidebar/sidebar.types.ts","../src/components/layout/sidebar/components/sidebar-grouped-navigation.tsx","../src/components/layout/sidebar/components/sidebar-logo.tsx","../src/components/layout/sidebar/components/sidebar-navigation-footer.tsx","../src/components/layout/sidebar/components/sidebar-workspace-dropdown.tsx","../src/components/layout/sidebar/app-sidebar.tsx","../src/components/layout/sidebar/components/sidebar-navigation.tsx","../src/components/layout/sidebar/components/sidebar-navigation-user.tsx"],"sourcesContent":["/** Sidebar — application-layout composition of the tokenized Base sidebar. */\nimport {\n\tSidebar as BaseSidebar,\n\ttype SidebarProps as BaseSidebarProps,\n} from '../../base/sidebar';\nimport { cn } from '../../../lib/utils';\n\nexport type LayoutSidebarProps = Omit<BaseSidebarProps, 'contained' | 'rootClassName'>;\n\n/**\n * Layout Sidebar keeps the shell inside its parent application frame while\n * delegating responsive behavior, strings, dimensions, and surface tokens to\n * the public Base compound primitive.\n */\nexport function LayoutSidebar({ className, surfaceClassName, ...props }: LayoutSidebarProps) {\n\treturn (\n\t\t<BaseSidebar\n\t\t\tcontained\n\t\t\trootClassName=\"layout-sidebar--component\"\n\t\t\tclassName={className}\n\t\t\tsurfaceClassName={cn('layout-sidebar--surface', surfaceClassName)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"," \n/** SidebarProvider — layout-scoped wrapper around the shadcn sidebar context. */\nimport * as React from 'react';\n\nimport { TooltipProvider } from '../../base/display/tooltip';\nimport {\n\tSidebarProvider as PrimitiveSidebarProvider,\n\tuseBaseSidebarContext,\n\ttype SidebarMenuDensity,\n} from '../../base/sidebar/sidebar';\nimport { cn } from '../../../lib/utils';\n\nexport const useLayoutSidebar = useBaseSidebarContext;\nexport type LayoutSidebarContext = ReturnType<typeof useBaseSidebarContext>;\n\nexport type LayoutSidebarProviderProps = React.ComponentProps<'div'> & {\n\t/** Parent-driven drawer adaptation for embedded shells; defaults to viewport. */\n\tadaptTo?: 'viewport' | 'container';\n\t/** Whether the surface starts open, for uncontrolled use. */\n\tdefaultOpen?: boolean;\n\t/** Default row and child-list rhythm. @default 'compact' */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Whether the surface is showing. Controlled. */\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n};\n\nexport function LayoutSidebarProvider({\n\tdefaultOpen = true,\n\tmenuDensity = 'compact',\n\topen,\n\tonOpenChange,\n\tclassName,\n\tstyle,\n\tchildren,\n\t...props\n}: LayoutSidebarProviderProps) {\n\treturn (\n\t\t<TooltipProvider delayDuration={0}>\n\t\t\t<PrimitiveSidebarProvider\n\t\t\t\tdefaultOpen={defaultOpen}\n\t\t\t\tmenuDensity={menuDensity}\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\tstyle={style}\n\t\t\t\tclassName={cn('layout-sidebar-provider--component min-h-svh', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</PrimitiveSidebarProvider>\n\t\t</TooltipProvider>\n\t);\n}\n","/**\n * Sidebar types — framework-neutral navigation tree, render contexts, slots,\n * strings, and composition props.\n */\nimport type { ComponentType, ReactNode } from 'react';\n\nimport type {\n\tLayoutIconSource,\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n} from '../layout.types';\nimport type { SidebarMenuDensity } from '../../base/sidebar';\nimport type { StringsProp } from '../../../lib/strings';\n\nexport interface SidebarNavItem {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\thandle?: string;\n\t/** Leading glyph. */\n\ticon?: LayoutIconSource;\n\t/** Disables this entry and every descendant, including branches exposed by search. */\n\tdisabled?: boolean;\n\t/** Chip rendered beside the label. */\n\tbadge?: string | number;\n\tchildren?: SidebarNavItem[];\n\tgroup?: string;\n\texternal?: boolean;\n}\n\nexport type SidebarFlatNavItem = Omit<SidebarNavItem, 'children' | 'group'>;\n\nexport interface SidebarRenderItemContext {\n\tdepth: number;\n\t/** Marks the control as currently engaged. */\n\tactive: boolean;\n\texpanded: boolean;\n\t/** Effective disabled state, including any disabled ancestor. */\n\tdisabled?: boolean;\n\t/** Library-owned child list when this branch is expanded. Place it after the custom row. */\n\tchildren?: ReactNode;\n\t/** Available for custom branch renderers. */\n\tsetExpanded?: (expanded: boolean) => void;\n\t/** Chip rendered beside the label. */\n\tbadge?: string | number;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface SidebarSlots {\n\t/** Header region of the shell. */\n\theader?: ReactNode;\n\t/** Pinned content before the standard logo/workspace region, inside its padded header. */\n\theaderStart?: ReactNode;\n\t/** Pinned content after the standard logo/workspace region. Full header replacement wins. */\n\theaderEnd?: ReactNode;\n\tbeforeNavigation?: ReactNode;\n\tafterNavigation?: ReactNode;\n\t/** Content below the body. */\n\tfooter?: ReactNode;\n\tempty?: ReactNode;\n\t/** Shows the pending indicator. */\n\tloading?: ReactNode;\n}\n\nexport interface SidebarExpansionProps {\n\t/** Expanded branch keys from handle, href, or a plain-text label. Controlled. */\n\texpandedItems?: readonly string[];\n\t/** Initially expanded branches. Active ancestors also open automatically. */\n\tdefaultExpandedItems?: readonly string[];\n\t/** Called after a disclosure changes; navigation remains independent. */\n\tonExpandedItemsChange?: (keys: string[]) => void;\n}\n\nexport interface SidebarNavigationStrings {\n\tsearch: string;\n\tnoResults: string;\n\texpand: (label: string) => string;\n\tcollapse: (label: string) => string;\n}\nexport const defaultSidebarNavigationStrings: SidebarNavigationStrings = {\n\tsearch: 'Search navigation…',\n\tnoResults: 'No matching pages.',\n\texpand: label => `Expand ${label}`,\n\tcollapse: label => `Collapse ${label}`,\n};\n\nexport interface AppSidebarProps extends LayoutNavigationAdapter, SidebarExpansionProps {\n\t/** Enables the library input and local navigation filtering. */\n\tsearchable?: boolean;\n\t/** Search text. Controlled; renderNode labels use their handle as searchable text. */\n\tsearchValue?: string;\n\tdefaultSearchValue?: string;\n\tonSearchValueChange?: (value: string) => void;\n\t/** Navigation search and disclosure copy. */\n\tstrings?: StringsProp<SidebarNavigationStrings>;\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Navigation items grouped by section heading. */\n\tnavigationGroups?: Record<string, SidebarNavItem[]>;\n\t/** Navigation items pinned to the sidebar footer. */\n\tfooterNavItems?: SidebarFlatNavItem[];\n\t/** Heading above the footer navigation. */\n\tfooterLabel?: ReactNode;\n\t/** Full product mark, shown when expanded. */\n\tlogo?: ReactNode;\n\t/** Compact mark, shown when the sidebar collapses to icons. */\n\tcollapsedLogo?: ReactNode;\n\t/** Links offered in the workspace switcher. */\n\tworkspaceLinks?: WorkspaceLink[];\n\t/** Copy overrides for the workspace switcher. */\n\tworkspaceStrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\t/** Merged onto the workspace switcher content. */\n\tworkspaceContentClassName?: string;\n\t/** Merged onto the header region. */\n\theaderClassName?: string;\n\t/** Merged onto the logo. */\n\tlogoClassName?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\t/** Shows the pending indicator. */\n\tloading?: boolean;\n\t/** Whether the sidebar can collapse to icons. */\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\t/** Shell treatment. */\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\t/** Which side of the trigger the surface opens on. */\n\tside?: 'left' | 'right';\n\tclassName?: string;\n\t/** Merged onto the sidebar surface. */\n\tsurfaceClassName?: string;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n\t/** Replaces individual regions of the shell. */\n\tslots?: SidebarSlots;\n\t/** Renders one item through the consumer's router. */\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n}\n\nexport interface SidebarGroupedNavigationProps extends LayoutNavigationAdapter, SidebarExpansionProps {\n\t/** Optional local filter. Matching ancestors stay visible and open. */\n\tsearchValue?: string;\n\tstrings?: StringsProp<SidebarNavigationStrings>;\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Navigation items grouped by section heading. */\n\tnavigationByGroups: Record<string, SidebarNavItem[]>;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\t/** Shown when a group has no items. */\n\temptySlot?: ReactNode;\n\t/** Renders one item through the consumer's router. */\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n}\n\nexport interface SidebarFlatNavigationProps extends LayoutNavigationAdapter {\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Entries to render, in order. */\n\titems: SidebarFlatNavItem[];\n\t/** Display label. */\n\tlabel?: ReactNode;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\t/** Renders one item through the consumer's router. */\n\trenderItem?: (item: SidebarFlatNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n}\n\nexport interface WorkspaceLink {\n\t/** Display label. */\n\tlabel: ReactNode;\n\turl: string;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\texternal?: boolean;\n}\n\nexport interface SidebarWorkspaceDropdownStrings {\n\t/** Display label. */\n\tlabel: string;\n\tselect: string;\n}\n\nexport const defaultSidebarWorkspaceDropdownStrings: SidebarWorkspaceDropdownStrings = {\n\tlabel: 'Workspace',\n\tselect: 'Select workspace',\n};\n\nexport interface SidebarWorkspaceDropdownProps extends LayoutNavigationAdapter {\n\t/** Full product mark, shown when expanded. */\n\tlogo: ReactNode;\n\t/** Compact mark, shown when the sidebar collapses to icons. */\n\tcollapsedLogo?: ReactNode;\n\t/** Links offered in the workspace switcher. */\n\tworkspaceLinks: WorkspaceLink[];\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n}\n\nexport type SidebarFooterNavigationItem = SidebarFlatNavItem;\n\nexport interface SidebarNavigationFooterProps extends LayoutNavigationAdapter {\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Entries to render, in order. */\n\titems: SidebarFooterNavigationItem[];\n\t/** Display label. */\n\tlabel?: ReactNode;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\tclassName?: string;\n}\n","/** Grouped navigation uses public disclosure and sidebar anatomy; routing stays app-owned. */\nimport * as React from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../../base/display/collapsible';\nimport {\n\tSidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuAction,\n\tSidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton,\n\tSidebarMenuSubItem,\n} from '../../../base/sidebar';\nimport { Text } from '../../../typography';\nimport { useBaseSidebarMenuDensity } from '../../../base/sidebar/sidebar';\nimport { cn } from '../../../../lib/utils';\nimport { useStrings } from '../../../../lib/strings';\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport { useLayoutSidebar } from '../sidebar.context';\nimport { defaultSidebarNavigationStrings, type SidebarGroupedNavigationProps, type SidebarNavItem, type SidebarRenderItemContext } from '../sidebar.types';\nimport { DynamicIcon, getNavKey, getNavLabel, isPathMatch, NavBadge, renderSidebarLink, resolveNavBadge, toPath } from '../sidebar.utils';\n\nfunction filterNavigation(items: SidebarNavItem[], query: string): SidebarNavItem[] {\n\tif (!query) return items;\n\treturn items.flatMap(item => {\n\t\tconst label = typeof item.label === 'string' || typeof item.label === 'number' ? String(item.label) : item.handle ?? '';\n\t\tif (`${label} ${item.handle ?? ''}`.toLocaleLowerCase().includes(query)) return [item];\n\t\tconst children = filterNavigation(item.children ?? [], query);\n\t\treturn children.length ? [{ ...item, children }] : [];\n\t});\n}\n\nexport function SidebarGroupedNavigation({\n\tnavigationByGroups, currentUrl = '/', iconMap = {}, liveBadges,\n\tshowBadges = true, renderLink, emptySlot, renderItem, className, menuDensity,\n\texpandedItems, defaultExpandedItems = [], onExpandedItemsChange, searchValue = '', strings: stringsProp,\n}: SidebarGroupedNavigationProps) {\n\tconst inheritedMenuDensity = useBaseSidebarMenuDensity();\n\tconst { setOpen } = useLayoutSidebar();\n\tconst density = menuDensity ?? inheritedMenuDensity ?? 'default';\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst strings = useStrings(defaultSidebarNavigationStrings, stringsProp);\n\tconst [overrides, setOverrides] = React.useState<Record<string, { open: boolean; route: string }>>(() => Object.fromEntries(defaultExpandedItems.map(key => [key, { open: true, route: currentUrl }])));\n\tconst query = searchValue.trim().toLocaleLowerCase();\n\tconst isActive = (href?: string): boolean => !!href && isPathMatch(currentUrl, toPath(href));\n\tconst hasActiveChild = (items?: SidebarNavItem[]): boolean => !!items?.some(item => isActive(item.href) || hasActiveChild(item.children));\n\tconst isExpanded = (item: SidebarNavItem, key: string) => expandedItems !== undefined\n\t\t? expandedItems.includes(key)\n\t\t: overrides[key]?.route === currentUrl ? overrides[key]!.open : !!overrides[key]?.open || isActive(item.href) || hasActiveChild(item.children);\n\tconst allBranchKeys = (items: SidebarNavItem[]): string[] => items.flatMap((item, index) => item.children?.length ? [String(getNavKey(item, index)), ...allBranchKeys(item.children)] : []);\n\tconst branchItems = Object.values(navigationByGroups).flat();\n\tconst findBranch = (key: string, items: SidebarNavItem[]): SidebarNavItem | undefined => {\n\t\tfor (const [index, item] of items.entries()) {\n\t\t\tif (String(getNavKey(item, index)) === key) return item;\n\t\t\tconst nested = findBranch(key, item.children ?? []);\n\t\t\tif (nested) return nested;\n\t\t}\n\t};\n\tconst setExpanded = (key: string, open: boolean) => {\n\t\tif (query) return;\n\t\tconst keys = new Set(expandedItems ?? allBranchKeys(branchItems).filter(candidate => {\n\t\t\tconst item = findBranch(candidate, branchItems);\n\t\t\treturn item && isExpanded(item, candidate);\n\t\t}));\n\t\tif (open) keys.add(key); else keys.delete(key);\n\t\tif (expandedItems === undefined) setOverrides(previous => ({ ...previous, [key]: { open, route: currentUrl } }));\n\t\tonExpandedItemsChange?.([...keys]);\n\t};\n\n\tconst renderNode = (item: SidebarNavItem, depth: number, index: number, ancestorDisabled = false): React.ReactNode => {\n\t\tconst key = String(getNavKey(item, index));\n\t\tconst disabled = ancestorDisabled || !!item.disabled;\n\t\tconst children = item.children ?? [];\n\t\tconst branch = children.length > 0;\n\t\tconst active = isActive(item.href);\n\t\tconst expanded = branch && (!!query || isExpanded(item, key));\n\t\tconst badge = showBadges ? resolveNavBadge(item.handle, item.badge, liveBadges) : undefined;\n\t\tconst renderChildren = () => <SidebarMenuSub>{children.map((child, childIndex) => renderNode(child, depth + 1, childIndex, disabled))}</SidebarMenuSub>;\n\t\tconst context: SidebarRenderItemContext = {\n\t\t\tdepth, active, expanded, disabled, badge, renderLink: resolvedRenderLink,\n\t\t\tsetExpanded: branch ? open => { if (!disabled) setExpanded(key, open); } : undefined,\n\t\t\t// A complete row override may intentionally omit descendants. Resolve\n\t\t\t// their renderers only when the consumer requests the child-list seam.\n\t\t\tget children() { return branch && expanded ? renderChildren() : undefined; },\n\t\t};\n\t\tif (renderItem) return <React.Fragment key={key}>{renderItem(item, context)}</React.Fragment>;\n\t\tconst label = getNavLabel(item);\n\t\tconst labelText = typeof label === 'string' || typeof label === 'number' ? String(label) : item.handle ?? '';\n\t\tconst content = <>\n\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-icon\" aria-hidden=\"true\" />}\n\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"min-w-0 flex-1 truncate text-start text-inherit\">{label}</Text>\n\t\t\t{badge !== undefined && <NavBadge value={badge} size={depth ? 'sm' : 'md'} />}\n\t\t\t{branch && !item.href && <ChevronRight className={cn('size-icon shrink-0 transition-transform rtl:rotate-180', expanded && 'rotate-90 rtl:rotate-90')} aria-hidden=\"true\" />}\n\t\t</>;\n\t\tconst Row = depth ? SidebarMenuSubButton : SidebarMenuButton;\n\t\tconst Item = depth ? SidebarMenuSubItem : SidebarMenuItem;\n\t\tconst row = <Row\n\t\t\t{...(depth === 0 ? { tooltip: { children: label } } : {})}\n\t\t\tactive={active || (branch && hasActiveChild(children))}\n\t\t\trender={item.href && !disabled ? renderSidebarLink(resolvedRenderLink, item, content, undefined, active && !hasActiveChild(children)) as React.ReactElement : <button type=\"button\" disabled={disabled} />}\n\t\t\taria-disabled={disabled || undefined}\n\t\t\tclassName={cn('w-full font-medium', depth > 0 && active && 'bg-transparent text-primary-accent hover:text-primary-accent active:text-primary-accent data-active:text-primary-accent data-[active=true]:text-primary-accent', disabled && 'cursor-not-allowed opacity-50')}\n\t\t>{content}</Row>;\n\t\tif (!branch) return <Item key={key}>{row}</Item>;\n\t\treturn <Collapsible key={key} open={expanded} onOpenChange={(open, details) => {\n\t\t\t// Icon rails hide child lists. Reveal the shell and retain an open\n\t\t\t// branch rather than toggling descendants that remain inaccessible.\n\t\t\tconst target = details.event.target;\n\t\t\tif (depth === 0 && !item.href && target instanceof Element && target.closest('[data-collapsible=\"icon\"]')) {\n\t\t\t\tsetOpen(true);\n\t\t\t\tsetExpanded(key, true);\n\t\t\t} else setExpanded(key, open);\n\t\t}} disabled={disabled || !!query} render={<Item />}>\n\t\t\t{item.href ? <>\n\t\t\t\t{row}\n\t\t\t\t<CollapsibleTrigger render={<SidebarMenuAction />} aria-label={expanded ? strings.collapse(labelText) : strings.expand(labelText)}>\n\t\t\t\t\t<ChevronRight className={cn('size-icon shrink-0 transition-transform rtl:rotate-180', expanded && 'rotate-90 rtl:rotate-90')} aria-hidden=\"true\" />\n\t\t\t\t</CollapsibleTrigger>\n\t\t\t</> : <CollapsibleTrigger render={row} />}\n\t\t\t<CollapsibleContent>{renderChildren()}</CollapsibleContent>\n\t\t</Collapsible>;\n\t};\n\tconst groupEntries = Object.entries(navigationByGroups).map(([group, items]) => [group, filterNavigation(items, query)] as const).filter(([, items]) => items.length);\n\tif (!groupEntries.length) return emptySlot ?? (query ? <SidebarGroup><Text type=\"secondary\">{strings.noResults}</Text></SidebarGroup> : null);\n\t// Group labels and one shared gap separate groups; no rule between them.\n\treturn <div className={cn('sidebar-grouped-navigation--component flex flex-col gap-space-xl', className)}>\n\t\t{groupEntries.map(([name, items]) => <SidebarGroup key={name} className=\"py-0\">\n\t\t\t{!name.startsWith('_') && <SidebarGroupLabel>{name}</SidebarGroupLabel>}\n\t\t\t<SidebarMenu menuDensity={density}>{items.map((item, index) => renderNode(item, 0, index))}</SidebarMenu>\n\t\t</SidebarGroup>)}\n\t</div>;\n}\n","/** SidebarLogo — hides its logo content when the sidebar is icon-collapsed. */\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutSidebar } from '../sidebar.context';\n\nexport interface SidebarLogoProps {\n\t/** Full product mark, shown when expanded. */\n\tlogo: ReactNode;\n\t/** Compact mark, shown when the sidebar collapses to icons. */\n\tcollapsedLogo?: ReactNode;\n\tclassName?: string;\n}\n\nexport function SidebarLogo({ logo, collapsedLogo = null, className }: SidebarLogoProps) {\n\tconst { state } = useLayoutSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst content = isCollapsed ? collapsedLogo : logo;\n\tif (!content) return null;\n\treturn <div className={cn('sidebar-logo--component min-w-0', className)}>{content}</div>;\n}\n","/** SidebarNavigationFooter — secondary footer navigation using renderLink. */\nimport { ExternalLink } from 'lucide-react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { Text } from '../../../typography';\nimport { useBaseSidebarMenuDensity } from '../../../base/sidebar/sidebar';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarNavigationFooterProps } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nexport function SidebarNavigationFooter({\n\titems,\n\tlabel,\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\tshowBadges = true,\n\trenderLink,\n\tclassName,\n\tmenuDensity,\n}: SidebarNavigationFooterProps) {\n\tconst inheritedMenuDensity = useBaseSidebarMenuDensity();\n\tconst resolvedMenuDensity = menuDensity ?? inheritedMenuDensity ?? 'default';\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\treturn (\n\t\t<SidebarGroup className={cn('sidebar-navigation-footer--component group-data-[collapsible=icon]:p-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarGroupContent>\n\t\t\t\t<SidebarMenu menuDensity={resolvedMenuDensity}>\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\t\tconst badge = showBadges ? resolveNavBadge(item.handle, item.badge, liveBadges) : undefined;\n\t\t\t\t\t\tconst labelNode = getNavLabel(item);\n\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-icon\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t\t{typeof labelNode === 'string' || typeof labelNode === 'number' ? (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate text-inherit\">{labelNode}</Text>\n\t\t\t\t\t\t\t\t) : labelNode}\n\t\t\t\t\t\t\t\t{badge !== undefined && <NavBadge value={badge} />}\n\t\t\t\t\t\t\t\t{!!item.external && <ExternalLink className=\"ml-auto size-icon-sm opacity-50\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'font-medium text-sidebar-foreground/70 hover:text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</SidebarMenu>\n\t\t\t</SidebarGroupContent>\n\t\t</SidebarGroup>\n\t);\n}\n","/** SidebarWorkspaceDropdown — workspace selector using consumer link rendering. */\nimport { ChevronsUpDown, ExternalLink } from 'lucide-react';\n\nimport { ActionMenu, type ActionMenuAction } from '../../../base/action-menu';\n\nimport { Text } from '../../../typography';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { useStrings } from '../../../../lib/strings';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultSidebarWorkspaceDropdownStrings,\n\ttype SidebarWorkspaceDropdownProps,\n} from '../sidebar.types';\nimport { useLayoutSidebar } from '../sidebar.context';\n\nexport function SidebarWorkspaceDropdown({\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks,\n\trenderLink,\n\tstrings: stringsProp,\n\tcontentClassName,\n}: SidebarWorkspaceDropdownProps) {\n\tconst strings = useStrings(defaultSidebarWorkspaceDropdownStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst { state, isMobile } = useLayoutSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst visibleLogo = isCollapsed ? (collapsedLogo ?? logo) : logo;\n\n\t// Every entry is an external workspace link, captioned as one group.\n\tconst actions: ActionMenuAction[] = workspaceLinks.map((link) => ({\n\t\tid: link.url,\n\t\tlabel: link.label,\n\t\ticon: link.icon ?? ExternalLink,\n\t\thref: link.url,\n\t\texternal: link.external ?? true,\n\t\tgroup: strings.label,\n\t}));\n\n\tconst triggerElement = (\n\t\t<SidebarMenuButton\n\t\t\tsize=\"lg\"\n\t\t\taria-label={strings.select}\n\t\t\tclassName=\"group-data-[collapsible=icon]:p-0! data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\" wrap={false} className=\"min-w-0 flex-1\">\n\t\t\t\t{visibleLogo}\n\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"sr-only\">\n\t\t\t\t\t\t{strings.select}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t{!isCollapsed && <ChevronsUpDown className=\"ml-auto size-icon shrink-0\" aria-hidden=\"true\" />}\n\t\t</SidebarMenuButton>\n\t);\n\n\treturn (\n\t\t<SidebarMenu className=\"sidebar-workspace-dropdown--component\">\n\t\t\t<SidebarMenuItem>\n\t\t\t\t<ActionMenu\n\t\t\t\t\tactions={actions}\n\t\t\t\t\talign=\"start\"\n\t\t\t\t\tside={isMobile ? \"bottom\" : \"right\"}\n\t\t\t\t\tcontentClassName={cn('min-w-56', contentClassName)}\n\t\t\t\t\twidth=\"w-auto\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tpreserveOrder\n\t\t\t\t\trenderTrigger={triggerElement}\n\t\t\t\t\trenderLink={({ children, ...linkProps }) =>\n\t\t\t\t\t\tresolvedRenderLink({ ...linkProps, children: children ?? null }) as React.ReactElement\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n","/**\n * AppSidebar — opinionated assembly of logo/header, grouped navigation, and\n * footer links. Consumers still own framework routing through `renderLink`.\n */\nimport * as React from 'react';\n\nimport { ScrollArea } from '../../base/display/scroll-area';\nimport { Skeleton } from '../../base/skeleton';\nimport {\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarMenu,\n\tSidebarMenuItem,\n} from '../../base/sidebar';\nimport { cn } from '../../../lib/utils';\nimport { useStrings } from '../../../lib/strings';\nimport { defaultSidebarNavigationStrings } from './sidebar.types';\n\nimport { SidebarGroupedNavigation } from './components/sidebar-grouped-navigation';\nimport { SidebarLogo } from './components/sidebar-logo';\nimport { SidebarNavigationFooter } from './components/sidebar-navigation-footer';\nimport { SidebarWorkspaceDropdown } from './components/sidebar-workspace-dropdown';\nimport { LayoutSidebar } from './sidebar';\nimport type { AppSidebarProps } from './sidebar.types';\n\nexport function AppSidebar({\n\tnavigationGroups,\n\tfooterNavItems = [],\n\tfooterLabel,\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks = [],\n\tworkspaceStrings,\n\tworkspaceContentClassName,\n\theaderClassName,\n\tlogoClassName,\n\ticonMap,\n\tcurrentUrl = '/',\n\tliveBadges,\n\tshowBadges = true,\n\tmenuDensity,\n\trenderLink,\n\tloading,\n\tcollapsible = 'icon',\n\tvariant = 'sidebar',\n\tside = 'left',\n\tclassName,\n\tsurfaceClassName,\n\tcontentClassName,\n\tslots,\n\trenderItem,\n\tsearchable = false,\n\tsearchValue,\n\tdefaultSearchValue = '',\n\tonSearchValueChange,\n\tstrings: stringsProp,\n\texpandedItems,\n\tdefaultExpandedItems,\n\tonExpandedItemsChange,\n}: AppSidebarProps) {\n\tconst strings = useStrings(defaultSidebarNavigationStrings, stringsProp);\n\tconst [localSearch, setLocalSearch] = React.useState(defaultSearchValue);\n\tconst query = searchValue ?? localSearch;\n\tconst hasFooter = footerNavItems.length > 0 || !!slots?.footer;\n\tconst isLoading = loading || !navigationGroups;\n\tconst hasWorkspaceLinks = workspaceLinks.length > 0;\n\n\treturn (\n\t\t<LayoutSidebar collapsible={collapsible} variant={variant} side={side} className={cn('app-sidebar--component h-svh', className)} surfaceClassName={surfaceClassName}>\n\t\t\t{slots?.header ?? ((!!logo || !!slots?.headerStart || !!slots?.headerEnd) && (\n\t\t\t\t<SidebarHeader className={headerClassName}>\n\t\t\t\t\t{slots?.headerStart}\n\t\t\t\t\t{!!logo && (hasWorkspaceLinks ? (\n\t\t\t\t\t\t<SidebarWorkspaceDropdown\n\t\t\t\t\t\t\tlogo={logo}\n\t\t\t\t\t\t\tcollapsedLogo={collapsedLogo}\n\t\t\t\t\t\t\tworkspaceLinks={workspaceLinks}\n\t\t\t\t\t\t\tstrings={workspaceStrings}\n\t\t\t\t\t\t\tcontentClassName={workspaceContentClassName}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SidebarLogo logo={logo} collapsedLogo={collapsedLogo} className={logoClassName} />\n\t\t\t\t\t))}\n\t\t\t\t\t{slots?.headerEnd}\n\t\t\t\t</SidebarHeader>\n\t\t\t))}\n\n\t\t\t{searchable && <SidebarHeader className=\"group-data-[collapsible=icon]:hidden\">\n\t\t\t\t<SidebarInput aria-label={strings.search} placeholder={strings.search} value={query} disabled={isLoading} onChange={event => {\n\t\t\t\t\tif (searchValue === undefined) setLocalSearch(event.target.value);\n\t\t\t\t\tonSearchValueChange?.(event.target.value);\n\t\t\t\t}} />\n\t\t\t</SidebarHeader>}\n\n\t\t\t<SidebarContent className={cn(\"overflow-hidden\", contentClassName)}>\n\t\t\t\t<ScrollArea className=\"min-h-0 flex-1 pt-space-sm\">\n\t\t\t\t\t{/* One group gap separates slot groups and navigation groups alike. */}\n\t\t\t\t\t<div className=\"app-sidebar--navigation flex flex-col gap-space-xl\">\n\t\t\t\t\t\t{slots?.beforeNavigation}\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\tslots?.loading ?? <AppSidebarSkeleton />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<SidebarGroupedNavigation\n\t\t\t\t\t\t\t\tnavigationByGroups={navigationGroups}\n\t\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\t\tsearchValue={query}\n\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\texpandedItems={expandedItems}\n\t\t\t\t\t\t\t\tdefaultExpandedItems={defaultExpandedItems}\n\t\t\t\t\t\t\t\tonExpandedItemsChange={onExpandedItemsChange}\n\t\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\t\tshowBadges={showBadges}\n\t\t\t\t\t\t\t\tmenuDensity={menuDensity}\n\t\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\t\temptySlot={slots?.empty}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{slots?.afterNavigation}\n\t\t\t\t\t</div>\n\t\t\t\t</ScrollArea>\n\t\t\t</SidebarContent>\n\n\t\t\t{hasFooter && (\n\t\t\t\t<SidebarFooter>\n\t\t\t\t\t{slots?.footer ?? (\n\t\t\t\t\t\t<SidebarNavigationFooter\n\t\t\t\t\t\t\tclassName=\"p-0\"\n\t\t\t\t\t\t\titems={footerNavItems}\n\t\t\t\t\t\t\tlabel={footerLabel}\n\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\tshowBadges={showBadges}\n\t\t\t\t\t\t\tmenuDensity={menuDensity}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</SidebarFooter>\n\t\t\t)}\n\t\t</LayoutSidebar>\n\t);\n}\n\nfunction AppSidebarSkeleton() {\n\tconst groups = [9, 3, 4, 2, 1];\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-space-xl\">\n\t\t\t{groups.map((count, groupIdx) => (\n\t\t\t\t<SidebarGroup key={groupIdx} className=\"py-0\">\n\t\t\t\t\t<SidebarMenu>\n\t\t\t\t\t\t{Array.from({ length: count }, (_, i) => (\n\t\t\t\t\t\t\t<SidebarMenuItem key={i}>\n\t\t\t\t\t\t\t\t<div className=\"flex h-action-sm items-center gap-space-md px-control-sm\">\n\t\t\t\t\t\t\t\t\t<Skeleton className=\"size-icon shrink-0 rounded\" />\n\t\t\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-3.5 rounded\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ width: `${60 + ((groupIdx * 7 + i * 13) % 40)}px` }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</SidebarMenu>\n\t\t\t\t</SidebarGroup>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","/** SidebarNavigation — flat, framework-neutral sidebar nav list. */\nimport * as React from 'react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { Text } from '../../../typography';\nimport { useBaseSidebarMenuDensity } from '../../../base/sidebar/sidebar';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarFlatNavigationProps, SidebarFlatNavItem, SidebarRenderItemContext } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nfunction NavLabel({ item }: { item: SidebarFlatNavItem }) {\n\tconst label = getNavLabel(item);\n\treturn (\n\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate text-inherit\">\n\t\t\t{label}\n\t\t</Text>\n\t);\n}\n\nexport function SidebarNavigation({\n\titems,\n\tlabel = 'Platform',\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\tshowBadges = true,\n\trenderLink,\n\trenderItem,\n\tclassName,\n\tmenuDensity,\n}: SidebarFlatNavigationProps) {\n\tconst inheritedMenuDensity = useBaseSidebarMenuDensity();\n\tconst resolvedMenuDensity = menuDensity ?? inheritedMenuDensity ?? 'default';\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\treturn (\n\t\t<SidebarGroup className={cn('sidebar-navigation--component py-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarMenu menuDensity={resolvedMenuDensity}>\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\tconst badge = showBadges ? resolveNavBadge(item.handle, item.badge, liveBadges) : undefined;\n\t\t\t\t\tconst context: SidebarRenderItemContext = {\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tactive,\n\t\t\t\t\t\texpanded: false,\n\t\t\t\t\t\tdisabled: !!item.disabled,\n\t\t\t\t\t\tbadge,\n\t\t\t\t\t\trenderLink: resolvedRenderLink,\n\t\t\t\t\t};\n\t\t\t\t\tconst labelNode = getNavLabel(item);\n\n\t\t\t\t\tif (renderItem) {\n\t\t\t\t\t\treturn <React.Fragment key={getNavKey(item, index)}>{renderItem(item, context)}</React.Fragment>;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-icon\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t<NavLabel item={item} />\n\t\t\t\t\t\t\t{badge !== undefined && <NavBadge value={badge} />}\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'font-medium',\n\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</SidebarMenu>\n\t\t</SidebarGroup>\n\t);\n}\n"," \n/** SidebarNavigationUser — user profile dropdown for sidebar footer. */\nimport { ChevronsUpDown, LogOut, Settings, User } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { ActionMenu, type ActionMenuAction } from '../../../base/action-menu';\nimport { Avatar, AvatarFallback, AvatarImage } from '../../../base/avatar';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuTrigger,\n} from '../../../base/navigation/dropdown-menu';\nimport { formatInitials } from '../../../primitives/initials-format';\nimport { Text } from '../../../typography';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\n\nimport type { LayoutUser } from '../../layout.types';\nimport { useLayoutSidebar } from '../sidebar.context';\nimport { Stack } from '../../../base/structure';\n\nexport interface SidebarNavigationUserStrings {\n\tprofile: string;\n\tsettings: string;\n\tlogout: string;\n}\n\nexport const defaultSidebarNavigationUserStrings: SidebarNavigationUserStrings = {\n\tprofile: 'Profile',\n\tsettings: 'Settings',\n\tlogout: 'Log out',\n};\n\nexport interface SidebarNavigationUserProps {\n\t/** The signed-in user shown in the menu. */\n\tuser: LayoutUser;\n\t/** Extra content appended inside the menu. */\n\tcustomContent?: ReactNode;\n\tonProfile?: () => void;\n\tonSettings?: () => void;\n\tonLogout?: () => void;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SidebarNavigationUserStrings>;\n\t/** Replaces the default trigger element. */\n\trenderTrigger?: (user: LayoutUser) => ReactNode;\n}\n\nexport function SidebarNavigationUser({\n\tuser,\n\tcustomContent,\n\tonProfile,\n\tonSettings,\n\tonLogout,\n\tstrings: stringsProp,\n\trenderTrigger,\n}: SidebarNavigationUserProps) {\n\tconst strings = useStrings(defaultSidebarNavigationUserStrings, stringsProp);\n\tconst { state, isMobile } = useLayoutSidebar();\n\tconst dropdownSide = isMobile || state !== 'collapsed' ? 'bottom' : 'right';\n\tconst initials = formatInitials(user.name, { strategy: 'first-words' });\n\n\t// Profile and settings together; sign-out held apart by a captionless rule.\n\tconst actions: ActionMenuAction[] = [\n\t\t...(onProfile ? [{ id: 'profile', label: strings.profile, icon: User, onClick: onProfile }] : []),\n\t\t...(onSettings ? [{ id: 'settings', label: strings.settings, icon: Settings, onClick: onSettings }] : []),\n\t\t...(onLogout\n\t\t\t? [{\n\t\t\t\tid: 'logout',\n\t\t\t\tlabel: strings.logout,\n\t\t\t\ticon: LogOut,\n\t\t\t\tonClick: onLogout,\n\t\t\t\t...(onProfile || onSettings ? { group: true as const } : null),\n\t\t\t}]\n\t\t\t: []),\n\t];\n\n\tconst triggerElement = (\n\t\t<SidebarMenuButton\n\t\t\tsize=\"lg\"\n\t\t\tclassName=\"group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent\"\n\t\t>\n\t\t\t{renderTrigger?.(user) ?? (\n\t\t\t\t<>\n\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\" className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t<Avatar className=\"size-avatar rounded-full\">\n\t\t\t\t\t\t\t{!!user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n\t\t\t\t\t\t\t<AvatarFallback className=\"bg-sidebar-accent text-xs text-sidebar-accent-foreground\">\n\t\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t<div className=\"flex flex-1 flex-col items-start justify-center overflow-hidden\">\n\t\t\t\t\t\t\t<Text weight=\"medium\" className=\"w-full truncate\">{user.name}</Text>\n\t\t\t\t\t\t\t{!!user.email && <Text size=\"xs\" type=\"secondary\" className=\"w-full truncate\">{user.email}</Text>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<ChevronsUpDown className=\"ml-auto size-icon shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</SidebarMenuButton>\n\t);\n\n\tconst contentClasses = 'w-(--anchor-width) min-w-56 rounded-radius';\n\n\treturn (\n\t\t<SidebarMenu className=\"sidebar-navigation-user--component\">\n\t\t\t<SidebarMenuItem>\n\t\t\t\t{customContent ? (\n\t\t\t\t\t// A replaced body is a plain dropdown, not a command list, so it\n\t\t\t\t\t// keeps the primitive rather than bending ActionMenu around it.\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger render={triggerElement} />\n\t\t\t\t\t\t<DropdownMenuContent\n\t\t\t\t\t\t\tclassName={contentClasses}\n\t\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\t\tside={dropdownSide}\n\t\t\t\t\t\t\tsideOffset={4}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{customContent}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) : (\n\t\t\t\t\t<ActionMenu\n\t\t\t\t\t\tactions={actions}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tside={dropdownSide}\n\t\t\t\t\t\tcontentClassName={contentClasses}\n\t\t\t\t\t\twidth=\"w-auto\"\n\t\t\t\t\t\tcloseOnSelect\n\t\t\t\t\t\trenderTrigger={triggerElement}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n"],"mappings":"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"}