@wildo-ai/presets-components 1.1.4 → 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 +17 -5
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js +49 -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.map +1 -1
- package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.js +5 -5
- package/dist/esm/components/feedback/notification-center.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
- package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
- package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.js +11 -3
- package/dist/esm/components/form/chromes/field.js.map +1 -1
- package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.js +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 +3 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +3 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +6 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +8 -1
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +6 -2
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +6 -2
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +6 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +8 -1
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -1
- package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
- package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
- package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
- package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/activity-bar.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 +23 -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 +60 -15
- package/dist/esm/components/sections/tabs.js.map +1 -1
- package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/label.d.ts.map +1 -1
- package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/link.d.ts.map +1 -1
- package/dist/esm/components/typography/link.js +9 -3
- package/dist/esm/components/typography/link.js.map +1 -1
- package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/text.d.ts +1 -1
- package/dist/esm/components/typography/text.d.ts.map +1 -1
- package/dist/esm/components/typography/text.js +3 -2
- package/dist/esm/components/typography/text.js.map +1 -1
- package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
- package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.d.ts.map +1 -1
- package/dist/esm/config/preset-design-system.js +37 -60
- package/dist/esm/config/preset-design-system.js.map +1 -1
- package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
- package/dist/esm/config/preset-kits.d.ts.map +1 -1
- package/dist/esm/config/preset-navigation.d.ts.map +1 -1
- package/dist/esm/config/preset-navigation.js +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 +6 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -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 +32 -4
- package/dist/esm/registration/register-default-presets.js.map +1 -1
- package/dist/esm/registration/register-provider-components.d.ts.map +1 -1
- package/dist/esm/registration/register-provider-components.js +5 -0
- package/dist/esm/registration/register-provider-components.js.map +1 -1
- package/dist/esm/shiki-subset.d.ts +11 -3
- package/dist/esm/shiki-subset.d.ts.map +1 -1
- package/dist/esm/shiki-subset.js +10 -2
- package/dist/esm/shiki-subset.js.map +1 -1
- package/dist/esm/theme-exports.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.js +19 -5
- package/dist/esm/themes/cozy.theme.js.map +1 -1
- package/dist/esm/themes/dense.theme.d.ts.map +1 -1
- package/dist/esm/themes/dense.theme.js +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 -45
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense } from 'react';\n\nimport {\n ApplicationLevelComponentType,\n ApplicationLevelProps_Menubar,\n useI18n,\n ComponentRegistryService,\n useUI,\n useMenuBarBehavior,\n useHostedComponentInteractions,\n useSidebarMobileDrawerMode,\n useEventBus,\n useIconRegistry,\n FrontendEvents,\n IconSize,\n StandardIconReference,\n envLoader,\n Button,\n ButtonVariants_Variant,\n cn,\n Surface,\n} from '@wildo-ai/saas-frontend-lib';\nimport { CorePresetNames, FrontendComponentType, HorizontalPlacement, ShellAppearance, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HostedTriggerAppearance } from '@wildo-ai/saas-frontend-lib';\n\nimport { Menubar } from '~wildo-presets/components/navigation/menu-bar';\n\nfunction humanizeMenubarGroup(group: string): string {\n return group\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .trim()\n .replace(/\\b\\w/g, character => character.toUpperCase());\n}\n\nexport const ApplicationLevelPreset_Menubar_Default: React.FC<ApplicationLevelProps_Menubar> = ({\n mode,\n children\n}) => {\n\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_MENUBAR });\n const { UIConfig, getRecipe, shellAppearance } = useUI();\n const overlayRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.OVERLAY);\n\n const { containerComponents, items, menubarConfig } = useMenuBarBehavior({ mode });\n // Mobile burger: while the sidebar operates as an overlay drawer (BURGER policy\n // at/below its responsive breakpoint) nothing renders inline, so the menubar\n // provides the drawer's opening affordance. State stays owned by the sidebar's\n // behavior instance — the burger only speaks the existing toggle event.\n const isSidebarDrawerMode = useSidebarMobileDrawerMode();\n const { emit } = useEventBus();\n const { renderIcon } = useIconRegistry();\n // CONTINUOUS shell chrome: the menubar is a transparent strip of the shared\n // canvas — no sunken slab, no separating border-b. The overlay mode keeps its\n // own (opaque) recipe chrome: a floating bar must stay readable over content.\n const isContinuousShell = shellAppearance === ShellAppearance.CONTINUOUS && !menubarConfig.isOverlay;\n const { getHostedComponentProps } = useHostedComponentInteractions();\n const currentBreakpoint = UIConfig?.currentBreakpoint;\n\n if (!isReady) return null;\n\n // ===================================================================\n // Component Renderers\n // ===================================================================\n\n const renderResolvedComponent = (\n instanceId: string,\n appLevelType: ApplicationLevelComponentType,\n frontendComponentType: FrontendComponentType,\n placement: HorizontalPlacement | VerticalPlacement | undefined,\n presetName?: string,\n triggerWidth?: string | number,\n triggerAppearance?: HostedTriggerAppearance,\n ) => {\n const Component = ComponentRegistryService.resolve(\n frontendComponentType,\n presetName ?? CorePresetNames.DEFAULT\n );\n if (!Component) return null;\n\n return (\n <Suspense key={instanceId} fallback={<div className=\"h-8 w-8 animate-pulse motion-reduce:animate-none bg-muted rounded\" aria-hidden=\"true\" />}>\n <Component\n {...getHostedComponentProps(appLevelType, instanceId)}\n containerType={ApplicationLevelComponentType.MENUBAR}\n containerPlacement={placement}\n triggerWidth={triggerWidth}\n // A COMPACT declaration renders the hosted trigger as an icon button —\n // what belongs in a menubar cluster beside the bell and the avatar.\n // Passed as the component's existing `compact` prop so a preset that\n // already collapses for its own reasons (the sidebar's collapsed rail)\n // keeps one meaning for \"render small\".\n compact={triggerAppearance === HostedTriggerAppearance.COMPACT}\n />\n </Suspense>\n );\n };\n\n const renderConfigComponents = (targetPlacement: HorizontalPlacement) => {\n return containerComponents\n .filter(comp => comp.placement === targetPlacement)\n .map(comp => renderResolvedComponent(comp.instanceId, comp.component, comp.frontendComponentType, comp.placement, comp.presetName, comp.triggerWidth, comp.triggerAppearance));\n };\n\n const groupedItems = items.reduce((groups, item) => {\n if (!item.group) {\n return groups;\n }\n\n const existing = groups.get(item.group) ?? [];\n existing.push(item);\n groups.set(item.group, existing);\n return groups;\n }, new Map<string, typeof items>());\n\n const renderMenubarItems = () => {\n if (items.length === 0) {\n return null;\n }\n\n const renderedGroups = new Set<string>();\n\n return (\n <div className=\"flex items-center gap-item-xs min-w-0\">\n {items.map(item => {\n if (!item.group) {\n return (\n <Button\n key={item.id}\n type=\"button\"\n onClick={item.onExecute}\n variant={ButtonVariants_Variant.GHOST}\n className=\"h-auto gap-element px-card-sm py-item-xs text-sm font-medium\"\n >\n {item.icon && <span className=\"shrink-0\">{item.icon}</span>}\n <span className=\"truncate\">{item.label}</span>\n </Button>\n );\n }\n\n if (renderedGroups.has(item.group)) {\n return null;\n }\n\n renderedGroups.add(item.group);\n const groupItems = groupedItems.get(item.group) ?? [];\n\n return (\n <Menubar\n key={item.group}\n className=\"h-auto gap-item-xs rounded-none border-0 bg-transparent p-0 shadow-none\"\n >\n <Menubar.Menu>\n <Menubar.Trigger>{humanizeMenubarGroup(item.group)}</Menubar.Trigger>\n <Menubar.Content>\n {groupItems.map(groupItem => (\n <Menubar.Item\n key={groupItem.id}\n onSelect={groupItem.onExecute}\n >\n {groupItem.icon && <span className=\"shrink-0\">{groupItem.icon}</span>}\n <span className=\"truncate\">{groupItem.label}</span>\n </Menubar.Item>\n ))}\n </Menubar.Content>\n </Menubar.Menu>\n </Menubar>\n );\n })}\n </div>\n );\n };\n\n // ===================================================================\n // Render\n // ===================================================================\n\n return (\n <Surface\n asChild\n emitPolicyVars={false}\n variant={menubarConfig.isOverlay ? SurfaceVariant.OVERLAY : SurfaceVariant.SUNKEN}\n >\n <div\n data-component-area=\"menubar\"\n data-component-type={ApplicationLevelComponentType.MENUBAR}\n data-menubar-mode={menubarConfig.mode}\n data-frontend-service-name={envLoader.loadEnvironmentConfig().frontendServiceName}\n data-viewport={currentBreakpoint}\n role=\"banner\"\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'menubarLabel')}\n className={cn(\n isContinuousShell\n ? 'bg-transparent text-foreground'\n : 'bg-surface-sunken text-surface-sunken-foreground border-b border-surface-sunken-border',\n menubarConfig.isOverlay && cn('absolute top-0 inset-inline-start-0 inset-inline-end-0 z-(--z-overlay)', overlayRecipe.base),\n menubarConfig.showMobileLayout ? 'px-card-sm py-item-xs' : 'px-card py-card-sm',\n )}\n >\n {/*\n * Three-zone bar as a GRID, not a flex sandwich. `flex-1 justify-center`\n * centered the MIDDLE zone within the RESIDUAL space between the two\n * side groups, so whenever START and END had different widths (the\n * normal case — END carries bell + avatar while START may be empty at a\n * root route) the \"centered\" content drifted off the bar's true center\n * by (start − end)/2, and the drift changed as breakpoint-gated\n * components appeared. `1fr auto 1fr` anchors the MIDDLE column to the\n * bar's center whenever space allows, and degrades by pushing (never\n * overlapping) when a side group genuinely needs more than half the\n * remaining width.\n */}\n {/*\n * The bar has NO fixed height — only padding — and it is an intrinsic\n * flex item in the shell's `flex flex-col` column whose content area\n * takes `flex-1`. So it GROWS to fit its tallest hosted control (a\n * quick switcher declaring `LABEL_ABOVE` renders a stacked label ~63px\n * tall) and the content area shrinks by exactly that much; `items-center`\n * re-centres every shorter sibling in the taller row rather than\n * top-aligning them. Do not pin a height here to \"stabilise\" the bar:\n * that would clip the taller control instead of hosting it.\n */}\n <div className=\"grid w-full grid-cols-[1fr_auto_1fr] items-center\">\n <div className=\"flex items-center gap-item-xs justify-self-start\">\n {isSidebarDrawerMode && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n onClick={() => emit(FrontendEvents.HOTKEY_SIDEBAR_TOGGLE, {})}\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'toggleSidebar')}\n data-component-type=\"sidebar-drawer-trigger\"\n className=\"h-auto shrink-0 px-card-sm py-item-xs\"\n >\n {renderIcon(StandardIconReference.MENU, { size: IconSize.SM })}\n </Button>\n )}\n {renderConfigComponents(HorizontalPlacement.START)}\n </div>\n\n <div className=\"flex items-center gap-item-xs min-w-0 px-item-xs\">\n {renderConfigComponents(HorizontalPlacement.MIDDLE)}\n {renderMenubarItems()}\n </div>\n\n <div className=\"flex items-center gap-item-xs justify-self-end\">\n {renderConfigComponents(HorizontalPlacement.END)}\n </div>\n </div>\n\n {children && (\n <div className={cn('px-card py-card-sm', !isContinuousShell && 'border-t border-surface-sunken-border')}>\n {children}\n </div>\n )}\n </div>\n </Surface>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense } from 'react';\n\nimport {\n ApplicationLevelComponentType,\n ApplicationLevelProps_Menubar,\n useI18n,\n ComponentRegistryService,\n useUI,\n useMenuBarBehavior,\n useHostedComponentInteractions,\n useSidebarMobileDrawerMode,\n useEventBus,\n useIconRegistry,\n FrontendEvents,\n IconSize,\n StandardIconReference,\n envLoader,\n Button,\n ButtonVariants_Variant,\n cn,\n Surface,\n useBrandPresentation,\n} from '@wildo-ai/saas-frontend-lib';\nimport { CorePresetNames, FrontendComponentType, HorizontalPlacement, SelectableVariant, ShellAppearance, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HostedTriggerAppearance } from '@wildo-ai/saas-frontend-lib';\n\nimport { Menubar } from '~wildo-presets/components/navigation/menu-bar';\n\nexport const ApplicationLevelPreset_Menubar_Default: React.FC<ApplicationLevelProps_Menubar> = ({\n mode,\n children\n}) => {\n\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_MENUBAR });\n const { UIConfig, getRecipe, shellAppearance } = useUI();\n const overlayRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.OVERLAY);\n /*\n * Destination items take the theme's SELECTABLE/FILLED recipe — the same vocabulary the sidebar\n * uses for \"the current destination\" — so a menubar-only shell reads which page it is on. Opt-in\n * via `data-active`, appended after the GHOST recipe so the selected wash wins over GHOST's.\n */\n const selectableRecipe = getRecipe(UIBehavior.SELECTABLE, SelectableVariant.FILLED);\n const itemStateClasses = cn(\n selectableRecipe.states.hover,\n selectableRecipe.states.selected,\n selectableRecipe.motion.transition,\n );\n\n const { containerComponents, items, menubarConfig, brandHeader, isHomeActive, handleHomeClick } = useMenuBarBehavior({ mode });\n /*\n * The same four data decisions the sidebar's brand header takes (a failed mark degrading to the\n * name, the latch resetting on a theme change, a wordmark replacing the name, nothing rendering\n * for an empty identity) live once in `useBrandPresentation`; what stays here is layout. Called\n * unconditionally, as a hook must be — `brandHeader` is `undefined` unless the config opted in,\n * and the hook answers `isEmpty` for that.\n */\n const brand = useBrandPresentation(brandHeader);\n // Mobile burger: while the sidebar operates as an overlay drawer (BURGER policy\n // at/below its responsive breakpoint) nothing renders inline, so the menubar\n // provides the drawer's opening affordance. State stays owned by the sidebar's\n // behavior instance — the burger only speaks the existing toggle event.\n const isSidebarDrawerMode = useSidebarMobileDrawerMode();\n const { emit } = useEventBus();\n const { renderIcon } = useIconRegistry();\n // CONTINUOUS shell chrome: the menubar is a transparent strip of the shared\n // canvas — no sunken slab, no separating border-b. The overlay mode keeps its\n // own (opaque) recipe chrome: a floating bar must stay readable over content.\n const isContinuousShell = shellAppearance === ShellAppearance.CONTINUOUS && !menubarConfig.isOverlay;\n const { getHostedComponentProps } = useHostedComponentInteractions();\n const currentBreakpoint = UIConfig?.currentBreakpoint;\n\n if (!isReady) return null;\n\n // ===================================================================\n // Component Renderers\n // ===================================================================\n\n const renderResolvedComponent = (\n instanceId: string,\n appLevelType: ApplicationLevelComponentType,\n frontendComponentType: FrontendComponentType,\n placement: HorizontalPlacement | VerticalPlacement | undefined,\n presetName?: string,\n triggerWidth?: string | number,\n triggerAppearance?: HostedTriggerAppearance,\n ) => {\n const Component = ComponentRegistryService.resolve(\n frontendComponentType,\n presetName ?? CorePresetNames.DEFAULT\n );\n if (!Component) return null;\n\n return (\n <Suspense key={instanceId} fallback={<div className=\"h-8 w-8 animate-pulse motion-reduce:animate-none bg-muted rounded\" aria-hidden=\"true\" />}>\n <Component\n {...getHostedComponentProps(appLevelType, instanceId)}\n containerType={ApplicationLevelComponentType.MENUBAR}\n containerPlacement={placement}\n triggerWidth={triggerWidth}\n // A COMPACT declaration renders the hosted trigger as an icon button —\n // what belongs in a menubar cluster beside the bell and the avatar.\n // Passed as the component's existing `compact` prop so a preset that\n // already collapses for its own reasons (the sidebar's collapsed rail)\n // keeps one meaning for \"render small\".\n compact={triggerAppearance === HostedTriggerAppearance.COMPACT}\n />\n </Suspense>\n );\n };\n\n const renderConfigComponents = (targetPlacement: HorizontalPlacement) => {\n return containerComponents\n .filter(comp => comp.placement === targetPlacement)\n .map(comp => renderResolvedComponent(comp.instanceId, comp.component, comp.frontendComponentType, comp.placement, comp.presetName, comp.triggerWidth, comp.triggerAppearance));\n };\n\n const groupedItems = items.reduce((groups, item) => {\n if (!item.group) {\n return groups;\n }\n\n const existing = groups.get(item.group) ?? [];\n existing.push(item);\n groups.set(item.group, existing);\n return groups;\n }, new Map<string, typeof items>());\n\n /**\n * The identity as the HOME affordance at the start of the bar (`brandHeader: true`) — the\n * horizontal counterpart of the sidebar's pinned brand header, for a shell that has no sidebar.\n * Mark beside name; a WORDMARK/LOCKUP already spells the name and replaces it. `aria-current`\n * stays truthful on the home route but NO `data-active`: the identity is not a menu item that\n * lights up (the sidebar records the same decision).\n */\n const renderBrandHeader = () => {\n if (!brandHeader || brand.isEmpty) return null;\n const { name, logoUrl, hasMark, markCarriesName, onMarkError } = brand;\n const showNameText = !(hasMark && markCarriesName);\n return (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n onClick={handleHomeClick}\n aria-current={isHomeActive ? 'page' : undefined}\n aria-label={showNameText ? undefined : name}\n data-slot=\"menubar-brand-header\"\n className=\"h-auto min-w-0 shrink-0 gap-element px-card-sm py-item-xs text-sm font-semibold\"\n >\n {hasMark && logoUrl && (\n <img\n src={logoUrl}\n alt={markCarriesName ? name : ''}\n aria-hidden={markCarriesName ? undefined : 'true'}\n onError={onMarkError}\n className={markCarriesName ? 'h-6 w-auto' : 'size-6 shrink-0 object-contain'}\n />\n )}\n {showNameText && <span className=\"truncate\">{name}</span>}\n </Button>\n );\n };\n\n const renderMenubarItems = () => {\n if (items.length === 0) {\n return null;\n }\n\n const renderedGroups = new Set<string>();\n\n return (\n <div className=\"flex items-center gap-item-xs min-w-0\">\n {items.map(item => {\n if (!item.group) {\n return (\n <Button\n key={item.id}\n type=\"button\"\n onClick={item.onExecute}\n variant={ButtonVariants_Variant.GHOST}\n aria-current={item.isActive ? 'page' : undefined}\n data-active={item.isActive || undefined}\n data-nav-item-id={item.id}\n className={cn('h-auto gap-element px-card-sm py-item-xs text-sm font-medium', itemStateClasses)}\n >\n {item.icon && <span className=\"shrink-0\">{item.icon}</span>}\n <span className=\"truncate\">{item.label}</span>\n </Button>\n );\n }\n\n if (renderedGroups.has(item.group)) {\n return null;\n }\n\n renderedGroups.add(item.group);\n const groupItems = groupedItems.get(item.group) ?? [];\n\n return (\n <Menubar\n key={item.group}\n className=\"h-auto gap-item-xs rounded-none border-0 bg-transparent p-0 shadow-none\"\n >\n <Menubar.Menu>\n {/*\n The group identifier AS AUTHORED. It used to be humanized into English here —\n `billingSettings` rendered as \"Billing Settings\" — which is display text produced\n by code: untranslatable, invisible to whoever owns the product's wording, and wrong\n on every acronym (`GDPR` became \"Gdpr\"). The identifier is what the application\n declared, so showing it unchanged is honest and makes an unlabelled group visibly\n unlabelled. Giving this trigger a label lookup is owed and needs a key per group.\n */}\n <Menubar.Trigger>{item.group}</Menubar.Trigger>\n <Menubar.Content>\n {groupItems.map(groupItem => (\n <Menubar.Item\n key={groupItem.id}\n onSelect={groupItem.onExecute}\n aria-current={groupItem.isActive ? 'page' : undefined}\n data-active={groupItem.isActive || undefined}\n data-nav-item-id={groupItem.id}\n >\n {groupItem.icon && <span className=\"shrink-0\">{groupItem.icon}</span>}\n <span className=\"truncate\">{groupItem.label}</span>\n </Menubar.Item>\n ))}\n </Menubar.Content>\n </Menubar.Menu>\n </Menubar>\n );\n })}\n </div>\n );\n };\n\n // ===================================================================\n // Render\n // ===================================================================\n\n return (\n <Surface\n asChild\n emitPolicyVars={false}\n variant={menubarConfig.isOverlay ? SurfaceVariant.OVERLAY : SurfaceVariant.SUNKEN}\n >\n <div\n data-component-area=\"menubar\"\n data-component-type={ApplicationLevelComponentType.MENUBAR}\n data-menubar-mode={menubarConfig.mode}\n data-frontend-service-name={envLoader.loadEnvironmentConfig().frontendServiceName}\n data-viewport={currentBreakpoint}\n role=\"banner\"\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'menubarLabel')}\n className={cn(\n isContinuousShell\n ? 'bg-transparent text-foreground'\n : 'bg-surface-sunken text-surface-sunken-foreground border-b border-surface-sunken-border',\n menubarConfig.isOverlay && cn('absolute top-0 inset-inline-start-0 inset-inline-end-0 z-(--z-overlay)', overlayRecipe.base),\n menubarConfig.showMobileLayout ? 'px-card-sm py-item-xs' : 'px-card py-card-sm',\n )}\n >\n {/*\n * Three-zone bar as a GRID, not a flex sandwich. `flex-1 justify-center`\n * centered the MIDDLE zone within the RESIDUAL space between the two\n * side groups, so whenever START and END had different widths (the\n * normal case — END carries bell + avatar while START may be empty at a\n * root route) the \"centered\" content drifted off the bar's true center\n * by (start − end)/2, and the drift changed as breakpoint-gated\n * components appeared. `1fr auto 1fr` anchors the MIDDLE column to the\n * bar's center whenever space allows, and degrades by pushing (never\n * overlapping) when a side group genuinely needs more than half the\n * remaining width.\n */}\n {/*\n * The bar has NO fixed height — only padding — and it is an intrinsic\n * flex item in the shell's `flex flex-col` column whose content area\n * takes `flex-1`. So it GROWS to fit its tallest hosted control (a\n * quick switcher declaring `LABEL_ABOVE` renders a stacked label ~63px\n * tall) and the content area shrinks by exactly that much; `items-center`\n * re-centres every shorter sibling in the taller row rather than\n * top-aligning them. Do not pin a height here to \"stabilise\" the bar:\n * that would clip the taller control instead of hosting it.\n */}\n <div className=\"grid w-full grid-cols-[1fr_auto_1fr] items-center\">\n <div className=\"flex items-center gap-item-xs justify-self-start\">\n {isSidebarDrawerMode && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n onClick={() => emit(FrontendEvents.HOTKEY_SIDEBAR_TOGGLE, {})}\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'toggleSidebar')}\n data-component-type=\"sidebar-drawer-trigger\"\n className=\"h-auto shrink-0 px-card-sm py-item-xs\"\n >\n {renderIcon(StandardIconReference.MENU, { size: IconSize.SM })}\n </Button>\n )}\n {renderBrandHeader()}\n {renderConfigComponents(HorizontalPlacement.START)}\n </div>\n\n <div className=\"flex items-center gap-item-xs min-w-0 px-item-xs\">\n {renderConfigComponents(HorizontalPlacement.MIDDLE)}\n {renderMenubarItems()}\n </div>\n\n <div className=\"flex items-center gap-item-xs justify-self-end\">\n {renderConfigComponents(HorizontalPlacement.END)}\n </div>\n </div>\n\n {children && (\n <div className={cn('px-card py-card-sm', !isContinuousShell && 'border-t border-surface-sunken-border')}>\n {children}\n </div>\n )}\n </div>\n </Surface>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menubar.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"menubar.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAO7C,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAI9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-back.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"navigation-back.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAExF,eAAO,MAAM,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAiDxG,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';
|
|
3
|
+
import { NavigationZoneName } from '@wildo-ai/saas-models';
|
|
3
4
|
import { useI18n, useIconRegistry, useNavigationController, useNavigationState, resolveApplicationLevelNavigationBackZone, StandardIconReference, IconSize, Button, ButtonVariants_Variant, } from '@wildo-ai/saas-frontend-lib';
|
|
4
5
|
export const ApplicationLevelPreset_NavigationBack_Default = ({ navigationZone,
|
|
5
6
|
// V-7: drop the raw `hover:bg-muted` default — the Button GHOST recipe owns
|
|
@@ -12,13 +13,20 @@ className, ariaLabel, }) => {
|
|
|
12
13
|
const { focusedZone } = useNavigationState();
|
|
13
14
|
const { goBack, canGoBack } = useNavigationController();
|
|
14
15
|
const resolvedZone = resolveApplicationLevelNavigationBackZone(navigationZone, focusedZone);
|
|
15
|
-
|
|
16
|
+
/*
|
|
17
|
+
* In the PRIMARY zone there is nothing to walk back to below the first entry, so the control
|
|
18
|
+
* hides. In an ADJACENT zone — a hosted pane beside a page — a single entry is still something to
|
|
19
|
+
* leave: `goBack` on a zone with nothing beneath is the controller's own way of closing it, and
|
|
20
|
+
* without this branch a one-entry pane had no close control at all (the workbench's conversation
|
|
21
|
+
* found it, 2026-09-22). The label stays "back": the gesture returns the page to what it was.
|
|
22
|
+
*/
|
|
23
|
+
if (!canGoBack(resolvedZone) && resolvedZone === NavigationZoneName.PRIMARY) {
|
|
16
24
|
return null;
|
|
17
25
|
}
|
|
18
26
|
if (!isReady)
|
|
19
27
|
return null;
|
|
20
28
|
const backIcon = renderIcon(StandardIconReference.BACK, { size: IconSize.SM });
|
|
21
29
|
const label = ariaLabel || tComponent(FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK, 'back');
|
|
22
|
-
return (_jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, size: ButtonSize.ICON_SM, onClick: () => goBack(resolvedZone), className: className, "aria-label": label, children: backIcon }));
|
|
30
|
+
return (_jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, size: ButtonSize.ICON_SM, onClick: () => goBack(resolvedZone), className: className, "aria-label": label, "data-navigation-back": resolvedZone, children: backIcon }));
|
|
23
31
|
};
|
|
24
32
|
//# sourceMappingURL=navigation-back.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-back.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EACL,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,yCAAyC,EACzC,qBAAqB,EAAE,QAAQ,EAC/B,MAAM,EAAE,sBAAsB,GAC/B,MAAM,6BAA6B,CAAC;AAIrC,MAAM,CAAC,MAAM,6CAA6C,GAAmD,CAAC,EAC5G,cAAc;AACd,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,+CAA+C;AAC/C,SAAS,EACT,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAChH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,yCAAyC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE5F,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation-back.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,yCAAyC,EACzC,qBAAqB,EAAE,QAAQ,EAC/B,MAAM,EAAE,sBAAsB,GAC/B,MAAM,6BAA6B,CAAC;AAIrC,MAAM,CAAC,MAAM,6CAA6C,GAAmD,CAAC,EAC5G,cAAc;AACd,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,+CAA+C;AAC/C,SAAS,EACT,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAChH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,yCAAyC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE5F;;;;;;OAMG;IACH,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,QAAQ,GAAG,UAAU,CACzB,qBAAqB,CAAC,IAAI,EAC1B,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,CAAC;IAEF,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC,qBAAqB,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAEvG,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EACnC,SAAS,EAAE,SAAS,gBACR,KAAK,0BAEK,YAAY,YAEjC,QAAQ,GACF,CACV,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\nimport { NavigationZoneName } from '@wildo-ai/saas-models';\nimport {\n useI18n,\n useIconRegistry,\n useNavigationController,\n useNavigationState,\n resolveApplicationLevelNavigationBackZone,\n StandardIconReference, IconSize,\n Button, ButtonVariants_Variant,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport type { ApplicationLevelProps_NavigationBack } from '@wildo-ai/saas-frontend-lib';\n\nexport const ApplicationLevelPreset_NavigationBack_Default: React.FC<ApplicationLevelProps_NavigationBack> = ({\n navigationZone,\n // V-7: drop the raw `hover:bg-muted` default — the Button GHOST recipe owns\n // the hover/focus/active treatment (theme-aware, focus-ring honored). Pass-\n // through `className` is still respected for downstream layout overrides\n // but the default is empty so the recipe wins.\n className,\n ariaLabel,\n}) => {\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK });\n const { renderIcon } = useIconRegistry();\n const { focusedZone } = useNavigationState();\n const { goBack, canGoBack } = useNavigationController();\n const resolvedZone = resolveApplicationLevelNavigationBackZone(navigationZone, focusedZone);\n\n /*\n * In the PRIMARY zone there is nothing to walk back to below the first entry, so the control\n * hides. In an ADJACENT zone — a hosted pane beside a page — a single entry is still something to\n * leave: `goBack` on a zone with nothing beneath is the controller's own way of closing it, and\n * without this branch a one-entry pane had no close control at all (the workbench's conversation\n * found it, 2026-09-22). The label stays \"back\": the gesture returns the page to what it was.\n */\n if (!canGoBack(resolvedZone) && resolvedZone === NavigationZoneName.PRIMARY) {\n return null;\n }\n\n if (!isReady) return null;\n\n const backIcon = renderIcon(\n StandardIconReference.BACK,\n { size: IconSize.SM }\n );\n\n const label = ariaLabel || tComponent(FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK, 'back');\n\n return (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.ICON_SM}\n onClick={() => goBack(resolvedZone)}\n className={className}\n aria-label={label}\n /* An automation hook, i18n-independent, like `data-nav-item-id` on the sidebar: the zone this control walks back. */\n data-navigation-back={resolvedZone}\n >\n {backIcon}\n </Button>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-back.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"navigation-back.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,oCAAoC,EAAE,mBAAmB,EAErE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAgBL,wCAAwC,EACzC,MAAM,6BAA6B,CAAC;AA2BrC,eAAO,MAAM,iDAAiD,EAAE,KAAK,CAAC,EAAE,CAAC,wCAAwC,CA0NhH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-center.js","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ButtonSize, FrontendComponentType, HorizontalPlacement, InteractiveVariant, PlacementSide, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HorizontalAlign } from '@wildo-ai/zod-decorators';\n\nimport {\n resolveComponentLabel,\n useI18n,\n useIconRegistry,\n useNotificationCenterBehavior,\n IconSize,\n StandardIconReference,\n useUI,\n Button,\n ButtonVariants_Variant,\n Popover,\n PopoverContent,\n PopoverTrigger,\n ScrollArea,\n cn,\n Surface,\n ApplicationLevelProps_NotificationCenter,\n} from '@wildo-ai/saas-frontend-lib';\n\nfunction getNotificationTypeColorClass(type: 'success' | 'warning' | 'error' | 'info'): string {\n switch (type) {\n case 'success': return 'text-success';\n case 'warning': return 'text-warning';\n case 'error': return 'text-destructive';\n case 'info':\n default: return 'text-info';\n }\n}\n\nfunction getPopoverPlacement(\n placement?: ApplicationLevelProps_NotificationCenter['placement'],\n): { align: HorizontalAlign; side: PlacementSide } {\n switch (placement) {\n case HorizontalPlacement.START:\n return { align: HorizontalAlign.START, side: PlacementSide.BOTTOM };\n case VerticalPlacement.BOTTOM:\n return { align: HorizontalAlign.END, side: PlacementSide.TOP };\n case VerticalPlacement.TOP:\n case HorizontalPlacement.END:\n default:\n return { align: HorizontalAlign.END, side: PlacementSide.BOTTOM };\n }\n}\n\nexport const ApplicationLevelPreset_NotificationCenter_Default: React.FC<ApplicationLevelProps_NotificationCenter> = ({\n placement,\n isOpen: externalIsOpen,\n onOpenChange,\n listenForHotkeys,\n}) => {\n const behavior = useNotificationCenterBehavior(externalIsOpen, onOpenChange, { listenForHotkeys });\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n });\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);\n\n /*\n * A SESSION FEED, not a message history (#412).\n *\n * The filter tabs, the mark-all-read control, the unread emphasis and the today/yesterday/older\n * grouping were removed on 2026-09-08. Every one of them presented a history over a store that is a\n * `useReducer` with no hydration: it starts empty on each page load, so \"unread\" meant \"arrived\n * since you opened the tab\", marking something read died with the page, and the `older` group was\n * unreachable by construction.\n */\n const {\n isOpen,\n setIsOpen,\n sessionNotifications,\n notificationCount,\n handleClearAll,\n dismissNotification,\n } = behavior;\n\n // ===================================================================\n // I18n Labels\n // ===================================================================\n\n // I-7: no English fallbacks — missing keys surface as `components.<type>.<key>`\n // for translation debugging (intentional, framework-wide i18n discipline).\n const t = (key: string): string => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n key,\n });\n const titleLabel = t('title');\n /*\n * Says the feed is empty because the page just loaded, not that nothing has happened (#412). The\n * distinction matters: a person who left a tab open, reloaded, and now sees \"No notifications\"\n * would reasonably conclude the system had been quiet.\n */\n const noNotificationsLabel = t('noNotificationsThisSession');\n const clearAllLabel = t('clearAll');\n const dismissLabel = t('dismiss');\n const popoverPlacement = getPopoverPlacement(placement);\n\n // ===================================================================\n // Icons\n // ===================================================================\n\n const bellIcon = renderIcon(\n StandardIconReference.NOTIFICATION,\n { size: IconSize.MD }\n );\n\n const dismissIcon = renderIcon(\n StandardIconReference.CLOSE,\n { size: IconSize.XS }\n );\n\n // ===================================================================\n // Render Notification Item\n // ===================================================================\n\n const renderNotificationItem = (notification: typeof sessionNotifications[number]) => {\n const typeIcon = renderIcon(\n notification.iconReference,\n { size: IconSize.SM }\n );\n const rowLabel = notification.displayTitle || 'Notification';\n\n return (\n <Surface key={notification.id} asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n className={cn(\n 'group flex items-start gap-field-sm rounded-lg p-card-sm',\n ghostRecipe.motion.transition,\n ghostRecipe.states.hover,\n )}\n >\n {/* Type Icon */}\n <div className={`flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`}>\n {typeIcon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-start justify-between gap-element\">\n {/*\n * A DIV, not a button. The row's only action was `handleNotificationClick`, whose sole\n * effect was marking it read — so once read state went, a button here would announce an\n * interactive control to a screen reader and then do nothing. The dismiss control and\n * the optional next-step button beside it remain the row's real actions.\n */}\n <div className=\"min-w-0 flex-1 text-start\">\n <p className=\"text-sm font-medium text-foreground\">\n {notification.displayTitle}\n </p>\n {notification.displayMessage && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {notification.displayMessage}\n </p>\n )}\n <p className=\"mt-item-xs text-xs text-muted-foreground\">\n {notification.relativeTimeLabel}\n </p>\n </div>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => dismissNotification(notification.id)}\n className=\"h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100\"\n aria-label={dismissLabel}\n >\n {dismissIcon}\n </Button>\n </div>\n {notification.nextStep && (\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={() => {\n setIsOpen(false);\n notification.nextStep?.onClick();\n }}\n className=\"mt-item-xs\"\n >\n {notification.nextStep.label}\n </Button>\n )}\n </div>\n\n </div>\n </Surface>\n );\n };\n\n // ===================================================================\n // Render Notification Group\n // ===================================================================\n\n // ===================================================================\n // Render\n // ===================================================================\n\n if (!isReady) return null;\n\n return (\n <div data-component-type=\"notification-center\">\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"relative\"\n aria-label={titleLabel}\n >\n {bellIcon}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n align={popoverPlacement.align}\n side={popoverPlacement.side}\n className=\"w-80 p-0\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-card-sm border-b\">\n <h3 className=\"font-semibold\">\n {titleLabel}\n </h3>\n <div className=\"flex items-center gap-item-xs\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={handleClearAll}\n disabled={notificationCount === 0}\n >\n {clearAllLabel}\n </Button>\n </div>\n </div>\n\n {/* Notifications list */}\n <ScrollArea className=\"h-[400px]\">\n <div className=\"p-card-sm space-y-field-sm\">\n {sessionNotifications.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-section-xl text-center\">\n <div className=\"text-muted-foreground mb-element\">\n {renderIcon(\n StandardIconReference.MAIL,\n { size: IconSize.LG }\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {noNotificationsLabel}\n </p>\n </div>\n ) : (\n /* Flat, newest first. Nothing to group by: the buffer has no yesterday. */\n <div className=\"space-y-item-xs\">\n {sessionNotifications.map(renderNotificationItem)}\n </div>\n )}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"notification-center.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ButtonSize, FrontendComponentType, HorizontalPlacement, InteractiveVariant, PlacementSide, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HorizontalAlign } from '@wildo-ai/zod-decorators';\n\nimport {\n resolveComponentLabel,\n useI18n,\n useIconRegistry,\n useNotificationCenterBehavior,\n IconSize,\n StandardIconReference,\n useUI,\n Button,\n ButtonVariants_Variant,\n Popover,\n PopoverContent,\n PopoverTrigger,\n ScrollArea,\n cn,\n Surface,\n ApplicationLevelProps_NotificationCenter,\n} from '@wildo-ai/saas-frontend-lib';\n\nfunction getNotificationTypeColorClass(type: 'success' | 'warning' | 'error' | 'info'): string {\n switch (type) {\n case 'success': return 'text-success';\n case 'warning': return 'text-warning';\n case 'error': return 'text-destructive';\n case 'info':\n default: return 'text-info';\n }\n}\n\nfunction getPopoverPlacement(\n placement?: ApplicationLevelProps_NotificationCenter['placement'],\n): { align: HorizontalAlign; side: PlacementSide } {\n switch (placement) {\n case HorizontalPlacement.START:\n return { align: HorizontalAlign.START, side: PlacementSide.BOTTOM };\n case VerticalPlacement.BOTTOM:\n return { align: HorizontalAlign.END, side: PlacementSide.TOP };\n case VerticalPlacement.TOP:\n case HorizontalPlacement.END:\n default:\n return { align: HorizontalAlign.END, side: PlacementSide.BOTTOM };\n }\n}\n\nexport const ApplicationLevelPreset_NotificationCenter_Default: React.FC<ApplicationLevelProps_NotificationCenter> = ({\n placement,\n isOpen: externalIsOpen,\n onOpenChange,\n listenForHotkeys,\n}) => {\n const behavior = useNotificationCenterBehavior(externalIsOpen, onOpenChange, { listenForHotkeys });\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n });\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);\n\n /*\n * A SESSION FEED, not a message history (#412).\n *\n * The filter tabs, the mark-all-read control, the unread emphasis and the today/yesterday/older\n * grouping were removed on 2026-09-08. Every one of them presented a history over a store that is a\n * `useReducer` with no hydration: it starts empty on each page load, so \"unread\" meant \"arrived\n * since you opened the tab\", marking something read died with the page, and the `older` group was\n * unreachable by construction.\n */\n const {\n isOpen,\n setIsOpen,\n sessionNotifications,\n notificationCount,\n handleClearAll,\n dismissNotification,\n } = behavior;\n\n // ===================================================================\n // I18n Labels\n // ===================================================================\n\n // I-7: no English fallbacks — missing keys surface as `components.<type>.<key>`\n // for translation debugging (intentional, framework-wide i18n discipline).\n const t = (key: string): string => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n key,\n });\n const titleLabel = t('title');\n /*\n * Says the feed is empty because the page just loaded, not that nothing has happened (#412). The\n * distinction matters: a person who left a tab open, reloaded, and now sees \"No notifications\"\n * would reasonably conclude the system had been quiet.\n */\n const noNotificationsLabel = t('noNotificationsThisSession');\n const clearAllLabel = t('clearAll');\n const dismissLabel = t('dismiss');\n const popoverPlacement = getPopoverPlacement(placement);\n\n // ===================================================================\n // Icons\n // ===================================================================\n\n const bellIcon = renderIcon(\n StandardIconReference.NOTIFICATION,\n { size: IconSize.MD }\n );\n\n const dismissIcon = renderIcon(\n StandardIconReference.CLOSE,\n { size: IconSize.XS }\n );\n\n // ===================================================================\n // Render Notification Item\n // ===================================================================\n\n const renderNotificationItem = (notification: typeof sessionNotifications[number]) => {\n const typeIcon = renderIcon(\n notification.iconReference,\n { size: IconSize.SM }\n );\n const rowLabel = notification.displayTitle || 'Notification';\n\n return (\n <Surface key={notification.id} asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n className={cn(\n 'group flex items-start gap-field-sm rounded-lg p-card-sm',\n ghostRecipe.motion.transition,\n ghostRecipe.states.hover,\n )}\n >\n {/* Type Icon */}\n <div className={`flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`}>\n {typeIcon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-start justify-between gap-element\">\n {/*\n * A DIV, not a button. The row's only action was `handleNotificationClick`, whose sole\n * effect was marking it read — so once read state went, a button here would announce an\n * interactive control to a screen reader and then do nothing. The dismiss control and\n * the optional next-step button beside it remain the row's real actions.\n */}\n <div className=\"min-w-0 flex-1 text-start\">\n <p className=\"text-sm font-medium text-foreground\">\n {notification.displayTitle}\n </p>\n {notification.displayMessage && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {notification.displayMessage}\n </p>\n )}\n <p className=\"mt-item-xs text-xs text-muted-foreground\">\n {notification.relativeTimeLabel}\n </p>\n </div>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => dismissNotification(notification.id)}\n className=\"h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100\"\n aria-label={dismissLabel}\n >\n {dismissIcon}\n </Button>\n </div>\n {notification.nextStep && (\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={() => {\n setIsOpen(false);\n notification.nextStep?.onClick();\n }}\n className=\"mt-item-xs\"\n >\n {notification.nextStep.label}\n </Button>\n )}\n </div>\n\n </div>\n </Surface>\n );\n };\n\n // ===================================================================\n // Render Notification Group\n // ===================================================================\n\n // ===================================================================\n // Render\n // ===================================================================\n\n if (!isReady) return null;\n\n return (\n <div data-component-type=\"notification-center\">\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"relative\"\n aria-label={titleLabel}\n >\n {bellIcon}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n align={popoverPlacement.align}\n side={popoverPlacement.side}\n className=\"w-80 p-0\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-card-sm border-b\">\n <h3 className=\"font-semibold\">\n {titleLabel}\n </h3>\n <div className=\"flex items-center gap-item-xs\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={handleClearAll}\n disabled={notificationCount === 0}\n >\n {clearAllLabel}\n </Button>\n </div>\n </div>\n\n {/* Notifications list */}\n <ScrollArea className=\"h-[400px]\">\n <div className=\"p-card-sm space-y-field-sm\">\n {sessionNotifications.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-section-xl text-center\">\n <div className=\"text-muted-foreground mb-element\">\n {renderIcon(\n StandardIconReference.MAIL,\n { size: IconSize.LG }\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {noNotificationsLabel}\n </p>\n </div>\n ) : (\n /* Flat, newest first. Nothing to group by: the buffer has no yesterday. */\n <div className=\"space-y-item-xs\">\n {sessionNotifications.map(renderNotificationItem)}\n </div>\n )}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-center.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"notification-center.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,wCAAwC,EAAE,mBAAmB,EAyEzE,CAAC"}
|
|
@@ -41,6 +41,21 @@ export const ApplicationLevelNotificationCenterLabels = [
|
|
|
41
41
|
kind: LabelKind.MESSAGE,
|
|
42
42
|
purpose: 'Last-resort body for a success notification with no explicit message',
|
|
43
43
|
},
|
|
44
|
+
{
|
|
45
|
+
ref: 'bulkSucceeded',
|
|
46
|
+
kind: LabelKind.MESSAGE,
|
|
47
|
+
purpose: 'Body of the success notification after an action applied to several selected items at once: states how many items it was done for',
|
|
48
|
+
params: [{ key: 'count', meaning: 'how many items the action changed' }],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
ref: 'bulkSucceededWithMessage',
|
|
52
|
+
kind: LabelKind.MESSAGE,
|
|
53
|
+
purpose: 'Body of the success notification after an action applied to several selected items at once, when the action already has a message of its own: keeps those words and states how many items they held for',
|
|
54
|
+
params: [
|
|
55
|
+
{ key: 'message', meaning: "the action's own success message, as it would read for a single item" },
|
|
56
|
+
{ key: 'count', meaning: 'how many items the action changed' },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
44
59
|
{ ref: 'defaultInfo', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an info notification with no explicit message' },
|
|
45
60
|
{
|
|
46
61
|
ref: 'defaultWarning',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-center.labels.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"notification-center.labels.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n FrontendComponentType,\n LabelKind,\n type LabellingUnitaryDef,\n registerComponentLabels,\n} 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 ApplicationLevelNotificationCenterLabels: LabellingUnitaryDef[] = [\n { ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the notification-center panel' },\n /*\n * The empty state names WHY it is empty (#412). The centre is a session feed over a store with no\n * persistence, so it is empty on every page load; the retired `noNotifications` said \"no\n * notifications\", which a person who had just reloaded would read as \"nothing has happened\".\n */\n {\n ref: 'noNotificationsThisSession',\n kind: LabelKind.EMPTY_STATE,\n purpose: 'Shown when nothing has arrived since this page loaded. The notification centre is a session feed, not a history: it starts empty on every page load and holds only what arrived while this page has been open. The wording must make that clear rather than implying the system has been quiet.',\n },\n { ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the session feed' },\n { ref: 'dismiss', kind: LabelKind.BUTTON, purpose: 'Action that dismisses a single notification' },\n { ref: 'showMore', kind: LabelKind.BUTTON, purpose: 'Button that reveals additional notifications' },\n { ref: 'timeJustNow', kind: LabelKind.LABEL, purpose: 'Relative timestamp for notifications less than a minute old' },\n {\n ref: 'timeMinutesAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many minutes ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of minutes elapsed' }],\n },\n {\n ref: 'timeHoursAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many hours ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of hours elapsed' }],\n },\n {\n ref: 'timeDaysAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many days ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of days elapsed' }],\n },\n {\n ref: 'defaultSuccess',\n kind: LabelKind.MESSAGE,\n purpose: 'Last-resort body for a success notification with no explicit message',\n },\n {\n ref: 'bulkSucceeded',\n kind: LabelKind.MESSAGE,\n purpose: 'Body of the success notification after an action applied to several selected items at once: states how many items it was done for',\n params: [{ key: 'count', meaning: 'how many items the action changed' }],\n },\n {\n ref: 'bulkSucceededWithMessage',\n kind: LabelKind.MESSAGE,\n purpose: 'Body of the success notification after an action applied to several selected items at once, when the action already has a message of its own: keeps those words and states how many items they held for',\n params: [\n { key: 'message', meaning: \"the action's own success message, as it would read for a single item\" },\n { key: 'count', meaning: 'how many items the action changed' },\n ],\n },\n { ref: 'defaultInfo', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an info notification with no explicit message' },\n {\n ref: 'defaultWarning',\n kind: LabelKind.MESSAGE,\n purpose: 'Last-resort body for a warning notification with no explicit message',\n },\n { ref: 'defaultError', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an error notification with no explicit message' },\n {\n ref: 'resourceNotificationTitle',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback title for a notification generated by a resource operation',\n params: [{ key: 'resourceType', meaning: 'resource type the notification concerns' }],\n },\n {\n ref: 'resourceNotificationMessage',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback body for a notification generated by a resource operation',\n params: [{ key: 'operation', meaning: 'operation that triggered the notification' }],\n },\n];\nregisterComponentLabels(FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER, ApplicationLevelNotificationCenterLabels);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-action-button.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"quick-action-button.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAYL,uCAAuC,EACxC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,gDAAgD,EAAE,KAAK,CAAC,EAAE,CAAC,uCAAuC,CAkI9G,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-action-button.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"quick-action-button.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-action-button.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,uCAAuC,EAAE,mBAAmB,EAQxE,CAAC"}
|
|
@@ -6,6 +6,10 @@ export const ApplicationLevelQuickActionButtonLabels = [
|
|
|
6
6
|
{ ref: 'quickActions', kind: LabelKind.HEADING, purpose: 'Heading for the quick-actions menu opened from the action button' },
|
|
7
7
|
{ ref: 'createNew', kind: LabelKind.BUTTON, purpose: 'Primary quick-action that starts creating a new item' },
|
|
8
8
|
{ ref: 'noActions', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when no quick actions are configured' },
|
|
9
|
+
// Read by the component and declared NOWHERE until 2026-09-19, so the browser rendered the raw
|
|
10
|
+
// key path. Found by `pnpm check:component-labels`, which is the mechanism that replaced
|
|
11
|
+
// noticing it by eye.
|
|
12
|
+
{ ref: 'loading', kind: LabelKind.MESSAGE, purpose: 'Shown in the quick-action menu while the available actions are still being resolved' },
|
|
9
13
|
];
|
|
10
14
|
registerComponentLabels(FrontendComponentType.APPLICATION_LEVEL_QUICK_ACTION_BUTTON, ApplicationLevelQuickActionButtonLabels);
|
|
11
15
|
//# sourceMappingURL=quick-action-button.labels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-action-button.labels.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-action-button.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,SAAS,EAET,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uCAAuC,GAA0B;IAC5E,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,kEAAkE,EAAE;IAC7H,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,sDAAsD,EAAE;IAC7G,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,4CAA4C,EAAE;
|
|
1
|
+
{"version":3,"file":"quick-action-button.labels.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-action-button.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,SAAS,EAET,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uCAAuC,GAA0B;IAC5E,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,kEAAkE,EAAE;IAC7H,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,sDAAsD,EAAE;IAC7G,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,4CAA4C,EAAE;IACxG,+FAA+F;IAC/F,yFAAyF;IACzF,sBAAsB;IACtB,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,qFAAqF,EAAE;CAC5I,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,qCAAqC,EAAE,uCAAuC,CAAC,CAAC","sourcesContent":["import {\n FrontendComponentType,\n LabelKind,\n type LabellingUnitaryDef,\n registerComponentLabels,\n} 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 ApplicationLevelQuickActionButtonLabels: LabellingUnitaryDef[] = [\n { ref: 'quickActions', kind: LabelKind.HEADING, purpose: 'Heading for the quick-actions menu opened from the action button' },\n { ref: 'createNew', kind: LabelKind.BUTTON, purpose: 'Primary quick-action that starts creating a new item' },\n { ref: 'noActions', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when no quick actions are configured' },\n // Read by the component and declared NOWHERE until 2026-09-19, so the browser rendered the raw\n // key path. Found by `pnpm check:component-labels`, which is the mechanism that replaced\n // noticing it by eye.\n { ref: 'loading', kind: LabelKind.MESSAGE, purpose: 'Shown in the quick-action menu while the available actions are still being resolved' },\n];\nregisterComponentLabels(FrontendComponentType.APPLICATION_LEVEL_QUICK_ACTION_BUTTON, ApplicationLevelQuickActionButtonLabels);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-switcher.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"quick-switcher.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-switcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAkB1D,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,6BAA6B,CAAC;AAGvF,eAAO,MAAM,4CAA4C,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAqJtG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-switcher.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"quick-switcher.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-switcher.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,mCAAmC,EAAE,mBAAmB,EAOpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAOL,6BAA6B,EA8B9B,MAAM,6BAA6B,CAAC;AAerC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAy6B1F,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { BrandAssetComposition } from '@wildo-ai/saas-models';
|
|
4
3
|
import { ButtonSize, CorePresetNames, FrontendComponentType, HorizontalPlacement, PlacementSide, SelectableVariant, ShellAppearance, SidebarCompactLabelMode, SurfaceVariant, UIBehavior, VerticalPlacement, resolvePlacementSideToRadix } from '@wildo-ai/presets-components-models';
|
|
5
|
-
import { SidebarSectionInlineCreate, SidebarSectionContentKind, ApplicationLevelComponentType, Button, ButtonVariants_Variant, InputRoot, ScrollArea, ScrollAreaType, Collapsible, CollapsibleContent, CollapsibleTrigger, useI18n, IconSize, StandardIconReference, NavigationItemBadge, useIconRegistry, useUI, useHostedComponentInteractions, TruncatedText, useSidebarBehavior, SidebarHomeDisplayMode, Sheet, SheetContent, SheetTitle, SidebarResourceBrowser, ComponentRegistryService, envLoader, cn, NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
4
|
+
import { SidebarSectionInlineCreate, SidebarSectionContentKind, ApplicationLevelComponentType, Button, ButtonVariants_Variant, InputRoot, ScrollArea, ScrollAreaType, Collapsible, CollapsibleContent, CollapsibleTrigger, useI18n, IconSize, StandardIconReference, NavigationItemBadge, useIconRegistry, useUI, useHostedComponentInteractions, TruncatedText, useSidebarBehavior, useBrandPresentation, SidebarHomeDisplayMode, Sheet, SheetContent, SheetTitle, SidebarResourceBrowser, ComponentRegistryService, envLoader, cn, NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
6
5
|
/**
|
|
7
6
|
* Which single home affordance each mode renders — the mutual exclusion as
|
|
8
7
|
* DATA, so a future `SidebarHomeDisplayMode` member cannot compile without
|
|
@@ -44,14 +43,16 @@ export const ApplicationLevelPreset_Sidebar_Default = ({ placement = HorizontalP
|
|
|
44
43
|
// Compact rail: section titles are hidden, so group boundaries are drawn as
|
|
45
44
|
// thin separator lines instead (theme DIVIDER recipe — stays themable).
|
|
46
45
|
const dividerRecipe = getRecipe(UIBehavior.DIVIDER);
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
// The four decisions a surface must take before it may DRAW a brand identity — a failed asset
|
|
47
|
+
// load degrading to the no-mark presentation, the latch resetting on a light/dark URL change, a
|
|
48
|
+
// WORDMARK/LOCKUP replacing the name label rather than sitting beside it, and an identity with
|
|
49
|
+
// neither mark nor name rendering nothing. They are rules about the DATA, so they live once in
|
|
50
|
+
// `useBrandPresentation` and every surface that presents an identity reads the same answers
|
|
51
|
+
// (#215). What stays HERE is layout: the rail collapses and a login card does not.
|
|
52
|
+
//
|
|
53
|
+
// Called unconditionally, as a hook must be: `sb.brandHeader` is `undefined` in every home mode
|
|
54
|
+
// but BRAND_HEADER, and the hook answers `isEmpty` for that.
|
|
55
|
+
const brand = useBrandPresentation(sb.brandHeader);
|
|
55
56
|
const renderNavigationItem = (item, indent = 0) => {
|
|
56
57
|
// Identity-keyed active check (resolved item id, not raw path) — two distinct
|
|
57
58
|
// items sharing an identical urlPath must not both highlight; the behavior hook
|
|
@@ -117,21 +118,21 @@ export const ApplicationLevelPreset_Sidebar_Default = ({ placement = HorizontalP
|
|
|
117
118
|
if (HOME_AFFORDANCE_BY_MODE[sb.homeDisplayMode] !== 'brand-header' || !sb.brandHeader)
|
|
118
119
|
return null;
|
|
119
120
|
const homeLabel = tComponent(FrontendComponentType.APPLICATION_LEVEL_SIDEBAR, 'home');
|
|
120
|
-
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
// the name label instead of sitting beside it — and it needs intrinsic width
|
|
124
|
-
// rather than a square icon slot. Only a SYMBOL pairs with the text.
|
|
125
|
-
const hasLogo = !!logoUrl && !brandLogoFailed;
|
|
121
|
+
// `logoUrl` here is already gated on a usable mark — the hook returns `undefined` for a URL
|
|
122
|
+
// that 404'd, so there is no second failure check to keep in step.
|
|
123
|
+
const { name, logoUrl, hasMark, markCarriesName, onMarkError } = brand;
|
|
126
124
|
// Nothing identifiable to show (no name AND no usable mark) — render no
|
|
127
125
|
// header rather than a nameless, unlabelled click target.
|
|
128
|
-
if (
|
|
126
|
+
if (brand.isEmpty)
|
|
129
127
|
return null;
|
|
130
|
-
|
|
128
|
+
// A WORDMARK/LOCKUP asset already CONTAINS the application name, so it replaces the name label
|
|
129
|
+
// instead of sitting beside it, and it needs intrinsic width rather than a square icon slot.
|
|
130
|
+
// Only a SYMBOL pairs with the text.
|
|
131
|
+
//
|
|
131
132
|
// The collapsed rail is an icon column: a wide mark cannot render there, so
|
|
132
133
|
// it degrades to the framework home glyph exactly like a missing brand.
|
|
133
|
-
const showSquareMark =
|
|
134
|
-
const showWideMark =
|
|
134
|
+
const showSquareMark = hasMark && !markCarriesName;
|
|
135
|
+
const showWideMark = hasMark && markCarriesName && !sb.isCollapsed;
|
|
135
136
|
const showHomeGlyph = !showSquareMark && !showWideMark && sb.isCollapsed;
|
|
136
137
|
// The name renders as text unless the mark already spells it.
|
|
137
138
|
const showNameText = !sb.isCollapsed && !showWideMark;
|
|
@@ -143,7 +144,7 @@ export const ApplicationLevelPreset_Sidebar_Default = ({ placement = HorizontalP
|
|
|
143
144
|
// it as `alt`; the two text branches carry it directly. When none render —
|
|
144
145
|
// the logo-only rail — the button needs an explicit accessible name.
|
|
145
146
|
const nameIsAnnounced = showNameText || showCompactNameLabel || showWideMark;
|
|
146
|
-
const markImage = (className, alt) => (_jsx("img", { src: logoUrl, alt: alt, "aria-hidden": alt === '' ? 'true' : undefined, onError:
|
|
147
|
+
const markImage = (className, alt) => (_jsx("img", { src: logoUrl, alt: alt, "aria-hidden": alt === '' ? 'true' : undefined, onError: onMarkError, className: className }));
|
|
147
148
|
return (_jsxs("div", { className: cn('px-card-sm pt-card-sm pb-item-xs flex items-center gap-element',
|
|
148
149
|
// Rail: the mark alone, centred — the toggle lives at the bottom there.
|
|
149
150
|
sb.isCollapsed && 'justify-center'), children: [_jsxs(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: sb.handleHomeClick, "aria-current": sb.isHomeActive ? 'page' : undefined, "data-slot": "sidebar-brand-header", className: cn(
|
|
@@ -252,7 +253,7 @@ export const ApplicationLevelPreset_Sidebar_Default = ({ placement = HorizontalP
|
|
|
252
253
|
if (!section.collapsible || sb.isCollapsed) {
|
|
253
254
|
return (_jsxs("div", { className: "space-y-item-xs", children: [showLabel && !sb.isCollapsed && (_jsx("div", { className: "px-card-sm py-card-sm text-xs font-medium text-muted-foreground uppercase tracking-wider", children: getSectionLabel() })), renderSectionContent(group)] }, section.ref));
|
|
254
255
|
}
|
|
255
|
-
return (_jsxs(Collapsible, { open: !sectionCollapsed, onOpenChange: () => sb.
|
|
256
|
+
return (_jsxs(Collapsible, { open: !sectionCollapsed, onOpenChange: (nextOpen) => sb.handleSetSectionCollapsed(section.ref, !nextOpen), children: [showLabel && (_jsx(CollapsibleTrigger, { asChild: true, children: _jsxs(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, className: "w-full justify-between px-card-sm py-card-sm text-xs font-medium text-muted-foreground uppercase tracking-wider hover:text-foreground", children: [_jsx("span", { children: getSectionLabel() }), _jsx("span", { className: "flex-shrink-0", children: renderIcon(sectionCollapsed ? StandardIconReference.CHEVRON_RIGHT : StandardIconReference.CHEVRON_DOWN, { size: IconSize.XS }) })] }) })), _jsx(CollapsibleContent, { className: "space-y-item-xs", children: renderSectionContent(group) })] }, section.ref));
|
|
256
257
|
};
|
|
257
258
|
/**
|
|
258
259
|
* The rail-collapse toggle itself. A PANEL glyph, never a chevron: a chevron is
|
|
@@ -365,6 +366,21 @@ export const ApplicationLevelPreset_Sidebar_Default = ({ placement = HorizontalP
|
|
|
365
366
|
// the sidebar opens as a Sheet overlay instead. Radix supplies the backdrop
|
|
366
367
|
// (click-closes), Escape handling, focus trap and a close button. The trigger
|
|
367
368
|
// lives in the menubar (mobile-only burger) and speaks HOTKEY_SIDEBAR_TOGGLE.
|
|
369
|
+
/*
|
|
370
|
+
* Nothing until this component's own labels have loaded.
|
|
371
|
+
*
|
|
372
|
+
* `isReady` was read here and used NOWHERE, so the sidebar rendered its labels while they were
|
|
373
|
+
* still arriving and showed the raw key paths instead — `components.APPLICATION_LEVEL_SIDEBAR.loading`
|
|
374
|
+
* was seen on screen in the running Wonder Todos, in the loading line that exists to reassure
|
|
375
|
+
* somebody during exactly that window. The labels are not MISSING (they are generated in every
|
|
376
|
+
* catalog); they are not there YET, which is what readiness answers and what
|
|
377
|
+
* `.claude/rules/display-text-comes-from-i18n.md` prescribes for the loading window.
|
|
378
|
+
*
|
|
379
|
+
* Blank rather than a skeleton, matching the other presets in this directory: the shell around it
|
|
380
|
+
* renders, and the sidebar appears with its words the moment they land.
|
|
381
|
+
*/
|
|
382
|
+
if (!isReady)
|
|
383
|
+
return null;
|
|
368
384
|
if (sb.isMobileDrawerMode) {
|
|
369
385
|
const dir = (typeof document !== 'undefined' ? document.documentElement?.dir : undefined) || 'ltr';
|
|
370
386
|
const drawerSide = resolvePlacementSideToRadix(sb.placement === HorizontalPlacement.START ? PlacementSide.START : PlacementSide.END, dir);
|