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
@@ -1,32 +1,32 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "./lib/strings.js";
3
- import { t } from "./utils-CF3c95Io.js";
4
- import { n } from "./buttons-BbfzgczK.js";
5
- import { c as r, o as i } from "./typography-CSyJrh28.js";
3
+ import { t } from "./utils-B6kKb8jB.js";
4
+ import { n } from "./buttons-BedGfygC.js";
5
+ import { c as r, o as i } from "./typography-BQnine1k.js";
6
6
  import { t as a } from "./focus-recipes-B653VaLq.js";
7
- import { t as o } from "./structure-C0V0_Fyf.js";
7
+ import { t as o } from "./structure-DuxKl954.js";
8
8
  import { i as s } from "./tone-recipes-BPsRAvhu.js";
9
9
  import { t as c } from "./interaction-recipes-XR9ZpVYL.js";
10
- import { n as l } from "./number-E_OiIfJz.js";
11
- import { t as u } from "./badge-DErMA7ul.js";
12
- import { c as d, i as f, n as p, o as m, r as h, t as g, u as _ } from "./item-BvZ2DR_x.js";
13
- import { forwardRef as v, useEffect as y, useMemo as b, useState as x } from "react";
14
- import { jsx as S, jsxs as C } from "react/jsx-runtime";
15
- import { Check as w, ChevronDown as T, ChevronRight as E } from "lucide-react";
10
+ import { n as l } from "./number-CRU3kGuk.js";
11
+ import { t as u } from "./badge-xIiV_E7f.js";
12
+ import { c as d, i as f, n as p, o as m, r as h, t as g, u as _ } from "./item-DjCcM18E.js";
13
+ import { forwardRef as v, useCallback as y, useEffect as b, useMemo as x, useRef as S, useState as C } from "react";
14
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
15
+ import { Check as E, ChevronDown as D, ChevronRight as O } from "lucide-react";
16
16
  //#region src/components/layout/navigation/breadcrumb-progress/types.ts
17
- var D = {
17
+ var k = {
18
18
  stepLabel: "Step",
19
19
  ofLabel: "of"
20
20
  };
21
21
  //#endregion
22
22
  //#region src/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.tsx
23
- function O({ steps: a, currentIndex: o, onStepClick: u, className: d, strings: f }) {
24
- let p = e(D, f);
25
- return /* @__PURE__ */ C("div", {
23
+ function A({ steps: a, currentIndex: o, onStepClick: u, className: d, strings: f }) {
24
+ let p = e(k, f);
25
+ return /* @__PURE__ */ T("div", {
26
26
  className: t("breadcrumb-progress--component", "w-full", d),
27
- children: [/* @__PURE__ */ C("div", {
27
+ children: [/* @__PURE__ */ T("div", {
28
28
  className: "flex items-center justify-between mb-space-md",
29
- children: [/* @__PURE__ */ C(i, { children: [
29
+ children: [/* @__PURE__ */ T(i, { children: [
30
30
  p.stepLabel,
31
31
  " ",
32
32
  o + 1,
@@ -34,19 +34,19 @@ function O({ steps: a, currentIndex: o, onStepClick: u, className: d, strings: f
34
34
  p.ofLabel,
35
35
  " ",
36
36
  a.length
37
- ] }), /* @__PURE__ */ S(l, {
37
+ ] }), /* @__PURE__ */ w(l, {
38
38
  value: Math.round((o + 1) / a.length * 100),
39
39
  scaled: !0,
40
40
  size: "xs",
41
41
  weight: "semibold"
42
42
  })]
43
- }), /* @__PURE__ */ S("ol", {
43
+ }), /* @__PURE__ */ w("ol", {
44
44
  className: "m-0 list-none p-0 font-sans flex items-center gap-space-md",
45
45
  children: a.map((e, i) => {
46
46
  let l = i < o, d = i === o, f = u && (l || d);
47
- return /* @__PURE__ */ C("li", {
47
+ return /* @__PURE__ */ T("li", {
48
48
  className: "flex min-w-0 flex-1 items-center gap-space-md",
49
- children: [/* @__PURE__ */ C(n, {
49
+ children: [/* @__PURE__ */ T(n, {
50
50
  type: "button",
51
51
  "aria-label": `${p.stepLabel} ${i + 1}: ${e.label}`,
52
52
  onClick: () => f && u?.(e.id, i),
@@ -55,107 +55,126 @@ function O({ steps: a, currentIndex: o, onStepClick: u, className: d, strings: f
55
55
  buttonStyle: "ghost",
56
56
  size: "md",
57
57
  className: t("min-w-0 justify-start gap-space-md text-left transition-colors", f && c.rowHover, !f && "cursor-default"),
58
- children: [/* @__PURE__ */ S(r, {
58
+ children: [/* @__PURE__ */ w(r, {
59
59
  tag: "span",
60
60
  size: "xs",
61
61
  weight: "semibold",
62
62
  className: t("flex size-6 shrink-0 items-center justify-center rounded-full tabular-nums", l && "bg-success text-success-foreground", d && `bg-primary text-primary-foreground ring-4 ${s.primary.halo}`, !l && !d && "bg-muted text-muted-foreground"),
63
- children: l ? /* @__PURE__ */ S(w, { className: "size-icon-md" }) : i + 1
64
- }), /* @__PURE__ */ C("div", {
63
+ children: l ? /* @__PURE__ */ w(E, { className: "size-icon-md" }) : i + 1
64
+ }), /* @__PURE__ */ T("div", {
65
65
  className: "hidden min-w-0 lg:block",
66
- children: [/* @__PURE__ */ S(r, {
66
+ children: [/* @__PURE__ */ w(r, {
67
67
  weight: "semibold",
68
68
  className: t(!d && !l && "text-muted-foreground"),
69
69
  children: e.label
70
- }), !!e.hint && /* @__PURE__ */ S(r, {
70
+ }), !!e.hint && /* @__PURE__ */ w(r, {
71
71
  size: "xs",
72
72
  type: "discrete",
73
73
  className: "truncate",
74
74
  children: e.hint
75
75
  })]
76
76
  })]
77
- }), i < a.length - 1 && /* @__PURE__ */ S("div", { className: t("h-px flex-1", l ? "bg-success" : "bg-border") })]
77
+ }), i < a.length - 1 && /* @__PURE__ */ w("div", { className: t("h-px flex-1", l ? "bg-success" : "bg-border") })]
78
78
  }, e.id);
79
79
  })
80
80
  })]
81
81
  });
82
82
  }
83
- O.displayName = "BreadcrumbProgress";
83
+ A.displayName = "BreadcrumbProgress";
84
84
  //#endregion
85
85
  //#region src/components/layout/navigation/category-nav/category-nav.tsx
86
- function k({ title: e, items: n, activeId: r, onSelect: i, className: a }) {
87
- return /* @__PURE__ */ S("nav", {
86
+ function j({ title: e, items: n, activeId: r, onSelect: i, className: a }) {
87
+ return /* @__PURE__ */ w("nav", {
88
88
  "data-component": "category-nav",
89
89
  "data-slot": "category-nav",
90
90
  "aria-label": e,
91
91
  className: t("category-nav--component min-w-0", a),
92
- children: /* @__PURE__ */ S(m, { children: n.map((e) => {
92
+ children: /* @__PURE__ */ w(m, { children: n.map((e) => {
93
93
  let n = e.icon, a = e.id === r;
94
- return /* @__PURE__ */ C(g, {
94
+ return /* @__PURE__ */ T(g, {
95
95
  onClick: () => i?.(e.id),
96
96
  "data-state": a ? "active" : "inactive",
97
- className: t("cursor-pointer rounded-inner px-space-md transition-colors", a ? c.rowCurrent : c.rowHover),
97
+ className: t("cursor-pointer rounded-radius px-space-md transition-colors", a ? c.rowCurrent : c.rowHover),
98
98
  children: [
99
- !!n && /* @__PURE__ */ S(d, {
99
+ !!n && /* @__PURE__ */ w(d, {
100
100
  variant: "icon",
101
101
  className: t(a ? "text-accent-foreground" : "text-muted-foreground"),
102
- children: /* @__PURE__ */ S(n, {})
102
+ children: /* @__PURE__ */ w(n, {})
103
103
  }),
104
- /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ S(_, {
104
+ /* @__PURE__ */ T(h, { children: [/* @__PURE__ */ w(_, {
105
105
  bold: a,
106
106
  children: e.label
107
- }), !!e.hint && /* @__PURE__ */ S(f, {
107
+ }), !!e.hint && /* @__PURE__ */ w(f, {
108
108
  clamp: 1,
109
109
  children: e.hint
110
110
  })] }),
111
- /* @__PURE__ */ C(p, { children: [typeof e.count == "number" && /* @__PURE__ */ S(u, {
111
+ /* @__PURE__ */ T(p, { children: [typeof e.count == "number" && /* @__PURE__ */ w(u, {
112
112
  tone: "secondary",
113
113
  className: "tabular-nums",
114
114
  children: e.count
115
- }), /* @__PURE__ */ S(E, { className: t("size-icon shrink-0 text-muted-foreground", a && "text-accent-foreground") })] })
115
+ }), /* @__PURE__ */ w(O, { className: t("size-icon shrink-0 text-muted-foreground", a && "text-accent-foreground") })] })
116
116
  ]
117
117
  }, e.id);
118
118
  }) })
119
119
  });
120
120
  }
121
- k.displayName = "CategoryNav";
121
+ j.displayName = "CategoryNav";
122
122
  //#endregion
123
123
  //#region src/components/layout/navigation/section-nav/section-nav.tsx
124
- var A = { navigationLabel: "Section navigation" }, j = v(function({ items: n, rootMargin: i = "-40% 0px -50% 0px", className: s, onSelect: l, strings: u, "aria-label": d, ...f }, p) {
125
- let m = e(A, u), [h, g] = x(n[0]?.id ?? null);
126
- return y(() => {
127
- let e = new IntersectionObserver((e) => {
128
- let t = e.find((e) => e.isIntersecting);
129
- t?.target.id && g(t.target.id);
124
+ var M = { navigationLabel: "Section navigation" }, N = 150, P = v(function({ items: n, rootMargin: i = "-40% 0px -50% 0px", className: s, onSelect: l, strings: u, "aria-label": d, ...f }, p) {
125
+ let m = e(M, u), [h, g] = C(n[0]?.id ?? null), _ = S(null), v = S(void 0), x = n.map((e) => e.id).join("\0"), E = y(() => {
126
+ clearTimeout(v.current), v.current = setTimeout(() => {
127
+ _.current && (_.current.settled = !0);
128
+ }, N);
129
+ }, []);
130
+ return b(() => {
131
+ let e = () => {
132
+ let e = _.current;
133
+ e && (e.settled ? _.current = null : E());
134
+ };
135
+ return document.addEventListener("scroll", e, {
136
+ capture: !0,
137
+ passive: !0
138
+ }), () => {
139
+ document.removeEventListener("scroll", e, { capture: !0 }), clearTimeout(v.current);
140
+ };
141
+ }, [E]), b(() => {
142
+ let e = x ? x.split("\0") : [], t = /* @__PURE__ */ new Map(), n = new IntersectionObserver((n) => {
143
+ if (n.forEach((e) => t.set(e.target.id, e.isIntersecting)), _.current) return;
144
+ let r = e.find((e) => t.get(e));
145
+ r && g(r);
130
146
  }, {
131
147
  rootMargin: i,
132
148
  threshold: 0
133
149
  });
134
- return n.forEach((t) => {
135
- let n = document.getElementById(t.id);
136
- n && e.observe(n);
137
- }), () => e.disconnect();
138
- }, [n, i]), /* @__PURE__ */ S("nav", {
150
+ return e.forEach((e) => {
151
+ let t = document.getElementById(e);
152
+ t && n.observe(t);
153
+ }), () => n.disconnect();
154
+ }, [x, i]), /* @__PURE__ */ w("nav", {
139
155
  ref: p,
140
156
  className: t("section-nav--component", s),
141
157
  "aria-label": d ?? m.navigationLabel,
142
158
  ...f,
143
- children: /* @__PURE__ */ S(o, {
159
+ children: /* @__PURE__ */ w(o, {
144
160
  gap: "2xs",
145
161
  className: "section-nav--items",
146
162
  children: n.map((e) => {
147
163
  let n = e.icon, i = h === e.id;
148
- return /* @__PURE__ */ C("a", {
164
+ return /* @__PURE__ */ T("a", {
149
165
  href: `#${e.id}`,
150
166
  "aria-current": i ? "location" : void 0,
151
167
  onClick: (t) => {
152
- t.preventDefault(), document.getElementById(e.id)?.scrollIntoView({
168
+ t.preventDefault(), _.current = {
169
+ id: e.id,
170
+ settled: !1
171
+ }, E(), document.getElementById(e.id)?.scrollIntoView({
153
172
  behavior: "smooth",
154
173
  block: "start"
155
174
  }), g(e.id), l?.(e.id);
156
175
  },
157
- className: t(`flex items-center gap-space-md rounded-inner px-space-md py-row-y transition-colors outline-none ${a.edge}`, i ? c.rowCurrent : `text-muted-foreground ${c.rowHover}`),
158
- children: [!!n && /* @__PURE__ */ S(n, { className: "size-icon-md shrink-0" }), /* @__PURE__ */ S(r, {
176
+ className: t(`flex items-center gap-space-md rounded-radius px-space-md py-row-y transition-colors outline-none ${a.edge}`, i ? c.rowCurrent : `text-muted-foreground ${c.rowHover}`),
177
+ children: [!!n && /* @__PURE__ */ w(n, { className: "size-icon-md shrink-0" }), /* @__PURE__ */ w(r, {
159
178
  tag: "span",
160
179
  type: "inherit",
161
180
  weight: i ? "semibold" : "medium",
@@ -166,11 +185,11 @@ var A = { navigationLabel: "Section navigation" }, j = v(function({ items: n, ro
166
185
  })
167
186
  });
168
187
  });
169
- j.displayName = "SectionNav";
188
+ P.displayName = "SectionNav";
170
189
  //#endregion
171
190
  //#region src/components/layout/navigation/side-nav.tsx
172
- var M = { navigationLabel: "Side navigation" };
173
- function N(e) {
191
+ var F = { navigationLabel: "Side navigation" };
192
+ function I(e) {
174
193
  if (e.length === 0) return "/";
175
194
  try {
176
195
  let t = typeof window < "u" ? window.location.origin : "http://localhost", n = new URL(e, t).pathname.replace(/\/+$/, "");
@@ -180,39 +199,39 @@ function N(e) {
180
199
  return t.length > 0 ? t : "/";
181
200
  }
182
201
  }
183
- function P(e) {
202
+ function L(e) {
184
203
  return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
185
204
  }
186
- var F = v(function({ items: s, groups: l, currentPath: d, className: f, itemClassName: p, activeItemClassName: m, strings: h, "aria-label": g, ..._ }, v) {
187
- let y = e(M, h), w = b(() => l ?? [{
205
+ var R = v(function({ items: s, groups: l, currentPath: d, className: f, itemClassName: p, activeItemClassName: m, strings: h, "aria-label": g, ..._ }, v) {
206
+ let y = e(F, h), b = x(() => l ?? [{
188
207
  id: "side-nav-items",
189
208
  items: s ?? [],
190
209
  collapsible: !1
191
- }], [l, s]), E = N(d ?? (typeof window < "u" ? window.location.pathname : "")), D = b(() => w.flatMap((e) => e.items.map((t) => ({
210
+ }], [l, s]), S = I(d ?? (typeof window < "u" ? window.location.pathname : "")), E = x(() => b.flatMap((e) => e.items.map((t) => ({
192
211
  groupId: e.id,
193
- normalizedPath: N(t.href)
194
- }))), [w]).filter(({ normalizedPath: e }) => E === e || E.startsWith(`${e}/`)).sort((e, t) => t.normalizedPath.length - e.normalizedPath.length)[0]?.normalizedPath ?? null, [O, k] = x(() => Object.fromEntries(w.map((e) => [e.id, !!e.defaultCollapsed]))), A = (e) => k((t) => ({
212
+ normalizedPath: I(t.href)
213
+ }))), [b]).filter(({ normalizedPath: e }) => S === e || S.startsWith(`${e}/`)).sort((e, t) => t.normalizedPath.length - e.normalizedPath.length)[0]?.normalizedPath ?? null, [O, k] = C(() => Object.fromEntries(b.map((e) => [e.id, !!e.defaultCollapsed]))), A = (e) => k((t) => ({
195
214
  ...t,
196
215
  [e]: !t[e]
197
216
  })), j = m && m.length > 0 ? m : c.rowCurrent;
198
- return /* @__PURE__ */ S("nav", {
217
+ return /* @__PURE__ */ w("nav", {
199
218
  ref: v,
200
219
  "aria-label": g ?? y.navigationLabel,
201
220
  className: t("side-nav--component", f),
202
221
  ..._,
203
- children: /* @__PURE__ */ S(o, {
222
+ children: /* @__PURE__ */ w(o, {
204
223
  gap: "xl",
205
224
  className: "side-nav--groups",
206
- children: w.map((e) => {
225
+ children: b.map((e) => {
207
226
  let s = e.collapsible !== !1 && O[e.id], l = !!e.label, d = !s;
208
- return /* @__PURE__ */ C(o, {
227
+ return /* @__PURE__ */ T(o, {
209
228
  gap: "2xs",
210
229
  className: "side-nav--group",
211
- children: [!!l && (e.collapsible === !1 ? P(e.label) ? /* @__PURE__ */ S(i, {
230
+ children: [!!l && (e.collapsible === !1 ? L(e.label) ? /* @__PURE__ */ w(i, {
212
231
  tag: "div",
213
232
  className: "px-row-x py-row-y",
214
233
  children: e.label
215
- }) : e.label : /* @__PURE__ */ C(n, {
234
+ }) : e.label : /* @__PURE__ */ T(n, {
216
235
  type: "button",
217
236
  tone: "secondary",
218
237
  buttonStyle: "ghost",
@@ -221,26 +240,26 @@ var F = v(function({ items: s, groups: l, currentPath: d, className: f, itemClas
221
240
  onClick: () => A(e.id),
222
241
  className: t("h-auto min-h-action-sm justify-between px-row-x py-row-y", "text-muted-foreground", "hover:text-foreground transition-colors"),
223
242
  "aria-expanded": !s,
224
- children: [P(e.label) ? /* @__PURE__ */ S(i, {
243
+ children: [L(e.label) ? /* @__PURE__ */ w(i, {
225
244
  tag: "span",
226
245
  children: e.label
227
- }) : e.label, /* @__PURE__ */ S(T, {
246
+ }) : e.label, /* @__PURE__ */ w(D, {
228
247
  className: t("size-icon-md transition-transform", s && "-rotate-90"),
229
248
  "aria-hidden": "true"
230
249
  })]
231
- })), !!d && /* @__PURE__ */ S(o, {
250
+ })), !!d && /* @__PURE__ */ w(o, {
232
251
  gap: "2xs",
233
252
  className: "side-nav--items",
234
253
  children: e.items.map((e) => {
235
- let n = e.icon, i = N(e.href) === D;
236
- return /* @__PURE__ */ C("a", {
254
+ let n = e.icon, i = I(e.href) === E;
255
+ return /* @__PURE__ */ T("a", {
237
256
  href: e.disabled ? void 0 : e.href,
238
257
  "aria-current": i ? "page" : void 0,
239
258
  "aria-disabled": e.disabled || void 0,
240
- className: t("group flex items-center gap-space-md rounded-inner px-row-x py-row-y", "text-sm transition-colors", `focus-visible:outline-none ${a.edge}`, c.rowHover, e.disabled && "pointer-events-none opacity-50", i && j, p),
259
+ className: t("group flex items-center gap-space-md rounded-radius px-row-x py-row-y", "text-sm transition-colors", `focus-visible:outline-none ${a.edge}`, c.rowHover, e.disabled && "pointer-events-none opacity-50", i && j, p),
241
260
  children: [
242
- !!n && /* @__PURE__ */ S(n, { className: t("size-icon shrink-0", i ? "text-accent-foreground" : "text-muted-foreground") }),
243
- P(e.label) ? /* @__PURE__ */ S(r, {
261
+ !!n && /* @__PURE__ */ w(n, { className: t("size-icon shrink-0", i ? "text-accent-foreground" : "text-muted-foreground") }),
262
+ L(e.label) ? /* @__PURE__ */ w(r, {
244
263
  tag: "span",
245
264
  size: "inherit",
246
265
  weight: "medium",
@@ -248,7 +267,7 @@ var F = v(function({ items: s, groups: l, currentPath: d, className: f, itemClas
248
267
  className: "min-w-0 flex-1 truncate text-inherit",
249
268
  children: e.label
250
269
  }) : e.label,
251
- !!e.badge && /* @__PURE__ */ S(u, {
270
+ !!e.badge && /* @__PURE__ */ w(u, {
252
271
  tone: "secondary",
253
272
  className: "shrink-0",
254
273
  children: e.badge
@@ -262,8 +281,8 @@ var F = v(function({ items: s, groups: l, currentPath: d, className: f, itemClas
262
281
  })
263
282
  });
264
283
  });
265
- F.displayName = "SideNav";
284
+ R.displayName = "SideNav";
266
285
  //#endregion
267
- export { k as a, A as i, M as n, O as o, j as r, D as s, F as t };
286
+ export { j as a, M as i, F as n, A as o, P as r, k as s, R as t };
268
287
 
269
- //# sourceMappingURL=navigation-BQNcg1jT.js.map
288
+ //# sourceMappingURL=navigation-DaRjthVk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-DaRjthVk.js","names":["Text","DisplayLabel","focusRecipes","Stack","toneRecipes","interactionRecipes","Percent","Badge","ItemMedia","ItemDescription","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","defaultBreadcrumbProgressStrings","BreadcrumbProgress","stringsProp","strings","useStrings","cn","className","currentIndex","steps","isCompleted","idx","isCurrent","isClickable","onStepClick","Button","step","Check","CategoryNav","title","items","Icon","it","active","activeId","onSelect","ChevronRight","defaultSectionNavStrings","SCROLL_SETTLE_MS","SectionNav","forwardRef","ariaLabel","rootProps","setActive","useState","clickLock","useRef","settleTimer","sectionIds","scheduleSettle","useCallback","useEffect","onScroll","lock","ids","intersecting","obs","entries","entry","next","id","el","rootMargin","isActive","e","defaultSideNavStrings","normalizePath","rawUrl","baseOrigin","trimmed","isSimpleText","value","SideNav","groupsProp","groups","useMemo","activePath","currentPath","activeNormalized","g","item","normalizedPath","b","a","collapsed","setCollapsed","toggleGroup","prev","resolvedActive","activeItemClassName","isCollapsed","group","showLabel","shouldRenderItems","ChevronDown","itemClassName"],"sources":["../src/components/layout/navigation/breadcrumb-progress/types.ts","../src/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.tsx","../src/components/layout/navigation/category-nav/category-nav.tsx","../src/components/layout/navigation/section-nav/section-nav.tsx","../src/components/layout/navigation/side-nav.tsx"],"sourcesContent":["import type { StringsProp } from '../../../../lib/strings';\n\nexport interface BreadcrumbProgressStep {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Display label. */\n\tlabel: string;\n\t/** Short guidance shown beneath the control. */\n\thint?: string;\n}\n\nexport interface BreadcrumbProgressStrings {\n\tstepLabel: string;\n\tofLabel: string;\n}\n\nexport const defaultBreadcrumbProgressStrings: BreadcrumbProgressStrings = {\n\tstepLabel: 'Step',\n\tofLabel: 'of',\n};\n\nexport interface BreadcrumbProgressProps {\n\t/** Steps in the flow, in order. */\n\tsteps: BreadcrumbProgressStep[];\n\t/** Zero-based position of the active step. */\n\tcurrentIndex: number;\n\tonStepClick?: (id: string, index: number) => void;\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<BreadcrumbProgressStrings>;\n}\n","/**\n * BreadcrumbProgress — wizard / multi-step navigation with completed,\n * current, and upcoming states. Click any completed step to jump back.\n */\nimport { Check } from 'lucide-react';\nimport { Button } from '../../../base/buttons';\nimport { Percent } from '../../../primitives';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultBreadcrumbProgressStrings,\n\ttype BreadcrumbProgressProps,\n} from './types';\nimport { interactionRecipes } from '../../../../lib/interaction-recipes';\nimport { toneRecipes } from '../../../../lib/tone-recipes';\n\nexport function BreadcrumbProgress({ steps, currentIndex, onStepClick, className, strings: stringsProp }: BreadcrumbProgressProps) {\n\tconst strings = useStrings(defaultBreadcrumbProgressStrings, stringsProp);\n\n\treturn (\n\t\t<div className={cn('breadcrumb-progress--component', 'w-full', className)}>\n\t\t\t<div className=\"flex items-center justify-between mb-space-md\">\n\t\t\t\t<DisplayLabel>\n\t\t\t\t\t{strings.stepLabel} {currentIndex + 1} {strings.ofLabel} {steps.length}\n\t\t\t\t</DisplayLabel>\n\t\t\t\t<Percent value={Math.round(((currentIndex + 1) / steps.length) * 100)} scaled size=\"xs\" weight=\"semibold\" />\n\t\t\t</div>\n\t\t\t<ol className=\"m-0 list-none p-0 font-sans flex items-center gap-space-md\">\n\t\t\t\t{steps.map((step, idx) => {\n\t\t\t\t\tconst isCompleted = idx < currentIndex;\n\t\t\t\t\tconst isCurrent = idx === currentIndex;\n\t\t\t\t\tconst isClickable = onStepClick && (isCompleted || isCurrent);\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={step.id} className=\"flex min-w-0 flex-1 items-center gap-space-md\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\taria-label={`${strings.stepLabel} ${idx + 1}: ${step.label}`}\n\t\t\t\t\t\t\t\tonClick={() => isClickable && onStepClick?.(step.id, idx)}\n\t\t\t\t\t\t\t\tdisabled={!isClickable}\n\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'min-w-0 justify-start gap-space-md text-left transition-colors',\n\t\t\t\t\t\t\t\t\tisClickable && interactionRecipes.rowHover,\n\t\t\t\t\t\t\t\t\t!isClickable && 'cursor-default',\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<Text\n\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'flex size-6 shrink-0 items-center justify-center rounded-full tabular-nums',\n\t\t\t\t\t\t\t\t\t\tisCompleted && 'bg-success text-success-foreground',\n\t\t\t\t\t\t\t\t\t\tisCurrent && `bg-primary text-primary-foreground ring-4 ${toneRecipes.primary.halo}`,\n\t\t\t\t\t\t\t\t\t\t!isCompleted && !isCurrent && 'bg-muted text-muted-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{isCompleted ? <Check className=\"size-icon-md\" /> : idx + 1}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<div className=\"hidden min-w-0 lg:block\">\n\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className={cn(!isCurrent && !isCompleted && 'text-muted-foreground')}>{step.label}</Text>\n\t\t\t\t\t\t\t\t\t{!!step.hint && <Text size=\"xs\" type=\"discrete\" className=\"truncate\">{step.hint}</Text>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{idx < steps.length - 1 && (\n\t\t\t\t\t\t\t\t<div className={cn('h-px flex-1', isCompleted ? 'bg-success' : 'bg-border')} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ol>\n\t\t</div>\n\t);\n}\n\nBreadcrumbProgress.displayName = 'BreadcrumbProgress';\n","/**\n * CategoryNav — vertical icon + label list with optional count badge per row.\n * Use as a sidebar nav for filtering or category browsing.\n */\nimport { ChevronRight } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { cn } from '../../../../lib/utils';\n\nimport type { CategoryNavProps } from './types';\nimport { interactionRecipes } from '../../../../lib/interaction-recipes';\n\nexport function CategoryNav({ title, items, activeId, onSelect, className }: CategoryNavProps) {\n\treturn (\n\t\t<nav\n\t\t\tdata-component=\"category-nav\"\n\t\t\tdata-slot=\"category-nav\"\n\t\t\taria-label={title}\n\t\t\tclassName={cn('category-nav--component min-w-0', className)}\n\t\t>\n\t\t\t<ItemGroup>\n\t\t\t\t{items.map((it) => {\n\t\t\t\t\tconst Icon = it.icon;\n\t\t\t\t\tconst active = it.id === activeId;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\tkey={it.id}\n\t\t\t\t\t\t\t// Not `size=\"sm\"`. That maps to the primitive `xs` scale, which\n\t\t\t\t\t\t\t// shrinks media icons to 12px for a genuinely compact row — but\n\t\t\t\t\t\t\t// this row carries a title, a description and a badge and stands\n\t\t\t\t\t\t\t// 58px tall. The result was a 12px leading icon beside a 16px\n\t\t\t\t\t\t\t// chevron, because a `size-` class opts an icon out of that\n\t\t\t\t\t\t\t// scaling rule. The default scale matches `base/item`'s own\n\t\t\t\t\t\t\t// reference row at the same height.\n\t\t\t\t\t\t\tonClick={() => onSelect?.(it.id)}\n\t\t\t\t\t\t\tdata-state={active ? 'active' : 'inactive'}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t// The selected tint spans the row, so the row needs horizontal\n\t\t\t\t\t\t\t\t// padding of its own or the icon sits 1px from the tint's edge.\n\t\t\t\t\t\t\t\t// `px-space-md` is what `SectionNav` uses for the same job.\n\t\t\t\t\t\t\t\t'cursor-pointer rounded-radius px-space-md transition-colors',\n\t\t\t\t\t\t\t\tactive ? interactionRecipes.rowCurrent : interactionRecipes.rowHover,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t<ItemMedia variant=\"icon\" className={cn(active ? 'text-accent-foreground' : 'text-muted-foreground')}>\n\t\t\t\t\t\t\t\t\t<Icon />\n\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t<ItemTitle bold={active}>{it.label}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!it.hint && <ItemDescription clamp={1}>{it.hint}</ItemDescription>}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t\t{typeof it.count === 'number' && (\n\t\t\t\t\t\t\t\t\t<Badge tone=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t{it.count}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<ChevronRight\n\t\t\t\t\t\t\t\t\tclassName={cn('size-icon shrink-0 text-muted-foreground', active && 'text-accent-foreground')}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ItemGroup>\n\t\t</nav>\n\t);\n}\n\nCategoryNav.displayName = 'CategoryNav';\n","/**\n * SectionNav — sticky in-page anchor nav. Pass a list of section ids; the active one\n * is tracked via IntersectionObserver and the matching item is highlighted. Click to\n * scroll to that section. Pure JS — no router required.\n *\n * A click owns the current state: the clicked section stays current while the smooth\n * scroll it started passes other sections, after that scroll settles (including when\n * the last sections are too short to reach the top), and until the reader scrolls\n * again. Only then does the observer resume.\n */\nimport { forwardRef, useCallback, useEffect, useRef, useState, type ComponentPropsWithoutRef } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\nimport { interactionRecipes } from '../../../../lib/interaction-recipes';\nimport { focusRecipes } from '../../../../lib/focus-recipes';\n\nexport interface SectionNavStrings {\n\tnavigationLabel: string;\n}\n\nexport const defaultSectionNavStrings: SectionNavStrings = {\n\tnavigationLabel: 'Section navigation',\n};\n\n/** Quiet time after the last scroll event before a click's smooth scroll counts as settled. */\nconst SCROLL_SETTLE_MS = 150;\n\nexport interface SectionNavItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Display label. */\n\tlabel: string;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n}\n\nexport interface SectionNavProps extends Omit<ComponentPropsWithoutRef<'nav'>, 'children' | 'onSelect'> {\n\t/** Entries to render, in order. */\n\titems: SectionNavItem[];\n\trootMargin?: string;\n\tonSelect?: (id: string) => void;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SectionNavStrings>;\n}\n\nexport const SectionNav = forwardRef<HTMLElement, SectionNavProps>(function SectionNav({\n\titems,\n\trootMargin = '-40% 0px -50% 0px',\n\tclassName,\n\tonSelect,\n\tstrings: stringsProp,\n\t'aria-label': ariaLabel,\n\t...rootProps\n}, ref) {\n\tconst strings = useStrings(defaultSectionNavStrings, stringsProp);\n\tconst [active, setActive] = useState<string | null>(items[0]?.id ?? null);\n\t// The section a click selected, and whether the scroll it started has settled.\n\tconst clickLock = useRef<{ id: string; settled: boolean } | null>(null);\n\tconst settleTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\t// Observe by identity, not array instance, so a re-render keeps the observer.\n\tconst sectionIds = items.map((it) => it.id).join('\\u0000');\n\n\tconst scheduleSettle = useCallback(() => {\n\t\tclearTimeout(settleTimer.current);\n\t\tsettleTimer.current = setTimeout(() => {\n\t\t\tif (clickLock.current) clickLock.current.settled = true;\n\t\t}, SCROLL_SETTLE_MS);\n\t}, []);\n\n\tuseEffect(() => {\n\t\t// Scroll events do not bubble, so listen in the capture phase to hear every\n\t\t// scrolling ancestor that scrollIntoView moves.\n\t\tconst onScroll = () => {\n\t\t\tconst lock = clickLock.current;\n\t\t\tif (!lock) return;\n\t\t\t// A scroll after the click's own scroll settled is the reader's: release.\n\t\t\tif (lock.settled) clickLock.current = null;\n\t\t\telse scheduleSettle();\n\t\t};\n\t\tdocument.addEventListener('scroll', onScroll, { capture: true, passive: true });\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('scroll', onScroll, { capture: true });\n\t\t\tclearTimeout(settleTimer.current);\n\t\t};\n\t}, [scheduleSettle]);\n\n\tuseEffect(() => {\n\t\tconst ids = sectionIds ? sectionIds.split('\\u0000') : [];\n\t\tconst intersecting = new Map<string, boolean>();\n\t\tconst obs = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => intersecting.set(entry.target.id, entry.isIntersecting));\n\t\t\t\tif (clickLock.current) return;\n\t\t\t\t// The first section in reading order inside the observed band is current.\n\t\t\t\tconst next = ids.find((id) => intersecting.get(id));\n\t\t\t\tif (next) setActive(next);\n\t\t\t},\n\t\t\t{ rootMargin, threshold: 0 },\n\t\t);\n\t\tids.forEach((id) => {\n\t\t\tconst el = document.getElementById(id);\n\t\t\tif (el) obs.observe(el);\n\t\t});\n\t\treturn () => obs.disconnect();\n\t}, [sectionIds, rootMargin]);\n\n\treturn (\n\t\t<nav\n\t\t\tref={ref}\n\t\t\tclassName={cn('section-nav--component', className)}\n\t\t\taria-label={ariaLabel ?? strings.navigationLabel}\n\t\t\t{...rootProps}\n\t\t>\n\t\t\t<Stack gap=\"2xs\" className=\"section-nav--items\">\n\t\t\t\t{items.map((it) => {\n\t\t\t\tconst Icon = it.icon;\n\t\t\t\tconst isActive = active === it.id;\n\t\t\t\treturn (\n\t\t\t\t\t<a\n\t\t\t\t\t\tkey={it.id}\n\t\t\t\t\t\thref={`#${it.id}`}\n\t\t\t\t\t\taria-current={isActive ? 'location' : undefined}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tclickLock.current = { id: it.id, settled: false };\n\t\t\t\t\t\t\t// Settles on its own when the target is already in place and nothing scrolls.\n\t\t\t\t\t\t\tscheduleSettle();\n\t\t\t\t\t\t\tdocument.getElementById(it.id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\tsetActive(it.id);\n\t\t\t\t\t\t\tonSelect?.(it.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`flex items-center gap-space-md rounded-radius px-space-md py-row-y transition-colors outline-none ${focusRecipes.edge}`,\n\t\t\t\t\t\t\tisActive ? interactionRecipes.rowCurrent : `text-muted-foreground ${interactionRecipes.rowHover}`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!Icon && <Icon className=\"size-icon-md shrink-0\" />}\n\t\t\t\t\t\t<Text tag=\"span\" type=\"inherit\" weight={isActive ? 'semibold' : 'medium'}>{it.label}</Text>\n\t\t\t\t\t</a>\n\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>\n\t\t</nav>\n\t);\n});\n\nSectionNav.displayName = 'SectionNav';\n","/**\n * SideNav — collapsible vertical sidebar navigation. Items can be grouped\n * with a heading and optionally collapsed; each item supports an icon, badge,\n * and active-state highlight. The active item is matched by deepest path\n * prefix so nested routes still highlight their parent group.\n *\n * Pass `items` for the short flat-list default. Use `groups` only when the\n * navigation needs headings or collapsible sections.\n */\nimport { ChevronDown, type LucideIcon } from 'lucide-react';\nimport { forwardRef, useMemo, useState, type ComponentPropsWithoutRef, type ReactNode } from 'react';\n\nimport { Badge } from '../../base/badge';\nimport { Button } from '../../base/buttons';\nimport { Stack } from '../../base/structure';\nimport { DisplayLabel, Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\n\nexport interface SideNavStrings {\n\tnavigationLabel: string;\n}\n\nexport const defaultSideNavStrings: SideNavStrings = {\n\tnavigationLabel: 'Side navigation',\n};\n\nexport interface SideNavItem {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref: string;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\t/** Chip rendered beside the label. */\n\tbadge?: ReactNode;\n\t/** Disables the control. */\n\tdisabled?: boolean;\n}\n\nexport interface SideNavGroup {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Display label. */\n\tlabel?: ReactNode;\n\t/** Entries to render, in order. */\n\titems: SideNavItem[];\n\tdefaultCollapsed?: boolean;\n\tcollapsible?: boolean;\n}\n\ninterface SideNavSharedProps extends Omit<ComponentPropsWithoutRef<'nav'>, 'children'> {\n\t/** Path of the active route, used to mark the current entry. */\n\tcurrentPath?: string;\n\titemClassName?: string;\n\tactiveItemClassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SideNavStrings>;\n}\n\nexport type SideNavProps = SideNavSharedProps & (\n\t| {\n\t\t/** Short default for one flat navigation list. */\n\t\titems: SideNavItem[];\n\t\t/** Sections of the settings navigation. */\n\t\tgroups?: never;\n\t}\n\t| {\n\t\t/** Grouped navigation with optional headings and collapse behavior. */\n\t\tgroups: SideNavGroup[];\n\t\titems?: never;\n\t}\n);\n\nfunction normalizePath(rawUrl: string): string {\n\tif (rawUrl.length === 0) return '/';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport const SideNav = forwardRef<HTMLElement, SideNavProps>(function SideNav({\n\titems,\n\tgroups: groupsProp,\n\tcurrentPath,\n\tclassName,\n\titemClassName,\n\tactiveItemClassName,\n\tstrings: stringsProp,\n\t'aria-label': ariaLabel,\n\t...rootProps\n}, ref) {\n\tconst strings = useStrings(defaultSideNavStrings, stringsProp);\n\tconst groups = useMemo<SideNavGroup[]>(\n\t\t() => groupsProp ?? [\n\t\t\t{ id: 'side-nav-items', items: items ?? [], collapsible: false },\n\t\t],\n\t\t[groupsProp, items],\n\t);\n\tconst rawActivePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\tconst activePath = normalizePath(rawActivePath);\n\n\tconst allNormalized = useMemo(() => {\n\t\treturn groups.flatMap((g) =>\n\t\t\tg.items.map((item) => ({ groupId: g.id, normalizedPath: normalizePath(item.href) })),\n\t\t);\n\t}, [groups]);\n\n\tconst activeNormalized =\n\t\tallNormalized\n\t\t\t.filter(\n\t\t\t\t({ normalizedPath }) =>\n\t\t\t\t\tactivePath === normalizedPath || activePath.startsWith(`${normalizedPath}/`),\n\t\t\t)\n\t\t\t.sort((a, b) => b.normalizedPath.length - a.normalizedPath.length)[0]?.normalizedPath ??\n\t\tnull;\n\n\tconst [collapsed, setCollapsed] = useState<Record<string, boolean>>(() =>\n\t\tObject.fromEntries(groups.map((g) => [g.id, Boolean(g.defaultCollapsed)])),\n\t);\n\n\tconst toggleGroup = (id: string) =>\n\t\tsetCollapsed((prev) => ({ ...prev, [id]: !prev[id] }));\n\n\tconst resolvedActive =\n\t\tactiveItemClassName && activeItemClassName.length > 0\n\t\t\t? activeItemClassName\n\t\t\t: interactionRecipes.rowCurrent;\n\n\treturn (\n\t\t<nav\n\t\t\tref={ref}\n\t\t\taria-label={ariaLabel ?? strings.navigationLabel}\n\t\t\tclassName={cn('side-nav--component', className)}\n\t\t\t{...rootProps}\n\t\t>\n\t\t\t<Stack gap=\"xl\" className=\"side-nav--groups\">\n\t\t\t\t{groups.map((group) => {\n\t\t\t\tconst isCollapsed = group.collapsible !== false && collapsed[group.id];\n\t\t\t\tconst showLabel = !!group.label;\n\t\t\t\tconst shouldRenderItems = !isCollapsed;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Stack key={group.id} gap=\"2xs\" className=\"side-nav--group\">\n\t\t\t\t\t\t{!!showLabel && (\n\t\t\t\t\t\t\tgroup.collapsible !== false ? (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\tonClick={() => toggleGroup(group.id)}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-auto min-h-action-sm justify-between px-row-x py-row-y',\n\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t'hover:text-foreground transition-colors',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\taria-expanded={!isCollapsed}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{isSimpleText(group.label) ? (\n\t\t\t\t\t\t\t\t\t\t<DisplayLabel tag=\"span\">\n\t\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t\t\t) : group.label}\n\t\t\t\t\t\t\t\t\t<ChevronDown\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'size-icon-md transition-transform',\n\t\t\t\t\t\t\t\t\t\t\tisCollapsed && '-rotate-90',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\tisSimpleText(group.label) ? (\n\t\t\t\t\t\t\t\t\t<DisplayLabel tag=\"div\" className=\"px-row-x py-row-y\">\n\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t\t) : group.label\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!shouldRenderItems && (\n\t\t\t\t\t\t\t<Stack gap=\"2xs\" className=\"side-nav--items\">\n\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\tconst itemPath = normalizePath(item.href);\n\t\t\t\t\t\t\t\t\tconst isActive = itemPath === activeNormalized;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\t\t\t\t\t\thref={item.disabled ? undefined : item.href}\n\t\t\t\t\t\t\t\t\t\t\taria-current={isActive ? 'page' : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={item.disabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'group flex items-center gap-space-md rounded-radius px-row-x py-row-y',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t`focus-visible:outline-none ${focusRecipes.edge}`,\n\t\t\t\t\t\t\t\t\t\t\t\tinteractionRecipes.rowHover,\n\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\tisActive && resolvedActive,\n\t\t\t\t\t\t\t\t\t\t\t\titemClassName,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-icon shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive ? 'text-accent-foreground' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{isSimpleText(item.label) ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"min-w-0 flex-1 truncate text-inherit\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : item.label}\n\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>\n\t\t</nav>\n\t);\n});\n\nSideNav.displayName = 'SideNav';\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAae,IAA8D;CAC1E,WAAW;CACX,SAAS;AACV;;;ACDA,SAAgBC,EAAmB,EAAE,UAAO,iBAAc,gBAAa,cAAW,SAASC,KAAwC;CAClI,IAAMC,IAAUC,EAAWJ,GAAkCE,CAAW;CAExE,OACC,kBAAC,OAAD;EAAK,WAAWG,EAAG,kCAAkC,UAAUC,CAAS;EAAxE,UAAA,CACC,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACC,kBAACpB,GAAD,EAAA,UAAA;IACEiB,EAAQ;IAAU;IAAEI,IAAe;IAAE;IAAEJ,EAAQ;IAAQ;IAAEK,EAAM;GACnD,EAAA,CAAA,GACd,kBAACjB,GAAD;IAAS,OAAO,KAAK,OAAQgB,IAAe,KAAKC,EAAM,SAAU,GAAG;IAAG,QAAA;IAAO,MAAK;IAAK,QAAO;GAAY,CAAA,CACvG;EACL,CAAA,GAAA,kBAAC,MAAD;GAAI,WAAU;GACZ,UAAAA,EAAM,KAAK,GAAM,MAAQ;IACzB,IAAMC,IAAcC,IAAMH,GACpBI,IAAYD,MAAQH,GACpBK,IAAcC,MAAgBJ,KAAeE;IACnD,OACC,kBAAC,MAAD;KAAkB,WAAU;KAA5B,UAAA,CACC,kBAACG,GAAD;MACC,MAAK;MACL,cAAY,GAAGX,EAAQ,UAAU,GAAGO,IAAM,EAAE,IAAIK,EAAK;MACrD,eAAeH,KAAeC,IAAcE,EAAK,IAAIL,CAAG;MACxD,UAAU,CAACE;MACX,MAAK;MACL,aAAY;MACZ,MAAK;MACL,WAAWP,EACV,kEACAO,KAAetB,EAAmB,UAClC,CAACsB,KAAe,gBACjB;MAZD,UAAA,CAcC,kBAAC3B,GAAD;OACC,KAAI;OACJ,MAAK;OACL,QAAO;OACP,WAAWoB,EACV,8EACAI,KAAe,sCACfE,KAAa,6CAA6CtB,EAAY,QAAQ,QAC9E,CAACoB,KAAe,CAACE,KAAa,gCAC/B;OAEC,UAAAF,IAAc,kBAACO,GAAD,EAAO,WAAU,eAAgB,CAAA,IAAIN,IAAM;MACrD,CAAA,GACN,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACC,kBAACzB,GAAD;QAAM,QAAO;QAAW,WAAWoB,EAAG,CAACM,KAAa,CAACF,KAAe,uBAAuB;QAAI,UAAAM,EAAK;OAAY,CAAA,GAC/G,CAAC,CAACA,EAAK,QAAQ,kBAAC9B,GAAD;QAAM,MAAK;QAAK,MAAK;QAAW,WAAU;QAAY,UAAA8B,EAAK;OAAW,CAAA,CAClF;MACE,CAAA,CAAA;KACP,CAAA,GAAAL,IAAMF,EAAM,SAAS,KACrB,kBAAC,OAAD,EAAK,WAAWH,EAAG,eAAeI,IAAc,eAAe,WAAW,EAAI,CAAA,CAE5E;IApCK,GAAAM,EAAK,EAoCV;GAEN,CAAC;EACE,CAAA,CACA;;AAEP;AAEA,EAAmB,cAAc;;;AC3DjC,SAAgBE,EAAY,EAAE,UAAO,UAAO,aAAU,aAAU,gBAA+B;CAC9F,OACC,kBAAC,OAAD;EACC,kBAAe;EACf,aAAU;EACV,cAAYC;EACZ,WAAWb,EAAG,mCAAmCC,CAAS;EAE1D,UAAA,kBAACV,GAAD,EAAA,UACEuB,EAAM,KAAK,MAAO;GAClB,IAAMC,IAAOC,EAAG,MACVC,IAASD,EAAG,OAAOE;GACzB,OACC,kBAACzB,GAAD;IASC,eAAe0B,IAAWH,EAAG,EAAE;IAC/B,cAAYC,IAAS,WAAW;IAChC,WAAWjB,EAIV,+DACAiB,IAAShC,EAAmB,aAAaA,EAAmB,QAC7D;IAjBD,UAAA;KAmBE,CAAC,CAAC8B,KACF,kBAAC3B,GAAD;MAAW,SAAQ;MAAO,WAAWY,EAAGiB,IAAS,2BAA2B,uBAAuB;MAClG,UAAA,kBAACF,GAAD,CAAO,CAAA;KACG,CAAA;KAEZ,kBAACvB,GAAD,EAAA,UAAA,CACC,kBAACE,GAAD;MAAW,MAAMuB;MAAS,UAAAD,EAAG;KAAiB,CAAA,GAC7C,CAAC,CAACA,EAAG,QAAQ,kBAAC3B,GAAD;MAAiB,OAAO;MAAI,UAAA2B,EAAG;KAAsB,CAAA,CACvD,EAAA,CAAA;KACb,kBAAC1B,GAAD,EAAA,UAAA,CACE,OAAO0B,EAAG,SAAU,YACpB,kBAAC7B,GAAD;MAAO,MAAK;MAAY,WAAU;MAChC,UAAA6B,EAAG;KACE,CAAA,GAER,kBAACI,GAAD,EACC,WAAWpB,EAAG,4CAA4CiB,KAAU,wBAAwB,EAC5F,CAAA,CACW,EAAA,CAAA;IACR;GArCA,GAAAD,EAAG,EAqCH;EAER,CAAC,EACS,CAAA;CACP,CAAA;AAEP;AAEA,EAAY,cAAc;;;ACxD1B,IAAaK,IAA8C,EAC1D,iBAAiB,qBAClB,GAGMC,IAAmB,KAoBZC,IAAaC,EAAyC,SAAoB,EACtF,UACA,gBAAa,qBACb,cACA,aACA,SAAS3B,GACT,cAAc4B,GACd,GAAGC,KACD,GAAK;CACP,IAAM5B,IAAUC,EAAWsB,GAA0BxB,CAAW,GAC1D,CAACoB,GAAQU,KAAaC,EAAwBd,EAAM,EAAE,EAAE,MAAM,IAAI,GAElEe,IAAYC,EAAgD,IAAI,GAChEC,IAAcD,EAAkD,KAAA,CAAS,GAEzEE,IAAalB,EAAM,KAAK,MAAOE,EAAG,EAAE,CAAC,CAAC,KAAK,IAAQ,GAEnDiB,IAAiBC,QAAkB;EAExC,AADA,aAAaH,EAAY,OAAO,GAChC,EAAY,UAAU,iBAAiB;GACtC,AAAIF,EAAU,YAAS,EAAU,QAAQ,UAAU;EACpD,GAAGP,CAAgB;CACpB,GAAG,CAAC,CAAC;CAuCL,OArCAa,QAAgB;EAGf,IAAMC,UAAiB;GACtB,IAAMC,IAAOR,EAAU;GACvB,AAAKQ,MAEDA,EAAK,UAAS,EAAU,UAAU,OACjCJ,EAAe;EACrB;EAEA,OADA,SAAS,iBAAiB,UAAUG,GAAU;GAAE,SAAS;GAAM,SAAS;EAAK,CAAC,SACjE;GAEZ,AADA,SAAS,oBAAoB,UAAUA,GAAU,EAAE,SAAS,GAAK,CAAC,GAClE,aAAaL,EAAY,OAAO;EACjC;CACD,GAAG,CAACE,CAAc,CAAC,GAEnBE,QAAgB;EACf,IAAMG,IAAMN,IAAaA,EAAW,MAAM,IAAQ,IAAI,CAAC,GACjDO,oBAAe,IAAI,IAAqB,GACxCC,IAAM,IAAI,sBACd,MAAY;GAEZ,IADAC,EAAQ,SAAS,MAAUF,EAAa,IAAIG,EAAM,OAAO,IAAIA,EAAM,cAAc,CAAC,GAC9Eb,EAAU,SAAS;GAEvB,IAAMc,IAAOL,EAAI,MAAM,MAAOC,EAAa,IAAIK,CAAE,CAAC;GAClD,AAAID,KAAMhB,EAAUgB,CAAI;EACzB,GACA;GAAE;GAAY,WAAW;EAAE,CAC5B;EAKA,OAJAL,EAAI,SAAS,MAAO;GACnB,IAAMO,IAAK,SAAS,eAAeD,CAAE;GACrC,AAAIC,KAAIL,EAAI,QAAQK,CAAE;EACvB,CAAC,SACYL,EAAI,WAAW;CAC7B,GAAG,CAACR,GAAYc,CAAU,CAAC,GAG1B,kBAAC,OAAD;EACM;EACL,WAAW9C,EAAG,0BAA0BC,CAAS;EACjD,cAAYwB,KAAa3B,EAAQ;EACjC,GAAI4B;EAEJ,UAAA,kBAAC3C,GAAD;GAAO,KAAI;GAAM,WAAU;GACzB,UAAA+B,EAAM,KAAK,MAAO;IACnB,IAAMC,IAAOC,EAAG,MACV+B,IAAW9B,MAAWD,EAAG;IAC/B,OACC,kBAAC,KAAD;KAEC,MAAM,IAAIA,EAAG;KACb,gBAAc+B,IAAW,aAAa,KAAA;KACtC,UAAU,MAAM;MAOf,AANAC,EAAE,eAAe,GACjB,EAAU,UAAU;OAAE,IAAIhC,EAAG;OAAI,SAAS;MAAM,GAEhDiB,EAAe,GACf,SAAS,eAAejB,EAAG,EAAE,CAAC,EAAE,eAAe;OAAE,UAAU;OAAU,OAAO;MAAQ,CAAC,GACrFW,EAAUX,EAAG,EAAE,GACfG,IAAWH,EAAG,EAAE;KACjB;KACA,WAAWhB,EACV,qGAAqGlB,EAAa,QAClHiE,IAAW9D,EAAmB,aAAa,yBAAyBA,EAAmB,UACxF;KAhBD,UAAA,CAkBE,CAAC,CAAC8B,KAAQ,kBAACA,GAAD,EAAM,WAAU,wBAAyB,CAAA,GACpD,kBAACnC,GAAD;MAAM,KAAI;MAAO,MAAK;MAAU,QAAQmE,IAAW,aAAa;MAAW,UAAA/B,EAAG;KAAY,CAAA,CACxF;IAnBG,GAAAA,EAAG,EAmBN;GAEJ,CAAC;EACK,CAAA;CACH,CAAA;AAEP,CAAC;AAED,EAAW,cAAc;;;AC5HzB,IAAaiC,IAAwC,EACpD,iBAAiB,kBAClB;AAiDA,SAASC,EAAc,GAAwB;CAC9C,IAAIC,EAAO,WAAW,GAAG,OAAO;CAChC,IAAI;EACH,IAAMC,IAAa,OAAO,SAAW,MAAc,OAAO,SAAS,SAAS,oBAEtEC,IAAU,IADG,IAAIF,GAAQC,CACf,CAAA,CAAO,SAAS,QAAQ,QAAQ,EAAE;EAClD,OAAOC,EAAQ,SAAS,IAAIA,IAAU;CACvC,QAAQ;EAEP,IAAMA,KADQF,EAAO,MAAM,GAAG,CAAC,CAAC,MAAMA,EAAA,CAChB,QAAQ,QAAQ,EAAE;EACxC,OAAOE,EAAQ,SAAS,IAAIA,IAAU;CACvC;AACD;AAEA,SAASC,EAAa,GAAqD;CAC1E,OAAO,OAAOC,KAAU,YAAY,OAAOA,KAAU,YAAY,OAAOA,KAAU;AACnF;AAEA,IAAaC,IAAUhC,EAAsC,SAAiB,EAC7E,UACA,QAAQiC,GACR,gBACA,cACA,kBACA,wBACA,SAAS5D,GACT,cAAc4B,GACd,GAAGC,KACD,GAAK;CACP,IAAM5B,IAAUC,EAAWkD,GAAuBpD,CAAW,GACvD6D,IAASC,QACRF,KAAc,CACnB;EAAE,IAAI;EAAkB,OAAO3C,KAAS,CAAC;EAAG,aAAa;CAAM,CAChE,GACA,CAAC2C,GAAY3C,CAAK,CACnB,GAEM8C,IAAaV,EADGW,MAAgB,OAAO,SAAW,MAAc,OAAO,SAAS,WAAW,GACnD,GAQxCC,IANgBH,QACdD,EAAO,SAAS,MACtBK,EAAE,MAAM,KAAK,OAAU;EAAE,SAASA,EAAE;EAAI,gBAAgBb,EAAcc,EAAK,IAAI;CAAE,EAAE,CACpF,GACE,CAACN,CAAM,CAGT,CAAA,CACE,QACC,EAAE,wBACFE,MAAeK,KAAkBL,EAAW,WAAW,GAAGK,EAAe,EAAE,CAC7E,CAAC,CACA,MAAM,GAAG,MAAMC,EAAE,eAAe,SAASC,EAAE,eAAe,MAAM,CAAC,CAAC,EAAE,EAAE,kBACxE,MAEK,CAACC,GAAWC,KAAgBzC,QACjC,OAAO,YAAY8B,EAAO,KAAK,MAAM,CAACK,EAAE,IAAI,EAAQA,EAAE,gBAAiB,CAAC,CAAC,CAC1E,GAEMO,KAAe,MACpBD,GAAc,OAAU;EAAE,GAAGE;GAAO3B,IAAK,CAAC2B,EAAK3B;CAAI,EAAE,GAEhD4B,IACLC,KAAuBA,EAAoB,SAAS,IACjDA,IACAxF,EAAmB;CAEvB,OACC,kBAAC,OAAD;EACM;EACL,cAAYwC,KAAa3B,EAAQ;EACjC,WAAWE,EAAG,uBAAuBC,CAAS;EAC9C,GAAIyB;EAEJ,UAAA,kBAAC3C,GAAD;GAAO,KAAI;GAAK,WAAU;GACxB,UAAA2E,EAAO,KAAK,MAAU;IACvB,IAAMgB,IAAcC,EAAM,gBAAgB,MAASP,EAAUO,EAAM,KAC7DC,IAAY,CAAC,CAACD,EAAM,OACpBE,IAAoB,CAACH;IAE3B,OACC,kBAAC3F,GAAD;KAAsB,KAAI;KAAM,WAAU;KAA1C,UAAA,CACE,CAAC,CAAC6F,MACFD,EAAM,gBAAgB,KA6BrBrB,EAAaqB,EAAM,KAAK,IACvB,kBAAC9F,GAAD;MAAc,KAAI;MAAM,WAAU;MAChC,UAAA8F,EAAM;KACM,CAAA,IACXA,EAAM,QAhCV,kBAAClE,GAAD;MACC,MAAK;MACL,MAAK;MACL,aAAY;MACZ,MAAK;MACL,WAAA;MACA,eAAe6D,EAAYK,EAAM,EAAE;MACnC,WAAW3E,EACV,4DACA,yBACA,yCACD;MACA,iBAAe,CAAC0E;MAZjB,UAAA,CAcEpB,EAAaqB,EAAM,KAAK,IACxB,kBAAC9F,GAAD;OAAc,KAAI;OAChB,UAAA8F,EAAM;MACM,CAAA,IACXA,EAAM,OACV,kBAACG,GAAD;OACC,WAAW9E,EACV,qCACA0E,KAAe,YAChB;OACA,eAAY;MACZ,CAAA,CACM;KAER,CAAA,IAOD,CAAC,CAACG,KACF,kBAAC9F,GAAD;MAAO,KAAI;MAAM,WAAU;MACzB,UAAA4F,EAAM,MAAM,KAAK,MAAS;OAC1B,IAAM5D,IAAOiD,EAAK,MAEZjB,IADWG,EAAcc,EAAK,IACnB,MAAaF;OAC9B,OACC,kBAAC,KAAD;QAEC,MAAME,EAAK,WAAW,KAAA,IAAYA,EAAK;QACvC,gBAAcjB,IAAW,SAAS,KAAA;QAClC,iBAAeiB,EAAK,YAAY,KAAA;QAChC,WAAWhE,EACX,yEACC,6BACA,8BAA8BlB,EAAa,QAC3CG,EAAmB,UACnB+E,EAAK,YAAY,kCACjBjB,KAAYyB,GACZO,CACD;QAbD,UAAA;SAeE,CAAC,CAAChE,KACF,kBAACA,GAAD,EACC,WAAWf,EACV,sBACA+C,IAAW,2BAA2B,uBACvC,EACA,CAAA;SAEDO,EAAaU,EAAK,KAAK,IACvB,kBAACpF,GAAD;UAAM,KAAI;UAAO,MAAK;UAAU,QAAO;UAAS,YAAW;UAAQ,WAAU;UAC3E,UAAAoF,EAAK;SACD,CAAA,IACJA,EAAK;SACP,CAAC,CAACA,EAAK,SACP,kBAAC7E,GAAD;UACC,MAAK;UACL,WAAU;UAET,UAAA6E,EAAK;SACA,CAAA;QAEN;OAnCG,GAAAA,EAAK,IAmCR;MAEL,CAAC;KACK,CAAA,CAEF;IAtFK,GAAAW,EAAM,EAsFX;GAER,CAAC;EACK,CAAA;CACH,CAAA;AAEP,CAAC;AAED,EAAQ,cAAc"}
@@ -1,24 +1,24 @@
1
- import { t as e } from "./affordance-geometry.generated-B8yGOr8-.js";
1
+ import { t as e } from "./affordance-geometry.generated-P-aVJisu.js";
2
2
  //#region src/lib/navigation-row-recipes.ts
3
- var t = "box-border min-w-0 gap-space-md rounded-inner px-control-sm text-sm", n = `mx-0 ${e.navigationGuideStart} translate-x-0 px-space-sm`, r = {
3
+ var t = "box-border min-w-0 gap-space-md rounded-radius px-control-sm text-sm", n = `mx-0 ${e.navigationGuideStart} translate-x-0 px-space-sm`, r = {
4
4
  compact: {
5
5
  size: "sm",
6
- gap: "gap-0",
7
- childGap: "gap-0 py-0",
6
+ gap: "gap-space-2xs",
7
+ childGap: "gap-space-2xs py-space-2xs",
8
8
  height: "h-action-sm",
9
9
  childHeight: "h-action-xs"
10
10
  },
11
11
  default: {
12
12
  size: "sm",
13
- gap: "gap-space-2xs",
14
- childGap: "gap-0 py-0",
13
+ gap: "gap-space-xs",
14
+ childGap: "gap-space-2xs py-space-2xs",
15
15
  height: "h-action-sm",
16
16
  childHeight: "h-action-xs"
17
17
  },
18
18
  comfortable: {
19
19
  size: "md",
20
- gap: "gap-space-2xs",
21
- childGap: "gap-space-2xs py-space-2xs",
20
+ gap: "gap-space-xs",
21
+ childGap: "gap-space-xs py-space-xs",
22
22
  height: "h-action",
23
23
  childHeight: "h-action-sm"
24
24
  }
@@ -26,4 +26,4 @@ var t = "box-border min-w-0 gap-space-md rounded-inner px-control-sm text-sm", n
26
26
  //#endregion
27
27
  export { r as n, t as r, n as t };
28
28
 
29
- //# sourceMappingURL=navigation-row-recipes-WZEs-hYo.js.map
29
+ //# sourceMappingURL=navigation-row-recipes-BGVLvU_O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-row-recipes-BGVLvU_O.js","names":["affordanceGeometry","navigationRowInlineClasses","navigationChildInsetClasses","navigationRowDensityRecipes"],"sources":["../src/lib/navigation-row-recipes.ts"],"sourcesContent":["import type { RowDensity } from './row-recipes';\nimport { affordanceGeometry } from './affordance-geometry.generated';\n\n/** Shared navigation geometry and primary-copy fallback. Density changes height,\n * never primary text size; owners may retain an explicit typography override. */\nexport const navigationRowInlineClasses = 'box-border min-w-0 gap-space-md rounded-radius px-control-sm text-sm';\n// Start the guide at the small-control inset plus half of the small caret glyph.\n// Derive both terms from their existing roots; a guide is not another theme knob.\nexport const navigationChildInsetClasses = `mx-0 ${affordanceGeometry.navigationGuideStart} translate-x-0 px-space-sm`;\nexport const navigationRowDensityRecipes = {\n compact: { size: 'sm', gap: 'gap-space-2xs', childGap: 'gap-space-2xs py-space-2xs', height: 'h-action-sm', childHeight: 'h-action-xs' },\n default: { size: 'sm', gap: 'gap-space-xs', childGap: 'gap-space-2xs py-space-2xs', height: 'h-action-sm', childHeight: 'h-action-xs' },\n comfortable: { size: 'md', gap: 'gap-space-xs', childGap: 'gap-space-xs py-space-xs', height: 'h-action', childHeight: 'h-action-sm' },\n} as const satisfies Record<RowDensity, { size: 'sm' | 'md'; gap: string; childGap: string; height: string; childHeight: string }>;\n"],"mappings":";;AAKA,IAAaC,IAA6B,wEAG7BC,IAA8B,QAAQF,EAAmB,qBAAqB,6BAC9EG,IAA8B;CAC1C,SAAS;EAAE,MAAM;EAAM,KAAK;EAAiB,UAAU;EAA8B,QAAQ;EAAe,aAAa;CAAc;CACvI,SAAS;EAAE,MAAM;EAAM,KAAK;EAAgB,UAAU;EAA8B,QAAQ;EAAe,aAAa;CAAc;CACtI,aAAa;EAAE,MAAM;EAAM,KAAK;EAAgB,UAAU;EAA4B,QAAQ;EAAY,aAAa;CAAc;AACtI"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { c as e, u as t } from "./ui-provider-CQCuCBcy.js";
3
- import { t as n } from "./utils-CF3c95Io.js";
4
- import { c as r } from "./typography-CSyJrh28.js";
5
- import { n as i, o as a, t as o } from "./value-typography-ClupF0Gz.js";
2
+ import { f as e, m as t } from "./ui-provider-C-74NVLc.js";
3
+ import { t as n } from "./utils-B6kKb8jB.js";
4
+ import { c as r } from "./typography-BQnine1k.js";
5
+ import { n as i, o as a, t as o } from "./value-typography-uAmWUAL1.js";
6
6
  import { useCallback as s } from "react";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  //#region src/lib/money-format.ts
@@ -351,4 +351,4 @@ function D({ value: t, locale: s, scaled: l = !1, options: u, emptyLabel: d = "
351
351
  //#endregion
352
352
  export { g as a, y as i, D as n, S as r, E as t };
353
353
 
354
- //# sourceMappingURL=number-E_OiIfJz.js.map
354
+ //# sourceMappingURL=number-CRU3kGuk.js.map