@wildo-ai/presets-components 1.1.3 → 1.1.5
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/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +61 -7
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.js +3 -3
- package/dist/esm/components/actions/action-button.js.map +1 -1
- package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
- package/dist/esm/components/actions/button-group.d.ts.map +1 -1
- package/dist/esm/components/actions/button.d.ts.map +1 -1
- package/dist/esm/components/actions/button.js +62 -3
- package/dist/esm/components/actions/button.js.map +1 -1
- package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.js +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts +4 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.js +165 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts +3 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js +63 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
- package/dist/esm/components/ai-elements/decision/approval.d.ts +36 -4
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js +77 -7
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.js +1 -1
- package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.js +8 -1
- package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
- package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
- package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.js +23 -18
- package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
- package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
- package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
- package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
- package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
- package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
- package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.js +21 -0
- package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
- package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.js +9 -8
- package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
- package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
- package/dist/esm/components/app/public-layout-terms.js +137 -0
- package/dist/esm/components/app/public-layout-terms.js.map +1 -0
- package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js +3 -1
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
- package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
- package/dist/esm/components/billing/billing-plan-change-preview.js +22 -0
- package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js +19 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
- package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
- package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js +3 -1
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
- package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js +4 -2
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.labels.js +1 -0
- package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js +3 -1
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
- package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js +4 -4
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.labels.js +2 -0
- package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
- package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
- package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.js +16 -15
- package/dist/esm/components/data-display/badge.js.map +1 -1
- package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.d.ts +2 -1
- package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.js +24 -8
- package/dist/esm/components/data-display/description-list.js.map +1 -1
- package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/duration.d.ts +15 -0
- package/dist/esm/components/data-display/duration.d.ts.map +1 -0
- package/dist/esm/components/data-display/duration.js +50 -0
- package/dist/esm/components/data-display/duration.js.map +1 -0
- package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
- package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
- package/dist/esm/components/data-display/duration.labels.js +35 -0
- package/dist/esm/components/data-display/duration.labels.js.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
- package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
- package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
- package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
- package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
- package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
- package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.js +12 -8
- package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
- package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.labels.js +1 -0
- package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.js +82 -7
- package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/identifier.d.ts +19 -0
- package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
- package/dist/esm/components/data-display/identifier.js +21 -0
- package/dist/esm/components/data-display/identifier.js.map +1 -0
- package/dist/esm/components/data-display/kbd.d.ts +17 -0
- package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
- package/dist/esm/components/data-display/kbd.js +18 -0
- package/dist/esm/components/data-display/kbd.js.map +1 -0
- package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
- package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.js +3 -11
- package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
- package/dist/esm/components/data-display/timeline.d.ts +3 -0
- package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
- package/dist/esm/components/data-display/timeline.js +92 -0
- package/dist/esm/components/data-display/timeline.js.map +1 -0
- package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
- package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.js +146 -22
- package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.js +11 -1
- package/dist/esm/components/feedback/empty-state.js.map +1 -1
- package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.js +6 -6
- package/dist/esm/components/feedback/notification-center.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
- package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.js +11 -3
- package/dist/esm/components/form/chromes/field.js.map +1 -1
- package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.js +28 -0
- package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.js +4 -3
- package/dist/esm/components/form/combobox.js.map +1 -1
- package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
- package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
- package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.js +13 -12
- package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
- package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
- package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +54 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +159 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +22 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +27 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +41 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +129 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +22 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +27 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
- package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
- package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
- package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
- package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.js +35 -13
- package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.js +10 -2
- package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
- package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.js +38 -22
- package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
- package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.js +30 -5
- package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.js +2 -2
- package/dist/esm/components/navigation/command.js.map +1 -1
- package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
- package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.js +11 -1
- package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/card.d.ts.map +1 -1
- package/dist/esm/components/sections/card.js +71 -6
- package/dist/esm/components/sections/card.js.map +1 -1
- package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.js +36 -6
- package/dist/esm/components/sections/content-section.js.map +1 -1
- package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
- package/dist/esm/components/sections/option-gesture.d.ts +15 -0
- package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
- package/dist/esm/components/sections/option-gesture.js +66 -0
- package/dist/esm/components/sections/option-gesture.js.map +1 -0
- package/dist/esm/components/sections/pagination.d.ts.map +1 -1
- package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/table.d.ts.map +1 -1
- package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.js +64 -15
- package/dist/esm/components/sections/tabs.js.map +1 -1
- package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/label.d.ts.map +1 -1
- package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/link.d.ts.map +1 -1
- package/dist/esm/components/typography/link.js +9 -3
- package/dist/esm/components/typography/link.js.map +1 -1
- package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/text.d.ts +1 -1
- package/dist/esm/components/typography/text.d.ts.map +1 -1
- package/dist/esm/components/typography/text.js +3 -2
- package/dist/esm/components/typography/text.js.map +1 -1
- package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
- package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.js +37 -60
- package/dist/esm/config/preset-design-system.js.map +1 -1
- package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
- package/dist/esm/config/preset-kits.d.ts.map +1 -1
- package/dist/esm/config/preset-navigation.d.ts.map +1 -1
- package/dist/esm/config/preset-navigation.js +0 -5
- package/dist/esm/config/preset-navigation.js.map +1 -1
- package/dist/esm/config/preset-resources.d.ts.map +1 -1
- package/dist/esm/config/preset-shell.d.ts.map +1 -1
- package/dist/esm/config/preset-utils.d.ts.map +1 -1
- package/dist/esm/config/presets.d.ts.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
- package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.js +163 -7
- package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.js +1 -0
- package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.js +21 -5
- package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.js +25 -3
- package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/index.d.ts.map +1 -1
- package/dist/esm/config/resources/index.js.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.js +90 -12
- package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.d.ts +8 -2
- package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.js +185 -29
- package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/webhooks.resource-presets.js +27 -2
- package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
- package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
- package/dist/esm/mermaid-stub.d.ts.map +1 -1
- package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
- package/dist/esm/registration/register-common-enums.js +48 -34
- package/dist/esm/registration/register-common-enums.js.map +1 -1
- package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
- package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
- package/dist/esm/registration/register-default-icons.js +3 -1
- package/dist/esm/registration/register-default-icons.js.map +1 -1
- package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
- package/dist/esm/registration/register-default-presets.js +36 -4
- package/dist/esm/registration/register-default-presets.js.map +1 -1
- package/dist/esm/registration/register-provider-components.d.ts +31 -0
- package/dist/esm/registration/register-provider-components.d.ts.map +1 -0
- package/dist/esm/registration/register-provider-components.js +50 -0
- package/dist/esm/registration/register-provider-components.js.map +1 -0
- package/dist/esm/shiki-subset.d.ts +11 -3
- package/dist/esm/shiki-subset.d.ts.map +1 -1
- package/dist/esm/shiki-subset.js +10 -2
- package/dist/esm/shiki-subset.js.map +1 -1
- package/dist/esm/theme-exports.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.js +19 -5
- package/dist/esm/themes/cozy.theme.js.map +1 -1
- package/dist/esm/themes/dense.theme.d.ts.map +1 -1
- package/dist/esm/themes/dense.theme.js +56 -10
- package/dist/esm/themes/dense.theme.js.map +1 -1
- package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
- package/dist/esm/themes/editorial.theme.js +19 -5
- package/dist/esm/themes/editorial.theme.js.map +1 -1
- package/dist/esm/themes/glass.theme.d.ts.map +1 -1
- package/dist/esm/themes/glass.theme.js +5 -1
- package/dist/esm/themes/glass.theme.js.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.js +9 -2
- package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
- package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
- package/dist/esm/themes/terminal.theme.js +19 -5
- package/dist/esm/themes/terminal.theme.js.map +1 -1
- package/dist/esm/themes/trading.theme.d.ts.map +1 -1
- package/dist/esm/themes/trading.theme.js +22 -6
- package/dist/esm/themes/trading.theme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +29 -44
- package/dist/esm/.native.tsbuildinfo +0 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
|
@@ -7,25 +7,42 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
7
7
|
* Supports different display modes: text, truncate, multiline, markdown, color, link, email, badge, copy, secret
|
|
8
8
|
*/
|
|
9
9
|
import * as React from "react";
|
|
10
|
-
import { useI18n, useIconRegistry, StandardIconReference, IconSize, Text, Badge } from "@wildo-ai/saas-frontend-lib";
|
|
10
|
+
import { useI18n, useIconRegistry, StandardIconReference, IconSize, Text, Badge, Identifier, useContextualDisplayParams } from "@wildo-ai/saas-frontend-lib";
|
|
11
11
|
import { FrontendComponentType } from "@wildo-ai/presets-components-models";
|
|
12
12
|
import { getStringUI, getStringFormat, StringDisplayMode } from "@wildo-ai/zod-decorators";
|
|
13
13
|
import { MarkdownContent } from "../markdown-content.js";
|
|
14
|
+
/**
|
|
15
|
+
* Split a string into user-perceived characters.
|
|
16
|
+
*
|
|
17
|
+
* `Intl.Segmenter` is the only thing that gets this right — code units split surrogate pairs, and
|
|
18
|
+
* code points still split a flag, a ZWJ sequence, a skin-tone modifier and a combining accent. The
|
|
19
|
+
* fallback to code points is for a runtime without it; it is strictly better than code units and
|
|
20
|
+
* cannot produce a lone surrogate, which is the failure that actually shows on screen.
|
|
21
|
+
*/
|
|
22
|
+
const GRAPHEME_SEGMENTER = typeof Intl !== 'undefined' && typeof Intl.Segmenter === 'function'
|
|
23
|
+
? new Intl.Segmenter(undefined, { granularity: 'grapheme' })
|
|
24
|
+
: null;
|
|
25
|
+
function splitIntoGraphemes(value) {
|
|
26
|
+
if (!GRAPHEME_SEGMENTER)
|
|
27
|
+
return Array.from(value);
|
|
28
|
+
return Array.from(GRAPHEME_SEGMENTER.segment(value), part => part.segment);
|
|
29
|
+
}
|
|
14
30
|
/**
|
|
15
31
|
* DisplayFieldString component
|
|
16
32
|
*
|
|
17
33
|
* Renders a string value according to the string UI decorator
|
|
18
34
|
*/
|
|
19
35
|
function DisplayFieldString({ schema, value, className, }) {
|
|
20
|
-
const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD });
|
|
36
|
+
const { tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING] });
|
|
21
37
|
const { renderIcon } = useIconRegistry();
|
|
22
38
|
const [copied, setCopied] = React.useState(false);
|
|
23
39
|
const stringUI = getStringUI(schema);
|
|
24
40
|
const stringFormat = getStringFormat(schema);
|
|
25
41
|
// SECRET fields mask by default; `initiallyRevealed` (set by `.isEphemeral()`)
|
|
26
42
|
// shows the value on first paint for one-time reveals. The eye toggle still works.
|
|
27
|
-
const
|
|
28
|
-
|
|
43
|
+
const stringDisplayParams = useContextualDisplayParams(stringUI);
|
|
44
|
+
const [revealed, setRevealed] = React.useState(stringDisplayParams?.initiallyRevealed ?? false);
|
|
45
|
+
let displayMode = stringDisplayParams?.displayMode ?? StringDisplayMode.TEXT;
|
|
29
46
|
if (!stringUI && stringFormat) {
|
|
30
47
|
if (stringFormat === 'email')
|
|
31
48
|
displayMode = StringDisplayMode.EMAIL;
|
|
@@ -50,13 +67,71 @@ function DisplayFieldString({ schema, value, className, }) {
|
|
|
50
67
|
switch (displayMode) {
|
|
51
68
|
case StringDisplayMode.TEXT:
|
|
52
69
|
return _jsx(Text, { children: value });
|
|
53
|
-
case StringDisplayMode.TRUNCATE:
|
|
54
|
-
|
|
70
|
+
case StringDisplayMode.TRUNCATE: {
|
|
71
|
+
// TWO AXES, BOTH LIVE, AND THEY ARE NOT THE SAME QUESTION.
|
|
72
|
+
//
|
|
73
|
+
// The `truncate` class below is a WIDTH cap: it clips to whatever the container can
|
|
74
|
+
// show, so it is responsive and never cuts a value that fits. `truncateLength` is a
|
|
75
|
+
// CHARACTER cap — its declaration says "Max characters before truncation" — so it is a
|
|
76
|
+
// statement about the VALUE and holds at any width. Applying both gives the shorter of
|
|
77
|
+
// the two, which is what an author asking for either one expects.
|
|
78
|
+
//
|
|
79
|
+
// The `ch`-based width ceiling considered as an alternative was rejected: a `ch` is the
|
|
80
|
+
// advance of "0", so against a proportional font `truncateLength: 48` would show
|
|
81
|
+
// anywhere from roughly thirty to eighty characters. That makes a parameter documented
|
|
82
|
+
// as a character count mean something it does not say, which is the kind of near-miss
|
|
83
|
+
// semantics the framework refuses.
|
|
84
|
+
//
|
|
85
|
+
// The ellipsis is ADDITIONAL to the budget: `truncateLength: 48` yields 48 characters
|
|
86
|
+
// of the value plus the mark that more exists, which is how a "max characters" cap
|
|
87
|
+
// reads everywhere else. `trimEnd` so a cut landing mid-space does not render "abc …".
|
|
88
|
+
//
|
|
89
|
+
// A CHARACTER IS A GRAPHEME, not a UTF-16 code unit, and the difference is not academic.
|
|
90
|
+
// `value.slice(0, n)` cuts between the two halves of a surrogate pair, so a string of emoji
|
|
91
|
+
// rendered at `truncateLength: 3` came out as `👍�…` — a literal replacement glyph. It also
|
|
92
|
+
// counted `"🎉🎉🎉"` as six characters, which made this parameter mean something other than
|
|
93
|
+
// what its own declaration says, for exactly the reason the `ch`-based alternative was
|
|
94
|
+
// rejected. `Intl.Segmenter` counts and cuts what a reader would call a character: an emoji
|
|
95
|
+
// with a skin-tone modifier, a family joined by ZWJ, a flag's two regional indicators, and a
|
|
96
|
+
// letter with its combining accent are each one.
|
|
97
|
+
const maximumCharacters = stringDisplayParams?.truncateLength;
|
|
98
|
+
const graphemes = typeof maximumCharacters === 'number' && maximumCharacters > 0
|
|
99
|
+
? splitIntoGraphemes(value)
|
|
100
|
+
: null;
|
|
101
|
+
const clipsAtCharacterCount = graphemes !== null && typeof maximumCharacters === 'number' && graphemes.length > maximumCharacters;
|
|
102
|
+
if (!clipsAtCharacterCount) {
|
|
103
|
+
return (_jsx(Text, { className: "min-w-0 truncate", children: value }));
|
|
104
|
+
}
|
|
105
|
+
// `title` carries the full value, and it is not decoration: a character cap REMOVES the
|
|
106
|
+
// remainder from the DOM, where a CSS clip only hides it, so without this there is nothing
|
|
107
|
+
// left holding the rest of the string.
|
|
108
|
+
//
|
|
109
|
+
// Be precise about what it does and does not restore, because an earlier version of this
|
|
110
|
+
// comment overclaimed and a review caught it. `title` is an ATTRIBUTE, so browser
|
|
111
|
+
// find-in-page — which searches rendered text — does NOT match the hidden remainder, and a
|
|
112
|
+
// screen reader's treatment of `title` on a `<p>` is inconsistent and never keyboard
|
|
113
|
+
// reachable. It is the strongest affordance available on this element, not an equivalent of
|
|
114
|
+
// leaving the text in place.
|
|
115
|
+
//
|
|
116
|
+
// On a surface whose policy sets `tooltipOnTruncate`, `Text` routes its children into a
|
|
117
|
+
// styled tooltip when the element OVERFLOWS. A character-capped string usually no longer
|
|
118
|
+
// overflows, so that tooltip stops opening and the native `title` is what remains. The full
|
|
119
|
+
// value stays reachable either way; the polish of which tooltip shows it does not survive
|
|
120
|
+
// the cap, and an author choosing `truncateLength` on such a surface is choosing that.
|
|
121
|
+
return (_jsx(Text, { className: "min-w-0 truncate", title: value, children: `${(graphemes ?? []).slice(0, maximumCharacters).join('').trimEnd()}…` }));
|
|
122
|
+
}
|
|
55
123
|
case StringDisplayMode.MULTILINE:
|
|
56
124
|
return (_jsx(Text, { className: "whitespace-pre-wrap", children: value }));
|
|
57
125
|
case StringDisplayMode.IDENTIFIER:
|
|
58
126
|
// A machine ref/slug: verbatim and greppable, styled to recede behind the prose.
|
|
59
|
-
|
|
127
|
+
//
|
|
128
|
+
// Through the `Identifier` element rather than a class string, and that is the whole point of
|
|
129
|
+
// that element existing: this treatment used to live ONLY here, inside a switch nothing
|
|
130
|
+
// outside the field pipeline can call, so every surface that builds its own rows spelled the
|
|
131
|
+
// same classes by hand and drifted. One resolved component is what lets a hand-built row and
|
|
132
|
+
// a field render the same ref the same way — and makes the treatment themeable, which a
|
|
133
|
+
// class string in a switch never was.
|
|
134
|
+
return _jsx(Identifier, { children: value });
|
|
60
135
|
case StringDisplayMode.MARKDOWN:
|
|
61
136
|
// Rich long-form content (descriptions, notes): full markdown body
|
|
62
137
|
// themed through the typography recipes. See markdown-content.tsx for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-string.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-string.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldString Component\n *\n * Displays a string value based on the string UI decorator.\n * Supports different display modes: text, truncate, multiline, markdown, color, link, email, badge, copy, secret\n */\n\nimport * as React from \"react\"\n\nimport { cn, useI18n, useIconRegistry, StandardIconReference, IconSize, Text, Badge } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { getStringUI, getStringFormat, StringDisplayMode } from \"@wildo-ai/zod-decorators\"\nimport type { DisplayFieldStringProps } from '@wildo-ai/saas-frontend-lib'\n\nimport { MarkdownContent } from \"../markdown-content\"\n\n/**\n * DisplayFieldString component\n *\n * Renders a string value according to the string UI decorator\n */\nfunction DisplayFieldString({\n schema,\n value,\n className,\n}: DisplayFieldStringProps): React.JSX.Element | null {\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD })\n const { renderIcon } = useIconRegistry()\n const [copied, setCopied] = React.useState(false)\n\n const stringUI = getStringUI(schema)\n const stringFormat = getStringFormat(schema)\n\n // SECRET fields mask by default; `initiallyRevealed` (set by `.isEphemeral()`)\n // shows the value on first paint for one-time reveals. The eye toggle still works.\n const [revealed, setRevealed] = React.useState(stringUI?.display?.initiallyRevealed ?? false)\n\n let displayMode = stringUI?.display?.displayMode ?? StringDisplayMode.TEXT\n if (!stringUI && stringFormat) {\n if (stringFormat === 'email') displayMode = StringDisplayMode.EMAIL\n else if (stringFormat === 'url') displayMode = StringDisplayMode.LINK\n }\n\n // Copy to clipboard handler\n const handleCopy = async () => {\n if (value) {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n }\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\n if (value === null || value === undefined || value === '') {\n return <><Text className=\"text-muted-foreground italic\" aria-hidden=\"true\">—</Text><span className=\"sr-only\">{tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD, 'noValue')}</span></>\n }\n\n // Render based on display mode\n switch (displayMode) {\n case StringDisplayMode.TEXT:\n return <Text>{value}</Text>\n\n case StringDisplayMode.TRUNCATE:\n return (\n <Text className=\"min-w-0 truncate\">\n {value}\n </Text>\n )\n\n case StringDisplayMode.MULTILINE:\n return (\n <Text className=\"whitespace-pre-wrap\">\n {value}\n </Text>\n )\n\n case StringDisplayMode.IDENTIFIER:\n // A machine ref/slug: verbatim and greppable, styled to recede behind the prose.\n return <Text className=\"font-mono text-xs text-muted-foreground break-all\">{value}</Text>\n\n case StringDisplayMode.MARKDOWN:\n // Rich long-form content (descriptions, notes): full markdown body\n // themed through the typography recipes. See markdown-content.tsx for\n // the embedded heading-demotion rationale.\n return <MarkdownContent value={value} />\n\n\n case StringDisplayMode.COLOR:\n return (\n <div className=\"flex items-center gap-element\">\n <div\n className=\"h-5 w-5 rounded border border-border\"\n style={{ backgroundColor: value }}\n aria-hidden=\"true\"\n />\n <Text className=\"font-mono text-sm\">{value}</Text>\n </div>\n )\n\n case StringDisplayMode.LINK:\n return (\n <a\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:underline\"\n >\n {value}\n </a>\n )\n\n case StringDisplayMode.EMAIL:\n return (\n <a\n href={`mailto:${value}`}\n className=\"text-primary hover:underline\"\n >\n {value}\n </a>\n )\n\n case StringDisplayMode.BADGE:\n return <Badge variant=\"secondary\">{value}</Badge>\n\n case StringDisplayMode.COPY:\n return (\n <div className=\"flex items-center gap-element\">\n <Text className=\"font-mono text-sm\">{value}</Text>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={copied ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copied') : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copyToClipboard')}\n >\n <span aria-hidden=\"true\">\n {copied\n ? renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })\n : renderIcon(StandardIconReference.COPY, { size: IconSize.SM })\n }\n </span>\n </button>\n </div>\n )\n\n case StringDisplayMode.SECRET:\n return (\n <div className=\"flex items-center gap-element\">\n <Text className=\"font-mono text-sm select-all\" aria-live=\"polite\">\n {revealed ? value : '••••••••••••••••'}\n </Text>\n <button\n type=\"button\"\n onClick={() => setRevealed(prev => !prev)}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={revealed ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'hideValue') : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'revealValue')}\n >\n <span aria-hidden=\"true\">\n {revealed\n ? renderIcon(StandardIconReference.EYE_OFF, { size: IconSize.SM })\n : renderIcon(StandardIconReference.EYE, { size: IconSize.SM })\n }\n </span>\n </button>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={copied ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copied') : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copyToClipboard')}\n >\n <span aria-hidden=\"true\">\n {copied\n ? renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })\n : renderIcon(StandardIconReference.COPY, { size: IconSize.SM })\n }\n </span>\n </button>\n </div>\n )\n\n default:\n return <Text>{value}</Text>\n }\n }\n\n if (!isReady) return null\n // Label/description rendering is handled by the parent DisplayField (FIELD-01)\n return <div className={className}>{renderValue()}</div>\n}\n\n;(DisplayFieldString as typeof DisplayFieldString & { displayName: string }).displayName = \"DisplayFieldString\"\n\nexport { DisplayFieldString }\n"]}
|
|
1
|
+
{"version":3,"file":"display-field-string.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-string.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldString Component\n *\n * Displays a string value based on the string UI decorator.\n * Supports different display modes: text, truncate, multiline, markdown, color, link, email, badge, copy, secret\n */\n\nimport * as React from \"react\"\n\nimport { cn, useI18n, useIconRegistry, StandardIconReference, IconSize, Text, Badge, Identifier, useContextualDisplayParams} from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { getStringUI, getStringFormat, StringDisplayMode } from \"@wildo-ai/zod-decorators\"\nimport type { DisplayFieldStringProps } from '@wildo-ai/saas-frontend-lib'\n\nimport { MarkdownContent } from \"../markdown-content\"\n\n/**\n * Split a string into user-perceived characters.\n *\n * `Intl.Segmenter` is the only thing that gets this right — code units split surrogate pairs, and\n * code points still split a flag, a ZWJ sequence, a skin-tone modifier and a combining accent. The\n * fallback to code points is for a runtime without it; it is strictly better than code units and\n * cannot produce a lone surrogate, which is the failure that actually shows on screen.\n */\nconst GRAPHEME_SEGMENTER =\n typeof Intl !== 'undefined' && typeof Intl.Segmenter === 'function'\n ? new Intl.Segmenter(undefined, { granularity: 'grapheme' })\n : null\n\nfunction splitIntoGraphemes(value: string): string[] {\n if (!GRAPHEME_SEGMENTER) return Array.from(value)\n return Array.from(GRAPHEME_SEGMENTER.segment(value), part => part.segment)\n}\n\n/**\n * DisplayFieldString component\n *\n * Renders a string value according to the string UI decorator\n */\nfunction DisplayFieldString({\n schema,\n value,\n className,\n}: DisplayFieldStringProps): React.JSX.Element | null {\n const { tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING] })\n const { renderIcon } = useIconRegistry()\n const [copied, setCopied] = React.useState(false)\n\n const stringUI = getStringUI(schema)\n const stringFormat = getStringFormat(schema)\n\n // SECRET fields mask by default; `initiallyRevealed` (set by `.isEphemeral()`)\n // shows the value on first paint for one-time reveals. The eye toggle still works.\n const stringDisplayParams = useContextualDisplayParams(stringUI)\n const [revealed, setRevealed] = React.useState(stringDisplayParams?.initiallyRevealed ?? false)\n\n let displayMode = stringDisplayParams?.displayMode ?? StringDisplayMode.TEXT\n if (!stringUI && stringFormat) {\n if (stringFormat === 'email') displayMode = StringDisplayMode.EMAIL\n else if (stringFormat === 'url') displayMode = StringDisplayMode.LINK\n }\n\n // Copy to clipboard handler\n const handleCopy = async () => {\n if (value) {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n }\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\n if (value === null || value === undefined || value === '') {\n return <><Text className=\"text-muted-foreground italic\" aria-hidden=\"true\">—</Text><span className=\"sr-only\">{tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD, 'noValue')}</span></>\n }\n\n // Render based on display mode\n switch (displayMode) {\n case StringDisplayMode.TEXT:\n return <Text>{value}</Text>\n\n case StringDisplayMode.TRUNCATE: {\n // TWO AXES, BOTH LIVE, AND THEY ARE NOT THE SAME QUESTION.\n //\n // The `truncate` class below is a WIDTH cap: it clips to whatever the container can\n // show, so it is responsive and never cuts a value that fits. `truncateLength` is a\n // CHARACTER cap — its declaration says \"Max characters before truncation\" — so it is a\n // statement about the VALUE and holds at any width. Applying both gives the shorter of\n // the two, which is what an author asking for either one expects.\n //\n // The `ch`-based width ceiling considered as an alternative was rejected: a `ch` is the\n // advance of \"0\", so against a proportional font `truncateLength: 48` would show\n // anywhere from roughly thirty to eighty characters. That makes a parameter documented\n // as a character count mean something it does not say, which is the kind of near-miss\n // semantics the framework refuses.\n //\n // The ellipsis is ADDITIONAL to the budget: `truncateLength: 48` yields 48 characters\n // of the value plus the mark that more exists, which is how a \"max characters\" cap\n // reads everywhere else. `trimEnd` so a cut landing mid-space does not render \"abc …\".\n //\n // A CHARACTER IS A GRAPHEME, not a UTF-16 code unit, and the difference is not academic.\n // `value.slice(0, n)` cuts between the two halves of a surrogate pair, so a string of emoji\n // rendered at `truncateLength: 3` came out as `👍�…` — a literal replacement glyph. It also\n // counted `\"🎉🎉🎉\"` as six characters, which made this parameter mean something other than\n // what its own declaration says, for exactly the reason the `ch`-based alternative was\n // rejected. `Intl.Segmenter` counts and cuts what a reader would call a character: an emoji\n // with a skin-tone modifier, a family joined by ZWJ, a flag's two regional indicators, and a\n // letter with its combining accent are each one.\n const maximumCharacters = stringDisplayParams?.truncateLength\n const graphemes = typeof maximumCharacters === 'number' && maximumCharacters > 0\n ? splitIntoGraphemes(value)\n : null\n const clipsAtCharacterCount =\n graphemes !== null && typeof maximumCharacters === 'number' && graphemes.length > maximumCharacters\n\n if (!clipsAtCharacterCount) {\n return (\n <Text className=\"min-w-0 truncate\">\n {value}\n </Text>\n )\n }\n\n // `title` carries the full value, and it is not decoration: a character cap REMOVES the\n // remainder from the DOM, where a CSS clip only hides it, so without this there is nothing\n // left holding the rest of the string.\n //\n // Be precise about what it does and does not restore, because an earlier version of this\n // comment overclaimed and a review caught it. `title` is an ATTRIBUTE, so browser\n // find-in-page — which searches rendered text — does NOT match the hidden remainder, and a\n // screen reader's treatment of `title` on a `<p>` is inconsistent and never keyboard\n // reachable. It is the strongest affordance available on this element, not an equivalent of\n // leaving the text in place.\n //\n // On a surface whose policy sets `tooltipOnTruncate`, `Text` routes its children into a\n // styled tooltip when the element OVERFLOWS. A character-capped string usually no longer\n // overflows, so that tooltip stops opening and the native `title` is what remains. The full\n // value stays reachable either way; the polish of which tooltip shows it does not survive\n // the cap, and an author choosing `truncateLength` on such a surface is choosing that.\n return (\n <Text className=\"min-w-0 truncate\" title={value}>\n {`${(graphemes ?? []).slice(0, maximumCharacters).join('').trimEnd()}…`}\n </Text>\n )\n }\n\n case StringDisplayMode.MULTILINE:\n return (\n <Text className=\"whitespace-pre-wrap\">\n {value}\n </Text>\n )\n\n case StringDisplayMode.IDENTIFIER:\n // A machine ref/slug: verbatim and greppable, styled to recede behind the prose.\n //\n // Through the `Identifier` element rather than a class string, and that is the whole point of\n // that element existing: this treatment used to live ONLY here, inside a switch nothing\n // outside the field pipeline can call, so every surface that builds its own rows spelled the\n // same classes by hand and drifted. One resolved component is what lets a hand-built row and\n // a field render the same ref the same way — and makes the treatment themeable, which a\n // class string in a switch never was.\n return <Identifier>{value}</Identifier>\n\n case StringDisplayMode.MARKDOWN:\n // Rich long-form content (descriptions, notes): full markdown body\n // themed through the typography recipes. See markdown-content.tsx for\n // the embedded heading-demotion rationale.\n return <MarkdownContent value={value} />\n\n\n case StringDisplayMode.COLOR:\n return (\n <div className=\"flex items-center gap-element\">\n <div\n className=\"h-5 w-5 rounded border border-border\"\n style={{ backgroundColor: value }}\n aria-hidden=\"true\"\n />\n <Text className=\"font-mono text-sm\">{value}</Text>\n </div>\n )\n\n case StringDisplayMode.LINK:\n return (\n <a\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:underline\"\n >\n {value}\n </a>\n )\n\n case StringDisplayMode.EMAIL:\n return (\n <a\n href={`mailto:${value}`}\n className=\"text-primary hover:underline\"\n >\n {value}\n </a>\n )\n\n case StringDisplayMode.BADGE:\n return <Badge variant=\"secondary\">{value}</Badge>\n\n case StringDisplayMode.COPY:\n return (\n <div className=\"flex items-center gap-element\">\n <Text className=\"font-mono text-sm\">{value}</Text>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={copied ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copied') : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copyToClipboard')}\n >\n <span aria-hidden=\"true\">\n {copied\n ? renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })\n : renderIcon(StandardIconReference.COPY, { size: IconSize.SM })\n }\n </span>\n </button>\n </div>\n )\n\n case StringDisplayMode.SECRET:\n return (\n <div className=\"flex items-center gap-element\">\n <Text className=\"font-mono text-sm select-all\" aria-live=\"polite\">\n {revealed ? value : '••••••••••••••••'}\n </Text>\n <button\n type=\"button\"\n onClick={() => setRevealed(prev => !prev)}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={revealed ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'hideValue') : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'revealValue')}\n >\n <span aria-hidden=\"true\">\n {revealed\n ? renderIcon(StandardIconReference.EYE_OFF, { size: IconSize.SM })\n : renderIcon(StandardIconReference.EYE, { size: IconSize.SM })\n }\n </span>\n </button>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={copied ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copied') : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_STRING, 'copyToClipboard')}\n >\n <span aria-hidden=\"true\">\n {copied\n ? renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })\n : renderIcon(StandardIconReference.COPY, { size: IconSize.SM })\n }\n </span>\n </button>\n </div>\n )\n\n default:\n return <Text>{value}</Text>\n }\n }\n\n if (!isReady) return null\n // Label/description rendering is handled by the parent DisplayField (FIELD-01)\n return <div className={className}>{renderValue()}</div>\n}\n\n;(DisplayFieldString as typeof DisplayFieldString & { displayName: string }).displayName = \"DisplayFieldString\"\n\nexport { DisplayFieldString }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-string.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-string.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-string.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-time.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-time.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-time.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAGxE,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,SAAS,GACV,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAgBlD;AAID,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-time.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-time.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-time.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { IdentifierProps } from "@wildo-ai/saas-frontend-lib";
|
|
3
|
+
/**
|
|
4
|
+
* DEFAULT preset for `LOW_LEVEL_IDENTIFIER`: the design-system `Text` in a monospaced face, as a
|
|
5
|
+
* `<span>` so it composes inline beside the prose it addresses.
|
|
6
|
+
*
|
|
7
|
+
* `Text` owns the size and colour — this preset adds only what makes an identifier an identifier:
|
|
8
|
+
* the monospaced face, and `min-w-0 break-all` so a long unbroken ref wraps instead of pushing its
|
|
9
|
+
* row sideways. The caller's `className` is merged LAST, so a surface can still override.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately NOT the `TypographyVariant.CODE` recipe: that one is an inline CODE SPAN
|
|
12
|
+
* (`bg-muted rounded px-1 py-0.5`), which is a chip behind the value. An identifier is the value
|
|
13
|
+
* itself, sitting in a row — a grey pill behind every ref on a board is a different design.
|
|
14
|
+
*/
|
|
15
|
+
export declare function Identifier({ size, variant, className, children, }: IdentifierProps): React.JSX.Element;
|
|
16
|
+
export declare namespace Identifier {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=identifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/identifier.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAkB,EAClB,OAA2B,EAC3B,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAMrC;yBAXe,UAAU"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { TextSize, TextVariant } from "@wildo-ai/presets-components-models";
|
|
4
|
+
import { cn, Text } from "@wildo-ai/saas-frontend-lib";
|
|
5
|
+
/**
|
|
6
|
+
* DEFAULT preset for `LOW_LEVEL_IDENTIFIER`: the design-system `Text` in a monospaced face, as a
|
|
7
|
+
* `<span>` so it composes inline beside the prose it addresses.
|
|
8
|
+
*
|
|
9
|
+
* `Text` owns the size and colour — this preset adds only what makes an identifier an identifier:
|
|
10
|
+
* the monospaced face, and `min-w-0 break-all` so a long unbroken ref wraps instead of pushing its
|
|
11
|
+
* row sideways. The caller's `className` is merged LAST, so a surface can still override.
|
|
12
|
+
*
|
|
13
|
+
* Deliberately NOT the `TypographyVariant.CODE` recipe: that one is an inline CODE SPAN
|
|
14
|
+
* (`bg-muted rounded px-1 py-0.5`), which is a chip behind the value. An identifier is the value
|
|
15
|
+
* itself, sitting in a row — a grey pill behind every ref on a board is a different design.
|
|
16
|
+
*/
|
|
17
|
+
export function Identifier({ size = TextSize.XS, variant = TextVariant.MUTED, className, children, }) {
|
|
18
|
+
return (_jsx(Text, { as: "span", size: size, variant: variant, className: cn("min-w-0 break-all font-mono", className), children: children }));
|
|
19
|
+
}
|
|
20
|
+
Identifier.displayName = "Identifier";
|
|
21
|
+
//# sourceMappingURL=identifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../../../../src/components/data-display/identifier.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGtD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,GAAG,QAAQ,CAAC,EAAE,EAClB,OAAO,GAAG,WAAW,CAAC,KAAK,EAC3B,SAAS,EACT,QAAQ,GACQ;IAChB,OAAO,CACL,KAAC,IAAI,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,YAClG,QAAQ,GACJ,CACR,CAAA;AACH,CAAC;AAED,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport { TextSize, TextVariant } from \"@wildo-ai/presets-components-models\"\nimport { cn, Text } from \"@wildo-ai/saas-frontend-lib\"\nimport type { IdentifierProps } from \"@wildo-ai/saas-frontend-lib\"\n\n/**\n * DEFAULT preset for `LOW_LEVEL_IDENTIFIER`: the design-system `Text` in a monospaced face, as a\n * `<span>` so it composes inline beside the prose it addresses.\n *\n * `Text` owns the size and colour — this preset adds only what makes an identifier an identifier:\n * the monospaced face, and `min-w-0 break-all` so a long unbroken ref wraps instead of pushing its\n * row sideways. The caller's `className` is merged LAST, so a surface can still override.\n *\n * Deliberately NOT the `TypographyVariant.CODE` recipe: that one is an inline CODE SPAN\n * (`bg-muted rounded px-1 py-0.5`), which is a chip behind the value. An identifier is the value\n * itself, sitting in a row — a grey pill behind every ref on a board is a different design.\n */\nexport function Identifier({\n size = TextSize.XS,\n variant = TextVariant.MUTED,\n className,\n children,\n}: IdentifierProps): React.JSX.Element {\n return (\n <Text as=\"span\" size={size} variant={variant} className={cn(\"min-w-0 break-all font-mono\", className)}>\n {children}\n </Text>\n )\n}\n\nIdentifier.displayName = \"Identifier\"\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { KbdProps } from "@wildo-ai/saas-frontend-lib";
|
|
3
|
+
/**
|
|
4
|
+
* DEFAULT preset for `LOW_LEVEL_KBD`: a real `<kbd>` element, in the monospaced face, on the INSET
|
|
5
|
+
* surface with a hairline border — a key cap, drawn once for every surface that tells a person what
|
|
6
|
+
* to press.
|
|
7
|
+
*
|
|
8
|
+
* INSET rather than SUNKEN or MUTED: the three sites this replaced disagreed on the ground, and an
|
|
9
|
+
* inset surface is the one whose meaning is "a control sunk into what it sits on", which is what a
|
|
10
|
+
* key cap depicts. The size is fixed at the XS text scale and never scales with its host: a cap
|
|
11
|
+
* beside a heading and a cap beside a caption are the same key.
|
|
12
|
+
*/
|
|
13
|
+
export declare function Kbd({ className, children }: KbdProps): React.JSX.Element;
|
|
14
|
+
export declare namespace Kbd {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=kbd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/kbd.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYxE;yBAZe,GAAG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "@wildo-ai/saas-frontend-lib";
|
|
4
|
+
/**
|
|
5
|
+
* DEFAULT preset for `LOW_LEVEL_KBD`: a real `<kbd>` element, in the monospaced face, on the INSET
|
|
6
|
+
* surface with a hairline border — a key cap, drawn once for every surface that tells a person what
|
|
7
|
+
* to press.
|
|
8
|
+
*
|
|
9
|
+
* INSET rather than SUNKEN or MUTED: the three sites this replaced disagreed on the ground, and an
|
|
10
|
+
* inset surface is the one whose meaning is "a control sunk into what it sits on", which is what a
|
|
11
|
+
* key cap depicts. The size is fixed at the XS text scale and never scales with its host: a cap
|
|
12
|
+
* beside a heading and a cap beside a caption are the same key.
|
|
13
|
+
*/
|
|
14
|
+
export function Kbd({ className, children }) {
|
|
15
|
+
return (_jsx("kbd", { "data-slot": "kbd", className: cn("inline-flex shrink-0 select-none items-center justify-center rounded border border-border bg-surface-inset px-1.5 py-0.5 font-mono text-xs font-medium leading-none text-surface-inset-foreground", className), children: children }));
|
|
16
|
+
}
|
|
17
|
+
Kbd.displayName = "Kbd";
|
|
18
|
+
//# sourceMappingURL=kbd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbd.js","sourceRoot":"","sources":["../../../../../src/components/data-display/kbd.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAA;AAGhD;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAY;IACnD,OAAO,CACL,2BACY,KAAK,EACf,SAAS,EAAE,EAAE,CACX,mMAAmM,EACnM,SAAS,CACV,YAEA,QAAQ,GACL,CACP,CAAA;AACH,CAAC;AAED,GAAG,CAAC,WAAW,GAAG,KAAK,CAAA","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@wildo-ai/saas-frontend-lib\"\nimport type { KbdProps } from \"@wildo-ai/saas-frontend-lib\"\n\n/**\n * DEFAULT preset for `LOW_LEVEL_KBD`: a real `<kbd>` element, in the monospaced face, on the INSET\n * surface with a hairline border — a key cap, drawn once for every surface that tells a person what\n * to press.\n *\n * INSET rather than SUNKEN or MUTED: the three sites this replaced disagreed on the ground, and an\n * inset surface is the one whose meaning is \"a control sunk into what it sits on\", which is what a\n * key cap depicts. The size is fixed at the XS text scale and never scales with its host: a cap\n * beside a heading and a cap beside a caption are the same key.\n */\nexport function Kbd({ className, children }: KbdProps): React.JSX.Element {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"inline-flex shrink-0 select-none items-center justify-center rounded border border-border bg-surface-inset px-1.5 py-0.5 font-mono text-xs font-medium leading-none text-surface-inset-foreground\",\n className,\n )}\n >\n {children}\n </kbd>\n )\n}\n\nKbd.displayName = \"Kbd\"\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-content.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"markdown-content.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/markdown-content.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,iBAAS,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6FtF;AAID,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-stream-runtime.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"markdown-stream-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/markdown-stream-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,sGAAsG;AACtG,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAA;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,eAAO,MAAM,sBAAsB,EAAE,wBAQjC,CAAA;AAEJ;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAE1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-stream.lazy.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"markdown-stream.lazy.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/markdown-stream.lazy.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,CAAA;AAwEzE;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,OAAyB,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgB9G"}
|
|
@@ -37,7 +37,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
37
37
|
* `pnpm check:lazy-boundaries`.
|
|
38
38
|
*/
|
|
39
39
|
import * as React from "react";
|
|
40
|
-
import { Skeleton, cn, useUI } from "@wildo-ai/saas-frontend-lib";
|
|
40
|
+
import { LazyDoorErrorBoundary, Skeleton, cn, useUI } from "@wildo-ai/saas-frontend-lib";
|
|
41
41
|
import { TypographyVariant, UIBehavior } from "@wildo-ai/presets-components-models";
|
|
42
42
|
/**
|
|
43
43
|
* What a ```` ```mermaid ```` fence renders as, now that diagram rendering is switched off.
|
|
@@ -60,6 +60,17 @@ function MermaidSourceFallback({ chart }) {
|
|
|
60
60
|
const code = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.CODE);
|
|
61
61
|
return (_jsx("pre", { className: cn("my-4 overflow-x-auto rounded-md border bg-muted/50 p-card-sm text-sm", code.base), "data-streamdown": "mermaid-source", children: _jsx("code", { children: chart }) }));
|
|
62
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* What markdown degrades TO when the rendering pipeline never arrives (#963): the SOURCE, in the same
|
|
65
|
+
* code block the mermaid fallback uses. Markdown is readable as text — headings, lists and links keep
|
|
66
|
+
* their meaning unrendered — so the source is the most useful thing left to show, and it is the
|
|
67
|
+
* person's own content rather than a word the door would have to invent.
|
|
68
|
+
*/
|
|
69
|
+
function MarkdownSourceFallback({ children }) {
|
|
70
|
+
const { getRecipe } = useUI();
|
|
71
|
+
const code = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.CODE);
|
|
72
|
+
return (_jsx("pre", { className: cn("my-4 overflow-x-auto rounded-md border border-dashed bg-muted/50 p-card-sm text-sm whitespace-pre-wrap", code.base), "data-lazy-door": "unavailable", children: _jsx("code", { children: typeof children === "string" ? children : "" }) }));
|
|
73
|
+
}
|
|
63
74
|
/**
|
|
64
75
|
* Default `mermaid` options handed to `streamdown`.
|
|
65
76
|
*
|
|
@@ -87,6 +98,6 @@ const LazyStreamdown = React.lazy(() => import("./markdown-stream-runtime.js").t
|
|
|
87
98
|
* `MermaidSourceFallback` above; passing `mermaid` explicitly overrides it.
|
|
88
99
|
*/
|
|
89
100
|
export function MarkdownStream({ mermaid = MERMAID_OPTIONS, ...props }) {
|
|
90
|
-
return (_jsx(React.Suspense, { fallback: _jsxs("div", { className: "space-y-2", "aria-busy": "true", children: [_jsx(Skeleton, { className: "h-4 w-full" }), _jsx(Skeleton, { className: "h-4 w-11/12" }), _jsx(Skeleton, { className: "h-4 w-4/6" })] }), children: _jsx(LazyStreamdown, { mermaid: mermaid, ...props }) }));
|
|
101
|
+
return (_jsx(LazyDoorErrorBoundary, { doorName: "MarkdownStream", fallback: _jsx(MarkdownSourceFallback, { children: props.children }), children: _jsx(React.Suspense, { fallback: _jsxs("div", { className: "space-y-2", "aria-busy": "true", children: [_jsx(Skeleton, { className: "h-4 w-full" }), _jsx(Skeleton, { className: "h-4 w-11/12" }), _jsx(Skeleton, { className: "h-4 w-4/6" })] }), children: _jsx(LazyStreamdown, { mermaid: mermaid, ...props }) }) }));
|
|
91
102
|
}
|
|
92
103
|
//# sourceMappingURL=markdown-stream.lazy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-stream.lazy.js","sourceRoot":"","sources":["../../../../../src/components/data-display/markdown-stream.lazy.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"markdown-stream.lazy.js","sourceRoot":"","sources":["../../../../../src/components/data-display/markdown-stream.lazy.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAMnF;;;;;;;;;;;;;;;GAeG;AACH,SAAS,qBAAqB,CAAC,EAAE,KAAK,EAAuD;IAC3F,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACrE,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CAAC,sEAAsE,EAAE,IAAI,CAAC,IAAI,CAAC,qBAChF,gBAAgB,YAEhC,yBAAO,KAAK,GAAQ,GAChB,CACP,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,EAAE,QAAQ,EAAiD;IACzF,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACrE,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CAAC,wGAAwG,EAAE,IAAI,CAAC,IAAI,CAAC,oBACnH,aAAa,YAE5B,yBAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAQ,GACvD,CACP,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,eAAe,GAAgD,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAA;AAE9G;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CACrC,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAClG,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,GAAG,KAAK,EAAuB;IACzF,OAAO,CACL,KAAC,qBAAqB,IAAC,QAAQ,EAAC,gBAAgB,EAAC,QAAQ,EAAE,KAAC,sBAAsB,cAAE,KAAK,CAAC,QAAQ,GAA0B,YAC1H,KAAC,KAAK,CAAC,QAAQ,IACb,QAAQ,EACN,eAAK,SAAS,EAAC,WAAW,eAAW,MAAM,aACzC,KAAC,QAAQ,IAAC,SAAS,EAAC,YAAY,GAAG,EACnC,KAAC,QAAQ,IAAC,SAAS,EAAC,aAAa,GAAG,EACpC,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,IAC9B,YAGR,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,KAAM,KAAK,GAAI,GAChC,GACK,CACzB,CAAA;AACH,CAAC","sourcesContent":["\"use client\"\n\n/**\n * The ONLY door onto the markdown-rendering pipeline (`streamdown` + `katex` + `marked` + the\n * `micromark`/`mdast`/`parse5` stack).\n *\n * Lazy-boundary wrapper (`*.lazy.tsx` convention — `graph.lazy` / `ChartView.lazy` /\n * `pdf-viewer.lazy` precedent). It owns the single `React.lazy(() => import('./markdown-stream-runtime'))`\n * split point and the Suspense fallback, and re-exports the props type via `import type` so callers\n * stay fully typed with NO runtime edge onto the pipeline.\n *\n * ## What it keeps out of the eager graph, and what that measured\n *\n * `streamdown` was statically imported by three preset components — `data-display/markdown-content`,\n * `ai-elements/trace/reasoning` and `ai-elements/chat/message` — and all three are registered\n * eagerly by `registration/register-default-presets.ts`. Preset registration runs at application\n * bootstrap, so the whole markdown pipeline was in the first-load set of every generated\n * application whether or not it ever renders markdown. Measured on `examples/wonder-crm`\n * (production `vite build`, eager set = the assets `dist/index.html` itself references): **210 kB\n * gzipped**, against a 1,674 kB gzipped first load.\n *\n * See `markdown-stream-runtime.ts` for the per-payload breakdown and for why one runtime module is\n * used rather than three per-leaf split points.\n *\n * ## Suspense fallback\n *\n * Markdown always occupies flow layout, so the fallback reserves height with a three-line\n * `Skeleton` block rather than collapsing to zero and reflowing the surface underneath. Only the\n * FIRST markdown block on a surface realistically suspends: the chunk is resident for every later\n * one, so this is a one-time cost at the moment the user opens a markdown-bearing surface.\n *\n * ## The rule\n *\n * Everything except this wrapper (and tests) must render markdown through `MarkdownStream`. A\n * static import of `./markdown-stream-runtime`, or of `streamdown` itself, from the eager graph\n * silently merges the whole pipeline back into the entry chunk — enforced by\n * `pnpm check:lazy-boundaries`.\n */\n\nimport * as React from \"react\"\nimport { LazyDoorErrorBoundary, Skeleton, cn, useUI } from \"@wildo-ai/saas-frontend-lib\"\nimport { TypographyVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport type { Streamdown } from \"streamdown\"\n\n/** Props of the underlying renderer, forwarded verbatim. */\nexport type MarkdownStreamProps = React.ComponentProps<typeof Streamdown>\n\n/**\n * What a ```` ```mermaid ```` fence renders as, now that diagram rendering is switched off.\n *\n * Wildo does not render mermaid diagrams: the applications alias the `mermaid` specifier onto\n * `~wildo-presets/mermaid-stub`, which removes ~430 kB gzipped across 21 chunks from the built\n * output (see that module for the measurement and for what it deliberately does NOT save). The stub\n * rejects, `streamdown` catches, and hands the failure to this component.\n *\n * Rendering the SOURCE is the point. `streamdown`'s own fallback is a red error panel with a\n * `Show Code` disclosure, which reads as a malfunction; a diagram nobody chose to render is not a\n * malfunction, and the source is the most useful thing left to show. The block is styled through the\n * CODE typography recipe so it matches every other code surface in the active theme.\n *\n * It is passed as a DEFAULT below rather than hardcoded, so an application that keeps the real\n * `mermaid` (by dropping the alias) is unaffected — the error this renders simply never occurs.\n */\nfunction MermaidSourceFallback({ chart }: { chart: string; error: string; retry: () => void }): React.JSX.Element {\n const { getRecipe } = useUI()\n const code = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.CODE)\n return (\n <pre\n className={cn(\"my-4 overflow-x-auto rounded-md border bg-muted/50 p-card-sm text-sm\", code.base)}\n data-streamdown=\"mermaid-source\"\n >\n <code>{chart}</code>\n </pre>\n )\n}\n\n/**\n * What markdown degrades TO when the rendering pipeline never arrives (#963): the SOURCE, in the same\n * code block the mermaid fallback uses. Markdown is readable as text — headings, lists and links keep\n * their meaning unrendered — so the source is the most useful thing left to show, and it is the\n * person's own content rather than a word the door would have to invent.\n */\nfunction MarkdownSourceFallback({ children }: { children: MarkdownStreamProps[\"children\"] }): React.JSX.Element {\n const { getRecipe } = useUI()\n const code = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.CODE)\n return (\n <pre\n className={cn(\"my-4 overflow-x-auto rounded-md border border-dashed bg-muted/50 p-card-sm text-sm whitespace-pre-wrap\", code.base)}\n data-lazy-door=\"unavailable\"\n >\n <code>{typeof children === \"string\" ? children : \"\"}</code>\n </pre>\n )\n}\n\n/**\n * Default `mermaid` options handed to `streamdown`.\n *\n * Module-level constant, never an inline object literal: `streamdown` memoizes its context value on\n * this prop's identity, so a fresh object per render would invalidate that memo on every keystroke\n * of a streaming response.\n */\nconst MERMAID_OPTIONS: NonNullable<MarkdownStreamProps[\"mermaid\"]> = { errorComponent: MermaidSourceFallback }\n\n/**\n * Resolves to `MarkdownStreamRuntime`, NOT to `Streamdown` itself.\n *\n * That indirection is what applies the reordered rehype chain (`raw → sanitize → harden → katex`)\n * that makes LaTeX render at all — see `DEFAULT_REHYPE_PLUGINS` in the runtime module for the defect\n * and the security reasoning. It cannot be applied here: the plugin list is derived from\n * `streamdown`'s own exports, and naming them from this file would put the whole 210 kB pipeline back\n * into the eager graph, which is the one thing this wrapper exists to prevent.\n */\nconst LazyStreamdown = React.lazy(() =>\n import(\"./markdown-stream-runtime\").then((module) => ({ default: module.MarkdownStreamRuntime })),\n)\n\n/**\n * Renders markdown, resolving the pipeline on first render.\n *\n * A drop-in replacement for `<Streamdown …>`: every prop is forwarded unchanged, so call sites keep\n * their `components` overrides, their `parseIncompleteMarkdown` streaming flag and their class\n * names exactly as before. The one prop that gains a DEFAULT is `mermaid` — see\n * `MermaidSourceFallback` above; passing `mermaid` explicitly overrides it.\n */\nexport function MarkdownStream({ mermaid = MERMAID_OPTIONS, ...props }: MarkdownStreamProps): React.JSX.Element {\n return (\n <LazyDoorErrorBoundary doorName=\"MarkdownStream\" fallback={<MarkdownSourceFallback>{props.children}</MarkdownSourceFallback>}>\n <React.Suspense\n fallback={\n <div className=\"space-y-2\" aria-busy=\"true\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-11/12\" />\n <Skeleton className=\"h-4 w-4/6\" />\n </div>\n }\n >\n <LazyStreamdown mermaid={mermaid} {...props} />\n </React.Suspense>\n </LazyDoorErrorBoundary>\n )\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-indicator.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"notification-indicator.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/notification-indicator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAkB7E,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAa,EACb,KAAK,EACL,SAAS,GACV,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0BvD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { UIBehavior } from "@wildo-ai/presets-components-models";
|
|
4
4
|
import { NotificationBadgeDisplayMode } from "@wildo-ai/saas-models";
|
|
5
|
-
import { cn, useUI, Badge, formatBadgeCount } from "@wildo-ai/saas-frontend-lib";
|
|
5
|
+
import { cn, useUI, Badge, formatBadgeCount, indicatorBadgeVariant } from "@wildo-ai/saas-frontend-lib";
|
|
6
6
|
/**
|
|
7
7
|
* DEFAULT preset for `LOW_LEVEL_NOTIFICATION_INDICATOR` (R4). Composes the
|
|
8
8
|
* design-system `Badge`:
|
|
@@ -15,14 +15,6 @@ import { cn, useUI, Badge, formatBadgeCount } from "@wildo-ai/saas-frontend-lib"
|
|
|
15
15
|
* a reduced-motion-safe default). The DEFINITION decides whether/when to pulse;
|
|
16
16
|
* the theme decides how it looks.
|
|
17
17
|
*/
|
|
18
|
-
/** IndicatorVariant (definition tone) → Badge public variant. */
|
|
19
|
-
const TONE_TO_VARIANT = {
|
|
20
|
-
[IndicatorVariant.NEUTRAL]: "default",
|
|
21
|
-
[IndicatorVariant.INFO]: "info",
|
|
22
|
-
[IndicatorVariant.SUCCESS]: "success",
|
|
23
|
-
[IndicatorVariant.WARNING]: "warning",
|
|
24
|
-
[IndicatorVariant.ERROR]: "destructive",
|
|
25
|
-
};
|
|
26
18
|
/** Framework fallback when a theme's INDICATOR recipe declares no `motion.attention`. */
|
|
27
19
|
const DEFAULT_ATTENTION = "animate-pulse motion-reduce:animate-none";
|
|
28
20
|
export function NotificationIndicator({ mode, tone, count, pulse = false, label, className, }) {
|
|
@@ -31,7 +23,7 @@ export function NotificationIndicator({ mode, tone, count, pulse = false, label,
|
|
|
31
23
|
if (mode === NotificationBadgeDisplayMode.NONE || count <= 0) {
|
|
32
24
|
return null;
|
|
33
25
|
}
|
|
34
|
-
const variant =
|
|
26
|
+
const variant = indicatorBadgeVariant(tone);
|
|
35
27
|
const attention = pulse
|
|
36
28
|
? (getRecipe(UIBehavior.INDICATOR, tone).motion.attention ?? DEFAULT_ATTENTION)
|
|
37
29
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-indicator.js","sourceRoot":"","sources":["../../../../../src/components/data-display/notification-indicator.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"notification-indicator.js","sourceRoot":"","sources":["../../../../../src/components/data-display/notification-indicator.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAGvG;;;;;;;;;;;GAWG;AAEH,yFAAyF;AACzF,MAAM,iBAAiB,GAAG,0CAA0C,CAAA;AAEpE,MAAM,UAAU,qBAAqB,CAAC,EACpC,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,GAAG,KAAK,EACb,KAAK,EACL,SAAS,GACkB;IAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAA;IAE7B,4EAA4E;IAC5E,IAAI,IAAI,KAAK,4BAA4B,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC;QAC/E,CAAC,CAAC,SAAS,CAAA;IAEb,IAAI,IAAI,KAAK,4BAA4B,CAAC,GAAG,EAAE,CAAC;QAC9C,OAAO,CACL,KAAC,KAAK,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,SAAS,EAAE,SAAS,CAAC,YACxG,eAAM,SAAS,EAAC,SAAS,YAAE,KAAK,GAAQ,GAClC,CACT,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,KAAK,IAAC,OAAO,EAAE,OAAO,eAAY,QAAQ,gBAAa,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,YAC/F,gBAAgB,CAAC,KAAK,CAAC,GAClB,CACT,CAAA;AACH,CAAC","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport { UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport { NotificationBadgeDisplayMode } from \"@wildo-ai/saas-models\"\nimport { cn, useUI, Badge, formatBadgeCount, indicatorBadgeVariant } from \"@wildo-ai/saas-frontend-lib\"\nimport type { NotificationIndicatorProps } from \"@wildo-ai/saas-frontend-lib\"\n\n/**\n * DEFAULT preset for `LOW_LEVEL_NOTIFICATION_INDICATOR` (R4). Composes the\n * design-system `Badge`:\n * - `NONE`, or a non-positive count → renders nothing (a dot means \"≥ 1\").\n * - `DOT` → a color signal dot (the enum-icon fallback pattern), label in `sr-only`.\n * - `COUNT` → the truncated number, announced via `aria-live`.\n *\n * Pulse is THEME-OWNED: when `pulse` is true we append the active theme's\n * `INDICATOR` recipe `motion.attention` (a theme may customize it; falls back to\n * a reduced-motion-safe default). The DEFINITION decides whether/when to pulse;\n * the theme decides how it looks.\n */\n\n/** Framework fallback when a theme's INDICATOR recipe declares no `motion.attention`. */\nconst DEFAULT_ATTENTION = \"animate-pulse motion-reduce:animate-none\"\n\nexport function NotificationIndicator({\n mode,\n tone,\n count,\n pulse = false,\n label,\n className,\n}: NotificationIndicatorProps): React.JSX.Element | null {\n const { getRecipe } = useUI()\n\n // A dot/count only makes sense for a positive count; NONE is always silent.\n if (mode === NotificationBadgeDisplayMode.NONE || count <= 0) {\n return null\n }\n\n const variant = indicatorBadgeVariant(tone)\n const attention = pulse\n ? (getRecipe(UIBehavior.INDICATOR, tone).motion.attention ?? DEFAULT_ATTENTION)\n : undefined\n\n if (mode === NotificationBadgeDisplayMode.DOT) {\n return (\n <Badge variant={variant} title={label} className={cn(\"h-2.5 w-2.5 rounded-full p-0\", attention, className)}>\n <span className=\"sr-only\">{label}</span>\n </Badge>\n )\n }\n\n return (\n <Badge variant={variant} aria-live=\"polite\" aria-label={label} className={cn(attention, className)}>\n {formatBadgeCount(count)}\n </Badge>\n )\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-indicator.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"notification-indicator.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/notification-indicator.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAO/H,eAAO,MAAM,mCAAmC,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PDF.js worker SEAM (issue #962) — how a host decides where the viewer's Web Worker comes from.
|
|
3
|
+
*
|
|
4
|
+
* `pdf-viewer.tsx` parses on a Web Worker and installs ONE port for the whole module
|
|
5
|
+
* (`GlobalWorkerOptions.workerPort`). By default that port is built by the Vite path in
|
|
6
|
+
* `pdf-viewer-worker.vite.ts`, which is what the generated application runs. Two consumers this
|
|
7
|
+
* framework also produces cannot use that default:
|
|
8
|
+
*
|
|
9
|
+
* - a NON-VITE bundler (the Docusaurus technical documentation is webpack) does not understand the
|
|
10
|
+
* `?worker` asset suffix, so it must supply the worker itself;
|
|
11
|
+
* - an application whose ASSETS ARE SERVED FROM ANOTHER ORIGIN (the opt-in CDN publish) gets a
|
|
12
|
+
* cross-origin worker URL, which `new Worker(url)` refuses outright.
|
|
13
|
+
*
|
|
14
|
+
* Both register a factory here BEFORE the viewer's chunk loads (any time before the first document
|
|
15
|
+
* renders — the port is installed lazily on first use). The factory takes precedence over the Vite
|
|
16
|
+
* default, and the default's module is then never imported, which is what keeps the `?worker` import
|
|
17
|
+
* out of a non-Vite bundler's graph.
|
|
18
|
+
*
|
|
19
|
+
* This module is deliberately LIGHT: no `pdfjs-dist`, no worker, nothing heavy. It lives outside the
|
|
20
|
+
* lazy boundary so a host can call it from its bootstrap.
|
|
21
|
+
*
|
|
22
|
+
* ## The cross-origin case, and its CSP consequence
|
|
23
|
+
*
|
|
24
|
+
* A browser only constructs a Worker from a SAME-ORIGIN script URL. When the bundle (and so the worker
|
|
25
|
+
* file) is served from a CDN, the answer is a same-origin `blob:` shim whose single statement is
|
|
26
|
+
* `import "<cdn worker url>"` — `createSameOriginModuleWorker` builds exactly that, and
|
|
27
|
+
* `createModuleWorkerForUrl` picks it only when the URL's origin differs from the page's. The shim needs
|
|
28
|
+
* the policy to admit it: `worker-src` (falling back through `child-src` to `script-src`) must include
|
|
29
|
+
* `blob:`, and `script-src` must already admit the CDN origin for the import inside the shim to load —
|
|
30
|
+
* which a CDN publish's policy does, since every script comes from there. The `SAAS_APP` CSP baseline
|
|
31
|
+
* sets no `worker-src`; a CDN deployment adds `worker-src 'self' blob:` (the documentation product's
|
|
32
|
+
* baseline already carries that pair for its own reasons).
|
|
33
|
+
*
|
|
34
|
+
* Under Vite the worker URL is obtained with the `?worker&url` suffix on `pdfjs-dist/build/pdf.worker.min.mjs`,
|
|
35
|
+
* which names the BUILT worker file; under webpack, `new URL('pdfjs-dist/build/pdf.worker.min.mjs', import.meta.url)`
|
|
36
|
+
* resolves through the bundler (it is Vite that does not resolve a bare specifier there — recorded in
|
|
37
|
+
* `pdf-viewer-worker.vite.ts`).
|
|
38
|
+
*/
|
|
39
|
+
/** Builds the Worker that PDF.js will parse on. Called at most once per page lifetime. */
|
|
40
|
+
export type PdfViewerWorkerFactory = () => Worker;
|
|
41
|
+
/**
|
|
42
|
+
* Register how the PDF viewer's worker is built, replacing the Vite default. Pass `null` to return
|
|
43
|
+
* to the default. Must run before the first document renders: the port is installed once, on first
|
|
44
|
+
* use, and a factory registered after that is not consulted (the viewer says so in its log).
|
|
45
|
+
*/
|
|
46
|
+
export declare function configurePdfViewerWorker(factory: PdfViewerWorkerFactory | null): void;
|
|
47
|
+
/** The registered factory, or `null` when the Vite default applies. */
|
|
48
|
+
export declare function resolveConfiguredPdfViewerWorkerFactory(): PdfViewerWorkerFactory | null;
|
|
49
|
+
/**
|
|
50
|
+
* A same-origin MODULE worker for a worker script served from another origin: a `blob:` script whose
|
|
51
|
+
* only statement imports the real one. The blob URL is kept for the page's lifetime — a module
|
|
52
|
+
* worker fetches its script asynchronously, and revoking the URL before that fetch completes would
|
|
53
|
+
* hand the worker a dead URL (which reads as "the worker never answered", the same silent shape as
|
|
54
|
+
* a classic-vs-module mismatch).
|
|
55
|
+
*/
|
|
56
|
+
export declare function createSameOriginModuleWorker(workerScriptUrl: string): Worker;
|
|
57
|
+
/**
|
|
58
|
+
* A module worker for `workerScriptUrl`: constructed directly when the script is same-origin with the
|
|
59
|
+
* page, through the `blob:` shim when it is not. `pageOrigin` defaults to the page's own; a host that
|
|
60
|
+
* knows better (a test, a non-browser runtime) passes it.
|
|
61
|
+
*/
|
|
62
|
+
export declare function createModuleWorkerForUrl(workerScriptUrl: string, pageOrigin?: string | null): Worker;
|
|
63
|
+
//# sourceMappingURL=pdf-viewer-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-viewer-worker.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/pdf-viewer/pdf-viewer-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,0FAA0F;AAC1F,MAAM,MAAM,sBAAsB,GAAG,MAAM,MAAM,CAAA;AAIjD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAErF;AAED,uEAAuE;AACvE,wBAAgB,uCAAuC,IAAI,sBAAsB,GAAG,IAAI,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,GAAG,IAA0C,GAAG,MAAM,CAMzI"}
|