themelia-react-ui 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +281 -1
- package/README.md +10 -5
- package/dist/{accordion-BRTcsp8J.js → accordion-CQXVcd7Q.js} +13 -13
- package/dist/accordion-CQXVcd7Q.js.map +1 -0
- package/dist/action-menu-BTpyPWJ2.js +264 -0
- package/dist/action-menu-BTpyPWJ2.js.map +1 -0
- package/dist/{affordance-geometry.generated-CL84ZN9A.js → affordance-geometry.generated-CCIXb2A1.js} +7 -2
- package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
- package/dist/{ai-artifact-DLVdK0Py.js → ai-artifact-2PQ2fItc.js} +171 -176
- package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
- package/dist/{app-shell-C_fKpljx.js → app-shell-BE_j8-AT.js} +4 -4
- package/dist/{app-shell-C_fKpljx.js.map → app-shell-BE_j8-AT.js.map} +1 -1
- package/dist/{attachment-DbjUWsP0.js → attachment-q69dlt5Y.js} +9 -9
- package/dist/{attachment-DbjUWsP0.js.map → attachment-q69dlt5Y.js.map} +1 -1
- package/dist/{auth-CAQcasMV.js → auth-M3vGMgDR.js} +42 -42
- package/dist/{auth-CAQcasMV.js.map → auth-M3vGMgDR.js.map} +1 -1
- package/dist/{avatar-Bu2HhitA.js → avatar-djdaaQ_s.js} +14 -12
- package/dist/avatar-djdaaQ_s.js.map +1 -0
- package/dist/{badge-CzId1Wlm.js → badge-0tATj-tW.js} +9 -9
- package/dist/badge-0tATj-tW.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/buttons.js +2 -2
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +11 -11
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +244 -222
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +6 -6
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +81 -76
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/navigation.js +6 -6
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +7 -4
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +42 -42
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +9 -9
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +2 -2
- package/dist/base/toaster.js +4 -4
- package/dist/base/toaster.js.map +1 -1
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/blocks/admin.js +229 -220
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +147 -180
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +530 -523
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1390 -1516
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +5 -5
- package/dist/blocks/planning.js +82 -91
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-BuYz5SDU.js → breadcrumbs-BG_FfMK4.js} +5 -5
- package/dist/{breadcrumbs-BuYz5SDU.js.map → breadcrumbs-BG_FfMK4.js.map} +1 -1
- package/dist/{button-BZDasD04.js → button-BS3KDg00.js} +185 -162
- package/dist/button-BS3KDg00.js.map +1 -0
- package/dist/{button-BZyfTvwm.js → button-R9CCoH7A.js} +2 -2
- package/dist/{button-BZyfTvwm.js.map → button-R9CCoH7A.js.map} +1 -1
- package/dist/{buttons-D_6KJvEE.js → buttons-DS0ZIwJ_.js} +11 -11
- package/dist/buttons-DS0ZIwJ_.js.map +1 -0
- package/dist/{cards-qGSErLw_.js → cards-QoJ4syG9.js} +7 -7
- package/dist/{cards-qGSErLw_.js.map → cards-QoJ4syG9.js.map} +1 -1
- package/dist/{chart-Bsc5BICK.js → chart-DwYRKKc-.js} +17 -15
- package/dist/chart-DwYRKKc-.js.map +1 -0
- package/dist/checkbox-B7ygNTYp.js +35 -0
- package/dist/checkbox-B7ygNTYp.js.map +1 -0
- package/dist/choice-inputs-DrJ17tpL.js +752 -0
- package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
- package/dist/{code-block-DzHKRybS.js → code-block-CD0B7M93.js} +19 -19
- package/dist/{code-block-DzHKRybS.js.map → code-block-CD0B7M93.js.map} +1 -1
- package/dist/{collapsible-ClvC7Bj3.js → collapsible-oMUGM4tr.js} +3 -3
- package/dist/{collapsible-ClvC7Bj3.js.map → collapsible-oMUGM4tr.js.map} +1 -1
- package/dist/{collection-content-D6S8cv_n.js → collection-content-Ys-OZOkY.js} +3 -3
- package/dist/{collection-content-D6S8cv_n.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
- package/dist/{combobox-BFnbJJp3.js → combobox-6dvVny2q.js} +96 -97
- package/dist/combobox-6dvVny2q.js.map +1 -0
- package/dist/{combobox-hozNwUcc.js → combobox-CB7039j7.js} +326 -308
- package/dist/combobox-CB7039j7.js.map +1 -0
- package/dist/{command-BnmSchli.js → command-kPMPjIxJ.js} +34 -30
- package/dist/command-kPMPjIxJ.js.map +1 -0
- package/dist/{comments-u5L0OGip.js → comments-You0Bzbr.js} +349 -348
- package/dist/comments-You0Bzbr.js.map +1 -0
- package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
- package/dist/components/base/action-menu/action-menu.d.ts +7 -2
- package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
- package/dist/components/base/badge/badge.d.ts +1 -1
- package/dist/components/base/badge/badge.recipes.d.ts +4 -4
- package/dist/components/base/buttons/base-button.d.ts +7 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
- package/dist/components/base/buttons/button.variants.d.ts +1 -0
- package/dist/components/base/buttons/loader-button.d.ts +3 -1
- package/dist/components/base/buttons/text-button.d.ts +2 -2
- package/dist/components/base/carousel/carousel.d.ts +3 -1
- package/dist/components/base/chart/chart.d.ts +7 -7
- package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
- package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
- package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
- package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
- package/dist/components/base/date-pickers/datepicker.types.d.ts +13 -3
- package/dist/components/base/display/alert-dialog.d.ts +8 -2
- package/dist/components/base/display/content-block.d.ts +4 -2
- package/dist/components/base/display/date-block.d.ts +1 -1
- package/dist/components/base/display/dialog.d.ts +12 -5
- package/dist/components/base/display/surface-title.d.ts +6 -1
- package/dist/components/base/feedback/alert.d.ts +1 -1
- package/dist/components/base/feedback/state-display.d.ts +5 -4
- package/dist/components/base/forms/form-sizing.d.ts +32 -0
- package/dist/components/base/forms/workflow.d.ts +2 -0
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
- package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +4 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
- package/dist/components/base/qr-code/qr-code.d.ts +2 -0
- package/dist/components/base/sheet/index.d.ts +29 -1
- package/dist/components/base/sheet/sheet.d.ts +14 -5
- package/dist/components/base/spinner/spinner.d.ts +3 -2
- package/dist/components/base/structure/structure.types.d.ts +1 -1
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/base/upload/upload.recipes.d.ts +11 -0
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
- package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
- package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
- package/dist/components/blocks/analytics/index.d.ts +1 -1
- package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
- package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
- package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
- package/dist/components/features/overlays/overlays.types.d.ts +42 -19
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/partials/index.d.ts +1 -1
- package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
- package/dist/components/features/products/partials/product-tone.d.ts +11 -1
- package/dist/components/features/products/products.types.d.ts +2 -1
- package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.types.d.ts +53 -3
- package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/primitives/date.d.ts +16 -3
- package/dist/components/primitives/dimensions.d.ts +6 -0
- package/dist/components/primitives/duration.d.ts +6 -0
- package/dist/components/primitives/file-size.d.ts +6 -0
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +11 -2
- package/dist/components/primitives/link.d.ts +7 -0
- package/dist/components/primitives/money.d.ts +29 -7
- package/dist/components/primitives/number.d.ts +17 -0
- package/dist/components/primitives/value-typography.d.ts +54 -0
- package/dist/components/primitives/value.d.ts +31 -6
- package/dist/components/typography/heading.d.ts +9 -1
- package/dist/components/typography/label.d.ts +3 -0
- package/dist/components/typography/running-text.d.ts +12 -0
- package/dist/components/typography/text-link.d.ts +23 -1
- package/dist/components/typography/text.d.ts +12 -0
- package/dist/components/typography/text.styles.d.ts +35 -13
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/overlay.recipes.d.ts +15 -2
- package/dist/components/ui/select.d.ts +3 -1
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/{containers-DqB-bSYE.js → containers-D_L4mTVb.js} +3 -3
- package/dist/{containers-DqB-bSYE.js.map → containers-D_L4mTVb.js.map} +1 -1
- package/dist/{copyable-BTSByfmq.js → copyable-DDjTeW_j.js} +4 -4
- package/dist/{copyable-BTSByfmq.js.map → copyable-DDjTeW_j.js.map} +1 -1
- package/dist/{data-display-Bihs9Ven.js → data-display-3xWQUnMA.js} +471 -478
- package/dist/data-display-3xWQUnMA.js.map +1 -0
- package/dist/date-picker-DrDFj8Lo.js +1527 -0
- package/dist/date-picker-DrDFj8Lo.js.map +1 -0
- package/dist/date-pickers-CnFCb0n2.js +174 -0
- package/dist/date-pickers-CnFCb0n2.js.map +1 -0
- package/dist/date-uf3z37Nm.js +144 -0
- package/dist/date-uf3z37Nm.js.map +1 -0
- package/dist/{display-CS6Hbk18.js → display-DrdvPwF0.js} +25 -25
- package/dist/display-DrdvPwF0.js.map +1 -0
- package/dist/{dropdown-menu-D-boNgGO.js → dropdown-menu-CURh59jb.js} +22 -15
- package/dist/dropdown-menu-CURh59jb.js.map +1 -0
- package/dist/features/activities.js +38 -35
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +36 -35
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +8 -8
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +10 -10
- package/dist/features/email-composer.js +325 -326
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +190 -200
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +77 -77
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +4 -4
- package/dist/features/map.js +8 -8
- package/dist/features/media-library.js +499 -502
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +1216 -1248
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +46 -44
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +96 -88
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +11 -11
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +188 -184
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +7 -7
- package/dist/features/sync.js.map +1 -1
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +469 -470
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-CJkUAapr.js → feedback-C7nR0UtT.js} +9 -10
- package/dist/feedback-C7nR0UtT.js.map +1 -0
- package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
- package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
- package/dist/{field-state-recipes-DQQpiLWC.js → field-state-recipes-C-MFBX_8.js} +3 -3
- package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
- package/dist/{filters-D6FF8L6s.js → filters-Da-gNPsE.js} +467 -467
- package/dist/filters-Da-gNPsE.js.map +1 -0
- package/dist/{form-field-CZwrkP7m.js → form-field-VZRULhUK.js} +7 -7
- package/dist/{form-field-CZwrkP7m.js.map → form-field-VZRULhUK.js.map} +1 -1
- package/dist/form-sizing-uWP4lzVh.js +126 -0
- package/dist/form-sizing-uWP4lzVh.js.map +1 -0
- package/dist/{forms-B5NCbkSC.js → forms-DDeEnXSY.js} +11 -11
- package/dist/forms-DDeEnXSY.js.map +1 -0
- package/dist/forms-numeric-D3CO60IF.js +905 -0
- package/dist/forms-numeric-D3CO60IF.js.map +1 -0
- package/dist/{header-kxruN3RM.js → header-2ycNqGOR.js} +43 -42
- package/dist/header-2ycNqGOR.js.map +1 -0
- package/dist/{hooks-BrlnCwQd.js → hooks-DQ5SPwZw.js} +2 -2
- package/dist/{hooks-BrlnCwQd.js.map → hooks-DQ5SPwZw.js.map} +1 -1
- package/dist/{icon-badge-Btc6pQrp.js → icon-badge-DKlaKXoo.js} +3 -3
- package/dist/{icon-badge-Btc6pQrp.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/{input-vxcaNCYC.js → input-BoLm9Hks.js} +3 -3
- package/dist/{input-vxcaNCYC.js.map → input-BoLm9Hks.js.map} +1 -1
- package/dist/input-DhQdBnV3.js +255 -0
- package/dist/{input-SX9V0AL3.js.map → input-DhQdBnV3.js.map} +1 -1
- package/dist/item-xzh8Df65.js +264 -0
- package/dist/item-xzh8Df65.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +6 -1
- package/dist/lib/field-affordance-recipes.d.ts +35 -0
- package/dist/lib/field-state-recipes.d.ts +4 -2
- package/dist/lib/format.d.ts +9 -0
- package/dist/lib/money-format.d.ts +30 -0
- package/dist/lib/overlay-anatomy-recipes.d.ts +1 -1
- package/dist/lib/surface-recipes.d.ts +8 -6
- package/dist/lib/token-merge.generated.d.ts +11 -11
- package/dist/lib/track-recipes.d.ts +1 -1
- package/dist/lib/ui-provider/provider.d.ts +7 -2
- package/dist/lib/ui-provider/store.d.ts +6 -2
- package/dist/lib/ui-provider/types.d.ts +5 -2
- package/dist/lib/utils.js +1 -1
- package/dist/{media-gallery-DLp3HAz0.js → media-gallery-DQUQ0m3O.js} +8 -8
- package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
- package/dist/{mentions-Cl0Kt_Pd.js → mentions-DwnO1hh4.js} +34 -35
- package/dist/{mentions-Cl0Kt_Pd.js.map → mentions-DwnO1hh4.js.map} +1 -1
- package/dist/{message-SZUNB1eX.js → message-YfFmbXNP.js} +5 -5
- package/dist/{message-SZUNB1eX.js.map → message-YfFmbXNP.js.map} +1 -1
- package/dist/{navigation-DyytsLRB.js → navigation-Cbp5V8gG.js} +33 -34
- package/dist/navigation-Cbp5V8gG.js.map +1 -0
- package/dist/{navigation-DnQSNMT0.js → navigation-Cs1npsPm.js} +111 -87
- package/dist/navigation-Cs1npsPm.js.map +1 -0
- package/dist/{navigation-row-recipes-DQEXQcqY.js → navigation-row-recipes-DlU-4QYO.js} +2 -2
- package/dist/{navigation-row-recipes-DQEXQcqY.js.map → navigation-row-recipes-DlU-4QYO.js.map} +1 -1
- package/dist/number-CKRBYmZK.js +352 -0
- package/dist/number-CKRBYmZK.js.map +1 -0
- package/dist/overlay.recipes-CNO2S9V6.js +34 -0
- package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
- package/dist/overlays-DhZO7N-I.js +994 -0
- package/dist/overlays-DhZO7N-I.js.map +1 -0
- package/dist/page-C6R_8jFt.js +325 -0
- package/dist/page-C6R_8jFt.js.map +1 -0
- package/dist/{page-header-D8nERkn5.js → page-header-hUTzcRZX.js} +9 -9
- package/dist/page-header-hUTzcRZX.js.map +1 -0
- package/dist/{pagination-NLGqRirf.js → pagination-Cm0jqa3I.js} +8 -8
- package/dist/{pagination-NLGqRirf.js.map → pagination-Cm0jqa3I.js.map} +1 -1
- package/dist/{popover-CghIYdQf.js → popover-Dcv_9jxr.js} +6 -6
- package/dist/{popover-CghIYdQf.js.map → popover-Dcv_9jxr.js.map} +1 -1
- package/dist/{popover-menu-B4PoWhRl.js → popover-menu-DnRFKnHP.js} +6 -6
- package/dist/{popover-menu-B4PoWhRl.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
- package/dist/{popover.recipes-QlD4JenO.js → popover.recipes-wmbvL8Ah.js} +2 -2
- package/dist/{popover.recipes-QlD4JenO.js.map → popover.recipes-wmbvL8Ah.js.map} +1 -1
- package/dist/primitives-BHrwQXFC.js +379 -0
- package/dist/primitives-BHrwQXFC.js.map +1 -0
- package/dist/primitives.js +5 -5
- package/dist/{progress-BroqrAyV.js → progress-Br9WTFya.js} +7 -7
- package/dist/progress-Br9WTFya.js.map +1 -0
- package/dist/{receipt-BuJynLgf.js → receipt-CV89q1fs.js} +6 -6
- package/dist/{receipt-BuJynLgf.js.map → receipt-CV89q1fs.js.map} +1 -1
- package/dist/{rich-text-editor-BKyG7rWz.js → rich-text-editor-CF8QYt5p.js} +6 -6
- package/dist/{rich-text-editor-BKyG7rWz.js.map → rich-text-editor-CF8QYt5p.js.map} +1 -1
- package/dist/{rich-text-editor.recipes-B72Nfuze.js → rich-text-editor.recipes-CnrbmTS1.js} +4 -4
- package/dist/{rich-text-editor.recipes-B72Nfuze.js.map → rich-text-editor.recipes-CnrbmTS1.js.map} +1 -1
- package/dist/{rich-text-DlxDOtf4.js → rich-text-j-FGAeZW.js} +4 -4
- package/dist/{rich-text-DlxDOtf4.js.map → rich-text-j-FGAeZW.js.map} +1 -1
- package/dist/{scroll-area-D-pIhEKl.js → scroll-area-DRdr16Pt.js} +3 -3
- package/dist/scroll-area-DRdr16Pt.js.map +1 -0
- package/dist/{separator-BhtFyo4x.js → separator-BMEvwnSX.js} +2 -2
- package/dist/{separator-BhtFyo4x.js.map → separator-BMEvwnSX.js.map} +1 -1
- package/dist/{separator-BNIgG3au.js → separator-Do5GWDYi.js} +4 -4
- package/dist/separator-Do5GWDYi.js.map +1 -0
- package/dist/services/actions/action-adapters.d.ts +4 -0
- package/dist/services/actions.js +8 -3
- package/dist/services/actions.js.map +1 -1
- package/dist/{settings-DOTOzeZ2.js → settings-DHk0L2MF.js} +17 -17
- package/dist/settings-DHk0L2MF.js.map +1 -0
- package/dist/sheet-DRFNY1_D.js +207 -0
- package/dist/sheet-DRFNY1_D.js.map +1 -0
- package/dist/sidebar-Cb8WzOvE.js +511 -0
- package/dist/sidebar-Cb8WzOvE.js.map +1 -0
- package/dist/{sidebar-CyR4XKwR.js → sidebar-Crc9M9JV.js} +18 -18
- package/dist/sidebar-Crc9M9JV.js.map +1 -0
- package/dist/{skeleton-3F0uhYn3.js → skeleton-DVMXr15h.js} +4 -4
- package/dist/{skeleton-3F0uhYn3.js.map → skeleton-DVMXr15h.js.map} +1 -1
- package/dist/{smart-card-DjGVV2xr.js → smart-card-Bek-TwUp.js} +222 -207
- package/dist/smart-card-Bek-TwUp.js.map +1 -0
- package/dist/{spinner-Cpf7oRkF.js → spinner-CmTAbEp0.js} +8 -6
- package/dist/spinner-CmTAbEp0.js.map +1 -0
- package/dist/{structure-CRdqVawd.js → structure-hzCW-XsV.js} +3 -3
- package/dist/{structure-CRdqVawd.js.map → structure-hzCW-XsV.js.map} +1 -1
- package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
- package/dist/structure.recipes-EPz60cU8.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/surface-recipes-DOdoBXGm.js +28 -0
- package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
- package/dist/table-D6zKeYQX.js +162 -0
- package/dist/table-D6zKeYQX.js.map +1 -0
- package/dist/{table-CcRDZiLP.js → table-Dn4XSrSB.js} +348 -348
- package/dist/table-Dn4XSrSB.js.map +1 -0
- package/dist/{tabs-BNgu7g0u.js → tabs-Dk8E_knt.js} +14 -13
- package/dist/tabs-Dk8E_knt.js.map +1 -0
- package/dist/{text-inputs-DsR56TR-.js → text-inputs-BFpku0Qd.js} +150 -149
- package/dist/text-inputs-BFpku0Qd.js.map +1 -0
- package/dist/{text.styles-Q4sGAIgA.js → text.styles-g4He6UIW.js} +17 -14
- package/dist/text.styles-g4He6UIW.js.map +1 -0
- package/dist/theme.css +16 -12
- package/dist/themes/green.css +24 -0
- package/dist/{timelines-D1pkt3se.js → timelines-CxuAFIc2.js} +25 -38
- package/dist/timelines-CxuAFIc2.js.map +1 -0
- package/dist/track-recipes-CDcKmndW.js +10 -0
- package/dist/track-recipes-CDcKmndW.js.map +1 -0
- package/dist/{tree-BtmYyMZV.js → tree-BotPlyiD.js} +13 -13
- package/dist/{tree-BtmYyMZV.js.map → tree-BotPlyiD.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-CAr3dQhX.js +116 -0
- package/dist/typography-CAr3dQhX.js.map +1 -0
- package/dist/typography.js +2 -2
- package/dist/{ui-provider-DRPn3qNl.js → ui-provider-D2_TeLqw.js} +20 -21
- package/dist/ui-provider-D2_TeLqw.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-CDbYw1WN.js → upload-B0WHW7ak.js} +221 -220
- package/dist/upload-B0WHW7ak.js.map +1 -0
- package/dist/{upload-queue-CNd_hH_a.js → upload-queue-BHZ_wBfd.js} +59 -62
- package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
- package/dist/{usage-card-VyJLUwRr.js → usage-card-U0YBLTNT.js} +42 -43
- package/dist/{usage-card-VyJLUwRr.js.map → usage-card-U0YBLTNT.js.map} +1 -1
- package/dist/{utils-BvH9PSmq.js → utils-Cospvlj1.js} +221 -51
- package/dist/utils-Cospvlj1.js.map +1 -0
- package/dist/value-inputs-CjfzGMsN.js +854 -0
- package/dist/value-inputs-CjfzGMsN.js.map +1 -0
- package/dist/value-typography-Deb3yQZg.js +116 -0
- package/dist/value-typography-Deb3yQZg.js.map +1 -0
- package/dist/{workspace-CcR8r-Nt.js → workspace-YoFjXi6i.js} +44 -45
- package/dist/workspace-YoFjXi6i.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +51 -38
- package/docs/consumer-skill/examples/app-layout.tsx +2 -4
- package/docs/consumer-skill/examples/detail.tsx +3 -4
- package/docs/consumer-skill/examples/edit.tsx +1 -1
- package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
- package/docs/consumer-skill/examples/manifest.json +28 -6
- package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
- package/docs/consumer-skill/references/composition.md +89 -17
- package/docs/consumer-skill/references/discovery.md +4 -0
- package/docs/consumer-skill/references/installation.md +22 -0
- package/docs/consumer-skill/references/integration.md +32 -1
- package/docs/consumer-skill/references/public-api.json +111 -70
- package/docs/consumer-skill/references/review.md +20 -4
- package/docs/consumer-skill/references/theming.md +7 -1
- package/docs/consumer-skill/references/tokens.json +5 -2
- package/docs/consumer-skill/references/workflows.md +4 -2
- package/docs/consumer-skill/scripts/composition-policy.mjs +93 -2
- package/docs/consumer-skill/scripts/discovery.mjs +11 -3
- package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
- package/package.json +5 -3
- package/dist/accordion-BRTcsp8J.js.map +0 -1
- package/dist/action-menu-Drxw_vJk.js +0 -265
- package/dist/action-menu-Drxw_vJk.js.map +0 -1
- package/dist/affordance-geometry.generated-CL84ZN9A.js.map +0 -1
- package/dist/ai-artifact-DLVdK0Py.js.map +0 -1
- package/dist/avatar-Bu2HhitA.js.map +0 -1
- package/dist/badge-CzId1Wlm.js.map +0 -1
- package/dist/button-BZDasD04.js.map +0 -1
- package/dist/buttons-D_6KJvEE.js.map +0 -1
- package/dist/chart-Bsc5BICK.js.map +0 -1
- package/dist/checkbox-BQNDjUCh.js +0 -34
- package/dist/checkbox-BQNDjUCh.js.map +0 -1
- package/dist/choice-inputs-Mk3iWbhr.js +0 -725
- package/dist/choice-inputs-Mk3iWbhr.js.map +0 -1
- package/dist/combobox-BFnbJJp3.js.map +0 -1
- package/dist/combobox-hozNwUcc.js.map +0 -1
- package/dist/command-BnmSchli.js.map +0 -1
- package/dist/comments-u5L0OGip.js.map +0 -1
- package/dist/data-display-Bihs9Ven.js.map +0 -1
- package/dist/date-DOKhJPu7.js +0 -140
- package/dist/date-DOKhJPu7.js.map +0 -1
- package/dist/date-picker-DzP5HQq7.js +0 -1541
- package/dist/date-picker-DzP5HQq7.js.map +0 -1
- package/dist/date-pickers-BpgGz7S-.js +0 -196
- package/dist/date-pickers-BpgGz7S-.js.map +0 -1
- package/dist/display-CS6Hbk18.js.map +0 -1
- package/dist/dropdown-menu-D-boNgGO.js.map +0 -1
- package/dist/feedback-CJkUAapr.js.map +0 -1
- package/dist/field-affordance-recipes-uKY4MsZ_.js +0 -25
- package/dist/field-affordance-recipes-uKY4MsZ_.js.map +0 -1
- package/dist/field-state-recipes-DQQpiLWC.js.map +0 -1
- package/dist/filters-D6FF8L6s.js.map +0 -1
- package/dist/form-sizing-QP8aIRaW.js +0 -103
- package/dist/form-sizing-QP8aIRaW.js.map +0 -1
- package/dist/format-iamDSqs2.js +0 -110
- package/dist/format-iamDSqs2.js.map +0 -1
- package/dist/forms-B5NCbkSC.js.map +0 -1
- package/dist/forms-numeric-Crrm80Lm.js +0 -867
- package/dist/forms-numeric-Crrm80Lm.js.map +0 -1
- package/dist/header-kxruN3RM.js.map +0 -1
- package/dist/input-SX9V0AL3.js +0 -255
- package/dist/item-DE4YnuJx.js +0 -258
- package/dist/item-DE4YnuJx.js.map +0 -1
- package/dist/media-gallery-DLp3HAz0.js.map +0 -1
- package/dist/navigation-DnQSNMT0.js.map +0 -1
- package/dist/navigation-DyytsLRB.js.map +0 -1
- package/dist/number-DasMFWEG.js +0 -269
- package/dist/number-DasMFWEG.js.map +0 -1
- package/dist/overlay.recipes-BxW5FIfK.js +0 -6
- package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
- package/dist/overlays-DUbs1KEi.js +0 -1011
- package/dist/overlays-DUbs1KEi.js.map +0 -1
- package/dist/page-hGmT4nWK.js +0 -213
- package/dist/page-hGmT4nWK.js.map +0 -1
- package/dist/page-header-D8nERkn5.js.map +0 -1
- package/dist/primitives-C7ff0QaI.js +0 -337
- package/dist/primitives-C7ff0QaI.js.map +0 -1
- package/dist/progress-BroqrAyV.js.map +0 -1
- package/dist/scroll-area-D-pIhEKl.js.map +0 -1
- package/dist/separator-BNIgG3au.js.map +0 -1
- package/dist/settings-DOTOzeZ2.js.map +0 -1
- package/dist/sheet-BFhrNehm.js +0 -205
- package/dist/sheet-BFhrNehm.js.map +0 -1
- package/dist/sidebar-CyR4XKwR.js.map +0 -1
- package/dist/sidebar-SvGJ0Zwi.js +0 -506
- package/dist/sidebar-SvGJ0Zwi.js.map +0 -1
- package/dist/smart-card-DjGVV2xr.js.map +0 -1
- package/dist/spinner-Cpf7oRkF.js.map +0 -1
- package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
- package/dist/surface-recipes-Dd__PD-w.js +0 -28
- package/dist/surface-recipes-Dd__PD-w.js.map +0 -1
- package/dist/table-CLtJTxoR.js +0 -147
- package/dist/table-CLtJTxoR.js.map +0 -1
- package/dist/table-CcRDZiLP.js.map +0 -1
- package/dist/tabs-BNgu7g0u.js.map +0 -1
- package/dist/text-inputs-DsR56TR-.js.map +0 -1
- package/dist/text.styles-Q4sGAIgA.js.map +0 -1
- package/dist/timelines-D1pkt3se.js.map +0 -1
- package/dist/track-recipes-LLPNVwFg.js +0 -10
- package/dist/track-recipes-LLPNVwFg.js.map +0 -1
- package/dist/typography-BxQgiZyw.js +0 -96
- package/dist/typography-BxQgiZyw.js.map +0 -1
- package/dist/ui-provider-DRPn3qNl.js.map +0 -1
- package/dist/upload-CDbYw1WN.js.map +0 -1
- package/dist/upload-queue-CNd_hH_a.js.map +0 -1
- package/dist/utils-BvH9PSmq.js.map +0 -1
- package/dist/value-inputs-D0KCrfVC.js +0 -840
- package/dist/value-inputs-D0KCrfVC.js.map +0 -1
- package/dist/workspace-CcR8r-Nt.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-
|
|
4
|
-
import { a as n, r } from "./typography-
|
|
5
|
-
import { t as i } from "./button-
|
|
6
|
-
import { t as a } from "./structure-
|
|
7
|
-
import { n as o } from "./number-
|
|
8
|
-
import { t as s } from "./badge-
|
|
9
|
-
import { c, i as l, n as u, o as d, r as f, t as p, u as m } from "./item-
|
|
3
|
+
import { t } from "./utils-Cospvlj1.js";
|
|
4
|
+
import { a as n, s as r } from "./typography-CAr3dQhX.js";
|
|
5
|
+
import { t as i } from "./button-BS3KDg00.js";
|
|
6
|
+
import { t as a } from "./structure-hzCW-XsV.js";
|
|
7
|
+
import { n as o } from "./number-CKRBYmZK.js";
|
|
8
|
+
import { t as s } from "./badge-0tATj-tW.js";
|
|
9
|
+
import { c, i as l, n as u, o as d, r as f, t as p, u as m } from "./item-xzh8Df65.js";
|
|
10
10
|
import { forwardRef as h, useEffect as g, useMemo as _, useState as v } from "react";
|
|
11
11
|
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
12
12
|
import { Check as x, ChevronDown as S, ChevronRight as C } from "lucide-react";
|
|
@@ -23,7 +23,7 @@ function T({ steps: a, currentIndex: s, onStepClick: c, className: l, strings: u
|
|
|
23
23
|
className: t("breadcrumb-progress--component", "w-full", l),
|
|
24
24
|
children: [/* @__PURE__ */ b("div", {
|
|
25
25
|
className: "flex items-center justify-between mb-space-md",
|
|
26
|
-
children: [/* @__PURE__ */ b(
|
|
26
|
+
children: [/* @__PURE__ */ b(n, { children: [
|
|
27
27
|
d.stepLabel,
|
|
28
28
|
" ",
|
|
29
29
|
s + 1,
|
|
@@ -39,40 +39,39 @@ function T({ steps: a, currentIndex: s, onStepClick: c, className: l, strings: u
|
|
|
39
39
|
})]
|
|
40
40
|
}), /* @__PURE__ */ y("ol", {
|
|
41
41
|
className: "m-0 list-none p-0 font-sans flex items-center gap-space-md",
|
|
42
|
-
children: a.map((e,
|
|
43
|
-
let o =
|
|
42
|
+
children: a.map((e, n) => {
|
|
43
|
+
let o = n < s, l = n === s, u = c && (o || l);
|
|
44
44
|
return /* @__PURE__ */ b("li", {
|
|
45
45
|
className: "flex min-w-0 flex-1 items-center gap-space-md",
|
|
46
46
|
children: [/* @__PURE__ */ b(i, {
|
|
47
47
|
type: "button",
|
|
48
|
-
"aria-label": `${d.stepLabel} ${
|
|
49
|
-
onClick: () => u && c?.(e.id,
|
|
48
|
+
"aria-label": `${d.stepLabel} ${n + 1}: ${e.label}`,
|
|
49
|
+
onClick: () => u && c?.(e.id, n),
|
|
50
50
|
disabled: !u,
|
|
51
51
|
tone: "secondary",
|
|
52
52
|
buttonStyle: "ghost",
|
|
53
53
|
size: "md",
|
|
54
54
|
className: t("min-w-0 justify-start gap-space-md text-left transition-colors", u && "hover:bg-muted/40", !u && "cursor-default"),
|
|
55
|
-
children: [/* @__PURE__ */ y(
|
|
55
|
+
children: [/* @__PURE__ */ y(r, {
|
|
56
56
|
tag: "span",
|
|
57
57
|
size: "xs",
|
|
58
58
|
weight: "semibold",
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
children: o ? /* @__PURE__ */ y(x, { className: "size-icon-md" }) : r + 1
|
|
59
|
+
className: t("flex size-6 shrink-0 items-center justify-center rounded-full tabular-nums", o && "bg-success text-success-foreground", l && "bg-primary text-primary-foreground ring-4 ring-primary/15", !o && !l && "bg-muted text-muted-foreground"),
|
|
60
|
+
children: o ? /* @__PURE__ */ y(x, { className: "size-icon-md" }) : n + 1
|
|
62
61
|
}), /* @__PURE__ */ b("div", {
|
|
63
62
|
className: "hidden min-w-0 lg:block",
|
|
64
|
-
children: [/* @__PURE__ */ y(
|
|
63
|
+
children: [/* @__PURE__ */ y(r, {
|
|
65
64
|
weight: "semibold",
|
|
66
65
|
className: t(!l && !o && "text-muted-foreground"),
|
|
67
66
|
children: e.label
|
|
68
|
-
}), !!e.hint && /* @__PURE__ */ y(
|
|
67
|
+
}), !!e.hint && /* @__PURE__ */ y(r, {
|
|
69
68
|
size: "xs",
|
|
70
69
|
type: "discrete",
|
|
71
70
|
className: "truncate",
|
|
72
71
|
children: e.hint
|
|
73
72
|
})]
|
|
74
73
|
})]
|
|
75
|
-
}),
|
|
74
|
+
}), n < a.length - 1 && /* @__PURE__ */ y("div", { className: t("h-px flex-1", o ? "bg-success" : "bg-border") })]
|
|
76
75
|
}, e.id);
|
|
77
76
|
})
|
|
78
77
|
})]
|
|
@@ -107,7 +106,7 @@ function E({ title: e, items: n, activeId: r, onSelect: i, className: a }) {
|
|
|
107
106
|
children: e.hint
|
|
108
107
|
})] }),
|
|
109
108
|
/* @__PURE__ */ b(u, { children: [typeof e.count == "number" && /* @__PURE__ */ y(s, {
|
|
110
|
-
tone:
|
|
109
|
+
tone: "secondary",
|
|
111
110
|
className: "tabular-nums",
|
|
112
111
|
children: e.count
|
|
113
112
|
}), /* @__PURE__ */ y(C, { className: t("size-icon shrink-0 text-muted-foreground/60", a && "text-primary-accent") })] })
|
|
@@ -119,8 +118,8 @@ function E({ title: e, items: n, activeId: r, onSelect: i, className: a }) {
|
|
|
119
118
|
E.displayName = "CategoryNav";
|
|
120
119
|
//#endregion
|
|
121
120
|
//#region src/components/layout/navigation/section-nav/section-nav.tsx
|
|
122
|
-
var D = { navigationLabel: "Section navigation" }, O = h(function({ items:
|
|
123
|
-
let f = e(D, c), [p, m] = v(
|
|
121
|
+
var D = { navigationLabel: "Section navigation" }, O = h(function({ items: n, rootMargin: i = "-40% 0px -50% 0px", className: o, onSelect: s, strings: c, "aria-label": l, ...u }, d) {
|
|
122
|
+
let f = e(D, c), [p, m] = v(n[0]?.id ?? null);
|
|
124
123
|
return g(() => {
|
|
125
124
|
let e = new IntersectionObserver((e) => {
|
|
126
125
|
let t = e.find((e) => e.isIntersecting);
|
|
@@ -129,11 +128,11 @@ var D = { navigationLabel: "Section navigation" }, O = h(function({ items: r, ro
|
|
|
129
128
|
rootMargin: i,
|
|
130
129
|
threshold: 0
|
|
131
130
|
});
|
|
132
|
-
return
|
|
131
|
+
return n.forEach((t) => {
|
|
133
132
|
let n = document.getElementById(t.id);
|
|
134
133
|
n && e.observe(n);
|
|
135
134
|
}), () => e.disconnect();
|
|
136
|
-
}, [
|
|
135
|
+
}, [n, i]), /* @__PURE__ */ y("nav", {
|
|
137
136
|
ref: d,
|
|
138
137
|
className: t("section-nav--component", o),
|
|
139
138
|
"aria-label": l ?? f.navigationLabel,
|
|
@@ -141,8 +140,8 @@ var D = { navigationLabel: "Section navigation" }, O = h(function({ items: r, ro
|
|
|
141
140
|
children: /* @__PURE__ */ y(a, {
|
|
142
141
|
gap: "2xs",
|
|
143
142
|
className: "section-nav--items",
|
|
144
|
-
children:
|
|
145
|
-
let
|
|
143
|
+
children: n.map((e) => {
|
|
144
|
+
let n = e.icon, i = p === e.id;
|
|
146
145
|
return /* @__PURE__ */ b("a", {
|
|
147
146
|
href: `#${e.id}`,
|
|
148
147
|
onClick: (t) => {
|
|
@@ -152,7 +151,7 @@ var D = { navigationLabel: "Section navigation" }, O = h(function({ items: r, ro
|
|
|
152
151
|
}), m(e.id), s?.(e.id);
|
|
153
152
|
},
|
|
154
153
|
className: t("flex items-center gap-space-md rounded-inner px-space-md py-row-y transition-colors", i ? "bg-primary/10 text-primary-accent" : "text-muted-foreground hover:bg-muted/50 hover:text-foreground"),
|
|
155
|
-
children: [!!
|
|
154
|
+
children: [!!n && /* @__PURE__ */ y(n, { className: "size-icon-md shrink-0" }), /* @__PURE__ */ y(r, {
|
|
156
155
|
tag: "span",
|
|
157
156
|
weight: i ? "semibold" : "medium",
|
|
158
157
|
children: e.label
|
|
@@ -204,7 +203,7 @@ var M = h(function({ items: o, groups: c, currentPath: l, className: u, itemClas
|
|
|
204
203
|
return /* @__PURE__ */ b(a, {
|
|
205
204
|
gap: "2xs",
|
|
206
205
|
className: "side-nav--group",
|
|
207
|
-
children: [!!c && (e.collapsible === !1 ? j(e.label) ? /* @__PURE__ */ y(
|
|
206
|
+
children: [!!c && (e.collapsible === !1 ? j(e.label) ? /* @__PURE__ */ y(n, {
|
|
208
207
|
tag: "div",
|
|
209
208
|
className: "px-row-x py-row-y",
|
|
210
209
|
children: e.label
|
|
@@ -217,7 +216,7 @@ var M = h(function({ items: o, groups: c, currentPath: l, className: u, itemClas
|
|
|
217
216
|
onClick: () => O(e.id),
|
|
218
217
|
className: t("h-auto min-h-action-sm justify-between px-row-x py-row-y", "text-muted-foreground", "hover:text-foreground transition-colors"),
|
|
219
218
|
"aria-expanded": !o,
|
|
220
|
-
children: [j(e.label) ? /* @__PURE__ */ y(
|
|
219
|
+
children: [j(e.label) ? /* @__PURE__ */ y(n, {
|
|
221
220
|
tag: "span",
|
|
222
221
|
children: e.label
|
|
223
222
|
}) : e.label, /* @__PURE__ */ y(S, {
|
|
@@ -228,15 +227,15 @@ var M = h(function({ items: o, groups: c, currentPath: l, className: u, itemClas
|
|
|
228
227
|
gap: "2xs",
|
|
229
228
|
className: "side-nav--items",
|
|
230
229
|
children: e.items.map((e) => {
|
|
231
|
-
let
|
|
230
|
+
let n = e.icon, i = A(e.href) === T;
|
|
232
231
|
return /* @__PURE__ */ b("a", {
|
|
233
232
|
href: e.disabled ? void 0 : e.href,
|
|
234
233
|
"aria-current": i ? "page" : void 0,
|
|
235
234
|
"aria-disabled": e.disabled || void 0,
|
|
236
235
|
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 focus-visible:ring-2 focus-visible:ring-ring", "hover:bg-muted/60", e.disabled && "pointer-events-none opacity-50", i && M, d),
|
|
237
236
|
children: [
|
|
238
|
-
!!
|
|
239
|
-
j(e.label) ? /* @__PURE__ */ y(
|
|
237
|
+
!!n && /* @__PURE__ */ y(n, { className: t("size-icon shrink-0", i ? "text-primary-accent" : "text-muted-foreground") }),
|
|
238
|
+
j(e.label) ? /* @__PURE__ */ y(r, {
|
|
240
239
|
tag: "span",
|
|
241
240
|
size: "inherit",
|
|
242
241
|
weight: "medium",
|
|
@@ -245,7 +244,7 @@ var M = h(function({ items: o, groups: c, currentPath: l, className: u, itemClas
|
|
|
245
244
|
children: e.label
|
|
246
245
|
}) : e.label,
|
|
247
246
|
!!e.badge && /* @__PURE__ */ y(s, {
|
|
248
|
-
tone:
|
|
247
|
+
tone: "secondary",
|
|
249
248
|
className: "shrink-0",
|
|
250
249
|
children: e.badge
|
|
251
250
|
})
|
|
@@ -262,4 +261,4 @@ M.displayName = "SideNav";
|
|
|
262
261
|
//#endregion
|
|
263
262
|
export { E as a, D as i, k as n, T as o, O as r, w as s, M as t };
|
|
264
263
|
|
|
265
|
-
//# sourceMappingURL=navigation-
|
|
264
|
+
//# sourceMappingURL=navigation-Cbp5V8gG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-Cbp5V8gG.js","names":["DisplayLabel","Text","Button","Stack","Percent","Badge","ItemDescription","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","defaultBreadcrumbProgressStrings","BreadcrumbProgress","stringsProp","strings","useStrings","cn","className","currentIndex","steps","isCompleted","idx","isCurrent","isClickable","onStepClick","step","Check","CategoryNav","title","items","Icon","it","active","activeId","onSelect","ItemMedia","ChevronRight","defaultSectionNavStrings","SectionNav","forwardRef","ariaLabel","rootProps","setActive","useState","useEffect","obs","visible","entries","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","id","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';\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 && 'hover:bg-muted/40',\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 ring-primary/15',\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';\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-inner px-space-md transition-colors',\n\t\t\t\t\t\t\t\tactive ? 'bg-primary/10 text-primary-accent' : 'hover:bg-muted/50',\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-primary-accent' : '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/60', active && 'text-primary-accent')}\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 */\nimport { forwardRef, useEffect, 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';\n\nexport interface SectionNavStrings {\n\tnavigationLabel: string;\n}\n\nexport const defaultSectionNavStrings: SectionNavStrings = {\n\tnavigationLabel: 'Section navigation',\n};\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\n\tuseEffect(() => {\n\t\tconst obs = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst visible = entries.find((e) => e.isIntersecting);\n\t\t\t\tif (visible?.target.id) setActive(visible.target.id);\n\t\t\t},\n\t\t\t{ rootMargin, threshold: 0 },\n\t\t);\n\t\titems.forEach((it) => {\n\t\t\tconst el = document.getElementById(it.id);\n\t\t\tif (el) obs.observe(el);\n\t\t});\n\t\treturn () => obs.disconnect();\n\t}, [items, rootMargin]);\n\n\treturn (\n\t\t<nav\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\tonClick={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tdocument.getElementById(it.id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\tsetActive(it.id);\n\t\t\t\t\t\t\tonSelect?.(it.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex items-center gap-space-md rounded-inner px-space-md py-row-y transition-colors',\n\t\t\t\t\t\t\tisActive ? 'bg-primary/10 text-primary-accent' : 'text-muted-foreground hover:bg-muted/50 hover:text-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!Icon && <Icon className=\"size-icon-md shrink-0\" />}\n\t\t\t\t\t\t<Text tag=\"span\" weight={isActive ? 'semibold' : 'medium'}>{it.label}</Text>\n\t\t\t\t\t</a>\n\t\t\t\t);\n\t\t\t\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';\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: 'bg-primary/5 text-primary-accent';\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-inner 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 focus-visible:ring-2 focus-visible:ring-ring',\n\t\t\t\t\t\t\t\t\t\t\t\t'hover:bg-muted/60',\n\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\tisActive && resolvedActive,\n\t\t\t\t\t\t\t\t\t\t\t\titemClassName,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-icon shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive ? 'text-primary-accent' : '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":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-
|
|
4
|
-
import {
|
|
5
|
-
import { t as r } from "./button-
|
|
6
|
-
import { t as i } from "./structure-
|
|
7
|
-
import { n as a } from "./action-menu-
|
|
8
|
-
import { t as o } from "./badge-
|
|
9
|
-
import { a as s } from "./tabs-
|
|
3
|
+
import { t } from "./utils-Cospvlj1.js";
|
|
4
|
+
import { s as n } from "./typography-CAr3dQhX.js";
|
|
5
|
+
import { t as r } from "./button-BS3KDg00.js";
|
|
6
|
+
import { t as i } from "./structure-hzCW-XsV.js";
|
|
7
|
+
import { n as a } from "./action-menu-BTpyPWJ2.js";
|
|
8
|
+
import { t as o } from "./badge-0tATj-tW.js";
|
|
9
|
+
import { a as s } from "./tabs-Dk8E_knt.js";
|
|
10
10
|
import { Fragment as c, forwardRef as l, useCallback as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
11
11
|
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
12
12
|
import { Globe as v, MoreHorizontal as y } from "lucide-react";
|
|
@@ -23,20 +23,22 @@ function b({ locales: e, onRenderLabel: a, variant: o = "buttons", onSelect: s }
|
|
|
23
23
|
wrap: !1,
|
|
24
24
|
className: "language-switcher--component",
|
|
25
25
|
children: [/* @__PURE__ */ g(v, {
|
|
26
|
-
className: "size-icon text-muted-foreground
|
|
26
|
+
className: "size-icon shrink-0 text-muted-foreground",
|
|
27
27
|
"aria-hidden": "true"
|
|
28
28
|
}), /* @__PURE__ */ g(i, {
|
|
29
29
|
direction: "horizontal",
|
|
30
30
|
align: "center",
|
|
31
31
|
justify: "center",
|
|
32
32
|
gap: "md",
|
|
33
|
-
wrap: !
|
|
33
|
+
wrap: !0,
|
|
34
|
+
className: "min-w-0",
|
|
34
35
|
children: e.map((r, i) => {
|
|
35
36
|
let o = a ? a(r) : r.nativeLabel;
|
|
36
37
|
return /* @__PURE__ */ _(c, { children: [/* @__PURE__ */ g("button", {
|
|
37
38
|
type: "button",
|
|
39
|
+
"aria-current": r.active ? "true" : void 0,
|
|
38
40
|
onClick: () => l(r.value, r.active),
|
|
39
|
-
className: t("border-0 bg-transparent p-0 font-sans text-pxs transition-colors", r.active ? "text-primary-accent font-medium" : "text-muted-foreground hover:text-foreground"),
|
|
41
|
+
className: t("cursor-pointer rounded-inner border-0 bg-transparent p-0 font-sans text-pxs outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", r.active ? "text-primary-accent font-medium" : "text-muted-foreground hover:text-foreground"),
|
|
40
42
|
children: /* @__PURE__ */ g(n, {
|
|
41
43
|
tag: "span",
|
|
42
44
|
size: "pxs",
|
|
@@ -62,6 +64,7 @@ function b({ locales: e, onRenderLabel: a, variant: o = "buttons", onSelect: s }
|
|
|
62
64
|
type: "button",
|
|
63
65
|
tone: "secondary",
|
|
64
66
|
buttonStyle: e.active ? "solid" : "ghost",
|
|
67
|
+
"aria-current": e.active ? "true" : void 0,
|
|
65
68
|
onClick: () => l(e.value, e.active),
|
|
66
69
|
className: t("min-w-18 justify-center transition-colors", e.active ? "text-primary-accent" : "text-muted-foreground"),
|
|
67
70
|
children: n
|
|
@@ -100,7 +103,7 @@ var C = l(function({ items: a, currentPath: c, variant: l = "default", scrollabl
|
|
|
100
103
|
buttonStyle: i ? "solid" : "ghost",
|
|
101
104
|
icon: a,
|
|
102
105
|
"aria-current": i ? "page" : void 0,
|
|
103
|
-
className: t("navigation-tabs--item shrink-0", "rounded-inner", !y && i && "bg-
|
|
106
|
+
className: t("navigation-tabs--item shrink-0", "rounded-inner", !y && i && "bg-card text-foreground shadow-sm hover:bg-card", !y && !i && "text-muted-foreground hover:bg-card/60 hover:text-foreground"),
|
|
104
107
|
children: [
|
|
105
108
|
typeof e.icon == "string" && /* @__PURE__ */ g("span", {
|
|
106
109
|
className: "navigation-tabs--icon text-inherit",
|
|
@@ -140,48 +143,67 @@ C.displayName = "NavigationTabs";
|
|
|
140
143
|
var w = {
|
|
141
144
|
more: "More",
|
|
142
145
|
navigationLabel: "Tab navigation"
|
|
143
|
-
}, T = "box-border inline-flex h-action shrink-0 items-center gap-space-sm rounded-inner px-control text-
|
|
144
|
-
function
|
|
146
|
+
}, T = "box-border inline-flex h-action-sm shrink-0 cursor-pointer items-center gap-space-sm rounded-inner border-0 bg-transparent px-control-sm font-sans text-sm font-medium whitespace-nowrap no-underline outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring [&_svg]:size-icon [&_svg]:shrink-0", E = "text-muted-foreground hover:bg-card/60 hover:text-foreground", D = "bg-card text-foreground shadow-sm";
|
|
147
|
+
function O(e) {
|
|
145
148
|
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
146
149
|
}
|
|
147
|
-
|
|
148
|
-
|
|
150
|
+
function k(e, t, n, r) {
|
|
151
|
+
if (e.reduce((e, t) => e + t, 0) + n * Math.max(0, e.length - 1) <= t) return e.length;
|
|
152
|
+
let i = 0, a = 0;
|
|
153
|
+
for (let o of e) {
|
|
154
|
+
let e = i + (a > 0 ? n : 0) + o;
|
|
155
|
+
if (e + n + r > t) break;
|
|
156
|
+
i = e, a += 1;
|
|
157
|
+
}
|
|
158
|
+
return Math.max(1, a);
|
|
159
|
+
}
|
|
160
|
+
var A = l(function({ items: r, value: i, onValueChange: s, className: c, tabClassName: l, activeTabClassName: v, strings: b, ...x }, S) {
|
|
161
|
+
let C = e(w, b), A = p(null), j = p(null), M = p(null), [N, P] = m(r.length), F = u((e) => {
|
|
162
|
+
A.current = e, typeof S == "function" ? S(e) : S && (S.current = e);
|
|
163
|
+
}, [S]);
|
|
149
164
|
d(() => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
165
|
+
let e = A.current, t = j.current, n = M.current;
|
|
166
|
+
if (!e || !t || !n) return;
|
|
167
|
+
let i = () => {
|
|
168
|
+
let i = getComputedStyle(t), a = (parseFloat(i.paddingLeft) || 0) + (parseFloat(i.paddingRight) || 0), o = e.clientWidth - a;
|
|
169
|
+
if (o <= 0) {
|
|
170
|
+
P(r.length);
|
|
155
171
|
return;
|
|
156
172
|
}
|
|
157
|
-
let
|
|
158
|
-
|
|
159
|
-
let t = e.offsetWidth + 4;
|
|
160
|
-
if (a + t + 72 <= n) a += t, o += 1;
|
|
161
|
-
else break;
|
|
162
|
-
}
|
|
163
|
-
k(o === i.length ? o : Math.max(1, o));
|
|
173
|
+
let s = parseFloat(getComputedStyle(n).columnGap) || 0, c = Array.from(n.querySelectorAll("[data-tab-id]")).map((e) => e.offsetWidth), l = n.querySelector("[data-more-measure]")?.offsetWidth ?? 0;
|
|
174
|
+
P(k(c, o, s, l));
|
|
164
175
|
};
|
|
165
|
-
if (
|
|
166
|
-
let
|
|
167
|
-
return
|
|
168
|
-
}, [r]);
|
|
169
|
-
let
|
|
176
|
+
if (i(), typeof ResizeObserver > "u") return;
|
|
177
|
+
let a = new ResizeObserver(i);
|
|
178
|
+
return a.observe(e), () => a.disconnect();
|
|
179
|
+
}, [r, C.more]);
|
|
180
|
+
let I = f(() => {
|
|
170
181
|
if (!i) return r;
|
|
171
182
|
let e = r.findIndex((e) => e.id === i);
|
|
172
|
-
if (e < 0 || e <
|
|
173
|
-
let t = [...r], n = Math.max(0,
|
|
183
|
+
if (e < 0 || e < N) return r;
|
|
184
|
+
let t = [...r], n = Math.max(0, N - 1);
|
|
174
185
|
return [t[e], t[n]] = [t[n], t[e]], t;
|
|
175
186
|
}, [
|
|
176
187
|
r,
|
|
177
188
|
i,
|
|
178
|
-
|
|
179
|
-
]),
|
|
189
|
+
N
|
|
190
|
+
]), L = I.slice(0, N), R = I.slice(N), z = (e) => {
|
|
180
191
|
s?.(e.id), e.onClick?.();
|
|
181
|
-
},
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
192
|
+
}, B = (e) => {
|
|
193
|
+
if (![
|
|
194
|
+
"ArrowLeft",
|
|
195
|
+
"ArrowRight",
|
|
196
|
+
"Home",
|
|
197
|
+
"End"
|
|
198
|
+
].includes(e.key)) return;
|
|
199
|
+
let t = Array.from(e.currentTarget.querySelectorAll("[role=\"tab\"]")), n = t.indexOf(e.target);
|
|
200
|
+
if (n < 0 || t.length === 0) return;
|
|
201
|
+
let r = getComputedStyle(e.currentTarget).direction === "rtl" ? "ArrowLeft" : "ArrowRight", i = e.key === "Home" ? 0 : e.key === "End" ? t.length - 1 : e.key === r ? (n + 1) % t.length : (n - 1 + t.length) % t.length;
|
|
202
|
+
e.preventDefault(), t[i]?.focus();
|
|
203
|
+
}, V = (e, r, a) => {
|
|
204
|
+
let s = e.icon, c = t(T, r ? t(D, v) : E, l), u = /* @__PURE__ */ _(h, { children: [
|
|
205
|
+
!!s && /* @__PURE__ */ g(s, { "aria-hidden": "true" }),
|
|
206
|
+
O(e.label) ? /* @__PURE__ */ g(n, {
|
|
185
207
|
tag: "span",
|
|
186
208
|
size: "inherit",
|
|
187
209
|
weight: "medium",
|
|
@@ -189,88 +211,90 @@ var D = l(function({ items: r, value: i, onValueChange: s, className: c, tabClas
|
|
|
189
211
|
className: "text-inherit",
|
|
190
212
|
children: e.label
|
|
191
213
|
}) : e.label,
|
|
192
|
-
|
|
214
|
+
e.badge !== void 0 && e.badge !== null && e.badge !== !1 && /* @__PURE__ */ g(o, {
|
|
193
215
|
size: "sm",
|
|
194
216
|
tone: "secondary",
|
|
195
|
-
className:
|
|
217
|
+
className: "overflow-tab-bar--badge",
|
|
196
218
|
children: e.badge
|
|
197
219
|
})
|
|
198
220
|
] });
|
|
199
|
-
|
|
221
|
+
if (a?.measure) return /* @__PURE__ */ g("span", {
|
|
200
222
|
"data-tab-id": e.id,
|
|
201
223
|
className: t("overflow-tab-bar--measure", c),
|
|
202
|
-
children:
|
|
203
|
-
}, e.id)
|
|
204
|
-
|
|
224
|
+
children: u
|
|
225
|
+
}, e.id);
|
|
226
|
+
let d = {
|
|
205
227
|
"data-tab-id": e.id,
|
|
206
228
|
role: "tab",
|
|
207
229
|
"aria-selected": r,
|
|
208
230
|
tabIndex: r || !i ? 0 : -1,
|
|
209
|
-
onClick: () =>
|
|
210
|
-
className: t("overflow-tab-bar--tab", c)
|
|
211
|
-
|
|
231
|
+
onClick: () => z(e),
|
|
232
|
+
className: t("overflow-tab-bar--tab", c)
|
|
233
|
+
};
|
|
234
|
+
return e.href ? /* @__PURE__ */ g("a", {
|
|
235
|
+
href: e.href,
|
|
236
|
+
...d,
|
|
237
|
+
children: u
|
|
212
238
|
}, e.id) : /* @__PURE__ */ g("button", {
|
|
213
239
|
type: "button",
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
"aria-selected": r,
|
|
217
|
-
tabIndex: r || !i ? 0 : -1,
|
|
218
|
-
onClick: () => N(e),
|
|
219
|
-
className: t("overflow-tab-bar--tab", c),
|
|
220
|
-
children: d
|
|
240
|
+
...d,
|
|
241
|
+
children: u
|
|
221
242
|
}, e.id);
|
|
222
|
-
}
|
|
243
|
+
}, H = /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(y, { "aria-hidden": "true" }), /* @__PURE__ */ g(n, {
|
|
244
|
+
tag: "span",
|
|
245
|
+
size: "inherit",
|
|
246
|
+
weight: "medium",
|
|
247
|
+
lineHeight: "tight",
|
|
248
|
+
className: "text-inherit",
|
|
249
|
+
children: C.more
|
|
250
|
+
})] });
|
|
223
251
|
return /* @__PURE__ */ _("div", {
|
|
224
|
-
ref:
|
|
252
|
+
ref: F,
|
|
225
253
|
className: t("overflow-tab-bar--component relative w-full min-w-0 max-w-full", c),
|
|
226
|
-
...
|
|
227
|
-
children: [/* @__PURE__ */
|
|
228
|
-
ref:
|
|
254
|
+
...x,
|
|
255
|
+
children: [/* @__PURE__ */ _("div", {
|
|
256
|
+
ref: M,
|
|
229
257
|
"aria-hidden": "true",
|
|
230
|
-
className: "pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-
|
|
231
|
-
children: r.map((e) =>
|
|
258
|
+
className: "pointer-events-none invisible fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-2xs overflow-hidden",
|
|
259
|
+
children: [r.map((e) => V(e, !1, { measure: !0 })), /* @__PURE__ */ g("span", {
|
|
260
|
+
"data-more-measure": "",
|
|
261
|
+
className: t(T, E),
|
|
262
|
+
children: H
|
|
263
|
+
})]
|
|
232
264
|
}), /* @__PURE__ */ _("div", {
|
|
233
|
-
ref:
|
|
234
|
-
className: "overflow-tab-bar--viewport
|
|
265
|
+
ref: j,
|
|
266
|
+
className: "overflow-tab-bar--viewport inline-flex max-w-full min-w-0 items-center gap-space-2xs overflow-hidden rounded-inner bg-muted p-space-2xs align-top",
|
|
235
267
|
children: [/* @__PURE__ */ g("div", {
|
|
236
268
|
role: "tablist",
|
|
237
|
-
"aria-label":
|
|
269
|
+
"aria-label": C.navigationLabel,
|
|
238
270
|
"aria-orientation": "horizontal",
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
271
|
+
onKeyDown: B,
|
|
272
|
+
className: "overflow-tab-bar--tablist flex min-w-0 items-center gap-space-2xs overflow-hidden",
|
|
273
|
+
children: L.map((e) => V(e, e.id === i))
|
|
274
|
+
}), R.length > 0 && /* @__PURE__ */ g(a, {
|
|
275
|
+
actions: R.map((e) => ({
|
|
243
276
|
id: e.id,
|
|
244
277
|
label: e.label,
|
|
245
278
|
icon: e.icon,
|
|
246
|
-
onClick: () =>
|
|
247
|
-
className: t(e.id === i && "bg-primary/5 text-primary-accent")
|
|
279
|
+
onClick: () => z(e)
|
|
248
280
|
})),
|
|
249
281
|
align: "end",
|
|
250
|
-
density: "table",
|
|
251
282
|
contentClassName: "min-w-40",
|
|
252
283
|
width: "w-auto",
|
|
253
284
|
closeOnSelect: !0,
|
|
254
285
|
preserveOrder: !0,
|
|
255
|
-
renderTrigger: /* @__PURE__ */
|
|
286
|
+
renderTrigger: /* @__PURE__ */ g("button", {
|
|
256
287
|
type: "button",
|
|
257
|
-
"aria-label":
|
|
258
|
-
className: t(T, "
|
|
259
|
-
children:
|
|
260
|
-
tag: "span",
|
|
261
|
-
size: "inherit",
|
|
262
|
-
weight: "medium",
|
|
263
|
-
lineHeight: "tight",
|
|
264
|
-
className: "text-inherit",
|
|
265
|
-
children: S.more
|
|
266
|
-
})]
|
|
288
|
+
"aria-label": C.more,
|
|
289
|
+
className: t(T, E, "overflow-tab-bar--more"),
|
|
290
|
+
children: H
|
|
267
291
|
})
|
|
268
292
|
})]
|
|
269
293
|
})]
|
|
270
294
|
});
|
|
271
295
|
});
|
|
272
|
-
|
|
296
|
+
A.displayName = "OverflowTabBar";
|
|
273
297
|
//#endregion
|
|
274
|
-
export { b as a, x as i, w as n, C as r,
|
|
298
|
+
export { b as a, x as i, w as n, C as r, A as t };
|
|
275
299
|
|
|
276
|
-
//# sourceMappingURL=navigation-
|
|
300
|
+
//# sourceMappingURL=navigation-Cs1npsPm.js.map
|