@cognivo/components 0.8.0 → 0.8.2
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/chunks/focus-trap-vlQwKK-3.js +82 -0
- package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
- package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
- package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
- package/dist/cognivo.min.js +3375 -5270
- package/dist/cognivo.min.js.map +1 -1
- package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
- package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
- package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
- package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
- package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
- package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
- package/dist/components/ai-annotation/ai-annotation.js +2 -2
- package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
- package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
- package/dist/components/ai-avatar/ai-avatar.js +1 -1
- package/dist/components/ai-badge/ai-badge.js +1 -1
- package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
- package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
- package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
- package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
- package/dist/components/ai-changelog/ai-changelog.js +26 -26
- package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
- package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
- package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/ai-chat/ai-chat.js +9 -3
- package/dist/components/ai-chat/ai-chat.js.map +1 -1
- package/dist/components/ai-citation/ai-citation.d.ts +0 -6
- package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/ai-citation/ai-citation.js +64 -90
- package/dist/components/ai-citation/ai-citation.js.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
- package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
- package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
- package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
- package/dist/components/ai-context-window/ai-context-window.js +19 -19
- package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
- package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
- package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
- package/dist/components/ai-data-card/ai-data-card.js +2 -2
- package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
- package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
- package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
- package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
- package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
- package/dist/components/ai-data-table/ai-data-table.js +9 -9
- package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
- package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
- package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
- package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
- package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
- package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
- package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.js +10 -5
- package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
- package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
- package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
- package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
- package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
- package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
- package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
- package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
- package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
- package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
- package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
- package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
- package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
- package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
- package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
- package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
- package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
- package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
- package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
- package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
- package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
- package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
- package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
- package/dist/components/ai-presence/ai-presence.js +25 -25
- package/dist/components/ai-presence/ai-presence.js.map +1 -1
- package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
- package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
- package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
- package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
- package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
- package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
- package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
- package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
- package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
- package/dist/components/ai-search/ai-search.js +1 -1
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
- package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
- package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
- package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
- package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
- package/dist/components/ai-status-page/ai-status-page.js +15 -15
- package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
- package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
- package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
- package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
- package/dist/components/ai-thinking/ai-thinking.js +1 -1
- package/dist/components/ai-timeline/ai-timeline.js +2 -2
- package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
- package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
- package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
- package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
- package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
- package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
- package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
- package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
- package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
- package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
- package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
- package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
- package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
- package/dist/components/bias-authority/bias-authority.js +1 -1
- package/dist/components/bias-commitment/bias-commitment.js +1 -1
- package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
- package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
- package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
- package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
- package/dist/components/cg-accordion/cg-accordion.js +51 -43
- package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
- package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.js +24 -24
- package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
- package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
- package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
- package/dist/components/cg-badge/cg-badge.js +26 -20
- package/dist/components/cg-badge/cg-badge.js.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
- package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
- package/dist/components/cg-button/cg-button.d.ts +5 -71
- package/dist/components/cg-button/cg-button.d.ts.map +1 -1
- package/dist/components/cg-button/cg-button.js +63 -172
- package/dist/components/cg-button/cg-button.js.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.js +43 -29
- package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.js +28 -12
- package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
- package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
- package/dist/components/cg-callout/cg-callout.js +49 -48
- package/dist/components/cg-callout/cg-callout.js.map +1 -1
- package/dist/components/cg-card/cg-card.d.ts +9 -22
- package/dist/components/cg-card/cg-card.d.ts.map +1 -1
- package/dist/components/cg-card/cg-card.js +28 -56
- package/dist/components/cg-card/cg-card.js.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.js +19 -13
- package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
- package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
- package/dist/components/cg-chart/cg-chart.js +63 -58
- package/dist/components/cg-chart/cg-chart.js.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
- package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
- package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
- package/dist/components/cg-chip/cg-chip.js +31 -31
- package/dist/components/cg-chip/cg-chip.js.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.js +36 -34
- package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
- package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
- package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.js +13 -6
- package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
- package/dist/components/cg-command/cg-command.d.ts.map +1 -1
- package/dist/components/cg-command/cg-command.js +52 -45
- package/dist/components/cg-command/cg-command.js.map +1 -1
- package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
- package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
- package/dist/components/cg-drawer/cg-drawer.js +3 -3
- package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
- package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
- package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
- package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.js +9 -10
- package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
- package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
- package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
- package/dist/components/cg-form/cg-form.js +17 -17
- package/dist/components/cg-form/cg-form.js.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
- package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
- package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
- package/dist/components/cg-icon/cg-icon.js +44 -37
- package/dist/components/cg-icon/cg-icon.js.map +1 -1
- package/dist/components/cg-image/cg-image.js +2 -2
- package/dist/components/cg-image/cg-image.js.map +1 -1
- package/dist/components/cg-image-block/cg-image-block.js +3 -3
- package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
- package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
- package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
- package/dist/components/cg-input/cg-input.js +3 -3
- package/dist/components/cg-input/cg-input.js.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.js +26 -24
- package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
- package/dist/components/cg-label/cg-label.d.ts +4 -1
- package/dist/components/cg-label/cg-label.d.ts.map +1 -1
- package/dist/components/cg-label/cg-label.js +44 -41
- package/dist/components/cg-label/cg-label.js.map +1 -1
- package/dist/components/cg-link/cg-link.js +23 -23
- package/dist/components/cg-link/cg-link.js.map +1 -1
- package/dist/components/cg-list/cg-list.js +5 -5
- package/dist/components/cg-list/cg-list.js.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.js +46 -40
- package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.js +171 -121
- package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.js +59 -47
- package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
- package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
- package/dist/components/cg-meter/cg-meter.js +76 -76
- package/dist/components/cg-meter/cg-meter.js.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
- package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
- package/dist/components/cg-modal/cg-modal.d.ts +3 -0
- package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
- package/dist/components/cg-modal/cg-modal.js +82 -83
- package/dist/components/cg-modal/cg-modal.js.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.js +64 -55
- package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.js +90 -77
- package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
- package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.js +50 -49
- package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.js +42 -34
- package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
- package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
- package/dist/components/cg-popover/cg-popover.d.ts +12 -2
- package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
- package/dist/components/cg-popover/cg-popover.js +90 -63
- package/dist/components/cg-popover/cg-popover.js.map +1 -1
- package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
- package/dist/components/cg-portal/cg-portal.js +42 -41
- package/dist/components/cg-portal/cg-portal.js.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
- package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
- package/dist/components/cg-radio/cg-radio.d.ts +10 -0
- package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
- package/dist/components/cg-radio/cg-radio.js +59 -48
- package/dist/components/cg-radio/cg-radio.js.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
- package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
- package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
- package/dist/components/cg-rating/cg-rating.js +56 -54
- package/dist/components/cg-rating/cg-rating.js.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.js +45 -35
- package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
- package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
- package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
- package/dist/components/cg-select/cg-select.d.ts +4 -2
- package/dist/components/cg-select/cg-select.d.ts.map +1 -1
- package/dist/components/cg-select/cg-select.js +96 -58
- package/dist/components/cg-select/cg-select.js.map +1 -1
- package/dist/components/cg-separator/cg-separator.d.ts +1 -2
- package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
- package/dist/components/cg-separator/cg-separator.js +5 -8
- package/dist/components/cg-separator/cg-separator.js.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.js +80 -43
- package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
- package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
- package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
- package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
- package/dist/components/cg-slider/cg-slider.js +80 -73
- package/dist/components/cg-slider/cg-slider.js.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.js +10 -19
- package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.js +64 -50
- package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
- package/dist/components/cg-stack/cg-stack.js +1 -1
- package/dist/components/cg-steps/cg-steps.js +1 -1
- package/dist/components/cg-switch/cg-switch.d.ts +3 -0
- package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
- package/dist/components/cg-switch/cg-switch.js +39 -47
- package/dist/components/cg-switch/cg-switch.js.map +1 -1
- package/dist/components/cg-table/cg-table.d.ts +0 -7
- package/dist/components/cg-table/cg-table.d.ts.map +1 -1
- package/dist/components/cg-table/cg-table.js +50 -47
- package/dist/components/cg-table/cg-table.js.map +1 -1
- package/dist/components/cg-tabs/cg-tabs.js +1 -1
- package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
- package/dist/components/cg-text/cg-text.js +1 -1
- package/dist/components/cg-textarea/cg-textarea.js +1 -1
- package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
- package/dist/components/cg-toaster/cg-toaster.js +3 -3
- package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
- package/dist/components/cg-toggle/cg-toggle.js +1 -1
- package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
- package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
- package/dist/foundation.d.ts +0 -16
- package/dist/foundation.d.ts.map +1 -1
- package/dist/foundation.js +174 -206
- package/dist/foundation.js.map +1 -1
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -132
- package/dist/index.js.map +1 -1
- package/dist/utils/focus-trap.d.ts +19 -2
- package/dist/utils/focus-trap.d.ts.map +1 -1
- package/package.json +6 -810
- package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
- package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
- package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
- package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
- package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
- package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
- package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
- package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.js +0 -136
- package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
- package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.js +0 -114
- package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
- package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
- package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
- package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.js +0 -86
- package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
- package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
- package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.js +0 -106
- package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
- package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.js +0 -177
- package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
- package/dist/components/cg-theme/cg-theme.d.ts +0 -82
- package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
- package/dist/components/cg-theme/cg-theme.js +0 -91
- package/dist/components/cg-theme/cg-theme.js.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
- package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
- package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.js +0 -131
- package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
- package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
- package/dist/utils/drag-manager.d.ts +0 -40
- package/dist/utils/drag-manager.d.ts.map +0 -1
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
import { css as f, LitElement as m, nothing as h, html as c } from "lit";
|
|
2
|
-
import { property as d, state as g, customElement as y } from "lit/decorators.js";
|
|
3
|
-
import { h as _, r as w } from "../../chunks/premium.css-9I4kHrsl.js";
|
|
4
|
-
var x = Object.defineProperty, k = Object.getOwnPropertyDescriptor, n = (e, r, a, t) => {
|
|
5
|
-
for (var o = t > 1 ? void 0 : t ? k(r, a) : r, s = e.length - 1, l; s >= 0; s--)
|
|
6
|
-
(l = e[s]) && (o = (t ? l(r, a, o) : l(o)) || o);
|
|
7
|
-
return t && o && x(r, a, o), o;
|
|
8
|
-
};
|
|
9
|
-
let i = class extends m {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments), this.anchor = "bottom-right", this.collapsed = !1, this.editableTokens = [
|
|
12
|
-
{ name: "--cg-color-action-primary-background-default", label: "Primary", type: "color" },
|
|
13
|
-
{ name: "--cg-color-action-primary-text-default", label: "Primary text", type: "color" },
|
|
14
|
-
{ name: "--cg-color-action-secondary-background-default", label: "Secondary", type: "color" },
|
|
15
|
-
{ name: "--cg-color-accent-text", label: "Accent", type: "color" },
|
|
16
|
-
{ name: "--cg-color-surface-base-background", label: "Surface bg", type: "color" },
|
|
17
|
-
{ name: "--cg-color-surface-base-text", label: "Surface text", type: "color" },
|
|
18
|
-
{ name: "--cg-color-surface-cards-background", label: "Card bg", type: "color" },
|
|
19
|
-
{ name: "--cg-color-surface-cards-border", label: "Border", type: "color" }
|
|
20
|
-
], this.themeFromImage = null, this._values = {}, this._showCopied = !1, this._dragover = !1, this._onImagePicked = (e) => {
|
|
21
|
-
if (!this.themeFromImage) return;
|
|
22
|
-
const r = new Image(), a = URL.createObjectURL(e);
|
|
23
|
-
r.onload = () => {
|
|
24
|
-
const t = document.createElement("canvas");
|
|
25
|
-
t.width = r.naturalWidth, t.height = r.naturalHeight;
|
|
26
|
-
const o = t.getContext("2d");
|
|
27
|
-
if (!o) return;
|
|
28
|
-
o.drawImage(r, 0, 0);
|
|
29
|
-
const s = o.getImageData(0, 0, t.width, t.height), l = this.themeFromImage(s), p = { ...this._values };
|
|
30
|
-
for (const [v, b] of Object.entries(l)) {
|
|
31
|
-
const u = this._normalizeColor(b);
|
|
32
|
-
u && (p[v] = u);
|
|
33
|
-
}
|
|
34
|
-
this._values = p, this._applyToTheme(), URL.revokeObjectURL(a);
|
|
35
|
-
}, r.src = a;
|
|
36
|
-
}, this._onImageInputChange = (e) => {
|
|
37
|
-
const a = e.target.files?.[0];
|
|
38
|
-
a && this._onImagePicked(a);
|
|
39
|
-
}, this._onDragEnter = (e) => {
|
|
40
|
-
e.preventDefault(), this._dragover = !0;
|
|
41
|
-
}, this._onDragLeave = () => {
|
|
42
|
-
this._dragover = !1;
|
|
43
|
-
}, this._onDrop = (e) => {
|
|
44
|
-
e.preventDefault(), this._dragover = !1;
|
|
45
|
-
const r = e.dataTransfer?.files?.[0];
|
|
46
|
-
r && this._onImagePicked(r);
|
|
47
|
-
}, this._onReset = () => {
|
|
48
|
-
const e = this._findThemeTarget();
|
|
49
|
-
e && (e.tokens = null), this._readInitialValues(), this.dispatchEvent(new CustomEvent("cg-theme-change", {
|
|
50
|
-
detail: { tokens: {} },
|
|
51
|
-
bubbles: !0,
|
|
52
|
-
composed: !0
|
|
53
|
-
}));
|
|
54
|
-
}, this._onCopy = () => {
|
|
55
|
-
const e = JSON.stringify(this._values, null, 2);
|
|
56
|
-
navigator.clipboard?.writeText && navigator.clipboard.writeText(e), this._showCopied = !0, setTimeout(() => {
|
|
57
|
-
this._showCopied = !1;
|
|
58
|
-
}, 1200);
|
|
59
|
-
}, this._onToggle = () => {
|
|
60
|
-
this.collapsed = !this.collapsed;
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
connectedCallback() {
|
|
64
|
-
super.connectedCallback(), this._readInitialValues();
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Read the current resolved value of each editable token from the page
|
|
68
|
-
* so the color inputs start populated. Falls back to "#000000" for
|
|
69
|
-
* unresolvable values; the input still works once the user picks.
|
|
70
|
-
*/
|
|
71
|
-
_readInitialValues() {
|
|
72
|
-
const r = this._findThemeTarget() ?? this, a = window.getComputedStyle(r), t = {};
|
|
73
|
-
for (const o of this.editableTokens) {
|
|
74
|
-
const s = a.getPropertyValue(o.name).trim();
|
|
75
|
-
t[o.name] = this._normalizeColor(s) ?? "#000000";
|
|
76
|
-
}
|
|
77
|
-
this._values = t;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Convert any CSS color value into a 6-digit hex form that color inputs
|
|
81
|
-
* accept. Returns null if the value can't be parsed.
|
|
82
|
-
*/
|
|
83
|
-
_normalizeColor(e) {
|
|
84
|
-
if (!e) return null;
|
|
85
|
-
const r = e.trim().toLowerCase();
|
|
86
|
-
if (/^#[0-9a-f]{6}$/.test(r)) return r;
|
|
87
|
-
if (/^#[0-9a-f]{3}$/.test(r)) {
|
|
88
|
-
const [t, o, s] = r.slice(1);
|
|
89
|
-
return `#${t}${t}${o}${o}${s}${s}`;
|
|
90
|
-
}
|
|
91
|
-
const a = r.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);
|
|
92
|
-
if (a) {
|
|
93
|
-
const t = (o) => parseInt(o, 10).toString(16).padStart(2, "0");
|
|
94
|
-
return `#${t(a[1])}${t(a[2])}${t(a[3])}`;
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
/** Walk up from the host to find a sibling/ancestor `<cg-theme>`. */
|
|
99
|
-
_findThemeTarget() {
|
|
100
|
-
let e = this.parentNode;
|
|
101
|
-
for (; e; ) {
|
|
102
|
-
if (e instanceof HTMLElement && e.tagName.toLowerCase() === "cg-theme")
|
|
103
|
-
return e;
|
|
104
|
-
e = e instanceof ShadowRoot ? e.host : e.parentNode;
|
|
105
|
-
}
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
_applyToTheme() {
|
|
109
|
-
const e = this._findThemeTarget();
|
|
110
|
-
e && (e.tokens = { ...this._values });
|
|
111
|
-
}
|
|
112
|
-
_onColorChange(e, r) {
|
|
113
|
-
this._values = { ...this._values, [e]: r }, this._applyToTheme(), this.dispatchEvent(new CustomEvent("cg-theme-change", {
|
|
114
|
-
detail: { tokens: this._values },
|
|
115
|
-
bubbles: !0,
|
|
116
|
-
composed: !0
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
render() {
|
|
120
|
-
return c`
|
|
121
|
-
<div class="panel">
|
|
122
|
-
<header class=${this.collapsed ? "collapsed" : ""} @click=${this._onToggle}>
|
|
123
|
-
<span class="title">Theme</span>
|
|
124
|
-
<button class="toggle" type="button" aria-label=${this.collapsed ? "Expand" : "Collapse"}>
|
|
125
|
-
${this.collapsed ? "+" : "–"}
|
|
126
|
-
</button>
|
|
127
|
-
</header>
|
|
128
|
-
${this.collapsed ? h : c`
|
|
129
|
-
<div class="panel-body">
|
|
130
|
-
${this.editableTokens.map((e) => c`
|
|
131
|
-
<div class="row">
|
|
132
|
-
<label for=${`tok-${e.name}`}>${e.label}</label>
|
|
133
|
-
<input
|
|
134
|
-
id=${`tok-${e.name}`}
|
|
135
|
-
type="color"
|
|
136
|
-
.value=${this._values[e.name] ?? "#000000"}
|
|
137
|
-
@input=${(r) => this._onColorChange(e.name, r.target.value)}
|
|
138
|
-
/>
|
|
139
|
-
</div>
|
|
140
|
-
`)}
|
|
141
|
-
|
|
142
|
-
<label
|
|
143
|
-
class="image-drop ${this._dragover ? "dragover" : ""} ${this.themeFromImage ? "" : "disabled"}"
|
|
144
|
-
@dragenter=${this._onDragEnter}
|
|
145
|
-
@dragover=${(e) => e.preventDefault()}
|
|
146
|
-
@dragleave=${this._onDragLeave}
|
|
147
|
-
@drop=${this._onDrop}
|
|
148
|
-
>
|
|
149
|
-
${this.themeFromImage ? c`Drop a logo or <strong>browse</strong> to extract a palette.` : c`Image extraction not configured.`}
|
|
150
|
-
<input
|
|
151
|
-
type="file"
|
|
152
|
-
accept="image/*"
|
|
153
|
-
?disabled=${!this.themeFromImage}
|
|
154
|
-
@change=${this._onImageInputChange}
|
|
155
|
-
/>
|
|
156
|
-
</label>
|
|
157
|
-
|
|
158
|
-
<div class="footer">
|
|
159
|
-
<button type="button" @click=${this._onCopy}>Copy JSON</button>
|
|
160
|
-
<button type="button" @click=${this._onReset}>Reset</button>
|
|
161
|
-
</div>
|
|
162
|
-
|
|
163
|
-
${this._showCopied ? c`<span class="copied">Copied</span>` : h}
|
|
164
|
-
</div>
|
|
165
|
-
`}
|
|
166
|
-
</div>
|
|
167
|
-
`;
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
i.styles = [_, w, f`
|
|
171
|
-
:host {
|
|
172
|
-
position: fixed;
|
|
173
|
-
bottom: var(--cg-spacing-16);
|
|
174
|
-
right: var(--cg-spacing-16);
|
|
175
|
-
z-index: var(--cg-z-index-top, 1000);
|
|
176
|
-
font-family: var(--cg-font-family-primary, system-ui, sans-serif);
|
|
177
|
-
color: var(--cg-color-surface-base-text);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
:host([anchor="bottom-left"]) { right: auto; left: var(--cg-spacing-16); }
|
|
181
|
-
:host([anchor="top-right"]) { bottom: auto; top: var(--cg-spacing-16); }
|
|
182
|
-
:host([anchor="top-left"]) { right: auto; left: var(--cg-spacing-16); bottom: auto; top: var(--cg-spacing-16); }
|
|
183
|
-
|
|
184
|
-
.panel {
|
|
185
|
-
width: var(--cg-component-theme-editor-width, 280px);
|
|
186
|
-
background: var(--cg-color-surface-container-background);
|
|
187
|
-
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
188
|
-
border-radius: var(--cg-border-radius-150);
|
|
189
|
-
box-shadow: var(--cg-shadow-elevation-md, 0 8px 24px rgba(0, 0, 0, 0.18));
|
|
190
|
-
overflow: hidden;
|
|
191
|
-
transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
:host([collapsed]) .panel-body { display: none; }
|
|
195
|
-
|
|
196
|
-
header {
|
|
197
|
-
display: flex;
|
|
198
|
-
align-items: center;
|
|
199
|
-
gap: var(--cg-spacing-8);
|
|
200
|
-
padding: var(--cg-spacing-8) var(--cg-spacing-12);
|
|
201
|
-
background: var(--cg-color-action-tertiary-background-hover);
|
|
202
|
-
cursor: grab;
|
|
203
|
-
user-select: none;
|
|
204
|
-
border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
205
|
-
}
|
|
206
|
-
header.collapsed { border-bottom: 0; }
|
|
207
|
-
.title {
|
|
208
|
-
flex: 1 1 auto;
|
|
209
|
-
font-size: var(--cg-font-size-xs);
|
|
210
|
-
font-weight: var(--cg-font-weight-medium);
|
|
211
|
-
letter-spacing: 0.04em;
|
|
212
|
-
text-transform: uppercase;
|
|
213
|
-
color: var(--cg-color-surface-container-outlined);
|
|
214
|
-
}
|
|
215
|
-
.toggle {
|
|
216
|
-
background: transparent;
|
|
217
|
-
border: 0;
|
|
218
|
-
color: var(--cg-color-surface-container-outlined);
|
|
219
|
-
cursor: pointer;
|
|
220
|
-
padding: var(--cg-spacing-2) var(--cg-spacing-4);
|
|
221
|
-
font-size: var(--cg-font-size-xs);
|
|
222
|
-
border-radius: var(--cg-border-radius-50);
|
|
223
|
-
}
|
|
224
|
-
.toggle:hover { color: var(--cg-color-surface-base-text); background: var(--cg-color-action-tertiary-background-hover); }
|
|
225
|
-
|
|
226
|
-
.panel-body {
|
|
227
|
-
padding: var(--cg-spacing-12);
|
|
228
|
-
display: flex;
|
|
229
|
-
flex-direction: column;
|
|
230
|
-
gap: var(--cg-spacing-12);
|
|
231
|
-
max-height: 60vh;
|
|
232
|
-
overflow-y: auto;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.row {
|
|
236
|
-
display: grid;
|
|
237
|
-
grid-template-columns: 1fr auto;
|
|
238
|
-
align-items: center;
|
|
239
|
-
gap: var(--cg-spacing-8);
|
|
240
|
-
}
|
|
241
|
-
.row label {
|
|
242
|
-
font-size: var(--cg-font-size-xs);
|
|
243
|
-
color: var(--cg-color-surface-container-outlined);
|
|
244
|
-
min-width: 0;
|
|
245
|
-
overflow: hidden;
|
|
246
|
-
text-overflow: ellipsis;
|
|
247
|
-
white-space: nowrap;
|
|
248
|
-
}
|
|
249
|
-
.row input[type="color"] {
|
|
250
|
-
width: var(--cg-spacing-32);
|
|
251
|
-
height: var(--cg-spacing-24);
|
|
252
|
-
padding: 0;
|
|
253
|
-
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
254
|
-
border-radius: var(--cg-border-radius-50);
|
|
255
|
-
background: transparent;
|
|
256
|
-
cursor: pointer;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
.image-drop {
|
|
260
|
-
display: flex;
|
|
261
|
-
flex-direction: column;
|
|
262
|
-
align-items: center;
|
|
263
|
-
justify-content: center;
|
|
264
|
-
padding: var(--cg-spacing-16);
|
|
265
|
-
border: var(--cg-border-width-50) dashed var(--cg-color-surface-cards-border);
|
|
266
|
-
border-radius: var(--cg-border-radius-100);
|
|
267
|
-
font-size: var(--cg-font-size-xs);
|
|
268
|
-
color: var(--cg-color-surface-container-outlined);
|
|
269
|
-
cursor: pointer;
|
|
270
|
-
text-align: center;
|
|
271
|
-
transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
272
|
-
}
|
|
273
|
-
.image-drop:hover, .image-drop.dragover {
|
|
274
|
-
border-color: var(--cg-color-action-primary-border-default);
|
|
275
|
-
background: var(--cg-color-action-tertiary-background-hover);
|
|
276
|
-
}
|
|
277
|
-
.image-drop input { display: none; }
|
|
278
|
-
.image-drop.disabled {
|
|
279
|
-
opacity: 0.5;
|
|
280
|
-
cursor: not-allowed;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.footer {
|
|
284
|
-
display: flex;
|
|
285
|
-
gap: var(--cg-spacing-8);
|
|
286
|
-
padding-top: var(--cg-spacing-8);
|
|
287
|
-
border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
288
|
-
}
|
|
289
|
-
.footer button {
|
|
290
|
-
flex: 1 1 0;
|
|
291
|
-
padding: var(--cg-spacing-6) var(--cg-spacing-8);
|
|
292
|
-
background: transparent;
|
|
293
|
-
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
294
|
-
border-radius: var(--cg-border-radius-50);
|
|
295
|
-
font: inherit;
|
|
296
|
-
font-size: var(--cg-font-size-xs);
|
|
297
|
-
color: var(--cg-color-surface-base-text);
|
|
298
|
-
cursor: pointer;
|
|
299
|
-
}
|
|
300
|
-
.footer button:hover { background: var(--cg-color-action-tertiary-background-hover); }
|
|
301
|
-
|
|
302
|
-
.copied {
|
|
303
|
-
position: absolute;
|
|
304
|
-
bottom: calc(100% + var(--cg-spacing-4));
|
|
305
|
-
right: 0;
|
|
306
|
-
padding: var(--cg-spacing-4) var(--cg-spacing-8);
|
|
307
|
-
background: var(--cg-color-action-primary-background-default);
|
|
308
|
-
color: var(--cg-color-action-primary-text-default);
|
|
309
|
-
border-radius: var(--cg-border-radius-50);
|
|
310
|
-
font-size: var(--cg-font-size-xs);
|
|
311
|
-
pointer-events: none;
|
|
312
|
-
}
|
|
313
|
-
`];
|
|
314
|
-
n([
|
|
315
|
-
d({ reflect: !0 })
|
|
316
|
-
], i.prototype, "anchor", 2);
|
|
317
|
-
n([
|
|
318
|
-
d({ type: Boolean, reflect: !0 })
|
|
319
|
-
], i.prototype, "collapsed", 2);
|
|
320
|
-
n([
|
|
321
|
-
d({ attribute: !1 })
|
|
322
|
-
], i.prototype, "editableTokens", 2);
|
|
323
|
-
n([
|
|
324
|
-
d({ attribute: !1 })
|
|
325
|
-
], i.prototype, "themeFromImage", 2);
|
|
326
|
-
n([
|
|
327
|
-
g()
|
|
328
|
-
], i.prototype, "_values", 2);
|
|
329
|
-
n([
|
|
330
|
-
g()
|
|
331
|
-
], i.prototype, "_showCopied", 2);
|
|
332
|
-
n([
|
|
333
|
-
g()
|
|
334
|
-
], i.prototype, "_dragover", 2);
|
|
335
|
-
i = n([
|
|
336
|
-
y("cg-theme-editor")
|
|
337
|
-
], i);
|
|
338
|
-
export {
|
|
339
|
-
i as CgThemeEditor
|
|
340
|
-
};
|
|
341
|
-
//# sourceMappingURL=cg-theme-editor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cg-theme-editor.js","sources":["../../../src/components/cg-theme-editor/cg-theme-editor.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-theme-editor\n * Live, in-app token editor that drives the closest ancestor\n * `<cg-theme>` element. Drop into your dev/staging build to retune tier-2\n * tokens without rebuilding — color pickers, sliders, and an image-drop\n * zone that runs `themeFromImage()` to extract a palette from a logo.\n *\n * The editor walks up from the host to find a `<cg-theme>` ancestor and\n * mutates its `tokens` prop on every change. There is no global side\n * effect — clearing the editor (or removing it) leaves the theme as it\n * was on the cg-theme element.\n *\n * Pair with the `themeFromImage()` API exported from\n * `@cognivo/theme-generator` for image-driven palette extraction. The\n * editor accepts a `themeFromImage` callback prop; consumers wire it\n * once at mount time so this package stays free of a workspace-wide\n * dependency on theme-generator.\n *\n * @example\n * ```html\n * <cg-theme>\n * <App />\n * <cg-theme-editor></cg-theme-editor>\n * </cg-theme>\n * ```\n *\n * @example With image extraction wired up\n * ```ts\n * import { themeFromImage, paletteToCssVars } from '@cognivo/theme-generator';\n * editor.themeFromImage = (data) => paletteToCssVars(themeFromImage(data));\n * ```\n *\n * @fires {CustomEvent<{tokens: Record<string,string>}>} cg-theme-change - On every token change.\n *\n * @cssprop --cg-component-theme-editor-width - Panel width (default 280px)\n */\n@customElement('cg-theme-editor')\nexport class CgThemeEditor extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n position: fixed;\n bottom: var(--cg-spacing-16);\n right: var(--cg-spacing-16);\n z-index: var(--cg-z-index-top, 1000);\n font-family: var(--cg-font-family-primary, system-ui, sans-serif);\n color: var(--cg-color-surface-base-text);\n }\n\n :host([anchor=\"bottom-left\"]) { right: auto; left: var(--cg-spacing-16); }\n :host([anchor=\"top-right\"]) { bottom: auto; top: var(--cg-spacing-16); }\n :host([anchor=\"top-left\"]) { right: auto; left: var(--cg-spacing-16); bottom: auto; top: var(--cg-spacing-16); }\n\n .panel {\n width: var(--cg-component-theme-editor-width, 280px);\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-150);\n box-shadow: var(--cg-shadow-elevation-md, 0 8px 24px rgba(0, 0, 0, 0.18));\n overflow: hidden;\n transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n\n :host([collapsed]) .panel-body { display: none; }\n\n header {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n background: var(--cg-color-action-tertiary-background-hover);\n cursor: grab;\n user-select: none;\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n header.collapsed { border-bottom: 0; }\n .title {\n flex: 1 1 auto;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--cg-color-surface-container-outlined);\n }\n .toggle {\n background: transparent;\n border: 0;\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n padding: var(--cg-spacing-2) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n border-radius: var(--cg-border-radius-50);\n }\n .toggle:hover { color: var(--cg-color-surface-base-text); background: var(--cg-color-action-tertiary-background-hover); }\n\n .panel-body {\n padding: var(--cg-spacing-12);\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-12);\n max-height: 60vh;\n overflow-y: auto;\n }\n\n .row {\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n gap: var(--cg-spacing-8);\n }\n .row label {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .row input[type=\"color\"] {\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-24);\n padding: 0;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n cursor: pointer;\n }\n\n .image-drop {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--cg-spacing-16);\n border: var(--cg-border-width-50) dashed var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n text-align: center;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .image-drop:hover, .image-drop.dragover {\n border-color: var(--cg-color-action-primary-border-default);\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .image-drop input { display: none; }\n .image-drop.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .footer {\n display: flex;\n gap: var(--cg-spacing-8);\n padding-top: var(--cg-spacing-8);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n .footer button {\n flex: 1 1 0;\n padding: var(--cg-spacing-6) var(--cg-spacing-8);\n background: transparent;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-50);\n font: inherit;\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n }\n .footer button:hover { background: var(--cg-color-action-tertiary-background-hover); }\n\n .copied {\n position: absolute;\n bottom: calc(100% + var(--cg-spacing-4));\n right: 0;\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: var(--cg-border-radius-50);\n font-size: var(--cg-font-size-xs);\n pointer-events: none;\n }\n `];\n\n /** Where the panel docks. */\n @property({ reflect: true }) anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right';\n\n /** Start collapsed. */\n @property({ type: Boolean, reflect: true }) collapsed = false;\n\n /**\n * The set of tokens the editor exposes. Each entry: { name, label, type }.\n * Type \"color\" renders an `<input type=\"color\">`. Default is the small\n * brand-defining set that maps cleanly to most designs.\n */\n @property({ attribute: false }) editableTokens: Array<{ name: string; label: string; type: 'color' }> = [\n { name: '--cg-color-action-primary-background-default', label: 'Primary', type: 'color' },\n { name: '--cg-color-action-primary-text-default', label: 'Primary text', type: 'color' },\n { name: '--cg-color-action-secondary-background-default', label: 'Secondary', type: 'color' },\n { name: '--cg-color-accent-text', label: 'Accent', type: 'color' },\n { name: '--cg-color-surface-base-background', label: 'Surface bg', type: 'color' },\n { name: '--cg-color-surface-base-text', label: 'Surface text', type: 'color' },\n { name: '--cg-color-surface-cards-background', label: 'Card bg', type: 'color' },\n { name: '--cg-color-surface-cards-border', label: 'Border', type: 'color' },\n ];\n\n /**\n * Optional callback that converts an RGBAImageData into a token override.\n * Wire `themeFromImage` + `paletteToCssVars` here. When unset, the\n * image-drop zone is disabled.\n */\n @property({ attribute: false })\n themeFromImage:\n | ((image: { data: Uint8ClampedArray | Uint8Array | number[]; width: number; height: number }) => Record<string, string>)\n | null = null;\n\n @state() private _values: Record<string, string> = {};\n @state() private _showCopied = false;\n @state() private _dragover = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._readInitialValues();\n }\n\n /**\n * Read the current resolved value of each editable token from the page\n * so the color inputs start populated. Falls back to \"#000000\" for\n * unresolvable values; the input still works once the user picks.\n */\n private _readInitialValues(): void {\n const target = this._findThemeTarget();\n const probe = target ?? this;\n const cs = window.getComputedStyle(probe);\n const next: Record<string, string> = {};\n for (const t of this.editableTokens) {\n const v = cs.getPropertyValue(t.name).trim();\n next[t.name] = this._normalizeColor(v) ?? '#000000';\n }\n this._values = next;\n }\n\n /**\n * Convert any CSS color value into a 6-digit hex form that color inputs\n * accept. Returns null if the value can't be parsed.\n */\n private _normalizeColor(value: string): string | null {\n if (!value) return null;\n const v = value.trim().toLowerCase();\n if (/^#[0-9a-f]{6}$/.test(v)) return v;\n if (/^#[0-9a-f]{3}$/.test(v)) {\n const [r, g, b] = v.slice(1);\n return `#${r}${r}${g}${g}${b}${b}`;\n }\n const rgb = v.match(/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n if (rgb) {\n const to2 = (n: string) => parseInt(n, 10).toString(16).padStart(2, '0');\n return `#${to2(rgb[1]!)}${to2(rgb[2]!)}${to2(rgb[3]!)}`;\n }\n return null;\n }\n\n /** Walk up from the host to find a sibling/ancestor `<cg-theme>`. */\n private _findThemeTarget(): HTMLElement | null {\n let cursor: Node | null = this.parentNode;\n while (cursor) {\n if (cursor instanceof HTMLElement && cursor.tagName.toLowerCase() === 'cg-theme') {\n return cursor;\n }\n cursor = cursor instanceof ShadowRoot ? cursor.host : (cursor as Node).parentNode;\n }\n return null;\n }\n\n private _applyToTheme(): void {\n const target = this._findThemeTarget();\n if (!target) return;\n // Assign a NEW object reference so cg-theme's @property re-renders.\n (target as unknown as { tokens: Record<string, string> | null }).tokens = { ...this._values };\n }\n\n private _onColorChange(name: string, value: string): void {\n this._values = { ...this._values, [name]: value };\n this._applyToTheme();\n this.dispatchEvent(new CustomEvent('cg-theme-change', {\n detail: { tokens: this._values },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _onImagePicked = (file: File): void => {\n if (!this.themeFromImage) return;\n const img = new Image();\n const url = URL.createObjectURL(file);\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n ctx.drawImage(img, 0, 0);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const tokens = this.themeFromImage!(imageData);\n // Merge the extracted tokens into the editor's known values where\n // there's overlap; for non-overlapping tokens, push them through\n // directly so the cg-theme picks them up too.\n const merged = { ...this._values };\n for (const [k, v] of Object.entries(tokens)) {\n const norm = this._normalizeColor(v);\n if (norm) merged[k] = norm;\n }\n this._values = merged;\n this._applyToTheme();\n URL.revokeObjectURL(url);\n };\n img.src = url;\n };\n\n private _onImageInputChange = (e: Event): void => {\n const input = e.target as HTMLInputElement;\n const file = input.files?.[0];\n if (file) this._onImagePicked(file);\n };\n\n private _onDragEnter = (e: DragEvent): void => {\n e.preventDefault();\n this._dragover = true;\n };\n\n private _onDragLeave = (): void => {\n this._dragover = false;\n };\n\n private _onDrop = (e: DragEvent): void => {\n e.preventDefault();\n this._dragover = false;\n const file = e.dataTransfer?.files?.[0];\n if (file) this._onImagePicked(file);\n };\n\n private _onReset = (): void => {\n const target = this._findThemeTarget();\n if (target) (target as unknown as { tokens: Record<string, string> | null }).tokens = null;\n this._readInitialValues();\n this.dispatchEvent(new CustomEvent('cg-theme-change', {\n detail: { tokens: {} },\n bubbles: true,\n composed: true,\n }));\n };\n\n private _onCopy = (): void => {\n const json = JSON.stringify(this._values, null, 2);\n if (navigator.clipboard?.writeText) {\n void navigator.clipboard.writeText(json);\n }\n this._showCopied = true;\n setTimeout(() => { this._showCopied = false; }, 1200);\n };\n\n private _onToggle = (): void => {\n this.collapsed = !this.collapsed;\n };\n\n override render() {\n return html`\n <div class=\"panel\">\n <header class=${this.collapsed ? 'collapsed' : ''} @click=${this._onToggle}>\n <span class=\"title\">Theme</span>\n <button class=\"toggle\" type=\"button\" aria-label=${this.collapsed ? 'Expand' : 'Collapse'}>\n ${this.collapsed ? '+' : '–'}\n </button>\n </header>\n ${this.collapsed ? nothing : html`\n <div class=\"panel-body\">\n ${this.editableTokens.map(t => html`\n <div class=\"row\">\n <label for=${`tok-${t.name}`}>${t.label}</label>\n <input\n id=${`tok-${t.name}`}\n type=\"color\"\n .value=${this._values[t.name] ?? '#000000'}\n @input=${(e: Event) => this._onColorChange(t.name, (e.target as HTMLInputElement).value)}\n />\n </div>\n `)}\n\n <label\n class=\"image-drop ${this._dragover ? 'dragover' : ''} ${this.themeFromImage ? '' : 'disabled'}\"\n @dragenter=${this._onDragEnter}\n @dragover=${(e: Event) => e.preventDefault()}\n @dragleave=${this._onDragLeave}\n @drop=${this._onDrop}\n >\n ${this.themeFromImage\n ? html`Drop a logo or <strong>browse</strong> to extract a palette.`\n : html`Image extraction not configured.`}\n <input\n type=\"file\"\n accept=\"image/*\"\n ?disabled=${!this.themeFromImage}\n @change=${this._onImageInputChange}\n />\n </label>\n\n <div class=\"footer\">\n <button type=\"button\" @click=${this._onCopy}>Copy JSON</button>\n <button type=\"button\" @click=${this._onReset}>Reset</button>\n </div>\n\n ${this._showCopied ? html`<span class=\"copied\">Copied</span>` : nothing}\n </div>\n `}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-theme-editor': CgThemeEditor;\n }\n}\n"],"names":["CgThemeEditor","LitElement","file","img","url","canvas","ctx","imageData","tokens","merged","k","v","norm","target","json","probe","cs","next","t","value","r","g","b","rgb","to2","n","cursor","name","html","nothing","e","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
type GroupBy = 'none' | 'day' | 'week' | 'month' | 'year';
|
|
3
|
-
/**
|
|
4
|
-
* @element cg-timeline
|
|
5
|
-
* Vertical (default) or horizontal sequence of `<cg-timeline-event>`
|
|
6
|
-
* children. The container handles three things automatically as events
|
|
7
|
-
* are added/removed:
|
|
8
|
-
*
|
|
9
|
-
* 1. Marks the final event with `last` so the trailing connector hides.
|
|
10
|
-
* 2. Propagates `direction` so children flip layout for horizontal mode.
|
|
11
|
-
* 3. Groups events by day / week / month / year — when `group-by` is set,
|
|
12
|
-
* the container reads each child's `date` prop, computes a bucket key,
|
|
13
|
-
* and stamps the first event of each bucket with a `group-header=`
|
|
14
|
-
* attribute (e.g. "Today", "Yesterday", "Mar 5", "March", "2024").
|
|
15
|
-
* The child then renders that label as a sticky-feel section header
|
|
16
|
-
* above its dot/body. Headers use Intl, so they respect `locale`.
|
|
17
|
-
*
|
|
18
|
-
* Vertical layout only supports group headers — horizontal timelines are
|
|
19
|
-
* a different UX problem (cluster headers above runs of same-day events
|
|
20
|
-
* would compete with the time-axis); set `group-by="none"` (default) for
|
|
21
|
-
* horizontal.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```html
|
|
25
|
-
* <cg-timeline group-by="day" label="Patient activity">
|
|
26
|
-
* <cg-timeline-event date="2026-05-04T09:14" timestamp="09:14">Checked in</cg-timeline-event>
|
|
27
|
-
* <cg-timeline-event date="2026-05-04T09:30" timestamp="09:30" variant="success">Consultation</cg-timeline-event>
|
|
28
|
-
* <cg-timeline-event date="2026-05-03T16:20" timestamp="16:20">Lab results uploaded</cg-timeline-event>
|
|
29
|
-
* <cg-timeline-event date="2026-04-28T11:00" timestamp="Apr 28">Initial visit</cg-timeline-event>
|
|
30
|
-
* </cg-timeline>
|
|
31
|
-
* <!-- renders headers: Today / Yesterday / Apr 28 -->
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @slot - cg-timeline-event children.
|
|
35
|
-
*
|
|
36
|
-
* @cssprop --cg-component-timeline-event-gap - Gap between events (default 0)
|
|
37
|
-
*/
|
|
38
|
-
export declare class CgTimeline extends LitElement {
|
|
39
|
-
static styles: import('lit').CSSResult[];
|
|
40
|
-
/** Layout direction. */
|
|
41
|
-
direction: 'vertical' | 'horizontal';
|
|
42
|
-
/** Accessible label for the timeline as a whole. */
|
|
43
|
-
label: string;
|
|
44
|
-
/**
|
|
45
|
-
* Auto-grouping mode. When set, events with a `date` prop are bucketed
|
|
46
|
-
* and the first event in each bucket gets a `group-header` attribute
|
|
47
|
-
* with a localized label (Today / Yesterday / weekday / "Mar 5" / etc).
|
|
48
|
-
* Vertical layout only.
|
|
49
|
-
*/
|
|
50
|
-
groupBy: GroupBy;
|
|
51
|
-
/** BCP 47 locale for group header formatting. Defaults to the document language. */
|
|
52
|
-
locale: string | undefined;
|
|
53
|
-
updated(changed: Map<string, unknown>): void;
|
|
54
|
-
private _syncChildren;
|
|
55
|
-
/** Stable bucket key for a date under a given grouping unit. */
|
|
56
|
-
private _groupKey;
|
|
57
|
-
/** Localized header label using Intl. */
|
|
58
|
-
private _formatLabel;
|
|
59
|
-
private _stripTime;
|
|
60
|
-
private _mondayOf;
|
|
61
|
-
private _onSlotChange;
|
|
62
|
-
render(): import('lit').TemplateResult<1>;
|
|
63
|
-
}
|
|
64
|
-
declare global {
|
|
65
|
-
interface HTMLElementTagNameMap {
|
|
66
|
-
'cg-timeline': CgTimeline;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
export {};
|
|
70
|
-
//# sourceMappingURL=cg-timeline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cg-timeline.d.ts","sourceRoot":"","sources":["../../../src/components/cg-timeline/cg-timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,2CAA2C,CAAC;AAEnD,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAiBnB;IAEH,wBAAwB;IACK,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE/E,oDAAoD;IACxC,KAAK,SAAc;IAE/B;;;;;OAKG;IACiD,OAAO,EAAE,OAAO,CAAU;IAE9E,oFAAoF;IACxE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM9C,OAAO,CAAC,aAAa;IAwCrB,gEAAgE;IAChE,OAAO,CAAC,SAAS;IAejB,yCAAyC;IACzC,OAAO,CAAC,YAAY;IA+CpB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa,CAEnB;IAEO,MAAM;CAOhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { css as g, LitElement as f, html as p } from "lit";
|
|
2
|
-
import { property as h, customElement as y } from "lit/decorators.js";
|
|
3
|
-
import { h as d, r as w } from "../../chunks/premium.css-9I4kHrsl.js";
|
|
4
|
-
import "../cg-timeline-event/cg-timeline-event.js";
|
|
5
|
-
var v = Object.defineProperty, D = Object.getOwnPropertyDescriptor, u = (t, e, r, n) => {
|
|
6
|
-
for (var i = n > 1 ? void 0 : n ? D(e, r) : e, o = t.length - 1, s; o >= 0; o--)
|
|
7
|
-
(s = t[o]) && (i = (n ? s(e, r, i) : s(i)) || i);
|
|
8
|
-
return n && i && v(e, r, i), i;
|
|
9
|
-
};
|
|
10
|
-
let l = class extends f {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments), this.direction = "vertical", this.label = "Timeline", this.groupBy = "none", this._onSlotChange = (t) => {
|
|
13
|
-
this._syncChildren(t.target);
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
updated(t) {
|
|
17
|
-
(t.has("direction") || t.has("groupBy") || t.has("locale")) && this._syncChildren();
|
|
18
|
-
}
|
|
19
|
-
_syncChildren(t) {
|
|
20
|
-
const e = t ?? this.shadowRoot?.querySelector("slot");
|
|
21
|
-
if (!e) return;
|
|
22
|
-
const r = e.assignedElements({ flatten: !0 }).filter((o) => o.tagName.toLowerCase() === "cg-timeline-event"), n = this.direction === "vertical" ? this.groupBy : "none";
|
|
23
|
-
let i = "";
|
|
24
|
-
r.forEach((o, s) => {
|
|
25
|
-
if (s === r.length - 1 ? o.setAttribute("last", "") : o.removeAttribute("last"), o.setAttribute("direction", this.direction), n === "none") {
|
|
26
|
-
o.removeAttribute("group-header");
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const a = o.date || o.getAttribute("date") || "";
|
|
30
|
-
if (!a) {
|
|
31
|
-
o.removeAttribute("group-header");
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const m = new Date(a);
|
|
35
|
-
if (Number.isNaN(m.valueOf())) {
|
|
36
|
-
o.removeAttribute("group-header");
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const c = this._groupKey(m, n);
|
|
40
|
-
c !== i ? (o.setAttribute("group-header", this._formatLabel(m, n)), i = c) : o.removeAttribute("group-header");
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
/** Stable bucket key for a date under a given grouping unit. */
|
|
44
|
-
_groupKey(t, e) {
|
|
45
|
-
if (e === "year") return `Y:${t.getFullYear()}`;
|
|
46
|
-
if (e === "month") return `M:${t.getFullYear()}-${t.getMonth()}`;
|
|
47
|
-
if (e === "week") {
|
|
48
|
-
const r = new Date(t);
|
|
49
|
-
r.setHours(0, 0, 0, 0);
|
|
50
|
-
const n = r.getDay() || 7;
|
|
51
|
-
return r.setDate(r.getDate() - n + 1), `W:${r.getFullYear()}-${r.getMonth()}-${r.getDate()}`;
|
|
52
|
-
}
|
|
53
|
-
return `D:${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`;
|
|
54
|
-
}
|
|
55
|
-
/** Localized header label using Intl. */
|
|
56
|
-
_formatLabel(t, e) {
|
|
57
|
-
const r = this.locale ?? (typeof document < "u" && document.documentElement.lang || void 0), n = /* @__PURE__ */ new Date(), i = t.getFullYear() === n.getFullYear();
|
|
58
|
-
if (e === "day") {
|
|
59
|
-
const o = this._stripTime(n), s = this._stripTime(t), a = Math.round((o.getTime() - s.getTime()) / 864e5);
|
|
60
|
-
return a === 0 ? "Today" : a === 1 ? "Yesterday" : a === -1 ? "Tomorrow" : a > 1 && a < 7 ? new Intl.DateTimeFormat(r, { weekday: "long" }).format(t) : new Intl.DateTimeFormat(
|
|
61
|
-
r,
|
|
62
|
-
i ? { month: "short", day: "numeric" } : { month: "short", day: "numeric", year: "numeric" }
|
|
63
|
-
).format(t);
|
|
64
|
-
}
|
|
65
|
-
if (e === "week") {
|
|
66
|
-
const o = this._mondayOf(t), s = this._mondayOf(n), a = Math.round((s.getTime() - o.getTime()) / (7 * 864e5));
|
|
67
|
-
return a === 0 ? "This week" : a === 1 ? "Last week" : a === -1 ? "Next week" : `Week of ${new Intl.DateTimeFormat(
|
|
68
|
-
r,
|
|
69
|
-
i ? { month: "short", day: "numeric" } : { month: "short", day: "numeric", year: "numeric" }
|
|
70
|
-
).format(o)}`;
|
|
71
|
-
}
|
|
72
|
-
if (e === "month") {
|
|
73
|
-
if (i && t.getMonth() === n.getMonth()) return "This month";
|
|
74
|
-
const s = new Date(n.getFullYear(), n.getMonth() - 1, 1);
|
|
75
|
-
return t.getFullYear() === s.getFullYear() && t.getMonth() === s.getMonth() ? "Last month" : new Intl.DateTimeFormat(r, i ? { month: "long" } : { month: "long", year: "numeric" }).format(t);
|
|
76
|
-
}
|
|
77
|
-
return i ? "This year" : t.getFullYear() === n.getFullYear() - 1 ? "Last year" : new Intl.DateTimeFormat(r, { year: "numeric" }).format(t);
|
|
78
|
-
}
|
|
79
|
-
_stripTime(t) {
|
|
80
|
-
const e = new Date(t);
|
|
81
|
-
return e.setHours(0, 0, 0, 0), e;
|
|
82
|
-
}
|
|
83
|
-
_mondayOf(t) {
|
|
84
|
-
const e = this._stripTime(t), r = e.getDay() || 7;
|
|
85
|
-
return e.setDate(e.getDate() - r + 1), e;
|
|
86
|
-
}
|
|
87
|
-
render() {
|
|
88
|
-
return p`
|
|
89
|
-
<ol class="list" role="list" aria-label=${this.label}>
|
|
90
|
-
<slot @slotchange=${this._onSlotChange}></slot>
|
|
91
|
-
</ol>
|
|
92
|
-
`;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
l.styles = [d, w, g`
|
|
96
|
-
:host {
|
|
97
|
-
display: block;
|
|
98
|
-
}
|
|
99
|
-
.list {
|
|
100
|
-
display: flex;
|
|
101
|
-
flex-direction: column;
|
|
102
|
-
gap: var(--cg-component-timeline-event-gap, 0);
|
|
103
|
-
list-style: none;
|
|
104
|
-
margin: 0;
|
|
105
|
-
padding: 0;
|
|
106
|
-
}
|
|
107
|
-
:host([direction="horizontal"]) .list {
|
|
108
|
-
flex-direction: row;
|
|
109
|
-
align-items: flex-start;
|
|
110
|
-
overflow-x: auto;
|
|
111
|
-
}
|
|
112
|
-
`];
|
|
113
|
-
u([
|
|
114
|
-
h({ reflect: !0 })
|
|
115
|
-
], l.prototype, "direction", 2);
|
|
116
|
-
u([
|
|
117
|
-
h()
|
|
118
|
-
], l.prototype, "label", 2);
|
|
119
|
-
u([
|
|
120
|
-
h({ attribute: "group-by", reflect: !0 })
|
|
121
|
-
], l.prototype, "groupBy", 2);
|
|
122
|
-
u([
|
|
123
|
-
h()
|
|
124
|
-
], l.prototype, "locale", 2);
|
|
125
|
-
l = u([
|
|
126
|
-
y("cg-timeline")
|
|
127
|
-
], l);
|
|
128
|
-
export {
|
|
129
|
-
l as CgTimeline
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=cg-timeline.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cg-timeline.js","sources":["../../../src/components/cg-timeline/cg-timeline.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport '../cg-timeline-event/cg-timeline-event.js';\n\ntype GroupBy = 'none' | 'day' | 'week' | 'month' | 'year';\n\n/**\n * @element cg-timeline\n * Vertical (default) or horizontal sequence of `<cg-timeline-event>`\n * children. The container handles three things automatically as events\n * are added/removed:\n *\n * 1. Marks the final event with `last` so the trailing connector hides.\n * 2. Propagates `direction` so children flip layout for horizontal mode.\n * 3. Groups events by day / week / month / year — when `group-by` is set,\n * the container reads each child's `date` prop, computes a bucket key,\n * and stamps the first event of each bucket with a `group-header=`\n * attribute (e.g. \"Today\", \"Yesterday\", \"Mar 5\", \"March\", \"2024\").\n * The child then renders that label as a sticky-feel section header\n * above its dot/body. Headers use Intl, so they respect `locale`.\n *\n * Vertical layout only supports group headers — horizontal timelines are\n * a different UX problem (cluster headers above runs of same-day events\n * would compete with the time-axis); set `group-by=\"none\"` (default) for\n * horizontal.\n *\n * @example\n * ```html\n * <cg-timeline group-by=\"day\" label=\"Patient activity\">\n * <cg-timeline-event date=\"2026-05-04T09:14\" timestamp=\"09:14\">Checked in</cg-timeline-event>\n * <cg-timeline-event date=\"2026-05-04T09:30\" timestamp=\"09:30\" variant=\"success\">Consultation</cg-timeline-event>\n * <cg-timeline-event date=\"2026-05-03T16:20\" timestamp=\"16:20\">Lab results uploaded</cg-timeline-event>\n * <cg-timeline-event date=\"2026-04-28T11:00\" timestamp=\"Apr 28\">Initial visit</cg-timeline-event>\n * </cg-timeline>\n * <!-- renders headers: Today / Yesterday / Apr 28 -->\n * ```\n *\n * @slot - cg-timeline-event children.\n *\n * @cssprop --cg-component-timeline-event-gap - Gap between events (default 0)\n */\n@customElement('cg-timeline')\nexport class CgTimeline extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: block;\n }\n .list {\n display: flex;\n flex-direction: column;\n gap: var(--cg-component-timeline-event-gap, 0);\n list-style: none;\n margin: 0;\n padding: 0;\n }\n :host([direction=\"horizontal\"]) .list {\n flex-direction: row;\n align-items: flex-start;\n overflow-x: auto;\n }\n `];\n\n /** Layout direction. */\n @property({ reflect: true }) direction: 'vertical' | 'horizontal' = 'vertical';\n\n /** Accessible label for the timeline as a whole. */\n @property() label = 'Timeline';\n\n /**\n * Auto-grouping mode. When set, events with a `date` prop are bucketed\n * and the first event in each bucket gets a `group-header` attribute\n * with a localized label (Today / Yesterday / weekday / \"Mar 5\" / etc).\n * Vertical layout only.\n */\n @property({ attribute: 'group-by', reflect: true }) groupBy: GroupBy = 'none';\n\n /** BCP 47 locale for group header formatting. Defaults to the document language. */\n @property() locale: string | undefined;\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('direction') || changed.has('groupBy') || changed.has('locale')) {\n this._syncChildren();\n }\n }\n\n private _syncChildren(slot?: HTMLSlotElement) {\n const root = slot ?? this.shadowRoot?.querySelector('slot');\n if (!root) return;\n const events = (root as HTMLSlotElement).assignedElements({ flatten: true })\n .filter(el => el.tagName.toLowerCase() === 'cg-timeline-event');\n\n const grouping = this.direction === 'vertical' ? this.groupBy : 'none';\n let prevKey = '';\n\n events.forEach((el, i) => {\n // Last + direction always run.\n if (i === events.length - 1) el.setAttribute('last', '');\n else el.removeAttribute('last');\n el.setAttribute('direction', this.direction);\n\n // Grouping (vertical only).\n if (grouping === 'none') {\n el.removeAttribute('group-header');\n return;\n }\n const dateAttr = (el as any).date || el.getAttribute('date') || '';\n if (!dateAttr) {\n el.removeAttribute('group-header');\n return;\n }\n const date = new Date(dateAttr);\n if (Number.isNaN(date.valueOf())) {\n el.removeAttribute('group-header');\n return;\n }\n const key = this._groupKey(date, grouping);\n if (key !== prevKey) {\n el.setAttribute('group-header', this._formatLabel(date, grouping));\n prevKey = key;\n } else {\n el.removeAttribute('group-header');\n }\n });\n }\n\n /** Stable bucket key for a date under a given grouping unit. */\n private _groupKey(date: Date, by: Exclude<GroupBy, 'none'>): string {\n if (by === 'year') return `Y:${date.getFullYear()}`;\n if (by === 'month') return `M:${date.getFullYear()}-${date.getMonth()}`;\n if (by === 'week') {\n // ISO week: Monday-start. Anchor to the Monday of the date's week.\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n const day = d.getDay() || 7;\n d.setDate(d.getDate() - day + 1);\n return `W:${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n }\n // day\n return `D:${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n }\n\n /** Localized header label using Intl. */\n private _formatLabel(date: Date, by: Exclude<GroupBy, 'none'>): string {\n const locale = this.locale ?? (typeof document !== 'undefined' ? document.documentElement.lang || undefined : undefined);\n const now = new Date();\n const sameYear = date.getFullYear() === now.getFullYear();\n\n if (by === 'day') {\n const today = this._stripTime(now);\n const target = this._stripTime(date);\n const diffDays = Math.round((today.getTime() - target.getTime()) / 86_400_000);\n if (diffDays === 0) return 'Today';\n if (diffDays === 1) return 'Yesterday';\n if (diffDays === -1) return 'Tomorrow';\n if (diffDays > 1 && diffDays < 7) return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n return new Intl.DateTimeFormat(locale, sameYear\n ? { month: 'short', day: 'numeric' }\n : { month: 'short', day: 'numeric', year: 'numeric' }\n ).format(date);\n }\n\n if (by === 'week') {\n const monday = this._mondayOf(date);\n const thisMonday = this._mondayOf(now);\n const diffWeeks = Math.round((thisMonday.getTime() - monday.getTime()) / (7 * 86_400_000));\n if (diffWeeks === 0) return 'This week';\n if (diffWeeks === 1) return 'Last week';\n if (diffWeeks === -1) return 'Next week';\n const wkLabel = new Intl.DateTimeFormat(locale, sameYear\n ? { month: 'short', day: 'numeric' }\n : { month: 'short', day: 'numeric', year: 'numeric' }\n ).format(monday);\n return `Week of ${wkLabel}`;\n }\n\n if (by === 'month') {\n const sameMonth = sameYear && date.getMonth() === now.getMonth();\n if (sameMonth) return 'This month';\n const prev = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n if (date.getFullYear() === prev.getFullYear() && date.getMonth() === prev.getMonth()) return 'Last month';\n return new Intl.DateTimeFormat(locale, sameYear ? { month: 'long' } : { month: 'long', year: 'numeric' }).format(date);\n }\n\n // year\n if (sameYear) return 'This year';\n if (date.getFullYear() === now.getFullYear() - 1) return 'Last year';\n return new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(date);\n }\n\n private _stripTime(d: Date): Date {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n }\n\n private _mondayOf(d: Date): Date {\n const x = this._stripTime(d);\n const day = x.getDay() || 7;\n x.setDate(x.getDate() - day + 1);\n return x;\n }\n\n private _onSlotChange = (e: Event): void => {\n this._syncChildren(e.target as HTMLSlotElement);\n };\n\n override render() {\n return html`\n <ol class=\"list\" role=\"list\" aria-label=${this.label}>\n <slot @slotchange=${this._onSlotChange}></slot>\n </ol>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-timeline': CgTimeline;\n }\n}\n"],"names":["CgTimeline","LitElement","e","changed","slot","root","events","el","grouping","prevKey","i","dateAttr","date","key","by","d","day","locale","now","sameYear","today","target","diffDays","monday","thisMonday","diffWeeks","prev","x","html","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|