@wildo-ai/presets-components 1.1.4 → 1.1.6
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 +65 -8
- 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.js +8 -1
- package/dist/esm/components/ai-elements/chat/suggestion.js.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 +124 -17
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js +105 -13
- 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 +3 -1
- package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph-runtime.js +3 -1
- package/dist/esm/components/ai-elements/graph/graph-runtime.js.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 +9 -0
- package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.js +17 -23
- package/dist/esm/components/app/app-layout-main-container.js.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 +48 -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 +25 -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 +22 -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 +10 -4
- 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 +8 -1
- 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 +10 -7
- 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 +4 -1
- 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 +29 -11
- 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 +14 -15
- 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 +2 -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 +8 -3
- 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-number.labels.js +5 -2
- package/dist/esm/components/data-display/formatters/display-field-number.labels.js.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 +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 +129 -15
- 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/data-display/untrusted-html-content.d.ts +55 -0
- package/dist/esm/components/data-display/untrusted-html-content.d.ts.map +1 -0
- package/dist/esm/components/data-display/untrusted-html-content.js +67 -0
- package/dist/esm/components/data-display/untrusted-html-content.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.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 +5 -5
- 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 +37 -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 +14 -13
- 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/address/providers/google-places-address-lookup.adapter.d.ts +42 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.d.ts.map +1 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.js +120 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.js.map +1 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.d.ts +16 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.d.ts.map +1 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.js +8 -0
- package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.js.map +1 -0
- 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 +3 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +3 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +6 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +8 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +6 -2
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +6 -2
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +6 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +8 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -1
- 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.js +2 -2
- package/dist/esm/components/navigation/app-level/activity-bar.js.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.js +10 -4
- package/dist/esm/components/navigation/app-level/menu-user-org.js.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/menu-user-org.labels.js +7 -0
- package/dist/esm/components/navigation/app-level/menu-user-org.labels.js.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 +36 -14
- 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 +31 -5
- 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 +41 -25
- 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.js +2 -2
- package/dist/esm/components/navigation/app-level/status-bar.js.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.js +2 -2
- package/dist/esm/components/navigation/app-level/toolbar.js.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 +24 -6
- 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.js +1 -1
- package/dist/esm/components/navigation/breadcrumb.js.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.js +5 -3
- package/dist/esm/components/sections/stepper.js.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 +60 -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 +23 -7
- 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/agent-work.resource-presets.d.ts +4 -0
- package/dist/esm/config/resources/agent-work.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/agent-work.resource-presets.js +115 -0
- package/dist/esm/config/resources/agent-work.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/api-key-rotation-window.d.ts +22 -0
- package/dist/esm/config/resources/api-key-rotation-window.d.ts.map +1 -0
- package/dist/esm/config/resources/api-key-rotation-window.js +45 -0
- package/dist/esm/config/resources/api-key-rotation-window.js.map +1 -0
- 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 +268 -26
- package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.d.ts +4 -3
- package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.js +241 -111
- package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/conversation-threads.resource-presets.d.ts +4 -0
- package/dist/esm/config/resources/conversation-threads.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/conversation-threads.resource-presets.js +105 -0
- package/dist/esm/config/resources/conversation-threads.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.js +39 -16
- package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.d.ts +0 -13
- package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.js +71 -17
- package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/inbound-deliveries.resource-presets.d.ts +6 -0
- package/dist/esm/config/resources/inbound-deliveries.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/inbound-deliveries.resource-presets.js +112 -0
- package/dist/esm/config/resources/inbound-deliveries.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/inbound-email.resource-presets.d.ts +4 -0
- package/dist/esm/config/resources/inbound-email.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/inbound-email.resource-presets.js +182 -0
- package/dist/esm/config/resources/inbound-email.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/index.d.ts.map +1 -1
- package/dist/esm/config/resources/index.js +9 -2
- package/dist/esm/config/resources/index.js.map +1 -1
- package/dist/esm/config/resources/legal-holds.resource-presets.d.ts +4 -0
- package/dist/esm/config/resources/legal-holds.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/legal-holds.resource-presets.js +76 -0
- package/dist/esm/config/resources/legal-holds.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.js +216 -35
- package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/resource.config.utils.d.ts +20 -0
- package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
- package/dist/esm/config/resources/resource.config.utils.js +20 -0
- package/dist/esm/config/resources/resource.config.utils.js.map +1 -1
- package/dist/esm/config/resources/retention-enforcement.resource-presets.d.ts +5 -0
- package/dist/esm/config/resources/retention-enforcement.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/retention-enforcement.resource-presets.js +74 -0
- package/dist/esm/config/resources/retention-enforcement.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/security.resource-presets.d.ts +11 -3
- package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.js +685 -99
- package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/service-providers.resource-presets.d.ts +4 -0
- package/dist/esm/config/resources/service-providers.resource-presets.d.ts.map +1 -0
- package/dist/esm/config/resources/service-providers.resource-presets.js +321 -0
- package/dist/esm/config/resources/service-providers.resource-presets.js.map +1 -0
- package/dist/esm/config/resources/webhooks.resource-presets.d.ts +4 -3
- package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/webhooks.resource-presets.js +102 -26
- 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 +63 -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 +32 -4
- package/dist/esm/registration/register-default-presets.js.map +1 -1
- package/dist/esm/registration/register-provider-components.d.ts.map +1 -1
- package/dist/esm/registration/register-provider-components.js +11 -0
- package/dist/esm/registration/register-provider-components.js.map +1 -1
- 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 +76 -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 +31 -45
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-date.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-date.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAaZ,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"display-field-date.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-date.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAaZ,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,SAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,KAAK,EACL,SAAS,GACa;IACtB,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAExI,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,8BAAE,KAAC,IAAI,IAAC,SAAS,EAAC,8BAA8B,iBAAa,MAAM,uBAAS,EAAA,eAAM,SAAS,EAAC,SAAS,YAAE,UAAU,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAQ,IAAG,CAAA;IAC5L,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAE5B,+FAA+F;IAC/F,+FAA+F;IAC/F,6FAA6F;IAC7F,MAAM,aAAa,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAA;IAEpD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAElC,+FAA+F;IAC/F,6FAA6F;IAC7F,+FAA+F;IAC/F,gGAAgG;IAChG,gEAAgE;IAChE,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,YAC5E,QAAQ,GACJ,CACR,CAAA;AACH,CAAC;AAED,CAAC;AAAC,gBAAsE,CAAC,WAAW,GAAG,kBAAkB,CAAA;AAEzG,OAAO,EAAE,gBAAgB,EAAE,CAAA","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldDate Component\n *\n * Displays a date value according to regional preferences and the field's authored\n * `DateDisplayMode` — ABSOLUTE (the default), RELATIVE, or AUTO.\n *\n * Label/description rendering is handled by the parent DisplayField (FIELD-01).\n */\n\nimport * as React from \"react\"\n\nimport { Text, useContextualDisplayParams } from \"@wildo-ai/saas-frontend-lib\"\nimport type { DisplayFieldDateProps } from '@wildo-ai/saas-frontend-lib'\nimport { useI18n } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { getDateUI } from \"@wildo-ai/zod-decorators\"\n\nfunction DisplayFieldDate({\n schema,\n value,\n className,\n}: DisplayFieldDateProps): React.JSX.Element | null {\n const { formatDateForDisplayMode, formatDate, tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD })\n\n if (!isReady) return null\n\n if (value === null || value === undefined) {\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 const ui = getDateUI(schema)\n\n // SUMMARY surfaces (cards, list rows, FK previews) merge `summaryOverride` over `display`, the\n // same contract the enum renderer honours. It earns its keep here more than anywhere: a detail\n // page wants the date a thing is due, and the card listing twenty of them wants \"in 3 days\".\n const displayParams = useContextualDisplayParams(ui)\n\n const rendered = formatDateForDisplayMode(value, displayParams?.displayMode)\n const absolute = formatDate(value)\n\n // A relative phrase is an approximation of a fact the record holds exactly, so the exact value\n // stays one hover away. Without it, \"in 3 days\" would be the ONLY thing a reader could learn\n // about a deadline from this field — which is a worse surface than the plain date it replaced,\n // and would make the mode a trade rather than an improvement. Omitted when the two agree, so an\n // absolute rendering does not carry a tooltip repeating itself.\n return (\n <Text className={className} title={rendered === absolute ? undefined : absolute}>\n {rendered}\n </Text>\n )\n}\n\n;(DisplayFieldDate as typeof DisplayFieldDate & { displayName: string }).displayName = \"DisplayFieldDate\"\n\nexport { DisplayFieldDate }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-date.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-date.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-date.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DisplayFieldDateTime Component
|
|
3
3
|
*
|
|
4
|
-
* Displays a datetime value
|
|
5
|
-
*
|
|
4
|
+
* Displays a datetime value according to regional preferences and the field's authored
|
|
5
|
+
* `DateDisplayMode` — ABSOLUTE (the default), RELATIVE, or AUTO.
|
|
6
6
|
*
|
|
7
7
|
* Label/description rendering is handled by the parent DisplayField (FIELD-01).
|
|
8
8
|
*/
|
|
9
9
|
import * as React from "react";
|
|
10
10
|
import type { DisplayFieldDateTimeProps } from '@wildo-ai/saas-frontend-lib';
|
|
11
|
-
declare function DisplayFieldDateTime({ value, className, }: DisplayFieldDateTimeProps): React.JSX.Element | null;
|
|
11
|
+
declare function DisplayFieldDateTime({ schema, value, className, }: DisplayFieldDateTimeProps): React.JSX.Element | null;
|
|
12
12
|
export { DisplayFieldDateTime };
|
|
13
13
|
//# sourceMappingURL=display-field-datetime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-datetime.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-datetime.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-datetime.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAK5E,iBAAS,oBAAoB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA6BtD;AAID,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Text } from "@wildo-ai/saas-frontend-lib";
|
|
3
|
+
import { Text, useContextualDisplayParams } from "@wildo-ai/saas-frontend-lib";
|
|
4
4
|
import { useI18n } from "@wildo-ai/saas-frontend-lib";
|
|
5
5
|
import { FrontendComponentType } from "@wildo-ai/presets-components-models";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { getDateTimeUI } from "@wildo-ai/zod-decorators";
|
|
7
|
+
function DisplayFieldDateTime({ schema, value, className, }) {
|
|
8
|
+
const { formatDateTimeForDisplayMode, formatDateTime, tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD });
|
|
8
9
|
if (!isReady)
|
|
9
10
|
return null;
|
|
10
11
|
if (value === null || value === undefined) {
|
|
11
12
|
return _jsxs(_Fragment, { children: [_jsx(Text, { className: "text-muted-foreground italic", "aria-hidden": "true", children: "\u2014" }), _jsx("span", { className: "sr-only", children: tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD, 'noValue') })] });
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
+
const ui = getDateTimeUI(schema);
|
|
15
|
+
// SUMMARY surfaces (cards, list rows, FK previews) merge `summaryOverride` over `display`, the
|
|
16
|
+
// same contract the enum renderer honours. It earns its keep here more than anywhere: a detail
|
|
17
|
+
// page wants the date a thing is due, and the card listing twenty of them wants "in 3 days".
|
|
18
|
+
const displayParams = useContextualDisplayParams(ui);
|
|
19
|
+
const rendered = formatDateTimeForDisplayMode(value, displayParams?.displayMode);
|
|
20
|
+
const absolute = formatDateTime(value);
|
|
21
|
+
// A relative phrase is an approximation of a fact the record holds exactly, so the exact value
|
|
22
|
+
// stays one hover away. Without it, "in 3 days" would be the ONLY thing a reader could learn
|
|
23
|
+
// about a deadline from this field — which is a worse surface than the plain date it replaced,
|
|
24
|
+
// and would make the mode a trade rather than an improvement. Omitted when the two agree, so an
|
|
25
|
+
// absolute rendering does not carry a tooltip repeating itself.
|
|
26
|
+
return (_jsx(Text, { className: className, title: rendered === absolute ? undefined : absolute, children: rendered }));
|
|
14
27
|
}
|
|
15
28
|
;
|
|
16
29
|
DisplayFieldDateTime.displayName = "DisplayFieldDateTime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-datetime.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-datetime.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAaZ,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"display-field-datetime.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-datetime.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAaZ,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,SAAS,oBAAoB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,SAAS,GACiB;IAC1B,MAAM,EAAE,4BAA4B,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAEhJ,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,8BAAE,KAAC,IAAI,IAAC,SAAS,EAAC,8BAA8B,iBAAa,MAAM,uBAAS,EAAA,eAAM,SAAS,EAAC,SAAS,YAAE,UAAU,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAQ,IAAG,CAAA;IAC5L,CAAC;IAED,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAEhC,+FAA+F;IAC/F,+FAA+F;IAC/F,6FAA6F;IAC7F,MAAM,aAAa,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAA;IAEpD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;IAChF,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAEtC,+FAA+F;IAC/F,6FAA6F;IAC7F,+FAA+F;IAC/F,gGAAgG;IAChG,gEAAgE;IAChE,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,YAC5E,QAAQ,GACJ,CACR,CAAA;AACH,CAAC;AAED,CAAC;AAAC,oBAA8E,CAAC,WAAW,GAAG,sBAAsB,CAAA;AAErH,OAAO,EAAE,oBAAoB,EAAE,CAAA","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldDateTime Component\n *\n * Displays a datetime value according to regional preferences and the field's authored\n * `DateDisplayMode` — ABSOLUTE (the default), RELATIVE, or AUTO.\n *\n * Label/description rendering is handled by the parent DisplayField (FIELD-01).\n */\n\nimport * as React from \"react\"\n\nimport { Text, useContextualDisplayParams } from \"@wildo-ai/saas-frontend-lib\"\nimport type { DisplayFieldDateTimeProps } from '@wildo-ai/saas-frontend-lib'\nimport { useI18n } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { getDateTimeUI } from \"@wildo-ai/zod-decorators\"\n\nfunction DisplayFieldDateTime({\n schema,\n value,\n className,\n}: DisplayFieldDateTimeProps): React.JSX.Element | null {\n const { formatDateTimeForDisplayMode, formatDateTime, tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD })\n\n if (!isReady) return null\n\n if (value === null || value === undefined) {\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 const ui = getDateTimeUI(schema)\n\n // SUMMARY surfaces (cards, list rows, FK previews) merge `summaryOverride` over `display`, the\n // same contract the enum renderer honours. It earns its keep here more than anywhere: a detail\n // page wants the date a thing is due, and the card listing twenty of them wants \"in 3 days\".\n const displayParams = useContextualDisplayParams(ui)\n\n const rendered = formatDateTimeForDisplayMode(value, displayParams?.displayMode)\n const absolute = formatDateTime(value)\n\n // A relative phrase is an approximation of a fact the record holds exactly, so the exact value\n // stays one hover away. Without it, \"in 3 days\" would be the ONLY thing a reader could learn\n // about a deadline from this field — which is a worse surface than the plain date it replaced,\n // and would make the mode a trade rather than an improvement. Omitted when the two agree, so an\n // absolute rendering does not carry a tooltip repeating itself.\n return (\n <Text className={className} title={rendered === absolute ? undefined : absolute}>\n {rendered}\n </Text>\n )\n}\n\n;(DisplayFieldDateTime as typeof DisplayFieldDateTime & { displayName: string }).displayName = \"DisplayFieldDateTime\"\n\nexport { DisplayFieldDateTime }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-datetime.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-datetime.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-datetime.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-duration.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-duration.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-duration.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E;;;;GAIG;AACH,iBAAS,oBAAoB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA8CtD;AAKD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-duration.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-duration.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-duration.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAMnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-enum.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-enum.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-enum.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAGxE;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAoIlD;AAID,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -7,26 +7,24 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
7
7
|
* Supports different display modes: text, badge, icon, card
|
|
8
8
|
*/
|
|
9
9
|
import * as React from "react";
|
|
10
|
-
import {
|
|
11
|
-
import { FrontendComponentType } from "@wildo-ai/presets-components-models";
|
|
12
|
-
import { EnumDisplayMode,
|
|
10
|
+
import { useI18n, useIconRegistry, IconSize, ICON_SIZE_MAP, Text, Badge, Card, useContextualDisplayParams, resolveEnumDisplayConfig } from "@wildo-ai/saas-frontend-lib";
|
|
11
|
+
import { FrontendComponentType, resolveVocabularyWordKey } from "@wildo-ai/presets-components-models";
|
|
12
|
+
import { EnumDisplayMode, getSystemEnumName } from "@wildo-ai/zod-decorators";
|
|
13
13
|
/**
|
|
14
14
|
* DisplayFieldEnum component
|
|
15
15
|
*
|
|
16
16
|
* Renders an enum value according to the display policy
|
|
17
17
|
*/
|
|
18
18
|
function DisplayFieldEnum({ schema, value, className, labels, }) {
|
|
19
|
-
const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD });
|
|
19
|
+
const { tComponent, t, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD });
|
|
20
20
|
const { renderIcon } = useIconRegistry();
|
|
21
|
-
|
|
22
|
-
const enumUI =
|
|
21
|
+
// The field's own metadata over the registered vocabulary's (#1321) — see `resolveEnumDisplayConfig`.
|
|
22
|
+
const enumUI = resolveEnumDisplayConfig(schema);
|
|
23
23
|
// SUMMARY surfaces (cards, FK previews) merge `summaryOverride` over
|
|
24
24
|
// `display` — the {primitive}UI decorator contract. E.g. a priority enum can
|
|
25
25
|
// render `BADGE` on the detail page but `summaryOverride: { displayMode: ICON }`
|
|
26
26
|
// (icon-only) on list cards.
|
|
27
|
-
const displayParams =
|
|
28
|
-
? { ...enumUI?.display, ...enumUI?.summaryOverride }
|
|
29
|
-
: enumUI?.display;
|
|
27
|
+
const displayParams = useContextualDisplayParams(enumUI);
|
|
30
28
|
const displayMode = displayParams?.displayMode ?? EnumDisplayMode.TEXT;
|
|
31
29
|
const resolveColor = (enumValue, fallback) => {
|
|
32
30
|
return (enumUI?.values?.[enumValue]?.color
|
|
@@ -37,8 +35,22 @@ function DisplayFieldEnum({ schema, value, className, labels, }) {
|
|
|
37
35
|
return (enumUI?.values?.[enumValue]?.icon
|
|
38
36
|
?? enumUI?.defaultIcon);
|
|
39
37
|
};
|
|
38
|
+
/*
|
|
39
|
+
* A value the resolved `labels` do not cover, on a field that names its vocabulary (#1851). The labels are built from
|
|
40
|
+
* the enum's own MEMBERS, so a union such as a feature list (`z.enum(CoreFeature) | z.string()`) carries values no
|
|
41
|
+
* member names — an application's own feature ids — and those read their word straight from the vocabulary, where
|
|
42
|
+
* it keeps it (`resolveVocabularyWordKey`). A value with no word shows itself: a missing label that looks missing.
|
|
43
|
+
*/
|
|
44
|
+
const vocabulary = schema ? getSystemEnumName(schema) : undefined;
|
|
45
|
+
const vocabularyWord = (enumValue) => {
|
|
46
|
+
if (!vocabulary)
|
|
47
|
+
return undefined;
|
|
48
|
+
const key = resolveVocabularyWordKey(vocabulary, enumValue);
|
|
49
|
+
const word = t(key);
|
|
50
|
+
return word === key ? undefined : word;
|
|
51
|
+
};
|
|
40
52
|
// Get display label for the value
|
|
41
|
-
const displayLabel = value ? (labels?.[value] ?? value) : null;
|
|
53
|
+
const displayLabel = value ? (labels?.[value] ?? vocabularyWord(value) ?? value) : null;
|
|
42
54
|
/**
|
|
43
55
|
* Render an `IconLike` — dispatches between string refs (via icon registry)
|
|
44
56
|
* and direct React component refs (via createElement).
|
|
@@ -63,7 +75,13 @@ function DisplayFieldEnum({ schema, value, className, labels, }) {
|
|
|
63
75
|
case EnumDisplayMode.BADGE: {
|
|
64
76
|
const variant = resolveColor(value, 'secondary');
|
|
65
77
|
const icon = resolveIcon(value);
|
|
66
|
-
|
|
78
|
+
/*
|
|
79
|
+
* NO local layout class on the badge. `Badge` is already `inline-flex items-center` with
|
|
80
|
+
* the glyph gap its own structure owns; restating it here was a second copy of the same
|
|
81
|
+
* decision, and the copy carried the one-pixel gap long after the shared one could have
|
|
82
|
+
* fixed it for every badge at once.
|
|
83
|
+
*/
|
|
84
|
+
return (_jsxs(Badge, { variant: variant, children: [icon ? renderIconLike(icon, IconSize.SM) : null, displayLabel] }));
|
|
67
85
|
}
|
|
68
86
|
// ICON — the COMPACT, icon-only representation: a colored badge carrying
|
|
69
87
|
// just the value's icon; the label goes to assistive tech (sr-only) and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-enum.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-enum.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldEnum Component\n *\n * Displays an enum value based on the enum UI decorator.\n * Supports different display modes: text, badge, icon, card\n */\n\nimport * as React from \"react\"\n\nimport { cn, useI18n, useIconRegistry, IconSize, ICON_SIZE_MAP, Text, Badge, Card, DisplayContextKind, useDisplayContextKind } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { EnumDisplayMode, getEnumUI } from \"@wildo-ai/zod-decorators\"\nimport type { IconLike } from \"@wildo-ai/zod-decorators\"\nimport type { DisplayFieldEnumProps } from '@wildo-ai/saas-frontend-lib'\nimport type { BadgeVariants_Variant } from '@wildo-ai/saas-frontend-lib'\n\n/**\n * DisplayFieldEnum component\n *\n * Renders an enum value according to the display policy\n */\nfunction DisplayFieldEnum({\n schema,\n value,\n className,\n labels,\n}: DisplayFieldEnumProps): React.JSX.Element | null {\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD })\n const { renderIcon } = useIconRegistry()\n const displayContextKind = useDisplayContextKind()\n\n const enumUI = getEnumUI(schema)\n // SUMMARY surfaces (cards, FK previews) merge `summaryOverride` over\n // `display` — the {primitive}UI decorator contract. E.g. a priority enum can\n // render `BADGE` on the detail page but `summaryOverride: { displayMode: ICON }`\n // (icon-only) on list cards.\n const displayParams = displayContextKind === DisplayContextKind.SUMMARY\n ? { ...enumUI?.display, ...enumUI?.summaryOverride }\n : enumUI?.display\n const displayMode = displayParams?.displayMode ?? EnumDisplayMode.TEXT\n\n const resolveColor = (enumValue: string, fallback: BadgeVariants_Variant): BadgeVariants_Variant => {\n return (\n enumUI?.values?.[enumValue]?.color\n ?? enumUI?.defaultColor\n ?? fallback\n ) as BadgeVariants_Variant\n }\n\n const resolveIcon = (enumValue: string): IconLike | undefined => {\n return (\n enumUI?.values?.[enumValue]?.icon\n ?? enumUI?.defaultIcon\n )\n }\n\n // Get display label for the value\n const displayLabel = value ? (labels?.[value] ?? value) : null\n\n /**\n * Render an `IconLike` — dispatches between string refs (via icon registry)\n * and direct React component refs (via createElement).\n */\n const renderIconLike = (icon: IconLike, size: IconSize, className?: string): React.ReactNode => {\n if (typeof icon === 'string') {\n return renderIcon(icon, { size, className })\n }\n const sizeInPixels = ICON_SIZE_MAP[size]\n return React.createElement(icon, { size: sizeInPixels, className })\n }\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\n if (value === null || value === undefined || value === '' || displayLabel === null) {\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 EnumDisplayMode.TEXT:\n return <Text>{displayLabel}</Text>\n\n case EnumDisplayMode.BADGE: {\n const variant = resolveColor(value, 'secondary')\n const icon = resolveIcon(value)\n return (\n <Badge variant={variant} className={cn(icon && 'inline-flex items-center gap-item-xs')}>\n {icon ? renderIconLike(icon, IconSize.SM) : null}\n {displayLabel}\n </Badge>\n )\n }\n\n // ICON — the COMPACT, icon-only representation: a colored badge carrying\n // just the value's icon; the label goes to assistive tech (sr-only) and\n // to sighted users on hover (native `title`). This is what summary\n // surfaces use via `summaryOverride: { displayMode: ICON }`. It is NOT a\n // \"badge with icon\" — that's BADGE with a per-value `icon` configured.\n case EnumDisplayMode.ICON: {\n const iconVariant = resolveColor(value, 'outline')\n const icon = resolveIcon(value)\n\n if (icon) {\n return (\n <Badge variant={iconVariant} className=\"px-1.5\" title={displayLabel}>\n {renderIconLike(icon, IconSize.SM)}\n <span className=\"sr-only\">{displayLabel}</span>\n </Badge>\n )\n }\n\n // No icon configured for this value — the color dot IS the icon.\n return (\n <Badge\n variant={iconVariant}\n className=\"h-2.5 w-2.5 rounded-full p-0\"\n title={displayLabel}\n >\n <span className=\"sr-only\">{displayLabel}</span>\n </Badge>\n )\n }\n\n case EnumDisplayMode.CARD:\n return (\n <Card className=\"inline-flex px-card-sm py-1.5\">\n <Text className=\"text-sm font-medium\">{displayLabel}</Text>\n </Card>\n )\n\n default:\n return <Text>{displayLabel}</Text>\n }\n }\n\n if (!isReady) return null\n\n // Label/description rendering is handled by the parent DisplayField (FIELD-01)\n return <div className={className}>{renderValue()}</div>\n}\n\n;(DisplayFieldEnum as typeof DisplayFieldEnum & { displayName: string }).displayName = \"DisplayFieldEnum\"\n\nexport { DisplayFieldEnum }\n"]}
|
|
1
|
+
{"version":3,"file":"display-field-enum.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-enum.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldEnum Component\n *\n * Displays an enum value based on the enum UI decorator.\n * Supports different display modes: text, badge, icon, card\n */\n\nimport * as React from \"react\"\n\nimport { useI18n, useIconRegistry, IconSize, ICON_SIZE_MAP, Text, Badge, Card, useContextualDisplayParams, resolveEnumDisplayConfig } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType, resolveVocabularyWordKey } from \"@wildo-ai/presets-components-models\"\nimport { EnumDisplayMode, getSystemEnumName } from \"@wildo-ai/zod-decorators\"\nimport type { IconLike } from \"@wildo-ai/zod-decorators\"\nimport type { DisplayFieldEnumProps } from '@wildo-ai/saas-frontend-lib'\nimport type { BadgeVariants_Variant } from '@wildo-ai/saas-frontend-lib'\n\n/**\n * DisplayFieldEnum component\n *\n * Renders an enum value according to the display policy\n */\nfunction DisplayFieldEnum({\n schema,\n value,\n className,\n labels,\n}: DisplayFieldEnumProps): React.JSX.Element | null {\n const { tComponent, t, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_FORM_FIELD })\n const { renderIcon } = useIconRegistry()\n\n // The field's own metadata over the registered vocabulary's (#1321) — see `resolveEnumDisplayConfig`.\n const enumUI = resolveEnumDisplayConfig(schema)\n // SUMMARY surfaces (cards, FK previews) merge `summaryOverride` over\n // `display` — the {primitive}UI decorator contract. E.g. a priority enum can\n // render `BADGE` on the detail page but `summaryOverride: { displayMode: ICON }`\n // (icon-only) on list cards.\n const displayParams = useContextualDisplayParams(enumUI)\n const displayMode = displayParams?.displayMode ?? EnumDisplayMode.TEXT\n\n const resolveColor = (enumValue: string, fallback: BadgeVariants_Variant): BadgeVariants_Variant => {\n return (\n enumUI?.values?.[enumValue]?.color\n ?? enumUI?.defaultColor\n ?? fallback\n ) as BadgeVariants_Variant\n }\n\n const resolveIcon = (enumValue: string): IconLike | undefined => {\n return (\n enumUI?.values?.[enumValue]?.icon\n ?? enumUI?.defaultIcon\n )\n }\n\n /*\n * A value the resolved `labels` do not cover, on a field that names its vocabulary (#1851). The labels are built from\n * the enum's own MEMBERS, so a union such as a feature list (`z.enum(CoreFeature) | z.string()`) carries values no\n * member names — an application's own feature ids — and those read their word straight from the vocabulary, where\n * it keeps it (`resolveVocabularyWordKey`). A value with no word shows itself: a missing label that looks missing.\n */\n const vocabulary = schema ? getSystemEnumName(schema) : undefined\n const vocabularyWord = (enumValue: string): string | undefined => {\n if (!vocabulary) return undefined\n const key = resolveVocabularyWordKey(vocabulary, enumValue)\n const word = t(key)\n return word === key ? undefined : word\n }\n\n // Get display label for the value\n const displayLabel = value ? (labels?.[value] ?? vocabularyWord(value) ?? value) : null\n\n /**\n * Render an `IconLike` — dispatches between string refs (via icon registry)\n * and direct React component refs (via createElement).\n */\n const renderIconLike = (icon: IconLike, size: IconSize, className?: string): React.ReactNode => {\n if (typeof icon === 'string') {\n return renderIcon(icon, { size, className })\n }\n const sizeInPixels = ICON_SIZE_MAP[size]\n return React.createElement(icon, { size: sizeInPixels, className })\n }\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\n if (value === null || value === undefined || value === '' || displayLabel === null) {\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 EnumDisplayMode.TEXT:\n return <Text>{displayLabel}</Text>\n\n case EnumDisplayMode.BADGE: {\n const variant = resolveColor(value, 'secondary')\n const icon = resolveIcon(value)\n /*\n * NO local layout class on the badge. `Badge` is already `inline-flex items-center` with\n * the glyph gap its own structure owns; restating it here was a second copy of the same\n * decision, and the copy carried the one-pixel gap long after the shared one could have\n * fixed it for every badge at once.\n */\n return (\n <Badge variant={variant}>\n {icon ? renderIconLike(icon, IconSize.SM) : null}\n {displayLabel}\n </Badge>\n )\n }\n\n // ICON — the COMPACT, icon-only representation: a colored badge carrying\n // just the value's icon; the label goes to assistive tech (sr-only) and\n // to sighted users on hover (native `title`). This is what summary\n // surfaces use via `summaryOverride: { displayMode: ICON }`. It is NOT a\n // \"badge with icon\" — that's BADGE with a per-value `icon` configured.\n case EnumDisplayMode.ICON: {\n const iconVariant = resolveColor(value, 'outline')\n const icon = resolveIcon(value)\n\n if (icon) {\n return (\n <Badge variant={iconVariant} className=\"px-1.5\" title={displayLabel}>\n {renderIconLike(icon, IconSize.SM)}\n <span className=\"sr-only\">{displayLabel}</span>\n </Badge>\n )\n }\n\n // No icon configured for this value — the color dot IS the icon.\n return (\n <Badge\n variant={iconVariant}\n className=\"h-2.5 w-2.5 rounded-full p-0\"\n title={displayLabel}\n >\n <span className=\"sr-only\">{displayLabel}</span>\n </Badge>\n )\n }\n\n case EnumDisplayMode.CARD:\n return (\n <Card className=\"inline-flex px-card-sm py-1.5\">\n <Text className=\"text-sm font-medium\">{displayLabel}</Text>\n </Card>\n )\n\n default:\n return <Text>{displayLabel}</Text>\n }\n }\n\n if (!isReady) return null\n\n // Label/description rendering is handled by the parent DisplayField (FIELD-01)\n return <div className={className}>{renderValue()}</div>\n}\n\n;(DisplayFieldEnum as typeof DisplayFieldEnum & { displayName: string }).displayName = \"DisplayFieldEnum\"\n\nexport { DisplayFieldEnum }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-enum.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-enum.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-enum.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-audio.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-audio.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-audio.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAQL,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AASrC,iBAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAmB,EACnB,QAAe,GAChB,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0EvD;AAID,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -18,7 +18,8 @@ import { formatFileSize } from "@wildo-ai/zod-decorators";
|
|
|
18
18
|
// =============================================================================
|
|
19
19
|
function DisplayFieldFileAudio({ metadata, fileId, className, showDownload = true, showSize = true, }) {
|
|
20
20
|
const { renderIcon } = useIconRegistry();
|
|
21
|
-
|
|
21
|
+
// Load the group this component READS (it loaded the form-field groups, so its words rendered as raw keys).
|
|
22
|
+
const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO });
|
|
22
23
|
const [audioError, setAudioError] = React.useState(false);
|
|
23
24
|
if (!isReady)
|
|
24
25
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-audio.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-audio.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,IAAI,EACJ,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,OAAO,EACP,EAAE,EACF,OAAO,GAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAC3F,OAAO,EAAqB,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE5E,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,SAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,IAAI,GACY;IAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IACxC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"display-field-file-audio.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-audio.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldFileAudio Component\n *\n * Nature-specific display for audio files.\n * Renders a compact HTML5 audio player with native controls\n * and file metadata.\n *\n * Resolved via the component registry (LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO).\n */\n\nimport * as React from \"react\"\n\nimport {\n Text,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n useI18n,\n cn,\n Surface,\n DisplayFieldFileAudioProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\nimport { type FileMetadata, formatFileSize } from \"@wildo-ai/zod-decorators\"\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nfunction DisplayFieldFileAudio({\n metadata,\n fileId,\n className,\n showDownload = true,\n showSize = true,\n}: DisplayFieldFileAudioProps): React.JSX.Element | null {\n const { renderIcon } = useIconRegistry()\n // Load the group this component READS (it loaded the form-field groups, so its words rendered as raw keys).\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO })\n\n const [audioError, setAudioError] = React.useState(false)\n\n if (!isReady) return null\n\n const audioUrl = metadata.url\n\n // No URL or audio failed — fallback to download card\n if (audioError || !audioUrl) {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.BASE}>\n <div className={cn('flex items-center gap-group p-card-sm rounded-md border bg-muted/30', className)}>\n <span aria-hidden=\"true\">\n {renderIcon(StandardIconReference.FILE_AUDIO, { size: IconSize.LG, className: \"text-muted-foreground\" })}\n </span>\n <div className=\"flex-1 min-w-0\">\n <Text className=\"font-medium truncate\">{metadata.filename}</Text>\n <div className=\"flex items-center gap-group text-xs text-muted-foreground mt-0.5\">\n {showSize && <span>{formatFileSize(metadata.size)}</span>}\n {metadata.extension && <span className=\"uppercase\">{metadata.extension}</span>}\n {audioError && <span className=\"text-destructive\">{tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO, 'audio_load_error')}</span>}\n </div>\n </div>\n {showDownload && audioUrl && (\n <a href={audioUrl} download={metadata.filename} className=\"text-primary hover:underline text-sm shrink-0\">\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO, 'download')}\n </a>\n )}\n </div>\n </Surface>\n )\n }\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.BASE}>\n <div className={cn('flex items-center gap-group p-card-sm rounded-md border bg-muted/30', className)}>\n {/* Audio icon */}\n <span aria-hidden=\"true\">\n {renderIcon(StandardIconReference.FILE_AUDIO, { size: IconSize.LG, className: \"text-muted-foreground\" })}\n </span>\n\n {/* File info + player */}\n <div className=\"flex-1 min-w-0 space-y-item\">\n <div className=\"flex items-center gap-group\">\n <Text className=\"font-medium truncate max-w-48\">{metadata.filename}</Text>\n {showSize && <span className=\"text-xs text-muted-foreground\">{formatFileSize(metadata.size)}</span>}\n {metadata.extension && <span className=\"text-xs text-muted-foreground uppercase\">{metadata.extension}</span>}\n </div>\n\n {/* Compact audio player — full width within the card */}\n <audio\n controls\n preload=\"metadata\"\n className=\"w-full h-8\"\n onError={() => setAudioError(true)}\n >\n <source src={audioUrl} type={metadata.mimeType} />\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO, 'unsupported_format')}\n </audio>\n </div>\n\n {/* Download link */}\n {showDownload && (\n <a href={audioUrl} download={metadata.filename} className=\"text-primary hover:underline text-sm shrink-0\">\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_AUDIO, 'download')}\n </a>\n )}\n </div>\n </Surface>\n )\n}\n\n;(DisplayFieldFileAudio as typeof DisplayFieldFileAudio & { displayName: string }).displayName = \"DisplayFieldFileAudio\"\n\nexport { DisplayFieldFileAudio }\n"]}
|
package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-audio.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-audio.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-audio.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,4BAA4B,EAAE,mBAAmB,EAI7D,CAAC"}
|
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
* - PDF: rendered by PDF.js behind the `PdfViewerLazy` boundary, so the pdf.js
|
|
6
6
|
* payload is fetched only when a PDF is actually displayed. Replaces the previous
|
|
7
7
|
* `<iframe>` on the browser's native viewer, which could not be styled to the
|
|
8
|
-
* design system and dies under a strict `frame-src` CSP.
|
|
8
|
+
* design system and dies under a strict `frame-src` CSP. Falls back to the
|
|
9
|
+
* downloadable file card when the bytes cannot be fetched OR the viewer's chunk
|
|
10
|
+
* cannot be loaded — the same card in both cases, because to a reader both mean
|
|
11
|
+
* "no preview, but the file is still here".
|
|
9
12
|
* - Office docs: file card with type-specific icon + download (no viewer exists, so
|
|
10
13
|
* the display guard refuses THUMBNAIL/FULL for them upstream).
|
|
11
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-document.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-document.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-document.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EASL,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAgDrC,iBAAS,wBAAwB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,SAAS,EACT,YAAmB,EACnB,QAAe,EACf,YAAY,EACZ,OAAO,EACP,QAAQ,GACT,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAgI1D;AAID,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
|
|
@@ -7,7 +7,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
* - PDF: rendered by PDF.js behind the `PdfViewerLazy` boundary, so the pdf.js
|
|
8
8
|
* payload is fetched only when a PDF is actually displayed. Replaces the previous
|
|
9
9
|
* `<iframe>` on the browser's native viewer, which could not be styled to the
|
|
10
|
-
* design system and dies under a strict `frame-src` CSP.
|
|
10
|
+
* design system and dies under a strict `frame-src` CSP. Falls back to the
|
|
11
|
+
* downloadable file card when the bytes cannot be fetched OR the viewer's chunk
|
|
12
|
+
* cannot be loaded — the same card in both cases, because to a reader both mean
|
|
13
|
+
* "no preview, but the file is still here".
|
|
11
14
|
* - Office docs: file card with type-specific icon + download (no viewer exists, so
|
|
12
15
|
* the display guard refuses THUMBNAIL/FULL for them upstream).
|
|
13
16
|
*
|
|
@@ -69,6 +72,10 @@ function DisplayFieldFileDocument({ metadata, fileId, refreshKey, className, sho
|
|
|
69
72
|
// protected document renders without exposing an unauthenticated fetch path.
|
|
70
73
|
const [pdfData, setPdfData] = React.useState(null);
|
|
71
74
|
const [pdfFetchFailed, setPdfFetchFailed] = React.useState(false);
|
|
75
|
+
// The PDF.js chunk failed to load. `React.lazy` caches that rejection for the life of
|
|
76
|
+
// the page, so this is never reset: a retry would re-render the same failed module.
|
|
77
|
+
const [pdfViewerUnavailable, setPdfViewerUnavailable] = React.useState(false);
|
|
78
|
+
const handlePdfViewerUnavailable = React.useCallback(() => setPdfViewerUnavailable(true), []);
|
|
72
79
|
const documentUrl = metadata.url;
|
|
73
80
|
const freshDocumentUrl = documentUrl ? buildFreshFileUrl(documentUrl, refreshKey) : undefined;
|
|
74
81
|
const isPdfDocument = isPdf(metadata.mimeType);
|
|
@@ -106,14 +113,20 @@ function DisplayFieldFileDocument({ metadata, fileId, refreshKey, className, sho
|
|
|
106
113
|
setPdfFetchFailed(true); });
|
|
107
114
|
return () => { cancelled = true; controller.abort(); };
|
|
108
115
|
}, [isPdfDocument, getBlob, fetchUrl, refreshKey]);
|
|
116
|
+
const pdfViewerLabels = {
|
|
117
|
+
page: (pageNumber) => tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'page_number', { pageNumber }),
|
|
118
|
+
pagesTruncated: (shown, total) => tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'pages_truncated', { shown, total }),
|
|
119
|
+
renderFailed: tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'render_failed'),
|
|
120
|
+
};
|
|
109
121
|
if (!isReady)
|
|
110
122
|
return null;
|
|
111
123
|
// PDF — render through PDF.js. Falls through to the file card when the bytes
|
|
112
|
-
// cannot be fetched (no authed client, or the fetch failed)
|
|
113
|
-
// be downloaded beats an empty
|
|
114
|
-
|
|
124
|
+
// cannot be fetched (no authed client, or the fetch failed) or the viewer's own
|
|
125
|
+
// chunk could not be loaded: a card that can still be downloaded beats an empty
|
|
126
|
+
// viewer frame.
|
|
127
|
+
if (isPdfDocument && !pdfViewerUnavailable && (pdfData || (getBlob && fetchUrl && !pdfFetchFailed))) {
|
|
115
128
|
return (_jsxs("div", { className: cn('space-y-item', className), children: [_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsx("div", { className: cn('w-full rounded-md overflow-hidden border bg-muted/20 p-card-sm', firstPageOnly && 'max-w-48'), children: pdfData
|
|
116
|
-
? _jsx(PdfViewerLazy, { data: pdfData, firstPageOnly: firstPageOnly, ariaLabel: metadata.filename })
|
|
129
|
+
? (_jsx(PdfViewerLazy, { data: pdfData, firstPageOnly: firstPageOnly, ariaLabel: metadata.filename, labels: pdfViewerLabels, onUnavailable: handlePdfViewerUnavailable }))
|
|
117
130
|
: _jsx(Skeleton, { className: firstPageOnly ? 'h-40 w-full' : 'h-64 w-full', "aria-hidden": "true" }) }) }), _jsxs("div", { className: "flex items-center gap-group text-xs text-muted-foreground", children: [_jsx("span", { "aria-hidden": "true", children: renderIcon(docIcon, { size: IconSize.SM }) }), _jsx("span", { className: "font-medium text-foreground truncate max-w-48", children: metadata.filename }), _jsx("span", { className: "uppercase", children: docTypeLabel }), showSize && _jsx("span", { children: formatFileSize(metadata.size) }), showDownload && (_jsx("a", { href: freshDocumentUrl, download: metadata.filename, className: "text-primary hover:underline ms-auto shrink-0", children: tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'download') }))] })] }));
|
|
118
131
|
}
|
|
119
132
|
// Non-PDF or no URL — enhanced file card with type-specific icon
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-document.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-document.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldFileDocument Component\n *\n * Nature-specific display for document files (PDF, Office).\n * - PDF: rendered by PDF.js behind the `PdfViewerLazy` boundary, so the pdf.js\n * payload is fetched only when a PDF is actually displayed. Replaces the previous\n * `<iframe>` on the browser's native viewer, which could not be styled to the\n * design system and dies under a strict `frame-src` CSP.\n * - Office docs: file card with type-specific icon + download (no viewer exists, so\n * the display guard refuses THUMBNAIL/FULL for them upstream).\n *\n * Resolved via the component registry (LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT).\n */\n\nimport * as React from \"react\"\n\nimport {\n Text,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n useI18n,\n cn,\n Surface,\n Skeleton,\n DisplayFieldFileDocumentProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\nimport { type FileMetadata, formatFileSize, FileDisplayPresentation } from \"@wildo-ai/zod-decorators\"\nimport { PdfViewerLazy } from \"../pdf-viewer/pdf-viewer.lazy\"\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/** Check if a MIME type is a PDF */\nfunction isPdf(mimeType: string): boolean {\n return mimeType === 'application/pdf'\n}\n\n/** Get the appropriate icon for a document type */\nfunction getDocumentIconRef(mimeType: string): StandardIconReference {\n if (isPdf(mimeType)) return StandardIconReference.FILE_TEXT\n if (mimeType.includes('spreadsheet') || mimeType.includes('excel')) return StandardIconReference.FILE_SPREADSHEET\n if (mimeType.includes('presentation') || mimeType.includes('powerpoint')) return StandardIconReference.FILE_PRESENTATION\n if (mimeType.includes('document') || mimeType.includes('word')) return StandardIconReference.FILE_TEXT\n return StandardIconReference.FILE_TEXT\n}\n\n/** Get a human-readable document type label */\nfunction getDocumentTypeLabel(mimeType: string, extension?: string): string {\n if (isPdf(mimeType)) return 'PDF'\n if (mimeType.includes('spreadsheet') || mimeType.includes('excel')) return extension?.toUpperCase() || 'Spreadsheet'\n if (mimeType.includes('presentation') || mimeType.includes('powerpoint')) return extension?.toUpperCase() || 'Presentation'\n if (mimeType.includes('document') || mimeType.includes('word')) return extension?.toUpperCase() || 'Document'\n return extension?.toUpperCase() || 'Document'\n}\n\nfunction buildFreshFileUrl(url: string, refreshKey?: string): string {\n if (!refreshKey) {\n return url\n }\n\n const [withoutHash, hash] = url.split('#')\n const separator = withoutHash.includes('?') ? '&' : '?'\n const versionedUrl = `${withoutHash}${separator}wildoFileUpdatedAt=${encodeURIComponent(refreshKey)}`\n return hash ? `${versionedUrl}#${hash}` : versionedUrl\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nfunction DisplayFieldFileDocument({\n metadata,\n fileId,\n refreshKey,\n className,\n showDownload = true,\n showSize = true,\n presentation,\n getBlob,\n serveUrl,\n}: DisplayFieldFileDocumentProps): React.JSX.Element | null {\n const { renderIcon } = useIconRegistry()\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT })\n\n // PDF bytes for the viewer. Fetched over the AUTHENTICATED serve route (authz\n // inherits the parent resource's READ) rather than handed to pdf.js as a URL, so a\n // protected document renders without exposing an unauthenticated fetch path.\n const [pdfData, setPdfData] = React.useState<ArrayBuffer | null>(null)\n const [pdfFetchFailed, setPdfFetchFailed] = React.useState(false)\n\n const documentUrl = metadata.url\n const freshDocumentUrl = documentUrl ? buildFreshFileUrl(documentUrl, refreshKey) : undefined\n const isPdfDocument = isPdf(metadata.mimeType)\n const docIcon = getDocumentIconRef(metadata.mimeType)\n const docTypeLabel = getDocumentTypeLabel(metadata.mimeType, metadata.extension)\n // The host only mounts this component for THUMBNAIL / FULL; treat an absent value\n // as FULL so a direct (non-host) consumer still gets the whole document.\n const firstPageOnly = presentation === FileDisplayPresentation.THUMBNAIL\n\n /**\n * The FRESH url, not the bare one — the same cache-buster the download links below already use.\n *\n * This carried `wildoFileUpdatedAt` for free while the PDF rendered in an `<iframe src=…>`. Moving\n * to PDF.js turned the render into an authenticated GET through `getBlob`, and the busting was left\n * behind on `freshDocumentUrl`, which kept only the `<a href>` honest. `refreshKey` stayed in the\n * effect's dependency array, so a regenerated file DID re-run the fetch — at a byte-identical URL,\n * which the HTTP cache may answer from its stored copy (`fetchFileBlob` is a plain `axios.get` with\n * no cache directive). The viewer could therefore show the previous revision of a file whose\n * download link served the new one.\n *\n * `serveUrl` is deliberately NOT busted: it takes precedence, and a pre-signed serve URL can carry a\n * signature that appending a query parameter would invalidate.\n */\n const fetchUrl = serveUrl ?? freshDocumentUrl\n React.useEffect(() => {\n if (!isPdfDocument || !getBlob || !fetchUrl) return\n let cancelled = false\n const controller = new AbortController()\n setPdfFetchFailed(false)\n getBlob(fetchUrl, { signal: controller.signal })\n .then(blob => blob.arrayBuffer())\n .then(buffer => { if (!cancelled) setPdfData(buffer) })\n .catch(() => { if (!cancelled) setPdfFetchFailed(true) })\n return () => { cancelled = true; controller.abort() }\n }, [isPdfDocument, getBlob, fetchUrl, refreshKey])\n\n if (!isReady) return null\n\n // PDF — render through PDF.js. Falls through to the file card when the bytes\n // cannot be fetched (no authed client, or the fetch failed): a card that can still\n // be downloaded beats an empty viewer frame.\n if (isPdfDocument && (pdfData || (getBlob && fetchUrl && !pdfFetchFailed))) {\n return (\n <div className={cn('space-y-item', className)}>\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className={cn('w-full rounded-md overflow-hidden border bg-muted/20 p-card-sm', firstPageOnly && 'max-w-48')}>\n {pdfData\n ? <PdfViewerLazy data={pdfData} firstPageOnly={firstPageOnly} ariaLabel={metadata.filename} />\n : <Skeleton className={firstPageOnly ? 'h-40 w-full' : 'h-64 w-full'} aria-hidden=\"true\" />}\n </div>\n </Surface>\n\n {/* Meta info below viewer */}\n <div className=\"flex items-center gap-group text-xs text-muted-foreground\">\n <span aria-hidden=\"true\">{renderIcon(docIcon, { size: IconSize.SM })}</span>\n <span className=\"font-medium text-foreground truncate max-w-48\">{metadata.filename}</span>\n <span className=\"uppercase\">{docTypeLabel}</span>\n {showSize && <span>{formatFileSize(metadata.size)}</span>}\n {showDownload && (\n <a href={freshDocumentUrl} download={metadata.filename} className=\"text-primary hover:underline ms-auto shrink-0\">\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'download')}\n </a>\n )}\n </div>\n </div>\n )\n }\n\n // Non-PDF or no URL — enhanced file card with type-specific icon\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className={cn('flex items-center gap-group p-card-sm rounded-md border bg-muted/30', className)}>\n <span aria-hidden=\"true\">\n {renderIcon(docIcon, { size: IconSize.LG, className: \"text-muted-foreground\" })}\n </span>\n\n <div className=\"flex-1 min-w-0\">\n <Text className=\"font-medium truncate\">{metadata.filename}</Text>\n <div className=\"flex items-center gap-group text-xs text-muted-foreground mt-0.5\">\n <span className=\"uppercase\">{docTypeLabel}</span>\n {showSize && <span>{formatFileSize(metadata.size)}</span>}\n </div>\n </div>\n\n {showDownload && freshDocumentUrl && (\n <a\n href={freshDocumentUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:underline text-sm shrink-0\"\n >\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'open_document')}\n </a>\n )}\n </div>\n </Surface>\n )\n}\n\n;(DisplayFieldFileDocument as typeof DisplayFieldFileDocument & { displayName: string }).displayName = \"DisplayFieldFileDocument\"\n\nexport { DisplayFieldFileDocument }\n"]}
|
|
1
|
+
{"version":3,"file":"display-field-file-document.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-document.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldFileDocument Component\n *\n * Nature-specific display for document files (PDF, Office).\n * - PDF: rendered by PDF.js behind the `PdfViewerLazy` boundary, so the pdf.js\n * payload is fetched only when a PDF is actually displayed. Replaces the previous\n * `<iframe>` on the browser's native viewer, which could not be styled to the\n * design system and dies under a strict `frame-src` CSP. Falls back to the\n * downloadable file card when the bytes cannot be fetched OR the viewer's chunk\n * cannot be loaded — the same card in both cases, because to a reader both mean\n * \"no preview, but the file is still here\".\n * - Office docs: file card with type-specific icon + download (no viewer exists, so\n * the display guard refuses THUMBNAIL/FULL for them upstream).\n *\n * Resolved via the component registry (LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT).\n */\n\nimport * as React from \"react\"\n\nimport {\n Text,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n useI18n,\n cn,\n Surface,\n Skeleton,\n DisplayFieldFileDocumentProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\nimport { type FileMetadata, formatFileSize, FileDisplayPresentation } from \"@wildo-ai/zod-decorators\"\nimport { PdfViewerLazy, type PdfViewerLabels } from \"../pdf-viewer/pdf-viewer.lazy\"\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/** Check if a MIME type is a PDF */\nfunction isPdf(mimeType: string): boolean {\n return mimeType === 'application/pdf'\n}\n\n/** Get the appropriate icon for a document type */\nfunction getDocumentIconRef(mimeType: string): StandardIconReference {\n if (isPdf(mimeType)) return StandardIconReference.FILE_TEXT\n if (mimeType.includes('spreadsheet') || mimeType.includes('excel')) return StandardIconReference.FILE_SPREADSHEET\n if (mimeType.includes('presentation') || mimeType.includes('powerpoint')) return StandardIconReference.FILE_PRESENTATION\n if (mimeType.includes('document') || mimeType.includes('word')) return StandardIconReference.FILE_TEXT\n return StandardIconReference.FILE_TEXT\n}\n\n/** Get a human-readable document type label */\nfunction getDocumentTypeLabel(mimeType: string, extension?: string): string {\n if (isPdf(mimeType)) return 'PDF'\n if (mimeType.includes('spreadsheet') || mimeType.includes('excel')) return extension?.toUpperCase() || 'Spreadsheet'\n if (mimeType.includes('presentation') || mimeType.includes('powerpoint')) return extension?.toUpperCase() || 'Presentation'\n if (mimeType.includes('document') || mimeType.includes('word')) return extension?.toUpperCase() || 'Document'\n return extension?.toUpperCase() || 'Document'\n}\n\nfunction buildFreshFileUrl(url: string, refreshKey?: string): string {\n if (!refreshKey) {\n return url\n }\n\n const [withoutHash, hash] = url.split('#')\n const separator = withoutHash.includes('?') ? '&' : '?'\n const versionedUrl = `${withoutHash}${separator}wildoFileUpdatedAt=${encodeURIComponent(refreshKey)}`\n return hash ? `${versionedUrl}#${hash}` : versionedUrl\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nfunction DisplayFieldFileDocument({\n metadata,\n fileId,\n refreshKey,\n className,\n showDownload = true,\n showSize = true,\n presentation,\n getBlob,\n serveUrl,\n}: DisplayFieldFileDocumentProps): React.JSX.Element | null {\n const { renderIcon } = useIconRegistry()\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT })\n\n // PDF bytes for the viewer. Fetched over the AUTHENTICATED serve route (authz\n // inherits the parent resource's READ) rather than handed to pdf.js as a URL, so a\n // protected document renders without exposing an unauthenticated fetch path.\n const [pdfData, setPdfData] = React.useState<ArrayBuffer | null>(null)\n const [pdfFetchFailed, setPdfFetchFailed] = React.useState(false)\n // The PDF.js chunk failed to load. `React.lazy` caches that rejection for the life of\n // the page, so this is never reset: a retry would re-render the same failed module.\n const [pdfViewerUnavailable, setPdfViewerUnavailable] = React.useState(false)\n const handlePdfViewerUnavailable = React.useCallback(() => setPdfViewerUnavailable(true), [])\n\n const documentUrl = metadata.url\n const freshDocumentUrl = documentUrl ? buildFreshFileUrl(documentUrl, refreshKey) : undefined\n const isPdfDocument = isPdf(metadata.mimeType)\n const docIcon = getDocumentIconRef(metadata.mimeType)\n const docTypeLabel = getDocumentTypeLabel(metadata.mimeType, metadata.extension)\n // The host only mounts this component for THUMBNAIL / FULL; treat an absent value\n // as FULL so a direct (non-host) consumer still gets the whole document.\n const firstPageOnly = presentation === FileDisplayPresentation.THUMBNAIL\n\n /**\n * The FRESH url, not the bare one — the same cache-buster the download links below already use.\n *\n * This carried `wildoFileUpdatedAt` for free while the PDF rendered in an `<iframe src=…>`. Moving\n * to PDF.js turned the render into an authenticated GET through `getBlob`, and the busting was left\n * behind on `freshDocumentUrl`, which kept only the `<a href>` honest. `refreshKey` stayed in the\n * effect's dependency array, so a regenerated file DID re-run the fetch — at a byte-identical URL,\n * which the HTTP cache may answer from its stored copy (`fetchFileBlob` is a plain `axios.get` with\n * no cache directive). The viewer could therefore show the previous revision of a file whose\n * download link served the new one.\n *\n * `serveUrl` is deliberately NOT busted: it takes precedence, and a pre-signed serve URL can carry a\n * signature that appending a query parameter would invalidate.\n */\n const fetchUrl = serveUrl ?? freshDocumentUrl\n React.useEffect(() => {\n if (!isPdfDocument || !getBlob || !fetchUrl) return\n let cancelled = false\n const controller = new AbortController()\n setPdfFetchFailed(false)\n getBlob(fetchUrl, { signal: controller.signal })\n .then(blob => blob.arrayBuffer())\n .then(buffer => { if (!cancelled) setPdfData(buffer) })\n .catch(() => { if (!cancelled) setPdfFetchFailed(true) })\n return () => { cancelled = true; controller.abort() }\n }, [isPdfDocument, getBlob, fetchUrl, refreshKey])\n\n const pdfViewerLabels: PdfViewerLabels = {\n page: (pageNumber) =>\n tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'page_number', { pageNumber }),\n pagesTruncated: (shown, total) =>\n tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'pages_truncated', { shown, total }),\n renderFailed: tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'render_failed'),\n }\n\n if (!isReady) return null\n\n // PDF — render through PDF.js. Falls through to the file card when the bytes\n // cannot be fetched (no authed client, or the fetch failed) or the viewer's own\n // chunk could not be loaded: a card that can still be downloaded beats an empty\n // viewer frame.\n if (isPdfDocument && !pdfViewerUnavailable && (pdfData || (getBlob && fetchUrl && !pdfFetchFailed))) {\n return (\n <div className={cn('space-y-item', className)}>\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className={cn('w-full rounded-md overflow-hidden border bg-muted/20 p-card-sm', firstPageOnly && 'max-w-48')}>\n {pdfData\n ? (\n <PdfViewerLazy\n data={pdfData}\n firstPageOnly={firstPageOnly}\n ariaLabel={metadata.filename}\n labels={pdfViewerLabels}\n onUnavailable={handlePdfViewerUnavailable}\n />\n )\n : <Skeleton className={firstPageOnly ? 'h-40 w-full' : 'h-64 w-full'} aria-hidden=\"true\" />}\n </div>\n </Surface>\n\n {/* Meta info below viewer */}\n <div className=\"flex items-center gap-group text-xs text-muted-foreground\">\n <span aria-hidden=\"true\">{renderIcon(docIcon, { size: IconSize.SM })}</span>\n <span className=\"font-medium text-foreground truncate max-w-48\">{metadata.filename}</span>\n <span className=\"uppercase\">{docTypeLabel}</span>\n {showSize && <span>{formatFileSize(metadata.size)}</span>}\n {showDownload && (\n <a href={freshDocumentUrl} download={metadata.filename} className=\"text-primary hover:underline ms-auto shrink-0\">\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'download')}\n </a>\n )}\n </div>\n </div>\n )\n }\n\n // Non-PDF or no URL — enhanced file card with type-specific icon\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className={cn('flex items-center gap-group p-card-sm rounded-md border bg-muted/30', className)}>\n <span aria-hidden=\"true\">\n {renderIcon(docIcon, { size: IconSize.LG, className: \"text-muted-foreground\" })}\n </span>\n\n <div className=\"flex-1 min-w-0\">\n <Text className=\"font-medium truncate\">{metadata.filename}</Text>\n <div className=\"flex items-center gap-group text-xs text-muted-foreground mt-0.5\">\n <span className=\"uppercase\">{docTypeLabel}</span>\n {showSize && <span>{formatFileSize(metadata.size)}</span>}\n </div>\n </div>\n\n {showDownload && freshDocumentUrl && (\n <a\n href={freshDocumentUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:underline text-sm shrink-0\"\n >\n {tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, 'open_document')}\n </a>\n )}\n </div>\n </Surface>\n )\n}\n\n;(DisplayFieldFileDocument as typeof DisplayFieldFileDocument & { displayName: string }).displayName = \"DisplayFieldFileDocument\"\n\nexport { DisplayFieldFileDocument }\n"]}
|
package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-document.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-document.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-document.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,+BAA+B,EAAE,mBAAmB,EAwBhE,CAAC"}
|
|
@@ -6,6 +6,26 @@ export const DisplayFieldFileDocument_Labels = [
|
|
|
6
6
|
{ ref: 'open_document', kind: LabelKind.BUTTON, purpose: 'Link that opens the document (PDF or office file) for viewing' },
|
|
7
7
|
{ ref: 'download', kind: LabelKind.BUTTON, purpose: 'Link that downloads the document file' },
|
|
8
8
|
{ ref: 'pages', kind: LabelKind.LABEL, purpose: 'Unit label appended to the document page count' },
|
|
9
|
+
{
|
|
10
|
+
ref: 'page_number',
|
|
11
|
+
kind: LabelKind.ARIA,
|
|
12
|
+
purpose: 'Accessible name of one rendered page image inside the PDF viewer',
|
|
13
|
+
params: [{ key: 'pageNumber', meaning: "the page's 1-based position in the document" }],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
ref: 'pages_truncated',
|
|
17
|
+
kind: LabelKind.MESSAGE,
|
|
18
|
+
purpose: 'Notice under a long PDF saying only its first pages were rendered, so the document is not mistaken for complete',
|
|
19
|
+
params: [
|
|
20
|
+
{ key: 'shown', meaning: 'number of pages that were rendered' },
|
|
21
|
+
{ key: 'total', meaning: 'total number of pages in the document' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
ref: 'render_failed',
|
|
26
|
+
kind: LabelKind.MESSAGE,
|
|
27
|
+
purpose: 'Alert shown in place of a PDF preview that could not be rendered; the file can still be downloaded',
|
|
28
|
+
},
|
|
9
29
|
];
|
|
10
30
|
registerComponentLabels(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, DisplayFieldFileDocument_Labels);
|
|
11
31
|
//# sourceMappingURL=display-field-file-document.labels.js.map
|
package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-document.labels.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-document.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE1I,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,+DAA+D,EAAE;IAC1H,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,uCAAuC,EAAE;IAC7F,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,gDAAgD,EAAE;
|
|
1
|
+
{"version":3,"file":"display-field-file-document.labels.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-document.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE1I,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,+DAA+D,EAAE;IAC1H,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,uCAAuC,EAAE;IAC7F,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,gDAAgD,EAAE;IAClG;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EAAE,kEAAkE;QAC3E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;KACxF;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,iHAAiH;QAC1H,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,oCAAoC,EAAE;YAC/D,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,uCAAuC,EAAE;SACnE;KACF;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,oGAAoG;KAC9G;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,qCAAqC,EAAE,+BAA+B,CAAC,CAAC","sourcesContent":["import { FrontendComponentType, LabelKind, type LabellingUnitaryDef, registerComponentLabels } from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\nexport const DisplayFieldFileDocument_Labels: LabellingUnitaryDef[] = [\n { ref: 'open_document', kind: LabelKind.BUTTON, purpose: 'Link that opens the document (PDF or office file) for viewing' },\n { ref: 'download', kind: LabelKind.BUTTON, purpose: 'Link that downloads the document file' },\n { ref: 'pages', kind: LabelKind.LABEL, purpose: 'Unit label appended to the document page count' },\n {\n ref: 'page_number',\n kind: LabelKind.ARIA,\n purpose: 'Accessible name of one rendered page image inside the PDF viewer',\n params: [{ key: 'pageNumber', meaning: \"the page's 1-based position in the document\" }],\n },\n {\n ref: 'pages_truncated',\n kind: LabelKind.MESSAGE,\n purpose: 'Notice under a long PDF saying only its first pages were rendered, so the document is not mistaken for complete',\n params: [\n { key: 'shown', meaning: 'number of pages that were rendered' },\n { key: 'total', meaning: 'total number of pages in the document' },\n ],\n },\n {\n ref: 'render_failed',\n kind: LabelKind.MESSAGE,\n purpose: 'Alert shown in place of a PDF preview that could not be rendered; the file can still be downloaded',\n },\n];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_DOCUMENT, DisplayFieldFileDocument_Labels);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-gallery.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-gallery.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-gallery.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAQL,4BAA4B,EAC7B,MAAM,6BAA6B,CAAC;AAiBrC,iBAAS,uBAAuB,CAAC,EAC/B,YAAY,EACZ,OAAO,EACP,SAAS,EACT,OAAW,EACX,YAAmB,GACpB,EAAE,4BAA4B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0KzD;AAID,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-gallery.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-gallery.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-gallery.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAW/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-file-image.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-file-image.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-file-image.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EASL,0BAA0B,EAE3B,MAAM,6BAA6B,CAAC;AA8BrC,iBAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAmB,EACnB,QAAe,EACf,cAAqB,EACrB,QAAQ,EACR,OAAO,EACP,cAAc,EACd,YAAY,GACb,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA2OvD;AAID,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -37,7 +37,9 @@ const FILE_MEDIA_SHAPE_RADIUS = {
|
|
|
37
37
|
// =============================================================================
|
|
38
38
|
function DisplayFieldFileImage({ metadata, fileId, className, showDownload = true, showSize = true, showDimensions = true, serveUrl, getBlob, previewOptions, presentation, }) {
|
|
39
39
|
const { renderIcon } = useIconRegistry();
|
|
40
|
-
|
|
40
|
+
// Load the group this component READS. It loaded the form-field groups instead, so every word below
|
|
41
|
+
// rendered as its raw key (`components.LOW_LEVEL_DISPLAY_FIELD_FILE_…download`) — seen 2026-09-24 in a file preview.
|
|
42
|
+
const { tComponent, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_FILE_IMAGE });
|
|
41
43
|
const [imageError, setImageError] = React.useState(false);
|
|
42
44
|
// An <img> can't attach the bearer token, so protected bytes are fetched via the
|
|
43
45
|
// injected authed client and wrapped in object URLs. TWO renditions are tracked:
|