@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-capture-flow.js","sources":["../../../src/components/ai-capture-flow/ai-capture-flow.ts"],"sourcesContent":["/**\n * @element ai-capture-flow\n * Multi-step capture wizard: upload, preview, processing, and result with step indicator.\n *\n * @example\n * ```html\n * <ai-capture-flow\n * step=\"upload\"\n * accept=\".pdf,.jpg,.png\"\n * heading=\"Document Scan\"\n * ></ai-capture-flow>\n * ```\n *\n * @fires {CustomEvent<{file: File}>} ai-capture-file - File selected or dropped\n * @fires {CustomEvent} ai-capture-confirm - User confirmed the preview\n * @fires {CustomEvent} ai-capture-retry - User chose to retake/retry\n * @fires {CustomEvent} ai-capture-complete - User clicked Done on the result\n *\n * @cssprop [--cg-brand-ai-accent=#dfff61] - Step dots, progress fill, and primary button color\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\ntype Step = 'upload' | 'preview' | 'processing' | 'complete' | 'error';\nconst STEPS: Step[] = ['upload', 'preview', 'processing', 'complete'];\n\n@customElement('ai-capture-flow')\nexport class AiCaptureFlow extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn 200ms var(--cg-transition-easing-ease-out) both;\n }\n\n .card {\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-200);\n padding: var(--cg-spacing-16);\n }\n\n /* ── Title ── */\n .title {\n font-size: var(--cg-font-size-base);\n font-weight: var(--cg-font-weight-bold);\n color: var(--cg-color-surface-base-text);\n margin-bottom: var(--cg-spacing-16);\n }\n\n /* ── Step indicator ── */\n .steps {\n display: flex;\n align-items: center;\n gap: 0;\n margin-bottom: var(--cg-spacing-16);\n }\n .step-dot {\n width: var(--cg-spacing-24);\n height: var(--cg-spacing-24);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-bold);\n flex-shrink: 0;\n transition: opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .step-dot.done {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-base-background);\n }\n .step-dot.active {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-base-background);\n }\n .step-dot.pending {\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-input-text-placeholder);\n }\n .step-line {\n flex: 1;\n height: 2px;\n background: var(--cg-color-surface-container-background);\n transition: background var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .step-line.done { background: var(--cg-color-action-primary-background-default); }\n\n /* ── Upload zone ── */\n .upload-zone {\n border: 2px dashed var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-24) var(--cg-spacing-16);\n text-align: center;\n cursor: pointer;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .upload-zone:hover, .upload-zone.drag-over {\n border-color: var(--cg-color-surface-base-text);\n background: var(--cg-overlay-accent-subtle);\n }\n .upload-zone:focus-visible {\n outline: 2px solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n .upload-icon { font-size: var(--cg-font-size-3xl); margin-bottom: var(--cg-spacing-8); }\n .upload-text {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n line-height: 1.5;\n }\n .upload-hint {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-6);\n }\n input[type=\"file\"] { display: none; }\n\n /* ── Preview ── */\n .preview { text-align: center; }\n .preview-img {\n max-width: 100%;\n max-height: var(240px);\n border-radius: var(--cg-border-radius-100);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n margin-bottom: var(--cg-spacing-16);\n object-fit: contain;\n }\n\n /* ── Progress ── */\n .processing { text-align: center; }\n .progress-label {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n margin-bottom: var(--cg-spacing-12);\n }\n .progress-bar {\n width: 100%;\n height: var(--cg-spacing-6);\n background: var(--cg-color-surface-container-background);\n border-radius: var(--cg-border-radius-25);\n overflow: hidden;\n margin-bottom: var(--cg-spacing-8);\n }\n .progress-fill {\n height: 100%;\n background: var(--cg-color-action-primary-background-default);\n border-radius: var(--cg-border-radius-25);\n transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-default);\n }\n .progress-pct {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n }\n\n /* ── Result ── */\n .result { text-align: center; }\n .result-icon {\n font-size: var(--cg-font-size-2xl);\n margin-bottom: var(--cg-spacing-8);\n color: var(--cg-color-status-success-text-default);\n }\n .result-text {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n line-height: 1.5;\n margin-bottom: var(--cg-spacing-16);\n white-space: pre-wrap;\n }\n\n /* ── Error ── */\n .error-icon { color: var(--cg-color-status-error-text-default); }\n .error-text { color: var(--cg-color-status-error-text-default); }\n\n /* ── Buttons ── */\n .btn-row {\n display: flex;\n gap: var(--cg-spacing-8);\n justify-content: center;\n margin-top: var(--cg-spacing-16);\n }\n .btn-row button {\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n cursor: pointer;\n border: none;\n font-family: inherit;\n transition: filter var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .btn-row button:focus-visible {\n outline: 2px solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n .btn-primary {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-base-background);\n }\n .btn-primary:hover { filter: brightness(0.9); }\n .btn-secondary {\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-base-text);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n .btn-secondary:hover { background: var(--cg-color-surface-cards-border); }\n `];\n @property({ type: String }) step: Step = 'upload';\n @property({ type: String }) accept = '.pdf,.jpg,.png';\n @property({ type: String }) previewUrl = '';\n @property({ type: String }) result = '';\n @property({ type: Number }) progress = 0;\n @property({ type: String }) heading = 'Capture';\n\n @state() private _dragOver = false;\n\n private _dispatch(name: string, detail?: unknown) {\n this.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }));\n }\n\n private _onDragOver(e: DragEvent) {\n e.preventDefault();\n this._dragOver = true;\n }\n\n private _onDragLeave() { this._dragOver = false; }\n\n private _onDrop(e: DragEvent) {\n e.preventDefault();\n this._dragOver = false;\n const file = e.dataTransfer?.files[0];\n if (file) this._dispatch('ai-capture-file', { file });\n }\n\n private _onFileInput(e: Event) {\n const input = e.target as HTMLInputElement;\n const file = input.files?.[0];\n if (file) this._dispatch('ai-capture-file', { file });\n input.value = '';\n }\n\n private _triggerFileInput() {\n this.shadowRoot?.querySelector<HTMLInputElement>('#file-input')?.click();\n }\n\n private _stepIndex(): number {\n if (this.step === 'error') return -1;\n return STEPS.indexOf(this.step);\n }\n\n private _renderSteps() {\n const current = this._stepIndex();\n const labels = ['Upload', 'Preview', 'Process', 'Done'];\n return html`\n <div class=\"steps\" role=\"navigation\" aria-label=\"Capture progress\">\n ${labels.map((label, i) => {\n const cls = i < current ? 'done' : i === current ? 'active' : 'pending';\n return html`\n ${i > 0 ? html`<div class=\"step-line ${i <= current ? 'done' : ''}\"></div>` : nothing}\n <div class=\"step-dot ${cls}\" aria-label=\"${label}: ${cls}\" title=\"${label}\">\n ${i < current ? '\\u2713' : i + 1}\n </div>\n `;\n })}\n </div>\n `;\n }\n\n private _renderUpload() {\n return html`\n <div\n class=\"upload-zone ${this._dragOver ? 'drag-over' : ''}\"\n role=\"button\"\n tabindex=\"0\"\n aria-label=\"Upload file\"\n @click=${this._triggerFileInput}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._triggerFileInput(); } }}\n @dragover=${this._onDragOver}\n @dragleave=${this._onDragLeave}\n @drop=${this._onDrop}\n >\n <div class=\"upload-icon\" aria-hidden=\"true\">📎</div>\n <div class=\"upload-text\">Drop file here or click to browse</div>\n <div class=\"upload-hint\">Accepted: ${this.accept}</div>\n </div>\n <input type=\"file\" id=\"file-input\" accept=${this.accept} @change=${this._onFileInput}>\n `;\n }\n\n private _renderPreview() {\n return html`\n <div class=\"preview\">\n ${this.previewUrl\n ? html`<img class=\"preview-img\" src=${this.previewUrl} alt=\"File preview\">`\n : html`<div class=\"upload-text\">No preview available</div>`}\n <div class=\"btn-row\">\n <button class=\"btn-secondary\" @click=${() => this._dispatch('ai-capture-retry')}>Retake</button>\n <button class=\"btn-primary\" @click=${() => this._dispatch('ai-capture-confirm')}>Confirm</button>\n </div>\n </div>\n `;\n }\n\n private _renderProcessing() {\n return html`\n <div class=\"processing\">\n <div class=\"progress-label\">Processing...</div>\n <div class=\"progress-bar\" role=\"progressbar\" aria-valuenow=${this.progress} aria-valuemin=\"0\" aria-valuemax=\"100\">\n <div class=\"progress-fill\" style=\"width:${Math.min(this.progress, 100)}%\"></div>\n </div>\n <div class=\"progress-pct\">${Math.round(this.progress)}%</div>\n </div>\n `;\n }\n\n private _renderComplete() {\n return html`\n <div class=\"result\">\n <div class=\"result-icon\" aria-hidden=\"true\">✓</div>\n <div class=\"result-text\">${this.result || 'Processing complete'}</div>\n <div class=\"btn-row\">\n <button class=\"btn-primary\" @click=${() => this._dispatch('ai-capture-complete')}>Done</button>\n </div>\n </div>\n `;\n }\n\n private _renderError() {\n return html`\n <div class=\"result\">\n <div class=\"result-icon error-icon\" aria-hidden=\"true\">✗</div>\n <div class=\"result-text error-text\">${this.result || 'An error occurred'}</div>\n <div class=\"btn-row\">\n <button class=\"btn-secondary\" @click=${() => this._dispatch('ai-capture-retry')}>Retry</button>\n </div>\n </div>\n `;\n }\n\n override render() {\n return html`\n <div class=\"card\" role=\"region\" aria-label=\"${this.heading}\">\n ${this.heading ? html`<div class=\"title\">${this.heading}</div>` : nothing}\n ${this._renderSteps()}\n ${this.step === 'upload' ? this._renderUpload()\n : this.step === 'preview' ? this._renderPreview()\n : this.step === 'processing' ? this._renderProcessing()\n : this.step === 'complete' ? this._renderComplete()\n : this._renderError()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-capture-flow': AiCaptureFlow;\n }\n}\n"],"names":["STEPS","AiCaptureFlow","LitElement","name","detail","e","file","input","current","html","label","i","cls","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-capture-flow.js","sources":["../../../src/components/ai-capture-flow/ai-capture-flow.ts"],"sourcesContent":["/**\n * @element ai-capture-flow\n * Multi-step capture wizard: upload, preview, processing, and result with step indicator.\n *\n * @example\n * ```html\n * <ai-capture-flow\n * step=\"upload\"\n * accept=\".pdf,.jpg,.png\"\n * heading=\"Document Scan\"\n * ></ai-capture-flow>\n * ```\n *\n * @fires {CustomEvent<{file: File}>} ai-capture-file - File selected or dropped\n * @fires {CustomEvent} ai-capture-confirm - User confirmed the preview\n * @fires {CustomEvent} ai-capture-retry - User chose to retake/retry\n * @fires {CustomEvent} ai-capture-complete - User clicked Done on the result\n *\n * @cssprop [--cg-brand-ai-accent=#dfff61] - Step dots, progress fill, and primary button color\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\ntype Step = 'upload' | 'preview' | 'processing' | 'complete' | 'error';\nconst STEPS: Step[] = ['upload', 'preview', 'processing', 'complete'];\n\n@customElement('ai-capture-flow')\nexport class AiCaptureFlow extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;\n }\n\n .card {\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-200);\n padding: var(--cg-spacing-16);\n }\n\n /* ── Title ── */\n .title {\n font-size: var(--cg-font-size-base);\n font-weight: var(--cg-font-weight-bold);\n color: var(--cg-color-surface-base-text);\n margin-bottom: var(--cg-spacing-16);\n }\n\n /* ── Step indicator ── */\n .steps {\n display: flex;\n align-items: center;\n gap: 0;\n margin-bottom: var(--cg-spacing-16);\n }\n .step-dot {\n width: var(--cg-spacing-24);\n height: var(--cg-spacing-24);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-bold);\n flex-shrink: 0;\n transition: opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .step-dot.done {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-base-background);\n }\n .step-dot.active {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-base-background);\n }\n .step-dot.pending {\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-input-text-placeholder);\n }\n .step-line {\n flex: 1;\n height: var(--cg-spacing-2);\n background: var(--cg-color-surface-container-background);\n transition: background var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .step-line.done { background: var(--cg-color-action-primary-background-default); }\n\n /* ── Upload zone ── */\n .upload-zone {\n border: var(--cg-border-width-100) dashed var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-24) var(--cg-spacing-16);\n text-align: center;\n cursor: pointer;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .upload-zone:hover, .upload-zone.drag-over {\n border-color: var(--cg-color-surface-base-text);\n background: var(--cg-overlay-accent-subtle);\n }\n .upload-zone:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-outline-offset-default);\n }\n .upload-icon { font-size: var(--cg-font-size-3xl); margin-bottom: var(--cg-spacing-8); }\n .upload-text {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n line-height: var(--cg-line-height-normal);\n }\n .upload-hint {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-6);\n }\n input[type=\"file\"] { display: none; }\n\n /* ── Preview ── */\n .preview { text-align: center; }\n .preview-img {\n max-width: 100%;\n max-height: var(--cg-spacing-256);\n border-radius: var(--cg-border-radius-100);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n margin-bottom: var(--cg-spacing-16);\n object-fit: contain;\n }\n\n /* ── Progress ── */\n .processing { text-align: center; }\n .progress-label {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n margin-bottom: var(--cg-spacing-12);\n }\n .progress-bar {\n width: 100%;\n height: var(--cg-spacing-6);\n background: var(--cg-color-surface-container-background);\n border-radius: var(--cg-border-radius-50);\n overflow: hidden;\n margin-bottom: var(--cg-spacing-8);\n }\n .progress-fill {\n height: 100%;\n background: var(--cg-color-action-primary-background-default);\n border-radius: var(--cg-border-radius-50);\n transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-default);\n }\n .progress-pct {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n }\n\n /* ── Result ── */\n .result { text-align: center; }\n .result-icon {\n font-size: var(--cg-font-size-2xl);\n margin-bottom: var(--cg-spacing-8);\n color: var(--cg-color-ai-complete-text);\n }\n .result-text {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n line-height: var(--cg-line-height-normal);\n margin-bottom: var(--cg-spacing-16);\n white-space: pre-wrap;\n }\n\n /* ── Error ── */\n .error-icon { color: var(--cg-color-ai-error-text); }\n .error-text { color: var(--cg-color-ai-error-text); }\n\n /* ── Buttons ── */\n .btn-row {\n display: flex;\n gap: var(--cg-spacing-8);\n justify-content: center;\n margin-top: var(--cg-spacing-16);\n }\n .btn-row button {\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n cursor: pointer;\n border: none;\n font-family: inherit;\n transition: filter var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .btn-row button:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-outline-offset-default);\n }\n .btn-primary {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-base-background);\n }\n .btn-primary:hover { filter: brightness(0.9); }\n .btn-secondary {\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-base-text);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n .btn-secondary:hover { background: var(--cg-color-surface-cards-border); }\n `];\n @property({ type: String }) step: Step = 'upload';\n @property({ type: String }) accept = '.pdf,.jpg,.png';\n @property({ type: String }) previewUrl = '';\n @property({ type: String }) result = '';\n @property({ type: Number }) progress = 0;\n @property({ type: String }) heading = 'Capture';\n\n @state() private _dragOver = false;\n\n private _dispatch(name: string, detail?: unknown) {\n this.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }));\n }\n\n private _onDragOver(e: DragEvent) {\n e.preventDefault();\n this._dragOver = true;\n }\n\n private _onDragLeave() { this._dragOver = false; }\n\n private _onDrop(e: DragEvent) {\n e.preventDefault();\n this._dragOver = false;\n const file = e.dataTransfer?.files[0];\n if (file) this._dispatch('ai-capture-file', { file });\n }\n\n private _onFileInput(e: Event) {\n const input = e.target as HTMLInputElement;\n const file = input.files?.[0];\n if (file) this._dispatch('ai-capture-file', { file });\n input.value = '';\n }\n\n private _triggerFileInput() {\n this.shadowRoot?.querySelector<HTMLInputElement>('#file-input')?.click();\n }\n\n private _stepIndex(): number {\n if (this.step === 'error') return -1;\n return STEPS.indexOf(this.step);\n }\n\n private _renderSteps() {\n const current = this._stepIndex();\n const labels = ['Upload', 'Preview', 'Process', 'Done'];\n return html`\n <div class=\"steps\" role=\"navigation\" aria-label=\"Capture progress\">\n ${labels.map((label, i) => {\n const cls = i < current ? 'done' : i === current ? 'active' : 'pending';\n return html`\n ${i > 0 ? html`<div class=\"step-line ${i <= current ? 'done' : ''}\"></div>` : nothing}\n <div class=\"step-dot ${cls}\" aria-label=\"${label}: ${cls}\" title=\"${label}\">\n ${i < current ? '\\u2713' : i + 1}\n </div>\n `;\n })}\n </div>\n `;\n }\n\n private _renderUpload() {\n return html`\n <div\n class=\"upload-zone ${this._dragOver ? 'drag-over' : ''}\"\n role=\"button\"\n tabindex=\"0\"\n aria-label=\"Upload file\"\n @click=${this._triggerFileInput}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._triggerFileInput(); } }}\n @dragover=${this._onDragOver}\n @dragleave=${this._onDragLeave}\n @drop=${this._onDrop}\n >\n <div class=\"upload-icon\" aria-hidden=\"true\">📎</div>\n <div class=\"upload-text\">Drop file here or click to browse</div>\n <div class=\"upload-hint\">Accepted: ${this.accept}</div>\n </div>\n <input type=\"file\" id=\"file-input\" accept=${this.accept} @change=${this._onFileInput}>\n `;\n }\n\n private _renderPreview() {\n return html`\n <div class=\"preview\">\n ${this.previewUrl\n ? html`<img class=\"preview-img\" src=${this.previewUrl} alt=\"File preview\">`\n : html`<div class=\"upload-text\">No preview available</div>`}\n <div class=\"btn-row\">\n <button class=\"btn-secondary\" @click=${() => this._dispatch('ai-capture-retry')}>Retake</button>\n <button class=\"btn-primary\" @click=${() => this._dispatch('ai-capture-confirm')}>Confirm</button>\n </div>\n </div>\n `;\n }\n\n private _renderProcessing() {\n return html`\n <div class=\"processing\">\n <div class=\"progress-label\">Processing...</div>\n <div class=\"progress-bar\" role=\"progressbar\" aria-valuenow=${this.progress} aria-valuemin=\"0\" aria-valuemax=\"100\">\n <div class=\"progress-fill\" style=\"width:${Math.min(this.progress, 100)}%\"></div>\n </div>\n <div class=\"progress-pct\">${Math.round(this.progress)}%</div>\n </div>\n `;\n }\n\n private _renderComplete() {\n return html`\n <div class=\"result\">\n <div class=\"result-icon\" aria-hidden=\"true\">✓</div>\n <div class=\"result-text\">${this.result || 'Processing complete'}</div>\n <div class=\"btn-row\">\n <button class=\"btn-primary\" @click=${() => this._dispatch('ai-capture-complete')}>Done</button>\n </div>\n </div>\n `;\n }\n\n private _renderError() {\n return html`\n <div class=\"result\">\n <div class=\"result-icon error-icon\" aria-hidden=\"true\">✗</div>\n <div class=\"result-text error-text\">${this.result || 'An error occurred'}</div>\n <div class=\"btn-row\">\n <button class=\"btn-secondary\" @click=${() => this._dispatch('ai-capture-retry')}>Retry</button>\n </div>\n </div>\n `;\n }\n\n override render() {\n return html`\n <div class=\"card\" role=\"region\" aria-label=\"${this.heading}\">\n ${this.heading ? html`<div class=\"title\">${this.heading}</div>` : nothing}\n ${this._renderSteps()}\n ${this.step === 'upload' ? this._renderUpload()\n : this.step === 'preview' ? this._renderPreview()\n : this.step === 'processing' ? this._renderProcessing()\n : this.step === 'complete' ? this._renderComplete()\n : this._renderError()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-capture-flow': AiCaptureFlow;\n }\n}\n"],"names":["STEPS","AiCaptureFlow","LitElement","name","detail","e","file","input","current","html","label","i","cls","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AAyBA,MAAMA,IAAgB,CAAC,UAAU,WAAW,cAAc,UAAU;AAG7D,IAAMC,IAAN,cAA4BC,EAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GAoLuB,KAAA,OAAa,UACb,KAAA,SAAS,kBACT,KAAA,aAAa,IACb,KAAA,SAAS,IACT,KAAA,WAAW,GACX,KAAA,UAAU,WAE7B,KAAQ,YAAY;AAAA,EAAA;AAAA,EAErB,UAAUC,GAAcC,GAAkB;AAChD,SAAK,cAAc,IAAI,YAAYD,GAAM,EAAE,SAAS,IAAM,UAAU,IAAM,QAAAC,EAAA,CAAQ,CAAC;AAAA,EACrF;AAAA,EAEQ,YAAYC,GAAc;AAChC,IAAAA,EAAE,eAAA,GACF,KAAK,YAAY;AAAA,EACnB;AAAA,EAEQ,eAAe;AAAE,SAAK,YAAY;AAAA,EAAO;AAAA,EAEzC,QAAQA,GAAc;AAC5B,IAAAA,EAAE,eAAA,GACF,KAAK,YAAY;AACjB,UAAMC,IAAOD,EAAE,cAAc,MAAM,CAAC;AACpC,IAAIC,KAAM,KAAK,UAAU,mBAAmB,EAAE,MAAAA,GAAM;AAAA,EACtD;AAAA,EAEQ,aAAaD,GAAU;AAC7B,UAAME,IAAQF,EAAE,QACVC,IAAOC,EAAM,QAAQ,CAAC;AAC5B,IAAID,KAAM,KAAK,UAAU,mBAAmB,EAAE,MAAAA,GAAM,GACpDC,EAAM,QAAQ;AAAA,EAChB;AAAA,EAEQ,oBAAoB;AAC1B,SAAK,YAAY,cAAgC,aAAa,GAAG,MAAA;AAAA,EACnE;AAAA,EAEQ,aAAqB;AAC3B,WAAI,KAAK,SAAS,UAAgB,KAC3BP,EAAM,QAAQ,KAAK,IAAI;AAAA,EAChC;AAAA,EAEQ,eAAe;AACrB,UAAMQ,IAAU,KAAK,WAAA;AAErB,WAAOC;AAAA;AAAA,UADQ,CAAC,UAAU,WAAW,WAAW,MAAM,EAGzC,IAAI,CAACC,GAAOC,MAAM;AACzB,YAAMC,IAAMD,IAAIH,IAAU,SAASG,MAAMH,IAAU,WAAW;AAC9D,aAAOC;AAAA,cACHE,IAAI,IAAIF,0BAA6BE,KAAKH,IAAU,SAAS,EAAE,aAAaK,CAAO;AAAA,mCAC9DD,CAAG,iBAAiBF,CAAK,KAAKE,CAAG,YAAYF,CAAK;AAAA,gBACrEC,IAAIH,IAAU,MAAWG,IAAI,CAAC;AAAA;AAAA;AAAA,IAGtC,CAAC,CAAC;AAAA;AAAA;AAAA,EAGR;AAAA,EAEQ,gBAAgB;AACtB,WAAOF;AAAA;AAAA,6BAEkB,KAAK,YAAY,cAAc,EAAE;AAAA;AAAA;AAAA;AAAA,iBAI7C,KAAK,iBAAiB;AAAA,mBACpB,CAACJ,MAAqB;AAAE,OAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SAAOA,EAAE,eAAA,GAAkB,KAAK,kBAAA;AAAA,IAAuB,CAAC;AAAA,oBAClH,KAAK,WAAW;AAAA,qBACf,KAAK,YAAY;AAAA,gBACtB,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA,6CAIiB,KAAK,MAAM;AAAA;AAAA,kDAEN,KAAK,MAAM,YAAY,KAAK,YAAY;AAAA;AAAA,EAExF;AAAA,EAEQ,iBAAiB;AACvB,WAAOI;AAAA;AAAA,UAED,KAAK,aACHA,iCAAoC,KAAK,UAAU,yBACnDA,sDAAyD;AAAA;AAAA,iDAEpB,MAAM,KAAK,UAAU,kBAAkB,CAAC;AAAA,+CAC1C,MAAM,KAAK,UAAU,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIvF;AAAA,EAEQ,oBAAoB;AAC1B,WAAOA;AAAA;AAAA;AAAA,qEAG0D,KAAK,QAAQ;AAAA,oDAC9B,KAAK,IAAI,KAAK,UAAU,GAAG,CAAC;AAAA;AAAA,oCAE5C,KAAK,MAAM,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA,EAG3D;AAAA,EAEQ,kBAAkB;AACxB,WAAOA;AAAA;AAAA;AAAA,mCAGwB,KAAK,UAAU,qBAAqB;AAAA;AAAA,+CAExB,MAAM,KAAK,UAAU,qBAAqB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIxF;AAAA,EAEQ,eAAe;AACrB,WAAOA;AAAA;AAAA;AAAA,8CAGmC,KAAK,UAAU,mBAAmB;AAAA;AAAA,iDAE/B,MAAM,KAAK,UAAU,kBAAkB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIvF;AAAA,EAES,SAAS;AAChB,WAAOA;AAAA,oDACyC,KAAK,OAAO;AAAA,UACtD,KAAK,UAAUA,uBAA0B,KAAK,OAAO,WAAWI,CAAO;AAAA,UACvE,KAAK,cAAc;AAAA,UACnB,KAAK,SAAS,WAAW,KAAK,cAAA,IAC5B,KAAK,SAAS,YAAY,KAAK,eAAA,IAC/B,KAAK,SAAS,eAAe,KAAK,kBAAA,IAClC,KAAK,SAAS,aAAa,KAAK,oBAChC,KAAK,aAAA,CAAc;AAAA;AAAA;AAAA,EAG7B;AACF;AArUaZ,EACK,SAAS,CAACa,GAAWC,GAAeC,GAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAkLzE;AAC2BC,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GApLflB,EAoLiB,WAAA,QAAA,CAAA;AACAiB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GArLflB,EAqLiB,WAAA,UAAA,CAAA;AACAiB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtLflB,EAsLiB,WAAA,cAAA,CAAA;AACAiB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAvLflB,EAuLiB,WAAA,UAAA,CAAA;AACAiB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAxLflB,EAwLiB,WAAA,YAAA,CAAA;AACAiB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAzLflB,EAyLiB,WAAA,WAAA,CAAA;AAEXiB,EAAA;AAAA,EAAhBE,EAAA;AAAM,GA3LInB,EA2LM,WAAA,aAAA,CAAA;AA3LNA,IAANiB,EAAA;AAAA,EADNG,EAAc,iBAAiB;AAAA,GACnBpB,CAAA;"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { css as
|
|
1
|
+
import { css as g, LitElement as p, html as n, nothing as v } from "lit";
|
|
2
2
|
import { property as u, state as b, customElement as f } from "lit/decorators.js";
|
|
3
|
-
import { h, r as m, f as x } from "../../chunks/premium.css-
|
|
3
|
+
import { h, r as m, f as x } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
4
|
var y = Object.defineProperty, k = Object.getOwnPropertyDescriptor, d = (a, t, c, o) => {
|
|
5
5
|
for (var r = o > 1 ? void 0 : o ? k(t, c) : t, e = a.length - 1, s; e >= 0; e--)
|
|
6
6
|
(s = a[e]) && (r = (o ? s(t, c, r) : s(r)) || r);
|
|
7
7
|
return o && r && y(t, c, r), r;
|
|
8
8
|
};
|
|
9
|
-
const
|
|
9
|
+
const l = {
|
|
10
10
|
model: "type-model",
|
|
11
11
|
prompt: "type-prompt",
|
|
12
12
|
config: "type-config",
|
|
13
13
|
data: "type-data"
|
|
14
14
|
};
|
|
15
|
-
let
|
|
15
|
+
let i = class extends p {
|
|
16
16
|
constructor() {
|
|
17
17
|
super(...arguments), this.entries = [], this._expandedSet = /* @__PURE__ */ new Set();
|
|
18
18
|
}
|
|
@@ -34,14 +34,14 @@ let n = class extends p {
|
|
|
34
34
|
}));
|
|
35
35
|
}
|
|
36
36
|
render() {
|
|
37
|
-
return this.entries.length ?
|
|
37
|
+
return this.entries.length ? n`
|
|
38
38
|
<div class="container" role="region" aria-label="Changelog">
|
|
39
39
|
<div class="header">Changelog</div>
|
|
40
40
|
|
|
41
41
|
<div class="timeline" role="list" aria-label="Version history">
|
|
42
42
|
${this.entries.map((a, t) => {
|
|
43
|
-
const c = `${a.version}-${t}`, o = this._expandedSet.has(c), r =
|
|
44
|
-
return
|
|
43
|
+
const c = `${a.version}-${t}`, o = this._expandedSet.has(c), r = l[a.type] || l.config;
|
|
44
|
+
return n`
|
|
45
45
|
<div class="entry" role="listitem">
|
|
46
46
|
<div class="entry-dot ${r}" aria-hidden="true"></div>
|
|
47
47
|
<div
|
|
@@ -62,7 +62,7 @@ let n = class extends p {
|
|
|
62
62
|
|
|
63
63
|
<div class="entry-meta">
|
|
64
64
|
<span>${a.date}</span>
|
|
65
|
-
${a.author ?
|
|
65
|
+
${a.author ? n`<span>${a.author}</span>` : v}
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
<div class="changes-preview ${o ? "expanded" : ""}">
|
|
@@ -93,10 +93,10 @@ let n = class extends p {
|
|
|
93
93
|
})}
|
|
94
94
|
</div>
|
|
95
95
|
</div>
|
|
96
|
-
` :
|
|
96
|
+
` : n`<div class="container"><div class="empty-state" role="status">No changelog entries</div></div>`;
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
|
-
|
|
99
|
+
i.styles = [h, m, x, g`
|
|
100
100
|
:host {
|
|
101
101
|
animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;
|
|
102
102
|
}
|
|
@@ -138,7 +138,7 @@ n.styles = [h, m, x, l`
|
|
|
138
138
|
|
|
139
139
|
.entry-dot {
|
|
140
140
|
position: absolute;
|
|
141
|
-
left: calc(-1 * var(--cg-spacing-20);
|
|
141
|
+
left: calc(-1 * var(--cg-spacing-20));
|
|
142
142
|
top: var(--cg-spacing-6);
|
|
143
143
|
width: var(--cg-spacing-8);
|
|
144
144
|
height: var(--cg-spacing-8);
|
|
@@ -194,7 +194,7 @@ n.styles = [h, m, x, l`
|
|
|
194
194
|
}
|
|
195
195
|
.type-badge.type-config {
|
|
196
196
|
background: var(--cg-overlay-accent-light);
|
|
197
|
-
color: var(--cg-color-chart-7);
|
|
197
|
+
color: var(--cg-color-chart-7-stroke);
|
|
198
198
|
}
|
|
199
199
|
.type-badge.type-data {
|
|
200
200
|
background: var(--cg-color-status-success-background-default);
|
|
@@ -203,22 +203,22 @@ n.styles = [h, m, x, l`
|
|
|
203
203
|
|
|
204
204
|
.entry-dot.type-model { background: var(--cg-color-status-info-text-default); }
|
|
205
205
|
.entry-dot.type-prompt { background: var(--cg-color-action-primary-background-default); }
|
|
206
|
-
.entry-dot.type-config { background: var(--cg-color-chart-7); }
|
|
206
|
+
.entry-dot.type-config { background: var(--cg-color-chart-7-stroke); }
|
|
207
207
|
.entry-dot.type-data { background: var(--cg-color-status-success-text-default); }
|
|
208
208
|
|
|
209
209
|
.entry-meta {
|
|
210
210
|
display: flex;
|
|
211
211
|
gap: var(--cg-spacing-8);
|
|
212
212
|
font-size: var(--cg-font-size-xs);
|
|
213
|
-
color: var(--cg-color-input-
|
|
213
|
+
color: var(--cg-color-input-text-placeholder);
|
|
214
214
|
margin-top: var(--cg-spacing-4);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
.changes-preview {
|
|
218
|
-
font-size: var(--cg-font-size-
|
|
218
|
+
font-size: var(--cg-font-size-sm);
|
|
219
219
|
color: var(--cg-color-input-text-placeholder);
|
|
220
220
|
margin-top: var(--cg-spacing-6);
|
|
221
|
-
line-height:
|
|
221
|
+
line-height: var(--cg-line-height-normal);
|
|
222
222
|
overflow: hidden;
|
|
223
223
|
max-height: var(--cg-spacing-40);
|
|
224
224
|
transition: max-height var(--cg-transition-duration-default) var(--cg-transition-easing-default);
|
|
@@ -239,7 +239,7 @@ n.styles = [h, m, x, l`
|
|
|
239
239
|
}
|
|
240
240
|
.expand-toggle:hover { color: var(--cg-color-surface-base-text); }
|
|
241
241
|
.expand-toggle:focus-visible {
|
|
242
|
-
outline:
|
|
242
|
+
outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);
|
|
243
243
|
outline-offset: var(--cg-outline-offset-default);
|
|
244
244
|
}
|
|
245
245
|
|
|
@@ -262,31 +262,31 @@ n.styles = [h, m, x, l`
|
|
|
262
262
|
}
|
|
263
263
|
.rollback-btn:active { transform: scale(var(--cg-interaction-press-scale)); }
|
|
264
264
|
.rollback-btn:hover {
|
|
265
|
-
border-color: var(--cg-color-status-warning-text);
|
|
266
|
-
color: var(--cg-color-status-warning-text);
|
|
265
|
+
border-color: var(--cg-color-status-warning-text-default);
|
|
266
|
+
color: var(--cg-color-status-warning-text-default);
|
|
267
267
|
}
|
|
268
268
|
.rollback-btn:focus-visible {
|
|
269
|
-
outline:
|
|
269
|
+
outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);
|
|
270
270
|
outline-offset: var(--cg-outline-offset-default);
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
.empty-state {
|
|
274
274
|
text-align: center;
|
|
275
|
-
color: var(--cg-color-
|
|
275
|
+
color: var(--cg-color-empty-state-text-secondary);
|
|
276
276
|
font-size: var(--cg-font-size-sm);
|
|
277
277
|
padding: var(--cg-spacing-24) 0;
|
|
278
278
|
}
|
|
279
279
|
`];
|
|
280
280
|
d([
|
|
281
281
|
u({ type: Array })
|
|
282
|
-
],
|
|
282
|
+
], i.prototype, "entries", 2);
|
|
283
283
|
d([
|
|
284
284
|
b()
|
|
285
|
-
],
|
|
286
|
-
|
|
285
|
+
], i.prototype, "_expandedSet", 2);
|
|
286
|
+
i = d([
|
|
287
287
|
f("ai-changelog")
|
|
288
|
-
],
|
|
288
|
+
], i);
|
|
289
289
|
export {
|
|
290
|
-
|
|
290
|
+
i as AiChangelog
|
|
291
291
|
};
|
|
292
292
|
//# sourceMappingURL=ai-changelog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-changelog.js","sources":["../../../src/components/ai-changelog/ai-changelog.ts"],"sourcesContent":["/**\n * @element ai-changelog\n * Timeline-style version history feed with type badges, expandable details, and rollback buttons.\n *\n * @example\n * ```html\n * <ai-changelog .entries=${[\n * {version:'v2.1', date:'2024-03-15', type:'model', changes:'Upgraded to GPT-4o', author:'ops'},\n * {version:'v2.0', date:'2024-03-01', type:'prompt', changes:'Revised system prompt'}\n * ]}></ai-changelog>\n * ```\n *\n * @fires {CustomEvent<{version, type, date}>} ai-changelog-entry-click - Entry card clicked\n * @fires {CustomEvent<{version, type}>} ai-changelog-rollback - Rollback button clicked\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, state, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\ninterface ChangelogEntry {\n version: string;\n date: string;\n author?: string;\n changes: string;\n type: 'model' | 'prompt' | 'config' | 'data';\n}\n\nconst TYPE_CSS_CLASS: Record<string, string> = {\n model: 'type-model',\n prompt: 'type-prompt',\n config: 'type-config',\n data: 'type-data',\n};\n\n@customElement('ai-changelog')\nexport class AiChangelog extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n .container {\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 padding: var(--cg-spacing-16);\n color: var(--cg-color-surface-base-text);\n }\n\n .header {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n margin-bottom: var(--cg-spacing-16);\n }\n\n .timeline {\n position: relative;\n padding-left: var(--cg-spacing-20);\n }\n\n .timeline::before {\n content: '';\n position: absolute;\n left: var(--cg-spacing-6);\n top: var(--cg-spacing-4);\n bottom: var(--cg-spacing-4);\n width: var(--cg-spacing-2);\n background: var(--cg-color-surface-cards-border);\n }\n\n .entry {\n position: relative;\n margin-bottom: var(--cg-spacing-12);\n }\n\n .entry-dot {\n position: absolute;\n left: calc(-1 * var(--cg-spacing-20);\n top: var(--cg-spacing-6);\n width: var(--cg-spacing-8);\n height: var(--cg-spacing-8);\n border-radius: 50%;\n background: var(--cg-color-surface-cards-border);\n border: var(--cg-border-width-100) solid var(--cg-color-surface-container-background);\n z-index: 1;\n }\n\n .entry-card {\n background: var(--cg-color-surface-base-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-12);\n cursor: pointer;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .entry-card:hover { border-color: var(--cg-color-surface-cards-border); }\n .entry-card:active { transform: scale(var(--cg-interaction-press-scale)); }\n .entry-card:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n\n .entry-top {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-wrap: wrap;\n }\n\n .version {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-bold);\n color: var(--cg-color-surface-base-text);\n }\n\n .type-badge {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-bold);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n }\n .type-badge.type-model {\n background: var(--cg-color-status-info-background-default);\n color: var(--cg-color-status-info-text-default);\n }\n .type-badge.type-prompt {\n background: var(--cg-overlay-accent-subtle);\n color: var(--cg-color-surface-base-text);\n }\n .type-badge.type-config {\n background: var(--cg-overlay-accent-light);\n color: var(--cg-color-chart-7);\n }\n .type-badge.type-data {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n }\n\n .entry-dot.type-model { background: var(--cg-color-status-info-text-default); }\n .entry-dot.type-prompt { background: var(--cg-color-action-primary-background-default); }\n .entry-dot.type-config { background: var(--cg-color-chart-7); }\n .entry-dot.type-data { background: var(--cg-color-status-success-text-default); }\n\n .entry-meta {\n display: flex;\n gap: var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-border-hover);\n margin-top: var(--cg-spacing-4);\n }\n\n .changes-preview {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-6);\n line-height: 1.5;\n overflow: hidden;\n max-height: var(--cg-spacing-40);\n transition: max-height var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .changes-preview.expanded {\n max-height: var(--_ai-changelog-expanded-max-height, 500px);\n }\n\n .expand-toggle {\n background: transparent;\n border: none;\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-xs);\n cursor: pointer;\n padding: var(--cg-spacing-4) 0;\n margin-top: var(--cg-spacing-4);\n transition: color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .expand-toggle:hover { color: var(--cg-color-surface-base-text); }\n .expand-toggle:focus-visible {\n outline: 2px solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .entry-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: var(--cg-spacing-8);\n }\n\n .rollback-btn {\n background: transparent;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-100);\n cursor: pointer;\n transition: border-color var(--cg-transition-duration-default) var(--cg-transition-easing-default), color var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .rollback-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .rollback-btn:hover {\n border-color: var(--cg-color-status-warning-text);\n color: var(--cg-color-status-warning-text);\n }\n .rollback-btn:focus-visible {\n outline: 2px solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .empty-state {\n text-align: center;\n color: var(--cg-color-input-border-hover);\n font-size: var(--cg-font-size-sm);\n padding: var(--cg-spacing-24) 0;\n }\n `];\n @property({ type: Array }) entries: ChangelogEntry[] = [];\n\n @state() private _expandedSet = new Set<string>();\n\n private _toggle(id: string) {\n if (this._expandedSet.has(id)) {\n this._expandedSet.delete(id);\n } else {\n this._expandedSet.add(id);\n }\n this.requestUpdate();\n }\n\n private _handleClick(entry: ChangelogEntry) {\n this.dispatchEvent(new CustomEvent('ai-changelog-entry-click', {\n detail: { version: entry.version, type: entry.type, date: entry.date },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleRollback(e: Event, entry: ChangelogEntry) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('ai-changelog-rollback', {\n detail: { version: entry.version, type: entry.type },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n if (!this.entries.length) {\n return html`<div class=\"container\"><div class=\"empty-state\" role=\"status\">No changelog entries</div></div>`;\n }\n\n return html`\n <div class=\"container\" role=\"region\" aria-label=\"Changelog\">\n <div class=\"header\">Changelog</div>\n\n <div class=\"timeline\" role=\"list\" aria-label=\"Version history\">\n ${this.entries.map((entry, i) => {\n const id = `${entry.version}-${i}`;\n const expanded = this._expandedSet.has(id);\n const typeCls = TYPE_CSS_CLASS[entry.type] || TYPE_CSS_CLASS.config;\n\n return html`\n <div class=\"entry\" role=\"listitem\">\n <div class=\"entry-dot ${typeCls}\" aria-hidden=\"true\"></div>\n <div\n class=\"entry-card\"\n tabindex=\"0\"\n aria-label=\"Version ${entry.version}, ${entry.type} change on ${entry.date}\"\n @click=${() => this._handleClick(entry)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._handleClick(entry); } }}\n >\n <div class=\"entry-top\">\n <span class=\"version\">${entry.version}</span>\n <span\n class=\"type-badge ${typeCls}\"\n >${entry.type}</span>\n </div>\n\n <div class=\"entry-meta\">\n <span>${entry.date}</span>\n ${entry.author ? html`<span>${entry.author}</span>` : nothing}\n </div>\n\n <div class=\"changes-preview ${expanded ? 'expanded' : ''}\">\n ${entry.changes}\n </div>\n\n <button\n class=\"expand-toggle\"\n @click=${(e: Event) => { e.stopPropagation(); this._toggle(id); }}\n aria-expanded=${expanded ? 'true' : 'false'}\n aria-label=${expanded ? 'Collapse details' : 'Expand details'}\n tabindex=\"0\"\n >${expanded ? 'Show less' : 'Show more'}</button>\n\n <div class=\"entry-actions\">\n <button\n class=\"rollback-btn\"\n @click=${(e: Event) => this._handleRollback(e, entry)}\n aria-label=\"Rollback to version ${entry.version}\"\n tabindex=\"0\"\n >Rollback</button>\n </div>\n </div>\n </div>\n `;\n })}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-changelog': AiChangelog;\n }\n}\n"],"names":["TYPE_CSS_CLASS","AiChangelog","LitElement","id","entry","e","html","i","expanded","typeCls","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AA2BA,MAAMA,IAAyC;AAAA,EAC7C,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AACR;AAGO,IAAMC,IAAN,cAA0BC,EAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GAsLsB,KAAA,UAA4B,CAAA,GAE9C,KAAQ,mCAAmB,IAAA;AAAA,EAAY;AAAA,EAExC,QAAQC,GAAY;AAC1B,IAAI,KAAK,aAAa,IAAIA,CAAE,IAC1B,KAAK,aAAa,OAAOA,CAAE,IAE3B,KAAK,aAAa,IAAIA,CAAE,GAE1B,KAAK,cAAA;AAAA,EACP;AAAA,EAEQ,aAAaC,GAAuB;AAC1C,SAAK,cAAc,IAAI,YAAY,4BAA4B;AAAA,MAC7D,QAAQ,EAAE,SAASA,EAAM,SAAS,MAAMA,EAAM,MAAM,MAAMA,EAAM,KAAA;AAAA,MAChE,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,CAAC;AAAA,EACJ;AAAA,EAEQ,gBAAgBC,GAAUD,GAAuB;AACvD,IAAAC,EAAE,gBAAA,GACF,KAAK,cAAc,IAAI,YAAY,yBAAyB;AAAA,MAC1D,QAAQ,EAAE,SAASD,EAAM,SAAS,MAAMA,EAAM,KAAA;AAAA,MAC9C,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,CAAC;AAAA,EACJ;AAAA,EAES,SAAS;AAChB,WAAK,KAAK,QAAQ,SAIXE;AAAA;AAAA;AAAA;AAAA;AAAA,YAKC,KAAK,QAAQ,IAAI,CAACF,GAAOG,MAAM;AAC/B,YAAMJ,IAAK,GAAGC,EAAM,OAAO,IAAIG,CAAC,IAC1BC,IAAW,KAAK,aAAa,IAAIL,CAAE,GACnCM,IAAUT,EAAeI,EAAM,IAAI,KAAKJ,EAAe;AAE7D,aAAOM;AAAA;AAAA,wCAEqBG,CAAO;AAAA;AAAA;AAAA;AAAA,wCAIPL,EAAM,OAAO,KAAKA,EAAM,IAAI,cAAcA,EAAM,IAAI;AAAA,2BACjE,MAAM,KAAK,aAAaA,CAAK,CAAC;AAAA,6BAC5B,CAAC,MAAqB;AAAE,SAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SAAO,EAAE,eAAA,GAAkB,KAAK,aAAaA,CAAK;AAAA,MAAK,CAAC;AAAA;AAAA;AAAA,4CAGpGA,EAAM,OAAO;AAAA;AAAA,0CAEfK,CAAO;AAAA,uBAC1BL,EAAM,IAAI;AAAA;AAAA;AAAA;AAAA,4BAILA,EAAM,IAAI;AAAA,sBAChBA,EAAM,SAASE,UAAaF,EAAM,MAAM,YAAYM,CAAO;AAAA;AAAA;AAAA,gDAGjCF,IAAW,aAAa,EAAE;AAAA,sBACpDJ,EAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,6BAKN,CAAC,MAAa;AAAE,UAAE,gBAAA,GAAmB,KAAK,QAAQD,CAAE;AAAA,MAAG,CAAC;AAAA,oCACjDK,IAAW,SAAS,OAAO;AAAA,iCAC9BA,IAAW,qBAAqB,gBAAgB;AAAA;AAAA,qBAE5DA,IAAW,cAAc,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,+BAK1B,CAAC,MAAa,KAAK,gBAAgB,GAAGJ,CAAK,CAAC;AAAA,wDACnBA,EAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO3D,CAAC,CAAC;AAAA;AAAA;AAAA,QA1DCE;AAAA,EA8DX;AACF;AArRaL,EACK,SAAS,CAACU,GAAWC,GAAeC,GAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAoLzE;AAC0BC,EAAA;AAAA,EAA1BC,EAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GAtLdf,EAsLgB,WAAA,WAAA,CAAA;AAEVc,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAxLIhB,EAwLM,WAAA,gBAAA,CAAA;AAxLNA,IAANc,EAAA;AAAA,EADNG,EAAc,cAAc;AAAA,GAChBjB,CAAA;"}
|
|
1
|
+
{"version":3,"file":"ai-changelog.js","sources":["../../../src/components/ai-changelog/ai-changelog.ts"],"sourcesContent":["/**\n * @element ai-changelog\n * Timeline-style version history feed with type badges, expandable details, and rollback buttons.\n *\n * @example\n * ```html\n * <ai-changelog .entries=${[\n * {version:'v2.1', date:'2024-03-15', type:'model', changes:'Upgraded to GPT-4o', author:'ops'},\n * {version:'v2.0', date:'2024-03-01', type:'prompt', changes:'Revised system prompt'}\n * ]}></ai-changelog>\n * ```\n *\n * @fires {CustomEvent<{version, type, date}>} ai-changelog-entry-click - Entry card clicked\n * @fires {CustomEvent<{version, type}>} ai-changelog-rollback - Rollback button clicked\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, state, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\ninterface ChangelogEntry {\n version: string;\n date: string;\n author?: string;\n changes: string;\n type: 'model' | 'prompt' | 'config' | 'data';\n}\n\nconst TYPE_CSS_CLASS: Record<string, string> = {\n model: 'type-model',\n prompt: 'type-prompt',\n config: 'type-config',\n data: 'type-data',\n};\n\n@customElement('ai-changelog')\nexport class AiChangelog extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n .container {\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 padding: var(--cg-spacing-16);\n color: var(--cg-color-surface-base-text);\n }\n\n .header {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n margin-bottom: var(--cg-spacing-16);\n }\n\n .timeline {\n position: relative;\n padding-left: var(--cg-spacing-20);\n }\n\n .timeline::before {\n content: '';\n position: absolute;\n left: var(--cg-spacing-6);\n top: var(--cg-spacing-4);\n bottom: var(--cg-spacing-4);\n width: var(--cg-spacing-2);\n background: var(--cg-color-surface-cards-border);\n }\n\n .entry {\n position: relative;\n margin-bottom: var(--cg-spacing-12);\n }\n\n .entry-dot {\n position: absolute;\n left: calc(-1 * var(--cg-spacing-20));\n top: var(--cg-spacing-6);\n width: var(--cg-spacing-8);\n height: var(--cg-spacing-8);\n border-radius: 50%;\n background: var(--cg-color-surface-cards-border);\n border: var(--cg-border-width-100) solid var(--cg-color-surface-container-background);\n z-index: 1;\n }\n\n .entry-card {\n background: var(--cg-color-surface-base-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-12);\n cursor: pointer;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .entry-card:hover { border-color: var(--cg-color-surface-cards-border); }\n .entry-card:active { transform: scale(var(--cg-interaction-press-scale)); }\n .entry-card:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n\n .entry-top {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-wrap: wrap;\n }\n\n .version {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-bold);\n color: var(--cg-color-surface-base-text);\n }\n\n .type-badge {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-bold);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n }\n .type-badge.type-model {\n background: var(--cg-color-status-info-background-default);\n color: var(--cg-color-status-info-text-default);\n }\n .type-badge.type-prompt {\n background: var(--cg-overlay-accent-subtle);\n color: var(--cg-color-surface-base-text);\n }\n .type-badge.type-config {\n background: var(--cg-overlay-accent-light);\n color: var(--cg-color-chart-7-stroke);\n }\n .type-badge.type-data {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n }\n\n .entry-dot.type-model { background: var(--cg-color-status-info-text-default); }\n .entry-dot.type-prompt { background: var(--cg-color-action-primary-background-default); }\n .entry-dot.type-config { background: var(--cg-color-chart-7-stroke); }\n .entry-dot.type-data { background: var(--cg-color-status-success-text-default); }\n\n .entry-meta {\n display: flex;\n gap: var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-4);\n }\n\n .changes-preview {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-6);\n line-height: var(--cg-line-height-normal);\n overflow: hidden;\n max-height: var(--cg-spacing-40);\n transition: max-height var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .changes-preview.expanded {\n max-height: var(--_ai-changelog-expanded-max-height, 500px);\n }\n\n .expand-toggle {\n background: transparent;\n border: none;\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-xs);\n cursor: pointer;\n padding: var(--cg-spacing-4) 0;\n margin-top: var(--cg-spacing-4);\n transition: color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .expand-toggle:hover { color: var(--cg-color-surface-base-text); }\n .expand-toggle:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .entry-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: var(--cg-spacing-8);\n }\n\n .rollback-btn {\n background: transparent;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-100);\n cursor: pointer;\n transition: border-color var(--cg-transition-duration-default) var(--cg-transition-easing-default), color var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .rollback-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .rollback-btn:hover {\n border-color: var(--cg-color-status-warning-text-default);\n color: var(--cg-color-status-warning-text-default);\n }\n .rollback-btn:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .empty-state {\n text-align: center;\n color: var(--cg-color-empty-state-text-secondary);\n font-size: var(--cg-font-size-sm);\n padding: var(--cg-spacing-24) 0;\n }\n `];\n @property({ type: Array }) entries: ChangelogEntry[] = [];\n\n @state() private _expandedSet = new Set<string>();\n\n private _toggle(id: string) {\n if (this._expandedSet.has(id)) {\n this._expandedSet.delete(id);\n } else {\n this._expandedSet.add(id);\n }\n this.requestUpdate();\n }\n\n private _handleClick(entry: ChangelogEntry) {\n this.dispatchEvent(new CustomEvent('ai-changelog-entry-click', {\n detail: { version: entry.version, type: entry.type, date: entry.date },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleRollback(e: Event, entry: ChangelogEntry) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('ai-changelog-rollback', {\n detail: { version: entry.version, type: entry.type },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n if (!this.entries.length) {\n return html`<div class=\"container\"><div class=\"empty-state\" role=\"status\">No changelog entries</div></div>`;\n }\n\n return html`\n <div class=\"container\" role=\"region\" aria-label=\"Changelog\">\n <div class=\"header\">Changelog</div>\n\n <div class=\"timeline\" role=\"list\" aria-label=\"Version history\">\n ${this.entries.map((entry, i) => {\n const id = `${entry.version}-${i}`;\n const expanded = this._expandedSet.has(id);\n const typeCls = TYPE_CSS_CLASS[entry.type] || TYPE_CSS_CLASS.config;\n\n return html`\n <div class=\"entry\" role=\"listitem\">\n <div class=\"entry-dot ${typeCls}\" aria-hidden=\"true\"></div>\n <div\n class=\"entry-card\"\n tabindex=\"0\"\n aria-label=\"Version ${entry.version}, ${entry.type} change on ${entry.date}\"\n @click=${() => this._handleClick(entry)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._handleClick(entry); } }}\n >\n <div class=\"entry-top\">\n <span class=\"version\">${entry.version}</span>\n <span\n class=\"type-badge ${typeCls}\"\n >${entry.type}</span>\n </div>\n\n <div class=\"entry-meta\">\n <span>${entry.date}</span>\n ${entry.author ? html`<span>${entry.author}</span>` : nothing}\n </div>\n\n <div class=\"changes-preview ${expanded ? 'expanded' : ''}\">\n ${entry.changes}\n </div>\n\n <button\n class=\"expand-toggle\"\n @click=${(e: Event) => { e.stopPropagation(); this._toggle(id); }}\n aria-expanded=${expanded ? 'true' : 'false'}\n aria-label=${expanded ? 'Collapse details' : 'Expand details'}\n tabindex=\"0\"\n >${expanded ? 'Show less' : 'Show more'}</button>\n\n <div class=\"entry-actions\">\n <button\n class=\"rollback-btn\"\n @click=${(e: Event) => this._handleRollback(e, entry)}\n aria-label=\"Rollback to version ${entry.version}\"\n tabindex=\"0\"\n >Rollback</button>\n </div>\n </div>\n </div>\n `;\n })}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-changelog': AiChangelog;\n }\n}\n"],"names":["TYPE_CSS_CLASS","AiChangelog","LitElement","id","entry","e","html","i","expanded","typeCls","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -18,13 +18,7 @@ export declare class AiChartSummary extends LitElement {
|
|
|
18
18
|
private _toggle;
|
|
19
19
|
private _handleTrendClick;
|
|
20
20
|
private _handleRefresh;
|
|
21
|
-
private _trendIcon;
|
|
22
21
|
render(): import('lit').TemplateResult<1> | typeof nothing;
|
|
23
22
|
}
|
|
24
|
-
declare global {
|
|
25
|
-
interface HTMLElementTagNameMap {
|
|
26
|
-
'ai-chart-summary': AiChartSummary;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
23
|
export {};
|
|
30
24
|
//# sourceMappingURL=ai-chart-summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-chart-summary.d.ts","sourceRoot":"","sources":["../../../src/components/ai-chart-summary/ai-chart-summary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ai-chart-summary.d.ts","sourceRoot":"","sources":["../../../src/components/ai-chart-summary/ai-chart-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAIrD,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAkJnB;IAES,OAAO,SAAM;IACE,MAAM,EAAE,KAAK,EAAE,CAAM;IACnB,WAAW,UAAS;IACrB,UAAU,SAAK;IAC/B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAa;IACpC,OAAO,UAAS;IAC/B,OAAO,UAAS;IACjC,SAAS,SAAM;IAElB,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAIb,MAAM;CAuEhB"}
|