@wildo-ai/presets-components 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +61 -7
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.js +3 -3
- package/dist/esm/components/actions/action-button.js.map +1 -1
- package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
- package/dist/esm/components/actions/button-group.d.ts.map +1 -1
- package/dist/esm/components/actions/button.d.ts.map +1 -1
- package/dist/esm/components/actions/button.js +62 -3
- package/dist/esm/components/actions/button.js.map +1 -1
- package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.js +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts +4 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.js +165 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts +3 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js +63 -0
- package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js.map +1 -0
- package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
- package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
- package/dist/esm/components/ai-elements/decision/approval.d.ts +36 -4
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js +77 -7
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.js +1 -1
- package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.js +8 -1
- package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
- package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
- package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.js +23 -18
- package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
- package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
- package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
- package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
- package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
- package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
- package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
- package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.js +21 -0
- package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
- package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.js +9 -8
- package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
- package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
- package/dist/esm/components/app/public-layout-terms.js +137 -0
- package/dist/esm/components/app/public-layout-terms.js.map +1 -0
- package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js +3 -1
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
- package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
- package/dist/esm/components/billing/billing-plan-change-preview.js +22 -0
- package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js +19 -0
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
- package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
- package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js +3 -1
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
- package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js +4 -2
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.labels.js +1 -0
- package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js +3 -1
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
- package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js +4 -4
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.labels.js +2 -0
- package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
- package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
- package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.js +16 -15
- package/dist/esm/components/data-display/badge.js.map +1 -1
- package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.d.ts +2 -1
- package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.js +24 -8
- package/dist/esm/components/data-display/description-list.js.map +1 -1
- package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/duration.d.ts +15 -0
- package/dist/esm/components/data-display/duration.d.ts.map +1 -0
- package/dist/esm/components/data-display/duration.js +50 -0
- package/dist/esm/components/data-display/duration.js.map +1 -0
- package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
- package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
- package/dist/esm/components/data-display/duration.labels.js +35 -0
- package/dist/esm/components/data-display/duration.labels.js.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
- package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
- package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
- package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
- package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
- package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
- package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
- package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.js +12 -8
- package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
- package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
- package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.labels.js +1 -0
- package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.js +2 -2
- package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.js +82 -7
- package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/identifier.d.ts +19 -0
- package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
- package/dist/esm/components/data-display/identifier.js +21 -0
- package/dist/esm/components/data-display/identifier.js.map +1 -0
- package/dist/esm/components/data-display/kbd.d.ts +17 -0
- package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
- package/dist/esm/components/data-display/kbd.js +18 -0
- package/dist/esm/components/data-display/kbd.js.map +1 -0
- package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
- package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
- package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.js +3 -11
- package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
- package/dist/esm/components/data-display/timeline.d.ts +3 -0
- package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
- package/dist/esm/components/data-display/timeline.js +92 -0
- package/dist/esm/components/data-display/timeline.js.map +1 -0
- package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
- package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.js +146 -22
- package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.js +11 -1
- package/dist/esm/components/feedback/empty-state.js.map +1 -1
- package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.js +6 -6
- package/dist/esm/components/feedback/notification-center.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
- package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.js +11 -3
- package/dist/esm/components/form/chromes/field.js.map +1 -1
- package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.js +28 -0
- package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.js +4 -3
- package/dist/esm/components/form/combobox.js.map +1 -1
- package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
- package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
- package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
- package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
- package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
- package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.js +13 -12
- package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
- package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
- package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
- package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +54 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +159 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +22 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +27 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +41 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +129 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +22 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +27 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
- package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
- package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
- package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
- package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
- package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.js +35 -13
- package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.js +10 -2
- package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
- package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
- package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
- package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.js +38 -22
- package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
- package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.js +30 -5
- package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.js +2 -2
- package/dist/esm/components/navigation/command.js.map +1 -1
- package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
- package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.js +11 -1
- package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/card.d.ts.map +1 -1
- package/dist/esm/components/sections/card.js +71 -6
- package/dist/esm/components/sections/card.js.map +1 -1
- package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.js +36 -6
- package/dist/esm/components/sections/content-section.js.map +1 -1
- package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
- package/dist/esm/components/sections/option-gesture.d.ts +15 -0
- package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
- package/dist/esm/components/sections/option-gesture.js +66 -0
- package/dist/esm/components/sections/option-gesture.js.map +1 -0
- package/dist/esm/components/sections/pagination.d.ts.map +1 -1
- package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/table.d.ts.map +1 -1
- package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.js +64 -15
- package/dist/esm/components/sections/tabs.js.map +1 -1
- package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/label.d.ts.map +1 -1
- package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/link.d.ts.map +1 -1
- package/dist/esm/components/typography/link.js +9 -3
- package/dist/esm/components/typography/link.js.map +1 -1
- package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/text.d.ts +1 -1
- package/dist/esm/components/typography/text.d.ts.map +1 -1
- package/dist/esm/components/typography/text.js +3 -2
- package/dist/esm/components/typography/text.js.map +1 -1
- package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
- package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.js +37 -60
- package/dist/esm/config/preset-design-system.js.map +1 -1
- package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
- package/dist/esm/config/preset-kits.d.ts.map +1 -1
- package/dist/esm/config/preset-navigation.d.ts.map +1 -1
- package/dist/esm/config/preset-navigation.js +0 -5
- package/dist/esm/config/preset-navigation.js.map +1 -1
- package/dist/esm/config/preset-resources.d.ts.map +1 -1
- package/dist/esm/config/preset-shell.d.ts.map +1 -1
- package/dist/esm/config/preset-utils.d.ts.map +1 -1
- package/dist/esm/config/presets.d.ts.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
- package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.js +163 -7
- package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.js +1 -0
- package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.js +21 -5
- package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.js +25 -3
- package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/index.d.ts.map +1 -1
- package/dist/esm/config/resources/index.js.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.js +90 -12
- package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.d.ts +8 -2
- package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.js +185 -29
- package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/webhooks.resource-presets.js +27 -2
- package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
- package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
- package/dist/esm/mermaid-stub.d.ts.map +1 -1
- package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
- package/dist/esm/registration/register-common-enums.js +48 -34
- package/dist/esm/registration/register-common-enums.js.map +1 -1
- package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
- package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
- package/dist/esm/registration/register-default-icons.js +3 -1
- package/dist/esm/registration/register-default-icons.js.map +1 -1
- package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
- package/dist/esm/registration/register-default-presets.js +36 -4
- package/dist/esm/registration/register-default-presets.js.map +1 -1
- package/dist/esm/registration/register-provider-components.d.ts +31 -0
- package/dist/esm/registration/register-provider-components.d.ts.map +1 -0
- package/dist/esm/registration/register-provider-components.js +50 -0
- package/dist/esm/registration/register-provider-components.js.map +1 -0
- package/dist/esm/shiki-subset.d.ts +11 -3
- package/dist/esm/shiki-subset.d.ts.map +1 -1
- package/dist/esm/shiki-subset.js +10 -2
- package/dist/esm/shiki-subset.js.map +1 -1
- package/dist/esm/theme-exports.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.js +19 -5
- package/dist/esm/themes/cozy.theme.js.map +1 -1
- package/dist/esm/themes/dense.theme.d.ts.map +1 -1
- package/dist/esm/themes/dense.theme.js +56 -10
- package/dist/esm/themes/dense.theme.js.map +1 -1
- package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
- package/dist/esm/themes/editorial.theme.js +19 -5
- package/dist/esm/themes/editorial.theme.js.map +1 -1
- package/dist/esm/themes/glass.theme.d.ts.map +1 -1
- package/dist/esm/themes/glass.theme.js +5 -1
- package/dist/esm/themes/glass.theme.js.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.js +9 -2
- package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
- package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
- package/dist/esm/themes/terminal.theme.js +19 -5
- package/dist/esm/themes/terminal.theme.js.map +1 -1
- package/dist/esm/themes/trading.theme.d.ts.map +1 -1
- package/dist/esm/themes/trading.theme.js +22 -6
- package/dist/esm/themes/trading.theme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +29 -44
- package/dist/esm/.native.tsbuildinfo +0 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../../src/components/data-display/duration.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport { FrontendComponentType, TextSize, TextVariant } from \"@wildo-ai/presets-components-models\"\nimport { cn, Text, useI18n } from \"@wildo-ai/saas-frontend-lib\"\nimport type { DurationProps } from \"@wildo-ai/saas-frontend-lib\"\n\n/**\n * DEFAULT preset for `LOW_LEVEL_DURATION`: the elapsed span between two instants, ticking while the\n * second one is unknown.\n *\n * `tabular-nums` is not decoration. A ticking value whose digits are proportionally spaced shifts\n * every element to its right once a second, which on a board full of them reads as the surface\n * twitching. Tabular figures hold the column.\n */\nexport function Duration({\n since,\n until,\n size = TextSize.SM,\n variant = TextVariant.MUTED,\n className,\n}: DurationProps): React.JSX.Element | null {\n const settled = until !== undefined\n const [now, setNow] = React.useState(() => Date.now())\n const { tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_DURATION] })\n\n /*\n * The tick exists only while the span is open. Hooks run unconditionally — the early returns below\n * sit AFTER every hook, because a first ready render that adds a hook is a Rules-of-Hooks crash.\n */\n React.useEffect(() => {\n if (settled) return undefined\n const handle = setInterval(() => { setNow(Date.now()) }, 1_000)\n return () => clearInterval(handle)\n }, [settled])\n\n if (!isReady) return null\n\n const startedMs = Date.parse(since)\n const endedMs = settled ? Date.parse(until) : now\n if (Number.isNaN(startedMs) || Number.isNaN(endedMs)) return null\n\n const totalSeconds = Math.floor(Math.max(0, endedMs - startedMs) / 1000)\n const minutes = Math.floor(totalSeconds / 60)\n const text = totalSeconds < 60\n ? tComponent(FrontendComponentType.LOW_LEVEL_DURATION, 'compactSeconds', { seconds: totalSeconds })\n : minutes < 60\n ? tComponent(FrontendComponentType.LOW_LEVEL_DURATION, 'compactMinutes', {\n minutes,\n seconds: String(totalSeconds % 60).padStart(2, '0'),\n })\n : tComponent(FrontendComponentType.LOW_LEVEL_DURATION, 'compactHours', {\n hours: Math.floor(minutes / 60),\n minutes: String(minutes % 60).padStart(2, '0'),\n })\n\n return (\n <Text as=\"span\" size={size} variant={variant} className={cn(\"tabular-nums\", className)}>\n {text}\n </Text>\n )\n}\n\nDuration.displayName = \"Duration\"\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type LabellingUnitaryDef } from '@wildo-ai/presets-components-models';
|
|
2
|
+
/**
|
|
3
|
+
* The COMPACT duration forms, authored rather than formatted.
|
|
4
|
+
*
|
|
5
|
+
* `4m 20s` looks like punctuation and is display text: `m` and `s` are English abbreviations, and a
|
|
6
|
+
* locale that writes them differently — or a product that wants `4 min 20 s` — has nowhere to say so
|
|
7
|
+
* if a formatter builds the string. This is the same rule the duration FIELD already follows through
|
|
8
|
+
* the `DurationUnit` system enum; the difference is only that these forms are compact, because this
|
|
9
|
+
* value sits inline beside a ref rather than on a line of its own.
|
|
10
|
+
*
|
|
11
|
+
* Three forms and not one per unit: the SEPARATOR and the ORDER are part of the wording, and a
|
|
12
|
+
* locale that joins them differently cannot express that by translating `m` alone.
|
|
13
|
+
*/
|
|
14
|
+
export declare const LowLevelDurationLabels: LabellingUnitaryDef[];
|
|
15
|
+
//# sourceMappingURL=duration.labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/duration.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAgBvD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FrontendComponentType, LabelKind, registerComponentLabels } from '@wildo-ai/presets-components-models';
|
|
2
|
+
// Companion-only label metadata for this component: keys + params + (where
|
|
3
|
+
// authored) per-key purpose / kind / variable meaning. Statically scanned by
|
|
4
|
+
// the dev companion; NOT imported at runtime, so it never ships in the bundle.
|
|
5
|
+
/**
|
|
6
|
+
* The COMPACT duration forms, authored rather than formatted.
|
|
7
|
+
*
|
|
8
|
+
* `4m 20s` looks like punctuation and is display text: `m` and `s` are English abbreviations, and a
|
|
9
|
+
* locale that writes them differently — or a product that wants `4 min 20 s` — has nowhere to say so
|
|
10
|
+
* if a formatter builds the string. This is the same rule the duration FIELD already follows through
|
|
11
|
+
* the `DurationUnit` system enum; the difference is only that these forms are compact, because this
|
|
12
|
+
* value sits inline beside a ref rather than on a line of its own.
|
|
13
|
+
*
|
|
14
|
+
* Three forms and not one per unit: the SEPARATOR and the ORDER are part of the wording, and a
|
|
15
|
+
* locale that joins them differently cannot express that by translating `m` alone.
|
|
16
|
+
*/
|
|
17
|
+
export const LowLevelDurationLabels = [
|
|
18
|
+
{
|
|
19
|
+
ref: 'compactSeconds',
|
|
20
|
+
kind: LabelKind.MESSAGE,
|
|
21
|
+
purpose: 'A span under one minute, e.g. "9s". {seconds} is the whole-second count.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
ref: 'compactMinutes',
|
|
25
|
+
kind: LabelKind.MESSAGE,
|
|
26
|
+
purpose: 'A span under one hour, e.g. "4m 20s". {minutes} is whole minutes, {seconds} the zero-padded remainder.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
ref: 'compactHours',
|
|
30
|
+
kind: LabelKind.MESSAGE,
|
|
31
|
+
purpose: 'A span of an hour or more, e.g. "1h 07m". Seconds are dropped — at this scale they are noise.',
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
registerComponentLabels(FrontendComponentType.LOW_LEVEL_DURATION, LowLevelDurationLabels);
|
|
35
|
+
//# sourceMappingURL=duration.labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.labels.js","sourceRoot":"","sources":["../../../../../src/components/data-display/duration.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;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA0B;IAC3D;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,0EAA0E;KACpF;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,wGAAwG;KAClH;IACD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,+FAA+F;KACzG;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,sBAAsB,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\n/**\n * The COMPACT duration forms, authored rather than formatted.\n *\n * `4m 20s` looks like punctuation and is display text: `m` and `s` are English abbreviations, and a\n * locale that writes them differently — or a product that wants `4 min 20 s` — has nowhere to say so\n * if a formatter builds the string. This is the same rule the duration FIELD already follows through\n * the `DurationUnit` system enum; the difference is only that these forms are compact, because this\n * value sits inline beside a ref rather than on a line of its own.\n *\n * Three forms and not one per unit: the SEPARATOR and the ORDER are part of the wording, and a\n * locale that joins them differently cannot express that by translating `m` alone.\n */\nexport const LowLevelDurationLabels: LabellingUnitaryDef[] = [\n {\n ref: 'compactSeconds',\n kind: LabelKind.MESSAGE,\n purpose: 'A span under one minute, e.g. \"9s\". {seconds} is the whole-second count.',\n },\n {\n ref: 'compactMinutes',\n kind: LabelKind.MESSAGE,\n purpose: 'A span under one hour, e.g. \"4m 20s\". {minutes} is whole minutes, {seconds} the zero-padded remainder.',\n },\n {\n ref: 'compactHours',\n kind: LabelKind.MESSAGE,\n purpose: 'A span of an hour or more, e.g. \"1h 07m\". Seconds are dropped — at this scale they are noise.',\n },\n];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_DURATION, LowLevelDurationLabels);\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DisplayFieldAddress Component
|
|
3
|
+
*
|
|
4
|
+
* Displays a structured address (`z_address()`) as an `<address>` block, one part per line, with the
|
|
5
|
+
* country shown by its name in the active locale.
|
|
6
|
+
*
|
|
7
|
+
* The parts are NOT rearranged into a country's postal layout ("postal code before city", "city,
|
|
8
|
+
* state ZIP"): that needs per-country address-format data this component does not carry, and an
|
|
9
|
+
* order guessed for one country is wrong for the next. Each part stays on its own line, in the order
|
|
10
|
+
* the value declares them. The coordinates are not shown — a geocode is not something a reader reads.
|
|
11
|
+
*/
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
import type { DisplayFieldAddressProps } from '@wildo-ai/saas-frontend-lib';
|
|
14
|
+
/**
|
|
15
|
+
* DisplayFieldAddress component
|
|
16
|
+
*
|
|
17
|
+
* Renders an address block, one non-empty part per line.
|
|
18
|
+
*/
|
|
19
|
+
declare function DisplayFieldAddress({ value, className }: DisplayFieldAddressProps): React.JSX.Element | null;
|
|
20
|
+
export { DisplayFieldAddress };
|
|
21
|
+
//# sourceMappingURL=display-field-address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-field-address.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-address.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AA0B5E;;;;GAIG;AACH,iBAAS,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAkDrG;AAKD,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* DisplayFieldAddress Component
|
|
5
|
+
*
|
|
6
|
+
* Displays a structured address (`z_address()`) as an `<address>` block, one part per line, with the
|
|
7
|
+
* country shown by its name in the active locale.
|
|
8
|
+
*
|
|
9
|
+
* The parts are NOT rearranged into a country's postal layout ("postal code before city", "city,
|
|
10
|
+
* state ZIP"): that needs per-country address-format data this component does not carry, and an
|
|
11
|
+
* order guessed for one country is wrong for the next. Each part stays on its own line, in the order
|
|
12
|
+
* the value declares them. The coordinates are not shown — a geocode is not something a reader reads.
|
|
13
|
+
*/
|
|
14
|
+
import * as React from 'react';
|
|
15
|
+
import { useI18n } from '@wildo-ai/saas-frontend-lib';
|
|
16
|
+
import { Text } from '@wildo-ai/saas-frontend-lib';
|
|
17
|
+
import { FrontendComponentType } from '@wildo-ai/presets-components-models';
|
|
18
|
+
import { resolveInvalidLabel } from './display-field-i18n.utils.js';
|
|
19
|
+
/** Whether a stored value has the parts an address must have, each of the right type. */
|
|
20
|
+
function isRenderableAddress(value) {
|
|
21
|
+
if (typeof value !== 'object' || value === null)
|
|
22
|
+
return false;
|
|
23
|
+
const candidate = value;
|
|
24
|
+
const isOptionalText = (part) => part === undefined || part === null || typeof part === 'string';
|
|
25
|
+
return (typeof candidate.line1 === 'string' &&
|
|
26
|
+
typeof candidate.city === 'string' &&
|
|
27
|
+
typeof candidate.country === 'string' &&
|
|
28
|
+
isOptionalText(candidate.line2) &&
|
|
29
|
+
isOptionalText(candidate.state) &&
|
|
30
|
+
isOptionalText(candidate.postalCode));
|
|
31
|
+
}
|
|
32
|
+
function localizedCountryName(code, locale) {
|
|
33
|
+
try {
|
|
34
|
+
return new Intl.DisplayNames([locale], { type: 'region' }).of(code) ?? code;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return code;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* DisplayFieldAddress component
|
|
42
|
+
*
|
|
43
|
+
* Renders an address block, one non-empty part per line.
|
|
44
|
+
*/
|
|
45
|
+
function DisplayFieldAddress({ value, className }) {
|
|
46
|
+
const { tComponent, currentLanguage, isReady } = useI18n({
|
|
47
|
+
component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_ADDRESS],
|
|
48
|
+
});
|
|
49
|
+
// Hooks run unconditionally, above the `!isReady` gate (same defect family as DisplayFieldPhone).
|
|
50
|
+
const invalidLabel = React.useMemo(() => resolveInvalidLabel(tComponent, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_ADDRESS), [tComponent]);
|
|
51
|
+
if (!isReady)
|
|
52
|
+
return null;
|
|
53
|
+
const renderValue = () => {
|
|
54
|
+
if (value === null || value === undefined) {
|
|
55
|
+
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') })] }));
|
|
56
|
+
}
|
|
57
|
+
if (!isRenderableAddress(value)) {
|
|
58
|
+
return _jsx(Text, { className: "text-muted-foreground italic", children: invalidLabel });
|
|
59
|
+
}
|
|
60
|
+
const lines = [
|
|
61
|
+
value.line1,
|
|
62
|
+
value.line2,
|
|
63
|
+
value.city,
|
|
64
|
+
value.state,
|
|
65
|
+
value.postalCode,
|
|
66
|
+
localizedCountryName(value.country, currentLanguage),
|
|
67
|
+
].filter((line) => typeof line === 'string' && line.trim() !== '');
|
|
68
|
+
return (_jsx("address", { className: "flex flex-col not-italic", children: lines.map((line, index) => (_jsx(Text, { children: line }, index))) }));
|
|
69
|
+
};
|
|
70
|
+
return _jsx("div", { className: className, children: renderValue() });
|
|
71
|
+
}
|
|
72
|
+
DisplayFieldAddress.displayName =
|
|
73
|
+
'DisplayFieldAddress';
|
|
74
|
+
export { DisplayFieldAddress };
|
|
75
|
+
//# sourceMappingURL=display-field-address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-field-address.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-address.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\n/**\n * DisplayFieldAddress Component\n *\n * Displays a structured address (`z_address()`) as an `<address>` block, one part per line, with the\n * country shown by its name in the active locale.\n *\n * The parts are NOT rearranged into a country's postal layout (\"postal code before city\", \"city,\n * state ZIP\"): that needs per-country address-format data this component does not carry, and an\n * order guessed for one country is wrong for the next. Each part stays on its own line, in the order\n * the value declares them. The coordinates are not shown — a geocode is not something a reader reads.\n */\n\nimport * as React from 'react';\n\nimport { useI18n } from '@wildo-ai/saas-frontend-lib';\nimport { Text } from '@wildo-ai/saas-frontend-lib';\nimport { FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { resolveInvalidLabel } from './display-field-i18n.utils';\nimport type { DisplayFieldAddressProps } from '@wildo-ai/saas-frontend-lib';\nimport type { AddressValue } from '@wildo-ai/zod-decorators';\n\n/** Whether a stored value has the parts an address must have, each of the right type. */\nfunction isRenderableAddress(value: unknown): value is AddressValue {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as Partial<Record<keyof AddressValue, unknown>>;\n const isOptionalText = (part: unknown): boolean => part === undefined || part === null || typeof part === 'string';\n return (\n typeof candidate.line1 === 'string' &&\n typeof candidate.city === 'string' &&\n typeof candidate.country === 'string' &&\n isOptionalText(candidate.line2) &&\n isOptionalText(candidate.state) &&\n isOptionalText(candidate.postalCode)\n );\n}\n\nfunction localizedCountryName(code: string, locale: string): string {\n try {\n return new Intl.DisplayNames([locale], { type: 'region' }).of(code) ?? code;\n } catch {\n return code;\n }\n}\n\n/**\n * DisplayFieldAddress component\n *\n * Renders an address block, one non-empty part per line.\n */\nfunction DisplayFieldAddress({ value, className }: DisplayFieldAddressProps): React.JSX.Element | null {\n const { tComponent, currentLanguage, isReady } = useI18n({\n component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_ADDRESS],\n });\n\n // Hooks run unconditionally, above the `!isReady` gate (same defect family as DisplayFieldPhone).\n const invalidLabel = React.useMemo(\n () => resolveInvalidLabel(tComponent, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_ADDRESS),\n [tComponent]\n );\n\n if (!isReady) return null;\n\n const renderValue = () => {\n if (value === null || value === undefined) {\n return (\n <>\n <Text className=\"text-muted-foreground italic\" aria-hidden=\"true\">\n —\n </Text>\n <span className=\"sr-only\">\n {tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD, 'noValue')}\n </span>\n </>\n );\n }\n\n if (!isRenderableAddress(value)) {\n return <Text className=\"text-muted-foreground italic\">{invalidLabel}</Text>;\n }\n\n const lines = [\n value.line1,\n value.line2,\n value.city,\n value.state,\n value.postalCode,\n localizedCountryName(value.country, currentLanguage),\n ].filter((line): line is string => typeof line === 'string' && line.trim() !== '');\n\n return (\n <address className=\"flex flex-col not-italic\">\n {lines.map((line, index) => (\n <Text key={index}>{line}</Text>\n ))}\n </address>\n );\n };\n\n return <div className={className}>{renderValue()}</div>;\n}\n\n(DisplayFieldAddress as typeof DisplayFieldAddress & { displayName: string }).displayName =\n 'DisplayFieldAddress';\n\nexport { DisplayFieldAddress };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-field-address.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-address.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EAMlE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FrontendComponentType, LabelKind, registerComponentLabels } from '@wildo-ai/presets-components-models';
|
|
2
|
+
// Companion-only label metadata for this component: keys + params + (where
|
|
3
|
+
// authored) per-key purpose / kind / variable meaning. Statically scanned by
|
|
4
|
+
// the dev companion; NOT imported at runtime, so it never ships in the bundle.
|
|
5
|
+
export const LowLevelDisplayFieldAddressLabels = [
|
|
6
|
+
{
|
|
7
|
+
ref: 'invalid',
|
|
8
|
+
kind: LabelKind.MESSAGE,
|
|
9
|
+
purpose: 'Fallback shown in place of a stored address value that is missing its first line, city or country',
|
|
10
|
+
},
|
|
11
|
+
];
|
|
12
|
+
registerComponentLabels(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_ADDRESS, LowLevelDisplayFieldAddressLabels);
|
|
13
|
+
//# sourceMappingURL=display-field-address.labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-field-address.labels.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-address.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,iCAAiC,GAA0B;IACtE;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,mGAAmG;KAC7G;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,iCAAiC,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 LowLevelDisplayFieldAddressLabels: LabellingUnitaryDef[] = [\n {\n ref: 'invalid',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback shown in place of a stored address value that is missing its first line, city or country',\n },\n];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_ADDRESS, LowLevelDisplayFieldAddressLabels);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-bigdecimal.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-bigdecimal.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-bigdecimal.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAI9E;;;;GAIG;AACH,iBAAS,sBAAsB,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE,2BAA2B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA2GxD;AAID,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -8,7 +8,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
8
8
|
* Uses big.js for precise arithmetic when needed.
|
|
9
9
|
*/
|
|
10
10
|
import * as React from "react";
|
|
11
|
-
import { Text } from "@wildo-ai/saas-frontend-lib";
|
|
11
|
+
import { Text, useContextualDisplayParams } from "@wildo-ai/saas-frontend-lib";
|
|
12
12
|
import { useI18n } from "@wildo-ai/saas-frontend-lib";
|
|
13
13
|
import { FrontendComponentType } from "@wildo-ai/presets-components-models";
|
|
14
14
|
import { getBigDecimalUI, getNumberUI, getBigDecimalMetadata, NumberDisplayMode, PercentageScale } from "@wildo-ai/zod-decorators";
|
|
@@ -24,7 +24,11 @@ function DisplayFieldBigDecimal({ schema, value, className, locale, }) {
|
|
|
24
24
|
const bdUI = getBigDecimalUI(schema);
|
|
25
25
|
const numUI = getNumberUI(schema);
|
|
26
26
|
const metadata = getBigDecimalMetadata(schema);
|
|
27
|
-
|
|
27
|
+
// Both resolved unconditionally: `??` short-circuits, so calling the second hook inside the
|
|
28
|
+
// fallback would make it a conditional hook call.
|
|
29
|
+
const bdDisplayParams = useContextualDisplayParams(bdUI);
|
|
30
|
+
const numDisplayParams = useContextualDisplayParams(numUI);
|
|
31
|
+
const displayMode = bdDisplayParams?.displayMode ?? numDisplayParams?.displayMode ?? NumberDisplayMode.RAW;
|
|
28
32
|
const decimalPlaces = bdUI?.decimalPlaces ?? numUI?.decimalPlaces ?? metadata?.precision;
|
|
29
33
|
const trailingZeros = bdUI?.trailingZeros ?? numUI?.trailingZeros ?? false;
|
|
30
34
|
const prefix = bdUI?.prefix ?? numUI?.prefix ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-bigdecimal.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-bigdecimal.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldBigDecimal Component\n *\n * Displays a bigdecimal value based on the bigdecimal UI decorator.\n * Supports the same display modes as numbers: raw, formatted, percentage, compact, ordinal, bytes\n * Uses big.js for precise arithmetic when needed.\n */\n\nimport * as React from \"react\"\nimport { Text } from \"@wildo-ai/saas-frontend-lib\"\nimport { useI18n } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { getBigDecimalUI, getNumberUI, getBigDecimalMetadata, BigDecimalValue, NumberDisplayMode, PercentageScale } from \"@wildo-ai/zod-decorators\"\nimport type { DisplayFieldBigDecimalProps } from '@wildo-ai/saas-frontend-lib'\nimport { DisplayFieldFormatUtils } from \"./display-field-format.utils\"\nimport { resolveInvalidLabel } from \"./display-field-i18n.utils\"\n\n/**\n * DisplayFieldBigDecimal component\n *\n * Renders a bigdecimal value according to the bigdecimal UI decorator\n */\nfunction DisplayFieldBigDecimal({\n schema,\n value,\n className,\n locale,\n}: DisplayFieldBigDecimalProps): React.JSX.Element | null {\n const { regionalPreferences, tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BIGDECIMAL] })\n\n const bdUI = getBigDecimalUI(schema)\n const numUI = getNumberUI(schema)\n const metadata = getBigDecimalMetadata(schema)\n\n const displayMode = bdUI?.display?.displayMode ?? numUI?.display?.displayMode ?? NumberDisplayMode.RAW\n const decimalPlaces = bdUI?.decimalPlaces ?? numUI?.decimalPlaces ?? metadata?.precision\n const trailingZeros = bdUI?.trailingZeros ?? numUI?.trailingZeros ?? false\n const prefix = bdUI?.prefix ?? numUI?.prefix ?? ''\n const suffix = bdUI?.suffix ?? numUI?.suffix ?? ''\n const percentageScale = bdUI?.percentageScale ?? numUI?.percentageScale ?? PercentageScale.NORMALIZED\n\n // Locale priority: explicit prop > regional preferences > browser locale > fallback.\n // `regionalPreferences` is null until the i18n bundle resolves (`isReady`), and this\n // read runs in the render body BEFORE the `!isReady` gate below — so optional-chain it.\n // Without the `?.`, the first render throws `Cannot read properties of null (reading\n // 'locale')`, the DisplayFieldErrorBoundary catches it, and the field shows an error box\n // until i18n hydrates. On that first beat the browser-locale fallback applies; the real\n // preference takes over on the next render.\n const effectiveLocale = locale ?? regionalPreferences?.locale ?? (typeof navigator !== 'undefined' ? navigator.language : 'en')\n\n const invalidLabel = React.useMemo(\n () => resolveInvalidLabel(tComponent, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BIGDECIMAL),\n [tComponent]\n )\n\n const renderValue = () => {\n // Handle null/undefined\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 // Convert string to number for formatting\n // Note: For display purposes, we convert to number. For calculations, use big.js\n const numericValue = parseFloat(value)\n if (isNaN(numericValue)) {\n return <Text className=\"text-muted-foreground italic\">{invalidLabel}</Text>\n }\n\n // Format the number based on display mode\n let formattedValue: string\n\n switch (displayMode) {\n case NumberDisplayMode.RAW:\n if (decimalPlaces !== undefined) {\n // Use string-based truncation to preserve BigDecimal precision\n // (parseFloat would lose precision beyond ~15-17 significant digits)\n formattedValue = DisplayFieldFormatUtils.truncateDecimalString(value, decimalPlaces, trailingZeros)\n } else {\n // For raw mode with bigdecimal, preserve original string representation\n formattedValue = value\n }\n break\n\n case NumberDisplayMode.FORMATTED:\n formattedValue = new Intl.NumberFormat(effectiveLocale, {\n minimumFractionDigits: trailingZeros ? decimalPlaces : undefined,\n maximumFractionDigits: decimalPlaces ?? 20, // Allow more decimals for precision\n }).format(numericValue)\n break\n\n case NumberDisplayMode.PERCENTAGE: {\n const percentValue = percentageScale === PercentageScale.PERCENT ? numericValue / 100 : numericValue\n formattedValue = new Intl.NumberFormat(effectiveLocale, {\n style: 'percent',\n minimumFractionDigits: trailingZeros ? decimalPlaces : undefined,\n maximumFractionDigits: decimalPlaces ?? 0,\n }).format(percentValue)\n break\n }\n\n case NumberDisplayMode.COMPACT:\n formattedValue = new Intl.NumberFormat(effectiveLocale, {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: decimalPlaces ?? 1,\n }).format(numericValue)\n break\n\n case NumberDisplayMode.ORDINAL:\n formattedValue = DisplayFieldFormatUtils.formatOrdinal(Math.round(numericValue), effectiveLocale)\n break\n\n case NumberDisplayMode.BYTES:\n formattedValue = DisplayFieldFormatUtils.formatBytes(numericValue, decimalPlaces ?? 2)\n break\n\n default:\n formattedValue = value\n }\n\n // Add prefix and suffix\n const displayValue = `${prefix}${formattedValue}${suffix}`\n\n return <Text className=\"tabular-nums\">{displayValue}</Text>\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;(DisplayFieldBigDecimal as typeof DisplayFieldBigDecimal & { displayName: string }).displayName = \"DisplayFieldBigDecimal\"\n\nexport { DisplayFieldBigDecimal }\n\n"]}
|
|
1
|
+
{"version":3,"file":"display-field-bigdecimal.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-bigdecimal.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldBigDecimal Component\n *\n * Displays a bigdecimal value based on the bigdecimal UI decorator.\n * Supports the same display modes as numbers: raw, formatted, percentage, compact, ordinal, bytes\n * Uses big.js for precise arithmetic when needed.\n */\n\nimport * as React from \"react\"\nimport { Text, useContextualDisplayParams } from \"@wildo-ai/saas-frontend-lib\"\nimport { useI18n } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport { getBigDecimalUI, getNumberUI, getBigDecimalMetadata, BigDecimalValue, NumberDisplayMode, PercentageScale } from \"@wildo-ai/zod-decorators\"\nimport type { DisplayFieldBigDecimalProps } from '@wildo-ai/saas-frontend-lib'\nimport { DisplayFieldFormatUtils } from \"./display-field-format.utils\"\nimport { resolveInvalidLabel } from \"./display-field-i18n.utils\"\n\n/**\n * DisplayFieldBigDecimal component\n *\n * Renders a bigdecimal value according to the bigdecimal UI decorator\n */\nfunction DisplayFieldBigDecimal({\n schema,\n value,\n className,\n locale,\n}: DisplayFieldBigDecimalProps): React.JSX.Element | null {\n const { regionalPreferences, tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BIGDECIMAL] })\n\n const bdUI = getBigDecimalUI(schema)\n const numUI = getNumberUI(schema)\n const metadata = getBigDecimalMetadata(schema)\n\n // Both resolved unconditionally: `??` short-circuits, so calling the second hook inside the\n // fallback would make it a conditional hook call.\n const bdDisplayParams = useContextualDisplayParams(bdUI)\n const numDisplayParams = useContextualDisplayParams(numUI)\n const displayMode = bdDisplayParams?.displayMode ?? numDisplayParams?.displayMode ?? NumberDisplayMode.RAW\n const decimalPlaces = bdUI?.decimalPlaces ?? numUI?.decimalPlaces ?? metadata?.precision\n const trailingZeros = bdUI?.trailingZeros ?? numUI?.trailingZeros ?? false\n const prefix = bdUI?.prefix ?? numUI?.prefix ?? ''\n const suffix = bdUI?.suffix ?? numUI?.suffix ?? ''\n const percentageScale = bdUI?.percentageScale ?? numUI?.percentageScale ?? PercentageScale.NORMALIZED\n\n // Locale priority: explicit prop > regional preferences > browser locale > fallback.\n // `regionalPreferences` is null until the i18n bundle resolves (`isReady`), and this\n // read runs in the render body BEFORE the `!isReady` gate below — so optional-chain it.\n // Without the `?.`, the first render throws `Cannot read properties of null (reading\n // 'locale')`, the DisplayFieldErrorBoundary catches it, and the field shows an error box\n // until i18n hydrates. On that first beat the browser-locale fallback applies; the real\n // preference takes over on the next render.\n const effectiveLocale = locale ?? regionalPreferences?.locale ?? (typeof navigator !== 'undefined' ? navigator.language : 'en')\n\n const invalidLabel = React.useMemo(\n () => resolveInvalidLabel(tComponent, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BIGDECIMAL),\n [tComponent]\n )\n\n const renderValue = () => {\n // Handle null/undefined\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 // Convert string to number for formatting\n // Note: For display purposes, we convert to number. For calculations, use big.js\n const numericValue = parseFloat(value)\n if (isNaN(numericValue)) {\n return <Text className=\"text-muted-foreground italic\">{invalidLabel}</Text>\n }\n\n // Format the number based on display mode\n let formattedValue: string\n\n switch (displayMode) {\n case NumberDisplayMode.RAW:\n if (decimalPlaces !== undefined) {\n // Use string-based truncation to preserve BigDecimal precision\n // (parseFloat would lose precision beyond ~15-17 significant digits)\n formattedValue = DisplayFieldFormatUtils.truncateDecimalString(value, decimalPlaces, trailingZeros)\n } else {\n // For raw mode with bigdecimal, preserve original string representation\n formattedValue = value\n }\n break\n\n case NumberDisplayMode.FORMATTED:\n formattedValue = new Intl.NumberFormat(effectiveLocale, {\n minimumFractionDigits: trailingZeros ? decimalPlaces : undefined,\n maximumFractionDigits: decimalPlaces ?? 20, // Allow more decimals for precision\n }).format(numericValue)\n break\n\n case NumberDisplayMode.PERCENTAGE: {\n const percentValue = percentageScale === PercentageScale.PERCENT ? numericValue / 100 : numericValue\n formattedValue = new Intl.NumberFormat(effectiveLocale, {\n style: 'percent',\n minimumFractionDigits: trailingZeros ? decimalPlaces : undefined,\n maximumFractionDigits: decimalPlaces ?? 0,\n }).format(percentValue)\n break\n }\n\n case NumberDisplayMode.COMPACT:\n formattedValue = new Intl.NumberFormat(effectiveLocale, {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: decimalPlaces ?? 1,\n }).format(numericValue)\n break\n\n case NumberDisplayMode.ORDINAL:\n formattedValue = DisplayFieldFormatUtils.formatOrdinal(Math.round(numericValue), effectiveLocale)\n break\n\n case NumberDisplayMode.BYTES:\n formattedValue = DisplayFieldFormatUtils.formatBytes(numericValue, decimalPlaces ?? 2)\n break\n\n default:\n formattedValue = value\n }\n\n // Add prefix and suffix\n const displayValue = `${prefix}${formattedValue}${suffix}`\n\n return <Text className=\"tabular-nums\">{displayValue}</Text>\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;(DisplayFieldBigDecimal as typeof DisplayFieldBigDecimal & { displayName: string }).displayName = \"DisplayFieldBigDecimal\"\n\nexport { DisplayFieldBigDecimal }\n\n"]}
|
package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-bigdecimal.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-bigdecimal.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-bigdecimal.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,oCAAoC,EAAE,mBAAmB,EAMrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-boolean.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-boolean.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-boolean.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAQL,wBAAwB,EAEzB,MAAM,6BAA6B,CAAC;AAKrC;;;;;;;GAOG;AACH,iBAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA6FrD;AAID,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { cn, useI18n, useIconRegistry, StandardIconReference, IconSize, Text, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
3
|
+
import { cn, useI18n, useIconRegistry, StandardIconReference, IconSize, Text, Surface, useContextualDisplayParams, } from '@wildo-ai/saas-frontend-lib';
|
|
4
4
|
import { BooleanDisplayMode, getBooleanUI } from "@wildo-ai/zod-decorators";
|
|
5
5
|
import { FrontendComponentType, SurfaceVariant } from "@wildo-ai/presets-components-models";
|
|
6
6
|
/**
|
|
@@ -34,7 +34,7 @@ function DisplayFieldBoolean({ schema, value, className, }) {
|
|
|
34
34
|
});
|
|
35
35
|
const { renderIcon } = useIconRegistry();
|
|
36
36
|
const booleanUI = getBooleanUI(schema);
|
|
37
|
-
const displayMode = booleanUI?.
|
|
37
|
+
const displayMode = useContextualDisplayParams(booleanUI)?.displayMode ?? BooleanDisplayMode.CHECKMARK;
|
|
38
38
|
const labellingValue = booleanUI?.labellingValue ?? 'yes/no';
|
|
39
39
|
const isCustomLabelling = labellingValue != null && typeof labellingValue === 'object' && labellingValue.mode === 'custom';
|
|
40
40
|
const [trueLabelKey, falseLabelKey] = isCustomLabelling ? [undefined, undefined] : labellingValue.split('/');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-boolean.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-boolean.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-boolean.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAWZ,OAAO,EACL,EAAE,EACF,OAAO,EACP,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,IAAI,EACJ,OAAO,EAEP,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAE3F;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,KAAK,EACL,SAAS,GACgB;IACzB;;;;;;;;;;;;OAYG;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACtC,SAAS,EAAE;YACT,qBAAqB,CAAC,4BAA4B;YAClD,qBAAqB,CAAC,+BAA+B;YACrD,qBAAqB,CAAC,oBAAoB;SAC3C;KACF,CAAC,CAAA;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IAExC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,WAAW,GAAG,0BAA0B,CAAC,SAAS,CAAC,EAAE,WAAW,IAAI,kBAAkB,CAAC,SAAS,CAAA;IACtG,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,IAAI,QAAQ,CAAA;IAE5D,MAAM,iBAAiB,GAAG,cAAc,IAAI,IAAI,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAA;IAC1H,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAE,cAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,YAAa,CAAC,CAAA;IAC1J,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,aAAc,CAAC,CAAA;IAE7J,yFAAyF;IACzF,MAAM,YAAY,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QACxD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAA;IAEb,2BAA2B;IAC3B,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,wBAAwB;QACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,8BAAE,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,iBAAc,MAAM,uBAAS,EAAA,eAAM,SAAS,EAAC,SAAS,YAAE,UAAU,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAQ,IAAG,CAAA;QAClM,CAAC;QAED,+BAA+B;QAC/B,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,kBAAkB,CAAC,GAAG;gBACzB,OAAO,CACL,KAAC,IAAI,cACF,YAAY,GACR,CACR,CAAA;YAEH,KAAK,kBAAkB,CAAC,SAAS;gBAC/B,OAAO,CACL,eAAK,SAAS,EAAC,+BAA+B,gBAAa,YAAY,aACpE,KAAK,IAAI,CACR,8BAAkB,MAAM,YACrB,UAAU,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GACrF,CACR,EACA,CAAC,KAAK,IAAI,CACT,8BAAkB,MAAM,YACrB,UAAU,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,GAC9F,CACR,EACD,eAAM,SAAS,EAAC,SAAS,YAAE,YAAY,GAAQ,IAC3C,CACP,CAAA;YAEH,KAAK,kBAAkB,CAAC,SAAS;gBAC/B,qCAAqC;gBACrC,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,YACnE,cAAK,SAAS,EAAC,oGAAoG,YAChH,YAAY,GACT,GACE,CACX,CAAA;YAEH;gBACE,OAAO,CACL,KAAC,IAAI,cACF,YAAY,GACR,CACR,CAAA;QACL,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,+EAA+E;IAC/E,OAAO,cAAK,SAAS,EAAE,SAAS,YAAG,WAAW,EAAE,GAAO,CAAA;AACzD,CAAC;AAED,CAAC;AAAC,mBAA4E,CAAC,WAAW,GAAG,qBAAqB,CAAA;AAElH,OAAO,EAAE,mBAAmB,EAAE,CAAA","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldBoolean Component\n *\n * Displays a boolean value based on the boolean UI decorator.\n * Supports different display modes: raw, checkmark, edit_like\n */\n\nimport * as React from \"react\"\n\nimport {\n cn,\n useI18n,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n Text,\n Surface,\n DisplayFieldBooleanProps,\n useContextualDisplayParams,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { BooleanDisplayMode, getBooleanUI } from \"@wildo-ai/zod-decorators\"\nimport { FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\n\n/**\n * DisplayFieldBoolean component\n *\n * Renders a boolean value according to the boolean UI decorator:\n * - raw: Shows \"Yes\"/\"No\" or other labels based on labellingValue\n * - checkmark: Shows a checkmark icon for true, nothing for false\n * - edit_like: Shows the value in a form-like display (similar to edit mode)\n */\nfunction DisplayFieldBoolean({\n schema,\n value,\n className,\n}: DisplayFieldBooleanProps): React.JSX.Element | null {\n /*\n * Declare EVERY component whose keys this file reads, not the one it is named after (issue #231).\n *\n * It used to declare `LOW_LEVEL_FORM_FIELD_BOOLEAN` alone while calling `tComponent` for\n * `LOW_LEVEL_DISPLAY_FIELD_BOOLEAN` (the yes/no words) and `LOW_LEVEL_FORM_FIELD` (the no-value\n * placeholder). An undeclared unit is never fetched, so the lookup fell through to the raw key —\n * and because those words reach the reader only through `aria-label` and `sr-only` text, the\n * failure was INVISIBLE to a sighted developer: the ✓/✗ icons render correctly while a screen\n * reader announces `components.LOW_LEVEL_DISPLAY_FIELD_BOOLEAN.yes`.\n *\n * The scope is the union of what is asked for, so a key added later from a third component must\n * be declared here too or it will fail the same silent way.\n */\n const { tComponent, isReady } = useI18n({\n component: [\n FrontendComponentType.LOW_LEVEL_FORM_FIELD_BOOLEAN,\n FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BOOLEAN,\n FrontendComponentType.LOW_LEVEL_FORM_FIELD,\n ],\n })\n const { renderIcon } = useIconRegistry()\n\n const booleanUI = getBooleanUI(schema)\n const displayMode = useContextualDisplayParams(booleanUI)?.displayMode ?? BooleanDisplayMode.CHECKMARK\n const labellingValue = booleanUI?.labellingValue ?? 'yes/no'\n\n const isCustomLabelling = labellingValue != null && typeof labellingValue === 'object' && labellingValue.mode === 'custom'\n const [trueLabelKey, falseLabelKey] = isCustomLabelling ? [undefined, undefined] : (labellingValue as string).split('/')\n const getTrueLabel = () => isCustomLabelling ? labellingValue.trueValue : tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BOOLEAN, trueLabelKey!)\n const getFalseLabel = () => isCustomLabelling ? labellingValue.falseValue : tComponent(FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_BOOLEAN, falseLabelKey!)\n\n // Resolve the display label for current value (used for aria-label on visual-only modes)\n const displayLabel = value !== null && value !== undefined\n ? (value ? getTrueLabel() : getFalseLabel())\n : undefined\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return <><Text className={cn(\"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 BooleanDisplayMode.RAW:\n return (\n <Text>\n {displayLabel}\n </Text>\n )\n\n case BooleanDisplayMode.CHECKMARK:\n return (\n <div className=\"flex items-center gap-element\" aria-label={displayLabel}>\n {value && (\n <span aria-hidden=\"true\">\n {renderIcon(StandardIconReference.CHECK, { size: IconSize.SM, className: \"text-primary\" })}\n </span>\n )}\n {!value && (\n <span aria-hidden=\"true\">\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.SM, className: \"text-muted-foreground\" })}\n </span>\n )}\n <span className=\"sr-only\">{displayLabel}</span>\n </div>\n )\n\n case BooleanDisplayMode.EDIT_LIKE:\n // Similar to edit mode but read-only\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className=\"inline-flex items-center gap-element px-card-sm py-1.5 rounded-md border border-border bg-muted/50\">\n {displayLabel}\n </div>\n </Surface>\n )\n\n default:\n return (\n <Text>\n {displayLabel}\n </Text>\n )\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;(DisplayFieldBoolean as typeof DisplayFieldBoolean & { displayName: string }).displayName = \"DisplayFieldBoolean\"\n\nexport { DisplayFieldBoolean }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-boolean.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-boolean.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-boolean.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EAWlE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-code.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-code.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-code.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAKL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AAUrC;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,KAAK,EACL,SAAS,EACT,eAAe,EAAE,mBAAmB,EACpC,SAAe,EACf,QAAgB,EAChB,UAA2B,EAC3B,SAAyB,GAC1B,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA+IlD;AAID,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -8,7 +8,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
8
8
|
* then swaps in highlighted HTML once shiki completes.
|
|
9
9
|
*/
|
|
10
10
|
import * as React from "react";
|
|
11
|
-
import { cn, useI18n, Text, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
11
|
+
import { cn, useI18n, Text, Surface, useContextualDisplayParams, } from '@wildo-ai/saas-frontend-lib';
|
|
12
12
|
import { FrontendComponentType, SurfaceVariant } from "@wildo-ai/presets-components-models";
|
|
13
13
|
import { resolveInvalidLabel } from "./display-field-i18n.utils.js";
|
|
14
14
|
import { getCodeUI, getLanguageDisplayName, } from "@wildo-ai/zod-decorators";
|
|
@@ -25,7 +25,7 @@ import { getCodeUI, getLanguageDisplayName, } from "@wildo-ai/zod-decorators";
|
|
|
25
25
|
function DisplayFieldCode({ schema, value, className, showLineNumbers: showLineNumbersProp, maxHeight = 400, wordWrap = false, lightTheme = 'github-light', darkTheme = 'github-dark', }) {
|
|
26
26
|
const { tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_FORM_FIELD_CODE, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_CODE] });
|
|
27
27
|
const codeUI = getCodeUI(schema);
|
|
28
|
-
const showLineNumbers = showLineNumbersProp ?? codeUI?.
|
|
28
|
+
const showLineNumbers = showLineNumbersProp ?? useContextualDisplayParams(codeUI)?.showLineNumbers ?? true;
|
|
29
29
|
const syntaxHighlighting = codeUI?.syntaxHighlighting ?? true;
|
|
30
30
|
// State for async shiki highlighting
|
|
31
31
|
const [highlightedHtml, setHighlightedHtml] = React.useState(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-code.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-code.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldCode Component\n *\n * Displays a code value with syntax highlighting (via shiki) and optional line numbers.\n * Syntax highlighting is async — the component shows plain text immediately,\n * then swaps in highlighted HTML once shiki completes.\n */\n\nimport * as React from \"react\"\n\nimport {\n cn,\n useI18n,\n Text,\n Surface,\n DisplayFieldCodeProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\nimport { resolveInvalidLabel } from \"./display-field-i18n.utils\"\nimport {\n getCodeMetadata,\n getCodeUI,\n getLanguageDisplayName,\n} from \"@wildo-ai/zod-decorators\"\n\n/**\n * DisplayFieldCode component\n *\n * Renders a code value with:\n * - Language label\n * - Syntax highlighting via shiki (async, with plain-text fallback)\n * - Optional line numbers\n * - Scrollable container for long code\n * - Dual theme support (light/dark via CSS variables)\n */\nfunction DisplayFieldCode({\n schema,\n value,\n className,\n showLineNumbers: showLineNumbersProp,\n maxHeight = 400,\n wordWrap = false,\n lightTheme = 'github-light',\n darkTheme = 'github-dark',\n}: DisplayFieldCodeProps): React.JSX.Element | null {\n const { tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_FORM_FIELD_CODE, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_CODE] })\n const codeUI = getCodeUI(schema)\n\n const showLineNumbers = showLineNumbersProp ?? codeUI?.display?.showLineNumbers ?? true\n const syntaxHighlighting = codeUI?.syntaxHighlighting ?? true\n\n // State for async shiki highlighting\n const [highlightedHtml, setHighlightedHtml] = React.useState<string | null>(null)\n\n // Run shiki highlighting when value changes\n React.useEffect(() => {\n if (!syntaxHighlighting || !value || typeof value !== 'object' || !('content' in value) || !('language' in value)) {\n setHighlightedHtml(null)\n return\n }\n\n let cancelled = false\n\n const highlight = async () => {\n try {\n // The SUBSET bundle, not the `shiki` package root: the root's `bundledLanguages` /\n // `bundledThemes` records are 232 + 64 live `import()` edges, which a bundler emits as 295\n // chunks (1,507 kB gzipped, measured on `examples/wonder-crm`) regardless of reachability.\n // `~wildo-presets/shiki-subset` exposes the identical `codeToHtml` over the 31 declared\n // `CommonCodeLanguages` grammars and the 4 themes Wildo renders. A language or theme outside\n // that set rejects, and the `catch` below keeps the plain-text rendering — the same\n // degradation an unsupported language always had.\n const { codeToHtml } = await import('../../../shiki-subset')\n const html = await codeToHtml(value.content, {\n lang: value.language || 'plaintext',\n themes: {\n light: lightTheme,\n dark: darkTheme,\n },\n })\n if (!cancelled) {\n setHighlightedHtml(html)\n }\n } catch {\n // Shiki failed (unsupported language, missing theme, etc.) — keep plain rendering\n if (!cancelled) {\n setHighlightedHtml(null)\n }\n }\n }\n\n highlight()\n\n return () => { cancelled = true }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value?.content, value?.language, syntaxHighlighting, lightTheme, darkTheme])\n\n const invalidLabel = React.useMemo(\n () => resolveInvalidLabel(tComponent, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_CODE),\n [tComponent]\n )\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\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 // Handle invalid value\n if (typeof value !== 'object' || !('content' in value) || !('language' in value)) {\n return <Text className=\"text-muted-foreground italic\">{invalidLabel}</Text>\n }\n\n const { content, language } = value\n const languageDisplayName = getLanguageDisplayName(language)\n\n // Split content into lines for line numbers and plain fallback\n const lines = content.split('\\n')\n const lineNumberWidth = String(lines.length).length\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className=\"rounded-md border bg-muted/50 overflow-hidden\">\n {/* Language header */}\n <div className=\"flex items-center justify-between px-card-sm py-1.5 border-b bg-muted/30\">\n <Text className=\"text-xs font-medium text-muted-foreground\">\n {languageDisplayName}\n </Text>\n <Text className=\"text-xs text-muted-foreground\">\n {tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_CODE, 'lineCount', { count: lines.length })}\n </Text>\n </div>\n\n {/* Code content */}\n <div\n className=\"overflow-auto\"\n style={{ maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight }}\n >\n {highlightedHtml ? (\n /* Shiki highlighted output — rendered as HTML with inline styles */\n <div\n className={cn(\n \"text-sm [&>pre]:p-card-sm [&>pre]:!bg-transparent [&>pre]:font-mono\",\n wordWrap && \"[&>pre]:whitespace-pre-wrap [&>pre]:break-all\"\n )}\n dangerouslySetInnerHTML={{ __html: highlightedHtml }}\n />\n ) : (\n /* Plain text fallback (shown before shiki loads or when highlighting is disabled) */\n <pre className={cn(\n \"p-card-sm text-sm font-mono\",\n wordWrap && \"whitespace-pre-wrap break-all\"\n )}>\n {showLineNumbers ? (\n <table className=\"border-collapse\" role=\"presentation\">\n <tbody>\n {lines.map((line, index) => (\n <tr key={index}>\n <td\n className=\"pe-card text-end text-muted-foreground select-none align-top\"\n style={{ minWidth: `${lineNumberWidth + 1}ch` }}\n >\n {index + 1}\n </td>\n <td className=\"whitespace-pre\">\n {line || '\\u00A0'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n ) : (\n <code>{content}</code>\n )}\n </pre>\n )}\n </div>\n </div>\n </Surface>\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;(DisplayFieldCode as typeof DisplayFieldCode & { displayName: string }).displayName = \"DisplayFieldCode\"\n\nexport { DisplayFieldCode }\n\n"]}
|
|
1
|
+
{"version":3,"file":"display-field-code.js","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-code.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\n/**\n * DisplayFieldCode Component\n *\n * Displays a code value with syntax highlighting (via shiki) and optional line numbers.\n * Syntax highlighting is async — the component shows plain text immediately,\n * then swaps in highlighted HTML once shiki completes.\n */\n\nimport * as React from \"react\"\n\nimport {\n cn,\n useI18n,\n Text,\n Surface,\n DisplayFieldCodeProps,\n useContextualDisplayParams,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\nimport { resolveInvalidLabel } from \"./display-field-i18n.utils\"\nimport {\n getCodeMetadata,\n getCodeUI,\n getLanguageDisplayName,\n} from \"@wildo-ai/zod-decorators\"\n\n/**\n * DisplayFieldCode component\n *\n * Renders a code value with:\n * - Language label\n * - Syntax highlighting via shiki (async, with plain-text fallback)\n * - Optional line numbers\n * - Scrollable container for long code\n * - Dual theme support (light/dark via CSS variables)\n */\nfunction DisplayFieldCode({\n schema,\n value,\n className,\n showLineNumbers: showLineNumbersProp,\n maxHeight = 400,\n wordWrap = false,\n lightTheme = 'github-light',\n darkTheme = 'github-dark',\n}: DisplayFieldCodeProps): React.JSX.Element | null {\n const { tComponent, isReady } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD, FrontendComponentType.LOW_LEVEL_FORM_FIELD_CODE, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_CODE] })\n const codeUI = getCodeUI(schema)\n\n const showLineNumbers = showLineNumbersProp ?? useContextualDisplayParams(codeUI)?.showLineNumbers ?? true\n const syntaxHighlighting = codeUI?.syntaxHighlighting ?? true\n\n // State for async shiki highlighting\n const [highlightedHtml, setHighlightedHtml] = React.useState<string | null>(null)\n\n // Run shiki highlighting when value changes\n React.useEffect(() => {\n if (!syntaxHighlighting || !value || typeof value !== 'object' || !('content' in value) || !('language' in value)) {\n setHighlightedHtml(null)\n return\n }\n\n let cancelled = false\n\n const highlight = async () => {\n try {\n // The SUBSET bundle, not the `shiki` package root: the root's `bundledLanguages` /\n // `bundledThemes` records are 232 + 64 live `import()` edges, which a bundler emits as 295\n // chunks (1,507 kB gzipped, measured on `examples/wonder-crm`) regardless of reachability.\n // `~wildo-presets/shiki-subset` exposes the identical `codeToHtml` over the 31 declared\n // `CommonCodeLanguages` grammars and the 4 themes Wildo renders. A language or theme outside\n // that set rejects, and the `catch` below keeps the plain-text rendering — the same\n // degradation an unsupported language always had.\n const { codeToHtml } = await import('../../../shiki-subset')\n const html = await codeToHtml(value.content, {\n lang: value.language || 'plaintext',\n themes: {\n light: lightTheme,\n dark: darkTheme,\n },\n })\n if (!cancelled) {\n setHighlightedHtml(html)\n }\n } catch {\n // Shiki failed (unsupported language, missing theme, etc.) — keep plain rendering\n if (!cancelled) {\n setHighlightedHtml(null)\n }\n }\n }\n\n highlight()\n\n return () => { cancelled = true }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value?.content, value?.language, syntaxHighlighting, lightTheme, darkTheme])\n\n const invalidLabel = React.useMemo(\n () => resolveInvalidLabel(tComponent, FrontendComponentType.LOW_LEVEL_DISPLAY_FIELD_CODE),\n [tComponent]\n )\n\n // Render the value content\n const renderValue = () => {\n // Handle null/undefined\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 // Handle invalid value\n if (typeof value !== 'object' || !('content' in value) || !('language' in value)) {\n return <Text className=\"text-muted-foreground italic\">{invalidLabel}</Text>\n }\n\n const { content, language } = value\n const languageDisplayName = getLanguageDisplayName(language)\n\n // Split content into lines for line numbers and plain fallback\n const lines = content.split('\\n')\n const lineNumberWidth = String(lines.length).length\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className=\"rounded-md border bg-muted/50 overflow-hidden\">\n {/* Language header */}\n <div className=\"flex items-center justify-between px-card-sm py-1.5 border-b bg-muted/30\">\n <Text className=\"text-xs font-medium text-muted-foreground\">\n {languageDisplayName}\n </Text>\n <Text className=\"text-xs text-muted-foreground\">\n {tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_CODE, 'lineCount', { count: lines.length })}\n </Text>\n </div>\n\n {/* Code content */}\n <div\n className=\"overflow-auto\"\n style={{ maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight }}\n >\n {highlightedHtml ? (\n /* Shiki highlighted output — rendered as HTML with inline styles */\n <div\n className={cn(\n \"text-sm [&>pre]:p-card-sm [&>pre]:!bg-transparent [&>pre]:font-mono\",\n wordWrap && \"[&>pre]:whitespace-pre-wrap [&>pre]:break-all\"\n )}\n dangerouslySetInnerHTML={{ __html: highlightedHtml }}\n />\n ) : (\n /* Plain text fallback (shown before shiki loads or when highlighting is disabled) */\n <pre className={cn(\n \"p-card-sm text-sm font-mono\",\n wordWrap && \"whitespace-pre-wrap break-all\"\n )}>\n {showLineNumbers ? (\n <table className=\"border-collapse\" role=\"presentation\">\n <tbody>\n {lines.map((line, index) => (\n <tr key={index}>\n <td\n className=\"pe-card text-end text-muted-foreground select-none align-top\"\n style={{ minWidth: `${lineNumberWidth + 1}ch` }}\n >\n {index + 1}\n </td>\n <td className=\"whitespace-pre\">\n {line || '\\u00A0'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n ) : (\n <code>{content}</code>\n )}\n </pre>\n )}\n </div>\n </div>\n </Surface>\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;(DisplayFieldCode as typeof DisplayFieldCode & { displayName: string }).displayName = \"DisplayFieldCode\"\n\nexport { DisplayFieldCode }\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-code.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-code.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-code.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAM/D,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DisplayFieldDate Component
|
|
3
3
|
*
|
|
4
|
-
* Displays a date value
|
|
5
|
-
*
|
|
4
|
+
* Displays a date 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 { DisplayFieldDateProps } from '@wildo-ai/saas-frontend-lib';
|
|
11
|
-
declare function DisplayFieldDate({ value, className, }: DisplayFieldDateProps): React.JSX.Element | null;
|
|
11
|
+
declare function DisplayFieldDate({ schema, value, className, }: DisplayFieldDateProps): React.JSX.Element | null;
|
|
12
12
|
export { DisplayFieldDate };
|
|
13
13
|
//# sourceMappingURL=display-field-date.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-field-date.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"display-field-date.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/formatters/display-field-date.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAKxE,iBAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA6BlD;AAID,OAAO,EAAE,gBAAgB,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 { getDateUI } from "@wildo-ai/zod-decorators";
|
|
7
|
+
function DisplayFieldDate({ schema, value, className, }) {
|
|
8
|
+
const { formatDateForDisplayMode, formatDate, 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 = getDateUI(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 = formatDateForDisplayMode(value, displayParams?.displayMode);
|
|
20
|
+
const absolute = formatDate(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
|
DisplayFieldDate.displayName = "DisplayFieldDate";
|
|
@@ -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
|