themelia-react-ui 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/CHANGELOG.md +135 -0
  2. package/README.md +113 -18
  3. package/dist/{accordion-96o0pN62.js → accordion-B9MHG0cT.js} +11 -11
  4. package/dist/accordion-B9MHG0cT.js.map +1 -0
  5. package/dist/{action-menu-CHgs8vmj.js → action-menu-Dr8K-ghE.js} +48 -45
  6. package/dist/action-menu-Dr8K-ghE.js.map +1 -0
  7. package/dist/{affordance-geometry.generated-B8yGOr8-.js → affordance-geometry.generated-P-aVJisu.js} +36 -36
  8. package/dist/affordance-geometry.generated-P-aVJisu.js.map +1 -0
  9. package/dist/{ai-artifact-BZUGwBq6.js → ai-artifact-C58tQcBy.js} +210 -174
  10. package/dist/ai-artifact-C58tQcBy.js.map +1 -0
  11. package/dist/app-shell-B_IuNWOo.js +321 -0
  12. package/dist/app-shell-B_IuNWOo.js.map +1 -0
  13. package/dist/{attachment-DkoqHPPl.js → attachment-Dg_69lPS.js} +9 -9
  14. package/dist/{attachment-DkoqHPPl.js.map → attachment-Dg_69lPS.js.map} +1 -1
  15. package/dist/{auth-D2FVZ1MH.js → auth-DTkkshS8.js} +43 -46
  16. package/dist/auth-DTkkshS8.js.map +1 -0
  17. package/dist/{avatar-DWO_HHhB.js → avatar-CeZaFmNH.js} +8 -8
  18. package/dist/avatar-CeZaFmNH.js.map +1 -0
  19. package/dist/{badge-DErMA7ul.js → badge-xIiV_E7f.js} +5 -5
  20. package/dist/{badge-DErMA7ul.js.map → badge-xIiV_E7f.js.map} +1 -1
  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/batch-action-bar.js +1 -1
  27. package/dist/base/buttons.js +1 -1
  28. package/dist/base/cards.js +2 -2
  29. package/dist/base/carousel.js +3 -3
  30. package/dist/base/cascader.js +2 -372
  31. package/dist/base/chart.js +1 -1
  32. package/dist/base/choice-inputs.js +2 -2
  33. package/dist/base/code-block.js +1 -1
  34. package/dist/base/combobox.js +2 -2
  35. package/dist/base/command.js +1 -1
  36. package/dist/base/copyable.js +1 -1
  37. package/dist/base/date-pickers.js +2 -2
  38. package/dist/base/display.js +6 -6
  39. package/dist/base/feedback.js +3 -3
  40. package/dist/base/forms-numeric.js +1 -1
  41. package/dist/base/forms.js +2 -2
  42. package/dist/base/inline-edit.js +10 -10
  43. package/dist/base/item.js +1 -1
  44. package/dist/base/media-gallery.js +1 -1
  45. package/dist/base/metadata-list.js +1 -1
  46. package/dist/base/navigation.js +7 -7
  47. package/dist/base/popover-menu.js +1 -1
  48. package/dist/base/popover.js +1 -1
  49. package/dist/base/qr-code.js +1 -1
  50. package/dist/base/repeaters.js +12 -12
  51. package/dist/base/repeaters.js.map +1 -1
  52. package/dist/base/sheet.js +1 -1
  53. package/dist/base/sidebar.js +2 -2
  54. package/dist/base/signature-pad.js +7 -7
  55. package/dist/base/signature-pad.js.map +1 -1
  56. package/dist/base/skeleton.js +1 -1
  57. package/dist/base/spinner.js +4 -4
  58. package/dist/base/structure.js +1 -1
  59. package/dist/base/table.js +1 -1
  60. package/dist/base/text-inputs.js +2 -2
  61. package/dist/base/toaster.js +36 -36
  62. package/dist/base/toaster.js.map +1 -1
  63. package/dist/base/tree.js +1 -1
  64. package/dist/base/upload-queue.js +1 -1
  65. package/dist/base/upload.js +3 -3
  66. package/dist/base/value-inputs.js +1 -1
  67. package/dist/{batch-action-bar-CdfIkCsV.js → batch-action-bar-Cb8cuvyy.js} +6 -6
  68. package/dist/batch-action-bar-Cb8cuvyy.js.map +1 -0
  69. package/dist/blocks/admin.js +21 -21
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +230 -216
  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 +325 -306
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +1 -1
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1259 -1184
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +2 -2
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +11 -11
  84. package/dist/blocks/timelines.js +1 -1
  85. package/dist/{breadcrumbs-B-WFKecD.js → breadcrumbs-J-K2kl4c.js} +6 -6
  86. package/dist/{breadcrumbs-B-WFKecD.js.map → breadcrumbs-J-K2kl4c.js.map} +1 -1
  87. package/dist/{button-DkmK-z8E.js → button-S2Cubiiz.js} +3 -3
  88. package/dist/button-S2Cubiiz.js.map +1 -0
  89. package/dist/{buttons-BbfzgczK.js → buttons-BedGfygC.js} +16 -16
  90. package/dist/buttons-BedGfygC.js.map +1 -0
  91. package/dist/cards-rNX1M4Xn.js +69 -0
  92. package/dist/cards-rNX1M4Xn.js.map +1 -0
  93. package/dist/cascader-B1MiqkBq.js +439 -0
  94. package/dist/cascader-B1MiqkBq.js.map +1 -0
  95. package/dist/chart-Darg_0Kv.js +162 -0
  96. package/dist/chart-Darg_0Kv.js.map +1 -0
  97. package/dist/{checkbox-CzYUTPeJ.js → checkbox-fflqmODR.js} +2 -2
  98. package/dist/{checkbox-CzYUTPeJ.js.map → checkbox-fflqmODR.js.map} +1 -1
  99. package/dist/{choice-inputs-JLtij2y4.js → choice-inputs-zUgBZfE4.js} +258 -257
  100. package/dist/choice-inputs-zUgBZfE4.js.map +1 -0
  101. package/dist/{code-block-CGNaUtAE.js → code-block-BzmM9Eig.js} +8 -8
  102. package/dist/code-block-BzmM9Eig.js.map +1 -0
  103. package/dist/{collapsible-Do4G0zcC.js → collapsible-BkAI_XD4.js} +5 -5
  104. package/dist/{collapsible-Do4G0zcC.js.map → collapsible-BkAI_XD4.js.map} +1 -1
  105. package/dist/{collection-content-C0e8SsTm.js → collection-content-gDh1v6O4.js} +3 -3
  106. package/dist/{collection-content-C0e8SsTm.js.map → collection-content-gDh1v6O4.js.map} +1 -1
  107. package/dist/combobox-BEx0vJgF.js +362 -0
  108. package/dist/combobox-BEx0vJgF.js.map +1 -0
  109. package/dist/{combobox-CBJDs6w_.js → combobox-BwzoXFSG.js} +254 -247
  110. package/dist/combobox-BwzoXFSG.js.map +1 -0
  111. package/dist/{command-D8NrBj-b.js → command-CrlPIL6m.js} +11 -11
  112. package/dist/command-CrlPIL6m.js.map +1 -0
  113. package/dist/{comments-Di4w0H_S.js → comments-Dmpp0YIc.js} +29 -29
  114. package/dist/{comments-Di4w0H_S.js.map → comments-Dmpp0YIc.js.map} +1 -1
  115. package/dist/components/base/action-menu/action-menu.d.ts +7 -1
  116. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  117. package/dist/components/base/cards/card.recipes.d.ts +6 -4
  118. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -2
  119. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +3 -1
  120. package/dist/components/base/cards/smart-card.types.d.ts +3 -4
  121. package/dist/components/base/cascader/cascader-panel.d.ts +76 -0
  122. package/dist/components/base/chart/chart.d.ts +6 -1
  123. package/dist/components/base/choice-inputs/choice-types.d.ts +1 -1
  124. package/dist/components/base/combobox/index.d.ts +4 -2
  125. package/dist/components/base/feedback/alert.d.ts +1 -1
  126. package/dist/components/base/forms/form-sizing.d.ts +7 -7
  127. package/dist/components/base/forms/workflow.d.ts +7 -1
  128. package/dist/components/base/forms-numeric/coordinates-input.d.ts +4 -0
  129. package/dist/components/base/metadata-list/metadata-list.d.ts +1 -1
  130. package/dist/components/base/navigation/dropdown-menu.d.ts +1 -1
  131. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +14 -7
  132. package/dist/components/base/navigation/page-header/page-header.d.ts +10 -3
  133. package/dist/components/base/popover/popover.d.ts +3 -3
  134. package/dist/components/base/popover/popover.recipes.d.ts +10 -6
  135. package/dist/components/base/sheet/sheet.d.ts +2 -0
  136. package/dist/components/base/sidebar/index.d.ts +1 -1
  137. package/dist/components/base/sidebar/sidebar.d.ts +27 -5
  138. package/dist/components/base/toaster/index.d.ts +1 -0
  139. package/dist/components/blocks/ai/ai-file-tree/types.d.ts +1 -1
  140. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +3 -1
  141. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  142. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
  143. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  144. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +1 -1
  145. package/dist/components/blocks/commerce/cart-summary/types.d.ts +3 -1
  146. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +1 -1
  147. package/dist/components/blocks/commerce/discount-stack/types.d.ts +3 -1
  148. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  149. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +11 -2
  150. package/dist/components/blocks/commerce/index.d.ts +7 -6
  151. package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +1 -1
  152. package/dist/components/blocks/commerce/inventory-section/types.d.ts +7 -2
  153. package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -1
  154. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  155. package/dist/components/blocks/commerce/invoice-header/types.d.ts +20 -6
  156. package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +1 -1
  157. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +24 -7
  158. package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -1
  159. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +7 -1
  160. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +1 -1
  161. package/dist/components/blocks/commerce/order-customer/types.d.ts +9 -1
  162. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +1 -1
  163. package/dist/components/blocks/commerce/refund-status/types.d.ts +3 -1
  164. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  165. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +3 -1
  166. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  167. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +3 -1
  168. package/dist/components/features/activities/activities.types.d.ts +8 -2
  169. package/dist/components/features/activities/partials/activity-marker.d.ts +7 -3
  170. package/dist/components/features/activities/partials/activity-row.d.ts +24 -0
  171. package/dist/components/features/event-calendar/colors.d.ts +2 -2
  172. package/dist/components/features/event-calendar/event-calendar.types.d.ts +4 -0
  173. package/dist/components/features/filters/facets/select-facet.d.ts +2 -1
  174. package/dist/components/features/filters/filters.strings.d.ts +4 -0
  175. package/dist/components/features/filters/filters.types.d.ts +3 -0
  176. package/dist/components/features/filters/partials/filter-editor-header.d.ts +16 -0
  177. package/dist/components/features/filters/partials/filter-popover-content.d.ts +1 -1
  178. package/dist/components/features/filters/partials/nested-filter-options.d.ts +21 -0
  179. package/dist/components/features/filters/partials/regular-filter-content.d.ts +2 -1
  180. package/dist/components/features/filters/utils/filter-utils.d.ts +21 -3
  181. package/dist/components/features/global-search/global-search.types.d.ts +2 -0
  182. package/dist/components/features/global-search/partials/global-search-input.d.ts +10 -0
  183. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +7 -1
  184. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  185. package/dist/components/features/media-library/media-library.types.d.ts +14 -4
  186. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  187. package/dist/components/features/products/components/product-options-matrix.d.ts +1 -1
  188. package/dist/components/features/products/components/product-variant-editor.d.ts +1 -1
  189. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  190. package/dist/components/features/products/products.strings.d.ts +9 -1
  191. package/dist/components/features/products/products.types.d.ts +43 -6
  192. package/dist/components/features/resource/resource.d.ts +5 -1
  193. package/dist/components/features/resource/resource.types.d.ts +12 -1
  194. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +1 -1
  195. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +12 -2
  196. package/dist/components/features/table/partials/resource-cell.d.ts +22 -5
  197. package/dist/components/features/table/table.types.d.ts +1 -1
  198. package/dist/components/layout/app-shell/app-shell.types.d.ts +35 -6
  199. package/dist/components/layout/app-shell/index.d.ts +1 -1
  200. package/dist/components/layout/app-shell/shell-regions.d.ts +27 -0
  201. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  202. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  203. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  204. package/dist/components/layout/containers/two-column-layout.d.ts +2 -0
  205. package/dist/components/layout/header/header.recipes.d.ts +6 -0
  206. package/dist/components/layout/header/header.types.d.ts +6 -6
  207. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +5 -0
  208. package/dist/components/layout/page/index.d.ts +2 -1
  209. package/dist/components/layout/page/page.d.ts +1 -0
  210. package/dist/components/layout/page/page.strings.d.ts +11 -0
  211. package/dist/components/layout/page/page.types.d.ts +69 -17
  212. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  213. package/dist/components/layout/settings/settings.d.ts +9 -2
  214. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  215. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  216. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  217. package/dist/components/layout/sidebar/index.d.ts +2 -1
  218. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +36 -0
  219. package/dist/components/layout/sidebar/sidebar.context.d.ts +5 -7
  220. package/dist/components/layout/sidebar/sidebar.types.d.ts +48 -10
  221. package/dist/components/layout/sidebar/sidebar.utils.d.ts +9 -1
  222. package/dist/components/layout/workspace/workspace.types.d.ts +8 -1
  223. package/dist/components/ui/alert-dialog.d.ts +2 -2
  224. package/dist/components/ui/combobox.d.ts +1 -1
  225. package/dist/components/ui/dialog.d.ts +2 -2
  226. package/dist/components/ui/overlay-layer.d.ts +18 -0
  227. package/dist/components/ui/sheet.d.ts +5 -1
  228. package/dist/components/ui/sidebar-state.d.ts +82 -0
  229. package/dist/components/ui/sidebar.d.ts +5 -17
  230. package/dist/{containers-CRmHf7GP.js → containers-CIxwbZt5.js} +26 -18
  231. package/dist/containers-CIxwbZt5.js.map +1 -0
  232. package/dist/{control-group-recipes-DBXmfh2E.js → control-group-recipes-fMuFo0H7.js} +6 -6
  233. package/dist/control-group-recipes-fMuFo0H7.js.map +1 -0
  234. package/dist/{copyable-CnGCZdX4.js → copyable-DIznBqiT.js} +7 -7
  235. package/dist/{copyable-CnGCZdX4.js.map → copyable-DIznBqiT.js.map} +1 -1
  236. package/dist/{data-display-D4oujtx0.js → data-display-BdgCAw8T.js} +268 -277
  237. package/dist/data-display-BdgCAw8T.js.map +1 -0
  238. package/dist/{date-Q7jnXxpk.js → date-Cq8ioE4o.js} +5 -5
  239. package/dist/{date-Q7jnXxpk.js.map → date-Cq8ioE4o.js.map} +1 -1
  240. package/dist/{date-picker-zOt1oNss.js → date-picker-RlIzKom_.js} +446 -437
  241. package/dist/date-picker-RlIzKom_.js.map +1 -0
  242. package/dist/{date-pickers-cj8IXbDC.js → date-pickers-DY-CpXS1.js} +12 -12
  243. package/dist/{date-pickers-cj8IXbDC.js.map → date-pickers-DY-CpXS1.js.map} +1 -1
  244. package/dist/{display-BB4BL_-K.js → display-KsZLw9Ov.js} +9 -9
  245. package/dist/{display-BB4BL_-K.js.map → display-KsZLw9Ov.js.map} +1 -1
  246. package/dist/dropdown-menu-CLs8Lihj.js +194 -0
  247. package/dist/dropdown-menu-CLs8Lihj.js.map +1 -0
  248. package/dist/features/activities.js +302 -253
  249. package/dist/features/activities.js.map +1 -1
  250. package/dist/features/ai-chat.js +15 -14
  251. package/dist/features/ai-chat.js.map +1 -1
  252. package/dist/features/appointment-calendar.js +22 -22
  253. package/dist/features/appointment-calendar.js.map +1 -1
  254. package/dist/features/async-preview.js +11 -10
  255. package/dist/features/async-preview.js.map +1 -1
  256. package/dist/features/combobox.js +1 -1
  257. package/dist/features/comments.js +1 -1
  258. package/dist/features/data-view.js +13 -13
  259. package/dist/features/data-view.js.map +1 -1
  260. package/dist/features/email-composer.js +237 -238
  261. package/dist/features/email-composer.js.map +1 -1
  262. package/dist/features/event-calendar.js +140 -146
  263. package/dist/features/event-calendar.js.map +1 -1
  264. package/dist/features/filters.js +1 -1
  265. package/dist/features/global-search.js +167 -138
  266. package/dist/features/global-search.js.map +1 -1
  267. package/dist/features/kanban.js +6 -7
  268. package/dist/features/kanban.js.map +1 -1
  269. package/dist/features/map.js +269 -260
  270. package/dist/features/map.js.map +1 -1
  271. package/dist/features/media-library.js +375 -326
  272. package/dist/features/media-library.js.map +1 -1
  273. package/dist/features/mentions.js +1 -1
  274. package/dist/features/overlays.js +1 -1
  275. package/dist/features/products.js +1266 -1193
  276. package/dist/features/products.js.map +1 -1
  277. package/dist/features/questionnaire.js +13 -13
  278. package/dist/features/questionnaire.js.map +1 -1
  279. package/dist/features/resource-assignment.js +8 -8
  280. package/dist/features/resource.js +69 -66
  281. package/dist/features/resource.js.map +1 -1
  282. package/dist/features/rich-text-editor.js +2 -2
  283. package/dist/features/schema-form.js +13 -13
  284. package/dist/features/suggestions.js +3 -3
  285. package/dist/features/sync.js +3 -3
  286. package/dist/features/table.js +1 -1
  287. package/dist/features/theme-tweaker.js +94 -95
  288. package/dist/features/theme-tweaker.js.map +1 -1
  289. package/dist/{feedback-DZNL5Lg1.js → feedback-Dm4izqFn.js} +80 -79
  290. package/dist/feedback-Dm4izqFn.js.map +1 -0
  291. package/dist/{field-affordance-recipes-DjwGx8eM.js → field-affordance-recipes-DWcNcOjh.js} +4 -4
  292. package/dist/field-affordance-recipes-DWcNcOjh.js.map +1 -0
  293. package/dist/{filters-BcT-uoFy.js → filters-DzgSJpMK.js} +693 -645
  294. package/dist/filters-DzgSJpMK.js.map +1 -0
  295. package/dist/{form-field-CsgRmdit.js → form-field-BriWAXyg.js} +6 -6
  296. package/dist/{form-field-CsgRmdit.js.map → form-field-BriWAXyg.js.map} +1 -1
  297. package/dist/{form-sizing-NXgjkmBG.js → form-sizing-Bs2qFUeE.js} +4 -4
  298. package/dist/form-sizing-Bs2qFUeE.js.map +1 -0
  299. package/dist/{forms-BV5m5aQF.js → forms-C0RGnJTe.js} +17 -13
  300. package/dist/forms-C0RGnJTe.js.map +1 -0
  301. package/dist/{forms-numeric-Cd33AKbD.js → forms-numeric-DIhghX1Q.js} +86 -82
  302. package/dist/forms-numeric-DIhghX1Q.js.map +1 -0
  303. package/dist/{header-BA697l4a.js → header-DMMxG__r.js} +67 -63
  304. package/dist/header-DMMxG__r.js.map +1 -0
  305. package/dist/header.recipes-BigdJjw1.js +6 -0
  306. package/dist/header.recipes-BigdJjw1.js.map +1 -0
  307. package/dist/{hooks-BQ-L7Uu2.js → hooks-DB6CJ4MR.js} +26 -14
  308. package/dist/hooks-DB6CJ4MR.js.map +1 -0
  309. package/dist/{icon-badge-COWbCCWu.js → icon-badge-DZF-YjQp.js} +4 -4
  310. package/dist/{icon-badge-COWbCCWu.js.map → icon-badge-DZF-YjQp.js.map} +1 -1
  311. package/dist/index.js +4 -5
  312. package/dist/{input-Cdw4k0fb.js → input-CvyDQlY7.js} +8 -8
  313. package/dist/{input-Cdw4k0fb.js.map → input-CvyDQlY7.js.map} +1 -1
  314. package/dist/input-DMBwAZmr.js +21 -0
  315. package/dist/input-DMBwAZmr.js.map +1 -0
  316. package/dist/{item-BvZ2DR_x.js → item-DjCcM18E.js} +16 -16
  317. package/dist/item-DjCcM18E.js.map +1 -0
  318. package/dist/layout/app-shell.js +1 -1
  319. package/dist/layout/auth.js +1 -1
  320. package/dist/layout/containers.js +1 -1
  321. package/dist/layout/header.js +1 -1
  322. package/dist/layout/hooks.js +1 -1
  323. package/dist/layout/navigation.js +1 -1
  324. package/dist/layout/page.js +2 -2
  325. package/dist/layout/settings.js +1 -1
  326. package/dist/layout/sidebar.js +3 -3
  327. package/dist/layout/workspace.js +1 -1
  328. package/dist/layout.js +11 -11
  329. package/dist/lib/affordance-geometry.generated.d.ts +35 -35
  330. package/dist/lib/control-group-recipes.d.ts +5 -5
  331. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  332. package/dist/lib/motion-recipes.d.ts +3 -0
  333. package/dist/lib/navigation-row-recipes.d.ts +7 -7
  334. package/dist/lib/overlay-anatomy-recipes.d.ts +3 -3
  335. package/dist/lib/portal-recipes.d.ts +3 -0
  336. package/dist/lib/token-merge.generated.d.ts +13 -10
  337. package/dist/lib/utils.js +1 -1
  338. package/dist/map-demo-tile.svg +1 -1
  339. package/dist/{media-gallery-CSl5W1Fy.js → media-gallery-C-vChPmE.js} +6 -6
  340. package/dist/{media-gallery-CSl5W1Fy.js.map → media-gallery-C-vChPmE.js.map} +1 -1
  341. package/dist/{mentions-RKOQaaIB.js → mentions-0_4nWuI-.js} +10 -10
  342. package/dist/{mentions-RKOQaaIB.js.map → mentions-0_4nWuI-.js.map} +1 -1
  343. package/dist/{message-INU2xsxu.js → message-g8p7eVtN.js} +7 -7
  344. package/dist/message-g8p7eVtN.js.map +1 -0
  345. package/dist/{metadata-list-qVV7AVxa.js → metadata-list-C3MkU-Om.js} +64 -64
  346. package/dist/metadata-list-C3MkU-Om.js.map +1 -0
  347. package/dist/{motion-recipes-ChBg4HBq.js → motion-recipes-DitYv6P2.js} +10 -2
  348. package/dist/motion-recipes-DitYv6P2.js.map +1 -0
  349. package/dist/navigation-C90-oQFq.js +255 -0
  350. package/dist/navigation-C90-oQFq.js.map +1 -0
  351. package/dist/{navigation-BQNcg1jT.js → navigation-DaRjthVk.js} +101 -82
  352. package/dist/navigation-DaRjthVk.js.map +1 -0
  353. package/dist/{navigation-row-recipes-WZEs-hYo.js → navigation-row-recipes-BGVLvU_O.js} +9 -9
  354. package/dist/navigation-row-recipes-BGVLvU_O.js.map +1 -0
  355. package/dist/{number-E_OiIfJz.js → number-CRU3kGuk.js} +5 -5
  356. package/dist/{number-E_OiIfJz.js.map → number-CRU3kGuk.js.map} +1 -1
  357. package/dist/overflow-tab-bar-IVFVQFV6.js +172 -0
  358. package/dist/overflow-tab-bar-IVFVQFV6.js.map +1 -0
  359. package/dist/overlays-BSgCtM2v.js +1013 -0
  360. package/dist/overlays-BSgCtM2v.js.map +1 -0
  361. package/dist/page-DUUKDAjo.js +331 -0
  362. package/dist/page-DUUKDAjo.js.map +1 -0
  363. package/dist/page-header-commands-7P3sfE9u.js +193 -0
  364. package/dist/page-header-commands-7P3sfE9u.js.map +1 -0
  365. package/dist/{pagination-Ch8X_47u.js → pagination-CgCjElfu.js} +7 -7
  366. package/dist/{pagination-Ch8X_47u.js.map → pagination-CgCjElfu.js.map} +1 -1
  367. package/dist/popover-B85RenIl.js +201 -0
  368. package/dist/popover-B85RenIl.js.map +1 -0
  369. package/dist/{popover-menu-BYaCdFhf.js → popover-menu-DlnQ2zlR.js} +7 -7
  370. package/dist/{popover-menu-BYaCdFhf.js.map → popover-menu-DlnQ2zlR.js.map} +1 -1
  371. package/dist/{popover.recipes-D3j8R8Yp.js → popover.recipes-DdiEp0rd.js} +18 -11
  372. package/dist/popover.recipes-DdiEp0rd.js.map +1 -0
  373. package/dist/portal-recipes-BpsV_iRw.js +9 -0
  374. package/dist/portal-recipes-BpsV_iRw.js.map +1 -0
  375. package/dist/{primitives-Du64iDbb.js → primitives-ByWgGUgt.js} +5 -5
  376. package/dist/{primitives-Du64iDbb.js.map → primitives-ByWgGUgt.js.map} +1 -1
  377. package/dist/primitives.js +4 -4
  378. package/dist/{progress-BvF2oCdV.js → progress-BJhQP9WX.js} +9 -9
  379. package/dist/{progress-BvF2oCdV.js.map → progress-BJhQP9WX.js.map} +1 -1
  380. package/dist/{receipt-D789Jwyy.js → receipt-tOc7B3hw.js} +7 -7
  381. package/dist/receipt-tOc7B3hw.js.map +1 -0
  382. package/dist/{rich-text-CLJEf76s.js → rich-text-Dth5E882.js} +3 -3
  383. package/dist/{rich-text-CLJEf76s.js.map → rich-text-Dth5E882.js.map} +1 -1
  384. package/dist/{rich-text-editor-Cm1dpUpQ.js → rich-text-editor-C1fOjBTd.js} +429 -430
  385. package/dist/rich-text-editor-C1fOjBTd.js.map +1 -0
  386. package/dist/{rich-text-editor-toolbar-L__e4x47.js → rich-text-editor-toolbar-laT3tpBT.js} +32 -28
  387. package/dist/rich-text-editor-toolbar-laT3tpBT.js.map +1 -0
  388. package/dist/{scroll-area-La5RXsEk.js → scroll-area-B0dB2cBi.js} +2 -2
  389. package/dist/{scroll-area-La5RXsEk.js.map → scroll-area-B0dB2cBi.js.map} +1 -1
  390. package/dist/{separator-DAEV0w65.js → separator-Bb17I4pu.js} +2 -2
  391. package/dist/{separator-DAEV0w65.js.map → separator-Bb17I4pu.js.map} +1 -1
  392. package/dist/{separator-GNfPG-90.js → separator-Ct_WSWTJ.js} +3 -3
  393. package/dist/{separator-GNfPG-90.js.map → separator-Ct_WSWTJ.js.map} +1 -1
  394. package/dist/services/actions.js +1 -1
  395. package/dist/{settings-BA2iboic.js → settings-Bar5wiSo.js} +31 -38
  396. package/dist/settings-Bar5wiSo.js.map +1 -0
  397. package/dist/sheet-BGPERY55.js +250 -0
  398. package/dist/sheet-BGPERY55.js.map +1 -0
  399. package/dist/sidebar-D-JYMMbY.js +686 -0
  400. package/dist/sidebar-D-JYMMbY.js.map +1 -0
  401. package/dist/sidebar-f9gRWXIR.js +1001 -0
  402. package/dist/sidebar-f9gRWXIR.js.map +1 -0
  403. package/dist/skeleton-BapcJd9C.js +265 -0
  404. package/dist/skeleton-BapcJd9C.js.map +1 -0
  405. package/dist/smart-card-CW0hjetE.js +617 -0
  406. package/dist/smart-card-CW0hjetE.js.map +1 -0
  407. package/dist/{structure-C0V0_Fyf.js → structure-DuxKl954.js} +2 -2
  408. package/dist/{structure-C0V0_Fyf.js.map → structure-DuxKl954.js.map} +1 -1
  409. package/dist/style.css +1 -1
  410. package/dist/{table-CpvnzJn9.js → table-B4TE7iOV.js} +3 -3
  411. package/dist/{table-CpvnzJn9.js.map → table-B4TE7iOV.js.map} +1 -1
  412. package/dist/{table-DH7rozUv.js → table-CFOWY9pQ.js} +394 -388
  413. package/dist/table-CFOWY9pQ.js.map +1 -0
  414. package/dist/{tabs-eqVsJZWO.js → tabs-e7ko9S2o.js} +11 -11
  415. package/dist/tabs-e7ko9S2o.js.map +1 -0
  416. package/dist/{text-inputs-DXItiR0O.js → text-inputs-B1culiSK.js} +17 -17
  417. package/dist/text-inputs-B1culiSK.js.map +1 -0
  418. package/dist/theme.css +40 -37
  419. package/dist/{timelines-DmtztAY_.js → timelines-D3Sl9ueq.js} +13 -12
  420. package/dist/timelines-D3Sl9ueq.js.map +1 -0
  421. package/dist/tooltip-8wz5S_Zr.js +113 -0
  422. package/dist/tooltip-8wz5S_Zr.js.map +1 -0
  423. package/dist/{tree-CV11PURP.js → tree-CzUJHnFs.js} +8 -8
  424. package/dist/{tree-CV11PURP.js.map → tree-CzUJHnFs.js.map} +1 -1
  425. package/dist/typography/rich-text.js +1 -1
  426. package/dist/{typography-CSyJrh28.js → typography-BQnine1k.js} +12 -12
  427. package/dist/{typography-CSyJrh28.js.map → typography-BQnine1k.js.map} +1 -1
  428. package/dist/typography.js +1 -1
  429. package/dist/ui-provider-C-74NVLc.js +178 -0
  430. package/dist/ui-provider-C-74NVLc.js.map +1 -0
  431. package/dist/ui-provider.js +2 -3
  432. package/dist/{upload-C9SA0X-8.js → upload-BOW6U2tI.js} +25 -24
  433. package/dist/upload-BOW6U2tI.js.map +1 -0
  434. package/dist/{upload-queue-DhQJiSRc.js → upload-queue-qUXn1ykN.js} +16 -14
  435. package/dist/upload-queue-qUXn1ykN.js.map +1 -0
  436. package/dist/{usage-card-DVTRDmGz.js → usage-card-BeSLY0i0.js} +24 -17
  437. package/dist/usage-card-BeSLY0i0.js.map +1 -0
  438. package/dist/{utils-CF3c95Io.js → utils-B6kKb8jB.js} +237 -141
  439. package/dist/utils-B6kKb8jB.js.map +1 -0
  440. package/dist/value-inputs-skdVB2zh.js +980 -0
  441. package/dist/value-inputs-skdVB2zh.js.map +1 -0
  442. package/dist/{value-typography-ClupF0Gz.js → value-typography-uAmWUAL1.js} +2 -2
  443. package/dist/{value-typography-ClupF0Gz.js.map → value-typography-uAmWUAL1.js.map} +1 -1
  444. package/dist/{workspace-9EFVXUyk.js → workspace-DHeHv0qw.js} +50 -49
  445. package/dist/workspace-DHeHv0qw.js.map +1 -0
  446. package/docs/consumer-skill/SKILL.md +4 -3
  447. package/docs/consumer-skill/agents/themelia-ui-designer.md +96 -0
  448. package/docs/consumer-skill/examples/app-layout.tsx +52 -1
  449. package/docs/consumer-skill/examples/commerce-lines.tsx +271 -0
  450. package/docs/consumer-skill/examples/custom-composition.tsx +21 -0
  451. package/docs/consumer-skill/examples/detail.tsx +5 -4
  452. package/docs/consumer-skill/examples/editable-sections.tsx +38 -0
  453. package/docs/consumer-skill/examples/index-table.tsx +4 -4
  454. package/docs/consumer-skill/examples/manifest.json +38 -1
  455. package/docs/consumer-skill/examples/product-media.tsx +41 -0
  456. package/docs/consumer-skill/examples/product-parts.tsx +81 -0
  457. package/docs/consumer-skill/examples/rhf-edit-page.tsx +1 -1
  458. package/docs/consumer-skill/examples/rhf-overlay-form.tsx +24 -11
  459. package/docs/consumer-skill/examples/token-domain-structure.tsx +68 -0
  460. package/docs/consumer-skill/references/agents-md.md +19 -17
  461. package/docs/consumer-skill/references/analytics.md +18 -1
  462. package/docs/consumer-skill/references/commerce-composition.md +97 -0
  463. package/docs/consumer-skill/references/component-contracts.json +7131 -1754
  464. package/docs/consumer-skill/references/composition-mapping.md +17 -3
  465. package/docs/consumer-skill/references/composition.md +159 -31
  466. package/docs/consumer-skill/references/critique-rubric.md +98 -0
  467. package/docs/consumer-skill/references/custom-composition.md +261 -0
  468. package/docs/consumer-skill/references/data-reading.md +79 -0
  469. package/docs/consumer-skill/references/design-contract.md +11 -9
  470. package/docs/consumer-skill/references/discovery.md +27 -3
  471. package/docs/consumer-skill/references/domain-structures.md +124 -0
  472. package/docs/consumer-skill/references/installation.md +15 -4
  473. package/docs/consumer-skill/references/integration.md +35 -0
  474. package/docs/consumer-skill/references/product-composition.md +94 -0
  475. package/docs/consumer-skill/references/public-api.json +2881 -420
  476. package/docs/consumer-skill/references/review.md +39 -2
  477. package/docs/consumer-skill/references/rhf-workflows.md +7 -0
  478. package/docs/consumer-skill/references/screen-archetypes.md +19 -7
  479. package/docs/consumer-skill/references/screen-decisions.md +126 -0
  480. package/docs/consumer-skill/references/theming.md +17 -18
  481. package/docs/consumer-skill/references/tokens.json +9 -9
  482. package/docs/consumer-skill/references/view-craft.md +153 -0
  483. package/docs/consumer-skill/references/view-spec.md +73 -0
  484. package/docs/consumer-skill/references/workflows.md +7 -1
  485. package/docs/consumer-skill/scripts/composition-policy.mjs +39 -3
  486. package/docs/consumer-skill/scripts/composition-schema.mjs +1 -1
  487. package/docs/consumer-skill/scripts/composition.mjs +61 -5
  488. package/docs/consumer-skill/scripts/discovery.mjs +54 -0
  489. package/docs/consumer-skill/scripts/inspect-component.mjs +1 -1
  490. package/docs/consumer-skill/scripts/inspection.mjs +73 -18
  491. package/docs/consumer-skill/scripts/setup-skills.mjs +41 -6
  492. package/docs/consumer-skill/scripts/surface-policy.mjs +5 -5
  493. package/docs/consumer-skills/themelia-components/SKILL.md +14 -13
  494. package/docs/consumer-skills/themelia-composition/SKILL.md +16 -17
  495. package/docs/consumer-skills/themelia-design/SKILL.md +55 -0
  496. package/docs/consumer-skills/themelia-foundation/SKILL.md +2 -1
  497. package/docs/consumer-skills/themelia-tokenization/SKILL.md +24 -17
  498. package/package.json +1 -1
  499. package/dist/accordion-96o0pN62.js.map +0 -1
  500. package/dist/action-menu-CHgs8vmj.js.map +0 -1
  501. package/dist/affordance-geometry.generated-B8yGOr8-.js.map +0 -1
  502. package/dist/ai-artifact-BZUGwBq6.js.map +0 -1
  503. package/dist/app-shell-D63ATkIK.js +0 -237
  504. package/dist/app-shell-D63ATkIK.js.map +0 -1
  505. package/dist/auth-D2FVZ1MH.js.map +0 -1
  506. package/dist/avatar-DWO_HHhB.js.map +0 -1
  507. package/dist/base/cascader.js.map +0 -1
  508. package/dist/batch-action-bar-CdfIkCsV.js.map +0 -1
  509. package/dist/button-DkmK-z8E.js.map +0 -1
  510. package/dist/buttons-BbfzgczK.js.map +0 -1
  511. package/dist/cards-4JTWqvVe.js +0 -68
  512. package/dist/cards-4JTWqvVe.js.map +0 -1
  513. package/dist/chart-C19flDQb.js +0 -155
  514. package/dist/chart-C19flDQb.js.map +0 -1
  515. package/dist/choice-inputs-JLtij2y4.js.map +0 -1
  516. package/dist/code-block-CGNaUtAE.js.map +0 -1
  517. package/dist/combobox-CBJDs6w_.js.map +0 -1
  518. package/dist/combobox-hbhSS18O.js +0 -355
  519. package/dist/combobox-hbhSS18O.js.map +0 -1
  520. package/dist/command-D8NrBj-b.js.map +0 -1
  521. package/dist/containers-CRmHf7GP.js.map +0 -1
  522. package/dist/control-group-recipes-DBXmfh2E.js.map +0 -1
  523. package/dist/data-display-D4oujtx0.js.map +0 -1
  524. package/dist/date-picker-zOt1oNss.js.map +0 -1
  525. package/dist/dropdown-menu-CjY8Vt7W.js +0 -193
  526. package/dist/dropdown-menu-CjY8Vt7W.js.map +0 -1
  527. package/dist/feedback-DZNL5Lg1.js.map +0 -1
  528. package/dist/field-affordance-recipes-DjwGx8eM.js.map +0 -1
  529. package/dist/filters-BcT-uoFy.js.map +0 -1
  530. package/dist/form-sizing-NXgjkmBG.js.map +0 -1
  531. package/dist/forms-BV5m5aQF.js.map +0 -1
  532. package/dist/forms-numeric-Cd33AKbD.js.map +0 -1
  533. package/dist/header-BA697l4a.js.map +0 -1
  534. package/dist/hooks-BQ-L7Uu2.js.map +0 -1
  535. package/dist/input-DOPL5_QE.js +0 -21
  536. package/dist/input-DOPL5_QE.js.map +0 -1
  537. package/dist/item-BvZ2DR_x.js.map +0 -1
  538. package/dist/message-INU2xsxu.js.map +0 -1
  539. package/dist/metadata-list-qVV7AVxa.js.map +0 -1
  540. package/dist/motion-recipes-ChBg4HBq.js.map +0 -1
  541. package/dist/navigation-BQNcg1jT.js.map +0 -1
  542. package/dist/navigation-DLF3E1IC.js +0 -145
  543. package/dist/navigation-DLF3E1IC.js.map +0 -1
  544. package/dist/navigation-row-recipes-WZEs-hYo.js.map +0 -1
  545. package/dist/overflow-tab-bar-CrbqMteP.js +0 -284
  546. package/dist/overflow-tab-bar-CrbqMteP.js.map +0 -1
  547. package/dist/overlays-BlKynmde.js +0 -1004
  548. package/dist/overlays-BlKynmde.js.map +0 -1
  549. package/dist/page-CIwNUtGr.js +0 -227
  550. package/dist/page-CIwNUtGr.js.map +0 -1
  551. package/dist/page-header-commands-DFMlNYzN.js +0 -128
  552. package/dist/page-header-commands-DFMlNYzN.js.map +0 -1
  553. package/dist/popover-uwzX2vo7.js +0 -198
  554. package/dist/popover-uwzX2vo7.js.map +0 -1
  555. package/dist/popover.recipes-D3j8R8Yp.js.map +0 -1
  556. package/dist/receipt-D789Jwyy.js.map +0 -1
  557. package/dist/rich-text-editor-Cm1dpUpQ.js.map +0 -1
  558. package/dist/rich-text-editor-toolbar-L__e4x47.js.map +0 -1
  559. package/dist/settings-BA2iboic.js.map +0 -1
  560. package/dist/sheet-DoAxTb2J.js +0 -213
  561. package/dist/sheet-DoAxTb2J.js.map +0 -1
  562. package/dist/sidebar-ByqKR_W5.js +0 -512
  563. package/dist/sidebar-ByqKR_W5.js.map +0 -1
  564. package/dist/sidebar-D2iSnGJ7.js +0 -619
  565. package/dist/sidebar-D2iSnGJ7.js.map +0 -1
  566. package/dist/skeleton-CUj8O5Bd.js +0 -264
  567. package/dist/skeleton-CUj8O5Bd.js.map +0 -1
  568. package/dist/smart-card-CqkzQsK-.js +0 -614
  569. package/dist/smart-card-CqkzQsK-.js.map +0 -1
  570. package/dist/table-DH7rozUv.js.map +0 -1
  571. package/dist/tabs-eqVsJZWO.js.map +0 -1
  572. package/dist/text-inputs-DXItiR0O.js.map +0 -1
  573. package/dist/theme-scope-BJ6eE2xt.js +0 -50
  574. package/dist/theme-scope-BJ6eE2xt.js.map +0 -1
  575. package/dist/timelines-DmtztAY_.js.map +0 -1
  576. package/dist/tooltip-B4hjKtoV.js +0 -111
  577. package/dist/tooltip-B4hjKtoV.js.map +0 -1
  578. package/dist/ui-provider-CQCuCBcy.js +0 -136
  579. package/dist/ui-provider-CQCuCBcy.js.map +0 -1
  580. package/dist/upload-C9SA0X-8.js.map +0 -1
  581. package/dist/upload-queue-DhQJiSRc.js.map +0 -1
  582. package/dist/usage-card-DVTRDmGz.js.map +0 -1
  583. package/dist/use-mobile-vaLKwgyf.js +0 -15
  584. package/dist/use-mobile-vaLKwgyf.js.map +0 -1
  585. package/dist/utils-CF3c95Io.js.map +0 -1
  586. package/dist/value-inputs-C0o70p-U.js +0 -980
  587. package/dist/value-inputs-C0o70p-U.js.map +0 -1
  588. package/dist/workspace-9EFVXUyk.js.map +0 -1
@@ -3,6 +3,18 @@ export type TopbarSidebarHeaderTheme = 'light' | 'dark';
3
3
  export type TopbarSidebarSide = 'left' | 'right';
4
4
  export type TopbarSidebarContentElement = 'main' | 'div';
5
5
  export type TopbarSidebarMobileSidebarMode = 'drawer' | 'inline';
6
+ export type AppShellContentSurface = 'plain' | 'inset';
7
+ export type AppShellSidebarPresentation = 'panel' | 'rail';
8
+ export interface AppShellSidebarRegionProps {
9
+ /** Width of contextual navigation; defaults to the shared sidebar width. */
10
+ secondarySidebarWidth?: string;
11
+ /** Width of the opposite-side supporting panel. */
12
+ asideWidth?: string;
13
+ /** Primary navigation geometry, independent of its collapse state. */
14
+ sidebarPresentation?: AppShellSidebarPresentation;
15
+ secondarySidebarClassName?: string;
16
+ asideClassName?: string;
17
+ }
6
18
  export interface TopbarSidebarLayoutSlots {
7
19
  /** Full header replacement inside the themed header region. */
8
20
  header?: ReactNode;
@@ -20,6 +32,10 @@ export interface TopbarSidebarLayoutSlots {
20
32
  headerEnd?: ReactNode;
21
33
  /** Sidebar column content. */
22
34
  sidebar?: ReactNode;
35
+ /** Contextual navigation next to the primary sidebar. */
36
+ secondarySidebar?: ReactNode;
37
+ /** Optional supporting panel on the opposite edge. */
38
+ aside?: ReactNode;
23
39
  /** Full content replacement; falls back to `children`. */
24
40
  content?: ReactNode;
25
41
  }
@@ -27,16 +43,18 @@ export type TopbarSidebarLayoutStyle = CSSProperties & {
27
43
  '--shell-header-height'?: string;
28
44
  '--shell-sidebar-width'?: string;
29
45
  };
30
- export interface TopbarSidebarLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
46
+ export interface TopbarSidebarLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>, AppShellSidebarRegionProps {
31
47
  /** Page content rendered in the content column. */
32
48
  children?: ReactNode;
33
- /** Header theme. Applies a `.light`/`.dark` token scope to the header so partials use ordinary tokens and invert against the header surface. */
49
+ /** Header theme. Omitted, the header follows the active theme. `light`/`dark` apply a token scope to the header so partials use ordinary tokens and invert against the header surface. */
34
50
  headerTheme?: TopbarSidebarHeaderTheme;
51
+ /** Inset paints the page on a card surface within the secondary shell canvas. */
52
+ contentSurface?: AppShellContentSurface;
35
53
  /** Sidebar side in the body grid. */
36
54
  sidebarSide?: TopbarSidebarSide;
37
- /** Mobile sidebar behavior. `drawer` hides the body column below `md` so `SidebarTrigger` can open the sheet. */
55
+ /** `drawer` adapts navigation to an overlay. `inline` keeps both navigation regions docked; a rail remains beside its collapsible contextual sidebar. */
38
56
  mobileSidebarMode?: TopbarSidebarMobileSidebarMode;
39
- /** Header height CSS value. Defaults to `var(--shell-header-height)`, whose root default is 4.5rem. */
57
+ /** Header height CSS value. Defaults to `var(--shell-header-height)`, whose root default is 4rem. */
40
58
  headerHeight?: string;
41
59
  /** Expanded sidebar column width CSS value. Defaults to `var(--shell-sidebar-width)`, whose root default is 16rem. */
42
60
  sidebarWidth?: string;
@@ -70,6 +88,10 @@ export type SidebarInsetSurface = 'inset' | 'flush';
70
88
  export interface SidebarInsetLayoutSlots {
71
89
  /** Sidebar column content, spanning the full page height. */
72
90
  sidebar?: ReactNode;
91
+ /** Contextual navigation beside the primary sidebar. */
92
+ secondarySidebar?: ReactNode;
93
+ /** Supporting panel on the opposite edge. */
94
+ aside?: ReactNode;
73
95
  /** Full toolbar replacement inside the content column. */
74
96
  toolbar?: ReactNode;
75
97
  /** Sidebar trigger, rendered at the start of the toolbar. */
@@ -81,13 +103,15 @@ export interface SidebarInsetLayoutSlots {
81
103
  /** Full content replacement; falls back to `children`. */
82
104
  content?: ReactNode;
83
105
  }
84
- export interface SidebarInsetLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
106
+ export interface SidebarInsetLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>, AppShellSidebarRegionProps {
85
107
  /** Page content rendered in the content column. */
86
108
  children?: ReactNode;
87
109
  /** Sidebar side. */
88
110
  sidebarSide?: SidebarInsetSide;
89
111
  /** How the content surface meets the sidebar. */
90
112
  surface?: SidebarInsetSurface;
113
+ /** `drawer` adapts navigation to an overlay. `inline` keeps both navigation regions docked; a rail remains beside its collapsible contextual sidebar. @default 'drawer' */
114
+ mobileSidebarMode?: TopbarSidebarMobileSidebarMode;
91
115
  /** Renders the toolbar row. Set `false` for a shell with no header chrome at all. */
92
116
  toolbar?: boolean;
93
117
  /** Expanded sidebar column width CSS value. */
@@ -121,18 +145,23 @@ export interface StackedLayoutSlots {
121
145
  headerEnd?: ReactNode;
122
146
  /** Secondary row under the header, usually tabs or a breadcrumb. */
123
147
  subheader?: ReactNode;
148
+ /** Optional supporting panel beside the page. */
149
+ aside?: ReactNode;
124
150
  /** Full content replacement; falls back to `children`. */
125
151
  content?: ReactNode;
126
152
  }
127
153
  export interface StackedLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
128
154
  /** Page content. */
129
155
  children?: ReactNode;
130
- /** Header theme, matching `TopbarSidebarLayout`'s token-scope approach. */
156
+ /** Header theme. Omitted, the header follows the active theme; `light`/`dark` apply `TopbarSidebarLayout`'s token scope. */
131
157
  headerTheme?: TopbarSidebarHeaderTheme;
132
158
  /** Constrains the content to the shell's reading width, or lets it span. */
133
159
  contentWidth?: StackedContentWidth;
134
160
  /** Header height CSS value. */
135
161
  headerHeight?: string;
162
+ /** Width of the optional supporting panel. */
163
+ asideWidth?: string;
164
+ asideClassName?: string;
136
165
  /** Convenience logo slot. */
137
166
  logo?: ReactNode;
138
167
  /** Convenience navigation slot. */
@@ -1,5 +1,5 @@
1
1
  export { TopbarSidebarLayout } from './topbar-sidebar-layout';
2
- export type { TopbarSidebarContentElement, TopbarSidebarHeaderTheme, TopbarSidebarLayoutProps, TopbarSidebarLayoutSlots, TopbarSidebarLayoutStyle, TopbarSidebarSide, } from './app-shell.types';
2
+ export type { AppShellContentSurface, AppShellSidebarPresentation, AppShellSidebarRegionProps, TopbarSidebarContentElement, TopbarSidebarHeaderTheme, TopbarSidebarLayoutProps, TopbarSidebarLayoutSlots, TopbarSidebarLayoutStyle, TopbarSidebarSide, } from './app-shell.types';
3
3
  export { SidebarInsetLayout } from './sidebar-inset-layout';
4
4
  export { StackedLayout } from './stacked-layout';
5
5
  export type { SidebarInsetContentElement, SidebarInsetLayoutProps, SidebarInsetLayoutSlots, SidebarInsetSide, SidebarInsetSurface, StackedContentElement, StackedContentWidth, StackedLayoutProps, StackedLayoutSlots, } from './app-shell.types';
@@ -0,0 +1,27 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { AppShellSidebarPresentation } from './app-shell.types';
3
+ /** One surface recipe; the shell frames the page while Page owns its insets. */
4
+ export declare const shellContentSurface: {
5
+ readonly plain: "bg-background text-foreground";
6
+ readonly inset: "bg-card text-card-foreground md:m-space-md md:overflow-hidden md:rounded-surface md:border md:border-border md:shadow-sm";
7
+ };
8
+ interface ShellRegionGridProps {
9
+ children: ReactNode;
10
+ sidebar?: ReactNode;
11
+ secondarySidebar?: ReactNode;
12
+ aside?: ReactNode;
13
+ side?: 'left' | 'right';
14
+ primaryWidth?: string;
15
+ secondaryWidth?: string;
16
+ asideWidth?: string;
17
+ presentation?: AppShellSidebarPresentation;
18
+ inlinePrimary?: boolean;
19
+ className?: string;
20
+ mainClassName?: string;
21
+ sidebarClassName?: string;
22
+ secondarySidebarClassName?: string;
23
+ asideClassName?: string;
24
+ }
25
+ /** Optional auto tracks collapse independently; the page always owns the flexible track. */
26
+ export declare function ShellRegionGrid({ children, sidebar, secondarySidebar, aside, side, primaryWidth, secondaryWidth, asideWidth, presentation, inlinePrimary, className, mainClassName, sidebarClassName, secondarySidebarClassName, asideClassName }: ShellRegionGridProps): import("react").JSX.Element;
27
+ export {};
@@ -1,2 +1,2 @@
1
1
  import type { SidebarInsetLayoutProps } from './app-shell.types';
2
- export declare function SidebarInsetLayout({ children, sidebarSide, surface, toolbar, sidebarWidth, sidebar, sidebarTrigger, slots, contentAs: Content, className, sidebarClassName, toolbarClassName, contentClassName, style, ...props }: SidebarInsetLayoutProps): import("react").JSX.Element;
2
+ export declare function SidebarInsetLayout({ children, sidebarSide, surface, mobileSidebarMode, toolbar, sidebarWidth, secondarySidebarWidth, asideWidth, sidebarPresentation, secondarySidebarClassName, asideClassName, sidebar, sidebarTrigger, slots, contentAs: Content, className, sidebarClassName, toolbarClassName, contentClassName, style, ...props }: SidebarInsetLayoutProps): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import type { StackedLayoutProps } from './app-shell.types';
2
- export declare function StackedLayout({ children, headerTheme, contentWidth, headerHeight, logo, nav, slots, contentAs: Content, className, headerClassName, subheaderClassName, contentClassName, style, ...props }: StackedLayoutProps): import("react").JSX.Element;
2
+ export declare function StackedLayout({ children, headerTheme, contentWidth, headerHeight, asideWidth, asideClassName, logo, nav, slots, contentAs: Content, className, headerClassName, subheaderClassName, contentClassName, style, ...props }: StackedLayoutProps): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import type { TopbarSidebarLayoutProps } from './app-shell.types';
2
- export declare function TopbarSidebarLayout({ children, headerTheme, sidebarSide, mobileSidebarMode, headerHeight, sidebarWidth, sidebarTrigger, logo, headerActions, sidebar, slots, contentAs: Content, className, headerClassName, headerInnerClassName, bodyClassName, sidebarClassName, contentClassName, style, ...props }: TopbarSidebarLayoutProps): import("react").JSX.Element;
2
+ export declare function TopbarSidebarLayout({ children, headerTheme, contentSurface, sidebarSide, mobileSidebarMode, headerHeight, sidebarWidth, secondarySidebarWidth, asideWidth, sidebarPresentation, secondarySidebarClassName, asideClassName, sidebarTrigger, logo, headerActions, sidebar, slots, contentAs: Content, className, headerClassName, headerInnerClassName, bodyClassName, sidebarClassName, contentClassName, style, ...props }: TopbarSidebarLayoutProps): import("react").JSX.Element;
@@ -20,6 +20,8 @@ export interface TwoColumnLayoutProps extends useRender.ComponentProps<'div'> {
20
20
  stickyAside?: boolean;
21
21
  /** Preserve viewport breakpoints by default, or adapt inside Container/PageViewport. */
22
22
  adaptTo?: 'viewport' | 'container';
23
+ /** Optional main/aside proportions; omission preserves the established flexible 2/1 split. */
24
+ ratio?: '7/5' | '8/4';
23
25
  /** Native attributes for each stable region. */
24
26
  slotProps?: TwoColumnLayoutSlotProps;
25
27
  }
@@ -0,0 +1,6 @@
1
+ /** Fixed-height inline rules align to header controls rather than stretching
2
+ * from the top edge of a flex row. Separator keeps its general stretch default. */
3
+ export declare const headerInlineDividerAlignment = "[&_[data-slot=separator][data-orientation=vertical]]:self-center";
4
+ /** One unread-count chip for header icon triggers. Counts state no status, so it
5
+ * takes the neutral solid role; it floats over the icon, so it is opaque. */
6
+ export declare const headerCountBadge = "pointer-events-none absolute -end-1 -top-1 flex h-4.5 min-w-4.5 items-center justify-center rounded-full bg-foreground px-space-xs text-background tabular-nums";
@@ -164,15 +164,15 @@ export interface HeaderUserMenuStrings {
164
164
  }
165
165
  export declare const defaultHeaderUserMenuStrings: HeaderUserMenuStrings;
166
166
  export interface HeaderSlots {
167
- /** Leading brand/logo region before breadcrumbs. */
167
+ /** Leading brand/logo before breadcrumbs, visible from the 2xl/app-header container width (42rem by default). Use left for identity that must remain visible at narrow widths. */
168
168
  brand?: ReactNode;
169
- /** Replaces the breadcrumb/sidebar-trigger region. */
169
+ /** Replaces the breadcrumb/sidebar-trigger region, rendered only while showBreadcrumbs is true. */
170
170
  breadcrumbs?: ReactNode;
171
- /** Leading content after breadcrumbs. */
171
+ /** Leading content after breadcrumbs; always rendered when supplied, including narrow container widths. The app owns compact content and overflow. */
172
172
  left?: ReactNode;
173
- /** Center content, usually search or a scope switcher. */
173
+ /** Optional center content, usually search, visible from the 3xl/app-header container width (48rem by default). Essential navigation needs a narrow-width alternative in left or right. */
174
174
  center?: ReactNode;
175
- /** Trailing content, usually notifications/user menu/actions. */
175
+ /** Trailing content, usually tools/account actions; always rendered when supplied and wraps at narrow widths. Its children own their responsive behavior. */
176
176
  right?: ReactNode;
177
177
  }
178
178
  export interface HeaderProps extends LayoutNavigationAdapter, HTMLAttributes<HTMLElement> {
@@ -184,7 +184,7 @@ export interface HeaderProps extends LayoutNavigationAdapter, HTMLAttributes<HTM
184
184
  homeBreadcrumb?: BreadcrumbItem | null;
185
185
  /** Renders the sidebar collapse control. */
186
186
  showSidebarTrigger?: boolean;
187
- /** Replaces individual regions of the shell. */
187
+ /** Composes shell regions by container width: brand appears from 2xl/app-header (42rem default), center from 3xl/app-header (48rem default); left and right are always rendered when supplied. Keep essential narrow-width identity/navigation in left or right and supply compact/overflow behavior. */
188
188
  slots?: HeaderSlots;
189
189
  className?: string;
190
190
  /** Merged onto the content region. */
@@ -2,6 +2,11 @@
2
2
  * SectionNav — sticky in-page anchor nav. Pass a list of section ids; the active one
3
3
  * is tracked via IntersectionObserver and the matching item is highlighted. Click to
4
4
  * scroll to that section. Pure JS — no router required.
5
+ *
6
+ * A click owns the current state: the clicked section stays current while the smooth
7
+ * scroll it started passes other sections, after that scroll settles (including when
8
+ * the last sections are too short to reach the top), and until the reader scrolls
9
+ * again. Only then does the observer resume.
5
10
  */
6
11
  import { type ComponentPropsWithoutRef } from 'react';
7
12
  import type { LucideIcon } from 'lucide-react';
@@ -1,4 +1,5 @@
1
1
  export { Page } from './page';
2
2
  export { PageHeader } from './partials/page-header';
3
3
  export { PageActions } from './partials/page-actions';
4
- export { defaultPageActionsStrings, type PageHeaderAction, type PageHeaderProps, type PageHeaderSlots, type PageHeaderTabs, type PageActionsProps, type PageActionsDisplay, type PageAction, type PageActionContext, type PageActionsStrings, type PageProps, type PageSlotProps, } from './page.types';
4
+ export { defaultPageActionsStrings, type PageHeaderAction, type PageHeaderProps, type PageHeaderSlots, type PageHeaderRenderContext, type PageHeaderRenderSlot, type PageHeaderTabs, type PageActionsProps, type PageActionsDisplay, type PageAction, type PageActionContext, type PageActionsStrings, type PageProps, type PageSlotProps, type PageSlots, } from './page.types';
5
+ export { defaultPageStrings, type PageStrings } from './page.strings';
@@ -1,2 +1,3 @@
1
1
  import type { PageProps } from './page.types';
2
+ /** Route containment, header, lifecycle states and optional secondary context, without owning scrolling. */
2
3
  export declare const Page: import("react").ForwardRefExoticComponent<Omit<PageProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,11 @@
1
+ /** Copy for Page's primary-body lifecycle states. */
2
+ export interface PageStrings {
3
+ loadingLabel: string;
4
+ loadingDescription: string;
5
+ errorTitle: string;
6
+ errorDescription: string;
7
+ retryLabel: string;
8
+ emptyTitle: string;
9
+ emptyDescription: string;
10
+ }
11
+ export declare const defaultPageStrings: PageStrings;
@@ -13,6 +13,8 @@ import type { BadgeTone } from '../../base/badge';
13
13
  import type { ActionPresentation } from '../../../lib/action-presentation';
14
14
  import type { PageHeaderAction } from '../../base/navigation/page-header';
15
15
  import type { OverflowTabItem } from '../../base/navigation';
16
+ import type { TwoColumnLayoutProps } from '../containers';
17
+ import type { PageStrings } from './page.strings';
16
18
  export interface PageTitleBadge {
17
19
  /** Display label. */
18
20
  label: ReactNode;
@@ -37,15 +39,25 @@ export interface PageHeaderTabs {
37
39
  /** Label of the trigger that holds tabs which do not fit. Default: `'More'`. */
38
40
  moreLabel?: string;
39
41
  }
42
+ export interface PageHeaderRenderContext {
43
+ /** The framework-neutral link renderer used by this header. */
44
+ renderLink: LayoutLinkRenderer;
45
+ /** Existing content for this position; actions includes the responsive command row. */
46
+ defaultContent: ReactNode;
47
+ }
48
+ /** A content node, or a render callback that can keep or replace its default content. */
49
+ export type PageHeaderRenderSlot = ReactNode | ((context: PageHeaderRenderContext) => ReactNode);
40
50
  export interface PageHeaderSlots {
41
- /** Replaces the leading back control entirely. */
51
+ /** @deprecated Use backHref/onBack for navigation. Retained as a custom back-control escape hatch. */
42
52
  back?: ReactNode;
43
- /** Additional content before the title line. */
44
- beforeTitle?: ReactNode;
45
- /** Additional content after the description. */
46
- afterDescription?: ReactNode;
47
- /** Replaces the trailing actions region, including role-based commands. */
48
- actions?: ReactNode;
53
+ /** Context above the title, such as breadcrumbs. */
54
+ beforeTitle?: PageHeaderRenderSlot;
55
+ /** Content beside the title, such as a status or count. */
56
+ titleSuffix?: PageHeaderRenderSlot;
57
+ /** Context below the description. Compose metadata or other content here. */
58
+ afterDescription?: PageHeaderRenderSlot;
59
+ /** Keep, wrap or replace defaultContent's responsive command row. */
60
+ actions?: PageHeaderRenderSlot;
49
61
  }
50
62
  export interface PageHeaderProps extends LayoutNavigationAdapter {
51
63
  /** Surface title. */
@@ -56,35 +68,42 @@ export interface PageHeaderProps extends LayoutNavigationAdapter {
56
68
  textGap?: TextGap;
57
69
  /** Semantic heading level for the title. Defaults to `h1`, the route's main heading; use `h2` when the page sits inside another titled page. */
58
70
  headingTag?: HeadingTag;
59
- /** Optional decorative icon rendered before the title. Pass a Lucide icon component. */
71
+ /** @deprecated Compose custom title content with slots.titleSuffix or a React-node title. */
60
72
  titleIcon?: ComponentType<{
61
73
  className?: string;
62
74
  }>;
63
- /** Optional link target for the title icon. Uses the same framework-neutral renderer as `backHref`. */
75
+ /** @deprecated Compose a linked item in a render slot using its renderLink context. */
64
76
  titleIconHref?: string;
65
- /** Optional click handler for the title icon when it should behave like an action. */
77
+ /** @deprecated Compose a command in slots.actions or describe it with primaryAction/secondaryActions. */
66
78
  onTitleIconClick?: () => void;
67
- /** Accessible label for linked/clickable title icons. */
79
+ /** @deprecated Accessible name for the compatibility title-icon control. */
68
80
  titleIconLabel?: string;
69
81
  /** Destination for the back control. */
70
82
  backHref?: string;
71
83
  onBack?: () => void;
72
84
  /** Copy for the back control. */
73
85
  backLabel?: string;
74
- /** Chips shown beside the page title. */
86
+ /** @deprecated Render title content with slots.titleSuffix. Retained for existing badge definitions. */
75
87
  titleBadges?: PageTitleBadge[];
76
88
  /**
77
89
  * The page's one main command: a solid primary button after the secondary
78
- * commands, visible at every width.
90
+ * commands. Compact headers place it first in the More actions menu.
79
91
  */
80
92
  primaryAction?: PageHeaderAction;
81
93
  /**
82
94
  * Supporting commands in priority order. The first two render as outline
83
95
  * buttons before the primary command; the rest, and every destructive
84
96
  * command, move into the More actions menu, which always closes the row.
85
- * Below `sm`, all secondary commands collapse into that menu.
97
+ * Below 40rem of header width, all commands collapse into that menu.
86
98
  */
87
99
  secondaryActions?: readonly PageHeaderAction[];
100
+ /**
101
+ * How many routine secondary commands render as outline buttons on wide
102
+ * headers; later ones join the More actions menu. Use `1` or `0` when long
103
+ * labels beside the primary command would crowd the header; `Infinity`
104
+ * keeps every routine command inline. @default 2
105
+ */
106
+ maxVisibleSecondaryActions?: number;
88
107
  /** Accessible name of the More actions menu trigger. */
89
108
  moreActionsLabel?: string;
90
109
  /**
@@ -94,8 +113,7 @@ export interface PageHeaderProps extends LayoutNavigationAdapter {
94
113
  */
95
114
  tabs?: PageHeaderTabs;
96
115
  /**
97
- * Custom controls before the role-based commands, such as a period select.
98
- * Prefer `primaryAction` and `secondaryActions` for commands.
116
+ * @deprecated Customize commands with slots.actions; put other controls in Page toolbar.
99
117
  */
100
118
  actions?: ReactNode;
101
119
  /** Replaces individual regions of the shell. */
@@ -173,11 +191,24 @@ export interface PageActionsProps extends LayoutNavigationAdapter {
173
191
  export interface PageSlotProps {
174
192
  /** Native attributes merged onto the page body region. */
175
193
  body?: LayoutSlotAttributes<HTMLDivElement>;
194
+ aside?: LayoutSlotAttributes<HTMLElement>;
195
+ toolbar?: LayoutSlotAttributes<HTMLDivElement>;
196
+ footer?: LayoutSlotAttributes<HTMLDivElement>;
197
+ }
198
+ export interface PageSlots {
199
+ /** Replaces the generated PageHeader. */
200
+ header?: ReactNode;
201
+ toolbar?: ReactNode;
202
+ aside?: ReactNode;
203
+ footer?: ReactNode;
204
+ loading?: ReactNode;
205
+ error?: ReactNode;
206
+ empty?: ReactNode;
176
207
  }
177
208
  export interface PageProps extends LayoutNavigationAdapter, Omit<ContainerProps, 'children'> {
178
209
  /** Header region of the shell. */
179
210
  header?: PageHeaderProps;
180
- /** Maximum content width. Explicit values override narrow. Defaults to `lg`. */
211
+ /** Explicit width wins; otherwise narrow uses md, aside uses xl, and a single column uses lg. */
181
212
  maxWidth?: ContainerMaxWidth;
182
213
  /** Center one resource or form at the existing `md` content measure. */
183
214
  narrow?: boolean;
@@ -185,6 +216,27 @@ export interface PageProps extends LayoutNavigationAdapter, Omit<ContainerProps,
185
216
  gutter?: ContainerGutter;
186
217
  /** Block padding around the whole page. Defaults to `lg`, independent of gutter. */
187
218
  padding?: ContainerGutter;
219
+ /** Secondary context beside the primary body, adapting to the available container width. */
220
+ aside?: ReactNode;
221
+ /** Main/aside proportions. Defaults to 7/5. */
222
+ asideRatio?: TwoColumnLayoutProps['ratio'];
223
+ stickyAside?: boolean;
224
+ /** Query controls or context between header and body. */
225
+ toolbar?: ReactNode;
226
+ /** Content above the header. */
227
+ beforeHeader?: ReactNode;
228
+ /** Compatible toolbar fallback when toolbar and slots.toolbar are omitted. */
229
+ afterHeader?: ReactNode;
230
+ /** Replaces only the primary body; header, toolbar and aside remain mounted. */
231
+ loading?: boolean;
232
+ error?: ReactNode | Error;
233
+ onRetry?: () => void;
234
+ empty?: boolean;
235
+ emptySlot?: ReactNode;
236
+ /** Region overrides take precedence over direct props. */
237
+ slots?: PageSlots;
238
+ /** Copy for the default loading, error and empty states. */
239
+ strings?: StringsProp<PageStrings>;
188
240
  children?: ReactNode;
189
241
  /** Native attributes for stable page regions. */
190
242
  slotProps?: PageSlotProps;
@@ -1,2 +1,2 @@
1
1
  import type { PageHeaderProps } from '../page.types';
2
- export declare function PageHeader({ title, description, textGap, headingTag, titleIcon: TitleIcon, titleIconHref, onTitleIconClick, titleIconLabel, backHref, onBack, backLabel, titleBadges, primaryAction, secondaryActions, moreActionsLabel, tabs, actions, slots, renderLink, className, contentClassName, actionsClassName, titleClassName, titleIconClassName, descriptionClassName, }: PageHeaderProps): import("react").JSX.Element;
2
+ export declare function PageHeader({ title, description, textGap, headingTag, titleIcon: TitleIcon, titleIconHref, onTitleIconClick, titleIconLabel, backHref, onBack, backLabel, titleBadges, primaryAction, secondaryActions, maxVisibleSecondaryActions, moreActionsLabel, tabs, actions, slots, renderLink, className, contentClassName, actionsClassName, titleClassName, titleIconClassName, descriptionClassName, }: PageHeaderProps): import("react").JSX.Element;
@@ -51,7 +51,7 @@ export interface AsideNavShellProps extends LayoutNavigationAdapter {
51
51
  * render before the role-based commands.
52
52
  */
53
53
  actions?: ReactNode;
54
- /** The page's one main command: a solid primary button, visible at every width. */
54
+ /** The page's one main command: a solid primary button, available in the compact header menu. */
55
55
  primaryAction?: PageHeaderAction;
56
56
  /**
57
57
  * Supporting commands in priority order, as in Page headers: the first two
@@ -59,6 +59,13 @@ export interface AsideNavShellProps extends LayoutNavigationAdapter {
59
59
  * destructive command, move into the More actions menu, which closes the row.
60
60
  */
61
61
  secondaryActions?: readonly PageHeaderAction[];
62
+ /**
63
+ * How many routine secondary commands render as outline buttons on wide
64
+ * headers; later ones join the More actions menu. Use `1` or `0` when long
65
+ * labels beside the primary command would crowd the header; `Infinity`
66
+ * keeps every routine command inline. @default 2
67
+ */
68
+ maxVisibleSecondaryActions?: number;
62
69
  /** Accessible name of the More actions menu trigger. Default: `'More actions'`. */
63
70
  moreActionsLabel?: string;
64
71
  /** Content below the body. */
@@ -72,7 +79,7 @@ export interface AsideNavShellProps extends LayoutNavigationAdapter {
72
79
  strings?: StringsProp<AsideNavShellStrings>;
73
80
  }
74
81
  export type SettingsShellProps = AsideNavShellProps;
75
- export declare function AsideNavShell({ title, description, groups, currentId, currentPath, children, aside, actions, primaryAction, secondaryActions, moreActionsLabel, footer, className, navClassName, contentClassName, renderLink, strings: stringsProp, }: AsideNavShellProps): import("react").JSX.Element;
82
+ export declare function AsideNavShell({ title, description, groups, currentId, currentPath, children, aside, actions, primaryAction, secondaryActions, maxVisibleSecondaryActions, moreActionsLabel, footer, className, navClassName, contentClassName, renderLink, strings: stringsProp, }: AsideNavShellProps): import("react").JSX.Element;
76
83
  export declare namespace AsideNavShell {
77
84
  var displayName: string;
78
85
  }
@@ -4,4 +4,4 @@
4
4
  */
5
5
  import * as React from 'react';
6
6
  import type { AppSidebarProps } from './sidebar.types';
7
- export declare function AppSidebar({ navigationGroups, footerNavItems, footerLabel, logo, collapsedLogo, workspaceLinks, workspaceStrings, workspaceContentClassName, headerClassName, logoClassName, iconMap, currentUrl, liveBadges, showBadges, menuDensity, renderLink, loading, collapsible, variant, side, className, surfaceClassName, contentClassName, slots, renderItem, searchable, searchValue, defaultSearchValue, onSearchValueChange, strings: stringsProp, expandedItems, defaultExpandedItems, onExpandedItemsChange, }: AppSidebarProps): React.JSX.Element;
7
+ export declare function AppSidebar({ navigationGroups, 'aria-label': navigationLabel, footerNavItems, footerLabel, logo, collapsedLogo, workspaceLinks, workspaceStrings, workspaceContentClassName, headerClassName, logoClassName, iconMap, currentUrl, liveBadges, showBadges, menuDensity, renderLink, loading, collapsible, panelId, surface, variant, side, className, surfaceClassName, contentClassName, slots, renderItem, renderItemContent, searchable, searchValue, defaultSearchValue, onSearchValueChange, strings: stringsProp, expandedItems, defaultExpandedItems, onExpandedItemsChange, }: AppSidebarProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
1
  /** Grouped navigation uses public disclosure and sidebar anatomy; routing stays app-owned. */
2
2
  import * as React from 'react';
3
3
  import { type SidebarGroupedNavigationProps } from '../sidebar.types';
4
- export declare function SidebarGroupedNavigation({ navigationByGroups, currentUrl, iconMap, liveBadges, showBadges, renderLink, emptySlot, renderItem, className, menuDensity, expandedItems, defaultExpandedItems, onExpandedItemsChange, searchValue, strings: stringsProp, }: SidebarGroupedNavigationProps): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null;
4
+ export declare function SidebarGroupedNavigation({ navigationByGroups, currentUrl, iconMap, liveBadges, showBadges, renderLink, emptySlot, renderItem, renderItemContent, className, menuDensity, expandedItems, defaultExpandedItems, onExpandedItemsChange, searchValue, strings: stringsProp, }: SidebarGroupedNavigationProps): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null;
@@ -1,4 +1,4 @@
1
1
  /** SidebarNavigation — flat, framework-neutral sidebar nav list. */
2
2
  import * as React from 'react';
3
3
  import type { SidebarFlatNavigationProps } from '../sidebar.types';
4
- export declare function SidebarNavigation({ items, label, currentUrl, iconMap, liveBadges, showBadges, renderLink, renderItem, className, menuDensity, }: SidebarFlatNavigationProps): React.JSX.Element;
4
+ export declare function SidebarNavigation({ items, label, currentUrl, iconMap, liveBadges, showBadges, renderLink, renderItem, renderItemContent, className, menuDensity, }: SidebarFlatNavigationProps): React.JSX.Element;
@@ -1,6 +1,7 @@
1
1
  export { LayoutSidebar, type LayoutSidebarProps } from './sidebar';
2
2
  export { LayoutSidebarProvider, useLayoutSidebar, type LayoutSidebarContext, type LayoutSidebarProviderProps, } from './sidebar.context';
3
3
  export { AppSidebar } from './app-sidebar';
4
+ export { SidebarNavigationRail, type SidebarNavigationRailItem, type SidebarNavigationRailProps } from './sidebar-navigation-rail';
4
5
  export { SidebarLogo, type SidebarLogoProps } from './components/sidebar-logo';
5
6
  export { SidebarWorkspaceDropdown } from './components/sidebar-workspace-dropdown';
6
7
  export { SidebarNavigation } from './components/sidebar-navigation';
@@ -8,4 +9,4 @@ export { SidebarGroupedNavigation } from './components/sidebar-grouped-navigatio
8
9
  export { SidebarNavigationFooter } from './components/sidebar-navigation-footer';
9
10
  export { SidebarNavigationUser, defaultSidebarNavigationUserStrings, type SidebarNavigationUserProps, type SidebarNavigationUserStrings, } from './components/sidebar-navigation-user';
10
11
  export { toPath, isPathMatch, getNavLabel, getNavKey, DynamicIcon as SidebarIcon, type DynamicIconProps as SidebarIconProps, NavBadge, resolveNavBadge, } from './sidebar.utils';
11
- export { defaultSidebarWorkspaceDropdownStrings, defaultSidebarNavigationStrings, type SidebarNavigationStrings, type SidebarExpansionProps, type AppSidebarProps, type SidebarNavItem, type SidebarFlatNavItem, type SidebarRenderItemContext, type SidebarSlots, type SidebarFlatNavigationProps, type SidebarGroupedNavigationProps, type SidebarFooterNavigationItem, type SidebarNavigationFooterProps, type WorkspaceLink, type SidebarWorkspaceDropdownProps, type SidebarWorkspaceDropdownStrings, } from './sidebar.types';
12
+ export { defaultSidebarWorkspaceDropdownStrings, defaultSidebarNavigationStrings, type SidebarNavigationStrings, type SidebarExpansionProps, type AppSidebarProps, type SidebarNavItem, type SidebarNavigationGroup, type SidebarNavigationGroups, type SidebarFlatNavItem, type SidebarRenderItemContext, type SidebarRenderItemContentContext, type SidebarSlotContext, type SidebarSlot, type SidebarSlots, type SidebarFlatNavigationProps, type SidebarGroupedNavigationProps, type SidebarFooterNavigationItem, type SidebarNavigationFooterProps, type WorkspaceLink, type SidebarWorkspaceDropdownProps, type SidebarWorkspaceDropdownStrings, } from './sidebar.types';
@@ -0,0 +1,36 @@
1
+ /** Primary area navigation, distinct from SidebarRail's collapse affordance. */
2
+ import type { ComponentType } from 'react';
3
+ import type { LayoutIconSource, LayoutNavigationAdapter } from '../layout.types';
4
+ import { type LayoutSidebarProps } from './sidebar';
5
+ import type { SidebarFlatNavItem, SidebarSlot } from './sidebar.types';
6
+ export type SidebarNavigationRailItem = SidebarFlatNavItem & {
7
+ /** Informative area icon; the full label remains accessible. */
8
+ icon: LayoutIconSource;
9
+ } & ({
10
+ id: string;
11
+ } | {
12
+ handle: string;
13
+ });
14
+ export interface SidebarNavigationRailProps extends Omit<LayoutSidebarProps, 'children' | 'collapsible'>, LayoutNavigationAdapter {
15
+ items: readonly SidebarNavigationRailItem[];
16
+ /** Selected item id (or its legacy handle). Controlled. */
17
+ value?: string;
18
+ onValueChange?: (id: string) => void;
19
+ /** Used for native current-route indication when value is omitted. */
20
+ currentUrl?: string;
21
+ iconMap?: Record<string, ComponentType<{
22
+ className?: string;
23
+ }>>;
24
+ /** Structural content seams. Header/footer stay pinned; navigation additions scroll. The rail owns each region's insets. */
25
+ slots?: {
26
+ header?: SidebarSlot;
27
+ beforeNavigation?: SidebarSlot;
28
+ afterNavigation?: SidebarSlot;
29
+ footer?: SidebarSlot;
30
+ };
31
+ /** The rail stays visible by default; offcanvas makes the entire rail hideable. */
32
+ collapsible?: 'none' | 'offcanvas';
33
+ /** Accessible name for this navigation region. @default 'Primary navigation' */
34
+ 'aria-label'?: string;
35
+ }
36
+ export declare function SidebarNavigationRail({ items, value, onValueChange, currentUrl, renderLink, iconMap, slots, collapsible, 'aria-label': ariaLabel, className, surface, surfaceClassName, style, side, panelId, ...props }: SidebarNavigationRailProps): import("react").JSX.Element;
@@ -1,17 +1,15 @@
1
- /** SidebarProvider — layout-scoped wrapper around the shadcn sidebar context. */
2
- import * as React from 'react';
3
- import { useBaseSidebarContext, type SidebarMenuDensity } from '../../base/sidebar/sidebar';
4
- export declare const useLayoutSidebar: typeof import("../../ui/sidebar").useSidebar;
1
+ import { useBaseSidebarContext, type SidebarMenuDensity, type SidebarProviderProps } from '../../base/sidebar/sidebar';
2
+ export declare const useLayoutSidebar: typeof import("../../ui/sidebar-state").useSidebar;
5
3
  export type LayoutSidebarContext = ReturnType<typeof useBaseSidebarContext>;
6
- export type LayoutSidebarProviderProps = React.ComponentProps<'div'> & {
4
+ export type LayoutSidebarProviderProps = SidebarProviderProps & {
7
5
  /** Parent-driven drawer adaptation for embedded shells; defaults to viewport. */
8
6
  adaptTo?: 'viewport' | 'container';
9
7
  /** Whether the surface starts open, for uncontrolled use. */
10
8
  defaultOpen?: boolean;
11
- /** Default row and child-list rhythm. @default 'compact' */
9
+ /** Default row and child-list rhythm. @default 'default' */
12
10
  menuDensity?: SidebarMenuDensity;
13
11
  /** Whether the surface is showing. Controlled. */
14
12
  open?: boolean;
15
13
  onOpenChange?: (open: boolean) => void;
16
14
  };
17
- export declare function LayoutSidebarProvider({ defaultOpen, menuDensity, open, onOpenChange, className, style, children, ...props }: LayoutSidebarProviderProps): React.JSX.Element;
15
+ export declare function LayoutSidebarProvider({ defaultOpen, menuDensity, open, onOpenChange, className, style, children, ...props }: LayoutSidebarProviderProps): import("react").JSX.Element;