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
package/dist/item-FfWnaYST.js
DELETED
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { S as e, d as t, p as n } from "./ui-provider-C-74NVLc.js";
|
|
3
|
-
import { t as r } from "./utils-DhuoqFy4.js";
|
|
4
|
-
import { t as i } from "./separator-B9ewiCGO.js";
|
|
5
|
-
import { c as a, l as o } from "./typography-C7-YMW1S.js";
|
|
6
|
-
import { t as s } from "./text.styles-B64My8RZ.js";
|
|
7
|
-
import { t as c } from "./focus-recipes-B653VaLq.js";
|
|
8
|
-
import { n as l } from "./icon-size-B6PVwjbC.js";
|
|
9
|
-
import { t as u } from "./row-recipes-DL8n7t_b.js";
|
|
10
|
-
import { t as d } from "./composition.recipes-COdiFhxB.js";
|
|
11
|
-
import { t as f } from "./interaction-recipes-4wZ2tvfb.js";
|
|
12
|
-
import * as p from "react";
|
|
13
|
-
import { forwardRef as m } from "react";
|
|
14
|
-
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
15
|
-
import { mergeProps as v } from "@base-ui/react/merge-props";
|
|
16
|
-
import { useRender as y } from "@base-ui/react/use-render";
|
|
17
|
-
import { cva as b } from "class-variance-authority";
|
|
18
|
-
//#region src/components/ui/item.tsx
|
|
19
|
-
function x({ className: e, ...t }) {
|
|
20
|
-
return /* @__PURE__ */ g("div", {
|
|
21
|
-
role: "list",
|
|
22
|
-
"data-slot": "item-group",
|
|
23
|
-
className: r("group/item-group flex w-full flex-col", e),
|
|
24
|
-
...t
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function S({ className: e, ...t }) {
|
|
28
|
-
return /* @__PURE__ */ g(i, {
|
|
29
|
-
"data-slot": "item-separator",
|
|
30
|
-
orientation: "horizontal",
|
|
31
|
-
className: r("my-space-md", e),
|
|
32
|
-
...t
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
var C = b(`group/item flex w-full flex-wrap items-center rounded-radius border text-sm transition-colors outline-none ${c.frame} [a]:transition-colors [a]:hover:bg-accent [a]:hover:text-accent-foreground`, {
|
|
36
|
-
variants: {
|
|
37
|
-
variant: {
|
|
38
|
-
default: "border-transparent",
|
|
39
|
-
outline: "border-border",
|
|
40
|
-
muted: "border-transparent bg-muted/50"
|
|
41
|
-
},
|
|
42
|
-
size: {
|
|
43
|
-
default: r("gap-space-lg px-row-x", u.comfortable),
|
|
44
|
-
sm: r("gap-space-lg px-row-x", u.default),
|
|
45
|
-
xs: r("gap-space-md px-row-x in-data-[slot=dropdown-menu-content]:p-0", u.compact)
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
defaultVariants: {
|
|
49
|
-
variant: "default",
|
|
50
|
-
size: "default"
|
|
51
|
-
}
|
|
52
|
-
}), w = p.createContext(!1);
|
|
53
|
-
function T(e) {
|
|
54
|
-
return p.useContext(w) ? "span" : e;
|
|
55
|
-
}
|
|
56
|
-
function E({ className: e, variant: t = "default", size: n = "default", render: i, ...a }) {
|
|
57
|
-
let o = p.isValidElement(i) && i.type === "button", s = y({
|
|
58
|
-
defaultTagName: "div",
|
|
59
|
-
props: v({ className: r(o && f.nativeButtonReset, o && "text-start", C({
|
|
60
|
-
variant: t,
|
|
61
|
-
size: n,
|
|
62
|
-
className: e
|
|
63
|
-
})) }, a),
|
|
64
|
-
render: i,
|
|
65
|
-
state: {
|
|
66
|
-
slot: "item",
|
|
67
|
-
variant: t,
|
|
68
|
-
size: n
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return /* @__PURE__ */ g(w.Provider, {
|
|
72
|
-
value: i !== void 0,
|
|
73
|
-
children: s
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
var D = b("flex shrink-0 items-center justify-center gap-space-md group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none", {
|
|
77
|
-
variants: { variant: {
|
|
78
|
-
default: "bg-transparent",
|
|
79
|
-
icon: "[&_svg:not([class*='size-'])]:size-icon",
|
|
80
|
-
image: "size-10 overflow-hidden rounded-radius group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-radius [&_img]:size-full [&_img]:object-cover"
|
|
81
|
-
} },
|
|
82
|
-
defaultVariants: { variant: "default" }
|
|
83
|
-
});
|
|
84
|
-
function O({ className: e, variant: t = "default", ...n }) {
|
|
85
|
-
return y({
|
|
86
|
-
defaultTagName: T("div"),
|
|
87
|
-
props: v({ className: r(D({
|
|
88
|
-
variant: t,
|
|
89
|
-
className: e
|
|
90
|
-
})) }, n),
|
|
91
|
-
state: {
|
|
92
|
-
slot: "item-media",
|
|
93
|
-
variant: t
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
function k({ className: e, ...t }) {
|
|
98
|
-
return y({
|
|
99
|
-
defaultTagName: T("div"),
|
|
100
|
-
props: v({ className: r("flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none", e) }, t),
|
|
101
|
-
state: { slot: "item-content" }
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
function A({ className: e, ...t }) {
|
|
105
|
-
return y({
|
|
106
|
-
defaultTagName: T("div"),
|
|
107
|
-
props: v({ className: r("line-clamp-1 flex w-fit items-center gap-space-md text-sm leading-snug font-medium underline-offset-4", e) }, t),
|
|
108
|
-
state: { slot: "item-title" }
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
function j({ className: e, ...t }) {
|
|
112
|
-
return y({
|
|
113
|
-
defaultTagName: T("p"),
|
|
114
|
-
props: v({ className: r("m-0 line-clamp-2 text-start text-sm font-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", e) }, t),
|
|
115
|
-
state: { slot: "item-description" }
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
function M({ className: e, ...t }) {
|
|
119
|
-
return y({
|
|
120
|
-
defaultTagName: T("div"),
|
|
121
|
-
props: v({ className: r("flex items-center", e) }, t),
|
|
122
|
-
state: { slot: "item-actions" }
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
function N({ className: e, ...t }) {
|
|
126
|
-
return y({
|
|
127
|
-
defaultTagName: T("div"),
|
|
128
|
-
props: v({ className: r("flex basis-full items-center justify-between gap-space-md", e) }, t),
|
|
129
|
-
state: { slot: "item-header" }
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
function P({ className: e, ...t }) {
|
|
133
|
-
return y({
|
|
134
|
-
defaultTagName: T("div"),
|
|
135
|
-
props: v({ className: r("flex basis-full items-center justify-between gap-space-md", e) }, t),
|
|
136
|
-
state: { slot: "item-footer" }
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
//#endregion
|
|
140
|
-
//#region src/components/base/item/item.tsx
|
|
141
|
-
var F = m(function(i, a) {
|
|
142
|
-
let o = "title" in i, { size: s, density: l = "default", variant: d, padding: f = "none", textGap: p = "dense", render: m, className: v, children: y, media: b, mediaVariant: x, title: S, description: C, trailing: w, actions: T, titleBold: D, descriptionClamp: O, ...k } = i, { defaultVariant: A = "default" } = n(), { defaultScale: j } = t(), M = e(s, j), N = M === "sm" ? "xs" : "sm", P = d ?? A, F = M === "sm" ? "text-pxs" : M === "lg" ? "text-base" : "text-sm", I = f === "default" ? "px-row-x" : "px-0", L = P === "default" && f === "none" ? "in-data-[slot=item-group]:first:pt-0 in-data-[slot=item-group]:last:pb-0" : void 0, V = P === "default" ? `border-0 ${c.edge}` : void 0, H = o ? /* @__PURE__ */ _(h, { children: [
|
|
143
|
-
b == null ? null : /* @__PURE__ */ g(R, {
|
|
144
|
-
variant: x,
|
|
145
|
-
children: b
|
|
146
|
-
}),
|
|
147
|
-
/* @__PURE__ */ _(z, {
|
|
148
|
-
textGap: p,
|
|
149
|
-
className: "basis-48",
|
|
150
|
-
children: [/* @__PURE__ */ g(U, {
|
|
151
|
-
bold: D,
|
|
152
|
-
children: S
|
|
153
|
-
}), C == null ? null : /* @__PURE__ */ g(G, {
|
|
154
|
-
clamp: O,
|
|
155
|
-
children: C
|
|
156
|
-
})]
|
|
157
|
-
}),
|
|
158
|
-
w != null || T != null ? /* @__PURE__ */ _(B, { children: [w, T] }) : null
|
|
159
|
-
] }) : y;
|
|
160
|
-
return /* @__PURE__ */ g(E, {
|
|
161
|
-
ref: a,
|
|
162
|
-
size: N,
|
|
163
|
-
variant: P,
|
|
164
|
-
render: m,
|
|
165
|
-
className: r("item--component box-border font-sans gap-space-lg rounded-radius", m !== void 0 && "text-inherit no-underline", u[l], I, L, V, F, v),
|
|
166
|
-
...k,
|
|
167
|
-
children: H
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
F.displayName = "Item";
|
|
171
|
-
var I = m(function({ className: e, role: t, ...n }, i) {
|
|
172
|
-
return /* @__PURE__ */ g(x, {
|
|
173
|
-
ref: i,
|
|
174
|
-
role: t,
|
|
175
|
-
className: r("item-group--component gap-space-sm has-[>[data-slot=item][data-variant=default]]:not-has-[>[data-slot=item]:not([data-variant=default])]:gap-0", e),
|
|
176
|
-
...n
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
I.displayName = "ItemGroup";
|
|
180
|
-
var L = m(function({ className: e, ...t }, n) {
|
|
181
|
-
return /* @__PURE__ */ g(S, {
|
|
182
|
-
ref: n,
|
|
183
|
-
className: r("item--separator", e),
|
|
184
|
-
...t
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
L.displayName = "ItemSeparator";
|
|
188
|
-
var R = m(function({ variant: e = "default", className: t, ...n }, i) {
|
|
189
|
-
let a = e === "image" || e === "avatar" ? "image" : "default", o = e === "icon" ? r(l.md, "group-data-[size=xs]/item:[&_svg:not([class*='size-'])]:size-icon-sm") : void 0;
|
|
190
|
-
return /* @__PURE__ */ g(O, {
|
|
191
|
-
ref: i,
|
|
192
|
-
variant: a,
|
|
193
|
-
className: r("item--media", "group-has-data-[slot=item-description]/item:translate-y-0", o, e === "avatar" ? "rounded-full group-data-[size=sm]/item:rounded-full group-data-[size=xs]/item:rounded-full" : void 0, t),
|
|
194
|
-
...n
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
R.displayName = "ItemMedia";
|
|
198
|
-
var z = m(function({ className: e, textGap: t = "dense", ...n }, i) {
|
|
199
|
-
return /* @__PURE__ */ g(k, {
|
|
200
|
-
ref: i,
|
|
201
|
-
className: r("item--content min-w-0", t === "dense" ? "gap-dense group-data-[size=xs]/item:gap-dense" : "gap-normal group-data-[size=xs]/item:gap-normal", e),
|
|
202
|
-
...n
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
z.displayName = "ItemContent";
|
|
206
|
-
var B = m(function({ className: e, ...t }, n) {
|
|
207
|
-
return /* @__PURE__ */ g(M, {
|
|
208
|
-
ref: n,
|
|
209
|
-
className: r("item--actions max-w-full flex-wrap shrink-0", d.compactActions, e),
|
|
210
|
-
...t
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
B.displayName = "ItemActions";
|
|
214
|
-
var V = m(function({ className: e, ...t }, n) {
|
|
215
|
-
return /* @__PURE__ */ g(N, {
|
|
216
|
-
ref: n,
|
|
217
|
-
className: r("item--header", e),
|
|
218
|
-
...t
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
V.displayName = "ItemHeader";
|
|
222
|
-
var H = m(function({ className: e, ...t }, n) {
|
|
223
|
-
return /* @__PURE__ */ g(P, {
|
|
224
|
-
ref: n,
|
|
225
|
-
className: r("item--footer", e),
|
|
226
|
-
...t
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
H.displayName = "ItemFooter";
|
|
230
|
-
var U = m(function({ bold: e = !0, className: t, children: n, ...i }, c) {
|
|
231
|
-
let l = typeof n == "string" || typeof n == "number" || typeof n == "bigint";
|
|
232
|
-
return /* @__PURE__ */ g(A, {
|
|
233
|
-
ref: c,
|
|
234
|
-
className: r("item--title min-w-0 max-w-full overflow-hidden m-0 text-inherit [&>p]:m-0 [&>p]:text-start", t),
|
|
235
|
-
...i,
|
|
236
|
-
children: l ? /* @__PURE__ */ g(a, {
|
|
237
|
-
...s.primary,
|
|
238
|
-
tag: "span",
|
|
239
|
-
size: "inherit",
|
|
240
|
-
weight: e ? "semibold" : "regular",
|
|
241
|
-
lineHeight: "tight",
|
|
242
|
-
className: "min-w-0 overflow-hidden text-ellipsis text-inherit",
|
|
243
|
-
children: n
|
|
244
|
-
}) : /* @__PURE__ */ g(o.Provider, {
|
|
245
|
-
value: !0,
|
|
246
|
-
children: n
|
|
247
|
-
})
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
U.displayName = "ItemTitle";
|
|
251
|
-
var W = {
|
|
252
|
-
1: "line-clamp-1",
|
|
253
|
-
2: "line-clamp-2",
|
|
254
|
-
3: "line-clamp-3",
|
|
255
|
-
4: "line-clamp-4",
|
|
256
|
-
none: "line-clamp-none"
|
|
257
|
-
}, G = m(function({ clamp: e = 2, className: t, children: n, ...i }, c) {
|
|
258
|
-
let l = typeof n == "string" || typeof n == "number" || typeof n == "bigint";
|
|
259
|
-
return /* @__PURE__ */ g(j, {
|
|
260
|
-
ref: c,
|
|
261
|
-
className: r("item--description", "m-0", !l && "text-xs text-muted-foreground leading-tight", W[e], t),
|
|
262
|
-
...i,
|
|
263
|
-
children: l ? /* @__PURE__ */ g(a, {
|
|
264
|
-
...s.supporting,
|
|
265
|
-
tag: "span",
|
|
266
|
-
lineHeight: "tight",
|
|
267
|
-
children: n
|
|
268
|
-
}) : /* @__PURE__ */ g(o.Provider, {
|
|
269
|
-
value: !0,
|
|
270
|
-
children: n
|
|
271
|
-
})
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
G.displayName = "ItemDescription";
|
|
275
|
-
//#endregion
|
|
276
|
-
export { H as a, R as c, G as i, L as l, B as n, I as o, z as r, V as s, F as t, U as u };
|
|
277
|
-
|
|
278
|
-
//# sourceMappingURL=item-FfWnaYST.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"item-FfWnaYST.js","names":["ItemGroup","ItemSeparator","React","Item","ItemMedia","ItemContent","ItemTitle","ItemDescription","ItemActions","ItemHeader","ItemFooter","_Fragment","BaseItem","BaseItemGroup","BaseItemSeparator","BaseItemMedia","BaseItemContent","BaseItemActions","BaseItemHeader","BaseItemFooter","BaseItemTitle","BaseItemDescription","resolveComponentScale","useDensityConfig","useItemConfig","cn","Separator","Text","RunningTextContext","copyRoleProps","focusRecipes","ICON_DESCENDANT_SIZE_CLASSNAMES","rowBlockPaddingClasses","compositionClasses","interactionRecipes","React$1","Fragment$1","ItemGroup$1","props","className","ItemSeparator$1","itemVariants","cva","ItemPhrasingContext","usePartTagName","tagName","Item$1","nativeButton","render","element","useRender","mergeProps","itemMediaVariants","ItemMedia$1","ItemContent$1","ItemTitle$1","ItemDescription$1","ItemActions$1","ItemHeader$1","ItemFooter$1","Item","forwardRef","convenienceMode","itemProps","resolvedSize","size","defaultScale","primitiveSize","resolvedVariant","variant","defaultVariant","textSizeClass","paddingClass","padding","flushEdgeClass","borderClass","resolvedChildren","media","ItemMedia","mediaVariant","ItemContent","ItemTitle","titleBold","title","description","ItemDescription","descriptionClamp","trailing","actions","ItemActions","children","density","ItemGroup","ItemSeparator","baseVariant","iconClass","textGap","ItemHeader","ItemFooter","isSimpleText","bold","CLAMP_CLASS","clamp"],"sources":["../src/components/ui/item.tsx","../src/components/base/item/item.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { rowBlockPaddingClasses } from \"../../lib/row-recipes\"\nimport { Separator } from \"./separator\"\nimport { focusRecipes } from \"../../lib/focus-recipes\"\nimport { interactionRecipes } from \"../../lib/interaction-recipes\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\n \"group/item-group flex w-full flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-space-md\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n `group/item flex w-full flex-wrap items-center rounded-radius border text-sm transition-colors outline-none ${focusRecipes.frame} [a]:transition-colors [a]:hover:bg-accent [a]:hover:text-accent-foreground`,\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"border-transparent bg-muted/50\",\n },\n size: {\n default: cn(\"gap-space-lg px-row-x\", rowBlockPaddingClasses.comfortable),\n sm: cn(\"gap-space-lg px-row-x\", rowBlockPaddingClasses.default),\n xs: cn(\"gap-space-md px-row-x in-data-[slot=dropdown-menu-content]:p-0\", rowBlockPaddingClasses.compact),\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// An Item rendered as a button or link may hold phrasing content only, so its\n// parts render as spans there. Their classes set their display, so the layout\n// is the same either way.\nconst ItemPhrasingContext = React.createContext(false)\n\nfunction usePartTagName(tagName: \"div\" | \"p\") {\n return React.useContext(ItemPhrasingContext) ? \"span\" : tagName\n}\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n const nativeButton = React.isValidElement(render) && render.type === \"button\"\n const element = useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n nativeButton && interactionRecipes.nativeButtonReset,\n nativeButton && \"text-start\",\n itemVariants({ variant, size, className }),\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"item\",\n variant,\n size,\n },\n })\n\n return (\n <ItemPhrasingContext.Provider value={render !== undefined}>\n {element}\n </ItemPhrasingContext.Provider>\n )\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-space-md group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-icon\",\n image:\n \"size-10 overflow-hidden rounded-radius group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-radius [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return useRender({\n defaultTagName: usePartTagName(\"div\"),\n props: mergeProps<\"div\">(\n {\n className: cn(itemMediaVariants({ variant, className })),\n },\n props\n ),\n state: { slot: \"item-media\", variant },\n })\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: usePartTagName(\"div\"),\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\n className\n ),\n },\n props\n ),\n state: { slot: \"item-content\" },\n })\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: usePartTagName(\"div\"),\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"line-clamp-1 flex w-fit items-center gap-space-md text-sm leading-snug font-medium underline-offset-4\",\n className\n ),\n },\n props\n ),\n state: { slot: \"item-title\" },\n })\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return useRender({\n defaultTagName: usePartTagName(\"p\"),\n props: mergeProps<\"p\">(\n {\n className: cn(\n \"m-0 line-clamp-2 text-start text-sm font-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n ),\n },\n props\n ),\n state: { slot: \"item-description\" },\n })\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: usePartTagName(\"div\"),\n props: mergeProps<\"div\">(\n {\n className: cn(\"flex items-center\", className),\n },\n props\n ),\n state: { slot: \"item-actions\" },\n })\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: usePartTagName(\"div\"),\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex basis-full items-center justify-between gap-space-md\",\n className\n ),\n },\n props\n ),\n state: { slot: \"item-header\" },\n })\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: usePartTagName(\"div\"),\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex basis-full items-center justify-between gap-space-md\",\n className\n ),\n },\n props\n ),\n state: { slot: \"item-footer\" },\n })\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n}\n","/**\n * Item — base wrapper around the shadcn `Item` primitive.\n *\n * Why this wrapper exists (rules 1, 8, 12, 17):\n * - Resolves `size` and `variant` against `<UIProvider>` (`useItemConfig()`),\n * so consumers set library-wide density once.\n * - Routes `ItemTitle` / `ItemDescription` text through our `<Text>` typography\n * so a title is always `weight=\"semibold\"` and secondary copy follows the\n * shared control/display tokens — no rogue `<div className=\"text-sm font-medium\">`\n * blobs at call sites.\n * - Re-exports every compound part untouched, so `<Item>` keeps working as a\n * drop-in replacement for hand-rolled \"icon-left + text-stack + actions\" rows.\n *\n * Layer rule: import from `@/components/base/item`, never from `@/components/ui/item`.\n */\nimport { forwardRef, type ComponentRef } from 'react';\n\nimport {\n\tItem as BaseItem,\n\tItemActions as BaseItemActions,\n\tItemContent as BaseItemContent,\n\tItemDescription as BaseItemDescription,\n\tItemFooter as BaseItemFooter,\n\tItemGroup as BaseItemGroup,\n\tItemHeader as BaseItemHeader,\n\tItemMedia as BaseItemMedia,\n\tItemSeparator as BaseItemSeparator,\n\tItemTitle as BaseItemTitle,\n} from '../../ui/item';\nimport { ICON_DESCENDANT_SIZE_CLASSNAMES } from '../display/icon-size';\nimport { Text } from '../../typography';\nimport { RunningTextContext } from '../../typography/running-text';\nimport { useDensityConfig, useItemConfig } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\nimport {compositionClasses} from '../structure/composition.recipes';\nimport {copyRoleProps} from '../../typography/text.styles';\nimport { rowBlockPaddingClasses } from '../../../lib/row-recipes';\nimport { focusRecipes } from '../../../lib/focus-recipes';\n\nimport type {\n\tItemActionsProps,\n\tItemContentProps,\n\tItemDescriptionProps,\n\tItemFooterProps,\n\tItemGroupProps,\n\tItemHeaderProps,\n\tItemMediaProps,\n\tItemProps,\n\tItemTitleProps,\n} from './item.types';\n\nconst Item = forwardRef<ComponentRef<typeof BaseItem>, ItemProps>(function Item(\n\titemProps,\n\tref,\n) {\n\tconst convenienceMode = 'title' in itemProps;\n\tconst {\n\t\tsize,\n\t\tdensity = 'default',\n\t\tvariant,\n\t\tpadding = 'none',\n\t\ttextGap = 'dense',\n\t\trender,\n\t\tclassName,\n\t\tchildren,\n\t\tmedia,\n\t\tmediaVariant,\n\t\ttitle,\n\t\tdescription,\n\t\ttrailing,\n\t\tactions,\n\t\ttitleBold,\n\t\tdescriptionClamp,\n\t\t...props\n\t} = itemProps;\n\tconst { defaultVariant = 'default' } = useItemConfig();\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedSize = resolveComponentScale(size, defaultScale);\n\tconst primitiveSize = resolvedSize === 'sm' ? 'xs' : 'sm';\n\tconst resolvedVariant = variant ?? defaultVariant;\n\tconst textSizeClass = resolvedSize === 'sm' ? 'text-pxs' : resolvedSize === 'lg' ? 'text-base' : 'text-sm';\n\tconst paddingClass = padding === 'default' ? 'px-row-x' : 'px-0';\n\t// A plain flush row draws no box, so in a group its outer edges sit on the group's\n\t// edges and the parent's gap or surface padding owns the space around the list.\n\tconst flushEdgeClass = resolvedVariant === 'default' && padding === 'none'\n\t\t? 'in-data-[slot=item-group]:first:pt-0 in-data-[slot=item-group]:last:pb-0'\n\t\t: undefined;\n\t// The default variant draws no box; a transparent 1px border only nudged its text off the shared edge.\n\t// Without a border, an interactive row draws its focus edge inset instead.\n\tconst borderClass = resolvedVariant === 'default' ? `border-0 ${focusRecipes.edge}` : undefined;\n\tconst resolvedChildren = convenienceMode ? (\n\t\t<>\n\t\t\t{media != null ? <ItemMedia variant={mediaVariant}>{media}</ItemMedia> : null}\n\t\t\t<ItemContent textGap={textGap} className=\"basis-48\">\n\t\t\t\t<ItemTitle bold={titleBold}>{title}</ItemTitle>\n\t\t\t\t{description != null ? (\n\t\t\t\t\t<ItemDescription clamp={descriptionClamp}>{description}</ItemDescription>\n\t\t\t\t) : null}\n\t\t\t</ItemContent>\n\t\t\t{trailing != null || actions != null ? (\n\t\t\t\t<ItemActions>\n\t\t\t\t\t{trailing}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t) : null}\n\t\t</>\n\t) : children;\n\treturn (\n\t\t<BaseItem\n\t\t\tref={ref}\n\t\t\tsize={primitiveSize}\n\t\t\tvariant={resolvedVariant}\n\t\t\trender={render}\n\t\t\tclassName={cn(\n\t\t\t\t'item--component box-border font-sans gap-space-lg rounded-radius',\n\t\t\t\trender !== undefined && 'text-inherit no-underline',\n\t\t\t\trowBlockPaddingClasses[density],\n\t\t\t\tpaddingClass,\n\t\t\t\tflushEdgeClass,\n\t\t\t\tborderClass,\n\t\t\t\ttextSizeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{resolvedChildren}\n\t\t</BaseItem>\n\t);\n});\nItem.displayName = 'Item';\n\nconst ItemGroup = forwardRef<ComponentRef<typeof BaseItemGroup>, ItemGroupProps>(function ItemGroup(\n\t{ className, role, ...props },\n\tref,\n) {\n\treturn (\n\t\t<BaseItemGroup\n\t\t\tref={ref}\n\t\t\trole={role}\n\t\t\t// Boxed rows (outline/muted) keep a small gap between boxes, including when a\n\t\t\t// plain row sits beside them. A group of plain rows only touches, so their own\n\t\t\t// density padding is the only space between them.\n\t\t\tclassName={cn('item-group--component gap-space-sm has-[>[data-slot=item][data-variant=default]]:not-has-[>[data-slot=item]:not([data-variant=default])]:gap-0', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nItemGroup.displayName = 'ItemGroup';\n\nconst ItemSeparator = forwardRef<\n\tComponentRef<typeof BaseItemSeparator>,\n\tParameters<typeof BaseItemSeparator>[0]\n>(function ItemSeparator({ className, ...props }, ref) {\n\treturn <BaseItemSeparator ref={ref} className={cn('item--separator', className)} {...props} />;\n});\nItemSeparator.displayName = 'ItemSeparator';\n\nconst ItemMedia = forwardRef<ComponentRef<typeof BaseItemMedia>, ItemMediaProps>(function ItemMedia(\n\t{ variant = 'default', className, ...props },\n\tref,\n) {\n\tconst baseVariant = variant === 'image' || variant === 'avatar' ? 'image' : 'default';\n\tconst iconClass =\n\t\tvariant === 'icon'\n\t\t\t? cn(\n\t\t\t\t\tICON_DESCENDANT_SIZE_CLASSNAMES.md,\n\t\t\t\t\t\"group-data-[size=xs]/item:[&_svg:not([class*='size-'])]:size-icon-sm\",\n\t\t\t\t)\n\t\t\t: undefined;\n\tconst avatarClass =\n\t\tvariant === 'avatar'\n\t\t\t? 'rounded-full group-data-[size=sm]/item:rounded-full group-data-[size=xs]/item:rounded-full'\n\t\t\t: undefined;\n\treturn (\n\t\t<BaseItemMedia\n\t\t\tref={ref}\n\t\t\tvariant={baseVariant}\n\t\t\tclassName={cn(\n\t\t\t\t'item--media',\n\t\t\t\t'group-has-data-[slot=item-description]/item:translate-y-0',\n\t\t\t\ticonClass,\n\t\t\t\tavatarClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nItemMedia.displayName = 'ItemMedia';\n\nconst ItemContent = forwardRef<ComponentRef<typeof BaseItemContent>, ItemContentProps>(function ItemContent(\n\t{ className, textGap = 'dense', ...props },\n\tref,\n) {\n\treturn (\n\t\t<BaseItemContent\n\t\t\tref={ref}\n\t\t\tclassName={cn('item--content min-w-0', textGap === 'dense' ? 'gap-dense group-data-[size=xs]/item:gap-dense' : 'gap-normal group-data-[size=xs]/item:gap-normal', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nItemContent.displayName = 'ItemContent';\n\nconst ItemActions = forwardRef<ComponentRef<typeof BaseItemActions>, ItemActionsProps>(function ItemActions(\n\t{ className, ...props },\n\tref,\n) {\n\treturn <BaseItemActions ref={ref} className={cn('item--actions max-w-full flex-wrap shrink-0', compositionClasses.compactActions, className)} {...props} />;\n});\nItemActions.displayName = 'ItemActions';\n\nconst ItemHeader = forwardRef<ComponentRef<typeof BaseItemHeader>, ItemHeaderProps>(function ItemHeader(\n\t{ className, ...props },\n\tref,\n) {\n\treturn <BaseItemHeader ref={ref} className={cn('item--header', className)} {...props} />;\n});\nItemHeader.displayName = 'ItemHeader';\n\nconst ItemFooter = forwardRef<ComponentRef<typeof BaseItemFooter>, ItemFooterProps>(function ItemFooter(\n\t{ className, ...props },\n\tref,\n) {\n\treturn <BaseItemFooter ref={ref} className={cn('item--footer', className)} {...props} />;\n});\nItemFooter.displayName = 'ItemFooter';\n\nconst ItemTitle = forwardRef<ComponentRef<typeof BaseItemTitle>, ItemTitleProps>(function ItemTitle(\n\t{ bold = true, className, children, ...props },\n\tref,\n) {\n\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\treturn (\n\t\t<BaseItemTitle\n\t\t\tref={ref}\n\t\t\tclassName={cn('item--title min-w-0 max-w-full overflow-hidden m-0 text-inherit [&>p]:m-0 [&>p]:text-start', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText ? (\n\t\t\t\t// The title is a flex row, where text-overflow has no effect: the text itself\n\t\t\t\t// shrinks and ends in an ellipsis instead of clipping a long token mid-glyph.\n\t\t\t\t<Text {...copyRoleProps.primary} tag=\"span\" size=\"inherit\" weight={bold ? 'semibold' : 'regular'} lineHeight=\"tight\" className=\"min-w-0 overflow-hidden text-ellipsis text-inherit\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : <RunningTextContext.Provider value>{children}</RunningTextContext.Provider>}\n\t\t</BaseItemTitle>\n\t);\n});\nItemTitle.displayName = 'ItemTitle';\n\nconst CLAMP_CLASS: Record<NonNullable<ItemDescriptionProps['clamp']>, string> = {\n\t1: 'line-clamp-1',\n\t2: 'line-clamp-2',\n\t3: 'line-clamp-3',\n\t4: 'line-clamp-4',\n\tnone: 'line-clamp-none',\n};\n\nconst ItemDescription = forwardRef<ComponentRef<typeof BaseItemDescription>, ItemDescriptionProps>(\n\tfunction ItemDescription({ clamp = 2, className, children, ...props }, ref) {\n\t\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\t\treturn (\n\t\t\t<BaseItemDescription\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'item--description',\n\t\t\t\t\t'm-0',\n\t\t\t\t\t!isSimpleText && 'text-xs text-muted-foreground leading-tight',\n\t\t\t\t\tCLAMP_CLASS[clamp],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isSimpleText ? (\n\t\t\t\t\t<Text {...copyRoleProps.supporting} tag=\"span\" lineHeight=\"tight\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : <RunningTextContext.Provider value>{children}</RunningTextContext.Provider>}\n\t\t\t</BaseItemDescription>\n\t\t);\n\t},\n);\nItemDescription.displayName = 'ItemDescription';\n\nexport {\n\tItem,\n\tItemGroup,\n\tItemSeparator,\n\tItemMedia,\n\tItemContent,\n\tItemTitle,\n\tItemDescription,\n\tItemActions,\n\tItemHeader,\n\tItemFooter,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAWA,SAASA,EAAU,EAAE,cAAW,GAAGsC,KAAsC;CACvE,OACE,kBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,WAAWb,EACT,yCACAc,CACF;EACA,GAAID;CACL,CAAA;AAEL;AAEA,SAASrC,EAAc,EACrB,cACA,GAAGqC,KACsC;CACzC,OACE,kBAACZ,GAAD;EACE,aAAU;EACV,aAAY;EACZ,WAAWD,EAAG,eAAec,CAAS;EACtC,GAAID;CACL,CAAA;AAEL;AAEA,IAAMG,IAAeC,EACnB,8GAA8GZ,EAAa,MAAM,8EACjI;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,MAAM;GACJ,SAASL,EAAG,yBAAyBO,EAAuB,WAAW;GACvE,IAAIP,EAAG,yBAAyBO,EAAuB,OAAO;GAC9D,IAAIP,EAAG,kEAAkEO,EAAuB,OAAO;EACzG;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF,GAKMW,IAAsBzC,EAAM,cAAc,EAAK;AAErD,SAAS0C,EAAe,GAAsB;CAC5C,OAAO1C,EAAM,WAAWyC,CAAmB,IAAI,SAASE;AAC1D;AAEA,SAAS1C,EAAK,EACZ,cACA,aAAU,WACV,UAAO,WACP,WACA,GAAGmC,KACmE;CACtE,IAAMS,IAAe7C,EAAM,eAAe8C,CAAM,KAAKA,EAAO,SAAS,UAC/DC,IAAUC,EAAU;EACxB,gBAAgB;EAChB,OAAOC,EACL,EACE,WAAW1B,EACTsB,KAAgBb,EAAmB,mBACnCa,KAAgB,cAChBN,EAAa;GAAE;GAAS;GAAM;EAAU,CAAC,CAC3C,EACF,GACAH,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN;GACA;EACF;CACF,CAAC;CAED,OACE,kBAACK,EAAoB,UAArB;EAA8B,OAAOK,MAAW,KAAA;EAC7C,UAAAC;CAC2B,CAAA;AAElC;AAEA,IAAMG,IAAoBV,EACxB,yMACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACN,OACE;CACJ,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAStC,EAAU,EACjB,cACA,aAAU,WACV,GAAGkC,KACoE;CACvE,OAAOY,EAAU;EACf,gBAAgBN,EAAe,KAAK;EACpC,OAAOO,EACL,EACE,WAAW1B,EAAG2B,EAAkB;GAAE;GAAS;EAAU,CAAC,CAAC,EACzD,GACAd,CACF;EACA,OAAO;GAAE,MAAM;GAAc;EAAQ;CACvC,CAAC;AACH;AAEA,SAASjC,EAAY,EAAE,cAAW,GAAGiC,KAAsC;CACzE,OAAOY,EAAU;EACf,gBAAgBN,EAAe,KAAK;EACpC,OAAOO,EACL,EACE,WAAW1B,EACT,+DACAc,CACF,EACF,GACAD,CACF;EACA,OAAO,EAAE,MAAM,eAAe;CAChC,CAAC;AACH;AAEA,SAAShC,EAAU,EAAE,cAAW,GAAGgC,KAAsC;CACvE,OAAOY,EAAU;EACf,gBAAgBN,EAAe,KAAK;EACpC,OAAOO,EACL,EACE,WAAW1B,EACT,yGACAc,CACF,EACF,GACAD,CACF;EACA,OAAO,EAAE,MAAM,aAAa;CAC9B,CAAC;AACH;AAEA,SAAS/B,EAAgB,EAAE,cAAW,GAAG+B,KAAoC;CAC3E,OAAOY,EAAU;EACf,gBAAgBN,EAAe,GAAG;EAClC,OAAOO,EACL,EACE,WAAW1B,EACT,2IACAc,CACF,EACF,GACAD,CACF;EACA,OAAO,EAAE,MAAM,mBAAmB;CACpC,CAAC;AACH;AAEA,SAAS9B,EAAY,EAAE,cAAW,GAAG8B,KAAsC;CACzE,OAAOY,EAAU;EACf,gBAAgBN,EAAe,KAAK;EACpC,OAAOO,EACL,EACE,WAAW1B,EAAG,qBAAqBc,CAAS,EAC9C,GACAD,CACF;EACA,OAAO,EAAE,MAAM,eAAe;CAChC,CAAC;AACH;AAEA,SAAS7B,EAAW,EAAE,cAAW,GAAG6B,KAAsC;CACxE,OAAOY,EAAU;EACf,gBAAgBN,EAAe,KAAK;EACpC,OAAOO,EACL,EACE,WAAW1B,EACT,6DACAc,CACF,EACF,GACAD,CACF;EACA,OAAO,EAAE,MAAM,cAAc;CAC/B,CAAC;AACH;AAEA,SAAS5B,EAAW,EAAE,cAAW,GAAG4B,KAAsC;CACxE,OAAOY,EAAU;EACf,gBAAgBN,EAAe,KAAK;EACpC,OAAOO,EACL,EACE,WAAW1B,EACT,6DACAc,CACF,EACF,GACAD,CACF;EACA,OAAO,EAAE,MAAM,cAAc;CAC/B,CAAC;AACH;;;AClLA,IAAMsB,IAAOC,EAAqD,SACjE,GACA,GACC;CACD,IAAMC,IAAkB,WAAWC,GAC7B,EACL,SACA,aAAU,WACV,YACA,aAAU,QACV,aAAU,SACV,WACA,cACA,aACA,UACA,iBACA,UACA,gBACA,aACA,YACA,cACA,qBACA,GAAGzB,MACAyB,GACE,EAAE,oBAAiB,cAAcvC,EAAc,GAC/C,EAAE,oBAAiBD,EAAiB,GACpCyC,IAAe1C,EAAsB2C,GAAMC,CAAY,GACvDC,IAAgBH,MAAiB,OAAO,OAAO,MAC/CI,IAAkBC,KAAWC,GAC7BC,IAAgBP,MAAiB,OAAO,aAAaA,MAAiB,OAAO,cAAc,WAC3FQ,IAAeC,MAAY,YAAY,aAAa,QAGpDC,IAAiBN,MAAoB,aAAaK,MAAY,SACjE,6EACA,KAAA,GAGGE,IAAcP,MAAoB,YAAY,YAAYtC,EAAa,SAAS,KAAA,GAChF8C,IAAmBd,IACxB,kBAAAnD,GAAA,EAAA,UAAA;EACEkE,KAAS,OAA+D,OAAxD,kBAACC,GAAD;GAAW,SAASC;GAAe,UAAAF;EAAiB,CAAA;EACrE,kBAACG,GAAD;GAAsB;GAAS,WAAU;GAAzC,UAAA,CACC,kBAACC,GAAD;IAAW,MAAMC;IAAY,UAAAC;GAAiB,CAAA,GAC7CC,KAAe,OAEZ,OADH,kBAACC,GAAD;IAAiB,OAAOC;IAAmB,UAAAF;GAA6B,CAAA,CAE7D;;EACZG,KAAY,QAAQC,KAAW,OAC/B,kBAACC,GAAD,EAAA,UAAA,CACEF,GACAC,CACW,EAAA,CAAA,IACV;CACH,EAAA,CAAA,IACCE;CACJ,OACC,kBAAC9E,GAAD;EACM;EACL,MAAMuD;EACN,SAASC;EACD;EACR,WAAW3C,EACV,oEACAuB,MAAW,KAAA,KAAa,6BACxBhB,EAAuB2D,IACvBnB,GACAE,GACAC,GACAJ,GACAhC,CACD;EACA,GAAID;EAEH,UAAAsC;CACQ,CAAA;AAEZ,CAAC;AACD,EAAK,cAAc;AAEnB,IAAMgB,IAAY/B,EAA+D,SAChF,EAAE,cAAW,SAAM,GAAGvB,KACtB,GACC;CACD,OACC,kBAACzB,GAAD;EACM;EACC;EAIN,WAAWY,EAAG,kJAAkJc,CAAS;EACzK,GAAID;CACJ,CAAA;AAEH,CAAC;AACD,EAAU,cAAc;AAExB,IAAMuD,IAAgBhC,EAGpB,SAAuB,EAAE,cAAW,GAAGvB,KAAS,GAAK;CACtD,OAAO,kBAACxB,GAAD;EAAwB;EAAK,WAAWW,EAAG,mBAAmBc,CAAS;EAAG,GAAID;CAAQ,CAAA;AAC9F,CAAC;AACD,EAAc,cAAc;AAE5B,IAAMwC,IAAYjB,EAA+D,SAChF,EAAE,aAAU,WAAW,cAAW,GAAGvB,KACrC,GACC;CACD,IAAMwD,IAAczB,MAAY,WAAWA,MAAY,WAAW,UAAU,WACtE0B,IACL1B,MAAY,SACT5C,EACAM,EAAgC,IAChC,sEACD,IACC,KAAA;CAKJ,OACC,kBAAChB,GAAD;EACM;EACL,SAAS+E;EACT,WAAWrE,EACV,eACA,6DACAsE,GAVF1B,MAAY,WACT,+FACA,KAAA,GAUD9B,CACD;EACA,GAAID;CACJ,CAAA;AAEH,CAAC;AACD,EAAU,cAAc;AAExB,IAAM0C,IAAcnB,EAAmE,SACtF,EAAE,cAAW,aAAU,SAAS,GAAGvB,KACnC,GACC;CACD,OACC,kBAACtB,GAAD;EACM;EACL,WAAWS,EAAG,yBAAyBuE,MAAY,UAAU,kDAAkD,mDAAmDzD,CAAS;EAC3K,GAAID;CACJ,CAAA;AAEH,CAAC;AACD,EAAY,cAAc;AAE1B,IAAMmD,IAAc5B,EAAmE,SACtF,EAAE,cAAW,GAAGvB,KAChB,GACC;CACD,OAAO,kBAACrB,GAAD;EAAsB;EAAK,WAAWQ,EAAG,+CAA+CQ,EAAmB,gBAAgBM,CAAS;EAAG,GAAID;CAAQ,CAAA;AAC3J,CAAC;AACD,EAAY,cAAc;AAE1B,IAAM2D,IAAapC,EAAiE,SACnF,EAAE,cAAW,GAAGvB,KAChB,GACC;CACD,OAAO,kBAACpB,GAAD;EAAqB;EAAK,WAAWO,EAAG,gBAAgBc,CAAS;EAAG,GAAID;CAAQ,CAAA;AACxF,CAAC;AACD,EAAW,cAAc;AAEzB,IAAM4D,IAAarC,EAAiE,SACnF,EAAE,cAAW,GAAGvB,KAChB,GACC;CACD,OAAO,kBAACnB,GAAD;EAAqB;EAAK,WAAWM,EAAG,gBAAgBc,CAAS;EAAG,GAAID;CAAQ,CAAA;AACxF,CAAC;AACD,EAAW,cAAc;AAEzB,IAAM2C,IAAYpB,EAA+D,SAChF,EAAE,UAAO,IAAM,cAAW,aAAU,GAAGvB,KACvC,GACC;CACD,IAAM6D,IAAe,OAAOT,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa;CACzG,OACC,kBAACtE,GAAD;EACM;EACL,WAAWK,EAAG,8FAA8Fc,CAAS;EACrH,GAAID;EAEH,UAAA6D,IAGA,kBAACxE,GAAD;GAAM,GAAIE,EAAc;GAAS,KAAI;GAAO,MAAK;GAAU,QAAQuE,IAAO,aAAa;GAAW,YAAW;GAAQ,WAAU;GAC7H;EACI,CAAA,IACH,kBAACxE,EAAmB,UAApB;GAA6B,OAAA;GAAO;EAAsC,CAAA;CAChE,CAAA;AAEjB,CAAC;AACD,EAAU,cAAc;AAExB,IAAMyE,IAA0E;CAC/E,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,MAAM;AACP,GAEMhB,IAAkBxB,EACvB,SAAyB,EAAE,WAAQ,GAAG,cAAW,aAAU,GAAGvB,KAAS,GAAK;CAC3E,IAAM6D,IAAe,OAAOT,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa;CACzG,OACC,kBAACrE,GAAD;EACM;EACL,WAAWI,EACV,qBACA,OACA,CAAC0E,KAAgB,+CACjBE,EAAYC,IACZ/D,CACD;EACA,GAAID;EAEH,UAAA6D,IACA,kBAACxE,GAAD;GAAM,GAAIE,EAAc;GAAY,KAAI;GAAO,YAAW;GACxD;EACI,CAAA,IACH,kBAACD,EAAmB,UAApB;GAA6B,OAAA;GAAO;EAAsC,CAAA;CAC1D,CAAA;AAEvB,CACD;AACA,EAAgB,cAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout.types-E_GAApzO.js","names":["cn","defaultRenderLink","props","disabled","href","onClick","target","external","rel","interactionRecipes","resolveLayoutLinkRenderer","renderLink"],"sources":["../src/components/layout/layout.types.tsx"],"sourcesContent":[" \n/**\n * Shared layout types used across page, header, and sidebar.\n *\n * The layout layer is framework-agnostic by contract. It never imports a\n * router package. Navigation is delegated to the consumer through\n * `renderLink`.\n */\nimport type { AriaAttributes, ComponentType, HTMLAttributes, MouseEvent, MouseEventHandler, ReactNode } from 'react';\n\nimport { interactionRecipes } from '../../lib/interaction-recipes';\nimport { cn } from '../../lib/utils';\n\n/** Native region props, including strongly typed consumer `data-*` hooks. */\nexport type LayoutSlotAttributes<ElementType extends HTMLElement> =\n\tHTMLAttributes<ElementType>\n\t& { [Key in `data-${string}`]?: string | number | boolean | undefined };\n\nexport interface LayoutLinkRenderProps {\n\t/** Destination URL. Without a URL, the default renders a button when onClick is supplied. */\n\thref?: string;\n\tchildren: ReactNode;\n\tclassName?: string;\n\ttarget?: string;\n\trel?: string;\n\tonClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n\t'aria-label'?: string;\n\t/** Current-page state supplied by a navigation owner. */\n\t'aria-current'?: AriaAttributes['aria-current'];\n\t/** Consumer hint for active styling; renderers may ignore it. */\n\tactive?: boolean;\n\t/** Consumer hint to render as muted/non-interactive. */\n\tdisabled?: boolean;\n\t/** Consumer hint for external-link behavior. */\n\texternal?: boolean;\n}\n\n/**\n * Primary navigation seam. Consumers can wire Inertia, Next, React Router,\n * TanStack Router, or a plain anchor without this package importing them.\n *\n * Example:\n * renderLink={({ href, children, className }) => (\n * <Link href={href ?? '#'} className={className}>{children}</Link>\n * )}\n */\nexport type LayoutLinkRenderer = (props: LayoutLinkRenderProps) => ReactNode;\n\nexport interface LayoutNavigationAdapter {\n\t/** Renderer for framework-native links. */\n\trenderLink?: LayoutLinkRenderer;\n}\n\n/** Renders native links, callback buttons and inert entries. */\nexport const defaultRenderLink: LayoutLinkRenderer = ({\n\thref,\n\tchildren,\n\tactive,\n\tdisabled,\n\texternal,\n\trel,\n\ttarget,\n\tonClick,\n\t...props\n}) => {\n\tvoid active;\n\n\tif (disabled || (!href && !onClick)) {\n\t\treturn <span {...props} aria-disabled={disabled || undefined}>{children}</span>;\n\t}\n\n\tif (!href) {\n\t\t// Keep the anchor-typed renderer contract for existing router adapters.\n\t\treturn (\n\t\t\t<button\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onClick as MouseEventHandler<HTMLElement> | undefined}\n\t\t\t\tclassName={cn(interactionRecipes.nativeButtonReset, 'cursor-pointer text-start text-inherit', props.className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</button>\n\t\t);\n\t}\n\n\tconst resolvedTarget = target ?? (external ? '_blank' : undefined);\n\tconst resolvedRel = rel ?? (external ? 'noopener noreferrer' : undefined);\n\n\treturn (\n\t\t<a href={href} target={resolvedTarget} rel={resolvedRel} onClick={onClick} {...props}>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\n/** Resolve the consumer renderer or the native-anchor default. */\nexport function resolveLayoutLinkRenderer({\n\trenderLink,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\tif (renderLink) return renderLink;\n\treturn defaultRenderLink;\n}\n\n/** Plain navigation item used by sidebar / breadcrumbs / page header. */\nexport interface NavLink {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\thandle?: string;\n\t/** Chip rendered beside the label. */\n\tbadge?: string | number;\n\t/** Disables the control. */\n\tdisabled?: boolean;\n\texternal?: boolean;\n}\n\n/** Hierarchical navigation item — extends `NavLink` with optional children. */\nexport interface NavItem extends NavLink {\n\t/** Leading glyph. */\n\ticon?: LayoutIconSource;\n\tchildren?: NavItem[];\n\tgroup?: string;\n}\n\n/** Breadcrumb entry. The last item with no `href` renders as the current page. */\nexport interface BreadcrumbItem {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\thandle?: string;\n}\n\nexport type LayoutIconComponent = ComponentType<React.SVGProps<SVGSVGElement>>;\nexport type LayoutIconSource = LayoutIconComponent | string;\n\nexport interface LayoutUser {\n\tname: string;\n\temail?: string;\n\tavatar?: string;\n\trole?: string;\n}\n\nexport interface ExternalLinkItem {\n\t/** Display label. */\n\tlabel: ReactNode;\n\turl: string;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n}\n"],"mappings":";;;;;AAsDA,IAAaC,KAAyC,EACrD,SACA,aACA,WACA,aACA,aACA,QACA,WACA,YACA,GAAGC,QAICC,KAAa,CAACC,KAAQ,CAACC,IACnB,kBAAC,QAAD;CAAM,GAAIH;CAAO,iBAAeC,KAAY,KAAA;CAAY;AAAe,CAAA,IAG1EC,IAkBJ,kBAAC,KAAD;CAAS;CAAM,QAJOE,MAAWC,IAAW,WAAW,KAAA;CAIhB,KAHpBC,MAAQD,IAAW,wBAAwB,KAAA;CAGI;CAAS,GAAIL;CAC7E;AACC,CAAA,IAjBF,kBAAC,UAAD;CACC,GAAIA;CACJ,MAAK;CACI;CACT,WAAWF,EAAGS,EAAmB,mBAAmB,0CAA0CP,EAAM,SAAS;CAE5G;AACM,CAAA;AAeX,SAAgBQ,EAA0B,EACzC,kBAC4B,CAAC,GAAuB;CAEpD,OADIC,KACGV;AACR"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-DhuoqFy4.js";
|
|
4
|
-
import { c as n } from "./typography-C7-YMW1S.js";
|
|
5
|
-
import { t as r } from "./focus-recipes-B653VaLq.js";
|
|
6
|
-
import { r as i, t as a } from "./structure-DZJ2wbAU.js";
|
|
7
|
-
import { i as o } from "./tone-recipes-BPsRAvhu.js";
|
|
8
|
-
import { t as s } from "./badge-wWauMgAt.js";
|
|
9
|
-
import { n as c } from "./field-affordance-recipes-D6H7tVJi.js";
|
|
10
|
-
import { n as l, t as u } from "./upload.recipes-BbxTqrCT.js";
|
|
11
|
-
import { forwardRef as d, useCallback as f, useEffect as p, useId as m, useMemo as h, useRef as g, useState as _ } from "react";
|
|
12
|
-
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
13
|
-
import { ImagePlus as b, X as x } from "lucide-react";
|
|
14
|
-
import { DndContext as S, KeyboardSensor as ee, PointerSensor as C, useSensor as w, useSensors as T } from "@dnd-kit/core";
|
|
15
|
-
import { SortableContext as E, rectSortingStrategy as D, sortableKeyboardCoordinates as O, useSortable as k } from "@dnd-kit/sortable";
|
|
16
|
-
import { CSS as A } from "@dnd-kit/utilities";
|
|
17
|
-
//#region src/components/base/media-gallery/media-gallery.tsx
|
|
18
|
-
var j = {
|
|
19
|
-
addInstruction: "Drop or click to add images",
|
|
20
|
-
helper: "",
|
|
21
|
-
dragOver: "Release to select",
|
|
22
|
-
cover: "Cover",
|
|
23
|
-
removeAria: "Remove image",
|
|
24
|
-
maxReached: "You have reached the maximum number of images.",
|
|
25
|
-
pickedUp: "Picked up {name}.",
|
|
26
|
-
movedTo: "{name} moved to position {position}.",
|
|
27
|
-
dropped: "Dropped {name}.",
|
|
28
|
-
cancelled: "Sorting cancelled for {name}."
|
|
29
|
-
}, M = 0, N = () => `media-${Date.now().toString(36)}-${(M++).toString(36)}`;
|
|
30
|
-
function P({ item: e, isFirst: n, disabled: i, onRemove: a, strings: l, tileClassName: u }) {
|
|
31
|
-
let { attributes: d, listeners: f, setNodeRef: p, setActivatorNodeRef: m, transform: h, transition: g, isDragging: _ } = k({
|
|
32
|
-
id: e.id,
|
|
33
|
-
disabled: i
|
|
34
|
-
}), b = {
|
|
35
|
-
transform: A.Transform.toString(h),
|
|
36
|
-
transition: g
|
|
37
|
-
};
|
|
38
|
-
return /* @__PURE__ */ y("div", {
|
|
39
|
-
ref: p,
|
|
40
|
-
style: b,
|
|
41
|
-
className: t("media-gallery--item", "group relative aspect-square overflow-hidden rounded-radius border border-border/60 bg-muted/30", _ && `z-10 shadow-lg ring-2 ${o.primary.halo}`, i && "opacity-50", u),
|
|
42
|
-
children: [/* @__PURE__ */ y("div", {
|
|
43
|
-
ref: m,
|
|
44
|
-
"aria-label": e.file.name,
|
|
45
|
-
className: t(`absolute inset-0 cursor-grab outline-none active:cursor-grabbing ${r.inset}`, i && "pointer-events-none"),
|
|
46
|
-
...d,
|
|
47
|
-
...f,
|
|
48
|
-
children: [/* @__PURE__ */ v("img", {
|
|
49
|
-
src: e.previewUrl,
|
|
50
|
-
alt: e.file.name,
|
|
51
|
-
className: "absolute inset-0 size-full object-cover",
|
|
52
|
-
draggable: !1
|
|
53
|
-
}), n && /* @__PURE__ */ v(s, {
|
|
54
|
-
size: "sm",
|
|
55
|
-
tone: "secondary",
|
|
56
|
-
className: "media-gallery--cover absolute start-space-sm top-space-sm bg-card shadow-sm ring-1 ring-border",
|
|
57
|
-
children: l.cover
|
|
58
|
-
})]
|
|
59
|
-
}), /* @__PURE__ */ v("button", {
|
|
60
|
-
type: "button",
|
|
61
|
-
"aria-label": `${l.removeAria}: ${e.file.name}`,
|
|
62
|
-
disabled: i,
|
|
63
|
-
onPointerDown: (e) => e.stopPropagation(),
|
|
64
|
-
onClick: (e) => {
|
|
65
|
-
e.stopPropagation(), a();
|
|
66
|
-
},
|
|
67
|
-
className: t(c.target, c.focus, "absolute end-space-sm top-space-sm z-10 bg-card text-card-foreground shadow-sm ring-1 ring-border", "opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100"),
|
|
68
|
-
children: /* @__PURE__ */ v(x, { className: c.icon })
|
|
69
|
-
})]
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
var F = d(function({ value: r, onValueChange: o, accept: s = ".png,.jpg,.jpeg,.gif,.webp", maxFiles: c, disabled: d = !1, invalid: x = !1, className: k, tileClassName: A, strings: M }, F) {
|
|
73
|
-
let I = e(j, M), L = m(), R = g(null), [z, B] = _([]), V = T(w(C, { activationConstraint: { distance: 6 } }), w(ee, { coordinateGetter: O })), H = g([]);
|
|
74
|
-
H.current = z, p(() => {
|
|
75
|
-
if (!r) return;
|
|
76
|
-
let e = H.current;
|
|
77
|
-
if (e.length === r.length && e.every((e, t) => e.file === r[t])) return;
|
|
78
|
-
let t = [...e], n = r.map((e) => {
|
|
79
|
-
let n = t.findIndex((t) => t.file === e);
|
|
80
|
-
return n >= 0 ? t.splice(n, 1)[0] : {
|
|
81
|
-
id: N(),
|
|
82
|
-
file: e,
|
|
83
|
-
previewUrl: URL.createObjectURL(e)
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
t.forEach((e) => URL.revokeObjectURL(e.previewUrl)), H.current = n, B(n);
|
|
87
|
-
}, [r]), p(() => () => {
|
|
88
|
-
H.current.forEach((e) => URL.revokeObjectURL(e.previewUrl)), H.current = [];
|
|
89
|
-
}, []);
|
|
90
|
-
let U = f((e) => {
|
|
91
|
-
H.current = e, B(e), o?.(e.map((e) => e.file));
|
|
92
|
-
}, [o]), W = f((e) => {
|
|
93
|
-
if (d) return;
|
|
94
|
-
let t = H.current, n = s.split(",").map((e) => e.trim().toLowerCase()).filter(Boolean), r = e.filter((e) => n.length === 0 || n.some((t) => t.startsWith(".") ? e.name.toLowerCase().endsWith(t) : t.endsWith("/*") ? e.type.toLowerCase().startsWith(t.slice(0, -1)) : e.type.toLowerCase() === t)), i = c !== void 0 && Number.isFinite(c) ? Math.max(0, Math.floor(c) - t.length) : r.length, a = r.slice(0, i).map((e) => ({
|
|
95
|
-
id: N(),
|
|
96
|
-
file: e,
|
|
97
|
-
previewUrl: URL.createObjectURL(e)
|
|
98
|
-
}));
|
|
99
|
-
a.length > 0 && U([...t, ...a]);
|
|
100
|
-
}, [
|
|
101
|
-
s,
|
|
102
|
-
U,
|
|
103
|
-
d,
|
|
104
|
-
c
|
|
105
|
-
]), G = f((e) => {
|
|
106
|
-
if (d) return;
|
|
107
|
-
let t = H.current, n = t.find((t) => t.id === e);
|
|
108
|
-
n && (URL.revokeObjectURL(n.previewUrl), U(t.filter((t) => t.id !== e)));
|
|
109
|
-
}, [U, d]), K = f((e) => {
|
|
110
|
-
let t = e.target.files;
|
|
111
|
-
t && t.length !== 0 && (W(Array.from(t)), R.current && (R.current.value = ""));
|
|
112
|
-
}, [W]), { isDragging: q, dropTargetProps: J } = l({
|
|
113
|
-
disabled: d,
|
|
114
|
-
onFiles: W
|
|
115
|
-
}), Y = f((e) => {
|
|
116
|
-
if (d) return;
|
|
117
|
-
let { active: t, over: n } = e;
|
|
118
|
-
if (!n || t.id === n.id) return;
|
|
119
|
-
let r = H.current, i = r.findIndex((e) => e.id === t.id), a = r.findIndex((e) => e.id === n.id);
|
|
120
|
-
if (i < 0 || a < 0) return;
|
|
121
|
-
let o = [...r], [s] = o.splice(i, 1);
|
|
122
|
-
o.splice(a, 0, s), U(o);
|
|
123
|
-
}, [U, d]), X = (e, t, n) => e.replace("{name}", z.find((e) => e.id === t)?.file.name ?? I.removeAria).replace("{position}", String(z.findIndex((e) => e.id === (n ?? t)) + 1)), Z = {
|
|
124
|
-
onDragStart: ({ active: e }) => X(I.pickedUp ?? j.pickedUp, e.id),
|
|
125
|
-
onDragOver: ({ active: e, over: t }) => t ? X(I.movedTo ?? j.movedTo, e.id, t.id) : void 0,
|
|
126
|
-
onDragEnd: ({ active: e }) => X(I.dropped ?? j.dropped, e.id),
|
|
127
|
-
onDragCancel: ({ active: e }) => X(I.cancelled ?? j.cancelled, e.id)
|
|
128
|
-
}, Q = h(() => z.map((e) => e.id), [z]), $ = c !== void 0 && z.length >= c;
|
|
129
|
-
return /* @__PURE__ */ y(a, {
|
|
130
|
-
ref: F,
|
|
131
|
-
gap: "lg",
|
|
132
|
-
className: t("media-gallery--component", k),
|
|
133
|
-
children: [
|
|
134
|
-
/* @__PURE__ */ v(S, {
|
|
135
|
-
sensors: V,
|
|
136
|
-
onDragEnd: Y,
|
|
137
|
-
accessibility: { announcements: Z },
|
|
138
|
-
children: /* @__PURE__ */ v(E, {
|
|
139
|
-
items: Q,
|
|
140
|
-
strategy: D,
|
|
141
|
-
children: /* @__PURE__ */ y(i, {
|
|
142
|
-
columns: {
|
|
143
|
-
base: 2,
|
|
144
|
-
sm: 3,
|
|
145
|
-
md: 4
|
|
146
|
-
},
|
|
147
|
-
gap: "md",
|
|
148
|
-
children: [z.map((e, t) => /* @__PURE__ */ v(P, {
|
|
149
|
-
item: e,
|
|
150
|
-
isFirst: t === 0,
|
|
151
|
-
disabled: d,
|
|
152
|
-
onRemove: () => G(e.id),
|
|
153
|
-
strings: I,
|
|
154
|
-
tileClassName: A
|
|
155
|
-
}, e.id)), !$ && /* @__PURE__ */ y("div", {
|
|
156
|
-
...J,
|
|
157
|
-
className: t("relative flex aspect-square items-center justify-center rounded-radius border border-dashed text-center outline-none transition-colors", u.hover, "has-[input:focus-visible]:ring-3", x ? t(u.invalid, u.focus.input.invalid) : t(u.idle, u.focus.input.valid), d && "cursor-not-allowed opacity-50", !d && q && u.dragging),
|
|
158
|
-
children: [/* @__PURE__ */ v("input", {
|
|
159
|
-
id: L,
|
|
160
|
-
ref: R,
|
|
161
|
-
type: "file",
|
|
162
|
-
className: "absolute inset-0 z-10 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed",
|
|
163
|
-
"aria-label": I.addInstruction,
|
|
164
|
-
"aria-invalid": x || void 0,
|
|
165
|
-
accept: s,
|
|
166
|
-
multiple: !0,
|
|
167
|
-
disabled: d,
|
|
168
|
-
onChange: K
|
|
169
|
-
}), /* @__PURE__ */ y(a, {
|
|
170
|
-
align: "center",
|
|
171
|
-
gap: "sm",
|
|
172
|
-
className: "px-space-sm",
|
|
173
|
-
children: [/* @__PURE__ */ v(b, {
|
|
174
|
-
className: "size-icon-lg text-muted-foreground",
|
|
175
|
-
"aria-hidden": "true"
|
|
176
|
-
}), /* @__PURE__ */ v(n, {
|
|
177
|
-
weight: "medium",
|
|
178
|
-
align: "center",
|
|
179
|
-
children: q ? I.dragOver : I.addInstruction
|
|
180
|
-
})]
|
|
181
|
-
})]
|
|
182
|
-
})]
|
|
183
|
-
})
|
|
184
|
-
})
|
|
185
|
-
}),
|
|
186
|
-
!!$ && /* @__PURE__ */ v(n, {
|
|
187
|
-
size: "xs",
|
|
188
|
-
type: "secondary",
|
|
189
|
-
children: I.maxReached
|
|
190
|
-
}),
|
|
191
|
-
!$ && !!I.helper && /* @__PURE__ */ v(n, {
|
|
192
|
-
size: "xs",
|
|
193
|
-
type: "secondary",
|
|
194
|
-
children: I.helper
|
|
195
|
-
})
|
|
196
|
-
]
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
F.displayName = "MediaGallery";
|
|
200
|
-
//#endregion
|
|
201
|
-
export { j as n, F as t };
|
|
202
|
-
|
|
203
|
-
//# sourceMappingURL=media-gallery-C81DAnKI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-gallery-C81DAnKI.js","names":["Text","focusRecipes","Grid","Stack","toneRecipes","Badge","fieldAffordanceRecipes","useFileDropTarget","uploadDropTargetRecipes","defaultMediaGalleryStrings","counter","makeId","SortableTile","useSortable","item","style","CSS","transform","setNodeRef","cn","isDragging","disabled","tileClassName","setActivatorNodeRef","attributes","listeners","isFirst","strings","onRemove","X","MediaGallery","forwardRef","stringsProp","useStrings","inputId","useId","inputRef","useRef","items","setItems","useState","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","itemsRef","useEffect","value","prev","index","remaining","next","file","it","commit","useCallback","onValueChange","addFiles","rules","accept","rule","accepted","incoming","limit","maxFiles","additions","remove","target","id","onPickerChange","list","onDragEnd","event","over","active","from","to","moved","announce","template","overId","announcements","tileIds","useMemo","isFull","className","DndContext","SortableContext","rectSortingStrategy","i","dropTargetProps","invalid","ImagePlus"],"sources":["../src/components/base/media-gallery/media-gallery.tsx"],"sourcesContent":["/**\n * MediaGallery — multi-image upload + sortable thumbnail grid. Drop a batch\n * of images onto the dashed top tile or click to open the picker; tiles\n * appear inline and can be reordered via drag (`@dnd-kit/sortable`). The\n * first tile is implicitly the \"cover\" and is marked with a small chip;\n * each tile has a hover-revealed remove button.\n *\n * Use for product galleries, mood boards, or any collection where the order\n * matters and the consumer needs the final `File[]` (and the order of those\n * files) on submit.\n *\n * Strings overridable for i18n.\n */\nimport { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport {\n\tDndContext,\n\ttype DragEndEvent,\n\ttype Announcements,\n\tPointerSensor,\n\tKeyboardSensor,\n\tuseSensor,\n\tuseSensors,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\trectSortingStrategy,\n\tsortableKeyboardCoordinates,\n\tuseSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { ImagePlus, X } from 'lucide-react';\nimport { Badge } from '../badge';\nimport { Text } from '../../typography';\nimport { Grid, Stack } from '../structure';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { fieldAffordanceRecipes } from '../../../lib/field-affordance-recipes';\nimport { useFileDropTarget } from '../upload/use-file-drop-target';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { uploadDropTargetRecipes } from '../upload/upload.recipes';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\nexport interface MediaGalleryStrings {\n\taddInstruction: string;\n\thelper: string;\n\tdragOver: string;\n\tcover: string;\n\tremoveAria: string;\n\tmaxReached: string;\n\t/** Sort announcements; {name} is the filename and {position} is its one-based position. */\n\tpickedUp?: string;\n\tmovedTo?: string;\n\tdropped?: string;\n\tcancelled?: string;\n}\n\nexport const defaultMediaGalleryStrings = {\n\taddInstruction: 'Drop or click to add images',\n\thelper: '',\n\tdragOver: 'Release to select',\n\tcover: 'Cover',\n\tremoveAria: 'Remove image',\n\tmaxReached: 'You have reached the maximum number of images.',\n\tpickedUp: 'Picked up {name}.',\n\tmovedTo: '{name} moved to position {position}.',\n\tdropped: 'Dropped {name}.',\n\tcancelled: 'Sorting cancelled for {name}.',\n} satisfies MediaGalleryStrings;\n\nexport interface MediaGalleryProps {\n\t/** Selected files. Controlled. */\n\tvalue?: File[];\n\tonValueChange?: (files: File[]) => void;\n\t/** Accepted MIME types or extensions. */\n\taccept?: string;\n\t/** Caps how many files may be added. */\n\tmaxFiles?: number;\n\t/** Disables the control and blocks drops. */\n\tdisabled?: boolean;\n\t/** Applies the invalid styling. */\n\tinvalid?: boolean;\n\tclassName?: string;\n\t/** Merged onto each media tile. */\n\ttileClassName?: string;\n\t/** Overrides the upload, remove, and empty copy. */\n\tstrings?: StringsProp<MediaGalleryStrings>;\n}\n\ninterface InternalItem {\n\tid: string;\n\tfile: File;\n\tpreviewUrl: string;\n}\n\nlet counter = 0;\nconst makeId = () => `media-${Date.now().toString(36)}-${(counter++).toString(36)}`;\n\nfunction SortableTile({\n\titem,\n\tisFirst,\n\tdisabled,\n\tonRemove,\n\tstrings,\n\ttileClassName,\n}: {\n\titem: InternalItem;\n\tisFirst: boolean;\n\t/** Disables the control and blocks drops. */\n\tdisabled: boolean;\n\tonRemove: () => void;\n\t/** Overrides the upload, remove, and empty copy. */\n\tstrings: MediaGalleryStrings;\n\t/** Merged onto each media tile. */\n\ttileClassName?: string;\n}) {\n\tconst { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } =\n\t\tuseSortable({ id: item.id, disabled });\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t} as React.CSSProperties;\n\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tstyle={style}\n\t\t\tclassName={cn(\n\t\t\t\t'media-gallery--item',\n\t\t\t\t'group relative aspect-square overflow-hidden rounded-radius border border-border/60 bg-muted/30',\n\t\t\t\tisDragging && `z-10 shadow-lg ring-2 ${toneRecipes.primary.halo}`,\n\t\t\t\tdisabled && 'opacity-50',\n\t\t\t\ttileClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={setActivatorNodeRef}\n\t\t\t\taria-label={item.file.name}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`absolute inset-0 cursor-grab outline-none active:cursor-grabbing ${focusRecipes.inset}`,\n\t\t\t\t\tdisabled && 'pointer-events-none',\n\t\t\t\t)}\n\t\t\t\t{...attributes}\n\t\t\t\t{...listeners}\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\tsrc={item.previewUrl}\n\t\t\t\t\talt={item.file.name}\n\t\t\t\t\tclassName=\"absolute inset-0 size-full object-cover\"\n\t\t\t\t\tdraggable={false}\n\t\t\t\t/>\n\t\t\t\t{isFirst && (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tclassName=\"media-gallery--cover absolute start-space-sm top-space-sm bg-card shadow-sm ring-1 ring-border\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.cover}\n\t\t\t\t\t</Badge>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={`${strings.removeAria}: ${item.file.name}`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonPointerDown={(e) => e.stopPropagation()}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tonRemove();\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\t\t'absolute end-space-sm top-space-sm z-10 bg-card text-card-foreground shadow-sm ring-1 ring-border',\n\t\t\t\t\t'opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<X className={fieldAffordanceRecipes.icon} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n\nexport const MediaGallery = forwardRef<HTMLDivElement, MediaGalleryProps>(function MediaGallery({\n\tvalue,\n\tonValueChange,\n\taccept = '.png,.jpg,.jpeg,.gif,.webp',\n\tmaxFiles,\n\tdisabled = false,\n\tinvalid = false,\n\tclassName,\n\ttileClassName,\n\tstrings: stringsProp,\n}: MediaGalleryProps, ref) {\n\tconst strings = useStrings(defaultMediaGalleryStrings, stringsProp);\n\tconst inputId = useId();\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [items, setItems] = useState<InternalItem[]>([]);\n\n\tconst sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));\n\n\t// Track the live preview-URL set in a ref so the unmount cleanup sees the\n\t// latest values without depending on render-time `items`. Without this,\n\t// the cleanup closes over the initial empty array and any object URLs\n\t// created during the lifetime of the component leak (the browser will\n\t// still hold them until the document unloads).\n\tconst itemsRef = useRef<InternalItem[]>([]);\n\titemsRef.current = items;\n\n\t// Reconcile by file identity so order changes preserve sortable ids and URLs.\n\tuseEffect(() => {\n\t\tif (!value) return;\n\t\tconst prev = itemsRef.current;\n\t\tif (prev.length === value.length && prev.every((item, index) => item.file === value[index])) return;\n\t\tconst remaining = [...prev];\n\t\tconst next = value.map((file) => {\n\t\t\tconst index = remaining.findIndex((item) => item.file === file);\n\t\t\tif (index >= 0) return remaining.splice(index, 1)[0];\n\t\t\treturn { id: makeId(), file, previewUrl: URL.createObjectURL(file) };\n\t\t});\n\t\tremaining.forEach((item) => URL.revokeObjectURL(item.previewUrl));\n\t\titemsRef.current = next;\n\t\tsetItems(next);\n\t}, [value]);\n\n\t// Cleanup on unmount — revoke whatever previews were live at the time.\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\titemsRef.current.forEach((it) => URL.revokeObjectURL(it.previewUrl));\n\t\t\titemsRef.current = [];\n\t\t};\n\t}, []);\n\n\tconst commit = useCallback((next: InternalItem[]) => {\n\t\titemsRef.current = next;\n\t\tsetItems(next);\n\t\tonValueChange?.(next.map((item) => item.file));\n\t}, [onValueChange]);\n\n\tconst addFiles = useCallback((incoming: File[]) => {\n\t\tif (disabled) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst rules = accept.split(',').map((rule) => rule.trim().toLowerCase()).filter(Boolean);\n\t\tconst accepted = incoming.filter((file) => rules.length === 0 || rules.some((rule) => {\n\t\t\tif (rule.startsWith('.')) return file.name.toLowerCase().endsWith(rule);\n\t\t\tif (rule.endsWith('/*')) return file.type.toLowerCase().startsWith(rule.slice(0, -1));\n\t\t\treturn file.type.toLowerCase() === rule;\n\t\t}));\n\t\tconst limit = maxFiles !== undefined && Number.isFinite(maxFiles) ? Math.max(0, Math.floor(maxFiles) - prev.length) : accepted.length;\n\t\tconst additions = accepted.slice(0, limit).map((file) => ({ id: makeId(), file, previewUrl: URL.createObjectURL(file) }));\n\t\tif (additions.length > 0) commit([...prev, ...additions]);\n\t}, [accept, commit, disabled, maxFiles]);\n\n\tconst remove = useCallback((id: string) => {\n\t\tif (disabled) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst target = prev.find((item) => item.id === id);\n\t\tif (!target) return;\n\t\tURL.revokeObjectURL(target.previewUrl);\n\t\tcommit(prev.filter((item) => item.id !== id));\n\t}, [commit, disabled]);\n\n\tconst onPickerChange = useCallback(\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst list = e.target.files;\n\t\t\tif (!list || list.length === 0) return;\n\t\t\taddFiles(Array.from(list));\n\t\t\tif (inputRef.current) inputRef.current.value = '';\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tconst { isDragging, dropTargetProps } = useFileDropTarget({ disabled, onFiles: addFiles });\n\tconst onDragEnd = useCallback((event: DragEndEvent) => {\n\t\tif (disabled) return;\n\t\tconst { active, over } = event;\n\t\tif (!over || active.id === over.id) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst from = prev.findIndex((item) => item.id === active.id);\n\t\tconst to = prev.findIndex((item) => item.id === over.id);\n\t\tif (from < 0 || to < 0) return;\n\t\tconst next = [...prev];\n\t\tconst [moved] = next.splice(from, 1);\n\t\tnext.splice(to, 0, moved);\n\t\tcommit(next);\n\t}, [commit, disabled]);\n\n\tconst announce = (template: string, id: string | number, overId?: string | number) => template\n\t\t.replace('{name}', items.find(item => item.id === id)?.file.name ?? strings.removeAria)\n\t\t.replace('{position}', String(items.findIndex(item => item.id === (overId ?? id)) + 1));\n\tconst announcements: Announcements = {\n\t\tonDragStart: ({ active }) => announce(strings.pickedUp ?? defaultMediaGalleryStrings.pickedUp, active.id),\n\t\tonDragOver: ({ active, over }) => over ? announce(strings.movedTo ?? defaultMediaGalleryStrings.movedTo, active.id, over.id) : undefined,\n\t\tonDragEnd: ({ active }) => announce(strings.dropped ?? defaultMediaGalleryStrings.dropped, active.id),\n\t\tonDragCancel: ({ active }) => announce(strings.cancelled ?? defaultMediaGalleryStrings.cancelled, active.id),\n\t};\n\tconst tileIds = useMemo(() => items.map((it) => it.id), [items]);\n\tconst isFull = maxFiles !== undefined && items.length >= maxFiles;\n\n\treturn (\n\t\t<Stack ref={ref} gap=\"lg\" className={cn('media-gallery--component', className)}>\n\t\t\t<DndContext sensors={sensors} onDragEnd={onDragEnd} accessibility={{ announcements }}>\n\t\t\t\t<SortableContext items={tileIds} strategy={rectSortingStrategy}>\n\t\t\t\t\t<Grid columns={{ base: 2, sm: 3, md: 4 }} gap=\"md\">\n\t\t\t\t\t\t{items.map((item, i) => (\n\t\t\t\t\t\t\t<SortableTile\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tisFirst={i === 0}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tonRemove={() => remove(item.id)}\n\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\ttileClassName={tileClassName}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t{!isFull && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...dropTargetProps}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'relative flex aspect-square items-center justify-center rounded-radius border border-dashed text-center outline-none transition-colors',\n\t\t\t\t\t\t\t\t\tuploadDropTargetRecipes.hover,\n\t\t\t\t\t\t\t\t\t// Keyboard focus on the file input frames the tile like any field; an\n\t\t\t\t\t\t\t\t\t// invalid tile keeps its destructive border and tints the halo.\n\t\t\t\t\t\t\t\t\t'has-[input:focus-visible]:ring-3',\n\t\t\t\t\t\t\t\t\tinvalid ? cn(uploadDropTargetRecipes.invalid, uploadDropTargetRecipes.focus.input.invalid) : cn(uploadDropTargetRecipes.idle, uploadDropTargetRecipes.focus.input.valid),\n\t\t\t\t\t\t\t\t\tdisabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t\t\t\t!disabled && isDragging && uploadDropTargetRecipes.dragging,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\t\t\tclassName=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n\t\t\t\t\t\t\t\t\taria-label={strings.addInstruction}\n\t\t\t\t\t\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t\t\t\t\t\taccept={accept}\n\t\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonChange={onPickerChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Stack align=\"center\" gap=\"sm\" className=\"px-space-sm\">\n\t\t\t\t\t\t\t\t\t<ImagePlus className=\"size-icon-lg text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" align=\"center\">\n\t\t\t\t\t\t\t\t\t\t{isDragging ? strings.dragOver : strings.addInstruction}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Grid>\n\t\t\t\t</SortableContext>\n\t\t\t</DndContext>\n\n\t\t\t{!!isFull && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.maxReached}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{!isFull && !!strings.helper && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.helper}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nMediaGallery.displayName = 'MediaGallery';\n"],"mappings":"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"}
|