themelia-react-ui 2.0.6 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +250 -0
- package/MIGRATION.md +746 -7
- package/README.md +27 -23
- package/dist/{accordion-0tQUZ20r.js → accordion-DNVqwEIC.js} +36 -36
- package/dist/accordion-DNVqwEIC.js.map +1 -0
- package/dist/action-menu-D5343RwT.js +286 -0
- package/dist/action-menu-D5343RwT.js.map +1 -0
- package/dist/ai-artifact-otrz9ZwS.js +1214 -0
- package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
- package/dist/anchored-positioning-1U_eBFNx.js +9 -0
- package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
- package/dist/app-shell-CPN30Nb1.js +372 -0
- package/dist/app-shell-CPN30Nb1.js.map +1 -0
- package/dist/{attachment-BCpA4e7i.js → attachment-D2-fpfmv.js} +15 -15
- package/dist/{attachment-BCpA4e7i.js.map → attachment-D2-fpfmv.js.map} +1 -1
- package/dist/{auth-B0girIk_.js → auth-g_oUTDDC.js} +234 -241
- package/dist/auth-g_oUTDDC.js.map +1 -0
- package/dist/{avatar-B9Jnp-T-.js → avatar-Ca3Ihrq4.js} +4 -4
- package/dist/{avatar-B9Jnp-T-.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
- package/dist/{badge-wWauMgAt.js → badge-oGiXblW7.js} +8 -9
- package/dist/badge-oGiXblW7.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +2 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +11 -11
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +2 -2
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +13 -13
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +203 -2
- package/dist/base/media-gallery.js.map +1 -0
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +32 -22
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +91 -88
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sidebar.js +2 -2
- package/dist/base/signature-pad.js +14 -14
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +6 -12
- package/dist/base/spinner.js.map +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +3 -3
- package/dist/base/toaster.js +2 -2
- package/dist/base/tree.js +2 -2
- package/dist/base/upload-queue.js +303 -2
- package/dist/base/upload-queue.js.map +1 -0
- package/dist/base/upload.js +3 -4
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BoqWIIpV.js → batch-action-bar-D6MZQNnC.js} +10 -10
- package/dist/{batch-action-bar-BoqWIIpV.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
- package/dist/blocks/admin.js +242 -228
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +395 -357
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/charts.js +1022 -0
- package/dist/blocks/analytics/charts.js.map +1 -0
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +171 -1365
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1487 -1358
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -3
- package/dist/blocks/onboarding.js +91 -82
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +25 -25
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +2 -2
- package/dist/{breadcrumbs-Bp9Ke7kd.js → breadcrumbs-CQ9JSlez.js} +52 -45
- package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
- package/dist/{button-ChBovTx0.js → button-rd6FiHfQ.js} +12 -8
- package/dist/button-rd6FiHfQ.js.map +1 -0
- package/dist/{buttons-DeW0bQeK.js → buttons-pZVgPTZn.js} +230 -246
- package/dist/buttons-pZVgPTZn.js.map +1 -0
- package/dist/{cards-CNXnmvV5.js → cards-CgWyqvgZ.js} +25 -22
- package/dist/{cards-CNXnmvV5.js.map → cards-CgWyqvgZ.js.map} +1 -1
- package/dist/cascader-Cf05pwaq.js +444 -0
- package/dist/cascader-Cf05pwaq.js.map +1 -0
- package/dist/{chart-I7ROnsl8.js → chart-CygRCyIZ.js} +5 -5
- package/dist/{chart-I7ROnsl8.js.map → chart-CygRCyIZ.js.map} +1 -1
- package/dist/{checkbox-MoyHIAPs.js → checkbox-Dy5_XBMZ.js} +4 -4
- package/dist/{checkbox-MoyHIAPs.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
- package/dist/{choice-inputs-DHGtx0QV.js → choice-inputs-oJEsrb5Y.js} +113 -114
- package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
- package/dist/{code-block-BSJyq9e-.js → code-block-BrLD7mCi.js} +44 -60
- package/dist/code-block-BrLD7mCi.js.map +1 -0
- package/dist/collapsible-CRCCg_bO.js +80 -0
- package/dist/collapsible-CRCCg_bO.js.map +1 -0
- package/dist/{collection-content-CSnwtOTH.js → collection-content-D7SoDlYd.js} +3 -3
- package/dist/{collection-content-CSnwtOTH.js.map → collection-content-D7SoDlYd.js.map} +1 -1
- package/dist/combobox-Dl6f6kHz.js +362 -0
- package/dist/combobox-Dl6f6kHz.js.map +1 -0
- package/dist/combobox-DrDXtSSt.js +929 -0
- package/dist/combobox-DrDXtSSt.js.map +1 -0
- package/dist/command-CjZ2VzKC.js +432 -0
- package/dist/command-CjZ2VzKC.js.map +1 -0
- package/dist/comments-C2MZyRmh.js +1214 -0
- package/dist/comments-C2MZyRmh.js.map +1 -0
- package/dist/components/base/accordion/accordion.d.ts +11 -3
- package/dist/components/base/action-menu/action-menu.d.ts +11 -3
- package/dist/components/base/buttons/button.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/loader-button.d.ts +6 -15
- package/dist/components/base/cards/index.d.ts +1 -1
- package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
- package/dist/components/base/cards/smart-card.d.ts +0 -2
- package/dist/components/base/cards/smart-card.types.d.ts +12 -10
- package/dist/components/base/cascader/cascader.d.ts +8 -2
- package/dist/components/base/cascader/cascader.types.d.ts +24 -2
- package/dist/components/base/cascader/index.d.ts +1 -1
- package/dist/components/base/choice-inputs/switch.d.ts +1 -1
- package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/date-pickers/datepicker.types.d.ts +1 -3
- package/dist/components/base/display/dialog.d.ts +3 -9
- package/dist/components/base/display/index.d.ts +2 -3
- package/dist/components/base/display/separator.d.ts +1 -1
- package/dist/components/base/feedback/alert.d.ts +2 -1
- package/dist/components/base/feedback/empty.d.ts +10 -2
- package/dist/components/base/forms/workflow.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +9 -17
- package/dist/components/base/forms-numeric/index.d.ts +3 -3
- package/dist/components/base/item/item.types.d.ts +6 -2
- package/dist/components/base/metadata-list/index.d.ts +1 -3
- package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
- package/dist/components/base/navigation/index.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +7 -6
- package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
- package/dist/components/base/navigation/page-header/index.d.ts +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
- package/dist/components/base/navigation/pagination.d.ts +5 -5
- package/dist/components/base/popover/popover.recipes.d.ts +0 -1
- package/dist/components/base/qr-code/qr-code.d.ts +4 -0
- package/dist/components/base/repeaters/index.d.ts +1 -1
- package/dist/components/base/repeaters/key-value-editor.d.ts +4 -0
- package/dist/components/base/sheet/sheet.d.ts +6 -15
- package/dist/components/base/sidebar/index.d.ts +1 -6
- package/dist/components/base/sidebar/sidebar.d.ts +38 -10
- package/dist/components/base/skeleton/skeleton.d.ts +1 -1
- package/dist/components/base/structure/structure.types.d.ts +11 -2
- package/dist/components/base/text-inputs/index.d.ts +1 -1
- package/dist/components/base/tree/index.d.ts +1 -0
- package/dist/components/base/tree/tree.d.ts +2 -2
- package/dist/components/base/tree/tree.types.d.ts +7 -1
- package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
- package/dist/components/base/upload/image-upload.d.ts +2 -0
- package/dist/components/base/upload/index.d.ts +3 -9
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
- package/dist/components/base/value-inputs/slider.d.ts +5 -2
- package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
- package/dist/components/blocks/admin/index.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
- package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
- package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
- package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-citation/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
- package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
- package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
- package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
- package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
- package/dist/components/blocks/ai/ai-sources/types.d.ts +8 -2
- package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
- package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
- package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
- package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
- package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
- package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
- package/dist/components/blocks/analytics/index.d.ts +17 -24
- package/dist/components/blocks/analytics/metric/metric.d.ts +5 -5
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +2 -2
- package/dist/components/blocks/analytics/types.d.ts +12 -3
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
- package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
- package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
- package/dist/components/blocks/commerce/index.d.ts +8 -8
- package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
- package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
- package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +8 -8
- package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
- package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
- package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
- package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
- package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
- package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
- package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
- package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
- package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
- package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
- package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
- package/dist/components/blocks/content-block-hooks.d.ts +22 -0
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
- package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
- package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +6 -0
- package/dist/components/blocks/data-display/index.d.ts +0 -1
- package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
- package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
- package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
- package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
- package/dist/components/blocks/timelines/index.d.ts +2 -2
- package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
- package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
- package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
- package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
- package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
- package/dist/components/features/activities/activities.strings.d.ts +5 -3
- package/dist/components/features/activities/activities.types.d.ts +28 -11
- package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
- package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
- package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
- package/dist/components/features/activities/relative-time.d.ts +18 -0
- package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
- package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +19 -5
- package/dist/components/features/appointment-calendar/index.d.ts +1 -1
- package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
- package/dist/components/features/async-preview/async-preview.d.ts +2 -2
- package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
- package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
- package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
- package/dist/components/features/combobox/combobox.d.ts +12 -3
- package/dist/components/features/combobox/components/error-message.d.ts +3 -1
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -2
- package/dist/components/features/combobox/index.d.ts +1 -1
- package/dist/components/features/combobox/types.d.ts +47 -45
- package/dist/components/features/comments/comments.strings.d.ts +6 -5
- package/dist/components/features/comments/comments.types.d.ts +40 -26
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
- package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
- package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
- package/dist/components/features/data-view/data-view.types.d.ts +15 -2
- package/dist/components/features/email-composer/email-html.d.ts +5 -0
- package/dist/components/features/email-composer/http.d.ts +2 -0
- package/dist/components/features/email-composer/strings.d.ts +17 -2
- package/dist/components/features/email-composer/types.d.ts +17 -2
- package/dist/components/features/email-composer/use-composer.d.ts +2 -78
- package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
- package/dist/components/features/filters/facets/range-facet.d.ts +13 -8
- package/dist/components/features/filters/filter-context.d.ts +9 -0
- package/dist/components/features/filters/filters.strings.d.ts +36 -3
- package/dist/components/features/filters/filters.types.d.ts +72 -5
- package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
- package/dist/components/features/filters/index.d.ts +2 -2
- package/dist/components/features/filters/operator-options.d.ts +25 -2
- package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
- package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
- package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
- package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
- package/dist/components/features/filters/utils/filter-utils.d.ts +29 -4
- package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
- package/dist/components/features/global-search/global-search.d.ts +7 -1
- package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
- package/dist/components/features/global-search/global-search.types.d.ts +30 -6
- package/dist/components/features/global-search/index.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
- package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
- package/dist/components/features/kanban/index.d.ts +2 -2
- package/dist/components/features/kanban/kanban-context.d.ts +4 -0
- package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
- package/dist/components/features/kanban/kanban.d.ts +10 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
- package/dist/components/features/kanban/kanban.types.d.ts +26 -0
- package/dist/components/features/map/map.d.ts +4 -0
- package/dist/components/features/map/place-autocomplete.d.ts +10 -1
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +33 -3
- package/dist/components/features/media-library/media-library.types.d.ts +47 -2
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
- package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
- package/dist/components/features/mentions/index.d.ts +1 -1
- package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
- package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
- package/dist/components/features/mentions/utils/index.d.ts +0 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +2 -2
- package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
- package/dist/components/features/overlays/overlays.types.d.ts +27 -10
- package/dist/components/features/products/components/index.d.ts +0 -10
- package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
- package/dist/components/features/products/components/product-details-card.d.ts +1 -1
- package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
- package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
- package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
- package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
- package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
- package/dist/components/features/products/partials/product-surface.d.ts +15 -0
- package/dist/components/features/products/products.strings.d.ts +8 -0
- package/dist/components/features/products/products.types.d.ts +25 -7
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +6 -4
- package/dist/components/features/resource/index.d.ts +2 -3
- package/dist/components/features/resource/resource.d.ts +2 -10
- package/dist/components/features/resource/resource.types.d.ts +7 -149
- package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
- package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
- package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
- package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
- package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +2 -3
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +13 -1
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -0
- package/dist/components/features/schema-form/schema-form.d.ts +1 -1
- package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
- package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
- package/dist/components/features/suggestions/suggestions.types.d.ts +12 -4
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/filter-bar.d.ts +1 -1
- package/dist/components/features/table/pagination.d.ts +1 -1
- package/dist/components/features/table/partials/cell-value.d.ts +1 -1
- package/dist/components/features/table/table-body.d.ts +1 -1
- package/dist/components/features/table/table-header.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +31 -9
- package/dist/components/features/table/table-region.recipes.d.ts +11 -0
- package/dist/components/features/table/table-toolbar.d.ts +1 -1
- package/dist/components/features/table/table.strings.d.ts +1 -0
- package/dist/components/features/table/table.types.d.ts +74 -48
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
- package/dist/components/layout/app-shell/index.d.ts +2 -2
- package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
- package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
- package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth-shell.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +0 -5
- package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
- package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
- package/dist/components/layout/header/header.types.d.ts +16 -6
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts +1 -1
- package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
- package/dist/components/layout/layout.types.d.ts +2 -2
- package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
- package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
- package/dist/components/layout/page/index.d.ts +2 -3
- package/dist/components/layout/page/page.strings.d.ts +12 -0
- package/dist/components/layout/page/page.types.d.ts +7 -110
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/index.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +3 -5
- package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/index.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +15 -7
- package/dist/components/layout/sidebar/sidebar.types.d.ts +10 -12
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
- package/dist/components/primitives/date.d.ts +22 -3
- package/dist/components/primitives/file-size.d.ts +8 -2
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +3 -1
- package/dist/components/primitives/link.d.ts +8 -1
- package/dist/components/primitives/money.d.ts +1 -1
- package/dist/components/primitives/number.d.ts +2 -1
- package/dist/components/typography/heading.d.ts +9 -3
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/text-link.d.ts +10 -3
- package/dist/components/ui/badge.d.ts +2 -4
- package/dist/components/ui/breadcrumb.d.ts +2 -3
- package/dist/components/ui/button.d.ts +8 -2
- package/dist/components/ui/collapsible.d.ts +1 -4
- package/dist/components/ui/command.d.ts +20 -18
- package/dist/components/ui/dialog.d.ts +3 -9
- package/dist/components/ui/empty.d.ts +2 -2
- package/dist/components/ui/input-group.d.ts +3 -3
- package/dist/components/ui/item.d.ts +3 -3
- package/dist/components/ui/popover.d.ts +3 -7
- package/dist/components/ui/sheet.d.ts +4 -12
- package/dist/components/ui/sidebar-state.d.ts +6 -1
- package/dist/components/ui/sidebar.d.ts +7 -4
- package/dist/components/ui/tabs.d.ts +2 -2
- package/dist/components/ui/toggle-group.d.ts +3 -3
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/tooltip.d.ts +1 -3
- package/dist/{containers-CSdc32h9.js → containers-BdfLTP4w.js} +37 -32
- package/dist/containers-BdfLTP4w.js.map +1 -0
- package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
- package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
- package/dist/{copyable-3fdHfMR3.js → copyable-Bmr14W0d.js} +6 -6
- package/dist/{copyable-3fdHfMR3.js.map → copyable-Bmr14W0d.js.map} +1 -1
- package/dist/{data-display-Cmj-xZYl.js → data-display-CWe9SOYh.js} +264 -251
- package/dist/data-display-CWe9SOYh.js.map +1 -0
- package/dist/date-3qsCE1ID.js +209 -0
- package/dist/date-3qsCE1ID.js.map +1 -0
- package/dist/{date-picker-CyQlFYsP.js → date-picker-D1keJQIG.js} +129 -129
- package/dist/date-picker-D1keJQIG.js.map +1 -0
- package/dist/date-pickers-D8aJoeHc.js +185 -0
- package/dist/date-pickers-D8aJoeHc.js.map +1 -0
- package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
- package/dist/{display-CT_N2a3w.js → display-VlmP1I0i.js} +23 -46
- package/dist/display-VlmP1I0i.js.map +1 -0
- package/dist/{dropdown-menu-C08iIugv.js → dropdown-menu-B8hjvbkS.js} +9 -9
- package/dist/{dropdown-menu-C08iIugv.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
- package/dist/dropzone-CHBNK3de.js +116 -0
- package/dist/dropzone-CHBNK3de.js.map +1 -0
- package/dist/features/activities.js +682 -628
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +258 -226
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +436 -340
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +351 -265
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +2 -2
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +212 -151
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +344 -315
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +504 -355
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +250 -206
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +269 -189
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +385 -371
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1571 -1199
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +2 -2
- package/dist/features/overlays.js +2 -2
- package/dist/features/products.js +1780 -1691
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +165 -152
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +223 -191
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +55 -220
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +3 -3
- package/dist/features/schema-form.js +280 -228
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +48 -39
- package/dist/features/suggestions.js.map +1 -1
- package/dist/features/table.js +2 -2
- package/dist/features/theme-tweaker.js +723 -633
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-DmqmXKLn.js +254 -0
- package/dist/feedback-DmqmXKLn.js.map +1 -0
- package/dist/{field-affordance-recipes-D6H7tVJi.js → field-affordance-recipes-DfbMadot.js} +13 -9
- package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
- package/dist/{field-state-recipes-7sza8QbC.js → field-state-recipes-EtCxpEy3.js} +6 -2
- package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
- package/dist/filters-BviMRMLS.js +2692 -0
- package/dist/filters-BviMRMLS.js.map +1 -0
- package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
- package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
- package/dist/{form-field-CAPdwdnZ.js → form-field-BdfCwSoQ.js} +5 -5
- package/dist/{form-field-CAPdwdnZ.js.map → form-field-BdfCwSoQ.js.map} +1 -1
- package/dist/{form-sizing-CgcrUbLU.js → form-sizing-DE_dZw32.js} +3 -3
- package/dist/{form-sizing-CgcrUbLU.js.map → form-sizing-DE_dZw32.js.map} +1 -1
- package/dist/{forms-B3W8CH7-.js → forms-B8DzJnBN.js} +35 -35
- package/dist/forms-B8DzJnBN.js.map +1 -0
- package/dist/forms-numeric-DOBswjKj.js +992 -0
- package/dist/forms-numeric-DOBswjKj.js.map +1 -0
- package/dist/{header-ZIIsRKxP.js → header-Cq3G0ZRP.js} +100 -95
- package/dist/header-Cq3G0ZRP.js.map +1 -0
- package/dist/{hooks-BitHSh-Y.js → hooks-DHfeSMAO.js} +34 -14
- package/dist/hooks-DHfeSMAO.js.map +1 -0
- package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
- package/dist/http-Cu-GPpss.js.map +1 -0
- package/dist/{icon-badge-npxF1SLX.js → icon-badge-B0Kq7wom.js} +3 -3
- package/dist/{icon-badge-npxF1SLX.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
- package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
- package/dist/{input-DIREVYHs.js → input-2YrgTUrz.js} +3 -3
- package/dist/{input-DIREVYHs.js.map → input-2YrgTUrz.js.map} +1 -1
- package/dist/{input-7KAc7XQL.js → input-DfJyrjoR.js} +6 -6
- package/dist/{input-7KAc7XQL.js.map → input-DfJyrjoR.js.map} +1 -1
- package/dist/{interaction-recipes-4wZ2tvfb.js → interaction-recipes-DmuS1ase.js} +2 -2
- package/dist/{interaction-recipes-4wZ2tvfb.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
- package/dist/item-GJ9mvCcg.js +279 -0
- package/dist/item-GJ9mvCcg.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +2 -2
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +3 -3
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +12 -12
- package/dist/{layout.types-E_GAApzO.js → layout.types-DbtnyAtd.js} +11 -8
- package/dist/layout.types-DbtnyAtd.js.map +1 -0
- package/dist/lib/anchored-positioning.d.ts +11 -0
- package/dist/lib/field-affordance-recipes.d.ts +10 -0
- package/dist/lib/field-state-recipes.d.ts +6 -0
- package/dist/lib/focus-recipes.d.ts +7 -0
- package/dist/lib/format.d.ts +25 -0
- package/dist/lib/money-format.d.ts +6 -0
- package/dist/lib/motion-recipes.d.ts +6 -0
- package/dist/lib/surface-recipes.d.ts +32 -2
- package/dist/lib/theme-scope.d.ts +17 -1
- package/dist/lib/token-merge.generated.d.ts +13 -19
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/types.d.ts +5 -0
- package/dist/lib/use-controllable-state.d.ts +16 -0
- package/dist/lib/use-copy-feedback.d.ts +15 -0
- package/dist/lib/utils.js +1 -1
- package/dist/lib/variant-props.d.ts +9 -0
- package/dist/main-landmark-context-BAsyqp2I.js +11 -0
- package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
- package/dist/mentions-zz0ewNIq.js +670 -0
- package/dist/mentions-zz0ewNIq.js.map +1 -0
- package/dist/{message-BJHnn43M.js → message-BiiVrRrm.js} +10 -7
- package/dist/{message-BJHnn43M.js.map → message-BiiVrRrm.js.map} +1 -1
- package/dist/{metadata-list-XkqZ_UXH.js → metadata-list-G85roWjS.js} +13 -12
- package/dist/metadata-list-G85roWjS.js.map +1 -0
- package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
- package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
- package/dist/navigation-C0Be5C3i.js +304 -0
- package/dist/navigation-C0Be5C3i.js.map +1 -0
- package/dist/{navigation-Bt-v7rWP.js → navigation-CmqaQR_G.js} +99 -103
- package/dist/navigation-CmqaQR_G.js.map +1 -0
- package/dist/number-NFWKIoiK.js +340 -0
- package/dist/number-NFWKIoiK.js.map +1 -0
- package/dist/{overflow-tab-bar-BQCA2Zn2.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
- package/dist/{overflow-tab-bar-BQCA2Zn2.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
- package/dist/overlays-D-gAIfPF.js +1018 -0
- package/dist/overlays-D-gAIfPF.js.map +1 -0
- package/dist/page-D4pQhgSq.js +216 -0
- package/dist/page-D4pQhgSq.js.map +1 -0
- package/dist/{page-header-commands-DIKspJfx.js → page-header-commands-elelNOfd.js} +29 -29
- package/dist/{page-header-commands-DIKspJfx.js.map → page-header-commands-elelNOfd.js.map} +1 -1
- package/dist/{pagination-Br8TdV9A.js → pagination-BuSWw1US.js} +22 -23
- package/dist/pagination-BuSWw1US.js.map +1 -0
- package/dist/{popover-k8TdUcAt.js → popover-BpMxbqEK.js} +73 -69
- package/dist/popover-BpMxbqEK.js.map +1 -0
- package/dist/{popover-menu-yn-o0kyA.js → popover-menu-CO-_iiuz.js} +7 -7
- package/dist/{popover-menu-yn-o0kyA.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
- package/dist/{popover.recipes-DJ0AkUan.js → popover.recipes-BqkdvlZn.js} +3 -4
- package/dist/{popover.recipes-DJ0AkUan.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
- package/dist/{portal-recipes-DyUXqUtD.js → portal-recipes-BPeS4rGB.js} +2 -2
- package/dist/{portal-recipes-DyUXqUtD.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
- package/dist/primitives-BlC1lXBr.js +447 -0
- package/dist/primitives-BlC1lXBr.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-DZFXXzPs.js → progress-RARK8AjB.js} +5 -5
- package/dist/{progress-DZFXXzPs.js.map → progress-RARK8AjB.js.map} +1 -1
- package/dist/receipt-CUf2Vegp.js +114 -0
- package/dist/receipt-CUf2Vegp.js.map +1 -0
- package/dist/{rich-text-BnTzZjIo.js → rich-text-Cypm9__d.js} +7 -8
- package/dist/{rich-text-BnTzZjIo.js.map → rich-text-Cypm9__d.js.map} +1 -1
- package/dist/rich-text-editor-Z6cQepsA.js +919 -0
- package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
- package/dist/rich-text-tree-DdKHIJx4.js +154 -0
- package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
- package/dist/safe-image-src-C6kQSMBZ.js +17 -0
- package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
- package/dist/{scroll-area-Bj6CRUif.js → scroll-area-B9HKbji0.js} +3 -3
- package/dist/{scroll-area-Bj6CRUif.js.map → scroll-area-B9HKbji0.js.map} +1 -1
- package/dist/{separator-DM6gs2vu.js → separator-DaDe26sf.js} +3 -3
- package/dist/separator-DaDe26sf.js.map +1 -0
- package/dist/{separator-B9ewiCGO.js → separator-KGsNXt2J.js} +2 -2
- package/dist/{separator-B9ewiCGO.js.map → separator-KGsNXt2J.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +5 -2
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +2 -2
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-D5j_RJvT.js +160 -0
- package/dist/settings-D5j_RJvT.js.map +1 -0
- package/dist/sheet-B6j_BE9O.js +241 -0
- package/dist/sheet-B6j_BE9O.js.map +1 -0
- package/dist/{sidebar-CmD6a-HK.js → sidebar-C-iQ_TJP.js} +377 -351
- package/dist/sidebar-C-iQ_TJP.js.map +1 -0
- package/dist/sidebar-D5VO2W8S.js +715 -0
- package/dist/sidebar-D5VO2W8S.js.map +1 -0
- package/dist/{skeleton-DDgdhmu9.js → skeleton-Cab_KgVo.js} +12 -12
- package/dist/skeleton-Cab_KgVo.js.map +1 -0
- package/dist/{smart-card-B6vLxqa_.js → smart-card-C59z6KFO.js} +217 -210
- package/dist/smart-card-C59z6KFO.js.map +1 -0
- package/dist/{structure-DZJ2wbAU.js → structure-DElaQwwN.js} +2 -2
- package/dist/{structure-DZJ2wbAU.js.map → structure-DElaQwwN.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-C8mNycaY.js → surface-recipes-DV6rrOFq.js} +10 -2
- package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
- package/dist/{table-CXSPHH25.js → table-CSRUgpdK.js} +62 -61
- package/dist/table-CSRUgpdK.js.map +1 -0
- package/dist/table-DdXDBsR_.js +1657 -0
- package/dist/table-DdXDBsR_.js.map +1 -0
- package/dist/{tabs-C4Kr_hCr.js → tabs-WnHfV2pM.js} +27 -27
- package/dist/tabs-WnHfV2pM.js.map +1 -0
- package/dist/{text-inputs-jdkS3ReG.js → text-inputs-ljyBYaCd.js} +112 -112
- package/dist/text-inputs-ljyBYaCd.js.map +1 -0
- package/dist/theme.css +21 -5
- package/dist/timelines-mOmS9Eh3.js +479 -0
- package/dist/timelines-mOmS9Eh3.js.map +1 -0
- package/dist/tooltip-yjX-Uv-p.js +112 -0
- package/dist/tooltip-yjX-Uv-p.js.map +1 -0
- package/dist/{tree-CeYVzdFE.js → tree-YpkxUG2Z.js} +80 -72
- package/dist/tree-YpkxUG2Z.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-C7-YMW1S.js → typography-C0dELqYV.js} +46 -40
- package/dist/typography-C0dELqYV.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
- package/dist/ui-provider-Bu1S-o96.js.map +1 -0
- package/dist/ui-provider.js +2 -2
- package/dist/{upload-Hdm5gObf.js → upload-DMuMYJFT.js} +276 -268
- package/dist/upload-DMuMYJFT.js.map +1 -0
- package/dist/{usage-card-9s8hLDfn.js → usage-card-DDPki5P1.js} +57 -54
- package/dist/usage-card-DDPki5P1.js.map +1 -0
- package/dist/use-controllable-state-BlP8SyBI.js +13 -0
- package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
- package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
- package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
- package/dist/{utils-DhuoqFy4.js → utils-BVbAG2J6.js} +98 -76
- package/dist/utils-BVbAG2J6.js.map +1 -0
- package/dist/value-inputs-h5MwjGCo.js +982 -0
- package/dist/value-inputs-h5MwjGCo.js.map +1 -0
- package/dist/value-typography-D15uwfj-.js +154 -0
- package/dist/value-typography-D15uwfj-.js.map +1 -0
- package/dist/workspace-DIryPqBt.js +400 -0
- package/dist/workspace-DIryPqBt.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +7 -0
- package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
- package/docs/consumer-skill/examples/analytics.tsx +1 -1
- package/docs/consumer-skill/examples/app-layout.tsx +3 -3
- package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
- package/docs/consumer-skill/examples/detail.tsx +3 -2
- package/docs/consumer-skill/examples/email-composer.tsx +1 -1
- package/docs/consumer-skill/examples/index-table.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
- package/docs/consumer-skill/references/agents-md.md +20 -16
- package/docs/consumer-skill/references/analytics.md +20 -6
- package/docs/consumer-skill/references/building-views.md +213 -0
- package/docs/consumer-skill/references/catalogue.md +617 -0
- package/docs/consumer-skill/references/component-contracts.json +10202 -18084
- package/docs/consumer-skill/references/composition.md +21 -17
- package/docs/consumer-skill/references/discovery.md +8 -5
- package/docs/consumer-skill/references/installation.md +10 -4
- package/docs/consumer-skill/references/integration.md +5 -5
- package/docs/consumer-skill/references/product-composition.md +2 -2
- package/docs/consumer-skill/references/public-api.json +580 -633
- package/docs/consumer-skill/references/review.md +6 -4
- package/docs/consumer-skill/references/screen-archetypes.md +2 -2
- package/docs/consumer-skill/references/theming.md +1 -1
- package/docs/consumer-skill/references/tokens.json +4 -4
- package/docs/consumer-skill/references/workflows.md +7 -7
- package/docs/consumer-skill/scripts/composition-policy.mjs +40 -20
- package/docs/consumer-skill/scripts/composition.mjs +4 -1
- package/docs/consumer-skill/scripts/discovery.mjs +3 -1
- package/docs/consumer-skill/scripts/setup-skills.mjs +31 -4
- package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
- package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
- package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
- package/package.json +9 -12
- package/templates/README.md +3 -2
- package/templates/admin-shell-template.tsx +49 -9
- package/templates/analytics-operations-template.tsx +20 -24
- package/templates/customers-template.tsx +12 -9
- package/templates/index.ts +2 -8
- package/templates/orders-template.tsx +28 -24
- package/templates/products-template.tsx +14 -4
- package/templates/user-permissions-template.tsx +11 -14
- package/dist/accordion-0tQUZ20r.js.map +0 -1
- package/dist/action-menu-C0gjzLyE.js +0 -284
- package/dist/action-menu-C0gjzLyE.js.map +0 -1
- package/dist/ai-artifact-CGGpQryR.js +0 -1200
- package/dist/ai-artifact-CGGpQryR.js.map +0 -1
- package/dist/anchored-positioning-DPnKTvNs.js +0 -6
- package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
- package/dist/app-shell-EHuuRDGy.js +0 -321
- package/dist/app-shell-EHuuRDGy.js.map +0 -1
- package/dist/auth-B0girIk_.js.map +0 -1
- package/dist/badge-wWauMgAt.js.map +0 -1
- package/dist/base/sheet.js +0 -3
- package/dist/breadcrumbs-Bp9Ke7kd.js.map +0 -1
- package/dist/button-ChBovTx0.js.map +0 -1
- package/dist/buttons-DeW0bQeK.js.map +0 -1
- package/dist/cascader-CrAl9zD5.js +0 -439
- package/dist/cascader-CrAl9zD5.js.map +0 -1
- package/dist/choice-inputs-DHGtx0QV.js.map +0 -1
- package/dist/code-block-BSJyq9e-.js.map +0 -1
- package/dist/collapsible-BzJ91LUG.js +0 -81
- package/dist/collapsible-BzJ91LUG.js.map +0 -1
- package/dist/combobox-Bcvu5J8O.js +0 -363
- package/dist/combobox-Bcvu5J8O.js.map +0 -1
- package/dist/combobox-C2JiSQPc.js +0 -915
- package/dist/combobox-C2JiSQPc.js.map +0 -1
- package/dist/command-9e52NPgK.js +0 -425
- package/dist/command-9e52NPgK.js.map +0 -1
- package/dist/comments-BsgErEqd.js +0 -1174
- package/dist/comments-BsgErEqd.js.map +0 -1
- package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
- package/dist/components/base/display/content-block.d.ts +0 -75
- package/dist/components/base/display/content-block.strings.d.ts +0 -5
- package/dist/components/base/sheet/index.d.ts +0 -29
- package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
- package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -10
- package/dist/components/features/resource/resource.strings.d.ts +0 -12
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
- package/dist/components/features/sync/index.d.ts +0 -26
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
- package/dist/components/features/sync/sync.strings.d.ts +0 -18
- package/dist/components/features/sync/sync.types.d.ts +0 -44
- package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
- package/dist/components/ui/slot.d.ts +0 -6
- package/dist/containers-CSdc32h9.js.map +0 -1
- package/dist/data-display-Cmj-xZYl.js.map +0 -1
- package/dist/date-Br0FicVv.js +0 -144
- package/dist/date-Br0FicVv.js.map +0 -1
- package/dist/date-picker-CyQlFYsP.js.map +0 -1
- package/dist/date-pickers-tj2MXmXd.js +0 -185
- package/dist/date-pickers-tj2MXmXd.js.map +0 -1
- package/dist/display-CT_N2a3w.js.map +0 -1
- package/dist/features/sync.js +0 -142
- package/dist/features/sync.js.map +0 -1
- package/dist/feedback-Dzo1xtAU.js +0 -246
- package/dist/feedback-Dzo1xtAU.js.map +0 -1
- package/dist/field-affordance-recipes-D6H7tVJi.js.map +0 -1
- package/dist/field-state-recipes-7sza8QbC.js.map +0 -1
- package/dist/filters-Dl80yYtN.js +0 -2415
- package/dist/filters-Dl80yYtN.js.map +0 -1
- package/dist/focus-recipes-B653VaLq.js.map +0 -1
- package/dist/forms-B3W8CH7-.js.map +0 -1
- package/dist/forms-numeric-CwjQJe-O.js +0 -991
- package/dist/forms-numeric-CwjQJe-O.js.map +0 -1
- package/dist/header-ZIIsRKxP.js.map +0 -1
- package/dist/hooks-BitHSh-Y.js.map +0 -1
- package/dist/http-D_6rOnzU.js.map +0 -1
- package/dist/item-FfWnaYST.js +0 -278
- package/dist/item-FfWnaYST.js.map +0 -1
- package/dist/layout.types-E_GAApzO.js.map +0 -1
- package/dist/media-gallery-C81DAnKI.js +0 -203
- package/dist/media-gallery-C81DAnKI.js.map +0 -1
- package/dist/mentions-qOnedSt4.js +0 -639
- package/dist/mentions-qOnedSt4.js.map +0 -1
- package/dist/metadata-list-XkqZ_UXH.js.map +0 -1
- package/dist/motion-recipes-DitYv6P2.js.map +0 -1
- package/dist/navigation-BgtPJAhi.js +0 -288
- package/dist/navigation-BgtPJAhi.js.map +0 -1
- package/dist/navigation-Bt-v7rWP.js.map +0 -1
- package/dist/number-CYqBcrSj.js +0 -346
- package/dist/number-CYqBcrSj.js.map +0 -1
- package/dist/overlays-CC8zI3Du.js +0 -1017
- package/dist/overlays-CC8zI3Du.js.map +0 -1
- package/dist/page-BoQ1VaFJ.js +0 -331
- package/dist/page-BoQ1VaFJ.js.map +0 -1
- package/dist/pagination-Br8TdV9A.js.map +0 -1
- package/dist/popover-k8TdUcAt.js.map +0 -1
- package/dist/primitives-BkkQjYl7.js +0 -385
- package/dist/primitives-BkkQjYl7.js.map +0 -1
- package/dist/receipt-C7LhOg7Q.js +0 -116
- package/dist/receipt-C7LhOg7Q.js.map +0 -1
- package/dist/rich-text-editor-CAurDwT5.js +0 -1273
- package/dist/rich-text-editor-CAurDwT5.js.map +0 -1
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js +0 -99
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +0 -1
- package/dist/rich-text-tree-BqyQ_7-R.js +0 -66
- package/dist/rich-text-tree-BqyQ_7-R.js.map +0 -1
- package/dist/sanitize-html-BWkH4dLM.js +0 -105
- package/dist/sanitize-html-BWkH4dLM.js.map +0 -1
- package/dist/separator-DM6gs2vu.js.map +0 -1
- package/dist/settings-DZPHgpx4.js +0 -155
- package/dist/settings-DZPHgpx4.js.map +0 -1
- package/dist/sheet-C4DHsgLk.js +0 -250
- package/dist/sheet-C4DHsgLk.js.map +0 -1
- package/dist/sidebar-C8BnDwTH.js +0 -709
- package/dist/sidebar-C8BnDwTH.js.map +0 -1
- package/dist/sidebar-CmD6a-HK.js.map +0 -1
- package/dist/skeleton-DDgdhmu9.js.map +0 -1
- package/dist/slot-CLF9kLrS.js +0 -16
- package/dist/slot-CLF9kLrS.js.map +0 -1
- package/dist/smart-card-B6vLxqa_.js.map +0 -1
- package/dist/surface-recipes-C8mNycaY.js.map +0 -1
- package/dist/table-CBonSdTp.js +0 -1584
- package/dist/table-CBonSdTp.js.map +0 -1
- package/dist/table-CXSPHH25.js.map +0 -1
- package/dist/tabs-C4Kr_hCr.js.map +0 -1
- package/dist/text-inputs-jdkS3ReG.js.map +0 -1
- package/dist/timelines-CoPwdJP0.js +0 -458
- package/dist/timelines-CoPwdJP0.js.map +0 -1
- package/dist/tooltip-31NwIpTo.js +0 -113
- package/dist/tooltip-31NwIpTo.js.map +0 -1
- package/dist/tree-CeYVzdFE.js.map +0 -1
- package/dist/typography-C7-YMW1S.js.map +0 -1
- package/dist/ui-provider-C-74NVLc.js.map +0 -1
- package/dist/upload-Hdm5gObf.js.map +0 -1
- package/dist/upload-queue-D0sYPuqo.js +0 -409
- package/dist/upload-queue-D0sYPuqo.js.map +0 -1
- package/dist/usage-card-9s8hLDfn.js.map +0 -1
- package/dist/utils-DhuoqFy4.js.map +0 -1
- package/dist/value-inputs-D3aPgq9H.js +0 -980
- package/dist/value-inputs-D3aPgq9H.js.map +0 -1
- package/dist/value-typography-uSzzG9Gf.js +0 -122
- package/dist/value-typography-uSzzG9Gf.js.map +0 -1
- package/dist/workspace-CC8Vchiu.js +0 -411
- package/dist/workspace-CC8Vchiu.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-display-CWe9SOYh.js","names":["_Fragment","_Fragment","useDensityConfig","cn","Text","DisplayLabel","Heading","headingRoleSizes","Grid","Stack","Card","EmptyContent","EmptyMedia","Empty","EmptyHeader","compositionRhythm","Value","MonoValue","Badge","Separator","ItemMedia","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","contentBlockHooks","Fragment$1","ScaleBar","name","value","max","i","label","KVRow","badge","badgeTone","DenseInfoDashboard","surface","statusBadges","b","className","rows","row","scale","secondaryRows","footerBadges","footerText","InlineStat","ValuePrimitive","mono","labelContent","labelClassName","valueContent","valueWeight","valueClassName","layout","defaultDenseInfoStrings","DenseInfoClassification","stringsProp","strings","useStrings","stats","stat","items","item","totalValue","totalLabel","DenseInfoFinancial","headerBadges","lineItems","totalAmount","DenseInfoProjectCard","paddingProp","percentage","totalTasks","completedTasks","circumference","dashOffset","statusTone","statusLabel","description","metaPairs","idx","pair","date","priority","DenseInfoScoreCard","barColor","scoreLevel","score","title","scoreFilled","scoreTotal","defaultEmptyStateStrings","MEDIA_VARIANT_TO_PRIMITIVE","MEDIA_EXTRA_CLASS","EmptyState","forwardRef","resolvedPadding","padding","defaultScale","resolvedTitle","resolvedDescription","mediaNode","renderMedia","media","showMedia","ariaLabel","border","mediaVariant","headingTag","actions","footer","DocumentStackIllustration","InboxCleanIllustration","trayClip","useId","SearchGlassIllustration","Search","StackedCardsIllustration","fadeId","UsersCircleIllustration","renderTitleBadge","RelationshipCardFrame","props","hasBody","alertSlot","metadataSlot","primaryActionSlot","selectorSlot","detailsSlot","headerClassName","icon","titleBadge","overflowActionSlot","bodyClassName"],"sources":["../src/components/blocks/data-display/dense-info-card/helpers.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.tsx","../src/components/blocks/data-display/inline-stat/inline-stat.tsx","../src/components/blocks/data-display/dense-info-card/dense-info.strings.ts","../src/components/blocks/data-display/dense-info-card/partials/dense-info-classification.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-financial.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-project.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-score.tsx","../src/components/blocks/data-display/empty-state/empty-state.strings.ts","../src/components/blocks/data-display/empty-state/empty-state.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/document-stack.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/search-glass.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/users-circle.tsx","../src/components/blocks/data-display/relationship-card-frame.tsx"],"sourcesContent":["import { Badge } from '../../../base/badge';\nimport { Text } from '../../../typography/text';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\nimport { type DenseInfoBadgeTone } from './types';\n\n/* ─── Shared: Complexity / Scale Bar ─────────────────────────────────────── */\n\nexport function ScaleBar({\n\tvalue,\n\tmax = 5,\n\tlabel,\n\tname,\n}: {\n\t/** Current amount, used to fill the bar. */\n\tvalue: number;\n\t/** Value representing a full bar. Default: `5`. */\n\tmax?: number;\n\t/** Caption shown beside the bar. */\n\tlabel?: string;\n\t/** Accessible name of the meter: what the bar measures. */\n\tname?: string;\n}) {\n\treturn (\n\t\t<div className={cn('helpers--component', 'flex items-center gap-space-md')}>\n\t\t\t<div\n\t\t\t\trole=\"meter\"\n\t\t\t\taria-label={name}\n\t\t\t\taria-valuenow={value}\n\t\t\t\taria-valuemin={0}\n\t\t\t\taria-valuemax={max}\n\t\t\t\tclassName=\"flex items-center gap-space-xs\"\n\t\t\t>\n\t\t\t{Array.from({ length: max }, (_, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={i}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-1.5 w-3 rounded-full',\n\t\t\t\t\t\ti < value ? 'bg-muted-foreground' : 'bg-muted',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!label && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n/* ─── Shared: Key-Value Row ──────────────────────────────────────────────── */\n\nexport function KVRow({\n\tlabel,\n\tvalue,\n\tbadge,\n\tbadgeTone,\n}: {\n\t/** Row label. */\n\tlabel: string;\n\t/** Row value. */\n\tvalue?: string;\n\t/** Chip shown after the value. */\n\tbadge?: string;\n\t/** Badge tone for the chip. */\n\tbadgeTone?: DenseInfoBadgeTone;\n}) {\n\treturn (\n\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"md\">\n\t\t\t<Text\n\t\t\t\tsize=\"xs\"\n\t\t\t\tclassName=\"shrink-0 text-muted-foreground\"\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t{!!badge && (\n\t\t\t\t<Badge\n\t\t\t\t\ttone={badgeTone ?? 'secondary'}\n\t\t\t\t>\n\t\t\t\t\t{badge}\n\t\t\t\t</Badge>\n\t\t\t)}\n\t\t\t{!!value && !badge && (\n\t\t\t\t<Text\n\t\t\t\t\ttype=\"inherit\"\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tclassName=\"text-right tabular-nums\"\n\t\t\t\t>\n\t\t\t\t\t{value}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n}\n","import { Card } from '../../../../base/cards';\nimport { Badge } from '../../../../base/badge';\nimport { Text } from '../../../../typography/text';\nimport { Stack } from '../../../../base/structure';\nimport { type DenseInfoDashboardProps } from '../types';\nimport { KVRow, ScaleBar } from '../helpers';\nimport { cn } from '../../../../../lib/utils';\nimport { contentBlockHooks } from '../../../content-block-hooks';\n\nexport function DenseInfoDashboard({\n\ttitle,\n\tdescription,\n\tstatusBadges,\n\trows,\n\tsecondaryRows,\n\tscale,\n\tfooterBadges,\n\tfooterText,\n\tactions,\n\tsurface = 'flat',\n\tpadding = surface === 'flat' ? 'none' : 'md',\n\theaderDivider,\n\tclassName,\n}: DenseInfoDashboardProps) {\n\treturn (\n\t\t<Card\n\t\t\tsurface={surface}\n\t\t\tpadding={padding}\n\t\t\theaderDivider={headerDivider}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\ttitleSuffix={statusBadges.length > 0 ? (\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t{statusBadges.map((b) => (\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\t\t\t) : undefined}\n\t\t\tactions={actions}\n\t\t\t{...contentBlockHooks(cn('dense-info-dashboard--component', className))}\n\t\t>\n\t\t\t{/* Status badges sit with the title; groups below are separated by the\n\t\t\t section gap alone, so no rules divide the card. */}\n\t\t\t<Stack gap=\"2xl\">\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t{rows.map((row) => (\n\t\t\t\t\t\t<KVRow\n\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\t{...row}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\n\t\t\t\t\t{!!scale && (\n\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{scale.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ScaleBar\n\t\t\t\t\t\t\t\tname={scale.label}\n\t\t\t\t\t\t\t\tvalue={scale.value}\n\t\t\t\t\t\t\t\tmax={scale.max}\n\t\t\t\t\t\t\t\tlabel={`${String(scale.value)}/${String(scale.max ?? 5)}`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\n\t\t\t\t{!!secondaryRows && secondaryRows.length > 0 && (\n\t\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t\t{secondaryRows.map((row) => (\n\t\t\t\t\t\t\t<KVRow\n\t\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\t\t{...row}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\">\n\t\t\t\t\t\t{!!footerBadges &&\n\t\t\t\t\t\t\tfooterBadges.map((b) => (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!!footerText && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nDenseInfoDashboard.displayName = 'DenseInfoDashboard';\n","/**\n * InlineStat — label + value pair, the workhorse of detail panels and card\n * footers. Three layouts:\n *\n * - `between` (default): label and value pushed to opposite ends of the row.\n * - `inline`: label sits immediately before the value, separator-style.\n * - `stacked`: label above (xs secondary), value below (md).\n *\n * The value takes the shared `Value` text role at the provider text size.\n * `valueWeight` emphasises a fact or a total through that role. `mono`\n * switches the value to the monospace identifier role (references, codes,\n * keys). Amounts, counts, percentages and dates stay in the sans UI font: pass\n * `valueClassName=\"tabular-nums\"` (or a value primitive such as `Money` /\n * `Percent`, which are already tabular) when figures should align. Keep\n * `valueClassName` for layout (alignment, truncation, figures); the\n * surrounding row is intentionally plain so consumers can stack many of these\n * without visual clutter.\n */\nimport type { ReactNode } from 'react';\n\nimport { Stack } from '../../../base/structure';\nimport { MonoValue, Value, type ValueProps } from '../../../primitives';\nimport { DisplayLabel } from '../../../typography';\nimport { cn } from '../../../../lib/utils';\n\nexport type InlineStatLayout = 'between' | 'inline' | 'stacked';\n\nexport interface InlineStatProps {\n\t/** Display label. Scalar labels use DisplayLabel; rich content owns its typography. */\n\tlabel: ReactNode;\n\t/** The figure to show. */\n\tvalue: ReactNode;\n\t/** Whether the label sits above the value or beside it. */\n\tlayout?: InlineStatLayout;\n\t/** Renders the value in tabular monospace figures. */\n\tmono?: boolean;\n\t/**\n\t * Weight of the value's text role. Defaults to the role weight: regular, or\n\t * medium with `mono`. Use `medium` for emphasised facts and `semibold` for totals.\n\t */\n\tvalueWeight?: ValueProps['weight'];\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the label. */\n\tlabelClassName?: string;\n\t/** Merged onto the value. */\n\tvalueClassName?: string;\n}\n\nexport function InlineStat({\n\tlabel,\n\tvalue,\n\tlayout = 'between',\n\tmono = false,\n\tvalueWeight,\n\tclassName,\n\tlabelClassName,\n\tvalueClassName,\n}: InlineStatProps) {\n\tconst ValuePrimitive = mono ? MonoValue : Value;\n\tconst labelContent = typeof label === 'string' || typeof label === 'number'\n\t\t? <DisplayLabel className={cn('text-inherit', labelClassName)}>{label}</DisplayLabel>\n\t\t: <span className={labelClassName}>{label}</span>;\n\tconst valueContent = (\n\t\t<ValuePrimitive type=\"inherit\" weight={valueWeight} className={valueClassName}>\n\t\t\t{value}\n\t\t</ValuePrimitive>\n\t);\n\n\tif (layout === 'stacked') {\n\t\treturn (\n\t\t\t<Stack gap=\"2xs\" className={cn('inline-stat--component', className)}>\n\t\t\t\t{labelContent}\n\t\t\t\t{valueContent}\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"horizontal\"\n\t\t\tgap=\"md\"\n\t\t\tjustify={layout === 'between' ? 'between' : 'start'}\n\t\t\twrap={false}\n\t\t\tclassName={cn('inline-stat--component', className)}\n\t\t>\n\t\t\t{labelContent}\n\t\t\t{valueContent}\n\t\t</Stack>\n\t);\n}\n\nInlineStat.displayName = 'InlineStat';\n","export interface DenseInfoStrings {\n\t/** Total number of records across all pages. */\n\ttotal: string;\n\t/** Word after the task count (\"12/20 tasks\"). */\n\ttasks: string;\n\t/** Word after the priority value (\"High priority\"). Additive, so optional for existing dictionaries. */\n\tpriority?: string;\n\t/** Writes the task progress. Defaults to `\"<completed>/<total> <tasks>\"`. */\n\tformatTasks?: (completed: number, total: number) => string;\n\t/** Writes the priority line. Defaults to the value followed by `priority`. */\n\tformatPriority?: (priority: string) => string;\n}\n\nexport const defaultDenseInfoStrings: DenseInfoStrings & Required<Pick<DenseInfoStrings, 'priority'>> = {\n\ttotal: 'Total',\n\ttasks: 'tasks',\n\tpriority: 'priority',\n};\n","import { Card } from '../../../../base/cards';\nimport { Badge } from '../../../../base/badge';\nimport { Grid, Stack } from '../../../../base/structure';\nimport { Value } from '../../../../primitives';\nimport { Text } from '../../../../typography/text';\nimport { Heading } from '../../../../typography/heading';\nimport { InlineStat } from '../../inline-stat/inline-stat';\nimport { Separator } from '../../../../base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../../base/item';\nimport { cn } from '../../../../../lib/utils';\nimport { useStrings } from '../../../../../lib/strings';\nimport { defaultDenseInfoStrings } from '../dense-info.strings';\nimport { type DenseInfoClassificationProps } from '../types';\nimport { contentBlockHooks } from '../../../content-block-hooks';\n\nexport function DenseInfoClassification({\n\ttitle,\n\tdescription,\n\tstats,\n\titems,\n\ttotalLabel,\n\ttotalValue,\n\tfooterBadges,\n\tfooterText,\n\tactions,\n\tsurface = 'flat',\n\tpadding = surface === 'flat' ? 'none' : 'md',\n\theaderDivider,\n\tclassName,\n\tstrings: stringsProp,\n}: DenseInfoClassificationProps) {\n\tconst strings = useStrings(defaultDenseInfoStrings, stringsProp);\n\treturn (\n\t\t<Card\n\t\t\tsurface={surface}\n\t\t\tpadding={padding}\n\t\t\theaderDivider={headerDivider}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={actions}\n\t\t\t{...contentBlockHooks(cn('dense-info-classification--component', className))}\n\t\t>\n\t\t\t<Stack gap=\"2xl\">\n\t\t\t\t{/* Plain figures, no tile per stat: the grid gap separates them and the\n\t\t\t\t larger section gap separates the stats from the breakdown. */}\n\t\t\t\t<Grid columns={{ base: 2, sm: 3 }} gap=\"xl\">\n\t\t\t\t\t{stats.map((stat) => (\n\t\t\t\t\t\t<Stack gap=\"dense\" key={stat.label} className=\"min-w-0 items-start\">\n\t\t\t\t\t\t\t<Heading tag=\"p\" className=\"tabular-nums text-inherit\">\n\t\t\t\t\t\t\t\t{stat.value}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{stat.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!stat.trendBadge && (\n\t\t\t\t\t\t\t\t<Badge tone={stat.trendTone ?? 'secondary'} className=\"self-start\">\n\t\t\t\t\t\t\t\t\t{stat.trendBadge}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t\t<Item key={item.label} size=\"sm\" role=\"listitem\">\n\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t<span className={cn('h-2 w-2 shrink-0 rounded-full', item.dotColor)} />\n\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t<ItemTitle bold={false} className=\"gap-space-md\">\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t<Badge tone={item.badgeTone ?? 'secondary'}>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</ItemTitle>\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t\t\t<Value type=\"inherit\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t{item.value}\n\t\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ItemGroup>\n\n\t\t\t\t\t{/* One rule above the grand total; the Stack gap sits on both sides of it. */}\n\t\t\t\t\t{!!totalValue && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={<Text type=\"inherit\" tag=\"span\" weight=\"bold\" lineHeight=\"tight\">{totalLabel ?? strings.total}</Text>}\n\t\t\t\t\t\t\t\tvalue={totalValue}\n\t\t\t\t\t\t\t\tvalueWeight=\"bold\"\n\t\t\t\t\t\t\t\tvalueClassName=\"tabular-nums\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\n\t\t\t\t{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\">\n\t\t\t\t\t\t{!!footerBadges && footerBadges.map((b) => (\n\t\t\t\t\t\t\t<Badge key={b.label} tone={b.tone}>\n\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!!footerText && (\n\t\t\t\t\t\t\t<Text size=\"xs\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nDenseInfoClassification.displayName = 'DenseInfoClassification';\n","import { Card } from '../../../../base/cards';\nimport { Stack } from '../../../../base/structure';\nimport { Badge } from '../../../../base/badge';\nimport { Value } from '../../../../primitives';\nimport { Text } from '../../../../typography/text';\nimport { InlineStat } from '../../inline-stat/inline-stat';\nimport { Separator } from '../../../../base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemTitle,\n} from '../../../../base/item';\nimport { type DenseInfoFinancialProps } from '../types';\nimport { cn } from '../../../../../lib/utils';\nimport { useStrings } from '../../../../../lib/strings';\nimport { defaultDenseInfoStrings } from '../dense-info.strings';\nimport { contentBlockHooks } from '../../../content-block-hooks';\n\nexport function DenseInfoFinancial({\n\ttitle,\n\tdescription,\n\theaderBadges,\n\tlineItems,\n\ttotalLabel,\n\ttotalAmount,\n\tfooterBadges,\n\tfooterText,\n\tactions,\n\tsurface = 'flat',\n\tpadding = surface === 'flat' ? 'none' : 'md',\n\theaderDivider,\n\tclassName,\n\tstrings: stringsProp,\n}: DenseInfoFinancialProps) {\n\tconst strings = useStrings(defaultDenseInfoStrings, stringsProp);\n\treturn (\n\t\t<Card\n\t\t\tsurface={surface}\n\t\t\tpadding={padding}\n\t\t\theaderDivider={headerDivider}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\ttitleSuffix={headerBadges.length > 0 ? (\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t{headerBadges.map((b) => (\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\t\t\t) : undefined}\n\t\t\tactions={actions}\n\t\t\t{...contentBlockHooks(cn('dense-info-financial--component', className))}\n\t\t>\n\t\t\t<Stack gap=\"2xl\">\n\t\t\t\t{/* Line items touch (their density padding is the row rhythm); a single\n\t\t\t\t rule sits above the grand total with the Stack gap on both sides. */}\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{lineItems.map((item) => (\n\t\t\t\t\t\t\t<Item key={item.label} size=\"sm\" role=\"listitem\">\n\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t<ItemTitle className=\"gap-space-md\">\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t<Badge tone={item.badgeTone ?? 'secondary'}>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</ItemTitle>\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t\t\t<Value type=\"inherit\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t{item.amount}\n\t\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ItemGroup>\n\n\t\t\t\t\t{!!totalAmount && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={<Text type=\"inherit\" tag=\"span\" weight=\"semibold\" lineHeight=\"tight\">{totalLabel ?? strings.total}</Text>}\n\t\t\t\t\t\t\t\tvalue={totalAmount}\n\t\t\t\t\t\t\t\tvalueWeight=\"semibold\"\n\t\t\t\t\t\t\t\tvalueClassName=\"tabular-nums\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\n\t\t\t\t{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\">\n\t\t\t\t\t\t{!!footerBadges &&\n\t\t\t\t\t\t\tfooterBadges.map((b) => (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!!footerText && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nDenseInfoFinancial.displayName = 'DenseInfoFinancial';\n","import { Card } from '../../../../base/cards';\nimport { Badge } from '../../../../base/badge';\nimport { Text } from '../../../../typography/text';\nimport { Stack } from '../../../../base/structure';\nimport { type DenseInfoProjectCardProps } from '../types';\nimport { cn } from '../../../../../lib/utils';\nimport { useStrings } from '../../../../../lib/strings';\nimport { defaultDenseInfoStrings } from '../dense-info.strings';\nimport { contentBlockHooks } from '../../../content-block-hooks';\n\nexport function DenseInfoProjectCard({\n\ttitle,\n\tdescription,\n\tstatusLabel,\n\tstatusTone,\n\tmetaPairs,\n\tdate,\n\tpriority,\n\tcompletedTasks,\n\ttotalTasks,\n\tactions,\n\tsurface = 'flat',\n\tpadding: paddingProp,\n\theaderDivider,\n\tclassName,\n\tstrings: stringsProp,\n}: DenseInfoProjectCardProps) {\n\tconst strings = useStrings(defaultDenseInfoStrings, stringsProp);\n\tconst percentage = totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0;\n\tconst circumference = 2 * Math.PI * 7;\n\tconst dashOffset = circumference - (percentage / 100) * circumference;\n\n\treturn (\n\t\t<Card\n\t\t\tsurface={surface}\n\t\t\tpadding={paddingProp ?? (surface === 'flat' ? 'none' : 'md')}\n\t\t\theaderDivider={headerDivider}\n\t\t\ttitle={title}\n\t\t\t// The status reads with the title through the shared title/suffix recipe\n\t\t\t// (no decorative folder glyph, no badge floating where actions go).\n\t\t\ttitleSuffix={\n\t\t\t\t<Badge tone={statusTone} dot>\n\t\t\t\t\t{statusLabel}\n\t\t\t\t</Badge>\n\t\t\t}\n\t\t\tdescription={description ? <span className=\"line-clamp-2\">{description}</span> : undefined}\n\t\t\tactions={actions}\n\t\t\t// Peer project cards stretch to one row height; the facts sit at the\n\t\t\t// bottom so a title or status that wraps in one card does not move the\n\t\t\t// dates and task counts away from its neighbours'.\n\t\t\t{...contentBlockHooks(\n\t\t\t\tcn('dense-info-project-card--component', className),\n\t\t\t\t{ content: 'flex-1 justify-end' },\n\t\t\t\tpaddingProp,\n\t\t\t)}\n\t\t>\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t{!!metaPairs && metaPairs.length > 0 && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t\t{metaPairs.map((pair, idx) => (\n\t\t\t\t\t\t\t<span key={pair.label} className=\"flex items-center gap-space-xs\">\n\t\t\t\t\t\t\t\t{idx > 0 && (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"discrete\">•</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!pair.icon && (\n\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{pair.icon}</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{pair.label}</Text>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t{(!!date || !!priority) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"md\">\n\t\t\t\t\t\t{!!date && <Text size=\"xs\" type=\"secondary\">{date}</Text>}\n\t\t\t\t\t\t{!!priority && <Text size=\"xs\" type=\"secondary\">{strings.formatPriority?.(priority) ?? `${priority} ${strings.priority}`}</Text>}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex items-center gap-space-md\">\n\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" className=\"shrink-0\" aria-hidden=\"true\">\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"10\"\n\t\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\t\tr=\"7\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tclassName=\"stroke-border\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"10\"\n\t\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\t\tr=\"7\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeDasharray={circumference}\n\t\t\t\t\t\t\tstrokeDashoffset={dashOffset}\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tclassName=\"text-primary-accent\"\n\t\t\t\t\t\t\ttransform=\"rotate(-90 10 10)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<Text type=\"inherit\" size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t{strings.formatTasks?.(completedTasks, totalTasks) ?? `${completedTasks}/${totalTasks} ${strings.tasks}`}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nDenseInfoProjectCard.displayName = 'DenseInfoProjectCard';\n","import { Card } from '../../../../base/cards';\nimport { Badge } from '../../../../base/badge';\nimport { Heading, Text } from '../../../../typography';\nimport { InlineStat } from '../../inline-stat/inline-stat';\nimport { Stack } from '../../../../base/structure';\nimport { cn } from '../../../../../lib/utils';\nimport { type DenseInfoScoreCardProps } from '../types';\nimport { contentBlockHooks } from '../../../content-block-hooks';\n\nexport function DenseInfoScoreCard({\n\ttitle,\n\tdescription,\n\tstatusBadges,\n\tscore,\n\tscoreLevel,\n\tscoreFilled,\n\tscoreTotal = 10,\n\trows,\n\tfooterBadges,\n\tactions,\n\tsurface = 'flat',\n\tpadding = surface === 'flat' ? 'none' : 'md',\n\theaderDivider,\n\tclassName,\n}: DenseInfoScoreCardProps) {\n\tconst barColor =\n\t\tscoreLevel === 'good'\n\t\t\t? 'bg-success'\n\t\t\t: scoreLevel === 'medium'\n\t\t\t\t? 'bg-warning'\n\t\t\t\t: 'bg-destructive';\n\n\treturn (\n\t\t<Card\n\t\t\tsurface={surface}\n\t\t\tpadding={padding}\n\t\t\theaderDivider={headerDivider}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\ttitleSuffix={statusBadges.length > 0 ? (\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t{statusBadges.map((b) => (\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\t\t\t) : undefined}\n\t\t\tactions={actions}\n\t\t\t{...contentBlockHooks(cn('dense-info-score-card--component', className))}\n\t\t>\n\t\t\t{/* The score, its factors and the footer are separated by the section gap\n\t\t\t alone; the segmented bar keeps its status colour. The score takes the\n\t\t\t metric hero value role and starts on the block's edge like its rows. */}\n\t\t\t<Stack gap=\"2xl\">\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t{/* A figure, not a section title: it keeps the heading scale and\n\t\t\t\t\t stays out of the document outline. */}\n\t\t\t\t\t<Heading tag=\"p\" size=\"2xl\" className=\"tabular-nums text-inherit\">\n\t\t\t\t\t\t{String(score)}\n\t\t\t\t\t</Heading>\n\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\trole=\"meter\"\n\t\t\t\t\t\taria-label={title}\n\t\t\t\t\t\taria-valuenow={scoreFilled}\n\t\t\t\t\t\taria-valuemin={0}\n\t\t\t\t\t\taria-valuemax={scoreTotal}\n\t\t\t\t\t\tclassName=\"dense-info-score-card--meter\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{Array.from({ length: scoreTotal }, (_, i) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'h-5 w-2 rounded-radius-sm',\n\t\t\t\t\t\t\t\t\ti < scoreFilled ? barColor : 'bg-muted',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t{rows.map((row) => (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\tlabel={<Text tag=\"span\" size=\"xs\" type=\"secondary\" weight=\"medium\" lineHeight=\"tight\">{row.label}</Text>}\n\t\t\t\t\t\t\tvalue={row.value}\n\t\t\t\t\t\t\tvalueWeight=\"semibold\"\n\t\t\t\t\t\t\tvalueClassName=\"text-end tabular-nums\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t{!!footerBadges && footerBadges.length > 0 && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\">\n\t\t\t\t\t\t{footerBadges.map((b) => (\n\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Card>\n\t);\n}\n\nDenseInfoScoreCard.displayName = 'DenseInfoScoreCard';\n","/**\n * Strings for `<EmptyState>`. English defaults — every piece of copy is\n * deep-merge-overridable per rule 8.\n *\n * `title`/`description` here are the *fallback* defaults the component\n * renders when neither the prop nor a per-illustration preset supplies\n * its own copy. In practice, the consumer usually passes an explicit\n * `title` / `description` per resource (\"No products\", \"No invoices yet\")\n * — these defaults exist so a bare `<EmptyState />` still renders\n * sensibly during scaffolding.\n */\nexport interface EmptyStateStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tariaLabel: string;\n}\n\nexport const defaultEmptyStateStrings: EmptyStateStrings = {\n\ttitle: 'Nothing here yet',\n\tdescription: 'Once data lands, it will show up in this view.',\n\tariaLabel: 'Empty state',\n};\n","import {compositionRhythm} from '../../../base/structure/composition.recipes';\n/**\n * EmptyState — the canonical zero-data surface for any list, table, or\n * collection in the library. Wraps the shadcn `ui/empty` primitive\n * (rule 1, rule 12) and applies our typography, density, and tokens:\n *\n * - Headline through `<Heading tag=\"h3\">` (admin scale, no marketing inflation)\n * - Description through provider-sized secondary Typography so a whole-state\n * explanation remains readable; compact footer metadata stays `xs`\n * - Padding driven by the package scale and CSS variables, not arbitrary literals\n * - Optional dashed-border affordance for \"this slot is a drop zone\"\n *\n * Composability:\n * - Slots: `media`, `actions`, `footer`\n * - Render-prop: `renderMedia(ctx)` for fully custom illustrations\n * - Strings: every piece of copy is overridable via `strings`\n *\n * The library ships a small illustration set under\n * `./partials/illustrations/*` — import explicitly per resource:\n *\n * import { StackedCardsIllustration } from\n * './partials/illustrations';\n *\n * Adaptive shape per resource: pass a different `media` per surface.\n * Don't fork the component.\n */\nimport { forwardRef } from 'react';\n\nimport { Heading, Text } from '../../../typography';\nimport {\n\tEmpty,\n\tEmptyContent,\n\tEmptyHeader,\n\tEmptyMedia,\n} from '../../../base/feedback';\nimport { Stack } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\nimport { useDensityConfig } from '../../../../lib/ui-provider';\nimport { cn } from '../../../../lib/utils';\n\nimport { defaultEmptyStateStrings } from './empty-state.strings';\nimport type {\n\tEmptyStateMediaVariant,\n\tEmptyStateProps,\n} from './empty-state.types';\n\nconst MEDIA_VARIANT_TO_PRIMITIVE: Record<EmptyStateMediaVariant, 'default' | 'icon'> = {\n\tnone: 'default',\n\ticon: 'icon',\n\t'icon-soft': 'icon',\n\tillustration: 'default',\n};\n\nconst MEDIA_EXTRA_CLASS: Record<EmptyStateMediaVariant, string | undefined> = {\n\tnone: undefined,\n\ticon: undefined,\n\t'icon-soft': 'bg-muted/50 text-muted-foreground',\n\tillustration: 'mb-space-xl',\n};\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState({\n\ttitle,\n\theadingTag = 'h3',\n\tdescription,\n\tmedia,\n\tmediaVariant = 'none',\n\trenderMedia,\n\tactions,\n\tfooter,\n\tpadding,\n\tsurface = 'plain',\n\tborder = false,\n\tclassName,\n\tstrings: stringsProp,\n\tariaLabel,\n}, ref) {\n\tconst strings = useStrings(defaultEmptyStateStrings, stringsProp);\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedPadding = padding ?? defaultScale ?? 'md';\n\n\tconst resolvedTitle = title ?? strings.title;\n\tconst resolvedDescription =\n\t\tdescription === false ? null : description ?? strings.description;\n\tconst mediaNode = renderMedia ? renderMedia({ mediaVariant }) : media;\n\tconst showMedia = !!mediaNode;\n\n\treturn (\n\t\t<Empty\n\t\t\tref={ref}\n\t\t\trole=\"status\"\n\t\t\taria-label={ariaLabel ?? strings.ariaLabel}\n\t\t\t// The base Empty owns the inset and the wash recipe.\n\t\t\tpadding={resolvedPadding}\n\t\t\tsurface={surface}\n\t\t\tclassName={cn('empty-state--component', \n\t\t\t\t// `border` is the older dashed-edge switch; the wash surface draws its own edge.\n\t\t\t\tborder ? 'border-border border border-dashed' : surface === 'plain' && 'border-border border-0',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<EmptyHeader className=\"empty-state--header\">\n\t\t\t\t{!!showMedia && (\n\t\t\t\t\t<EmptyMedia\n\t\t\t\t\t\tvariant={MEDIA_VARIANT_TO_PRIMITIVE[mediaVariant]}\n\t\t\t\t\t\tclassName={cn('empty-state--media', MEDIA_EXTRA_CLASS[mediaVariant])}\n\t\t\t\t\t>\n\t\t\t\t\t\t{mediaNode}\n\t\t\t\t\t</EmptyMedia>\n\t\t\t\t)}\n\t\t\t\t<Heading\n\t\t\t\t\ttag={headingTag}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tclassName=\"empty-state--title border-0 pb-0 text-inherit\"\n\t\t\t\t\tdata-slot=\"empty-title\"\n\t\t\t\t>\n\t\t\t\t\t{resolvedTitle}\n\t\t\t\t</Heading>\n\t\t\t\t{!!resolvedDescription && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\tclassName=\"empty-state--description [&>a]:text-primary-accent [&>a]:underline [&>a]:underline-offset-4 hover:[&>a]:no-underline\"\n\t\t\t\t\t\tdata-slot=\"empty-description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedDescription}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</EmptyHeader>\n\t\t\t{(!!actions || !!footer) && (\n\t\t\t\t<EmptyContent className=\"empty-state--content\">\n\t\t\t\t\t{!!actions && (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap={compositionRhythm.commands} justify=\"center\" className=\"empty-state--actions\">\n\t\t\t\t\t\t\t{actions}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!footer && (\n\t\t\t\t\t\t<Text tag=\"div\" size=\"xs\" type=\"secondary\" align=\"center\" className=\"empty-state--footer\">\n\t\t\t\t\t\t\t{footer}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</EmptyContent>\n\t\t\t)}\n\t\t</Empty>\n\t);\n});\n\nEmptyState.displayName = 'EmptyState';\n","import { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/** Two staggered document silhouettes; all coordinates belong to the drawing. */\nexport function DocumentStackIllustration({ className }: EmptyStateIllustrationProps) {\n\treturn (\n\t\t<div className={cn('document-stack-illustration--component relative h-24 w-32', className)} aria-hidden=\"true\">\n\t\t\t<svg viewBox=\"0 0 128 96\" className=\"h-full w-full overflow-visible\" focusable=\"false\">\n\t\t\t\t<g transform=\"rotate(-6 44 44)\">\n\t\t\t\t\t<rect x={4.5} y={4.5} width={79} height={79} style={{ rx: 'var(--radius-md)' }} className=\"fill-muted/70 dark:fill-muted/40 stroke-border/50 drop-shadow-xs\" />\n\t\t\t\t\t<rect x={13} y={13} width={48} height={8} rx={4} className=\"fill-muted\" />\n\t\t\t\t\t<rect x={13} y={27} width={40} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<rect x={13} y={39} width={36} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t</g>\n\t\t\t\t<g transform=\"rotate(3 84 48)\">\n\t\t\t\t\t<rect x={44.5} y={8.5} width={79} height={79} style={{ rx: 'var(--radius-md)' }} className=\"fill-background stroke-border drop-shadow-xs\" />\n\t\t\t\t\t<rect x={53} y={17} width={48} height={8} rx={4} className=\"fill-muted\" />\n\t\t\t\t\t<rect x={53} y={31} width={40} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<rect x={53} y={43} width={36} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<circle cx={56} cy={76} r={3} className=\"fill-success\" />\n\t\t\t\t\t<rect x={63} y={73} width={32} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t</g>\n\t\t\t</svg>\n\t\t</div>\n\t);\n}\n\nDocumentStackIllustration.displayName = 'DocumentStackIllustration';\n","import { useId } from 'react';\n\nimport { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/** Open inbox tray with a check; the scene has one intrinsic coordinate system. */\nexport function InboxCleanIllustration({ className }: EmptyStateIllustrationProps) {\n\tconst trayClip = useId();\n\treturn (\n\t\t<div className={cn('inbox-clean-illustration--component relative h-24 w-32', className)} aria-hidden=\"true\">\n\t\t\t<svg viewBox=\"0 0 128 96\" className=\"h-full w-full overflow-visible\" focusable=\"false\">\n\t\t\t\t<defs>\n\t\t\t\t\t<clipPath id={trayClip}>\n\t\t\t\t\t\t<rect x={0.5} y={40.5} width={127} height={55} style={{ rx: 'var(--radius)' }} />\n\t\t\t\t\t</clipPath>\n\t\t\t\t</defs>\n\t\t\t\t<circle cx={64} cy={16} r={15.5} className=\"fill-success/12 stroke-success/30\" />\n\t\t\t\t<path d=\"M59 16l3 3 7-7\" fill=\"none\" className=\"stroke-success\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t<rect x={0.5} y={40.5} width={127} height={55} style={{ rx: 'var(--radius)' }} className=\"fill-background drop-shadow-xs\" />\n\t\t\t\t<g clipPath={`url(#${trayClip})`}>\n\t\t\t\t\t<rect x={1} y={41} width={126} height={12} className=\"fill-muted/30\" />\n\t\t\t\t\t<rect x={13} y={66} width={48} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<rect x={13} y={76} width={32} height={6} rx={3} className=\"fill-muted/40\" />\n\t\t\t\t\t<circle cx={109} cy={74} r={6} className=\"fill-muted/40\" />\n\t\t\t\t</g>\n\t\t\t\t<rect x={0.5} y={40.5} width={127} height={55} style={{ rx: 'var(--radius)' }} fill=\"none\" className=\"stroke-border\" />\n\t\t\t</svg>\n\t\t</div>\n\t);\n}\n\nInboxCleanIllustration.displayName = 'InboxCleanIllustration';\n","import { Search } from 'lucide-react';\n\nimport { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/**\n * Magnifying-glass illustration centered on a soft tinted disk — for\n * \"no search results\", \"nothing matches your filters\" surfaces.\n */\nexport function SearchGlassIllustration({ className }: EmptyStateIllustrationProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'search-glass-illustration--component',\n\t\t\t\t'flex size-20 items-center justify-center rounded-full bg-muted/50 ring-8 ring-muted/30',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<Search className=\"size-8 text-muted-foreground\" />\n\t\t</div>\n\t);\n}\n\nSearchGlassIllustration.displayName = 'SearchGlassIllustration';\n","import { useId } from 'react';\n\nimport { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/** Three card silhouettes with a theme-backed fade; coordinates are drawing geometry. */\nexport function StackedCardsIllustration({ className }: EmptyStateIllustrationProps) {\n\tconst fadeId = useId();\n\treturn (\n\t\t<div className={cn('stacked-cards-illustration--component relative h-24 w-52', className)} aria-hidden=\"true\">\n\t\t\t<svg viewBox=\"0 0 208 96\" className=\"h-full w-full overflow-visible\" focusable=\"false\">\n\t\t\t\t<defs>\n\t\t\t\t\t<linearGradient id={fadeId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t<stop stopColor=\"var(--background)\" stopOpacity={0} />\n\t\t\t\t\t\t<stop offset=\"0.5\" stopColor=\"var(--background)\" stopOpacity={0.6} />\n\t\t\t\t\t\t<stop offset=\"1\" stopColor=\"var(--background)\" />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t</defs>\n\t\t\t\t<rect x={24.5} y={0.5} width={159} height={23} style={{ rx: 'var(--radius)' }} className=\"fill-muted/60 dark:fill-muted/30 stroke-border/50\" />\n\t\t\t\t<rect x={12.5} y={12.5} width={183} height={23} style={{ rx: 'var(--radius)' }} className=\"fill-muted/80 dark:fill-muted/50 stroke-border/60\" />\n\t\t\t\t<rect x={0.5} y={24.5} width={207} height={63} style={{ rx: 'var(--radius)' }} className=\"fill-background stroke-border drop-shadow-xs\" />\n\t\t\t\t<rect x={17} y={40} width={32} height={32} rx={4} className=\"fill-muted\" />\n\t\t\t\t<rect x={61} y={44} width={97.5} height={10} rx={4} className=\"fill-muted\" />\n\t\t\t\t<rect x={61} y={60} width={65} height={8} rx={4} className=\"fill-muted/60\" />\n\t\t\t\t<rect y={64} width={208} height={32} fill={`url(#${fadeId})`} />\n\t\t\t</svg>\n\t\t</div>\n\t);\n}\n\nStackedCardsIllustration.displayName = 'StackedCardsIllustration';\n","import { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/**\n * Three overlapping avatar circles — for \"no team members\", \"no\n * customers\", \"no contributors\" surfaces.\n */\nexport function UsersCircleIllustration({ className }: EmptyStateIllustrationProps) {\n\treturn (\n\t\t<div className={cn('users-circle-illustration--component relative flex h-24 w-32 items-center justify-center', className)} aria-hidden=\"true\">\n\t\t\t<div className=\"bg-muted/50 border-border absolute left-2 size-12 rounded-full border-2\" />\n\t\t\t<div className=\"bg-muted border-border z-10 size-14 rounded-full border-2 shadow-sm\" />\n\t\t\t<div className=\"bg-muted/50 border-border absolute right-2 size-10 rounded-full border-2\" />\n\t\t</div>\n\t);\n}\n\nUsersCircleIllustration.displayName = 'UsersCircleIllustration';\n","/**\n * RelationshipCardFrame — card-free scaffold for app-owned resource cards.\n *\n * The package owns the visual grammar; the app owns the domain data,\n * selectors, mutations, and routing. Frame it with Card at the page,\n * drawer, or preview call site when card chrome is needed.\n */\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { Badge, type BadgeProps } from '../../base/badge';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { headingRoleSizes } from '../../typography/text.styles';\nimport { cn } from '../../../lib/utils';\n\nexport interface RelationshipCardFrameProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n\t/** Leading glyph. */\n\ticon?: ReactNode;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Chip beside the title. Pass a node, or an object to use the built-in badge. */\n\ttitleBadge?: ReactNode | { label: ReactNode; tone?: BadgeProps['tone']; size?: BadgeProps['size'] };\n\t/** Notice between the header and the body. */\n\talertSlot?: ReactNode;\n\t/** Label/value facts under the title. */\n\tmetadataSlot?: ReactNode;\n\t/** Main control, rendered in the body under the facts. */\n\tprimaryActionSlot?: ReactNode;\n\t/** Overflow menu at the end of the header. */\n\toverflowActionSlot?: ReactNode;\n\t/** Control that changes which relationship is shown. */\n\tselectorSlot?: ReactNode;\n\t/** Expanded detail region below the body. */\n\tdetailsSlot?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the header. */\n\theaderClassName?: string;\n\t/** Merged onto the body. */\n\tbodyClassName?: string;\n}\n\nfunction renderTitleBadge(badge: RelationshipCardFrameProps['titleBadge']) {\n\tif (!badge) return null;\n\tif (typeof badge === 'object' && !Array.isArray(badge) && 'label' in badge) {\n\t\treturn (\n\t\t\t<Badge inline tone={badge.tone ?? 'secondary'} size={badge.size}>\n\t\t\t\t{badge.label}\n\t\t\t</Badge>\n\t\t);\n\t}\n\treturn badge;\n}\n\nexport const RelationshipCardFrame = forwardRef<HTMLDivElement, RelationshipCardFrameProps>(function RelationshipCardFrame({\n\ticon,\n\ttitle,\n\ttitleBadge,\n\talertSlot,\n\tmetadataSlot,\n\tprimaryActionSlot,\n\toverflowActionSlot,\n\tselectorSlot,\n\tdetailsSlot,\n\tclassName,\n\theaderClassName,\n\tbodyClassName,\n\t...props\n}, ref) {\n\tconst hasBody =\n\t\t!!alertSlot ||\n\t\t!!metadataSlot ||\n\t\t!!primaryActionSlot ||\n\t\t!!selectorSlot ||\n\t\t!!detailsSlot;\n\n\treturn (\n\t\t<Stack\n\t\t\tref={ref}\n\t\t\tclassName={cn('relationship-card-frame--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" gap=\"md\" align=\"start\" justify=\"between\" wrap={false} className={cn('relationship-card-frame--header', headerClassName)}>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"md\" align=\"start\" wrap={false} className=\"relationship-card-frame--header-start\">\n\t\t\t\t\t{!!icon && (\n\t\t\t\t\t\t<div className=\"relationship-card-frame--icon mt-space-2xs inline-flex shrink-0 items-center text-muted-foreground\">\n\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" className=\"relationship-card-frame--title-row\">\n\t\t\t\t\t\t\t{/* The subject takes the record title role, so it reads above the\n\t\t\t\t\t\t\t field labels of its metadata rather than under them. */}\n\t\t\t\t\t\t\t<Text type=\"inherit\" tag=\"div\" size={headingRoleSizes.subject} weight=\"semibold\" lineHeight=\"tight\" className=\"relationship-card-frame--title truncate\">\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!titleBadge && (\n\t\t\t\t\t\t\t\t<span className=\"relationship-card-frame--title-badge inline-flex\">\n\t\t\t\t\t\t\t\t\t{renderTitleBadge(titleBadge)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t\t</Stack>\n\t\t\t\t{!!overflowActionSlot && (\n\t\t\t\t\t<div className=\"relationship-card-frame--overflow shrink-0\">\n\t\t\t\t\t\t{overflowActionSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\n\t\t\t{!!hasBody && (\n\t\t\t\t<Stack className={cn('relationship-card-frame--body', bodyClassName)}>\n\t\t\t\t\t{!!alertSlot && <div className=\"relationship-card-frame--alert\">{alertSlot}</div>}\n\t\t\t\t\t{!!selectorSlot && <div className=\"relationship-card-frame--selector\">{selectorSlot}</div>}\n\t\t\t\t\t{!!metadataSlot && <div className=\"relationship-card-frame--metadata\">{metadataSlot}</div>}\n\t\t\t\t\t{!!primaryActionSlot && <div className=\"relationship-card-frame--primary-action\">{primaryActionSlot}</div>}\n\t\t\t\t\t{!!detailsSlot && <div className=\"relationship-card-frame--details\">{detailsSlot}</div>}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nRelationshipCardFrame.displayName = 'RelationshipCardFrame';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { d as e } from "./ui-provider-Bu1S-o96.js";
|
|
3
|
+
import { t } from "./utils-BVbAG2J6.js";
|
|
4
|
+
import { c as n } from "./typography-C0dELqYV.js";
|
|
5
|
+
import { n as r, t as i } from "./value-typography-D15uwfj-.js";
|
|
6
|
+
import { useSyncExternalStore as a } from "react";
|
|
7
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
+
import { format as l, formatDistance as u, formatDistanceToNow as d, isValid as f, parseISO as p } from "date-fns";
|
|
9
|
+
//#region src/components/primitives/date.tsx
|
|
10
|
+
var m = {
|
|
11
|
+
compact: "dd MMM",
|
|
12
|
+
short: "P",
|
|
13
|
+
medium: "PP",
|
|
14
|
+
long: "PPP"
|
|
15
|
+
}, h = {
|
|
16
|
+
short: "p",
|
|
17
|
+
medium: "pp"
|
|
18
|
+
}, g = {
|
|
19
|
+
type: "main",
|
|
20
|
+
weight: "regular"
|
|
21
|
+
}, _ = {
|
|
22
|
+
type: "secondary",
|
|
23
|
+
weight: "regular"
|
|
24
|
+
};
|
|
25
|
+
function v(e) {
|
|
26
|
+
if (e == null || e === "") return null;
|
|
27
|
+
if (e instanceof globalThis.Date) return f(e) ? e : null;
|
|
28
|
+
let t = typeof e == "string" ? p(e) : new globalThis.Date(e);
|
|
29
|
+
return f(t) ? t : null;
|
|
30
|
+
}
|
|
31
|
+
var y = /^\d{4}-\d{2}-\d{2}$/, b = /* @__PURE__ */ new Map();
|
|
32
|
+
function x(e, t) {
|
|
33
|
+
try {
|
|
34
|
+
let n = b.get(t);
|
|
35
|
+
n || (n = new Intl.DateTimeFormat("en-US", {
|
|
36
|
+
timeZone: t,
|
|
37
|
+
hourCycle: "h23",
|
|
38
|
+
year: "numeric",
|
|
39
|
+
month: "numeric",
|
|
40
|
+
day: "numeric",
|
|
41
|
+
hour: "numeric",
|
|
42
|
+
minute: "numeric",
|
|
43
|
+
second: "numeric"
|
|
44
|
+
}), b.set(t, n));
|
|
45
|
+
let r = {};
|
|
46
|
+
for (let t of n.formatToParts(e)) r[t.type] = globalThis.Number(t.value);
|
|
47
|
+
let i = new globalThis.Date(0);
|
|
48
|
+
return i.setFullYear(r.year ?? 1970, (r.month ?? 1) - 1, r.day ?? 1), i.setHours(r.hour ?? 0, r.minute ?? 0, r.second ?? 0, e.getMilliseconds()), i;
|
|
49
|
+
} catch {
|
|
50
|
+
return `${t}`, null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function S(e) {
|
|
54
|
+
return typeof e == "string" && y.test(e.trim());
|
|
55
|
+
}
|
|
56
|
+
function C(e, t, n, r) {
|
|
57
|
+
let i = v(e);
|
|
58
|
+
if (!i) return null;
|
|
59
|
+
let a = r && !S(e) ? x(i, r) : i;
|
|
60
|
+
if (!a) return null;
|
|
61
|
+
try {
|
|
62
|
+
return l(a, t, n ? { locale: n } : void 0);
|
|
63
|
+
} catch (e) {
|
|
64
|
+
if (!(e instanceof RangeError)) throw e;
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function w(e) {
|
|
69
|
+
return S(e) ? e.trim() : v(e)?.toISOString();
|
|
70
|
+
}
|
|
71
|
+
function T(e) {
|
|
72
|
+
return e != null && e !== "";
|
|
73
|
+
}
|
|
74
|
+
function E({ from: e, to: t }, { format: n, preset: r = "medium", locale: i, separator: a = " – ", timeZone: o } = {}) {
|
|
75
|
+
let s = n ?? m[r], c = C(e, s, i, o), l = C(t, s, i, o);
|
|
76
|
+
return T(e) && c === null || T(t) && l === null ? null : c && l ? c === l ? c : `${c}${a}${l}` : c ?? l;
|
|
77
|
+
}
|
|
78
|
+
var D = "time";
|
|
79
|
+
function O(e) {
|
|
80
|
+
return e ? { dateTime: e } : {};
|
|
81
|
+
}
|
|
82
|
+
function k({ componentClassName: a, value: o, formatString: c, locale: l, timeZone: u, emptyLabel: d, size: f, align: p, weight: m, type: h, className: _, ref: v, ...y }) {
|
|
83
|
+
let b = e(), x = r({
|
|
84
|
+
size: f,
|
|
85
|
+
type: h,
|
|
86
|
+
weight: m
|
|
87
|
+
}, g), S = C(o, c, l, u ?? b.timeZone), T = S === null ? i(x, m) : x;
|
|
88
|
+
return /* @__PURE__ */ s(n, {
|
|
89
|
+
ref: v,
|
|
90
|
+
tag: S === null ? "span" : D,
|
|
91
|
+
size: T.size,
|
|
92
|
+
align: p,
|
|
93
|
+
weight: T.weight,
|
|
94
|
+
type: T.type,
|
|
95
|
+
lineHeight: T.lineHeight,
|
|
96
|
+
className: t(a, "inline tabular-nums", _),
|
|
97
|
+
...O(S === null ? void 0 : w(o)),
|
|
98
|
+
...y,
|
|
99
|
+
children: S ?? d
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function A({ value: t, format: n, preset: r, locale: i, emptyLabel: a = "—", ...o }) {
|
|
103
|
+
let c = e(), l = n ?? (r ? m[r] : c.format ?? m.medium);
|
|
104
|
+
return /* @__PURE__ */ s(k, {
|
|
105
|
+
...o,
|
|
106
|
+
componentClassName: "date--component",
|
|
107
|
+
value: t,
|
|
108
|
+
formatString: l,
|
|
109
|
+
locale: i ?? c.locale,
|
|
110
|
+
emptyLabel: a
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function j({ value: t, format: n, preset: r = "short", locale: i, emptyLabel: a = "—", ...o }) {
|
|
114
|
+
let c = e();
|
|
115
|
+
return /* @__PURE__ */ s(k, {
|
|
116
|
+
...o,
|
|
117
|
+
componentClassName: "time--component",
|
|
118
|
+
value: t,
|
|
119
|
+
formatString: n ?? h[r],
|
|
120
|
+
locale: i ?? c.locale,
|
|
121
|
+
emptyLabel: a
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function M({ value: t, format: n, timeFormat: r = "p", preset: i, locale: a, emptyLabel: o = "—", ...c }) {
|
|
125
|
+
let l = e(), u = i ? m[i] : l.format ?? m.medium;
|
|
126
|
+
return /* @__PURE__ */ s(k, {
|
|
127
|
+
...c,
|
|
128
|
+
componentClassName: "date-time--component",
|
|
129
|
+
value: t,
|
|
130
|
+
formatString: n ?? `${u} ${r}`,
|
|
131
|
+
locale: a ?? l.locale,
|
|
132
|
+
emptyLabel: o
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function N({ from: a, to: l, format: u, preset: d, locale: f, timeZone: p, separator: h = " – ", openEndLabel: _, openStartLabel: v, emptyLabel: y = "—", size: b, align: x, weight: S, type: w, className: E, ref: D, ...O }) {
|
|
136
|
+
let k = e(), A = r({
|
|
137
|
+
size: b,
|
|
138
|
+
type: w,
|
|
139
|
+
weight: S
|
|
140
|
+
}, g), j = u ?? (d ? m[d] : k.format ?? m.medium), M = f ?? k.locale, N = p ?? k.timeZone, P = C(a, j, M, N), F = C(l, j, M, N), I = !(T(a) && P === null || T(l) && F === null) && !!(P || F), L = I ? A : i(A, S), R = !!P && P === F;
|
|
141
|
+
return /* @__PURE__ */ s(n, {
|
|
142
|
+
ref: D,
|
|
143
|
+
tag: "span",
|
|
144
|
+
size: L.size,
|
|
145
|
+
align: x,
|
|
146
|
+
weight: L.weight,
|
|
147
|
+
type: L.type,
|
|
148
|
+
lineHeight: L.lineHeight,
|
|
149
|
+
className: t("date-range--component inline tabular-nums", E),
|
|
150
|
+
...O,
|
|
151
|
+
children: I ? R ? P : P && F ? /* @__PURE__ */ c(o, { children: [
|
|
152
|
+
P,
|
|
153
|
+
h,
|
|
154
|
+
F
|
|
155
|
+
] }) : P ? _ ? _(P) : P : v && F ? v(F) : F : y
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
var P = /* @__PURE__ */ new Map();
|
|
159
|
+
function F(e, t) {
|
|
160
|
+
let n = P.get(e);
|
|
161
|
+
n || (n = {
|
|
162
|
+
count: 0,
|
|
163
|
+
listeners: /* @__PURE__ */ new Set(),
|
|
164
|
+
timer: null
|
|
165
|
+
}, P.set(e, n));
|
|
166
|
+
let r = n;
|
|
167
|
+
return r.listeners.add(t), r.timer ??= setInterval(() => {
|
|
168
|
+
r.count += 1;
|
|
169
|
+
for (let e of r.listeners) e();
|
|
170
|
+
}, e), () => {
|
|
171
|
+
r.listeners.delete(t), !(r.listeners.size > 0) && (r.timer !== null && clearInterval(r.timer), P.delete(e));
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
var I = () => () => {};
|
|
175
|
+
function L(e) {
|
|
176
|
+
let t = e !== void 0 && globalThis.Number.isFinite(e) && e > 0 ? Math.max(1e3, Math.floor(e)) : null;
|
|
177
|
+
return a(t === null ? I : (e) => F(t, e), () => t === null ? 0 : P.get(t)?.count ?? 0, () => 0);
|
|
178
|
+
}
|
|
179
|
+
function R({ value: a, locale: o, addSuffix: c = !0, includeSeconds: l, now: f, refreshInterval: p, emptyLabel: m = "—", size: h, align: g, weight: y, type: b, formatRelativeTime: x, className: S, ref: C, ...w }) {
|
|
180
|
+
let T = e(), E = r({
|
|
181
|
+
size: h,
|
|
182
|
+
type: b,
|
|
183
|
+
weight: y
|
|
184
|
+
}, _);
|
|
185
|
+
L(p);
|
|
186
|
+
let k = v(a), A = v(f), j = o ?? T.locale, M = {
|
|
187
|
+
addSuffix: c,
|
|
188
|
+
includeSeconds: l,
|
|
189
|
+
...j ? { locale: j } : {}
|
|
190
|
+
}, N = k ? x?.(k.toISOString()) ?? T.formatRelativeTime?.(k.toISOString()) ?? (A ? u(k, A, M) : d(k, M)) : null, P = N === null ? i(E, y) : E;
|
|
191
|
+
return /* @__PURE__ */ s(n, {
|
|
192
|
+
ref: C,
|
|
193
|
+
tag: N === null ? "span" : D,
|
|
194
|
+
size: P.size,
|
|
195
|
+
align: g,
|
|
196
|
+
weight: P.weight,
|
|
197
|
+
type: P.type,
|
|
198
|
+
lineHeight: P.lineHeight,
|
|
199
|
+
className: t("relative-time--component inline tabular-nums", S),
|
|
200
|
+
...O(N === null ? void 0 : k?.toISOString()),
|
|
201
|
+
...w,
|
|
202
|
+
children: N ?? m
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
A.displayName = "Date";
|
|
206
|
+
//#endregion
|
|
207
|
+
export { j as a, R as i, N as n, E as o, M as r, v as s, A as t };
|
|
208
|
+
|
|
209
|
+
//# sourceMappingURL=date-3qsCE1ID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-3qsCE1ID.js","names":["formatDateFns","_Fragment","useDatesConfig","Text","useValueTypography","emptyValueTypography","Fragment$1","datePresetFormats","timePresetFormats","DATE_ROLE","RELATIVE_TIME_ROLE","parseDateInput","value","isValid","parsed","parseISO","DATE_ONLY","zoneFormatters","toZonedWallClock","formatter","timeZone","read","part","date","wallClock","isDateOnly","formatDateValue","shown","format","formatString","locale","error","machineDateTime","hasDateInput","formatDateRange","preset","fromLabel","from","toLabel","to","separator","TIME_TAG","timeAttributes","dateTime","FormattedDate","props","dates","resolved","label","typography","weight","cn","componentClassName","className","emptyLabel","DatePrimitive","Time","DateTime","dateFormat","timeFormat","DateRange","resolvedLocale","resolvedTimeZone","hasLabel","sameDate","openEndLabel","openStartLabel","clockTickers","subscribeToClock","ticker","interval","shared","listener","notify","subscribeToNothing","useClockTick","refreshInterval","useSyncExternalStore","RelativeTime","reference","now","distanceOptions","formatRelativeTime","formatDistance","formatDistanceToNow"],"sources":["../src/components/primitives/date.tsx"],"sourcesContent":["import { useSyncExternalStore, type ComponentPropsWithoutRef, type ReactNode, type Ref } from 'react';\nimport {\n\tformat as formatDateFns,\n\tformatDistance,\n\tformatDistanceToNow,\n\tisValid,\n\tparseISO,\n\ttype Locale,\n} from 'date-fns';\n\nimport { Text, type TextProps } from '../typography';\nimport type { TextSize } from '../../lib/ui-provider';\nimport { EMPTY } from '../../lib/format';\nimport { useDatesConfig } from '../../lib/ui-provider';\nimport { cn } from '../../lib/utils';\n\nimport { emptyValueTypography, useValueTypography, type ValueTypographyRole } from './value-typography';\n\ntype NativeDate = InstanceType<typeof globalThis.Date>;\nexport type DateInput = NativeDate | string | number | null | undefined;\ntype SpanProps = Omit<ComponentPropsWithoutRef<'span'>, 'children' | 'color'>;\n\nexport type DatePreset = 'compact' | 'short' | 'medium' | 'long';\n\nexport interface DateProps extends SpanProps {\n\t/** A native Date, ISO string or millisecond timestamp. Unparseable input renders the empty label. */\n\tvalue?: DateInput;\n\t/** date-fns pattern; prefer `preset` so a screen stays consistent. */\n\tformat?: string;\n\t/** Library preset. Defaults to the provider `dates.format`, then `medium`. */\n\tpreset?: DatePreset;\n\t/** date-fns locale. Defaults to the provider `dates.locale`. */\n\tlocale?: Locale;\n\t/**\n\t * IANA time zone (`Europe/Athens`, `UTC`) an instant is shown in. Defaults to\n\t * the provider `dates.timeZone`, then the host zone. Set it when a server\n\t * and a browser must print the same text. A date-only value (`yyyy-MM-dd`)\n\t * is a calendar date and is never shifted.\n\t */\n\ttimeZone?: string;\n\t/** Rendered with the shared empty treatment when the value is absent or invalid. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Text size. Defaults to the provider text size; inside running text, the surrounding size. */\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\t/** Font weight. Defaults to `regular`; inside running text, the surrounding weight. */\n\tweight?: TextProps['weight'];\n\t/** Colour role. Defaults to `main`; inside running text, the surrounding colour. */\n\ttype?: TextProps['type'];\n\t/** The `time` element when a value is shown, or the empty span. */\n\tref?: Ref<HTMLSpanElement>;\n}\n\nexport interface TimeProps extends Omit<DateProps, 'preset'> {\n\tpreset?: 'short' | 'medium';\n}\n\nexport interface DateTimeProps extends DateProps {\n\ttimeFormat?: string;\n}\n\nexport interface DateRangeValue {\n\tfrom?: DateInput;\n\tto?: DateInput;\n}\n\nexport interface FormatDateRangeOptions {\n\tformat?: string;\n\tpreset?: DatePreset;\n\tlocale?: Locale;\n\tseparator?: string;\n\t/** IANA time zone the instants are shown in. Defaults to the host zone. */\n\ttimeZone?: string;\n}\n\nexport interface DateRangeProps extends Omit<DateProps, 'value'>, DateRangeValue {\n\tseparator?: ReactNode;\n\t/** Copy for a range with only `from`, such as `(date) => <>From {date}</>`. Defaults to the date alone. */\n\topenEndLabel?: (date: string) => ReactNode;\n\t/** Copy for a range with only `to`, such as `(date) => <>Until {date}</>`. Defaults to the date alone. */\n\topenStartLabel?: (date: string) => ReactNode;\n}\n\nexport interface RelativeTimeProps extends SpanProps {\n\tvalue?: DateInput;\n\tlocale?: Locale;\n\t/** Adds \"ago\"/\"in\". Defaults to `true`. */\n\taddSuffix?: boolean;\n\tincludeSeconds?: boolean;\n\t/** The instant to measure from. Defaults to the clock at render; pass it for server rendering and tests. */\n\tnow?: DateInput;\n\t/** Milliseconds between refreshes while mounted, such as `60_000`. Omit to compute once per render. */\n\trefreshInterval?: number;\n\t/** Rendered with the shared empty treatment when the value is absent or invalid. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Text size. Defaults to the provider text size; inside running text, the surrounding size. */\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\t/** Font weight. Defaults to `regular`; inside running text, the surrounding weight. */\n\tweight?: TextProps['weight'];\n\t/** Colour role. Defaults to `secondary` for feeds; inside running text, the surrounding colour. */\n\ttype?: TextProps['type'];\n\tformatRelativeTime?: (iso: string) => string;\n\t/** The `time` element when a value is shown, or the empty span. */\n\tref?: Ref<HTMLSpanElement>;\n}\n\nconst datePresetFormats: Record<DatePreset, string> = {\n\tcompact: 'dd MMM',\n\tshort: 'P',\n\tmedium: 'PP',\n\tlong: 'PPP',\n};\n\nconst timePresetFormats: Record<NonNullable<TimeProps['preset']>, string> = {\n\tshort: 'p',\n\tmedium: 'pp',\n};\n\nconst DATE_ROLE: ValueTypographyRole = { type: 'main', weight: 'regular' };\nconst RELATIVE_TIME_ROLE: ValueTypographyRole = { type: 'secondary', weight: 'regular' };\n\nexport function parseDateInput(value: DateInput): NativeDate | null {\n\tif (value === null || value === undefined || value === '') return null;\n\tif (value instanceof globalThis.Date) return isValid(value) ? value : null;\n\tconst parsed = typeof value === 'string' ? parseISO(value) : new globalThis.Date(value);\n\treturn isValid(parsed) ? parsed : null;\n}\n\nconst DATE_ONLY = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst zoneFormatters = new Map<string, Intl.DateTimeFormat>();\n\nconst warned = new Set<string>();\n\n/** One development warning per distinct mistake, however many rows repeat it. */\nfunction warnInDevelopment(message: string, detail: unknown) {\n\tif (!import.meta.env?.DEV || warned.has(message)) return;\n\twarned.add(message);\n\tconsole.warn(`[themelia-react-ui] ${message}`, detail);\n}\n\n/**\n * The wall-clock reading of an instant in a zone, as a host-local Date that\n * date-fns can format. Zone tokens in a pattern (`xxx`, `zzz`) still describe\n * the host, and a reading that falls in the host's own DST gap cannot be held.\n */\nfunction toZonedWallClock(date: NativeDate, timeZone: string): NativeDate | null {\n\ttry {\n\t\tlet formatter = zoneFormatters.get(timeZone);\n\t\tif (!formatter) {\n\t\t\tformatter = new Intl.DateTimeFormat('en-US', {\n\t\t\t\ttimeZone,\n\t\t\t\thourCycle: 'h23',\n\t\t\t\tyear: 'numeric',\n\t\t\t\tmonth: 'numeric',\n\t\t\t\tday: 'numeric',\n\t\t\t\thour: 'numeric',\n\t\t\t\tminute: 'numeric',\n\t\t\t\tsecond: 'numeric',\n\t\t\t});\n\t\t\tzoneFormatters.set(timeZone, formatter);\n\t\t}\n\t\tconst read: Partial<Record<Intl.DateTimeFormatPartTypes, number>> = {};\n\t\tfor (const part of formatter.formatToParts(date)) read[part.type] = globalThis.Number(part.value);\n\t\tconst wallClock = new globalThis.Date(0);\n\t\twallClock.setFullYear(read.year ?? 1970, (read.month ?? 1) - 1, read.day ?? 1);\n\t\twallClock.setHours(read.hour ?? 0, read.minute ?? 0, read.second ?? 0, date.getMilliseconds());\n\t\treturn wallClock;\n\t} catch (error) {\n\t\twarnInDevelopment(`Unknown time zone \"${timeZone}\".`, error);\n\t\treturn null;\n\t}\n}\n\nfunction isDateOnly(value: DateInput) {\n\treturn typeof value === 'string' && DATE_ONLY.test(value.trim());\n}\n\nfunction formatDateValue(value: DateInput, formatString: string, locale?: Locale, timeZone?: string) {\n\tconst parsed = parseDateInput(value);\n\tif (!parsed) return null;\n\t// A date-only string is a calendar date: it reads the same in every zone.\n\tconst shown = timeZone && !isDateOnly(value) ? toZonedWallClock(parsed, timeZone) : parsed;\n\tif (!shown) return null;\n\ttry {\n\t\treturn formatDateFns(shown, formatString, locale ? { locale } : undefined);\n\t} catch (error) {\n\t\t// date-fns warns and then throws on a pattern it rejects, such as\n\t\t// Moment's `YYYY-MM-DD`. The mistake costs one empty label, not the tree.\n\t\tif (!(error instanceof RangeError)) throw error;\n\t\treturn null;\n\t}\n}\n\n/** The `dateTime` attribute: the calendar date as written, or the instant. */\nfunction machineDateTime(value: DateInput) {\n\tif (isDateOnly(value)) return (value as string).trim();\n\treturn parseDateInput(value)?.toISOString();\n}\n\nfunction hasDateInput(value: DateInput) {\n\treturn value !== null && value !== undefined && value !== '';\n}\n\nexport function formatDateRange(\n\t{ from, to }: DateRangeValue,\n\t{\n\t\tformat,\n\t\tpreset = 'medium',\n\t\tlocale,\n\t\tseparator = ' – ',\n\t\ttimeZone,\n\t}: FormatDateRangeOptions = {},\n): string | null {\n\tconst formatString = format ?? datePresetFormats[preset];\n\tconst fromLabel = formatDateValue(from, formatString, locale, timeZone);\n\tconst toLabel = formatDateValue(to, formatString, locale, timeZone);\n\tif ((hasDateInput(from) && fromLabel === null) || (hasDateInput(to) && toLabel === null)) return null;\n\t// A range that starts and ends on the same displayed date is one date.\n\tif (fromLabel && toLabel) return fromLabel === toLabel ? fromLabel : `${fromLabel}${separator}${toLabel}`;\n\treturn fromLabel ?? toLabel;\n}\n\ninterface FormattedDateProps extends SpanProps {\n\tcomponentClassName: string;\n\tvalue: DateInput;\n\tformatString: string;\n\tlocale?: Locale;\n\ttimeZone?: string;\n\temptyLabel: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tref?: Ref<HTMLSpanElement>;\n}\n\n/** Text renders any inline tag; its public `tag` union stays `div | p | span`. */\nconst TIME_TAG = 'time' as 'span';\n\n/** `dateTime` is a `time` attribute, which the paragraph-typed Text props do not list. */\nfunction timeAttributes(dateTime: string | undefined) {\n\treturn (dateTime ? { dateTime } : {}) as Record<string, string>;\n}\n\n/**\n * Shared owner for Date, Time and DateTime: value typography, a\n * machine-readable `time` element, and the empty treatment as a span.\n */\nfunction FormattedDate({\n\tcomponentClassName,\n\tvalue,\n\tformatString,\n\tlocale,\n\ttimeZone,\n\temptyLabel,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tclassName,\n\tref,\n\t...props\n}: FormattedDateProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, DATE_ROLE);\n\tconst label = formatDateValue(value, formatString, locale, timeZone ?? dates.timeZone);\n\tconst typography = label === null ? emptyValueTypography(resolved, weight) : resolved;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag={label === null ? 'span' : TIME_TAG}\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\n\t\t\tclassName={cn(componentClassName, 'inline tabular-nums', className)}\n\t\t\t{...timeAttributes(label === null ? undefined : machineDateTime(value))}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label ?? emptyLabel}\n\t\t</Text>\n\t);\n}\n\nexport function DatePrimitive({\n\tvalue,\n\tformat,\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: DateProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"date--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={formatString}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function Time({\n\tvalue,\n\tformat,\n\tpreset = 'short',\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: TimeProps) {\n\tconst dates = useDatesConfig();\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"time--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={format ?? timePresetFormats[preset]}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function DateTime({\n\tvalue,\n\tformat,\n\ttimeFormat = 'p',\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: DateTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst dateFormat = preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium;\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"date-time--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={format ?? `${dateFormat} ${timeFormat}`}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function DateRange({\n\tfrom,\n\tto,\n\tformat,\n\tpreset,\n\tlocale,\n\ttimeZone,\n\tseparator = ' – ',\n\topenEndLabel,\n\topenStartLabel,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tclassName,\n\tref,\n\t...props\n}: DateRangeProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, DATE_ROLE);\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\tconst resolvedLocale = locale ?? dates.locale;\n\tconst resolvedTimeZone = timeZone ?? dates.timeZone;\n\tconst fromLabel = formatDateValue(from, formatString, resolvedLocale, resolvedTimeZone);\n\tconst toLabel = formatDateValue(to, formatString, resolvedLocale, resolvedTimeZone);\n\tconst invalid = (hasDateInput(from) && fromLabel === null) || (hasDateInput(to) && toLabel === null);\n\tconst hasLabel = !invalid && Boolean(fromLabel || toLabel);\n\tconst typography = hasLabel ? resolved : emptyValueTypography(resolved, weight);\n\t// A range that starts and ends on the same displayed date is one date.\n\tconst sameDate = !!fromLabel && fromLabel === toLabel;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\n\t\t\tclassName={cn('date-range--component inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{/* A range has no single machine-readable instant, so it stays one text run. */}\n\t\t\t{!hasLabel ? emptyLabel : sameDate ? fromLabel : fromLabel && toLabel ? (\n\t\t\t\t<>\n\t\t\t\t\t{fromLabel}\n\t\t\t\t\t{separator}\n\t\t\t\t\t{toLabel}\n\t\t\t\t</>\n\t\t\t) : fromLabel ? (\n\t\t\t\topenEndLabel ? openEndLabel(fromLabel) : fromLabel\n\t\t\t) : (\n\t\t\t\topenStartLabel && toLabel ? openStartLabel(toLabel) : toLabel\n\t\t\t)}\n\t\t</Text>\n\t);\n}\n\n/**\n * One interval per refresh period, shared by every mounted RelativeTime that\n * asks for it, so a feed of a hundred rows runs one timer.\n */\nconst clockTickers = new Map<number, { count: number; listeners: Set<() => void>; timer: ReturnType<typeof setInterval> | null }>();\n\nfunction subscribeToClock(interval: number, listener: () => void) {\n\tlet ticker = clockTickers.get(interval);\n\tif (!ticker) {\n\t\tticker = { count: 0, listeners: new Set(), timer: null };\n\t\tclockTickers.set(interval, ticker);\n\t}\n\tconst shared = ticker;\n\tshared.listeners.add(listener);\n\tshared.timer ??= setInterval(() => {\n\t\tshared.count += 1;\n\t\tfor (const notify of shared.listeners) notify();\n\t}, interval);\n\treturn () => {\n\t\tshared.listeners.delete(listener);\n\t\tif (shared.listeners.size > 0) return;\n\t\tif (shared.timer !== null) clearInterval(shared.timer);\n\t\tclockTickers.delete(interval);\n\t};\n}\n\nconst subscribeToNothing = () => () => {};\n\nfunction useClockTick(refreshInterval: number | undefined) {\n\tconst interval = refreshInterval !== undefined && globalThis.Number.isFinite(refreshInterval) && refreshInterval > 0\n\t\t? Math.max(1_000, Math.floor(refreshInterval))\n\t\t: null;\n\treturn useSyncExternalStore(\n\t\tinterval === null ? subscribeToNothing : (listener) => subscribeToClock(interval, listener),\n\t\t() => (interval === null ? 0 : clockTickers.get(interval)?.count ?? 0),\n\t\t() => 0,\n\t);\n}\n\nexport function RelativeTime({\n\tvalue,\n\tlocale,\n\taddSuffix = true,\n\tincludeSeconds,\n\tnow,\n\trefreshInterval,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tformatRelativeTime,\n\tclassName,\n\tref,\n\t...props\n}: RelativeTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, RELATIVE_TIME_ROLE);\n\tuseClockTick(refreshInterval);\n\tconst parsed = parseDateInput(value);\n\tconst reference = parseDateInput(now);\n\tconst resolvedLocale = locale ?? dates.locale;\n\tconst distanceOptions = {\n\t\taddSuffix,\n\t\tincludeSeconds,\n\t\t...(resolvedLocale ? { locale: resolvedLocale } : {}),\n\t};\n\tconst label = parsed\n\t\t? formatRelativeTime?.(parsed.toISOString()) ??\n\t\t\tdates.formatRelativeTime?.(parsed.toISOString()) ??\n\t\t\t(reference ? formatDistance(parsed, reference, distanceOptions) : formatDistanceToNow(parsed, distanceOptions))\n\t\t: null;\n\tconst typography = label === null ? emptyValueTypography(resolved, weight) : resolved;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag={label === null ? 'span' : TIME_TAG}\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\n\t\t\tclassName={cn('relative-time--component inline tabular-nums', className)}\n\t\t\t{...timeAttributes(label === null ? undefined : parsed?.toISOString())}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label ?? emptyLabel}\n\t\t</Text>\n\t);\n}\n\nDatePrimitive.displayName = 'Date';\n"],"mappings":"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"}
|