themelia-react-ui 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +417 -0
- package/README.md +67 -16
- package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
- 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-CCIXb2A1.js +68 -0
- package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
- package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
- package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
- package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
- package/dist/app-shell-BE_j8-AT.js.map +1 -0
- package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
- package/dist/attachment-q69dlt5Y.js.map +1 -0
- package/dist/auth-M3vGMgDR.js +723 -0
- package/dist/auth-M3vGMgDR.js.map +1 -0
- package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
- package/dist/avatar-djdaaQ_s.js.map +1 -0
- package/dist/{badge-BZXZT9wd.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 +3 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +33 -35
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +246 -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 +3 -3
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +94 -92
- 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 +53 -53
- 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 +84 -82
- 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 +7 -7
- 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 +228 -219
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +182 -212
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +665 -620
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +2 -2
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1439 -1553
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +6 -6
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +88 -97
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
- package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
- package/dist/button-BS3KDg00.js +674 -0
- package/dist/button-BS3KDg00.js.map +1 -0
- package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
- package/dist/button-R9CCoH7A.js.map +1 -0
- package/dist/buttons-DS0ZIwJ_.js +99 -0
- package/dist/buttons-DS0ZIwJ_.js.map +1 -0
- package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
- package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
- package/dist/chart-DwYRKKc-.js +152 -0
- 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-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
- package/dist/code-block-CD0B7M93.js.map +1 -0
- package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
- package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
- package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
- package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
- package/dist/combobox-6dvVny2q.js +272 -0
- package/dist/combobox-6dvVny2q.js.map +1 -0
- package/dist/combobox-CB7039j7.js +865 -0
- package/dist/combobox-CB7039j7.js.map +1 -0
- package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
- package/dist/command-kPMPjIxJ.js.map +1 -0
- package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
- 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.recipes.d.ts +10 -19
- 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/buttons/use-pending-button-focus.d.ts +3 -0
- package/dist/components/base/cards/card.recipes.d.ts +13 -5
- package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
- package/dist/components/base/cards/smart-card.types.d.ts +1 -1
- 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/date-picker.recipes.d.ts +5 -18
- package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -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-field.d.ts +1 -0
- package/dist/components/base/forms/form-sizing.d.ts +35 -3
- 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/navigation/tabs.d.ts +3 -5
- package/dist/components/base/popover/popover.recipes.d.ts +3 -3
- 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/table/index.d.ts +1 -1
- package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
- 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/types.d.ts +1 -1
- package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
- package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -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/empty-state/partials/illustrations/document-stack.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
- package/dist/components/features/combobox/components/error-message.d.ts +1 -1
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
- package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
- package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.types.d.ts +9 -1
- package/dist/components/features/media-library/partials/media-library-partials.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/hooks/use-pending-overlay-focus.d.ts +2 -0
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
- package/dist/components/features/overlays/overlays.types.d.ts +46 -22
- 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/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
- package/dist/components/features/table/table.types.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -0
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.d.ts +0 -1
- package/dist/components/layout/page/page.types.d.ts +62 -6
- 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/layout/sidebar/sidebar.context.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
- 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 +13 -2
- package/dist/components/typography/index.d.ts +1 -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 +37 -5
- 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/popover.d.ts +1 -1
- package/dist/components/ui/select.d.ts +3 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/table.d.ts +2 -1
- package/dist/container.recipes-D9t8MHR3.js +27 -0
- package/dist/container.recipes-D9t8MHR3.js.map +1 -0
- package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
- package/dist/containers-D_L4mTVb.js.map +1 -0
- package/dist/control-group-recipes-DBXmfh2E.js +21 -0
- package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
- package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
- package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
- package/dist/data-display-3xWQUnMA.js +1335 -0
- 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-CFM5myut.js → display-DrdvPwF0.js} +25 -25
- package/dist/display-DrdvPwF0.js.map +1 -0
- package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
- package/dist/dropdown-menu-CURh59jb.js.map +1 -0
- package/dist/features/activities.js +177 -163
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +187 -183
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +9 -9
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +25 -23
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +353 -355
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +346 -354
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +225 -227
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +29 -29
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +59 -58
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +898 -900
- 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 +1412 -1444
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +51 -49
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +103 -97
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +13 -13
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +187 -183
- 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 +508 -503
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
- 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-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
- package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
- package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
- package/dist/filters-Da-gNPsE.js.map +1 -0
- package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
- package/dist/form-field-VZRULhUK.js.map +1 -0
- package/dist/form-sizing-uWP4lzVh.js +126 -0
- package/dist/form-sizing-uWP4lzVh.js.map +1 -0
- package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
- 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-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
- package/dist/header-2ycNqGOR.js.map +1 -0
- package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
- package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
- package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
- package/dist/http-CdEIHyQf.js.map +1 -0
- package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
- package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/input-BoLm9Hks.js +20 -0
- package/dist/input-BoLm9Hks.js.map +1 -0
- package/dist/input-DhQdBnV3.js +255 -0
- package/dist/input-DhQdBnV3.js.map +1 -0
- 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 +46 -10
- package/dist/lib/control-group-recipes.d.ts +22 -0
- package/dist/lib/field-affordance-recipes.d.ts +70 -2
- package/dist/lib/field-state-recipes.d.ts +6 -4
- package/dist/lib/format.d.ts +9 -0
- package/dist/lib/money-format.d.ts +30 -0
- package/dist/lib/navigation-row-recipes.d.ts +3 -2
- package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
- package/dist/lib/surface-recipes.d.ts +13 -8
- package/dist/lib/token-merge.generated.d.ts +144 -2
- 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 +9 -4
- package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
- package/dist/lib/utils.js +1 -1
- package/dist/media-gallery-DQUQ0m3O.js +201 -0
- package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
- package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
- package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
- package/dist/message-YfFmbXNP.js +127 -0
- package/dist/message-YfFmbXNP.js.map +1 -0
- package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
- package/dist/navigation-Cbp5V8gG.js.map +1 -0
- package/dist/navigation-Cs1npsPm.js +300 -0
- package/dist/navigation-Cs1npsPm.js.map +1 -0
- package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
- package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
- 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-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
- package/dist/page-header-hUTzcRZX.js.map +1 -0
- package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
- package/dist/pagination-Cm0jqa3I.js.map +1 -0
- package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
- package/dist/popover-Dcv_9jxr.js.map +1 -0
- package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
- package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
- package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
- package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
- package/dist/primitives-BHrwQXFC.js +379 -0
- package/dist/primitives-BHrwQXFC.js.map +1 -0
- package/dist/primitives.js +5 -5
- package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
- package/dist/progress-Br9WTFya.js.map +1 -0
- package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
- package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
- package/dist/rich-text-editor-CF8QYt5p.js +574 -0
- package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
- package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
- package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
- package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
- package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
- package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
- package/dist/scroll-area-DRdr16Pt.js.map +1 -0
- package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
- package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
- package/dist/{separator-Gk_WXH-l.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-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
- 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-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
- package/dist/sidebar-Crc9M9JV.js.map +1 -0
- package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
- package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
- package/dist/smart-card-Bek-TwUp.js +599 -0
- package/dist/smart-card-Bek-TwUp.js.map +1 -0
- package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
- package/dist/spinner-CmTAbEp0.js.map +1 -0
- package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
- package/dist/{structure-MvKVq-oL.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-Dn4XSrSB.js +1444 -0
- package/dist/table-Dn4XSrSB.js.map +1 -0
- package/dist/tabs-Dk8E_knt.js +189 -0
- package/dist/tabs-Dk8E_knt.js.map +1 -0
- package/dist/text-inputs-BFpku0Qd.js +331 -0
- package/dist/text-inputs-BFpku0Qd.js.map +1 -0
- package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
- package/dist/text.styles-g4He6UIW.js.map +1 -0
- package/dist/theme.css +90 -124
- package/dist/themes/green.css +24 -0
- package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
- 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-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
- package/dist/{tree-BdWSaoFT.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-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
- package/dist/ui-provider-D2_TeLqw.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
- package/dist/upload-B0WHW7ak.js.map +1 -0
- package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
- package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
- package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
- package/dist/usage-card-U0YBLTNT.js.map +1 -0
- package/dist/utils-Cospvlj1.js +4445 -0
- 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-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
- package/dist/workspace-YoFjXi6i.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +123 -119
- package/docs/consumer-skill/examples/analytics.tsx +34 -0
- package/docs/consumer-skill/examples/app-layout.tsx +42 -14
- package/docs/consumer-skill/examples/detail.tsx +20 -5
- 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 +37 -3
- package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
- package/docs/consumer-skill/examples/website.tsx +56 -0
- package/docs/consumer-skill/references/analytics.md +70 -0
- package/docs/consumer-skill/references/composition.md +195 -9
- package/docs/consumer-skill/references/design-contract.md +33 -7
- package/docs/consumer-skill/references/discovery.md +80 -5
- package/docs/consumer-skill/references/installation.md +22 -0
- package/docs/consumer-skill/references/integration.md +46 -1
- package/docs/consumer-skill/references/public-api.json +2083 -237
- package/docs/consumer-skill/references/review.md +74 -6
- package/docs/consumer-skill/references/theming.md +59 -8
- package/docs/consumer-skill/references/tokens.json +180 -9
- package/docs/consumer-skill/references/workflows.md +34 -0
- package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
- package/docs/consumer-skill/scripts/discovery.mjs +69 -9
- package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
- package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
- package/package.json +11 -6
- package/dist/accordion-B-5Focs8.js.map +0 -1
- package/dist/action-menu-Cx3SdfbN.js +0 -265
- package/dist/action-menu-Cx3SdfbN.js.map +0 -1
- package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
- package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
- package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
- package/dist/app-shell-at8Kt4l_.js.map +0 -1
- package/dist/attachment-BO2R47wn.js.map +0 -1
- package/dist/auth-OFwWSAap.js +0 -704
- package/dist/auth-OFwWSAap.js.map +0 -1
- package/dist/avatar-Bpzty83c.js.map +0 -1
- package/dist/badge-BZXZT9wd.js.map +0 -1
- package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
- package/dist/button-BS6l5JUw.js.map +0 -1
- package/dist/buttons-Co6GavvM.js +0 -674
- package/dist/buttons-Co6GavvM.js.map +0 -1
- package/dist/chart-DVfcwQu6.js +0 -149
- package/dist/chart-DVfcwQu6.js.map +0 -1
- package/dist/checkbox-BavDRjF7.js +0 -34
- package/dist/checkbox-BavDRjF7.js.map +0 -1
- package/dist/choice-inputs-CC7XqPQO.js +0 -619
- package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
- package/dist/code-block-xHKbAJDj.js.map +0 -1
- package/dist/combobox-DEbdr-3u.js +0 -273
- package/dist/combobox-DEbdr-3u.js.map +0 -1
- package/dist/combobox-xv3yJbzl.js +0 -850
- package/dist/combobox-xv3yJbzl.js.map +0 -1
- package/dist/command-C0xe7u9B.js.map +0 -1
- package/dist/comments-DviPLnwy.js.map +0 -1
- package/dist/containers-6s-ucRQQ.js.map +0 -1
- package/dist/data-display-cWIRdeaf.js +0 -1129
- package/dist/data-display-cWIRdeaf.js.map +0 -1
- package/dist/date-BFNMnrS5.js +0 -140
- package/dist/date-BFNMnrS5.js.map +0 -1
- package/dist/date-picker-CA6ogMQB.js +0 -1521
- package/dist/date-picker-CA6ogMQB.js.map +0 -1
- package/dist/date-pickers-BPIKLdsD.js +0 -224
- package/dist/date-pickers-BPIKLdsD.js.map +0 -1
- package/dist/display-CFM5myut.js.map +0 -1
- package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
- package/dist/feedback-DWUkgEjR.js.map +0 -1
- package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
- package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
- package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
- package/dist/filters-BhsUtsxW.js.map +0 -1
- package/dist/form-field-Bn7ZH1rA.js.map +0 -1
- package/dist/form-sizing-BWs70_a2.js +0 -100
- package/dist/form-sizing-BWs70_a2.js.map +0 -1
- package/dist/format-iamDSqs2.js +0 -110
- package/dist/format-iamDSqs2.js.map +0 -1
- package/dist/forms-B7pzS25o.js.map +0 -1
- package/dist/forms-numeric-BUBxELBv.js +0 -867
- package/dist/forms-numeric-BUBxELBv.js.map +0 -1
- package/dist/header-C59QZyxV.js.map +0 -1
- package/dist/http-CLTVJc5I.js.map +0 -1
- package/dist/input-WwYQZJzG.js +0 -202
- package/dist/input-WwYQZJzG.js.map +0 -1
- package/dist/input-ci9fIgFH.js +0 -20
- package/dist/input-ci9fIgFH.js.map +0 -1
- package/dist/item-pJ0GsOiJ.js +0 -257
- package/dist/item-pJ0GsOiJ.js.map +0 -1
- package/dist/media-gallery-DhDRgnVZ.js +0 -200
- package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
- package/dist/message-COsdEvXT.js +0 -108
- package/dist/message-COsdEvXT.js.map +0 -1
- package/dist/navigation-BUIn2Qxx.js.map +0 -1
- package/dist/navigation-DBEu4POU.js +0 -267
- package/dist/navigation-DBEu4POU.js.map +0 -1
- package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
- package/dist/number-BNT_BIzJ.js +0 -269
- package/dist/number-BNT_BIzJ.js.map +0 -1
- package/dist/overlay.recipes-BxW5FIfK.js +0 -6
- package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
- package/dist/overlays-B11wZka6.js +0 -982
- package/dist/overlays-B11wZka6.js.map +0 -1
- package/dist/page-BV6ioQg3.js +0 -202
- package/dist/page-BV6ioQg3.js.map +0 -1
- package/dist/page-header-DQRa0jug.js.map +0 -1
- package/dist/pagination-C29vvt3I.js.map +0 -1
- package/dist/popover-CoLDEg19.js.map +0 -1
- package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
- package/dist/primitives-DKPOGVpj.js +0 -330
- package/dist/primitives-DKPOGVpj.js.map +0 -1
- package/dist/progress-BOe8l_FZ.js.map +0 -1
- package/dist/rich-text-editor-CoVrTiSv.js +0 -575
- package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
- package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
- package/dist/scroll-area-BheMQ270.js.map +0 -1
- package/dist/select-B2mb-qN2.js +0 -108
- package/dist/select-B2mb-qN2.js.map +0 -1
- package/dist/separator-Gk_WXH-l.js.map +0 -1
- package/dist/settings-BnCyyPOJ.js.map +0 -1
- package/dist/sheet-B-q914Ad.js +0 -205
- package/dist/sheet-B-q914Ad.js.map +0 -1
- package/dist/sidebar-C_2p3Tfj.js +0 -501
- package/dist/sidebar-C_2p3Tfj.js.map +0 -1
- package/dist/sidebar-DPR7fmqN.js.map +0 -1
- package/dist/smart-card-CYLn46e6.js +0 -578
- package/dist/smart-card-CYLn46e6.js.map +0 -1
- package/dist/spinner-BY9HbUEh.js.map +0 -1
- package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
- package/dist/surface-recipes-CQfRr-VL.js +0 -27
- package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
- package/dist/table-BS39xnlq.js +0 -1424
- package/dist/table-BS39xnlq.js.map +0 -1
- package/dist/table-DnlAJ-xR.js +0 -146
- package/dist/table-DnlAJ-xR.js.map +0 -1
- package/dist/tabs-B5cNMWiP.js +0 -187
- package/dist/tabs-B5cNMWiP.js.map +0 -1
- package/dist/text-inputs-Dh9XGyiS.js +0 -331
- package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
- package/dist/text.styles-BwB7vAF2.js.map +0 -1
- package/dist/timelines-B9ICkQcV.js.map +0 -1
- package/dist/track-recipes-LLPNVwFg.js +0 -10
- package/dist/track-recipes-LLPNVwFg.js.map +0 -1
- package/dist/typography-Cv8MT-82.js +0 -96
- package/dist/typography-Cv8MT-82.js.map +0 -1
- package/dist/ui-provider-CftIB6TY.js.map +0 -1
- package/dist/upload-D8Za5x_c.js.map +0 -1
- package/dist/upload-queue-hIIYBLS7.js.map +0 -1
- package/dist/usage-card-DnmnJ58D.js.map +0 -1
- package/dist/utils-C2EKeIw3.js +0 -72
- package/dist/utils-C2EKeIw3.js.map +0 -1
- package/dist/value-inputs-DX2dbxjj.js +0 -824
- package/dist/value-inputs-DX2dbxjj.js.map +0 -1
- package/dist/workspace-C1PZmk8L.js.map +0 -1
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-C2EKeIw3.js";
|
|
4
|
-
import { n } from "./buttons-Co6GavvM.js";
|
|
5
|
-
import { a as r } from "./typography-Cv8MT-82.js";
|
|
6
|
-
import { t as i } from "./structure-MvKVq-oL.js";
|
|
7
|
-
import { n as a } from "./action-menu-Cx3SdfbN.js";
|
|
8
|
-
import { t as o } from "./badge-BZXZT9wd.js";
|
|
9
|
-
import { a as s } from "./tabs-B5cNMWiP.js";
|
|
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
|
-
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
12
|
-
import { Globe as v, MoreHorizontal as y } from "lucide-react";
|
|
13
|
-
//#region src/components/base/navigation/language-switcher.tsx
|
|
14
|
-
function b({ locales: e, onRenderLabel: a, variant: o = "buttons", onSelect: s }) {
|
|
15
|
-
let l = u((e, t) => {
|
|
16
|
-
t || s?.(e);
|
|
17
|
-
}, [s]);
|
|
18
|
-
return e.length === 0 ? null : o === "inline" ? /* @__PURE__ */ _("div", {
|
|
19
|
-
className: t("language-switcher--component", "flex items-center justify-center gap-2.5"),
|
|
20
|
-
children: [/* @__PURE__ */ g(v, {
|
|
21
|
-
className: "size-icon text-muted-foreground/70",
|
|
22
|
-
"aria-hidden": "true"
|
|
23
|
-
}), /* @__PURE__ */ g("div", {
|
|
24
|
-
className: "flex items-center justify-center gap-2.5",
|
|
25
|
-
children: e.map((n, i) => {
|
|
26
|
-
let o = a ? a(n) : n.nativeLabel;
|
|
27
|
-
return /* @__PURE__ */ _(c, { children: [/* @__PURE__ */ g("button", {
|
|
28
|
-
type: "button",
|
|
29
|
-
onClick: () => l(n.value, n.active),
|
|
30
|
-
className: t("text-pxs transition-colors", n.active ? "text-primary-accent font-medium" : "text-muted-foreground hover:text-foreground"),
|
|
31
|
-
children: /* @__PURE__ */ g(r, {
|
|
32
|
-
tag: "span",
|
|
33
|
-
size: "pxs",
|
|
34
|
-
weight: n.active ? "medium" : "regular",
|
|
35
|
-
className: "text-inherit",
|
|
36
|
-
children: o
|
|
37
|
-
})
|
|
38
|
-
}), i < e.length - 1 && /* @__PURE__ */ g("span", {
|
|
39
|
-
"aria-hidden": "true",
|
|
40
|
-
className: "size-1 rounded-full bg-border"
|
|
41
|
-
})] }, n.value);
|
|
42
|
-
})
|
|
43
|
-
})]
|
|
44
|
-
}) : /* @__PURE__ */ g(i, {
|
|
45
|
-
direction: "horizontal",
|
|
46
|
-
align: "center",
|
|
47
|
-
justify: "center",
|
|
48
|
-
wrap: !0,
|
|
49
|
-
gap: "md",
|
|
50
|
-
children: e.map((e) => {
|
|
51
|
-
let r = a ? a(e) : e.nativeLabel;
|
|
52
|
-
return /* @__PURE__ */ g(n, {
|
|
53
|
-
type: "button",
|
|
54
|
-
tone: "secondary",
|
|
55
|
-
buttonStyle: e.active ? "solid" : "ghost",
|
|
56
|
-
onClick: () => l(e.value, e.active),
|
|
57
|
-
className: t("min-w-18 justify-center transition-colors", e.active ? "font-semibold text-primary-accent" : "text-muted-foreground"),
|
|
58
|
-
children: r
|
|
59
|
-
}, e.value);
|
|
60
|
-
})
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
b.displayName = "LanguageSwitcher";
|
|
64
|
-
//#endregion
|
|
65
|
-
//#region src/components/base/navigation/navigation-tabs.tsx
|
|
66
|
-
var x = { tabsAria: "Tab navigation" };
|
|
67
|
-
function S(e) {
|
|
68
|
-
let t = e.indexOf("#/");
|
|
69
|
-
if (t >= 0) return e.slice(t).split("?")[0]?.replace(/\/+$/, "") || "#/";
|
|
70
|
-
try {
|
|
71
|
-
let t = typeof window < "u" ? window.location.origin : "http://localhost";
|
|
72
|
-
return new URL(e, t).pathname.replace(/\/+$/, "") || "/";
|
|
73
|
-
} catch {
|
|
74
|
-
return e.split("?")[0]?.replace(/\/+$/, "") || "/";
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
var C = l(function({ items: a, currentPath: c, variant: l = "default", scrollable: u = !0, scrollStrings: d, strings: f, className: p }, m) {
|
|
78
|
-
let h = e(x, f), v = S(c ?? (typeof window < "u" ? window.location.pathname : "/")), y = l === "prominent", b = /* @__PURE__ */ g(i, {
|
|
79
|
-
render: /* @__PURE__ */ g("nav", { "aria-label": h.tabsAria }),
|
|
80
|
-
direction: "horizontal",
|
|
81
|
-
gap: "2xs",
|
|
82
|
-
wrap: !1,
|
|
83
|
-
className: t("navigation-tabs--list w-max rounded-radius bg-muted p-space-2xs", y && "rounded-radius bg-muted/60"),
|
|
84
|
-
children: a.map((e) => {
|
|
85
|
-
let i = e.active ?? v === S(e.href), a = typeof e.icon == "string" ? void 0 : e.icon;
|
|
86
|
-
return /* @__PURE__ */ _(n, {
|
|
87
|
-
href: e.href,
|
|
88
|
-
disabled: e.disabled,
|
|
89
|
-
size: "sm",
|
|
90
|
-
tone: i && y ? "primary" : "secondary",
|
|
91
|
-
buttonStyle: i ? "solid" : "ghost",
|
|
92
|
-
icon: a,
|
|
93
|
-
"aria-current": i ? "page" : void 0,
|
|
94
|
-
className: t("navigation-tabs--item shrink-0", "rounded-radius", !y && i && "bg-background text-foreground shadow-sm hover:bg-background/90", !y && !i && "text-muted-foreground hover:bg-background/50 hover:text-foreground"),
|
|
95
|
-
children: [
|
|
96
|
-
typeof e.icon == "string" && /* @__PURE__ */ g("span", {
|
|
97
|
-
className: "navigation-tabs--icon text-inherit",
|
|
98
|
-
"aria-hidden": "true",
|
|
99
|
-
children: e.icon
|
|
100
|
-
}),
|
|
101
|
-
/* @__PURE__ */ g(r, {
|
|
102
|
-
tag: "span",
|
|
103
|
-
size: "inherit",
|
|
104
|
-
weight: "medium",
|
|
105
|
-
lineHeight: "none",
|
|
106
|
-
className: "navigation-tabs--title text-inherit",
|
|
107
|
-
children: e.title
|
|
108
|
-
}),
|
|
109
|
-
e.badge !== void 0 && e.badge !== null && /* @__PURE__ */ g(o, {
|
|
110
|
-
size: "sm",
|
|
111
|
-
tone: "secondary",
|
|
112
|
-
className: "navigation-tabs--badge",
|
|
113
|
-
children: e.badge
|
|
114
|
-
})
|
|
115
|
-
]
|
|
116
|
-
}, e.href);
|
|
117
|
-
})
|
|
118
|
-
});
|
|
119
|
-
return /* @__PURE__ */ g("div", {
|
|
120
|
-
ref: m,
|
|
121
|
-
className: t("navigation-tabs--component", "w-full min-w-0", !u && "overflow-x-auto", p),
|
|
122
|
-
children: u ? /* @__PURE__ */ g(s, {
|
|
123
|
-
strings: d,
|
|
124
|
-
children: b
|
|
125
|
-
}) : b
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
C.displayName = "NavigationTabs";
|
|
129
|
-
//#endregion
|
|
130
|
-
//#region src/components/base/navigation/overflow-tab-bar.tsx
|
|
131
|
-
var w = {
|
|
132
|
-
more: "More",
|
|
133
|
-
navigationLabel: "Tab navigation"
|
|
134
|
-
}, T = "inline-flex h-action shrink-0 items-center gap-space-sm rounded-radius-md px-control text-pxs font-medium whitespace-nowrap transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40";
|
|
135
|
-
function E(e) {
|
|
136
|
-
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
137
|
-
}
|
|
138
|
-
var D = l(function({ items: n, value: i, onValueChange: s, className: c, tabClassName: l, activeTabClassName: u, strings: v, ...b }, x) {
|
|
139
|
-
let S = e(w, v), C = p(null), D = p(null), [O, k] = m(n.length);
|
|
140
|
-
d(() => {
|
|
141
|
-
if (!C.current || !D.current) return;
|
|
142
|
-
let e = C.current, t = D.current, r = () => {
|
|
143
|
-
let r = e.clientWidth;
|
|
144
|
-
if (r === 0) {
|
|
145
|
-
k(n.length);
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
let i = Array.from(t.querySelectorAll("[data-tab-id]")), a = 0, o = 0;
|
|
149
|
-
for (let e of i) {
|
|
150
|
-
let t = e.offsetWidth + 4;
|
|
151
|
-
if (a + t + 72 <= r) a += t, o += 1;
|
|
152
|
-
else break;
|
|
153
|
-
}
|
|
154
|
-
k(o === i.length ? o : Math.max(1, o));
|
|
155
|
-
};
|
|
156
|
-
if (r(), typeof ResizeObserver > "u") return;
|
|
157
|
-
let i = new ResizeObserver(r);
|
|
158
|
-
return i.observe(e), () => i.disconnect();
|
|
159
|
-
}, [n]);
|
|
160
|
-
let A = f(() => {
|
|
161
|
-
if (!i) return n;
|
|
162
|
-
let e = n.findIndex((e) => e.id === i);
|
|
163
|
-
if (e < 0 || e < O) return n;
|
|
164
|
-
let t = [...n], r = Math.max(0, O - 1);
|
|
165
|
-
return [t[e], t[r]] = [t[r], t[e]], t;
|
|
166
|
-
}, [
|
|
167
|
-
n,
|
|
168
|
-
i,
|
|
169
|
-
O
|
|
170
|
-
]), j = A.slice(0, O), M = A.slice(O), N = (e) => {
|
|
171
|
-
s?.(e.id), e.onClick?.();
|
|
172
|
-
}, P = (e, n, a) => {
|
|
173
|
-
let s = e.icon, c = t(T, n ? t("bg-card text-foreground shadow-sm", u) : "text-muted-foreground hover:bg-muted/60", l), d = /* @__PURE__ */ _(h, { children: [
|
|
174
|
-
!!s && /* @__PURE__ */ g(s, { className: "size-icon-sm" }),
|
|
175
|
-
E(e.label) ? /* @__PURE__ */ g(r, {
|
|
176
|
-
tag: "span",
|
|
177
|
-
size: "inherit",
|
|
178
|
-
weight: "medium",
|
|
179
|
-
lineHeight: "tight",
|
|
180
|
-
className: "text-inherit",
|
|
181
|
-
children: e.label
|
|
182
|
-
}) : e.label,
|
|
183
|
-
!!e.badge && /* @__PURE__ */ g(o, {
|
|
184
|
-
size: "sm",
|
|
185
|
-
tone: "secondary",
|
|
186
|
-
className: t("ml-space-sm", n ? "bg-primary/10 text-primary-accent" : "bg-muted-foreground/10 text-muted-foreground"),
|
|
187
|
-
children: e.badge
|
|
188
|
-
})
|
|
189
|
-
] });
|
|
190
|
-
return a?.measure ? /* @__PURE__ */ g("span", {
|
|
191
|
-
"data-tab-id": e.id,
|
|
192
|
-
className: t("overflow-tab-bar--measure", c),
|
|
193
|
-
children: d
|
|
194
|
-
}, e.id) : e.href ? /* @__PURE__ */ g("a", {
|
|
195
|
-
href: e.href,
|
|
196
|
-
"data-tab-id": e.id,
|
|
197
|
-
role: "tab",
|
|
198
|
-
"aria-selected": n,
|
|
199
|
-
tabIndex: n || !i ? 0 : -1,
|
|
200
|
-
onClick: () => N(e),
|
|
201
|
-
className: t("overflow-tab-bar--tab", c),
|
|
202
|
-
children: d
|
|
203
|
-
}, e.id) : /* @__PURE__ */ g("button", {
|
|
204
|
-
type: "button",
|
|
205
|
-
"data-tab-id": e.id,
|
|
206
|
-
role: "tab",
|
|
207
|
-
"aria-selected": n,
|
|
208
|
-
tabIndex: n || !i ? 0 : -1,
|
|
209
|
-
onClick: () => N(e),
|
|
210
|
-
className: t("overflow-tab-bar--tab", c),
|
|
211
|
-
children: d
|
|
212
|
-
}, e.id);
|
|
213
|
-
};
|
|
214
|
-
return /* @__PURE__ */ _("div", {
|
|
215
|
-
ref: x,
|
|
216
|
-
className: t("overflow-tab-bar--component relative w-full min-w-0 max-w-full", c),
|
|
217
|
-
...b,
|
|
218
|
-
children: [/* @__PURE__ */ g("div", {
|
|
219
|
-
ref: D,
|
|
220
|
-
"aria-hidden": "true",
|
|
221
|
-
className: "pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-xs overflow-hidden opacity-0",
|
|
222
|
-
children: n.map((e) => P(e, !1, { measure: !0 }))
|
|
223
|
-
}), /* @__PURE__ */ _("div", {
|
|
224
|
-
ref: C,
|
|
225
|
-
className: "overflow-tab-bar--viewport relative flex w-full min-w-0 max-w-full items-center gap-space-xs overflow-hidden rounded-radius bg-muted/40 p-space-xs",
|
|
226
|
-
children: [/* @__PURE__ */ g("div", {
|
|
227
|
-
role: "tablist",
|
|
228
|
-
"aria-label": S.navigationLabel,
|
|
229
|
-
"aria-orientation": "horizontal",
|
|
230
|
-
className: "overflow-tab-bar--tablist flex min-w-0 flex-1 items-center gap-space-xs overflow-hidden",
|
|
231
|
-
children: j.map((e) => P(e, e.id === i))
|
|
232
|
-
}), M.length > 0 && /* @__PURE__ */ g(a, {
|
|
233
|
-
actions: M.map((e) => ({
|
|
234
|
-
id: e.id,
|
|
235
|
-
label: e.label,
|
|
236
|
-
icon: e.icon,
|
|
237
|
-
onClick: () => N(e),
|
|
238
|
-
className: t(e.id === i && "bg-primary/5 text-primary-accent")
|
|
239
|
-
})),
|
|
240
|
-
align: "end",
|
|
241
|
-
density: "table",
|
|
242
|
-
contentClassName: "min-w-40",
|
|
243
|
-
width: "w-auto",
|
|
244
|
-
closeOnSelect: !0,
|
|
245
|
-
preserveOrder: !0,
|
|
246
|
-
renderTrigger: /* @__PURE__ */ _("button", {
|
|
247
|
-
type: "button",
|
|
248
|
-
"aria-label": S.more,
|
|
249
|
-
className: t(T, "text-muted-foreground hover:bg-muted/60"),
|
|
250
|
-
children: [/* @__PURE__ */ g(y, { className: "size-icon-sm" }), /* @__PURE__ */ g(r, {
|
|
251
|
-
tag: "span",
|
|
252
|
-
size: "inherit",
|
|
253
|
-
weight: "medium",
|
|
254
|
-
lineHeight: "tight",
|
|
255
|
-
className: "text-inherit",
|
|
256
|
-
children: S.more
|
|
257
|
-
})]
|
|
258
|
-
})
|
|
259
|
-
})]
|
|
260
|
-
})]
|
|
261
|
-
});
|
|
262
|
-
});
|
|
263
|
-
D.displayName = "OverflowTabBar";
|
|
264
|
-
//#endregion
|
|
265
|
-
export { b as a, x as i, w as n, C as r, D as t };
|
|
266
|
-
|
|
267
|
-
//# sourceMappingURL=navigation-DBEu4POU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-DBEu4POU.js","names":["_Fragment","Text","Stack","ActionMenu","Badge","TabScrollViewport","Fragment$1","LanguageSwitcher","handleSelect","useCallback","isActive","onSelect","value","locales","variant","cn","Globe","label","onRenderLabel","locale","Fragment","index","Button","defaultNavigationTabsStrings","normalizePath","hashRouteIndex","rawUrl","origin","NavigationTabs","forwardRef","stringsProp","strings","useStrings","activePath","currentPath","prominent","list","items","item","Icon","scrollable","className","scrollStrings","defaultOverflowTabBarStrings","TAB_BUTTON_BASE","isSimpleText","OverflowTabBar","rootProps","containerRef","useRef","measureRef","visibleCount","setVisibleCount","useState","container","measure","compute","containerWidth","buttons","used","count","btn","w","observer","orderedItems","useMemo","activeIdx","i","next","lastVisibleIdx","visibleItems","overflowItems","onValueChange","renderTab","tabClasses","activeTabClassName","tabClassName","inner","options","MoreHorizontal"],"sources":["../src/components/base/navigation/language-switcher.tsx","../src/components/base/navigation/navigation-tabs.tsx","../src/components/base/navigation/overflow-tab-bar.tsx"],"sourcesContent":["/**\n * LanguageSwitcher — locale picker with two layouts: `buttons` (chunky\n * primary buttons) and `inline` (small text links separated by dots, prefixed\n * with a globe icon). Defaults to `buttons`.\n *\n * The library never navigates on its own. The consumer wires routing /\n * locale switching by passing `onSelect` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`). When `onSelect` is\n * absent the click is a no-op.\n */\nimport { Globe } from 'lucide-react';\nimport { Fragment, useCallback } from 'react';\n\nimport { Button } from '../buttons';\nimport { Text } from '../../typography';\nimport { Stack } from '../structure';\nimport { cn } from '../../../lib/utils';\nimport type { LocaleOption } from '../../../types/locale.types';\n\nexport interface LanguageSwitcherProps {\n\tlocales: LocaleOption[];\n\tonRenderLabel?: (options: LocaleOption) => string;\n\t/** Semantic tone. */\n\tvariant?: 'buttons' | 'inline';\n\tonSelect?: (value: string) => void;\n}\n\nexport function LanguageSwitcher({\n\tlocales,\n\tonRenderLabel,\n\tvariant = 'buttons',\n\tonSelect,\n}: LanguageSwitcherProps) {\n\tconst handleSelect = useCallback((value: string, isActive: boolean) => {\n\t\tif (isActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tonSelect?.(value);\n\t}, [onSelect]);\n\n\tif (locales.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (variant === 'inline') {\n\t\treturn (\n\t\t\t<div className={cn('language-switcher--component', 'flex items-center justify-center gap-2.5')}>\n\t\t\t\t<Globe className=\"size-icon text-muted-foreground/70\" aria-hidden=\"true\" />\n\t\t\t\t<div className=\"flex items-center justify-center gap-2.5\">\n\t\t\t\t\t{locales.map((locale, index) => {\n\t\t\t\t\t\tconst label = onRenderLabel\n\t\t\t\t\t\t\t? onRenderLabel(locale)\n\t\t\t\t\t\t\t: locale.nativeLabel;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Fragment key={locale.value}>\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\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\thandleSelect(locale.value, locale.active)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-pxs transition-colors',\n\t\t\t\t\t\t\t\t\t\tlocale.active\n\t\t\t\t\t\t\t\t\t\t\t? 'text-primary-accent font-medium'\n\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:text-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<Text tag=\"span\" size=\"pxs\" weight={locale.active ? 'medium' : 'regular'} className=\"text-inherit\">\n\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{index < locales.length - 1 && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"size-1 rounded-full bg-border\"\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</Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" wrap gap=\"md\">\n\t\t\t{locales.map((locale) => {\n\t\t\t\tconst label = onRenderLabel ? onRenderLabel(locale) : locale.nativeLabel;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={locale.value}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle={locale.active ? 'solid' : 'ghost'}\n\t\t\t\t\t\tonClick={() => handleSelect(locale.value, locale.active)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'min-w-18 justify-center transition-colors',\n\t\t\t\t\t\t\tlocale.active ? 'font-semibold text-primary-accent' : 'text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Stack>\n\t);\n}\n\nLanguageSwitcher.displayName = 'LanguageSwitcher';\n","/**\n * NavigationTabs — canonical route-tab navigation.\n *\n * The default compact treatment works for ordinary application navigation;\n * `variant=\"prominent\"` provides the stronger filled treatment without\n * introducing a second component or item vocabulary.\n */\nimport { forwardRef, type ReactNode } from 'react';\nimport type { LucideIcon } from 'lucide-react';\n\nimport { Badge } from '../badge';\nimport { Button } from '../buttons';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { TabScrollViewport, type TabsScrollStrings } from './tab-scroll-viewport';\n\nexport interface NavigationTabItem {\n\ttitle: string;\n\thref: string;\n\ticon?: LucideIcon | string;\n\tbadge?: ReactNode;\n\tactive?: boolean;\n\tdisabled?: boolean;\n}\n\nexport interface NavigationTabsStrings {\n\ttabsAria: string;\n}\n\nexport const defaultNavigationTabsStrings: NavigationTabsStrings = {\n\ttabsAria: 'Tab navigation',\n};\n\nexport type NavigationTabsVariant = 'default' | 'prominent';\n\nexport interface NavigationTabsProps {\n\t/** Tabs to render, in order. */\n\titems: readonly NavigationTabItem[];\n\t/** Path of the active route, used to mark the current tab. */\n\tcurrentPath?: string;\n\t/** Visual treatment of the tab row. */\n\tvariant?: NavigationTabsVariant;\n\t/** Show previous/next controls when route tabs overflow. Defaults to true. */\n\tscrollable?: boolean;\n\t/** Accessible labels for the previous/next scroll controls. */\n\tscrollStrings?: StringsProp<TabsScrollStrings>;\n\t/** Overrides the tab row's own copy. */\n\tstrings?: StringsProp<NavigationTabsStrings>;\n\tclassName?: string;\n}\n\nfunction normalizePath(rawUrl: string): string {\n\tconst hashRouteIndex = rawUrl.indexOf('#/');\n\tif (hashRouteIndex >= 0) {\n\t\treturn rawUrl.slice(hashRouteIndex).split('?')[0]?.replace(/\\/+$/, '') || '#/';\n\t}\n\n\ttry {\n\t\tconst origin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, origin);\n\t\treturn parsed.pathname.replace(/\\/+$/, '') || '/';\n\t} catch {\n\t\treturn rawUrl.split('?')[0]?.replace(/\\/+$/, '') || '/';\n\t}\n}\n\nexport const NavigationTabs = forwardRef<HTMLDivElement, NavigationTabsProps>(function NavigationTabs({\n\titems,\n\tcurrentPath,\n\tvariant = 'default',\n\tscrollable = true,\n\tscrollStrings,\n\tstrings: stringsProp,\n\tclassName,\n}: NavigationTabsProps, ref) {\n\tconst strings = useStrings(defaultNavigationTabsStrings, stringsProp);\n\tconst activePath = normalizePath(\n\t\tcurrentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '/'),\n\t);\n\tconst prominent = variant === 'prominent';\n\n\tconst list = <Stack\n\t\t\t\trender={<nav aria-label={strings.tabsAria} />}\n\t\t\t\tdirection=\"horizontal\"\n\t\t\t\tgap=\"2xs\"\n\t\t\t\twrap={false}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'navigation-tabs--list w-max rounded-radius bg-muted p-space-2xs',\n\t\t\t\t\tprominent && 'rounded-radius bg-muted/60',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst isActive = item.active ?? activePath === normalizePath(item.href);\n\t\t\t\t\tconst Icon = typeof item.icon === 'string' ? undefined : item.icon;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\t\thref={item.href}\n\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\ttone={isActive && prominent ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\tbuttonStyle={isActive ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\ticon={Icon}\n\t\t\t\t\t\t\taria-current={isActive ? 'page' : undefined}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'navigation-tabs--item shrink-0',\n\t\t\t\t\t\t\t\t'rounded-radius',\n\t\t\t\t\t\t\t\t!prominent && isActive && 'bg-background text-foreground shadow-sm hover:bg-background/90',\n\t\t\t\t\t\t\t\t!prominent && !isActive && 'text-muted-foreground hover:bg-background/50 hover:text-foreground',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{typeof item.icon === 'string' && (\n\t\t\t\t\t\t\t\t<span className=\"navigation-tabs--icon text-inherit\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{item.icon}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\tlineHeight=\"none\"\n\t\t\t\t\t\t\t\tclassName=\"navigation-tabs--title text-inherit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{item.badge !== undefined && item.badge !== null && (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName=\"navigation-tabs--badge\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>;\n\treturn <div ref={ref} className={cn('navigation-tabs--component', 'w-full min-w-0', !scrollable && 'overflow-x-auto', className)}>\n\t\t{scrollable ? <TabScrollViewport strings={scrollStrings}>{list}</TabScrollViewport> : list}\n\t</div>;\n});\n\nNavigationTabs.displayName = 'NavigationTabs';\n","/**\n * OverflowTabBar — horizontal tab strip that gracefully degrades on narrow\n * containers. Tabs that would overflow are moved into a trailing \"More\"\n * dropdown so the strip never wraps. Uses a ResizeObserver to recompute on\n * container resize; the active tab is always kept visible by being moved\n * out of the overflow set when needed.\n *\n * Use `NavigationTabs` instead when a fixed route set cannot overflow.\n */\nimport { MoreHorizontal, type LucideIcon } from 'lucide-react';\nimport { forwardRef, useEffect, useLayoutEffect, useMemo, useRef, useState, type ComponentPropsWithoutRef, type ReactNode } from 'react';\n\nimport { ActionMenu } from '../action-menu';\nimport { Badge } from '../badge';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nexport interface OverflowTabBarStrings {\n\tmore: string;\n\tnavigationLabel: string;\n}\n\nexport const defaultOverflowTabBarStrings: OverflowTabBarStrings = {\n\tmore: 'More',\n\tnavigationLabel: 'Tab navigation',\n};\n\nexport interface OverflowTabItem {\n\t/** Stable identity for this entry. */\n\tid: string;\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\tonClick?: () => void;\n}\n\nexport interface OverflowTabBarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n\t/** Entries to render, in order. */\n\titems: OverflowTabItem[];\n\t/** Currently active tab id. */\n\tvalue?: string;\n\t/** Fired with the id of the newly active tab. */\n\tonValueChange?: (id: string) => void;\n\ttabClassName?: string;\n\tactiveTabClassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<OverflowTabBarStrings>;\n}\n\nconst TAB_BUTTON_BASE =\n\t'inline-flex h-action shrink-0 items-center gap-space-sm rounded-radius-md px-control text-pxs font-medium whitespace-nowrap transition-colors ' +\n\t'hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40';\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 OverflowTabBar = forwardRef<HTMLDivElement, OverflowTabBarProps>(function OverflowTabBar({\n\titems,\n\tvalue,\n\tonValueChange,\n\tclassName,\n\ttabClassName,\n\tactiveTabClassName,\n\tstrings: stringsProp,\n\t...rootProps\n}, ref) {\n\tconst strings = useStrings(defaultOverflowTabBarStrings, stringsProp);\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\tconst measureRef = useRef<HTMLDivElement | null>(null);\n\tconst [visibleCount, setVisibleCount] = useState(items.length);\n\n\t// Recompute how many tabs fit when container or items change.\n\tuseLayoutEffect(() => {\n\t\tif (!containerRef.current || !measureRef.current) return;\n\t\tconst container = containerRef.current;\n\t\tconst measure = measureRef.current;\n\n\t\tconst compute = () => {\n\t\t\tconst containerWidth = container.clientWidth;\n\t\t\tif (containerWidth === 0) {\n\t\t\t\tsetVisibleCount(items.length);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst moreReserve = 72; // approximate \"More\" trigger width\n\t\t\tconst buttons = Array.from(measure.querySelectorAll<HTMLElement>('[data-tab-id]'));\n\t\t\tlet used = 0;\n\t\t\tlet count = 0;\n\t\t\tfor (const btn of buttons) {\n\t\t\t\tconst w = btn.offsetWidth + 4; // gap allowance\n\t\t\t\tif (used + w + moreReserve <= containerWidth) {\n\t\t\t\t\tused += w;\n\t\t\t\t\tcount += 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetVisibleCount(count === buttons.length ? count : Math.max(1, count));\n\t\t};\n\n\t\tcompute();\n\t\tif (typeof ResizeObserver === 'undefined') {\n\t\t\treturn;\n\t\t}\n\t\tconst observer = new ResizeObserver(compute);\n\t\tobserver.observe(container);\n\t\treturn () => observer.disconnect();\n\t}, [items]);\n\n\t// Ensure active tab is always visible; if it falls into the overflow set,\n\t// pull it forward by reducing the visible count to where it lives.\n\tconst orderedItems = useMemo(() => {\n\t\tif (!value) return items;\n\t\tconst activeIdx = items.findIndex((i) => i.id === value);\n\t\tif (activeIdx < 0 || activeIdx < visibleCount) return items;\n\t\t// Move active item into the visible window (swap with last visible).\n\t\tconst next = [...items];\n\t\tconst lastVisibleIdx = Math.max(0, visibleCount - 1);\n\t\t[next[activeIdx], next[lastVisibleIdx]] = [next[lastVisibleIdx], next[activeIdx]];\n\t\treturn next;\n\t}, [items, value, visibleCount]);\n\n\tconst visibleItems = orderedItems.slice(0, visibleCount);\n\tconst overflowItems = orderedItems.slice(visibleCount);\n\n\tconst handleSelect = (item: OverflowTabItem) => {\n\t\tonValueChange?.(item.id);\n\t\titem.onClick?.();\n\t};\n\n\tconst renderTab = (item: OverflowTabItem, isActive: boolean, options?: { measure?: boolean }) => {\n\t\tconst Icon = item.icon;\n\t\tconst tabClasses = cn(\n\t\t\tTAB_BUTTON_BASE,\n\t\t\tisActive\n\t\t\t\t? cn('bg-card text-foreground shadow-sm', activeTabClassName)\n\t\t\t\t: 'text-muted-foreground hover:bg-muted/60',\n\t\t\ttabClassName,\n\t\t);\n\t\tconst inner = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-icon-sm\" />}\n\t\t\t\t{isSimpleText(item.label) ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</Text>\n\t\t\t\t) : item.label}\n\t\t\t\t{!!item.badge && (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'ml-space-sm',\n\t\t\t\t\t\t\tisActive ? 'bg-primary/10 text-primary-accent' : 'bg-muted-foreground/10 text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t</Badge>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t\tif (options?.measure) {\n\t\t\treturn (\n\t\t\t\t<span\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tdata-tab-id={item.id}\n\t\t\t\t\tclassName={cn('overflow-tab-bar--measure', tabClasses)}\n\t\t\t\t>\n\t\t\t\t\t{inner}\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\tif (item.href) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\thref={item.href}\n\t\t\t\t\tdata-tab-id={item.id}\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\taria-selected={isActive}\n\t\t\t\t\ttabIndex={isActive || !value ? 0 : -1}\n\t\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\t\tclassName={cn('overflow-tab-bar--tab', tabClasses)}\n\t\t\t\t>\n\t\t\t\t\t{inner}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<button\n\t\t\t\tkey={item.id}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-tab-id={item.id}\n\t\t\t\trole=\"tab\"\n\t\t\t\taria-selected={isActive}\n\t\t\t\ttabIndex={isActive || !value ? 0 : -1}\n\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\tclassName={cn('overflow-tab-bar--tab', tabClasses)}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</button>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn('overflow-tab-bar--component relative w-full min-w-0 max-w-full', className)}\n\t\t\t{...rootProps}\n\t\t>\n\t\t\t{/* Hidden measure row: always renders all tabs at native width so\n\t\t\t we can measure how many fit. Visually hidden but laid out. */}\n\t\t\t<div\n\t\t\t\tref={measureRef}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-xs overflow-hidden opacity-0\"\n\t\t\t>\n\t\t\t\t{items.map((i) => renderTab(i, false, { measure: true }))}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName=\"overflow-tab-bar--viewport relative flex w-full min-w-0 max-w-full items-center gap-space-xs overflow-hidden rounded-radius bg-muted/40 p-space-xs\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"tablist\"\n\t\t\t\t\taria-label={strings.navigationLabel}\n\t\t\t\t\taria-orientation=\"horizontal\"\n\t\t\t\t\tclassName=\"overflow-tab-bar--tablist flex min-w-0 flex-1 items-center gap-space-xs overflow-hidden\"\n\t\t\t\t>\n\t\t\t\t\t{visibleItems.map((item) => renderTab(item, item.id === value))}\n\t\t\t\t</div>\n\t\t\t\t{overflowItems.length > 0 && (\n\t\t\t\t\t<ActionMenu\n\t\t\t\t\t\tactions={overflowItems.map((item) => ({\n\t\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\t\tlabel: item.label,\n\t\t\t\t\t\t\ticon: item.icon,\n\t\t\t\t\t\t\tonClick: () => handleSelect(item),\n\t\t\t\t\t\t\t// Only the selected tint here; `density=\"table\"` carries the\n\t\t\t\t\t\t\t// compact type and inset, so the row stays on the token scale.\n\t\t\t\t\t\t\tclassName: cn(item.id === value && 'bg-primary/5 text-primary-accent'),\n\t\t\t\t\t\t}))}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tdensity=\"table\"\n\t\t\t\t\t\tcontentClassName=\"min-w-40\"\n\t\t\t\t\t\twidth=\"w-auto\"\n\t\t\t\t\t\tcloseOnSelect\n\t\t\t\t\t\tpreserveOrder\n\t\t\t\t\t\trenderTrigger={\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.more}\n\t\t\t\t\t\t\t\tclassName={cn(TAB_BUTTON_BASE, 'text-muted-foreground hover:bg-muted/60')}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<MoreHorizontal className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t\t\t\t{strings.more}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n\nOverflowTabBar.displayName = 'OverflowTabBar';\n\n// useEffect is referenced indirectly through useLayoutEffect above; keep the\n// import so SSR builds that fall back to useEffect still compile cleanly.\nvoid useEffect;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-row-recipes-GVh11KiT.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 inline navigation geometry; the owning family supplies state and semantics. */\nexport const navigationRowInlineClasses = 'min-w-0 gap-space-md rounded-radius px-control-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-0', childGap: 'gap-0 py-0', height: 'h-action-sm', childHeight: 'h-action-xs' },\n default: { size: 'sm', gap: 'gap-space-2xs', childGap: 'gap-0 py-0', height: 'h-action-sm', childHeight: 'h-action-xs' },\n comfortable: { size: 'md', gap: 'gap-space-2xs', childGap: 'gap-space-2xs py-space-2xs', 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":";;AAIA,IAAaC,IAA6B,qDAG7BC,IAA8B,QAAQF,EAAmB,qBAAqB,6BAC9EG,IAA8B;CAC1C,SAAS;EAAE,MAAM;EAAM,KAAK;EAAS,UAAU;EAAc,QAAQ;EAAe,aAAa;CAAc;CAC/G,SAAS;EAAE,MAAM;EAAM,KAAK;EAAiB,UAAU;EAAc,QAAQ;EAAe,aAAa;CAAc;CACvH,aAAa;EAAE,MAAM;EAAM,KAAK;EAAiB,UAAU;EAA8B,QAAQ;EAAY,aAAa;CAAc;AACzI"}
|
package/dist/number-BNT_BIzJ.js
DELETED
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { c as e, u as t } from "./ui-provider-CftIB6TY.js";
|
|
3
|
-
import { t as n } from "./utils-C2EKeIw3.js";
|
|
4
|
-
import { a as r } from "./typography-Cv8MT-82.js";
|
|
5
|
-
import "react";
|
|
6
|
-
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
7
|
-
//#region src/components/primitives/money.tsx
|
|
8
|
-
function o(e) {
|
|
9
|
-
let t = e.trim();
|
|
10
|
-
if (!t) return "";
|
|
11
|
-
let n = t.lastIndexOf(","), r = t.lastIndexOf(".");
|
|
12
|
-
if (n >= 0 && r >= 0) {
|
|
13
|
-
let e = n > r ? "," : ".", i = e === "," ? "." : ",";
|
|
14
|
-
return t.replace(RegExp(`\\${i}`, "g"), "").replace(e, ".");
|
|
15
|
-
}
|
|
16
|
-
if (n >= 0) {
|
|
17
|
-
let [e, n = ""] = t.split(",");
|
|
18
|
-
return n.length > 0 && n.length <= 2 ? `${e.replace(/,/g, "")}.${n}` : t.replace(/,/g, "");
|
|
19
|
-
}
|
|
20
|
-
if (r >= 0) {
|
|
21
|
-
let [e, n = ""] = t.split(".");
|
|
22
|
-
if (n.length === 3 && e.length > 0) return t.replace(/\./g, "");
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
}
|
|
26
|
-
function s(e) {
|
|
27
|
-
if (e == null || e === "") return null;
|
|
28
|
-
if (typeof e == "number") return Number.isFinite(e) ? e : null;
|
|
29
|
-
let t = Number.parseFloat(o(e));
|
|
30
|
-
return Number.isFinite(t) ? t : null;
|
|
31
|
-
}
|
|
32
|
-
function c(e, t) {
|
|
33
|
-
return e === void 0 || !Number.isFinite(e) ? t : Math.min(100, Math.max(0, Math.trunc(e)));
|
|
34
|
-
}
|
|
35
|
-
function l(e, t, n = {
|
|
36
|
-
minimumFractionDigits: 2,
|
|
37
|
-
maximumFractionDigits: 2
|
|
38
|
-
}) {
|
|
39
|
-
let r = c(t, n.maximumFractionDigits), i = c(e, Math.min(n.minimumFractionDigits, r));
|
|
40
|
-
return {
|
|
41
|
-
minimumFractionDigits: i,
|
|
42
|
-
maximumFractionDigits: Math.max(i, r)
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function u(e, t) {
|
|
46
|
-
if (!e) return {
|
|
47
|
-
minimumFractionDigits: 2,
|
|
48
|
-
maximumFractionDigits: 2
|
|
49
|
-
};
|
|
50
|
-
try {
|
|
51
|
-
let n = new Intl.NumberFormat(t, {
|
|
52
|
-
style: "currency",
|
|
53
|
-
currency: e
|
|
54
|
-
}).resolvedOptions();
|
|
55
|
-
return {
|
|
56
|
-
minimumFractionDigits: n.minimumFractionDigits ?? 2,
|
|
57
|
-
maximumFractionDigits: n.maximumFractionDigits ?? 2
|
|
58
|
-
};
|
|
59
|
-
} catch {
|
|
60
|
-
return {
|
|
61
|
-
minimumFractionDigits: 2,
|
|
62
|
-
maximumFractionDigits: 2
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function d(e) {
|
|
67
|
-
return e === void 0 || !Number.isFinite(e) || e <= 0 ? 100 : e;
|
|
68
|
-
}
|
|
69
|
-
function f(e) {
|
|
70
|
-
let t = s(e.amount);
|
|
71
|
-
return t === null ? null : e.unit === "minor" ? t / d(e.minorUnitScale) : t;
|
|
72
|
-
}
|
|
73
|
-
function p(e, t, n) {
|
|
74
|
-
return e.formatToParts(t).map((e) => e.type === "currency" ? n : e.value).join("");
|
|
75
|
-
}
|
|
76
|
-
function m({ amount: e, currency: t, locale: n, currencyDisplay: r = "symbol", minimumFractionDigits: i, maximumFractionDigits: a, formatMode: o, symbol: c }) {
|
|
77
|
-
let d = s(e);
|
|
78
|
-
if (d === null) return null;
|
|
79
|
-
let f = t ?? "", m = l(i, a, u(f, n));
|
|
80
|
-
if (o === "decimal" || !f) return new Intl.NumberFormat(n, m).format(d);
|
|
81
|
-
if (o === "with_code") return `${new Intl.NumberFormat(n, m).format(d)} ${f}`.trim();
|
|
82
|
-
try {
|
|
83
|
-
let e = new Intl.NumberFormat(n, {
|
|
84
|
-
...m,
|
|
85
|
-
style: "currency",
|
|
86
|
-
currency: f,
|
|
87
|
-
currencyDisplay: r
|
|
88
|
-
});
|
|
89
|
-
return c ? p(e, d, c) : e.format(d);
|
|
90
|
-
} catch {
|
|
91
|
-
let e = new Intl.NumberFormat(n, m).format(d);
|
|
92
|
-
return c ? `${c}${e}` : `${e} ${f}`.trim();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
function h(e) {
|
|
96
|
-
return e === "left" ? {
|
|
97
|
-
text: "text-left",
|
|
98
|
-
justify: "justify-start"
|
|
99
|
-
} : e === "center" ? {
|
|
100
|
-
text: "text-center",
|
|
101
|
-
justify: "justify-center"
|
|
102
|
-
} : {
|
|
103
|
-
text: "text-right",
|
|
104
|
-
justify: "justify-end"
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
function g({ amount: o, currency: s, unit: c = "major", minorUnitScale: l, symbol: u, locale: d, currencyDisplay: p, minimumFractionDigits: g, maximumFractionDigits: _, formatMode: v, emptyLabel: y = "—", size: b, align: x = "right", weight: S = "medium", type: C = "main", tag: w = "span", lineHeight: T = "normal", numeric: E, secondary: D, displayMode: O, layout: k, secondaryEmphasis: A = "discrete", separator: j = "·", className: M, ref: N, ...P }) {
|
|
108
|
-
let F = e(), I = t(), L = s ?? I.defaultCurrency ?? "USD", R = f({
|
|
109
|
-
amount: o,
|
|
110
|
-
unit: c,
|
|
111
|
-
minorUnitScale: l
|
|
112
|
-
}), z = R === null ? null : m({
|
|
113
|
-
amount: R,
|
|
114
|
-
currency: L,
|
|
115
|
-
symbol: u,
|
|
116
|
-
locale: d ?? F.locale,
|
|
117
|
-
currencyDisplay: p,
|
|
118
|
-
minimumFractionDigits: g,
|
|
119
|
-
maximumFractionDigits: _,
|
|
120
|
-
formatMode: v ?? I.formatMode ?? "with_code"
|
|
121
|
-
});
|
|
122
|
-
if (z === null) return /* @__PURE__ */ i(r, {
|
|
123
|
-
ref: N,
|
|
124
|
-
tag: w,
|
|
125
|
-
size: b,
|
|
126
|
-
align: x,
|
|
127
|
-
weight: S,
|
|
128
|
-
type: "secondary",
|
|
129
|
-
lineHeight: T,
|
|
130
|
-
numeric: E,
|
|
131
|
-
className: n("money--component inline tabular-nums", M),
|
|
132
|
-
...P,
|
|
133
|
-
children: y
|
|
134
|
-
});
|
|
135
|
-
let B = D ? f(D) : null, V = D?.currency ?? I.displayCurrency ?? L, H = O ?? (I.dualPricingEnabled ? I.displayMode : void 0) ?? "dual";
|
|
136
|
-
if (B === null || A === "hidden" || H === "default_only" || H === "dynamic" && V === L || !D) return /* @__PURE__ */ i(r, {
|
|
137
|
-
ref: N,
|
|
138
|
-
tag: w,
|
|
139
|
-
size: b,
|
|
140
|
-
align: x,
|
|
141
|
-
weight: S,
|
|
142
|
-
type: C,
|
|
143
|
-
lineHeight: T,
|
|
144
|
-
numeric: E,
|
|
145
|
-
className: n("money--component inline whitespace-nowrap tabular-nums", M),
|
|
146
|
-
...P,
|
|
147
|
-
children: z
|
|
148
|
-
});
|
|
149
|
-
let U = m({
|
|
150
|
-
amount: B,
|
|
151
|
-
currency: V,
|
|
152
|
-
symbol: D.symbol,
|
|
153
|
-
locale: d ?? F.locale,
|
|
154
|
-
currencyDisplay: D.currencyDisplay ?? p,
|
|
155
|
-
minimumFractionDigits: D.minimumFractionDigits ?? g,
|
|
156
|
-
maximumFractionDigits: D.maximumFractionDigits ?? _,
|
|
157
|
-
formatMode: D.formatMode ?? v ?? I.formatMode ?? "with_code"
|
|
158
|
-
}), W = k ?? (I.dualPricingDisplay === "inline" ? "inline" : "stacked"), G = A === "match" ? b : A === "muted" ? "xs" : "xxs", K = A === "match" ? C : A === "muted" ? "secondary" : "discrete", q = h(x);
|
|
159
|
-
return W === "inline" ? /* @__PURE__ */ a(r, {
|
|
160
|
-
ref: N,
|
|
161
|
-
tag: w,
|
|
162
|
-
size: b,
|
|
163
|
-
align: x,
|
|
164
|
-
type: C,
|
|
165
|
-
lineHeight: T,
|
|
166
|
-
numeric: E,
|
|
167
|
-
className: n("money--component money--inline inline-flex items-baseline gap-space-xs whitespace-nowrap tabular-nums", q.justify, M),
|
|
168
|
-
...P,
|
|
169
|
-
children: [
|
|
170
|
-
/* @__PURE__ */ i(r, {
|
|
171
|
-
tag: "span",
|
|
172
|
-
size: b,
|
|
173
|
-
weight: S,
|
|
174
|
-
type: C,
|
|
175
|
-
className: "money--primary",
|
|
176
|
-
children: z
|
|
177
|
-
}),
|
|
178
|
-
/* @__PURE__ */ i("span", {
|
|
179
|
-
className: "money--separator inline-flex shrink-0 items-center text-muted-foreground",
|
|
180
|
-
"aria-hidden": "true",
|
|
181
|
-
children: j
|
|
182
|
-
}),
|
|
183
|
-
/* @__PURE__ */ i(r, {
|
|
184
|
-
tag: "span",
|
|
185
|
-
size: G,
|
|
186
|
-
weight: A === "match" ? S : "regular",
|
|
187
|
-
type: K,
|
|
188
|
-
className: "money--secondary",
|
|
189
|
-
children: U
|
|
190
|
-
})
|
|
191
|
-
]
|
|
192
|
-
}) : /* @__PURE__ */ a(r, {
|
|
193
|
-
ref: N,
|
|
194
|
-
tag: w,
|
|
195
|
-
size: b,
|
|
196
|
-
align: x,
|
|
197
|
-
type: C,
|
|
198
|
-
lineHeight: T,
|
|
199
|
-
numeric: E,
|
|
200
|
-
className: n("money--component money--stacked inline-flex flex-col whitespace-nowrap tabular-nums leading-tight", q.text, M),
|
|
201
|
-
...P,
|
|
202
|
-
children: [/* @__PURE__ */ i(r, {
|
|
203
|
-
tag: "span",
|
|
204
|
-
size: b,
|
|
205
|
-
align: x,
|
|
206
|
-
weight: S,
|
|
207
|
-
type: C,
|
|
208
|
-
lineHeight: "tight",
|
|
209
|
-
className: "money--primary",
|
|
210
|
-
children: z
|
|
211
|
-
}), /* @__PURE__ */ i(r, {
|
|
212
|
-
tag: "span",
|
|
213
|
-
size: G,
|
|
214
|
-
align: x,
|
|
215
|
-
weight: A === "match" ? S : "regular",
|
|
216
|
-
type: K,
|
|
217
|
-
lineHeight: "tight",
|
|
218
|
-
className: "money--secondary",
|
|
219
|
-
children: U
|
|
220
|
-
})]
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
//#endregion
|
|
224
|
-
//#region src/components/primitives/number.tsx
|
|
225
|
-
function _(e) {
|
|
226
|
-
if (e == null || e === "") return null;
|
|
227
|
-
let t = typeof e == "number" ? e : globalThis.Number.parseFloat(e);
|
|
228
|
-
return globalThis.Number.isFinite(t) ? t : null;
|
|
229
|
-
}
|
|
230
|
-
function v(e, t, n) {
|
|
231
|
-
let r = _(e);
|
|
232
|
-
return r === null ? null : new Intl.NumberFormat(t, n).format(r);
|
|
233
|
-
}
|
|
234
|
-
function y({ value: t, locale: a, options: o, emptyLabel: s = "—", size: c, align: l = "right", weight: u = "regular", type: d = "main", className: f, ref: p, ...m }) {
|
|
235
|
-
let h = e(), g = v(t, a ?? h.locale, o);
|
|
236
|
-
return /* @__PURE__ */ i(r, {
|
|
237
|
-
ref: p,
|
|
238
|
-
tag: "span",
|
|
239
|
-
size: c,
|
|
240
|
-
align: l,
|
|
241
|
-
weight: u,
|
|
242
|
-
type: g === null ? "secondary" : d,
|
|
243
|
-
className: n("number--component inline tabular-nums", f),
|
|
244
|
-
...m,
|
|
245
|
-
children: g ?? s
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
function b({ value: t, locale: a, scaled: o = !1, options: s, emptyLabel: c = "—", size: l, align: u = "right", weight: d = "regular", type: f = "main", className: p, ref: m, ...h }) {
|
|
249
|
-
let g = e(), v = _(t), y = v === null ? null : new Intl.NumberFormat(a ?? g.locale, {
|
|
250
|
-
style: "percent",
|
|
251
|
-
maximumFractionDigits: 1,
|
|
252
|
-
...s
|
|
253
|
-
}).format(o ? v / 100 : v);
|
|
254
|
-
return /* @__PURE__ */ i(r, {
|
|
255
|
-
ref: m,
|
|
256
|
-
tag: "span",
|
|
257
|
-
size: l,
|
|
258
|
-
align: u,
|
|
259
|
-
weight: d,
|
|
260
|
-
type: y === null ? "secondary" : f,
|
|
261
|
-
className: n("percent--component inline tabular-nums", p),
|
|
262
|
-
...h,
|
|
263
|
-
children: y ?? c
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
//#endregion
|
|
267
|
-
export { b as n, g as r, y as t };
|
|
268
|
-
|
|
269
|
-
//# sourceMappingURL=number-BNT_BIzJ.js.map
|