@wildo-ai/presets-components 1.1.2 → 1.1.4
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/.native.tsbuildinfo +1 -0
- package/dist/esm/components/actions/action-bar.d.ts.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.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.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.labels.d.ts.map +1 -1
- 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.d.ts +41 -6
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js +37 -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.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.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/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.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent.js +23 -3
- 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/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.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-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/public-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.js +1 -1
- 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/billing/billing-format.utils.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.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.labels.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
- 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.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 +20 -1
- 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.labels.d.ts.map +1 -1
- 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.labels.d.ts.map +1 -1
- 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.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.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.labels.d.ts.map +1 -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.labels.d.ts.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.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.labels.d.ts.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.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.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/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/notification-indicator.d.ts.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.d.ts.map +1 -1
- package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.js +11 -1
- package/dist/esm/components/feedback/empty-state.js.map +1 -1
- package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js +7 -0
- 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 +5 -3
- package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.js +7 -5
- package/dist/esm/components/feedback/notification-center.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.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.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/combobox.d.ts.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.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/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/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/enum/radio.d.ts.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.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.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/google-drive-picker.d.ts +52 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +157 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +16 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +20 -0
- package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +37 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +125 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +16 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +20 -0
- package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -0
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.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/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 +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/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.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.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.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 +22 -19
- 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 +11 -14
- 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-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.labels.d.ts.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 +49 -9
- 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 +1 -0
- 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.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.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.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.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/disclosure-nesting.d.ts.map +1 -1
- 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 +5 -1
- 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.labels.d.ts.map +1 -1
- package/dist/esm/components/typography/text.d.ts.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-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-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.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.d.ts.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 +6 -0
- package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/index.d.ts +23 -1
- package/dist/esm/config/resources/index.d.ts.map +1 -1
- package/dist/esm/config/resources/index.js +24 -3
- 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/resource.config.utils.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.js +95 -4
- 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/index.d.ts +1 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -3
- 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 +20 -1
- 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-presets.d.ts.map +1 -1
- package/dist/esm/registration/register-default-presets.js +4 -4
- package/dist/esm/registration/register-default-presets.js.map +1 -1
- package/dist/esm/registration/register-provider-components.d.ts +31 -0
- package/dist/esm/registration/register-provider-components.d.ts.map +1 -0
- package/dist/esm/registration/register-provider-components.js +45 -0
- package/dist/esm/registration/register-provider-components.js.map +1 -0
- package/dist/esm/shiki-subset.d.ts.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/dense.theme.d.ts.map +1 -1
- package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
- package/dist/esm/themes/glass.theme.d.ts.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
- package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
- package/dist/esm/themes/trading.theme.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -5
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts +0 -13
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.js +0 -44
- package/dist/esm/components/billing/billing-plan-change-preview.js.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +0 -3
- package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js +0 -36
- package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.d.ts +0 -10
- package/dist/esm/components/billing/billing-promotion-code-input.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.js +0 -68
- package/dist/esm/components/billing/billing-promotion-code-input.js.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts +0 -3
- package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.labels.js +0 -14
- package/dist/esm/components/billing/billing-promotion-code-input.labels.js.map +0 -1
- package/dist/esm/config/resources/infrastructure.resource-presets.d.ts +0 -16
- package/dist/esm/config/resources/infrastructure.resource-presets.d.ts.map +0 -1
- package/dist/esm/config/resources/infrastructure.resource-presets.js +0 -110
- package/dist/esm/config/resources/infrastructure.resource-presets.js.map +0 -1
|
@@ -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;AAa1B,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAExF,eAAO,MAAM,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAwCxG,CAAC"}
|
|
@@ -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,7 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ButtonSize, FrontendComponentType, HorizontalPlacement, InteractiveVariant, PlacementSide, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';
|
|
3
3
|
import { HorizontalAlign } from '@wildo-ai/zod-decorators';
|
|
4
|
-
import { resolveComponentLabel, useI18n, useIconRegistry, useNotificationCenterBehavior, IconSize, StandardIconReference, useUI, Button, ButtonVariants_Variant, Popover, PopoverContent, PopoverTrigger, ScrollArea, cn, Surface,
|
|
4
|
+
import { resolveComponentLabel, useI18n, useIconRegistry, useNotificationCenterBehavior, IconSize, StandardIconReference, useUI, Button, ButtonVariants_Variant, Popover, PopoverContent, PopoverTrigger, ScrollArea, cn, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
5
5
|
function getNotificationTypeColorClass(type) {
|
|
6
6
|
switch (type) {
|
|
7
7
|
case 'success': return 'text-success';
|
|
@@ -31,7 +31,16 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
|
|
|
31
31
|
const { renderIcon } = useIconRegistry();
|
|
32
32
|
const { getRecipe } = useUI();
|
|
33
33
|
const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);
|
|
34
|
-
|
|
34
|
+
/*
|
|
35
|
+
* A SESSION FEED, not a message history (#412).
|
|
36
|
+
*
|
|
37
|
+
* The filter tabs, the mark-all-read control, the unread emphasis and the today/yesterday/older
|
|
38
|
+
* grouping were removed on 2026-09-08. Every one of them presented a history over a store that is a
|
|
39
|
+
* `useReducer` with no hydration: it starts empty on each page load, so "unread" meant "arrived
|
|
40
|
+
* since you opened the tab", marking something read died with the page, and the `older` group was
|
|
41
|
+
* unreachable by construction.
|
|
42
|
+
*/
|
|
43
|
+
const { isOpen, setIsOpen, sessionNotifications, notificationCount, handleClearAll, dismissNotification, } = behavior;
|
|
35
44
|
// ===================================================================
|
|
36
45
|
// I18n Labels
|
|
37
46
|
// ===================================================================
|
|
@@ -43,16 +52,14 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
|
|
|
43
52
|
key,
|
|
44
53
|
});
|
|
45
54
|
const titleLabel = t('title');
|
|
46
|
-
|
|
47
|
-
|
|
55
|
+
/*
|
|
56
|
+
* Says the feed is empty because the page just loaded, not that nothing has happened (#412). The
|
|
57
|
+
* distinction matters: a person who left a tab open, reloaded, and now sees "No notifications"
|
|
58
|
+
* would reasonably conclude the system had been quiet.
|
|
59
|
+
*/
|
|
60
|
+
const noNotificationsLabel = t('noNotificationsThisSession');
|
|
48
61
|
const clearAllLabel = t('clearAll');
|
|
49
62
|
const dismissLabel = t('dismiss');
|
|
50
|
-
const unreadLabel = t('unread');
|
|
51
|
-
const allLabel = t('all');
|
|
52
|
-
const filtersLabel = t('filters');
|
|
53
|
-
const todayLabel = t('groupToday');
|
|
54
|
-
const yesterdayLabel = t('groupYesterday');
|
|
55
|
-
const olderLabel = t('groupOlder');
|
|
56
63
|
const popoverPlacement = getPopoverPlacement(placement);
|
|
57
64
|
// ===================================================================
|
|
58
65
|
// Icons
|
|
@@ -65,8 +72,7 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
|
|
|
65
72
|
const renderNotificationItem = (notification) => {
|
|
66
73
|
const typeIcon = renderIcon(notification.iconReference, { size: IconSize.SM });
|
|
67
74
|
const rowLabel = notification.displayTitle || 'Notification';
|
|
68
|
-
return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsxs("div", { className: cn('group flex items-start gap-field-sm rounded-lg p-card-sm', ghostRecipe.motion.transition, ghostRecipe.states.hover
|
|
69
|
-
handleNotificationClick(notification);
|
|
75
|
+
return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsxs("div", { className: cn('group flex items-start gap-field-sm rounded-lg p-card-sm', ghostRecipe.motion.transition, ghostRecipe.states.hover), children: [_jsx("div", { className: `flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`, children: typeIcon }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-start justify-between gap-element", children: [_jsxs("div", { className: "min-w-0 flex-1 text-start", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: notification.displayTitle }), notification.displayMessage && (_jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: notification.displayMessage })), _jsx("p", { className: "mt-item-xs text-xs text-muted-foreground", children: notification.relativeTimeLabel })] }), _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => dismissNotification(notification.id), className: "h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100", "aria-label": dismissLabel, children: dismissIcon })] }), notification.nextStep && (_jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: () => {
|
|
70
76
|
setIsOpen(false);
|
|
71
77
|
notification.nextStep?.onClick();
|
|
72
78
|
}, className: "mt-item-xs", children: notification.nextStep.label }))] })] }) }, notification.id));
|
|
@@ -74,16 +80,13 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
|
|
|
74
80
|
// ===================================================================
|
|
75
81
|
// Render Notification Group
|
|
76
82
|
// ===================================================================
|
|
77
|
-
const renderNotificationGroup = (groupLabel, items) => {
|
|
78
|
-
if (items.length === 0)
|
|
79
|
-
return null;
|
|
80
|
-
return (_jsxs("div", { className: "space-y-item-xs", children: [_jsx("div", { className: "px-card-sm py-item-xs text-xs font-medium text-muted-foreground uppercase tracking-wider", children: groupLabel }), items.map(renderNotificationItem)] }));
|
|
81
|
-
};
|
|
82
83
|
// ===================================================================
|
|
83
84
|
// Render
|
|
84
85
|
// ===================================================================
|
|
85
86
|
if (!isReady)
|
|
86
87
|
return null;
|
|
87
|
-
return (_jsx("div", { "data-component-type": "notification-center", children: _jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, className: "relative", "aria-label": titleLabel, children: bellIcon }) }), _jsxs(PopoverContent, { align: popoverPlacement.align, side: popoverPlacement.side, className: "w-80 p-0", children: [_jsxs("div", { className: "flex items-center justify-between p-card-sm border-b", children: [_jsx("h3", { className: "font-semibold", children: titleLabel }),
|
|
88
|
+
return (_jsx("div", { "data-component-type": "notification-center", children: _jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, className: "relative", "aria-label": titleLabel, children: bellIcon }) }), _jsxs(PopoverContent, { align: popoverPlacement.align, side: popoverPlacement.side, className: "w-80 p-0", children: [_jsxs("div", { className: "flex items-center justify-between p-card-sm border-b", children: [_jsx("h3", { className: "font-semibold", children: titleLabel }), _jsx("div", { className: "flex items-center gap-item-xs", children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: handleClearAll, disabled: notificationCount === 0, children: clearAllLabel }) })] }), _jsx(ScrollArea, { className: "h-[400px]", children: _jsx("div", { className: "p-card-sm space-y-field-sm", children: sessionNotifications.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-section-xl text-center", children: [_jsx("div", { className: "text-muted-foreground mb-element", children: renderIcon(StandardIconReference.MAIL, { size: IconSize.LG }) }), _jsx("p", { className: "text-sm text-muted-foreground", children: noNotificationsLabel })] })) : (
|
|
89
|
+
/* Flat, newest first. Nothing to group by: the buffer has no yesterday. */
|
|
90
|
+
_jsx("div", { className: "space-y-item-xs", children: sessionNotifications.map(renderNotificationItem) })) }) })] })] }) }));
|
|
88
91
|
};
|
|
89
92
|
//# sourceMappingURL=notification-center.js.map
|
|
@@ -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 NotificationCenterFilter,\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 const {\n isOpen,\n setIsOpen,\n filter,\n setFilter,\n unreadCount,\n filteredNotifications,\n groupedNotifications,\n notificationCount,\n handleNotificationClick,\n handleMarkAllAsRead,\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 const noNotificationsLabel = t('noNotifications');\n const markAllReadLabel = t('markAllRead');\n const clearAllLabel = t('clearAll');\n const dismissLabel = t('dismiss');\n const unreadLabel = t('unread');\n const allLabel = t('all');\n const filtersLabel = t('filters');\n\n const todayLabel = t('groupToday');\n const yesterdayLabel = t('groupYesterday');\n const olderLabel = t('groupOlder');\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 filteredNotifications[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 !notification.isRead && 'bg-accent/50',\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 <button\n type=\"button\"\n onClick={() => handleNotificationClick(notification)}\n className=\"min-w-0 flex-1 text-start rounded-sm focus:outline-none focus-ring-offset\"\n aria-label={rowLabel}\n >\n <p className={`text-sm font-medium ${!notification.isRead ? 'text-foreground' : 'text-muted-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 </button>\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 handleNotificationClick(notification);\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 const renderNotificationGroup = (\n groupLabel: string,\n items: typeof groupedNotifications.today,\n ) => {\n if (items.length === 0) return null;\n\n return (\n <div className=\"space-y-item-xs\">\n <div className=\"px-card-sm py-item-xs text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {groupLabel}\n </div>\n {items.map(renderNotificationItem)}\n </div>\n );\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={handleMarkAllAsRead}\n disabled={unreadCount === 0}\n >\n {markAllReadLabel}\n </Button>\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 {/* Filter tabs */}\n <div className=\"flex border-b\" role=\"group\" aria-label={filtersLabel}>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => setFilter(NotificationCenterFilter.ALL)}\n aria-pressed={filter === NotificationCenterFilter.ALL}\n className={cn('flex-1 rounded-none', filter === NotificationCenterFilter.ALL && 'border-b-2 border-primary')}\n >\n {allLabel}\n </Button>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => setFilter(NotificationCenterFilter.UNREAD)}\n aria-pressed={filter === NotificationCenterFilter.UNREAD}\n className={cn('flex-1 rounded-none', filter === NotificationCenterFilter.UNREAD && 'border-b-2 border-primary')}\n >\n {unreadLabel}\n </Button>\n </div>\n\n {/* Notifications list */}\n <ScrollArea className=\"h-[400px]\">\n <div className=\"p-card-sm space-y-field-sm\">\n {filteredNotifications.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 <>\n {renderNotificationGroup(todayLabel, groupedNotifications.today)}\n {renderNotificationGroup(yesterdayLabel, groupedNotifications.yesterday)}\n {renderNotificationGroup(olderLabel, groupedNotifications.older)}\n </>\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,EA0DzE,CAAC"}
|
|
@@ -4,19 +4,19 @@ import { FrontendComponentType, LabelKind, registerComponentLabels, } from '@wil
|
|
|
4
4
|
// the dev companion; NOT imported at runtime, so it never ships in the bundle.
|
|
5
5
|
export const ApplicationLevelNotificationCenterLabels = [
|
|
6
6
|
{ ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the notification-center panel' },
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
{ ref: 'unread', kind: LabelKind.LABEL, purpose: 'Filter label restricting the list to unread notifications' },
|
|
13
|
-
{ ref: 'all', kind: LabelKind.LABEL, purpose: 'Filter label showing all notifications' },
|
|
7
|
+
/*
|
|
8
|
+
* The empty state names WHY it is empty (#412). The centre is a session feed over a store with no
|
|
9
|
+
* persistence, so it is empty on every page load; the retired `noNotifications` said "no
|
|
10
|
+
* notifications", which a person who had just reloaded would read as "nothing has happened".
|
|
11
|
+
*/
|
|
14
12
|
{
|
|
15
|
-
ref: '
|
|
16
|
-
kind: LabelKind.
|
|
17
|
-
purpose: '
|
|
18
|
-
params: [{ key: 'count', meaning: 'number of unread notifications' }],
|
|
13
|
+
ref: 'noNotificationsThisSession',
|
|
14
|
+
kind: LabelKind.EMPTY_STATE,
|
|
15
|
+
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.',
|
|
19
16
|
},
|
|
17
|
+
{ ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the session feed' },
|
|
18
|
+
{ ref: 'dismiss', kind: LabelKind.BUTTON, purpose: 'Action that dismisses a single notification' },
|
|
19
|
+
{ ref: 'showMore', kind: LabelKind.BUTTON, purpose: 'Button that reveals additional notifications' },
|
|
20
20
|
{ ref: 'timeJustNow', kind: LabelKind.LABEL, purpose: 'Relative timestamp for notifications less than a minute old' },
|
|
21
21
|
{
|
|
22
22
|
ref: 'timeMinutesAgo',
|
|
@@ -36,9 +36,6 @@ export const ApplicationLevelNotificationCenterLabels = [
|
|
|
36
36
|
purpose: 'Relative timestamp expressing how many days ago a notification arrived',
|
|
37
37
|
params: [{ key: 'count', meaning: 'number of days elapsed' }],
|
|
38
38
|
},
|
|
39
|
-
{ ref: 'groupToday', kind: LabelKind.HEADING, purpose: 'Group header for notifications received today' },
|
|
40
|
-
{ ref: 'groupYesterday', kind: LabelKind.HEADING, purpose: 'Group header for notifications received yesterday' },
|
|
41
|
-
{ ref: 'groupOlder', kind: LabelKind.HEADING, purpose: 'Group header for notifications older than yesterday' },
|
|
42
39
|
{
|
|
43
40
|
ref: 'defaultSuccess',
|
|
44
41
|
kind: LabelKind.MESSAGE,
|
|
@@ -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":"AAAA,OAAO,EACL,qBAAqB,EACrB,SAAS,EAET,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wCAAwC,GAA0B;IAC7E,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,2CAA2C,EAAE;IAC/F;;;;OAIG;IACH;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EAAE,iSAAiS;KAC3S;IACD,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,4DAA4D,EAAE;IAClH,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAClG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,8CAA8C,EAAE;IACpG,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,6DAA6D,EAAE;IACrH;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,2EAA2E;QACpF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;KACjE;IACD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,yEAAyE;QAClF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,wEAAwE;QACjF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;KAC9D;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,sEAAsE;KAChF;IACD,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,oEAAoE,EAAE;IAC9H;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,sEAAsE;KAChF;IACD,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,qEAAqE,EAAE;IAChI;QACE,GAAG,EAAE,2BAA2B;QAChC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,qEAAqE;QAC9E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;KACtF;IACD;QACE,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,oEAAoE;QAC7E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;KACrF;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,qCAAqC,EAAE,wCAAwC,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 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 { 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,EAIxE,CAAC"}
|
|
@@ -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;AAK1B,OAAO,EAOL,6BAA6B,EA6B9B,MAAM,6BAA6B,CAAC;AAerC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAw5B1F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"sidebar.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/sidebar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAkB9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/status-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,OAAO,EAgBL,+BAA+B,EAChC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,wCAAwC,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA4L9F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-bar.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"status-bar.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/status-bar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,+BAA+B,EAAE,mBAAmB,EAehE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAUL,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAsD1F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"toolbar.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/toolbar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAG9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility-panel.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"utility-panel.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/utility-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAiBL,kCAAkC,EAInC,MAAM,6BAA6B,CAAC;AAgBrC,eAAO,MAAM,2CAA2C,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CAkLpG,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ButtonSize, CorePresetNames, FrontendComponentType, HorizontalPlacement, PlacementSide, SurfaceVariant, resolvePlacementSideToRadix } from '@wildo-ai/presets-components-models';
|
|
4
|
-
import { Button, ButtonVariants_Variant, ComponentRegistryService, IconSize, resolveComponentLabel, ScrollArea, Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, StandardIconReference, useI18n, useIconRegistry, useUtilityPanelBehavior, Surface, } from '@wildo-ai/saas-frontend-lib';
|
|
4
|
+
import { Button, ButtonVariants_Variant, ComponentRegistryService, IconSize, resolveComponentLabel, ScrollArea, Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, StandardIconReference, useI18n, useIconRegistry, useUtilityPanelBehavior, Surface, FlowsActorsView, LauncherItemTargetKind, } from '@wildo-ai/saas-frontend-lib';
|
|
5
5
|
/**
|
|
6
6
|
* Maps horizontal placement to logical placement side.
|
|
7
7
|
* Physical side resolution is delegated to the shared RTL-aware helper.
|
|
@@ -39,19 +39,59 @@ export const ApplicationLevelPreset_UtilityPanel_Default = ({ position = Horizon
|
|
|
39
39
|
/**
|
|
40
40
|
* Renders a single utility panel item.
|
|
41
41
|
*
|
|
42
|
-
* Custom components render inline
|
|
43
|
-
*
|
|
44
|
-
*
|
|
42
|
+
* Custom components render inline, and that is the whole behaviour — nothing here navigates
|
|
43
|
+
* (#504). If a rendered utility view ever pushes a view, it will need a zone of its own, because a
|
|
44
|
+
* push from inside a side sheet otherwise lands in `PRIMARY` and replaces the workspace the panel
|
|
45
|
+
* exists to sit beside. That zone is worth adding then, and not before it has anything to hold.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* The shape shown when an item names something this panel cannot host.
|
|
49
|
+
*
|
|
50
|
+
* It prints the offending REF, in destructive colour. It used to print the item's LABEL in a
|
|
51
|
+
* neutral grey box — the shape of a component that rendered fine and had little to say — so a
|
|
52
|
+
* misconfigured panel looked like a working one. Same rule a missing i18n label follows: make the
|
|
53
|
+
* gap visible, never substitute something plausible (#504).
|
|
54
|
+
*/
|
|
55
|
+
const renderUnresolved = (ref) => (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsxs("div", { className: "text-xs text-destructive bg-destructive/10 p-card-sm rounded", role: "status", children: [t('unresolvedComponent'), " ", _jsx("code", { children: ref })] }) }));
|
|
56
|
+
/**
|
|
57
|
+
* Renders a single utility panel item.
|
|
58
|
+
*
|
|
59
|
+
* Both kinds render INLINE, and nothing here navigates (#504). If a hosted view ever pushes a
|
|
60
|
+
* view, it will need a zone of its own, because a push from inside a side sheet otherwise lands in
|
|
61
|
+
* `PRIMARY` and replaces the workspace the panel exists to sit beside. That zone is worth adding
|
|
62
|
+
* then, and not before it has anything to hold — and the first question will be whether it IS
|
|
63
|
+
* `COMPANION`, which already describes persistent supplementary content.
|
|
64
|
+
*
|
|
65
|
+
* `VIEW` dispatches to exactly ONE host today, because `FlowsActorsViewDefinition` is the only
|
|
66
|
+
* application-scoped view kind the panel can host. Adding a second means extending this switch and
|
|
67
|
+
* the behaviour hook's validation TOGETHER — the hook decides whether a ref is known, this decides
|
|
68
|
+
* what renders it, and a kind added to one and not the other is a ref that validates and shows
|
|
69
|
+
* nothing.
|
|
45
70
|
*/
|
|
46
71
|
const renderItem = (item, index) => {
|
|
47
72
|
const itemIcon = renderIcon(item.icon, { size: IconSize.SM });
|
|
48
|
-
const
|
|
49
|
-
?
|
|
50
|
-
|
|
51
|
-
|
|
73
|
+
const body = item.kind === LauncherItemTargetKind.VIEW
|
|
74
|
+
? (item.resolvedViewRef !== null
|
|
75
|
+
? _jsx(FlowsActorsView, { viewRef: item.resolvedViewRef })
|
|
76
|
+
: renderUnresolved(item.viewRef))
|
|
77
|
+
: (() => {
|
|
78
|
+
const CustomComponent = item.componentType
|
|
79
|
+
? ComponentRegistryService.resolve(item.componentType, CorePresetNames.DEFAULT)
|
|
80
|
+
: null;
|
|
81
|
+
return CustomComponent ? (_jsx(React.Suspense, { fallback: _jsx("div", { className: "h-8 animate-pulse motion-reduce:animate-none bg-muted rounded", "aria-hidden": "true" }), children: _jsx(CustomComponent, {}) })) : renderUnresolved(item.componentRef);
|
|
82
|
+
})();
|
|
83
|
+
const itemRef = item.kind === LauncherItemTargetKind.VIEW ? item.viewRef : item.componentRef;
|
|
84
|
+
return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsxs("div", {
|
|
85
|
+
/*
|
|
86
|
+
* `min-w-0` is load-bearing, not cosmetic. A flex/grid child defaults to `min-width: auto`,
|
|
87
|
+
* so it refuses to shrink below its own content width and overflows its host instead —
|
|
88
|
+
* which is exactly how a 514px view came to be clipped by a 320px sheet rather than
|
|
89
|
+
* laying itself out narrower. Widening the sheet alone would only move the threshold.
|
|
90
|
+
*/
|
|
91
|
+
className: "border rounded-md p-card-sm space-y-item min-w-0", "data-utility-item": itemRef, "data-utility-item-kind": item.kind, children: [_jsxs("div", { className: "flex items-center gap-element-sm", children: [itemIcon, _jsx("span", { className: "text-sm font-medium", children: item.label })] }), body] }) }, `${itemRef}:${index}`));
|
|
52
92
|
};
|
|
53
93
|
if (!isReady)
|
|
54
94
|
return null;
|
|
55
|
-
return (_jsx("div", { "data-component-type": "utility-panel", "data-breakpoint": currentBreakpoint, children: _jsxs(Sheet, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(SheetTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, "aria-label": toggleLabel, className: "relative", children: panelIcon }) }), _jsxs(SheetContent, { side: sheetSide, className: "w-
|
|
95
|
+
return (_jsx("div", { "data-component-type": "utility-panel", "data-breakpoint": currentBreakpoint, children: _jsxs(Sheet, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(SheetTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, "aria-label": toggleLabel, className: "relative", children: panelIcon }) }), _jsxs(SheetContent, { side: sheetSide, className: "w-[36rem] sm:max-w-[36rem] max-w-[100vw]", children: [_jsx(SheetHeader, { children: _jsx(SheetTitle, { children: titleLabel }) }), _jsx(ScrollArea, { className: "h-[calc(100vh-120px)] mt-field", children: _jsxs("div", { className: "space-y-field pe-card", children: [resolvedItems.length > 0 && (_jsx("div", { className: "space-y-item", children: resolvedItems.map(renderItem) })), resolvedItems.length === 0 && (_jsx("div", { className: "text-sm text-muted-foreground text-center py-section-xl", children: emptyStateLabel }))] }) })] })] }) }));
|
|
56
96
|
};
|
|
57
97
|
//# sourceMappingURL=utility-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility-panel.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/utility-panel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ButtonSize, CorePresetNames, FrontendComponentType, HorizontalPlacement, PlacementSide, SurfaceVariant, resolvePlacementSideToRadix } from '@wildo-ai/presets-components-models';\n\nimport {\n Button,\n ButtonVariants_Variant,\n ComponentRegistryService,\n IconSize,\n resolveComponentLabel,\n ScrollArea,\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n StandardIconReference,\n useI18n,\n useIconRegistry,\n useUtilityPanelBehavior,\n Surface,\n ApplicationLevelProps_UtilityPanel,\n UtilityPanelPlacement,\n} from '@wildo-ai/saas-frontend-lib';\n\n/**\n * Maps horizontal placement to logical placement side.\n * Physical side resolution is delegated to the shared RTL-aware helper.\n */\nfunction getSheetPlacementSideFromPlacement(placement: UtilityPanelPlacement): PlacementSide {\n return placement === HorizontalPlacement.START ? PlacementSide.START : PlacementSide.END;\n}\n\nfunction getUtilityPanelIconReference(placement: UtilityPanelPlacement): StandardIconReference {\n return placement === HorizontalPlacement.START\n ? StandardIconReference.PANEL_LEFT\n : StandardIconReference.CHEVRON_RIGHT;\n}\n\nexport const ApplicationLevelPreset_UtilityPanel_Default: React.FC<ApplicationLevelProps_UtilityPanel> = ({\n position = HorizontalPlacement.END,\n items,\n}) => {\n const behavior = useUtilityPanelBehavior(position, items);\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_UTILITY_PANEL });\n const { renderIcon } = useIconRegistry();\n\n const {\n isOpen,\n setIsOpen,\n items: resolvedItems,\n position: resolvedPosition,\n currentBreakpoint,\n } = behavior;\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_UTILITY_PANEL,\n key,\n });\n const titleLabel = t('title');\n const toggleLabel = t('toggle');\n const emptyStateLabel = t('emptyState');\n\n // Follow the engine convention: keep logical placement until the last moment,\n // then resolve it against the current document direction.\n const sheetPlacementSide = getSheetPlacementSideFromPlacement(resolvedPosition);\n const dir = (typeof document !== 'undefined' ? document.documentElement?.dir : undefined) || 'ltr';\n const sheetSide = resolvePlacementSideToRadix(sheetPlacementSide, dir as 'ltr' | 'rtl');\n\n // Utility panel icon (panel icon for side panel concept)\n const panelIcon = renderIcon(getUtilityPanelIconReference(resolvedPosition), { size: IconSize.MD });\n\n /**\n * Renders a single utility panel item.\n *\n * Custom components render inline today. The only deferred part is FE-5:\n * when a rendered utility view triggers navigation, it should be able to\n * stay inside a dedicated utility-panel navigation zone.\n */\n const renderItem = (item: typeof resolvedItems[number], index: number) => {\n const itemIcon = renderIcon(item.icon, { size: IconSize.SM });\n const CustomComponent = item.componentType\n ? ComponentRegistryService.resolve(item.componentType, CorePresetNames.DEFAULT)\n : null;\n\n return (\n <Surface key={`${item.componentRef}:${index}`} asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n className=\"border rounded-md p-card-sm space-y-item\"\n data-utility-item={item.componentRef}\n >\n <div className=\"flex items-center gap-element-sm\">\n {itemIcon}\n <span className=\"text-sm font-medium\">{item.label}</span>\n </div>\n {CustomComponent ? (\n <React.Suspense\n fallback={<div className=\"h-8 animate-pulse motion-reduce:animate-none bg-muted rounded\" aria-hidden=\"true\" />}\n >\n <CustomComponent />\n </React.Suspense>\n ) : (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className=\"text-xs text-muted-foreground bg-muted/50 p-card-sm rounded\">\n <code>{item.label}</code>\n </div>\n </Surface>\n )}\n </div>\n </Surface>\n );\n };\n\n if (!isReady) return null;\n\n return (\n <div data-component-type=\"utility-panel\" data-breakpoint={currentBreakpoint}>\n <Sheet open={isOpen} onOpenChange={setIsOpen}>\n <SheetTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n aria-label={toggleLabel}\n className=\"relative\"\n >\n {panelIcon}\n </Button>\n </SheetTrigger>\n\n <SheetContent side={sheetSide} className=\"w-80\">\n <SheetHeader>\n <SheetTitle>{titleLabel}</SheetTitle>\n </SheetHeader>\n\n <ScrollArea className=\"h-[calc(100vh-120px)] mt-field\">\n <div className=\"space-y-field pe-card\">\n {/* Items */}\n {resolvedItems.length > 0 && (\n <div className=\"space-y-item\">\n {resolvedItems.map(renderItem)}\n </div>\n )}\n\n {/* Empty state */}\n {resolvedItems.length === 0 && (\n <div className=\"text-sm text-muted-foreground text-center py-section-xl\">\n {emptyStateLabel}\n </div>\n )}\n </div>\n </ScrollArea>\n </SheetContent>\n </Sheet>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"utility-panel.js","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/utility-panel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ButtonSize, CorePresetNames, FrontendComponentType, HorizontalPlacement, PlacementSide, SurfaceVariant, resolvePlacementSideToRadix } from '@wildo-ai/presets-components-models';\n\nimport {\n Button,\n ButtonVariants_Variant,\n ComponentRegistryService,\n IconSize,\n resolveComponentLabel,\n ScrollArea,\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n StandardIconReference,\n useI18n,\n useIconRegistry,\n useUtilityPanelBehavior,\n Surface,\n ApplicationLevelProps_UtilityPanel,\n UtilityPanelPlacement,\n FlowsActorsView,\n LauncherItemTargetKind,\n} from '@wildo-ai/saas-frontend-lib';\n\n/**\n * Maps horizontal placement to logical placement side.\n * Physical side resolution is delegated to the shared RTL-aware helper.\n */\nfunction getSheetPlacementSideFromPlacement(placement: UtilityPanelPlacement): PlacementSide {\n return placement === HorizontalPlacement.START ? PlacementSide.START : PlacementSide.END;\n}\n\nfunction getUtilityPanelIconReference(placement: UtilityPanelPlacement): StandardIconReference {\n return placement === HorizontalPlacement.START\n ? StandardIconReference.PANEL_LEFT\n : StandardIconReference.CHEVRON_RIGHT;\n}\n\nexport const ApplicationLevelPreset_UtilityPanel_Default: React.FC<ApplicationLevelProps_UtilityPanel> = ({\n position = HorizontalPlacement.END,\n items,\n}) => {\n const behavior = useUtilityPanelBehavior(position, items);\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_UTILITY_PANEL });\n const { renderIcon } = useIconRegistry();\n\n const {\n isOpen,\n setIsOpen,\n items: resolvedItems,\n position: resolvedPosition,\n currentBreakpoint,\n } = behavior;\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_UTILITY_PANEL,\n key,\n });\n const titleLabel = t('title');\n const toggleLabel = t('toggle');\n const emptyStateLabel = t('emptyState');\n\n // Follow the engine convention: keep logical placement until the last moment,\n // then resolve it against the current document direction.\n const sheetPlacementSide = getSheetPlacementSideFromPlacement(resolvedPosition);\n const dir = (typeof document !== 'undefined' ? document.documentElement?.dir : undefined) || 'ltr';\n const sheetSide = resolvePlacementSideToRadix(sheetPlacementSide, dir as 'ltr' | 'rtl');\n\n // Utility panel icon (panel icon for side panel concept)\n const panelIcon = renderIcon(getUtilityPanelIconReference(resolvedPosition), { size: IconSize.MD });\n\n /**\n * Renders a single utility panel item.\n *\n * Custom components render inline, and that is the whole behaviour — nothing here navigates\n * (#504). If a rendered utility view ever pushes a view, it will need a zone of its own, because a\n * push from inside a side sheet otherwise lands in `PRIMARY` and replaces the workspace the panel\n * exists to sit beside. That zone is worth adding then, and not before it has anything to hold.\n */\n /**\n * The shape shown when an item names something this panel cannot host.\n *\n * It prints the offending REF, in destructive colour. It used to print the item's LABEL in a\n * neutral grey box — the shape of a component that rendered fine and had little to say — so a\n * misconfigured panel looked like a working one. Same rule a missing i18n label follows: make the\n * gap visible, never substitute something plausible (#504).\n */\n const renderUnresolved = (ref: string) => (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div className=\"text-xs text-destructive bg-destructive/10 p-card-sm rounded\" role=\"status\">\n {t('unresolvedComponent')} <code>{ref}</code>\n </div>\n </Surface>\n );\n\n /**\n * Renders a single utility panel item.\n *\n * Both kinds render INLINE, and nothing here navigates (#504). If a hosted view ever pushes a\n * view, it will need a zone of its own, because a push from inside a side sheet otherwise lands in\n * `PRIMARY` and replaces the workspace the panel exists to sit beside. That zone is worth adding\n * then, and not before it has anything to hold — and the first question will be whether it IS\n * `COMPANION`, which already describes persistent supplementary content.\n *\n * `VIEW` dispatches to exactly ONE host today, because `FlowsActorsViewDefinition` is the only\n * application-scoped view kind the panel can host. Adding a second means extending this switch and\n * the behaviour hook's validation TOGETHER — the hook decides whether a ref is known, this decides\n * what renders it, and a kind added to one and not the other is a ref that validates and shows\n * nothing.\n */\n const renderItem = (item: typeof resolvedItems[number], index: number) => {\n const itemIcon = renderIcon(item.icon, { size: IconSize.SM });\n\n const body = item.kind === LauncherItemTargetKind.VIEW\n ? (item.resolvedViewRef !== null\n ? <FlowsActorsView viewRef={item.resolvedViewRef} />\n : renderUnresolved(item.viewRef))\n : (() => {\n const CustomComponent = item.componentType\n ? ComponentRegistryService.resolve(item.componentType, CorePresetNames.DEFAULT)\n : null;\n return CustomComponent ? (\n <React.Suspense\n fallback={<div className=\"h-8 animate-pulse motion-reduce:animate-none bg-muted rounded\" aria-hidden=\"true\" />}\n >\n <CustomComponent />\n </React.Suspense>\n ) : renderUnresolved(item.componentRef);\n })();\n\n const itemRef = item.kind === LauncherItemTargetKind.VIEW ? item.viewRef : item.componentRef;\n\n return (\n <Surface key={`${itemRef}:${index}`} asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n /*\n * `min-w-0` is load-bearing, not cosmetic. A flex/grid child defaults to `min-width: auto`,\n * so it refuses to shrink below its own content width and overflows its host instead —\n * which is exactly how a 514px view came to be clipped by a 320px sheet rather than\n * laying itself out narrower. Widening the sheet alone would only move the threshold.\n */\n className=\"border rounded-md p-card-sm space-y-item min-w-0\"\n data-utility-item={itemRef}\n data-utility-item-kind={item.kind}\n >\n <div className=\"flex items-center gap-element-sm\">\n {itemIcon}\n <span className=\"text-sm font-medium\">{item.label}</span>\n </div>\n {body}\n </div>\n </Surface>\n );\n };\n\n if (!isReady) return null;\n\n return (\n <div data-component-type=\"utility-panel\" data-breakpoint={currentBreakpoint}>\n <Sheet open={isOpen} onOpenChange={setIsOpen}>\n <SheetTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n aria-label={toggleLabel}\n className=\"relative\"\n >\n {panelIcon}\n </Button>\n </SheetTrigger>\n\n {/*\n * Sized to the content it HOSTS, not to the rail it began as (#504).\n *\n * This was `w-80` (320px), which is right for a small widget and wrong for a VIEW. Measured\n * in the running app: the Todo Assistant's MIN-CONTENT width is 514px — it cannot lay out\n * narrower, so it overflowed and was clipped by 194px, its prompt input running off one\n * edge and its description off the other. `min-w-0` on the item does not help against a\n * min-content floor; only giving it the width does.\n *\n * `sm:max-w-[36rem]` is not redundant with `w-[36rem]`. `SheetContent`'s own base classes\n * carry `sm:max-w-sm` (384px), which silently CAPPED an earlier attempt at `w-[26rem]` —\n * the computed width came back 384px and the panel still clipped. A width class alone loses\n * to that cap, which is exactly the kind of thing only a browser measurement finds.\n *\n * `max-w-[100vw]` keeps a narrow window whole.\n */}\n <SheetContent side={sheetSide} className=\"w-[36rem] sm:max-w-[36rem] max-w-[100vw]\">\n <SheetHeader>\n <SheetTitle>{titleLabel}</SheetTitle>\n </SheetHeader>\n\n <ScrollArea className=\"h-[calc(100vh-120px)] mt-field\">\n <div className=\"space-y-field pe-card\">\n {/* Items */}\n {resolvedItems.length > 0 && (\n <div className=\"space-y-item\">\n {resolvedItems.map(renderItem)}\n </div>\n )}\n\n {/* Empty state */}\n {resolvedItems.length === 0 && (\n <div className=\"text-sm text-muted-foreground text-center py-section-xl\">\n {emptyStateLabel}\n </div>\n )}\n </div>\n </ScrollArea>\n </SheetContent>\n </Sheet>\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility-panel.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"utility-panel.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/utility-panel.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAKnE,CAAC"}
|
|
@@ -6,6 +6,7 @@ export const ApplicationLevelUtilityPanelLabels = [
|
|
|
6
6
|
{ ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the utility panel' },
|
|
7
7
|
{ ref: 'toggle', kind: LabelKind.ARIA, purpose: 'Screen-reader name for the button that shows or hides the utility panel' },
|
|
8
8
|
{ ref: 'emptyState', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when the utility panel has no content' },
|
|
9
|
+
{ ref: 'unresolvedComponent', kind: LabelKind.LABEL, purpose: 'Shown in place of a panel item whose configured component reference names no component the panel can host — the reference itself is printed beside it, so the gap is visible rather than replaced by plausible chrome' },
|
|
9
10
|
];
|
|
10
11
|
registerComponentLabels(FrontendComponentType.APPLICATION_LEVEL_UTILITY_PANEL, ApplicationLevelUtilityPanelLabels);
|
|
11
12
|
//# sourceMappingURL=utility-panel.labels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility-panel.labels.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"utility-panel.labels.js","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/utility-panel.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,kCAAkC,GAA0B;IACvE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE;IACnF,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,yEAAyE,EAAE;IAC3H,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAC1G,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,uNAAuN,EAAE;CACxR,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,kCAAkC,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 ApplicationLevelUtilityPanelLabels: LabellingUnitaryDef[] = [\n { ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the utility panel' },\n { ref: 'toggle', kind: LabelKind.ARIA, purpose: 'Screen-reader name for the button that shows or hides the utility panel' },\n { ref: 'emptyState', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when the utility panel has no content' },\n { ref: 'unresolvedComponent', kind: LabelKind.LABEL, purpose: 'Shown in place of a panel item whose configured component reference names no component the panel can host — the reference itself is printed beside it, so the gap is visible rather than replaced by plausible chrome' },\n];\nregisterComponentLabels(FrontendComponentType.APPLICATION_LEVEL_UTILITY_PANEL, ApplicationLevelUtilityPanelLabels);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/breadcrumb.tsx"],"names":[],"mappings":"AAKA,OAAO,EAA8F,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AA8GjK,eAAO,MAAM,UAAU,oBAOrB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"breadcrumb.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/breadcrumb.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAGzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/command.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;AAElD,OAAO,EAOL,MAAM,EAWN,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAyB,KAAK,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AA2C1G;;;;;;;;;;;GAWG;AACH,iBAAS,aAAa,CAAC,EACrB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,eAAsB,EACtB,qBAAqB,EACrB,IAAI,EACJ,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qBAAqB,CAAC,EAAE,wBAAwB,CAAA;CACjD,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAyD3B;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0BzE;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWxE;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQzE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWzE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW7E;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwBxE;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAelD;AAID,QAAA,MAAM,OAAO,iBASX,CAAA;AAEF,OAAO,EACL,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"command.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/command.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAGtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-bar.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"menu-bar.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/menu-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-bar.labels.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"menu-bar.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/menu-bar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
|