themelia-react-ui 2.0.6 → 3.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 +250 -0
- package/MIGRATION.md +746 -7
- package/README.md +27 -23
- package/dist/{accordion-0tQUZ20r.js → accordion-DNVqwEIC.js} +36 -36
- package/dist/accordion-DNVqwEIC.js.map +1 -0
- package/dist/action-menu-D5343RwT.js +286 -0
- package/dist/action-menu-D5343RwT.js.map +1 -0
- package/dist/ai-artifact-otrz9ZwS.js +1214 -0
- package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
- package/dist/anchored-positioning-1U_eBFNx.js +9 -0
- package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
- package/dist/app-shell-CPN30Nb1.js +372 -0
- package/dist/app-shell-CPN30Nb1.js.map +1 -0
- package/dist/{attachment-BCpA4e7i.js → attachment-D2-fpfmv.js} +15 -15
- package/dist/{attachment-BCpA4e7i.js.map → attachment-D2-fpfmv.js.map} +1 -1
- package/dist/{auth-B0girIk_.js → auth-g_oUTDDC.js} +234 -241
- package/dist/auth-g_oUTDDC.js.map +1 -0
- package/dist/{avatar-B9Jnp-T-.js → avatar-Ca3Ihrq4.js} +4 -4
- package/dist/{avatar-B9Jnp-T-.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
- package/dist/{badge-wWauMgAt.js → badge-oGiXblW7.js} +8 -9
- package/dist/badge-oGiXblW7.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/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +2 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +11 -11
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +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 +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +2 -2
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +13 -13
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +203 -2
- package/dist/base/media-gallery.js.map +1 -0
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +32 -22
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +91 -88
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sidebar.js +2 -2
- package/dist/base/signature-pad.js +14 -14
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +6 -12
- package/dist/base/spinner.js.map +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +3 -3
- package/dist/base/toaster.js +2 -2
- package/dist/base/tree.js +2 -2
- package/dist/base/upload-queue.js +303 -2
- package/dist/base/upload-queue.js.map +1 -0
- package/dist/base/upload.js +3 -4
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BoqWIIpV.js → batch-action-bar-D6MZQNnC.js} +10 -10
- package/dist/{batch-action-bar-BoqWIIpV.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
- package/dist/blocks/admin.js +242 -228
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +395 -357
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/charts.js +1022 -0
- package/dist/blocks/analytics/charts.js.map +1 -0
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +171 -1365
- 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 +1487 -1358
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -3
- package/dist/blocks/onboarding.js +91 -82
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +25 -25
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +2 -2
- package/dist/{breadcrumbs-Bp9Ke7kd.js → breadcrumbs-CQ9JSlez.js} +52 -45
- package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
- package/dist/{button-ChBovTx0.js → button-rd6FiHfQ.js} +12 -8
- package/dist/button-rd6FiHfQ.js.map +1 -0
- package/dist/{buttons-DeW0bQeK.js → buttons-pZVgPTZn.js} +230 -246
- package/dist/buttons-pZVgPTZn.js.map +1 -0
- package/dist/{cards-CNXnmvV5.js → cards-CgWyqvgZ.js} +25 -22
- package/dist/{cards-CNXnmvV5.js.map → cards-CgWyqvgZ.js.map} +1 -1
- package/dist/cascader-Cf05pwaq.js +444 -0
- package/dist/cascader-Cf05pwaq.js.map +1 -0
- package/dist/{chart-I7ROnsl8.js → chart-CygRCyIZ.js} +5 -5
- package/dist/{chart-I7ROnsl8.js.map → chart-CygRCyIZ.js.map} +1 -1
- package/dist/{checkbox-MoyHIAPs.js → checkbox-Dy5_XBMZ.js} +4 -4
- package/dist/{checkbox-MoyHIAPs.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
- package/dist/{choice-inputs-DHGtx0QV.js → choice-inputs-oJEsrb5Y.js} +113 -114
- package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
- package/dist/{code-block-BSJyq9e-.js → code-block-BrLD7mCi.js} +44 -60
- package/dist/code-block-BrLD7mCi.js.map +1 -0
- package/dist/collapsible-CRCCg_bO.js +80 -0
- package/dist/collapsible-CRCCg_bO.js.map +1 -0
- package/dist/{collection-content-CSnwtOTH.js → collection-content-D7SoDlYd.js} +3 -3
- package/dist/{collection-content-CSnwtOTH.js.map → collection-content-D7SoDlYd.js.map} +1 -1
- package/dist/combobox-Dl6f6kHz.js +362 -0
- package/dist/combobox-Dl6f6kHz.js.map +1 -0
- package/dist/combobox-DrDXtSSt.js +929 -0
- package/dist/combobox-DrDXtSSt.js.map +1 -0
- package/dist/command-CjZ2VzKC.js +432 -0
- package/dist/command-CjZ2VzKC.js.map +1 -0
- package/dist/comments-C2MZyRmh.js +1214 -0
- package/dist/comments-C2MZyRmh.js.map +1 -0
- package/dist/components/base/accordion/accordion.d.ts +11 -3
- package/dist/components/base/action-menu/action-menu.d.ts +11 -3
- package/dist/components/base/buttons/button.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/loader-button.d.ts +6 -15
- package/dist/components/base/cards/index.d.ts +1 -1
- package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
- package/dist/components/base/cards/smart-card.d.ts +0 -2
- package/dist/components/base/cards/smart-card.types.d.ts +12 -10
- package/dist/components/base/cascader/cascader.d.ts +8 -2
- package/dist/components/base/cascader/cascader.types.d.ts +24 -2
- package/dist/components/base/cascader/index.d.ts +1 -1
- package/dist/components/base/choice-inputs/switch.d.ts +1 -1
- package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/date-pickers/datepicker.types.d.ts +1 -3
- package/dist/components/base/display/dialog.d.ts +3 -9
- package/dist/components/base/display/index.d.ts +2 -3
- package/dist/components/base/display/separator.d.ts +1 -1
- package/dist/components/base/feedback/alert.d.ts +2 -1
- package/dist/components/base/feedback/empty.d.ts +10 -2
- package/dist/components/base/forms/workflow.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +9 -17
- package/dist/components/base/forms-numeric/index.d.ts +3 -3
- package/dist/components/base/item/item.types.d.ts +6 -2
- package/dist/components/base/metadata-list/index.d.ts +1 -3
- package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
- package/dist/components/base/navigation/index.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +7 -6
- package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
- package/dist/components/base/navigation/page-header/index.d.ts +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
- package/dist/components/base/navigation/pagination.d.ts +5 -5
- package/dist/components/base/popover/popover.recipes.d.ts +0 -1
- package/dist/components/base/qr-code/qr-code.d.ts +4 -0
- package/dist/components/base/repeaters/index.d.ts +1 -1
- package/dist/components/base/repeaters/key-value-editor.d.ts +4 -0
- package/dist/components/base/sheet/sheet.d.ts +6 -15
- package/dist/components/base/sidebar/index.d.ts +1 -6
- package/dist/components/base/sidebar/sidebar.d.ts +38 -10
- package/dist/components/base/skeleton/skeleton.d.ts +1 -1
- package/dist/components/base/structure/structure.types.d.ts +11 -2
- package/dist/components/base/text-inputs/index.d.ts +1 -1
- package/dist/components/base/tree/index.d.ts +1 -0
- package/dist/components/base/tree/tree.d.ts +2 -2
- package/dist/components/base/tree/tree.types.d.ts +7 -1
- package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
- package/dist/components/base/upload/image-upload.d.ts +2 -0
- package/dist/components/base/upload/index.d.ts +3 -9
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
- package/dist/components/base/value-inputs/slider.d.ts +5 -2
- package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
- package/dist/components/blocks/admin/index.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
- package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
- package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
- package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-citation/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
- package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
- package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
- package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
- package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
- package/dist/components/blocks/ai/ai-sources/types.d.ts +8 -2
- package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
- package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
- package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
- package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
- package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
- package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
- package/dist/components/blocks/analytics/index.d.ts +17 -24
- package/dist/components/blocks/analytics/metric/metric.d.ts +5 -5
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +2 -2
- package/dist/components/blocks/analytics/types.d.ts +12 -3
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
- package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
- package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
- package/dist/components/blocks/commerce/index.d.ts +8 -8
- package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
- package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
- package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +8 -8
- package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
- package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
- package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
- package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
- package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
- package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
- package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
- package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
- package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
- package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
- package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
- package/dist/components/blocks/content-block-hooks.d.ts +22 -0
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
- package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
- package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +6 -0
- package/dist/components/blocks/data-display/index.d.ts +0 -1
- package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
- package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
- package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
- package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
- package/dist/components/blocks/timelines/index.d.ts +2 -2
- package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
- package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
- package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
- package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
- package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
- package/dist/components/features/activities/activities.strings.d.ts +5 -3
- package/dist/components/features/activities/activities.types.d.ts +28 -11
- package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
- package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
- package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
- package/dist/components/features/activities/relative-time.d.ts +18 -0
- package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
- package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +19 -5
- package/dist/components/features/appointment-calendar/index.d.ts +1 -1
- package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
- package/dist/components/features/async-preview/async-preview.d.ts +2 -2
- package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
- package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
- package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
- package/dist/components/features/combobox/combobox.d.ts +12 -3
- package/dist/components/features/combobox/components/error-message.d.ts +3 -1
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -2
- package/dist/components/features/combobox/index.d.ts +1 -1
- package/dist/components/features/combobox/types.d.ts +47 -45
- package/dist/components/features/comments/comments.strings.d.ts +6 -5
- package/dist/components/features/comments/comments.types.d.ts +40 -26
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
- package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
- package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
- package/dist/components/features/data-view/data-view.types.d.ts +15 -2
- package/dist/components/features/email-composer/email-html.d.ts +5 -0
- package/dist/components/features/email-composer/http.d.ts +2 -0
- package/dist/components/features/email-composer/strings.d.ts +17 -2
- package/dist/components/features/email-composer/types.d.ts +17 -2
- package/dist/components/features/email-composer/use-composer.d.ts +2 -78
- package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
- package/dist/components/features/filters/facets/range-facet.d.ts +13 -8
- package/dist/components/features/filters/filter-context.d.ts +9 -0
- package/dist/components/features/filters/filters.strings.d.ts +36 -3
- package/dist/components/features/filters/filters.types.d.ts +72 -5
- package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
- package/dist/components/features/filters/index.d.ts +2 -2
- package/dist/components/features/filters/operator-options.d.ts +25 -2
- package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
- package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
- package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
- package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
- package/dist/components/features/filters/utils/filter-utils.d.ts +29 -4
- package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
- package/dist/components/features/global-search/global-search.d.ts +7 -1
- package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
- package/dist/components/features/global-search/global-search.types.d.ts +30 -6
- package/dist/components/features/global-search/index.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
- package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
- package/dist/components/features/kanban/index.d.ts +2 -2
- package/dist/components/features/kanban/kanban-context.d.ts +4 -0
- package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
- package/dist/components/features/kanban/kanban.d.ts +10 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
- package/dist/components/features/kanban/kanban.types.d.ts +26 -0
- package/dist/components/features/map/map.d.ts +4 -0
- package/dist/components/features/map/place-autocomplete.d.ts +10 -1
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +33 -3
- package/dist/components/features/media-library/media-library.types.d.ts +47 -2
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
- package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
- package/dist/components/features/mentions/index.d.ts +1 -1
- package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
- package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
- package/dist/components/features/mentions/utils/index.d.ts +0 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +2 -2
- package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
- package/dist/components/features/overlays/overlays.types.d.ts +27 -10
- package/dist/components/features/products/components/index.d.ts +0 -10
- package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
- package/dist/components/features/products/components/product-details-card.d.ts +1 -1
- package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
- package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
- package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
- package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
- package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
- package/dist/components/features/products/partials/product-surface.d.ts +15 -0
- package/dist/components/features/products/products.strings.d.ts +8 -0
- package/dist/components/features/products/products.types.d.ts +25 -7
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +6 -4
- package/dist/components/features/resource/index.d.ts +2 -3
- package/dist/components/features/resource/resource.d.ts +2 -10
- package/dist/components/features/resource/resource.types.d.ts +7 -149
- package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
- package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
- package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
- package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
- package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +2 -3
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +13 -1
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -0
- package/dist/components/features/schema-form/schema-form.d.ts +1 -1
- package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
- package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
- package/dist/components/features/suggestions/suggestions.types.d.ts +12 -4
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/filter-bar.d.ts +1 -1
- package/dist/components/features/table/pagination.d.ts +1 -1
- package/dist/components/features/table/partials/cell-value.d.ts +1 -1
- package/dist/components/features/table/table-body.d.ts +1 -1
- package/dist/components/features/table/table-header.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +31 -9
- package/dist/components/features/table/table-region.recipes.d.ts +11 -0
- package/dist/components/features/table/table-toolbar.d.ts +1 -1
- package/dist/components/features/table/table.strings.d.ts +1 -0
- package/dist/components/features/table/table.types.d.ts +74 -48
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
- package/dist/components/layout/app-shell/index.d.ts +2 -2
- package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
- package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
- package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth-shell.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +0 -5
- package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
- package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
- package/dist/components/layout/header/header.types.d.ts +16 -6
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts +1 -1
- package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
- package/dist/components/layout/layout.types.d.ts +2 -2
- package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
- package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
- package/dist/components/layout/page/index.d.ts +2 -3
- package/dist/components/layout/page/page.strings.d.ts +12 -0
- package/dist/components/layout/page/page.types.d.ts +7 -110
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/index.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +3 -5
- package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/index.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +15 -7
- package/dist/components/layout/sidebar/sidebar.types.d.ts +10 -12
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
- package/dist/components/primitives/date.d.ts +22 -3
- package/dist/components/primitives/file-size.d.ts +8 -2
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +3 -1
- package/dist/components/primitives/link.d.ts +8 -1
- package/dist/components/primitives/money.d.ts +1 -1
- package/dist/components/primitives/number.d.ts +2 -1
- package/dist/components/typography/heading.d.ts +9 -3
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/text-link.d.ts +10 -3
- package/dist/components/ui/badge.d.ts +2 -4
- package/dist/components/ui/breadcrumb.d.ts +2 -3
- package/dist/components/ui/button.d.ts +8 -2
- package/dist/components/ui/collapsible.d.ts +1 -4
- package/dist/components/ui/command.d.ts +20 -18
- package/dist/components/ui/dialog.d.ts +3 -9
- package/dist/components/ui/empty.d.ts +2 -2
- package/dist/components/ui/input-group.d.ts +3 -3
- package/dist/components/ui/item.d.ts +3 -3
- package/dist/components/ui/popover.d.ts +3 -7
- package/dist/components/ui/sheet.d.ts +4 -12
- package/dist/components/ui/sidebar-state.d.ts +6 -1
- package/dist/components/ui/sidebar.d.ts +7 -4
- package/dist/components/ui/tabs.d.ts +2 -2
- package/dist/components/ui/toggle-group.d.ts +3 -3
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/tooltip.d.ts +1 -3
- package/dist/{containers-CSdc32h9.js → containers-BdfLTP4w.js} +37 -32
- package/dist/containers-BdfLTP4w.js.map +1 -0
- package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
- package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
- package/dist/{copyable-3fdHfMR3.js → copyable-Bmr14W0d.js} +6 -6
- package/dist/{copyable-3fdHfMR3.js.map → copyable-Bmr14W0d.js.map} +1 -1
- package/dist/{data-display-Cmj-xZYl.js → data-display-CWe9SOYh.js} +264 -251
- package/dist/data-display-CWe9SOYh.js.map +1 -0
- package/dist/date-3qsCE1ID.js +209 -0
- package/dist/date-3qsCE1ID.js.map +1 -0
- package/dist/{date-picker-CyQlFYsP.js → date-picker-D1keJQIG.js} +129 -129
- package/dist/date-picker-D1keJQIG.js.map +1 -0
- package/dist/date-pickers-D8aJoeHc.js +185 -0
- package/dist/date-pickers-D8aJoeHc.js.map +1 -0
- package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
- package/dist/{display-CT_N2a3w.js → display-VlmP1I0i.js} +23 -46
- package/dist/display-VlmP1I0i.js.map +1 -0
- package/dist/{dropdown-menu-C08iIugv.js → dropdown-menu-B8hjvbkS.js} +9 -9
- package/dist/{dropdown-menu-C08iIugv.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
- package/dist/dropzone-CHBNK3de.js +116 -0
- package/dist/dropzone-CHBNK3de.js.map +1 -0
- package/dist/features/activities.js +682 -628
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +258 -226
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +436 -340
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +351 -265
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +2 -2
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +212 -151
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +344 -315
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +504 -355
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +250 -206
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +269 -189
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +385 -371
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1571 -1199
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +2 -2
- package/dist/features/overlays.js +2 -2
- package/dist/features/products.js +1780 -1691
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +165 -152
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +223 -191
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +55 -220
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +3 -3
- package/dist/features/schema-form.js +280 -228
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +48 -39
- package/dist/features/suggestions.js.map +1 -1
- package/dist/features/table.js +2 -2
- package/dist/features/theme-tweaker.js +723 -633
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-DmqmXKLn.js +254 -0
- package/dist/feedback-DmqmXKLn.js.map +1 -0
- package/dist/{field-affordance-recipes-D6H7tVJi.js → field-affordance-recipes-DfbMadot.js} +13 -9
- package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
- package/dist/{field-state-recipes-7sza8QbC.js → field-state-recipes-EtCxpEy3.js} +6 -2
- package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
- package/dist/filters-BviMRMLS.js +2692 -0
- package/dist/filters-BviMRMLS.js.map +1 -0
- package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
- package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
- package/dist/{form-field-CAPdwdnZ.js → form-field-BdfCwSoQ.js} +5 -5
- package/dist/{form-field-CAPdwdnZ.js.map → form-field-BdfCwSoQ.js.map} +1 -1
- package/dist/{form-sizing-CgcrUbLU.js → form-sizing-DE_dZw32.js} +3 -3
- package/dist/{form-sizing-CgcrUbLU.js.map → form-sizing-DE_dZw32.js.map} +1 -1
- package/dist/{forms-B3W8CH7-.js → forms-B8DzJnBN.js} +35 -35
- package/dist/forms-B8DzJnBN.js.map +1 -0
- package/dist/forms-numeric-DOBswjKj.js +992 -0
- package/dist/forms-numeric-DOBswjKj.js.map +1 -0
- package/dist/{header-ZIIsRKxP.js → header-Cq3G0ZRP.js} +100 -95
- package/dist/header-Cq3G0ZRP.js.map +1 -0
- package/dist/{hooks-BitHSh-Y.js → hooks-DHfeSMAO.js} +34 -14
- package/dist/hooks-DHfeSMAO.js.map +1 -0
- package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
- package/dist/http-Cu-GPpss.js.map +1 -0
- package/dist/{icon-badge-npxF1SLX.js → icon-badge-B0Kq7wom.js} +3 -3
- package/dist/{icon-badge-npxF1SLX.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
- package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
- package/dist/{input-DIREVYHs.js → input-2YrgTUrz.js} +3 -3
- package/dist/{input-DIREVYHs.js.map → input-2YrgTUrz.js.map} +1 -1
- package/dist/{input-7KAc7XQL.js → input-DfJyrjoR.js} +6 -6
- package/dist/{input-7KAc7XQL.js.map → input-DfJyrjoR.js.map} +1 -1
- package/dist/{interaction-recipes-4wZ2tvfb.js → interaction-recipes-DmuS1ase.js} +2 -2
- package/dist/{interaction-recipes-4wZ2tvfb.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
- package/dist/item-GJ9mvCcg.js +279 -0
- package/dist/item-GJ9mvCcg.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 +2 -2
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +3 -3
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +12 -12
- package/dist/{layout.types-E_GAApzO.js → layout.types-DbtnyAtd.js} +11 -8
- package/dist/layout.types-DbtnyAtd.js.map +1 -0
- package/dist/lib/anchored-positioning.d.ts +11 -0
- package/dist/lib/field-affordance-recipes.d.ts +10 -0
- package/dist/lib/field-state-recipes.d.ts +6 -0
- package/dist/lib/focus-recipes.d.ts +7 -0
- package/dist/lib/format.d.ts +25 -0
- package/dist/lib/money-format.d.ts +6 -0
- package/dist/lib/motion-recipes.d.ts +6 -0
- package/dist/lib/surface-recipes.d.ts +32 -2
- package/dist/lib/theme-scope.d.ts +17 -1
- package/dist/lib/token-merge.generated.d.ts +13 -19
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/types.d.ts +5 -0
- package/dist/lib/use-controllable-state.d.ts +16 -0
- package/dist/lib/use-copy-feedback.d.ts +15 -0
- package/dist/lib/utils.js +1 -1
- package/dist/lib/variant-props.d.ts +9 -0
- package/dist/main-landmark-context-BAsyqp2I.js +11 -0
- package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
- package/dist/mentions-zz0ewNIq.js +670 -0
- package/dist/mentions-zz0ewNIq.js.map +1 -0
- package/dist/{message-BJHnn43M.js → message-BiiVrRrm.js} +10 -7
- package/dist/{message-BJHnn43M.js.map → message-BiiVrRrm.js.map} +1 -1
- package/dist/{metadata-list-XkqZ_UXH.js → metadata-list-G85roWjS.js} +13 -12
- package/dist/metadata-list-G85roWjS.js.map +1 -0
- package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
- package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
- package/dist/navigation-C0Be5C3i.js +304 -0
- package/dist/navigation-C0Be5C3i.js.map +1 -0
- package/dist/{navigation-Bt-v7rWP.js → navigation-CmqaQR_G.js} +99 -103
- package/dist/navigation-CmqaQR_G.js.map +1 -0
- package/dist/number-NFWKIoiK.js +340 -0
- package/dist/number-NFWKIoiK.js.map +1 -0
- package/dist/{overflow-tab-bar-BQCA2Zn2.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
- package/dist/{overflow-tab-bar-BQCA2Zn2.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
- package/dist/overlays-D-gAIfPF.js +1018 -0
- package/dist/overlays-D-gAIfPF.js.map +1 -0
- package/dist/page-D4pQhgSq.js +216 -0
- package/dist/page-D4pQhgSq.js.map +1 -0
- package/dist/{page-header-commands-DIKspJfx.js → page-header-commands-elelNOfd.js} +29 -29
- package/dist/{page-header-commands-DIKspJfx.js.map → page-header-commands-elelNOfd.js.map} +1 -1
- package/dist/{pagination-Br8TdV9A.js → pagination-BuSWw1US.js} +22 -23
- package/dist/pagination-BuSWw1US.js.map +1 -0
- package/dist/{popover-k8TdUcAt.js → popover-BpMxbqEK.js} +73 -69
- package/dist/popover-BpMxbqEK.js.map +1 -0
- package/dist/{popover-menu-yn-o0kyA.js → popover-menu-CO-_iiuz.js} +7 -7
- package/dist/{popover-menu-yn-o0kyA.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
- package/dist/{popover.recipes-DJ0AkUan.js → popover.recipes-BqkdvlZn.js} +3 -4
- package/dist/{popover.recipes-DJ0AkUan.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
- package/dist/{portal-recipes-DyUXqUtD.js → portal-recipes-BPeS4rGB.js} +2 -2
- package/dist/{portal-recipes-DyUXqUtD.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
- package/dist/primitives-BlC1lXBr.js +447 -0
- package/dist/primitives-BlC1lXBr.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-DZFXXzPs.js → progress-RARK8AjB.js} +5 -5
- package/dist/{progress-DZFXXzPs.js.map → progress-RARK8AjB.js.map} +1 -1
- package/dist/receipt-CUf2Vegp.js +114 -0
- package/dist/receipt-CUf2Vegp.js.map +1 -0
- package/dist/{rich-text-BnTzZjIo.js → rich-text-Cypm9__d.js} +7 -8
- package/dist/{rich-text-BnTzZjIo.js.map → rich-text-Cypm9__d.js.map} +1 -1
- package/dist/rich-text-editor-Z6cQepsA.js +919 -0
- package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
- package/dist/rich-text-tree-DdKHIJx4.js +154 -0
- package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
- package/dist/safe-image-src-C6kQSMBZ.js +17 -0
- package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
- package/dist/{scroll-area-Bj6CRUif.js → scroll-area-B9HKbji0.js} +3 -3
- package/dist/{scroll-area-Bj6CRUif.js.map → scroll-area-B9HKbji0.js.map} +1 -1
- package/dist/{separator-DM6gs2vu.js → separator-DaDe26sf.js} +3 -3
- package/dist/separator-DaDe26sf.js.map +1 -0
- package/dist/{separator-B9ewiCGO.js → separator-KGsNXt2J.js} +2 -2
- package/dist/{separator-B9ewiCGO.js.map → separator-KGsNXt2J.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +5 -2
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +2 -2
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-D5j_RJvT.js +160 -0
- package/dist/settings-D5j_RJvT.js.map +1 -0
- package/dist/sheet-B6j_BE9O.js +241 -0
- package/dist/sheet-B6j_BE9O.js.map +1 -0
- package/dist/{sidebar-CmD6a-HK.js → sidebar-C-iQ_TJP.js} +377 -351
- package/dist/sidebar-C-iQ_TJP.js.map +1 -0
- package/dist/sidebar-D5VO2W8S.js +715 -0
- package/dist/sidebar-D5VO2W8S.js.map +1 -0
- package/dist/{skeleton-DDgdhmu9.js → skeleton-Cab_KgVo.js} +12 -12
- package/dist/skeleton-Cab_KgVo.js.map +1 -0
- package/dist/{smart-card-B6vLxqa_.js → smart-card-C59z6KFO.js} +217 -210
- package/dist/smart-card-C59z6KFO.js.map +1 -0
- package/dist/{structure-DZJ2wbAU.js → structure-DElaQwwN.js} +2 -2
- package/dist/{structure-DZJ2wbAU.js.map → structure-DElaQwwN.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-C8mNycaY.js → surface-recipes-DV6rrOFq.js} +10 -2
- package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
- package/dist/{table-CXSPHH25.js → table-CSRUgpdK.js} +62 -61
- package/dist/table-CSRUgpdK.js.map +1 -0
- package/dist/table-DdXDBsR_.js +1657 -0
- package/dist/table-DdXDBsR_.js.map +1 -0
- package/dist/{tabs-C4Kr_hCr.js → tabs-WnHfV2pM.js} +27 -27
- package/dist/tabs-WnHfV2pM.js.map +1 -0
- package/dist/{text-inputs-jdkS3ReG.js → text-inputs-ljyBYaCd.js} +112 -112
- package/dist/text-inputs-ljyBYaCd.js.map +1 -0
- package/dist/theme.css +21 -5
- package/dist/timelines-mOmS9Eh3.js +479 -0
- package/dist/timelines-mOmS9Eh3.js.map +1 -0
- package/dist/tooltip-yjX-Uv-p.js +112 -0
- package/dist/tooltip-yjX-Uv-p.js.map +1 -0
- package/dist/{tree-CeYVzdFE.js → tree-YpkxUG2Z.js} +80 -72
- package/dist/tree-YpkxUG2Z.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-C7-YMW1S.js → typography-C0dELqYV.js} +46 -40
- package/dist/typography-C0dELqYV.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
- package/dist/ui-provider-Bu1S-o96.js.map +1 -0
- package/dist/ui-provider.js +2 -2
- package/dist/{upload-Hdm5gObf.js → upload-DMuMYJFT.js} +276 -268
- package/dist/upload-DMuMYJFT.js.map +1 -0
- package/dist/{usage-card-9s8hLDfn.js → usage-card-DDPki5P1.js} +57 -54
- package/dist/usage-card-DDPki5P1.js.map +1 -0
- package/dist/use-controllable-state-BlP8SyBI.js +13 -0
- package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
- package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
- package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
- package/dist/{utils-DhuoqFy4.js → utils-BVbAG2J6.js} +98 -76
- package/dist/utils-BVbAG2J6.js.map +1 -0
- package/dist/value-inputs-h5MwjGCo.js +982 -0
- package/dist/value-inputs-h5MwjGCo.js.map +1 -0
- package/dist/value-typography-D15uwfj-.js +154 -0
- package/dist/value-typography-D15uwfj-.js.map +1 -0
- package/dist/workspace-DIryPqBt.js +400 -0
- package/dist/workspace-DIryPqBt.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +7 -0
- package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
- package/docs/consumer-skill/examples/analytics.tsx +1 -1
- package/docs/consumer-skill/examples/app-layout.tsx +3 -3
- package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
- package/docs/consumer-skill/examples/detail.tsx +3 -2
- package/docs/consumer-skill/examples/email-composer.tsx +1 -1
- package/docs/consumer-skill/examples/index-table.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
- package/docs/consumer-skill/references/agents-md.md +20 -16
- package/docs/consumer-skill/references/analytics.md +20 -6
- package/docs/consumer-skill/references/building-views.md +213 -0
- package/docs/consumer-skill/references/catalogue.md +617 -0
- package/docs/consumer-skill/references/component-contracts.json +10202 -18084
- package/docs/consumer-skill/references/composition.md +21 -17
- package/docs/consumer-skill/references/discovery.md +8 -5
- package/docs/consumer-skill/references/installation.md +10 -4
- package/docs/consumer-skill/references/integration.md +5 -5
- package/docs/consumer-skill/references/product-composition.md +2 -2
- package/docs/consumer-skill/references/public-api.json +580 -633
- package/docs/consumer-skill/references/review.md +6 -4
- package/docs/consumer-skill/references/screen-archetypes.md +2 -2
- package/docs/consumer-skill/references/theming.md +1 -1
- package/docs/consumer-skill/references/tokens.json +4 -4
- package/docs/consumer-skill/references/workflows.md +7 -7
- package/docs/consumer-skill/scripts/composition-policy.mjs +40 -20
- package/docs/consumer-skill/scripts/composition.mjs +4 -1
- package/docs/consumer-skill/scripts/discovery.mjs +3 -1
- package/docs/consumer-skill/scripts/setup-skills.mjs +31 -4
- package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
- package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
- package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
- package/package.json +9 -12
- package/templates/README.md +3 -2
- package/templates/admin-shell-template.tsx +49 -9
- package/templates/analytics-operations-template.tsx +20 -24
- package/templates/customers-template.tsx +12 -9
- package/templates/index.ts +2 -8
- package/templates/orders-template.tsx +28 -24
- package/templates/products-template.tsx +14 -4
- package/templates/user-permissions-template.tsx +11 -14
- package/dist/accordion-0tQUZ20r.js.map +0 -1
- package/dist/action-menu-C0gjzLyE.js +0 -284
- package/dist/action-menu-C0gjzLyE.js.map +0 -1
- package/dist/ai-artifact-CGGpQryR.js +0 -1200
- package/dist/ai-artifact-CGGpQryR.js.map +0 -1
- package/dist/anchored-positioning-DPnKTvNs.js +0 -6
- package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
- package/dist/app-shell-EHuuRDGy.js +0 -321
- package/dist/app-shell-EHuuRDGy.js.map +0 -1
- package/dist/auth-B0girIk_.js.map +0 -1
- package/dist/badge-wWauMgAt.js.map +0 -1
- package/dist/base/sheet.js +0 -3
- package/dist/breadcrumbs-Bp9Ke7kd.js.map +0 -1
- package/dist/button-ChBovTx0.js.map +0 -1
- package/dist/buttons-DeW0bQeK.js.map +0 -1
- package/dist/cascader-CrAl9zD5.js +0 -439
- package/dist/cascader-CrAl9zD5.js.map +0 -1
- package/dist/choice-inputs-DHGtx0QV.js.map +0 -1
- package/dist/code-block-BSJyq9e-.js.map +0 -1
- package/dist/collapsible-BzJ91LUG.js +0 -81
- package/dist/collapsible-BzJ91LUG.js.map +0 -1
- package/dist/combobox-Bcvu5J8O.js +0 -363
- package/dist/combobox-Bcvu5J8O.js.map +0 -1
- package/dist/combobox-C2JiSQPc.js +0 -915
- package/dist/combobox-C2JiSQPc.js.map +0 -1
- package/dist/command-9e52NPgK.js +0 -425
- package/dist/command-9e52NPgK.js.map +0 -1
- package/dist/comments-BsgErEqd.js +0 -1174
- package/dist/comments-BsgErEqd.js.map +0 -1
- package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
- package/dist/components/base/display/content-block.d.ts +0 -75
- package/dist/components/base/display/content-block.strings.d.ts +0 -5
- package/dist/components/base/sheet/index.d.ts +0 -29
- package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
- package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -10
- package/dist/components/features/resource/resource.strings.d.ts +0 -12
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
- package/dist/components/features/sync/index.d.ts +0 -26
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
- package/dist/components/features/sync/sync.strings.d.ts +0 -18
- package/dist/components/features/sync/sync.types.d.ts +0 -44
- package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
- package/dist/components/ui/slot.d.ts +0 -6
- package/dist/containers-CSdc32h9.js.map +0 -1
- package/dist/data-display-Cmj-xZYl.js.map +0 -1
- package/dist/date-Br0FicVv.js +0 -144
- package/dist/date-Br0FicVv.js.map +0 -1
- package/dist/date-picker-CyQlFYsP.js.map +0 -1
- package/dist/date-pickers-tj2MXmXd.js +0 -185
- package/dist/date-pickers-tj2MXmXd.js.map +0 -1
- package/dist/display-CT_N2a3w.js.map +0 -1
- package/dist/features/sync.js +0 -142
- package/dist/features/sync.js.map +0 -1
- package/dist/feedback-Dzo1xtAU.js +0 -246
- package/dist/feedback-Dzo1xtAU.js.map +0 -1
- package/dist/field-affordance-recipes-D6H7tVJi.js.map +0 -1
- package/dist/field-state-recipes-7sza8QbC.js.map +0 -1
- package/dist/filters-Dl80yYtN.js +0 -2415
- package/dist/filters-Dl80yYtN.js.map +0 -1
- package/dist/focus-recipes-B653VaLq.js.map +0 -1
- package/dist/forms-B3W8CH7-.js.map +0 -1
- package/dist/forms-numeric-CwjQJe-O.js +0 -991
- package/dist/forms-numeric-CwjQJe-O.js.map +0 -1
- package/dist/header-ZIIsRKxP.js.map +0 -1
- package/dist/hooks-BitHSh-Y.js.map +0 -1
- package/dist/http-D_6rOnzU.js.map +0 -1
- package/dist/item-FfWnaYST.js +0 -278
- package/dist/item-FfWnaYST.js.map +0 -1
- package/dist/layout.types-E_GAApzO.js.map +0 -1
- package/dist/media-gallery-C81DAnKI.js +0 -203
- package/dist/media-gallery-C81DAnKI.js.map +0 -1
- package/dist/mentions-qOnedSt4.js +0 -639
- package/dist/mentions-qOnedSt4.js.map +0 -1
- package/dist/metadata-list-XkqZ_UXH.js.map +0 -1
- package/dist/motion-recipes-DitYv6P2.js.map +0 -1
- package/dist/navigation-BgtPJAhi.js +0 -288
- package/dist/navigation-BgtPJAhi.js.map +0 -1
- package/dist/navigation-Bt-v7rWP.js.map +0 -1
- package/dist/number-CYqBcrSj.js +0 -346
- package/dist/number-CYqBcrSj.js.map +0 -1
- package/dist/overlays-CC8zI3Du.js +0 -1017
- package/dist/overlays-CC8zI3Du.js.map +0 -1
- package/dist/page-BoQ1VaFJ.js +0 -331
- package/dist/page-BoQ1VaFJ.js.map +0 -1
- package/dist/pagination-Br8TdV9A.js.map +0 -1
- package/dist/popover-k8TdUcAt.js.map +0 -1
- package/dist/primitives-BkkQjYl7.js +0 -385
- package/dist/primitives-BkkQjYl7.js.map +0 -1
- package/dist/receipt-C7LhOg7Q.js +0 -116
- package/dist/receipt-C7LhOg7Q.js.map +0 -1
- package/dist/rich-text-editor-CAurDwT5.js +0 -1273
- package/dist/rich-text-editor-CAurDwT5.js.map +0 -1
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js +0 -99
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +0 -1
- package/dist/rich-text-tree-BqyQ_7-R.js +0 -66
- package/dist/rich-text-tree-BqyQ_7-R.js.map +0 -1
- package/dist/sanitize-html-BWkH4dLM.js +0 -105
- package/dist/sanitize-html-BWkH4dLM.js.map +0 -1
- package/dist/separator-DM6gs2vu.js.map +0 -1
- package/dist/settings-DZPHgpx4.js +0 -155
- package/dist/settings-DZPHgpx4.js.map +0 -1
- package/dist/sheet-C4DHsgLk.js +0 -250
- package/dist/sheet-C4DHsgLk.js.map +0 -1
- package/dist/sidebar-C8BnDwTH.js +0 -709
- package/dist/sidebar-C8BnDwTH.js.map +0 -1
- package/dist/sidebar-CmD6a-HK.js.map +0 -1
- package/dist/skeleton-DDgdhmu9.js.map +0 -1
- package/dist/slot-CLF9kLrS.js +0 -16
- package/dist/slot-CLF9kLrS.js.map +0 -1
- package/dist/smart-card-B6vLxqa_.js.map +0 -1
- package/dist/surface-recipes-C8mNycaY.js.map +0 -1
- package/dist/table-CBonSdTp.js +0 -1584
- package/dist/table-CBonSdTp.js.map +0 -1
- package/dist/table-CXSPHH25.js.map +0 -1
- package/dist/tabs-C4Kr_hCr.js.map +0 -1
- package/dist/text-inputs-jdkS3ReG.js.map +0 -1
- package/dist/timelines-CoPwdJP0.js +0 -458
- package/dist/timelines-CoPwdJP0.js.map +0 -1
- package/dist/tooltip-31NwIpTo.js +0 -113
- package/dist/tooltip-31NwIpTo.js.map +0 -1
- package/dist/tree-CeYVzdFE.js.map +0 -1
- package/dist/typography-C7-YMW1S.js.map +0 -1
- package/dist/ui-provider-C-74NVLc.js.map +0 -1
- package/dist/upload-Hdm5gObf.js.map +0 -1
- package/dist/upload-queue-D0sYPuqo.js +0 -409
- package/dist/upload-queue-D0sYPuqo.js.map +0 -1
- package/dist/usage-card-9s8hLDfn.js.map +0 -1
- package/dist/utils-DhuoqFy4.js.map +0 -1
- package/dist/value-inputs-D3aPgq9H.js +0 -980
- package/dist/value-inputs-D3aPgq9H.js.map +0 -1
- package/dist/value-typography-uSzzG9Gf.js +0 -122
- package/dist/value-typography-uSzzG9Gf.js.map +0 -1
- package/dist/workspace-CC8Vchiu.js +0 -411
- package/dist/workspace-CC8Vchiu.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-queue.js","names":["_Fragment","Text","Button","Stack","SecondaryValue","FileSize","Badge","Dropzone","AttachmentFileIcon","AttachmentTitle","AttachmentDescription","AttachmentActions","AttachmentMedia","AttachmentContent","AttachmentProgress","Attachment","Fragment$1","defaultUploadProgressListStrings","STATUS_TONE","Clock","UploadCloud","Check","AlertCircle","X","UploadProgressList","stringsProp","strings","useStrings","statusLabel","items","mediaVariant","item","cn","className","tone","Icon","pct","showProgress","onPreview","Eye","onDownload","Download","onCancel","onRetry","RefreshCw","onRemove","defaultUploadTrayStrings","countStatus","completed","failed","uploading","queued","UploadTray","forwardRef","handleDrop","useCallback","files","onAddFiles","hasItems","dropzone","onClearAll","listStrings"],"sources":["../../src/components/base/upload-queue/upload-progress-list.tsx","../../src/components/base/upload-queue/upload-tray.tsx"],"sourcesContent":["/**\n * UploadProgressList — render-only list of in-flight uploads. Each row shows\n * a status icon (queued / uploading / done / error / cancelled), filename,\n * size, a progress bar driven by `progress` (0–100), and an action button\n * that maps to the row's status (cancel while uploading, retry on error,\n * remove when done). Pair with FileUpload / MediaGallery / Dropzone — those\n * components emit raw `File` instances; this one displays the upload UI\n * once the consumer has wired them to its API.\n *\n * Strings overridable for i18n.\n */\nimport { AlertCircle, Check, Clock, RefreshCw, UploadCloud, X, Eye, Download } from 'lucide-react';\nimport { Button } from '../buttons';\nimport { Stack } from '../structure';\nimport { SecondaryValue } from '../../primitives';\nimport { Attachment, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentProgress, AttachmentFileIcon, type AttachmentKind } from '../attachment';\nimport { FileSize } from '../../primitives';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nexport type UploadStatus = 'queued' | 'uploading' | 'done' | 'error' | 'cancelled';\n\nexport interface UploadItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Displayed file name. */\n\tname: string;\n\t/** Pre-formatted size string (e.g. \"2.4 MB\"). */\n\tsize?: string;\n\t/** Numeric file size used when the formatted size is absent. */\n\tbytes?: number;\n\tkind?: AttachmentKind;\n\t/** Upload progress 0–100. Omit for an indeterminate transfer. Ignored when status is `done`/`error`/`cancelled`. */\n\tprogress?: number;\n\tstatus: UploadStatus;\n\t/** Error message rendered under the row when status is `error`. */\n\terror?: string;\n\t/**\n\t * Optional thumbnail URL, shown in place of the status icon.\n\t * The status remains visible beside the file name.\n\t */\n\tpreview?: string;\n}\n\nexport interface UploadProgressListStrings {\n\tqueued: string;\n\tuploading: string;\n\tdone: string;\n\terror: string;\n\tcancelled: string;\n\tcancel: string;\n\tretry: string;\n\tremove: string;\n\tpreview?: string;\n\tdownload?: string;\n}\n\nexport const defaultUploadProgressListStrings: UploadProgressListStrings = {\n\tqueued: 'Queued',\n\tuploading: 'Uploading',\n\tdone: 'Uploaded',\n\terror: 'Failed',\n\tcancelled: 'Cancelled',\n\tcancel: 'Cancel',\n\tretry: 'Retry',\n\tremove: 'Remove',\n\tpreview: 'Preview',\n\tdownload: 'Download',\n};\n\nexport interface UploadProgressListProps {\n\t/** Entries to render, in order. */\n\titems: UploadItem[];\n\t/** File preview action; consumers own the effect. */\n\tonPreview?: (id: string) => void;\n\t/** Download action for completed files. Receives the stable item identity. */\n\tonDownload?: (id: string) => void;\n\tonCancel?: (id: string) => void;\n\tonRetry?: (id: string) => void;\n\tonRemove?: (id: string) => void;\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<UploadProgressListStrings>;\n}\n\n// Colour is reserved for the state that needs attention. A finished upload shows\n// its neutral file-type icon, like a selected FileUpload row.\nconst STATUS_TONE: Record<UploadStatus, { icon: typeof Check; fg: string }> = {\n\tqueued: { icon: Clock, fg: 'text-muted-foreground' },\n\tuploading: { icon: UploadCloud, fg: 'text-primary-accent' },\n\tdone: { icon: Check, fg: 'text-muted-foreground' },\n\terror: { icon: AlertCircle, fg: 'text-destructive' },\n\tcancelled: { icon: X, fg: 'text-muted-foreground' },\n};\n\nexport function UploadProgressList({\n\titems,\n\tonPreview,\n\tonDownload,\n\tonCancel,\n\tonRetry,\n\tonRemove,\n\tclassName,\n\tstrings: stringsProp,\n}: UploadProgressListProps) {\n\tconst strings = useStrings(defaultUploadProgressListStrings, stringsProp);\n\tconst statusLabel: Record<UploadStatus, string> = {\n\t\tqueued: strings.queued,\n\t\tuploading: strings.uploading,\n\t\tdone: strings.done,\n\t\terror: strings.error,\n\t\tcancelled: strings.cancelled,\n\t};\n\n\tif (items.length === 0) return null;\n\t// One media column per list: once any row shows a thumbnail, icon rows take the\n\t// same thumbnail-sized box, so every file name starts on one edge.\n\tconst mediaVariant = items.some((item) => item.preview) ? 'image' : 'icon';\n\n\treturn (\n\t\t<Stack render={<ul />} gap=\"sm\" className={cn('upload-progress-list--component m-0 p-0 list-none', className)}>\n\t\t\t{items.map((item) => {\n\t\t\t\tconst tone = STATUS_TONE[item.status];\n\t\t\t\tconst Icon = tone.icon;\n\t\t\t\tconst pct = item.progress === undefined ? null : Number.isFinite(item.progress) ? Math.max(0, Math.min(100, item.progress ?? 0)) : 0;\n\t\t\t\tconst showProgress = item.status === 'uploading' || item.status === 'queued';\n\t\t\t\treturn (\n\t\t\t\t\t<Attachment key={item.id} render={<li />} variant=\"outline\" className=\"upload-progress-list--item flex-nowrap bg-card text-card-foreground\">\n\t\t\t\t\t\t<AttachmentMedia variant={mediaVariant} className={cn('upload-progress-list--media self-center group-has-data-[slot=item-description]/item:self-center', tone.fg)}>\n\t\t\t\t\t\t\t{item.preview ? <img src={item.preview} alt=\"\" /> : item.status === 'done' ? <AttachmentFileIcon name={item.name} kind={item.kind} /> : <Icon aria-hidden=\"true\" className={cn('size-icon', item.status === 'uploading' && 'animate-pulse motion-reduce:animate-none')} />}\n\t\t\t\t\t\t</AttachmentMedia>\n\t\t\t\t\t\t{/* Same anatomy as Attachment: name, size line, status line, one gap. */}\n\t\t\t\t\t\t<AttachmentContent className=\"min-w-0 gap-space-xs\">\n\t\t\t\t\t\t\t<AttachmentTitle className=\"min-w-0 max-w-full\" title={item.name}><Text tag=\"span\" type=\"inherit\" weight=\"medium\" className=\"truncate\">{item.name}</Text></AttachmentTitle>\n\t\t\t\t\t\t\t{(item.size !== undefined || item.bytes !== undefined) && (\n\t\t\t\t\t\t\t\t<AttachmentDescription clamp={1}>\n\t\t\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"tabular-nums\">{item.size ?? <FileSize value={item.bytes} size=\"xs\" type=\"secondary\" />}</SecondaryValue>\n\t\t\t\t\t\t\t\t</AttachmentDescription>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<AttachmentDescription clamp=\"none\"><Text tag=\"span\" size=\"xs\" type={item.status === 'error' ? 'error' : 'secondary'} role={item.status === 'error' ? 'alert' : undefined}>{`${statusLabel[item.status]}${item.status === 'error' && item.error ? ` — ${item.error}` : ''}`}</Text></AttachmentDescription>\n\t\t\t\t\t\t\t{showProgress && <AttachmentProgress value={item.status === 'queued' && pct === null ? 0 : pct} aria-label={item.name} size=\"sm\" tone={item.status === 'queued' ? 'neutral' : 'primary'} className=\"upload-progress-list--progress\" />}\n\t\t\t\t\t\t</AttachmentContent>\n\t\t\t\t\t\t<AttachmentActions className=\"shrink-0\">\n {!!onPreview && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" iconOnly aria-label={`${strings.preview ?? 'Preview'} ${item.name}`} onClick={() => onPreview(item.id)}><Eye aria-hidden=\"true\" className=\"size-icon-md\" /></Button>}\n {!!onDownload && item.status === 'done' && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" iconOnly aria-label={`${strings.download ?? 'Download'} ${item.name}`} onClick={() => onDownload(item.id)}><Download aria-hidden=\"true\" className=\"size-icon-md\" /></Button>}\n\n\t\t\t\t\t\t\t\t{(item.status === 'uploading' || item.status === 'queued') && !!onCancel && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\t\t\taria-label={`${strings.cancel} ${item.name}`}\n\t\t\t\t\t\t\t\t\t\tonClick={() => onCancel(item.id)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<X className=\"size-icon-md\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{item.status === 'error' && !!onRetry && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\t\t\taria-label={`${strings.retry} ${item.name}`}\n\t\t\t\t\t\t\t\t\t\tonClick={() => onRetry(item.id)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<RefreshCw className=\"size-icon-md\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{(item.status === 'done' || item.status === 'error' || item.status === 'cancelled' || (item.status === 'queued' && !onCancel)) && !!onRemove && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\t\t\taria-label={`${strings.remove} ${item.name}`}\n\t\t\t\t\t\t\t\t\t\tonClick={() => onRemove(item.id)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<X className=\"size-icon-md\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AttachmentActions>\n\t\t\t\t\t</Attachment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Stack>\n\t);\n}\n\nUploadProgressList.displayName = 'UploadProgressList';\n","/**\n * UploadTray — the canonical \"drag-and-drop area + per-file progress\n * rows + summary toolbar\" surface. Composes:\n *\n * - `Dropzone` — drag/drop chrome + click-to-browse\n * - `UploadProgressList` — per-file row with status icon + progress\n * bar + cancel/retry/remove actions\n * - `Badge` — status counters in the toolbar\n * - `Button` — \"Clear all\" action\n *\n * Framework-agnostic. Every action is callback-driven — the library\n * doesn't perform the upload; it surfaces the UX. The consumer wires\n * the actual transfer (XHR, fetch, S3 multipart, …) and feeds back\n * `progress` / `status` updates by mutating the `items` array.\n *\n * Pair with `useFiles` (the existing client-side validation hook) at\n * the call site if you want pre-flight size/type rejection.\n */\nimport { forwardRef, useCallback } from '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';\n\nimport { Dropzone, type DropzoneProps } from '../upload/dropzone';\nimport { UploadProgressList, type UploadItem, type UploadProgressListStrings } from './upload-progress-list';\n\nexport interface UploadTrayStrings {\n\theading: string;\n\tcompletedLabel: string;\n\tfailedLabel: string;\n\tuploadingLabel: string;\n\tqueuedLabel: string;\n\tclearAll: string;\n}\n\nexport const defaultUploadTrayStrings: UploadTrayStrings = {\n\theading: 'Upload progress',\n\tcompletedLabel: 'Completed',\n\tfailedLabel: 'Failed',\n\tuploadingLabel: 'Uploading',\n\tqueuedLabel: 'Queued',\n\tclearAll: 'Clear all',\n};\n\nexport interface UploadTrayProps {\n\t/** Files currently in the tray (queued / uploading / done / error / cancelled). */\n\titems: UploadItem[];\n\t/**\n\t * Fires when the user drops or browses files. The library does NOT\n\t * write to the items array — the consumer turns these into queued\n\t * `UploadItem`s, kicks off the actual transfer, and updates progress.\n\t */\n\tonAddFiles: (files: File[]) => void;\n\t/** Preview callback forwarded with the item identity. */\n\tonPreview?: (id: string) => void;\n\t/** Download callback for completed files, forwarded with the item identity. */\n\tonDownload?: (id: string) => void;\n\t/** Per-row cancel handler (passed through to UploadProgressList). */\n\tonCancel?: (id: string) => void;\n\t/** Per-row retry handler. */\n\tonRetry?: (id: string) => void;\n\t/** Per-row remove handler. */\n\tonRemove?: (id: string) => void;\n\t/**\n\t * Clears the entire tray. When omitted, the \"Clear all\" button is\n\t * hidden — useful for surfaces where in-flight uploads can't be\n\t * cancelled in bulk.\n\t */\n\tonClearAll?: () => void;\n\t/** Forwarded to the inner `<Dropzone>`. Only the meaningful subset. */\n\tdropzone?: Pick<DropzoneProps, 'accept' | 'multiple' | 'size' | 'disabled' | 'invalid' | 'strings'>;\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<UploadTrayStrings>;\n\t/** Strings forwarded to the inner `<UploadProgressList>`. */\n\tlistStrings?: StringsProp<UploadProgressListStrings>;\n}\n\nfunction countStatus(items: UploadItem[]) {\n\tlet completed = 0;\n\tlet failed = 0;\n\tlet uploading = 0;\n\tlet queued = 0;\n\tfor (const item of items) {\n\t\tif (item.status === 'done') completed += 1;\n\t\telse if (item.status === 'error') failed += 1;\n\t\telse if (item.status === 'uploading') uploading += 1;\n\t\telse if (item.status === 'queued') queued += 1;\n\t}\n\treturn { completed, failed, uploading, queued };\n}\n\nexport const UploadTray = forwardRef<HTMLDivElement, UploadTrayProps>(function UploadTray(\n\t{\n\t\titems,\n\t\tonAddFiles,\n\t\tonPreview,\n\t\tonDownload,\n\t\tonCancel,\n\t\tonRetry,\n\t\tonRemove,\n\t\tonClearAll,\n\t\tdropzone,\n\t\tclassName,\n\t\tstrings: stringsProp,\n\t\tlistStrings,\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultUploadTrayStrings, stringsProp);\n\tconst { completed, failed, uploading, queued } = countStatus(items);\n\n\tconst handleDrop = useCallback(\n\t\t(files: File[]) => {\n\t\t\tif (files.length > 0) onAddFiles(files);\n\t\t},\n\t\t[onAddFiles],\n\t);\n\n\tconst hasItems = items.length > 0;\n\n\treturn (\n\t\t<Stack ref={ref} gap=\"md\" className={cn('upload-tray--component', className)}>\n\t\t\t<Dropzone\n\t\t\t\tonDrop={handleDrop}\n\t\t\t\taccept={dropzone?.accept}\n\t\t\t\tmultiple={dropzone?.multiple}\n\t\t\t\tsize={dropzone?.size}\n\t\t\t\tdisabled={dropzone?.disabled}\n\t\t\t\tinvalid={dropzone?.invalid}\n\t\t\t\tstrings={dropzone?.strings}\n\t\t\t/>\n\n\t\t\t{!!hasItems && (\n\t\t\t\t<>\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" justify=\"between\" gap=\"md\">\n\t\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\">\n\t\t\t\t\t\t\t<Text tag=\"span\" type=\"inherit\" weight=\"semibold\">\n\t\t\t\t\t\t\t\t{strings.heading}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{completed > 0 && (\n\t\t\t\t\t\t\t\t<Badge tone=\"success\">\n\t\t\t\t\t\t\t\t\t{strings.completedLabel}: {completed}\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\t{failed > 0 && (\n\t\t\t\t\t\t\t\t<Badge tone=\"destructive\">\n\t\t\t\t\t\t\t\t\t{strings.failedLabel}: {failed}\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\t{uploading > 0 && (\n\t\t\t\t\t\t\t\t<Badge tone=\"info\">\n\t\t\t\t\t\t\t\t\t{strings.uploadingLabel}: {uploading}\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\t{queued > 0 && (\n\t\t\t\t\t\t\t\t<Badge tone=\"secondary\">\n\t\t\t\t\t\t\t\t\t{strings.queuedLabel}: {queued}\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</Stack>\n\t\t\t\t\t\t{!!onClearAll && (\n\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" onClick={onClearAll}>\n\t\t\t\t\t\t\t\t{strings.clearAll}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<UploadProgressList\n\t\t\t\t\t\titems={items}\n\t\t\t\t\t\tonPreview={onPreview}\n\t\t\t\t\t\tonDownload={onDownload}\n\t\t\t\t\t\tonCancel={onCancel}\n\t\t\t\t\t\tonRetry={onRetry}\n\t\t\t\t\t\tonRemove={onRemove}\n\t\t\t\t\t\tstrings={listStrings}\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nUploadTray.displayName = 'UploadTray';\n"],"mappings":"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"}
|
package/dist/base/upload.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as e, t } from "../
|
|
3
|
-
import { a as n,
|
|
4
|
-
|
|
5
|
-
export { p as AvatarUpload, n as Dropzone, c as FileUpload, f as ImageUpload, t as MediaGallery, o as UploadProgressList, s as UploadTray, u as defaultAvatarUploadStrings, a as defaultDropzoneStrings, d as defaultFileUploadStrings, l as defaultImageUploadStrings, e as defaultMediaGalleryStrings, r as defaultUploadProgressListStrings, i as defaultUploadTrayStrings };
|
|
2
|
+
import { n as e, t } from "../dropzone-CHBNK3de.js";
|
|
3
|
+
import { a as n, c as r, i, n as a, o, r as s, s as c, t as l } from "../upload-DMuMYJFT.js";
|
|
4
|
+
export { l as AvatarUpload, t as Dropzone, n as FileUpload, s as ImageUpload, a as defaultAvatarUploadStrings, e as defaultDropzoneStrings, r as defaultFileUploadStrings, i as defaultImageUploadStrings, o as matchesFileAccept, c as validateFiles };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as e, c as t, d as n, i as r, l as i, n as a, o, r as s, s as c, t as l, u } from "../value-inputs-
|
|
2
|
+
import { a as e, c as t, d as n, i as r, l as i, n as a, o, r as s, s as c, t as l, u } from "../value-inputs-h5MwjGCo.js";
|
|
3
3
|
export { o as COUNTRY_PREFIX_MAP, r as ColorInput, c as DEFAULT_COUNTRY_PREFIXES, l as DateTimeInput, t as PhoneInput, a as SliderField, u as TagsInput, e as defaultColorInputStrings, i as defaultPhoneInputStrings, s as defaultSliderStrings, n as defaultTagsInputStrings };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-
|
|
4
|
-
import { n } from "./
|
|
5
|
-
import {
|
|
6
|
-
import { t as i } from "./motion-recipes-
|
|
7
|
-
import { a,
|
|
3
|
+
import { t } from "./utils-BVbAG2J6.js";
|
|
4
|
+
import { c as n } from "./typography-C0dELqYV.js";
|
|
5
|
+
import { n as r } from "./buttons-pZVgPTZn.js";
|
|
6
|
+
import { t as i } from "./motion-recipes-CUc_aHuG.js";
|
|
7
|
+
import { a, s as o, t as s } from "./surface-recipes-DV6rrOFq.js";
|
|
8
8
|
import { t as c } from "./layer-recipes-CCpklYME.js";
|
|
9
9
|
import { useCallback as l, useEffect as u, useRef as d, useState as f } from "react";
|
|
10
10
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
@@ -13,9 +13,9 @@ var h = {
|
|
|
13
13
|
summary: (e, t) => t === void 0 ? `${e} selected` : `${e} of ${t} selected`,
|
|
14
14
|
clear: "Clear",
|
|
15
15
|
label: "Batch actions"
|
|
16
|
-
}, g = `batch-action-bar--component box-border flex min-w-0 flex-wrap items-center justify-between gap-space-md rounded-surface p-surface-xs ${
|
|
16
|
+
}, g = `batch-action-bar--component box-border flex min-w-0 flex-wrap items-center justify-between gap-space-md rounded-surface p-surface-xs ${o.anchored.shell}`, _ = {
|
|
17
17
|
floating: t("fixed bottom-[calc(1rem*var(--space-scale)+env(safe-area-inset-bottom,0px))] left-1/2 w-max max-w-[calc(100%-2rem*var(--space-scale))] -translate-x-1/2", "bg-popover text-popover-foreground", s.lifted, c.chrome, i.dock),
|
|
18
|
-
inline: t("w-full text-foreground",
|
|
18
|
+
inline: t("w-full text-foreground", a.band)
|
|
19
19
|
};
|
|
20
20
|
function v(e) {
|
|
21
21
|
return !!e && e.isConnected;
|
|
@@ -79,7 +79,7 @@ function b({ selectedCount: i, totalCount: a, onClear: o, placement: s = "floati
|
|
|
79
79
|
className: "batch-action-bar--summary min-w-0 px-control",
|
|
80
80
|
"aria-live": "polite",
|
|
81
81
|
"aria-atomic": "true",
|
|
82
|
-
children: T && /* @__PURE__ */ p(
|
|
82
|
+
children: T && /* @__PURE__ */ p(n, {
|
|
83
83
|
tag: "span",
|
|
84
84
|
type: "inherit",
|
|
85
85
|
className: "tabular-nums",
|
|
@@ -88,7 +88,7 @@ function b({ selectedCount: i, totalCount: a, onClear: o, placement: s = "floati
|
|
|
88
88
|
}), (P || !!o) && /* @__PURE__ */ m("div", {
|
|
89
89
|
"data-slot": "batch-action-bar-actions",
|
|
90
90
|
className: "batch-action-bar--actions flex min-w-0 shrink flex-wrap items-center gap-space-xs before:my-space-xs before:w-px before:self-stretch before:bg-border/60 max-sm:before:hidden",
|
|
91
|
-
children: [x, !!o && /* @__PURE__ */ p(
|
|
91
|
+
children: [x, !!o && /* @__PURE__ */ p(r, {
|
|
92
92
|
type: "button",
|
|
93
93
|
tone: "neutral",
|
|
94
94
|
buttonStyle: "ghost",
|
|
@@ -102,4 +102,4 @@ b.displayName = "BatchActionBar";
|
|
|
102
102
|
//#endregion
|
|
103
103
|
export { h as n, b as t };
|
|
104
104
|
|
|
105
|
-
//# sourceMappingURL=batch-action-bar-
|
|
105
|
+
//# sourceMappingURL=batch-action-bar-D6MZQNnC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-action-bar-BoqWIIpV.js","names":["Text","motionRecipes","neutralFillRecipes","elevationRecipes","layerRecipes","defaultBatchActionBarStrings","total","selected","barRecipe","surfaceDividerRecipes","placementRecipes","cn","isConnectedElement","node","isWithinBar","bar","BatchActionBar","stringsProp","strings","useStrings","visible","selectedCount","countReady","setCountReady","useState","barRef","useRef","focusInsideRef","focusOriginRef","handleFocusIn","inside","event","from","handlePointerDown","restoreFocus","useCallback","origin","owner","returnFocusRef","candidates","candidate","handBackFocus","active","handBackFocusRef","useEffect","handleKeyDown","onClear","hasActions","children","placement","className","totalCount","Button"],"sources":["../src/components/base/batch-action-bar/batch-action-bar.strings.ts","../src/components/base/batch-action-bar/batch-action-bar.tsx"],"sourcesContent":["/**\n * Default user-facing strings for `<BatchActionBar>`.\n *\n * Consumers wire their own i18n at the call site:\n *\n * <BatchActionBar strings={{ summary: (n, total) => t('selection.summary', { n, total }) }} … />\n */\n\nexport interface BatchActionBarStrings {\n\t/**\n\t * The selection summary (\"3 selected\", \"3 of 250 selected\"). A function,\n\t * because the sentence shape varies by language; `total` is `undefined`\n\t * when the caller does not know or bound the total.\n\t */\n\tsummary: (selected: number, total?: number) => string;\n\t/** The control that drops the selection. */\n\tclear: string;\n\t/** The accessible name of the bar's region. */\n\tlabel: string;\n}\n\nexport const defaultBatchActionBarStrings: BatchActionBarStrings = {\n\tsummary: (selected, total) =>\n\t\ttotal === undefined ? `${selected} selected` : `${selected} of ${total} selected`,\n\tclear: 'Clear',\n\tlabel: 'Batch actions',\n};\n","/**\n * BatchActionBar — the bar shown once a selection exists: the count, the bulk\n * actions, and a way out.\n *\n * Several features share it (DataTable, MediaLibrary, product variants), so it\n * lives in base. `floating` docks to the bottom centre of the viewport, so the\n * selection stays reachable after scrolling a long list; `inline` stays in flow\n * inside a panel that scrolls its own body, where a dock would cover the rows.\n *\n * Callers can mount it unconditionally: at a count of zero it renders nothing.\n * The count is a polite live region, so changes are announced. Escape inside\n * the bar clears, and when the bar goes away with focus inside it (Clear, or an\n * action that drops the selection), focus returns to `returnFocusRef` or to the\n * control focus came from rather than falling to the document body.\n */\nimport { useCallback, useEffect, useRef, useState, type KeyboardEvent, type ReactNode, type RefObject } from 'react';\n\nimport { Button } from '../buttons';\nimport { Text } from '../../typography';\nimport { layerRecipes } from '../../../lib/layer-recipes';\nimport { motionRecipes } from '../../../lib/motion-recipes';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { elevationRecipes, neutralFillRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultBatchActionBarStrings, type BatchActionBarStrings } from './batch-action-bar.strings';\n\nexport type BatchActionBarPlacement = 'floating' | 'inline';\n\nexport interface BatchActionBarProps {\n\t/** How many items are selected. At zero or below no bar renders, so a caller can mount it unconditionally. */\n\tselectedCount: number;\n\t/** Denominator for the summary. Omit when the total is unknown or unbounded. */\n\ttotalCount?: number;\n\t/** Drops the selection. Omit to render no Clear control or Escape shortcut; a selection the user cannot drop needs a reason. */\n\tonClear?: () => void;\n\t/**\n\t * `floating` (default) docks to the bottom centre of the viewport, or of the\n\t * nearest transformed ancestor; `inline` sits in flow at full width.\n\t */\n\tplacement?: BatchActionBarPlacement;\n\t/**\n\t * Where focus goes when the bar disappears while focus is inside it: the list\n\t * it acts on, or that list's select-all control. When focus entered the bar\n\t * from a control inside this element that is still there, it returns to that\n\t * control instead. Without it, or when it cannot take focus, focus returns to\n\t * the control it entered the bar from, if that is still in the document.\n\t */\n\treturnFocusRef?: RefObject<HTMLElement | null>;\n\t/** Overrides this bar's own copy: `summary(selected, total)`, `clear`, and the region's accessible `label`. */\n\tstrings?: StringsProp<BatchActionBarStrings>;\n\t/** The bulk actions: buttons, a menu, whatever the surface needs. Clear follows them. */\n\tchildren?: ReactNode;\n\t/** Merged onto the bar. */\n\tclassName?: string;\n}\n\n// Both placements share one geometry: the compact anchored-surface inset and\n// shell radius, so the bar's buttons sit in the same frame as a menu's rows.\nconst barRecipe = `batch-action-bar--component box-border flex min-w-0 flex-wrap items-center justify-between gap-space-md rounded-surface p-surface-xs ${surfaceDividerRecipes.anchored.shell}`;\n\nconst placementRecipes: Record<BatchActionBarPlacement, string> = {\n\t// Above sticky headers and toolbars, below the menus and dialogs its own\n\t// actions open. Opaque and lifted, so it never reads as part of the list\n\t// scrolling underneath. 100% rather than 100vw, so a dock inside a\n\t// transformed ancestor does not overhang it.\n\tfloating: cn(\n\t\t// Root knobs, not the --spacing-* aliases: those resolve once at :root, so a\n\t\t// scoped space-scale would never reach the dock offset.\n\t\t'fixed bottom-[calc(1rem*var(--space-scale)+env(safe-area-inset-bottom,0px))] left-1/2 w-max max-w-[calc(100%-2rem*var(--space-scale))] -translate-x-1/2',\n\t\t'bg-popover text-popover-foreground',\n\t\televationRecipes.lifted,\n\t\tlayerRecipes.chrome,\n\t\tmotionRecipes.dock,\n\t),\n\tinline: cn('w-full text-foreground', neutralFillRecipes.band),\n};\n\nfunction isConnectedElement(node: HTMLElement | null | undefined): node is HTMLElement {\n\treturn !!node && node.isConnected;\n}\n\n/**\n * Inside the bar, or inside a popup one of its actions has open: a menu is\n * portaled out of the bar's DOM but unmounts with it, so focus there is lost\n * with the bar just the same.\n */\nfunction isWithinBar(bar: HTMLElement | null, node: EventTarget | null): boolean {\n\tif (!bar || !(node instanceof Node)) return false;\n\treturn bar.contains(node) || bar.querySelector('[aria-expanded=\"true\"]') !== null;\n}\n\nexport function BatchActionBar({\n\tselectedCount,\n\ttotalCount,\n\tonClear,\n\tplacement = 'floating',\n\treturnFocusRef,\n\tstrings: stringsProp,\n\tchildren,\n\tclassName,\n}: BatchActionBarProps) {\n\tconst strings = useStrings(defaultBatchActionBarStrings, stringsProp);\n\tconst visible = selectedCount > 0;\n\n\t// The count is a polite live region. It mounts empty and fills once the bar\n\t// is in the document: a live region inserted together with its text is often\n\t// not read, and a second, hidden copy of the count would be read twice.\n\tconst [countReady, setCountReady] = useState(false);\n\tuseEffect(() => {\n\t\tsetCountReady(visible);\n\t}, [visible]);\n\n\tconst barRef = useRef<HTMLDivElement>(null);\n\t// Whether focus was last known to be inside the bar, and the control it came from.\n\tconst focusInsideRef = useRef(false);\n\tconst focusOriginRef = useRef<HTMLElement | null>(null);\n\n\t// Track focus through document listeners rather than blur: browsers differ\n\t// on whether removing a focused node fires blur, and the bar's own removal\n\t// is exactly the moment that matters.\n\tuseEffect(() => {\n\t\tif (!visible || typeof document === 'undefined') return;\n\t\tconst handleFocusIn = (event: FocusEvent) => {\n\t\t\tconst bar = barRef.current;\n\t\t\tconst inside = isWithinBar(bar, event.target);\n\t\t\tif (inside && !focusInsideRef.current) {\n\t\t\t\tconst from = event.relatedTarget;\n\t\t\t\tfocusOriginRef.current = from instanceof HTMLElement && !isWithinBar(bar, from) ? from : null;\n\t\t\t}\n\t\t\tfocusInsideRef.current = inside;\n\t\t};\n\t\t// Pressing somewhere else moves on, even when nothing there takes focus.\n\t\tconst handlePointerDown = (event: PointerEvent) => {\n\t\t\tif (!isWithinBar(barRef.current, event.target)) focusInsideRef.current = false;\n\t\t};\n\t\tdocument.addEventListener('focusin', handleFocusIn);\n\t\tdocument.addEventListener('pointerdown', handlePointerDown, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('focusin', handleFocusIn);\n\t\t\tdocument.removeEventListener('pointerdown', handlePointerDown, true);\n\t\t};\n\t}, [visible]);\n\n\tconst restoreFocus = useCallback(() => {\n\t\tconst origin = isConnectedElement(focusOriginRef.current) ? focusOriginRef.current : null;\n\t\tconst owner = isConnectedElement(returnFocusRef?.current) ? returnFocusRef.current : null;\n\t\tfocusOriginRef.current = null;\n\t\t// Entered from inside the owner, and that control is still there: the\n\t\t// user keeps their place in the list. Otherwise the owner, then the origin.\n\t\t// Going back to the origin restores where focus was, so it never scrolls\n\t\t// the page to it.\n\t\tconst candidates = owner && origin && owner.contains(origin) ? [origin, owner] : [owner, origin];\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!candidate) continue;\n\t\t\tcandidate.focus(candidate === origin ? { preventScroll: true } : undefined);\n\t\t\tif (document.activeElement === candidate) return;\n\t\t}\n\t}, [returnFocusRef]);\n\n\t// The bar went away with focus inside it: hand focus back instead of\n\t// dropping it on the body. An action that already moved focus on (a\n\t// dialog, the next field) keeps it.\n\tconst handBackFocus = useCallback(() => {\n\t\tif (!focusInsideRef.current) return;\n\t\tfocusInsideRef.current = false;\n\t\tconst active = document.activeElement;\n\t\tconst lost = !active || active === document.body || !active.isConnected;\n\t\tif (lost) restoreFocus();\n\t}, [restoreFocus]);\n\tuseEffect(() => {\n\t\tif (!visible) handBackFocus();\n\t}, [visible, handBackFocus]);\n\t// The same when a caller unmounts the bar together with the selection.\n\tconst handBackFocusRef = useRef(handBackFocus);\n\thandBackFocusRef.current = handBackFocus;\n\tuseEffect(() => () => handBackFocusRef.current(), []);\n\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== 'Escape' || !onClear || event.defaultPrevented) return;\n\t\t// React bubbles events out of portals; a menu opened from an action owns\n\t\t// its own Escape, so only keys pressed in the bar's DOM clear.\n\t\tif (!(event.target instanceof Node) || !event.currentTarget.contains(event.target)) return;\n\t\tevent.preventDefault();\n\t\t// One Escape, one layer: the dialog or drawer around the bar stays open.\n\t\tevent.stopPropagation();\n\t\tonClear();\n\t};\n\n\t// Nothing selected, nothing rendered.\n\tif (!visible) return null;\n\n\tconst hasActions = children !== undefined && children !== null && children !== false;\n\n\treturn (\n\t\t<div\n\t\t\tref={barRef}\n\t\t\t// A named region, so screen reader users can find the bar again after the list.\n\t\t\trole=\"region\"\n\t\t\taria-label={strings.label}\n\t\t\tdata-slot=\"batch-action-bar\"\n\t\t\tdata-placement={placement}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tclassName={cn(barRecipe, placementRecipes[placement], className)}\n\t\t>\n\t\t\t{/*\n\t\t\t * Not `role=\"status\"`, which would collide with the page's own status\n\t\t\t * line. The control inset lines the count up with the buttons' labels,\n\t\t\t * also when the actions wrap below it. Tabular figures, so a changing\n\t\t\t * count does not shift a centred dock.\n\t\t\t */}\n\t\t\t<div\n\t\t\t\tdata-slot=\"batch-action-bar-summary\"\n\t\t\t\tclassName=\"batch-action-bar--summary min-w-0 px-control\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t\taria-atomic=\"true\"\n\t\t\t>\n\t\t\t\t{countReady && (\n\t\t\t\t\t<Text tag=\"span\" type=\"inherit\" className=\"tabular-nums\">\n\t\t\t\t\t\t{strings.summary(selectedCount, totalCount)}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{(hasActions || !!onClear) && (\n\t\t\t\t<div\n\t\t\t\t\tdata-slot=\"batch-action-bar-actions\"\n\t\t\t\t\t// A rule between the count and the verbs, so the count does not read\n\t\t\t\t\t// as another button. Wrapped below the count on narrow screens, where\n\t\t\t\t\t// the rule would lead the row, it hides.\n\t\t\t\t\tclassName=\"batch-action-bar--actions flex min-w-0 shrink flex-wrap items-center gap-space-xs before:my-space-xs before:w-px before:self-stretch before:bg-border/60 max-sm:before:hidden\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t\t{!!onClear && (\n\t\t\t\t\t\t<Button type=\"button\" tone=\"neutral\" buttonStyle=\"ghost\" onClick={onClear}>\n\t\t\t\t\t\t\t{strings.clear}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nBatchActionBar.displayName = 'BatchActionBar';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch-action-bar-D6MZQNnC.js","names":["Text","Button","motionRecipes","surfaceDividerRecipes","elevationRecipes","layerRecipes","defaultBatchActionBarStrings","total","selected","barRecipe","placementRecipes","cn","neutralFillRecipes","isConnectedElement","node","isWithinBar","bar","BatchActionBar","stringsProp","strings","useStrings","visible","selectedCount","countReady","setCountReady","useState","barRef","useRef","focusInsideRef","focusOriginRef","handleFocusIn","inside","event","from","handlePointerDown","restoreFocus","useCallback","origin","owner","returnFocusRef","candidates","candidate","handBackFocus","active","handBackFocusRef","useEffect","handleKeyDown","onClear","hasActions","children","placement","className","totalCount"],"sources":["../src/components/base/batch-action-bar/batch-action-bar.strings.ts","../src/components/base/batch-action-bar/batch-action-bar.tsx"],"sourcesContent":["/**\n * Default user-facing strings for `<BatchActionBar>`.\n *\n * Consumers wire their own i18n at the call site:\n *\n * <BatchActionBar strings={{ summary: (n, total) => t('selection.summary', { n, total }) }} … />\n */\n\nexport interface BatchActionBarStrings {\n\t/**\n\t * The selection summary (\"3 selected\", \"3 of 250 selected\"). A function,\n\t * because the sentence shape varies by language; `total` is `undefined`\n\t * when the caller does not know or bound the total.\n\t */\n\tsummary: (selected: number, total?: number) => string;\n\t/** The control that drops the selection. */\n\tclear: string;\n\t/** The accessible name of the bar's region. */\n\tlabel: string;\n}\n\nexport const defaultBatchActionBarStrings: BatchActionBarStrings = {\n\tsummary: (selected, total) =>\n\t\ttotal === undefined ? `${selected} selected` : `${selected} of ${total} selected`,\n\tclear: 'Clear',\n\tlabel: 'Batch actions',\n};\n","/**\n * BatchActionBar — the bar shown once a selection exists: the count, the bulk\n * actions, and a way out.\n *\n * Several features share it (DataTable, MediaLibrary, product variants), so it\n * lives in base. `floating` docks to the bottom centre of the viewport, so the\n * selection stays reachable after scrolling a long list; `inline` stays in flow\n * inside a panel that scrolls its own body, where a dock would cover the rows.\n *\n * Callers can mount it unconditionally: at a count of zero it renders nothing.\n * The count is a polite live region, so changes are announced. Escape inside\n * the bar clears, and when the bar goes away with focus inside it (Clear, or an\n * action that drops the selection), focus returns to `returnFocusRef` or to the\n * control focus came from rather than falling to the document body.\n */\nimport { useCallback, useEffect, useRef, useState, type KeyboardEvent, type ReactNode, type RefObject } from 'react';\n\nimport { Button } from '../buttons';\nimport { Text } from '../../typography';\nimport { layerRecipes } from '../../../lib/layer-recipes';\nimport { motionRecipes } from '../../../lib/motion-recipes';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { elevationRecipes, neutralFillRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultBatchActionBarStrings, type BatchActionBarStrings } from './batch-action-bar.strings';\n\nexport type BatchActionBarPlacement = 'floating' | 'inline';\n\nexport interface BatchActionBarProps {\n\t/** How many items are selected. At zero or below no bar renders, so a caller can mount it unconditionally. */\n\tselectedCount: number;\n\t/** Denominator for the summary. Omit when the total is unknown or unbounded. */\n\ttotalCount?: number;\n\t/** Drops the selection. Omit to render no Clear control or Escape shortcut; a selection the user cannot drop needs a reason. */\n\tonClear?: () => void;\n\t/**\n\t * `floating` (default) docks to the bottom centre of the viewport, or of the\n\t * nearest transformed ancestor; `inline` sits in flow at full width.\n\t */\n\tplacement?: BatchActionBarPlacement;\n\t/**\n\t * Where focus goes when the bar disappears while focus is inside it: the list\n\t * it acts on, or that list's select-all control. When focus entered the bar\n\t * from a control inside this element that is still there, it returns to that\n\t * control instead. Without it, or when it cannot take focus, focus returns to\n\t * the control it entered the bar from, if that is still in the document.\n\t */\n\treturnFocusRef?: RefObject<HTMLElement | null>;\n\t/** Overrides this bar's own copy: `summary(selected, total)`, `clear`, and the region's accessible `label`. */\n\tstrings?: StringsProp<BatchActionBarStrings>;\n\t/** The bulk actions: buttons, a menu, whatever the surface needs. Clear follows them. */\n\tchildren?: ReactNode;\n\t/** Merged onto the bar. */\n\tclassName?: string;\n}\n\n// Both placements share one geometry: the compact anchored-surface inset and\n// shell radius, so the bar's buttons sit in the same frame as a menu's rows.\nconst barRecipe = `batch-action-bar--component box-border flex min-w-0 flex-wrap items-center justify-between gap-space-md rounded-surface p-surface-xs ${surfaceDividerRecipes.anchored.shell}`;\n\nconst placementRecipes: Record<BatchActionBarPlacement, string> = {\n\t// Above sticky headers and toolbars, below the menus and dialogs its own\n\t// actions open. Opaque and lifted, so it never reads as part of the list\n\t// scrolling underneath. 100% rather than 100vw, so a dock inside a\n\t// transformed ancestor does not overhang it.\n\tfloating: cn(\n\t\t// Root knobs, not the --spacing-* aliases: those resolve once at :root, so a\n\t\t// scoped space-scale would never reach the dock offset.\n\t\t'fixed bottom-[calc(1rem*var(--space-scale)+env(safe-area-inset-bottom,0px))] left-1/2 w-max max-w-[calc(100%-2rem*var(--space-scale))] -translate-x-1/2',\n\t\t'bg-popover text-popover-foreground',\n\t\televationRecipes.lifted,\n\t\tlayerRecipes.chrome,\n\t\tmotionRecipes.dock,\n\t),\n\tinline: cn('w-full text-foreground', neutralFillRecipes.band),\n};\n\nfunction isConnectedElement(node: HTMLElement | null | undefined): node is HTMLElement {\n\treturn !!node && node.isConnected;\n}\n\n/**\n * Inside the bar, or inside a popup one of its actions has open: a menu is\n * portaled out of the bar's DOM but unmounts with it, so focus there is lost\n * with the bar just the same.\n */\nfunction isWithinBar(bar: HTMLElement | null, node: EventTarget | null): boolean {\n\tif (!bar || !(node instanceof Node)) return false;\n\treturn bar.contains(node) || bar.querySelector('[aria-expanded=\"true\"]') !== null;\n}\n\nexport function BatchActionBar({\n\tselectedCount,\n\ttotalCount,\n\tonClear,\n\tplacement = 'floating',\n\treturnFocusRef,\n\tstrings: stringsProp,\n\tchildren,\n\tclassName,\n}: BatchActionBarProps) {\n\tconst strings = useStrings(defaultBatchActionBarStrings, stringsProp);\n\tconst visible = selectedCount > 0;\n\n\t// The count is a polite live region. It mounts empty and fills once the bar\n\t// is in the document: a live region inserted together with its text is often\n\t// not read, and a second, hidden copy of the count would be read twice.\n\tconst [countReady, setCountReady] = useState(false);\n\tuseEffect(() => {\n\t\tsetCountReady(visible);\n\t}, [visible]);\n\n\tconst barRef = useRef<HTMLDivElement>(null);\n\t// Whether focus was last known to be inside the bar, and the control it came from.\n\tconst focusInsideRef = useRef(false);\n\tconst focusOriginRef = useRef<HTMLElement | null>(null);\n\n\t// Track focus through document listeners rather than blur: browsers differ\n\t// on whether removing a focused node fires blur, and the bar's own removal\n\t// is exactly the moment that matters.\n\tuseEffect(() => {\n\t\tif (!visible || typeof document === 'undefined') return;\n\t\tconst handleFocusIn = (event: FocusEvent) => {\n\t\t\tconst bar = barRef.current;\n\t\t\tconst inside = isWithinBar(bar, event.target);\n\t\t\tif (inside && !focusInsideRef.current) {\n\t\t\t\tconst from = event.relatedTarget;\n\t\t\t\tfocusOriginRef.current = from instanceof HTMLElement && !isWithinBar(bar, from) ? from : null;\n\t\t\t}\n\t\t\tfocusInsideRef.current = inside;\n\t\t};\n\t\t// Pressing somewhere else moves on, even when nothing there takes focus.\n\t\tconst handlePointerDown = (event: PointerEvent) => {\n\t\t\tif (!isWithinBar(barRef.current, event.target)) focusInsideRef.current = false;\n\t\t};\n\t\tdocument.addEventListener('focusin', handleFocusIn);\n\t\tdocument.addEventListener('pointerdown', handlePointerDown, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('focusin', handleFocusIn);\n\t\t\tdocument.removeEventListener('pointerdown', handlePointerDown, true);\n\t\t};\n\t}, [visible]);\n\n\tconst restoreFocus = useCallback(() => {\n\t\tconst origin = isConnectedElement(focusOriginRef.current) ? focusOriginRef.current : null;\n\t\tconst owner = isConnectedElement(returnFocusRef?.current) ? returnFocusRef.current : null;\n\t\tfocusOriginRef.current = null;\n\t\t// Entered from inside the owner, and that control is still there: the\n\t\t// user keeps their place in the list. Otherwise the owner, then the origin.\n\t\t// Going back to the origin restores where focus was, so it never scrolls\n\t\t// the page to it.\n\t\tconst candidates = owner && origin && owner.contains(origin) ? [origin, owner] : [owner, origin];\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!candidate) continue;\n\t\t\tcandidate.focus(candidate === origin ? { preventScroll: true } : undefined);\n\t\t\tif (document.activeElement === candidate) return;\n\t\t}\n\t}, [returnFocusRef]);\n\n\t// The bar went away with focus inside it: hand focus back instead of\n\t// dropping it on the body. An action that already moved focus on (a\n\t// dialog, the next field) keeps it.\n\tconst handBackFocus = useCallback(() => {\n\t\tif (!focusInsideRef.current) return;\n\t\tfocusInsideRef.current = false;\n\t\tconst active = document.activeElement;\n\t\tconst lost = !active || active === document.body || !active.isConnected;\n\t\tif (lost) restoreFocus();\n\t}, [restoreFocus]);\n\tuseEffect(() => {\n\t\tif (!visible) handBackFocus();\n\t}, [visible, handBackFocus]);\n\t// The same when a caller unmounts the bar together with the selection.\n\tconst handBackFocusRef = useRef(handBackFocus);\n\thandBackFocusRef.current = handBackFocus;\n\tuseEffect(() => () => handBackFocusRef.current(), []);\n\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== 'Escape' || !onClear || event.defaultPrevented) return;\n\t\t// React bubbles events out of portals; a menu opened from an action owns\n\t\t// its own Escape, so only keys pressed in the bar's DOM clear.\n\t\tif (!(event.target instanceof Node) || !event.currentTarget.contains(event.target)) return;\n\t\tevent.preventDefault();\n\t\t// One Escape, one layer: the dialog or drawer around the bar stays open.\n\t\tevent.stopPropagation();\n\t\tonClear();\n\t};\n\n\t// Nothing selected, nothing rendered.\n\tif (!visible) return null;\n\n\tconst hasActions = children !== undefined && children !== null && children !== false;\n\n\treturn (\n\t\t// oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- Escape bubbles from the focused commands to the bar.\n\t\t<div\n\t\t\tref={barRef}\n\t\t\t// A named region, so screen reader users can find the bar again after the list.\n\t\t\trole=\"region\"\n\t\t\taria-label={strings.label}\n\t\t\tdata-slot=\"batch-action-bar\"\n\t\t\tdata-placement={placement}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tclassName={cn(barRecipe, placementRecipes[placement], className)}\n\t\t>\n\t\t\t{/*\n\t\t\t * Not `role=\"status\"`, which would collide with the page's own status\n\t\t\t * line. The control inset lines the count up with the buttons' labels,\n\t\t\t * also when the actions wrap below it. Tabular figures, so a changing\n\t\t\t * count does not shift a centred dock.\n\t\t\t */}\n\t\t\t<div\n\t\t\t\tdata-slot=\"batch-action-bar-summary\"\n\t\t\t\tclassName=\"batch-action-bar--summary min-w-0 px-control\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t\taria-atomic=\"true\"\n\t\t\t>\n\t\t\t\t{countReady && (\n\t\t\t\t\t<Text tag=\"span\" type=\"inherit\" className=\"tabular-nums\">\n\t\t\t\t\t\t{strings.summary(selectedCount, totalCount)}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{(hasActions || !!onClear) && (\n\t\t\t\t<div\n\t\t\t\t\tdata-slot=\"batch-action-bar-actions\"\n\t\t\t\t\t// A rule between the count and the verbs, so the count does not read\n\t\t\t\t\t// as another button. Wrapped below the count on narrow screens, where\n\t\t\t\t\t// the rule would lead the row, it hides.\n\t\t\t\t\tclassName=\"batch-action-bar--actions flex min-w-0 shrink flex-wrap items-center gap-space-xs before:my-space-xs before:w-px before:self-stretch before:bg-border/60 max-sm:before:hidden\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t\t{!!onClear && (\n\t\t\t\t\t\t<Button type=\"button\" tone=\"neutral\" buttonStyle=\"ghost\" onClick={onClear}>\n\t\t\t\t\t\t\t{strings.clear}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nBatchActionBar.displayName = 'BatchActionBar';\n"],"mappings":"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"}
|