@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,26 +1,16 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
-
export type Severity = 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
3
2
|
export interface ValidationCheck {
|
|
4
3
|
id: string;
|
|
5
4
|
label: string;
|
|
6
5
|
description?: string;
|
|
7
6
|
status: 'pending' | 'running' | 'pass' | 'fail' | 'warning' | 'skipped';
|
|
8
|
-
/** Optional severity classification — drives the colored side bar + badge. */
|
|
9
|
-
severity?: Severity;
|
|
10
|
-
/** Optional 0-100 score; renders as X% next to the status icon. */
|
|
11
|
-
score?: number;
|
|
12
7
|
}
|
|
13
8
|
export declare class AiValidationChecklist extends LitElement {
|
|
14
9
|
static styles: import('lit').CSSResult[];
|
|
15
10
|
checks: ValidationCheck[];
|
|
16
11
|
title: string;
|
|
12
|
+
autoRun: boolean;
|
|
17
13
|
loading: boolean;
|
|
18
|
-
/** Last-emitted "all settled" signature, used to avoid duplicate complete events. */
|
|
19
|
-
private _lastCompleteSig;
|
|
20
|
-
updated(changed: Map<string, unknown>): void;
|
|
21
|
-
/** All checks settled = no running and no pending. Fires `ai-validation-complete`
|
|
22
|
-
once per settle (deduped via signature). */
|
|
23
|
-
private _maybeFireComplete;
|
|
24
14
|
private get _stats();
|
|
25
15
|
private _onRun;
|
|
26
16
|
private _onItemClick;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-validation-checklist.d.ts","sourceRoot":"","sources":["../../../src/components/ai-validation-checklist/ai-validation-checklist.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ai-validation-checklist.d.ts","sourceRoot":"","sources":["../../../src/components/ai-validation-checklist/ai-validation-checklist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CACzE;AAED,qBACa,qBAAsB,SAAQ,UAAU;IACnD,OAAgB,MAAM,4BAkLnB;IAE6B,MAAM,EAAE,eAAe,EAAE,CAAM;IAC1B,KAAK,SAAgB;IAC7B,OAAO,UAAS;IAChB,OAAO,UAAS;IAE7C,OAAO,KAAK,MAAM,GASjB;IAED,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;IAWV,MAAM;CA6DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,yBAAyB,EAAE,qBAAqB,CAAC;KAClD;CACF"}
|
|
@@ -1,48 +1,19 @@
|
|
|
1
|
-
import { css as p, LitElement as
|
|
2
|
-
import { property as
|
|
3
|
-
import { h as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
(l = a[o]) && (r = (n ? l(e, s, r) : l(r)) || r);
|
|
9
|
-
return n && r && w(e, s, r), r;
|
|
1
|
+
import { css as p, LitElement as v, html as e, nothing as u } from "lit";
|
|
2
|
+
import { property as g, customElement as h } from "lit/decorators.js";
|
|
3
|
+
import { h as m, r as f, c as b, f as y } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var k = Object.defineProperty, w = Object.getOwnPropertyDescriptor, d = (a, i, s, r) => {
|
|
5
|
+
for (var t = r > 1 ? void 0 : r ? w(i, s) : i, o = a.length - 1, l; o >= 0; o--)
|
|
6
|
+
(l = a[o]) && (t = (r ? l(i, s, t) : l(t)) || t);
|
|
7
|
+
return r && t && k(i, s, t), t;
|
|
10
8
|
};
|
|
11
|
-
|
|
12
|
-
critical: "Critical",
|
|
13
|
-
high: "High",
|
|
14
|
-
medium: "Medium",
|
|
15
|
-
low: "Low",
|
|
16
|
-
info: "Info"
|
|
17
|
-
};
|
|
18
|
-
let c = class extends h {
|
|
9
|
+
let c = class extends v {
|
|
19
10
|
constructor() {
|
|
20
|
-
super(...arguments), this.checks = [], this.title = "Validation", this.
|
|
21
|
-
}
|
|
22
|
-
updated(a) {
|
|
23
|
-
a.has("checks") && this._maybeFireComplete();
|
|
11
|
+
super(...arguments), this.checks = [], this.title = "Validation", this.autoRun = !1, this.loading = !1;
|
|
24
12
|
}
|
|
25
|
-
/** All checks settled = no running and no pending. Fires `ai-validation-complete`
|
|
26
|
-
once per settle (deduped via signature). */
|
|
27
|
-
_maybeFireComplete() {
|
|
28
|
-
const a = this._stats;
|
|
29
|
-
if (!(this.checks.length > 0 && a.running === 0 && a.pending === 0)) {
|
|
30
|
-
this._lastCompleteSig = "";
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const s = `${a.passed}/${a.failed}/${a.warnings}/${this.checks.length}`;
|
|
34
|
-
s !== this._lastCompleteSig && (this._lastCompleteSig = s, this.dispatchEvent(new CustomEvent("ai-validation-complete", {
|
|
35
|
-
detail: { passed: a.passed, failed: a.failed, warnings: a.warnings, total: this.checks.length },
|
|
36
|
-
bubbles: !0,
|
|
37
|
-
composed: !0
|
|
38
|
-
})));
|
|
39
|
-
}
|
|
40
|
-
// ─── Derivations ────────────────────────────────────────────────────────
|
|
41
13
|
get _stats() {
|
|
42
|
-
const a = this.checks.filter((
|
|
43
|
-
return { passed: a, failed:
|
|
14
|
+
const a = this.checks.filter((n) => n.status === "pass").length, i = this.checks.filter((n) => n.status === "fail").length, s = this.checks.filter((n) => n.status === "warning").length, r = this.checks.filter((n) => n.status === "running").length, t = this.checks.filter((n) => n.status === "pending").length, o = this.checks.length - t - r, l = this.checks.length > 0 ? Math.round(o / this.checks.length * 100) : 0;
|
|
15
|
+
return { passed: a, failed: i, warnings: s, running: r, pending: t, done: o, percent: l };
|
|
44
16
|
}
|
|
45
|
-
// ─── Handlers ───────────────────────────────────────────────────────────
|
|
46
17
|
_onRun() {
|
|
47
18
|
this.dispatchEvent(new CustomEvent("ai-validation-run", {
|
|
48
19
|
detail: { checks: this.checks },
|
|
@@ -57,144 +28,146 @@ let c = class extends h {
|
|
|
57
28
|
composed: !0
|
|
58
29
|
}));
|
|
59
30
|
}
|
|
60
|
-
// ─── Renderers ──────────────────────────────────────────────────────────
|
|
61
31
|
_statusIcon(a) {
|
|
62
32
|
switch (a) {
|
|
63
33
|
case "pass":
|
|
64
|
-
return
|
|
34
|
+
return e`<span class="status-icon pass" aria-label="Passed">✓</span>`;
|
|
65
35
|
case "fail":
|
|
66
|
-
return
|
|
36
|
+
return e`<span class="status-icon fail" aria-label="Failed">✗</span>`;
|
|
67
37
|
case "warning":
|
|
68
|
-
return
|
|
38
|
+
return e`<span class="status-icon warning" aria-label="Warning">⚠</span>`;
|
|
69
39
|
case "running":
|
|
70
|
-
return
|
|
40
|
+
return e`<span class="status-icon running"><span class="spinner"></span></span>`;
|
|
71
41
|
case "skipped":
|
|
72
|
-
return
|
|
42
|
+
return e`<span class="status-icon skipped" aria-label="Skipped">—</span>`;
|
|
73
43
|
default:
|
|
74
|
-
return
|
|
44
|
+
return e`<span class="status-icon pending" aria-label="Pending">●</span>`;
|
|
75
45
|
}
|
|
76
46
|
}
|
|
77
47
|
render() {
|
|
78
|
-
const a = this._stats,
|
|
79
|
-
return
|
|
48
|
+
const a = this._stats, i = a.running > 0 || this.loading;
|
|
49
|
+
return e`
|
|
80
50
|
<div class="container" role="region" aria-label="${this.title}">
|
|
81
51
|
<div class="header">
|
|
82
52
|
<span class="title">${this.title}</span>
|
|
83
|
-
<
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
?loading=${e}
|
|
87
|
-
?disabled=${e || this.checks.length === 0}
|
|
88
|
-
aria-label="Run all validations"
|
|
53
|
+
<button
|
|
54
|
+
class="run-btn"
|
|
55
|
+
?disabled=${i}
|
|
89
56
|
@click=${this._onRun}
|
|
90
|
-
|
|
57
|
+
aria-label="Run validations"
|
|
58
|
+
>${i ? "Running..." : "Run All"}</button>
|
|
91
59
|
</div>
|
|
92
60
|
|
|
93
|
-
<div
|
|
94
|
-
class="progress-
|
|
95
|
-
role="progressbar"
|
|
96
|
-
aria-valuenow=${a.percent}
|
|
97
|
-
aria-valuemin="0"
|
|
98
|
-
aria-valuemax="100"
|
|
99
|
-
aria-label="Validation progress"
|
|
100
|
-
>
|
|
101
|
-
<span class="progress-fill" style="width:${a.percent}%"></span>
|
|
61
|
+
<div class="progress-track" role="progressbar" aria-valuenow=${a.percent} aria-valuemin="0" aria-valuemax="100" aria-label="Validation progress">
|
|
62
|
+
<div class="progress-fill" style="width:${a.percent}%"></div>
|
|
102
63
|
</div>
|
|
103
64
|
|
|
104
65
|
<ul class="check-list" role="list">
|
|
105
|
-
${this.checks.map((s) =>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
${s.description ? t`<div class="check-desc">${s.description}</div>` : g}
|
|
123
|
-
</div>
|
|
124
|
-
${s.score != null ? t`<span class="check-score">${s.score}%</span>` : g}
|
|
125
|
-
</button>
|
|
126
|
-
</li>
|
|
127
|
-
`)}
|
|
66
|
+
${this.checks.map((s) => e`
|
|
67
|
+
<li
|
|
68
|
+
class="check-item"
|
|
69
|
+
role="listitem"
|
|
70
|
+
tabindex="0"
|
|
71
|
+
@click=${() => this._onItemClick(s)}
|
|
72
|
+
@keydown=${(r) => {
|
|
73
|
+
(r.key === "Enter" || r.key === " ") && (r.preventDefault(), this._onItemClick(s));
|
|
74
|
+
}}
|
|
75
|
+
>
|
|
76
|
+
${this._statusIcon(s.status)}
|
|
77
|
+
<div class="check-content">
|
|
78
|
+
<div class="check-label">${s.label}</div>
|
|
79
|
+
${s.description ? e`<div class="check-desc">${s.description}</div>` : u}
|
|
80
|
+
</div>
|
|
81
|
+
</li>
|
|
82
|
+
`)}
|
|
128
83
|
</ul>
|
|
129
84
|
|
|
130
|
-
${this.checks.length > 0 ?
|
|
131
|
-
<
|
|
85
|
+
${this.checks.length > 0 ? e`
|
|
86
|
+
<div class="divider"></div>
|
|
132
87
|
<div class="summary">
|
|
133
88
|
<div class="summary-item">
|
|
134
|
-
<span class="summary-dot pass"
|
|
89
|
+
<span class="summary-dot pass"></span>
|
|
135
90
|
<span class="summary-count">${a.passed}</span>
|
|
136
91
|
<span class="summary-label">passed</span>
|
|
137
92
|
</div>
|
|
138
93
|
<div class="summary-item">
|
|
139
|
-
<span class="summary-dot fail"
|
|
94
|
+
<span class="summary-dot fail"></span>
|
|
140
95
|
<span class="summary-count">${a.failed}</span>
|
|
141
96
|
<span class="summary-label">failed</span>
|
|
142
97
|
</div>
|
|
143
|
-
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
</div>
|
|
149
|
-
` : g}
|
|
98
|
+
<div class="summary-item">
|
|
99
|
+
<span class="summary-dot warning"></span>
|
|
100
|
+
<span class="summary-count">${a.warnings}</span>
|
|
101
|
+
<span class="summary-label">warnings</span>
|
|
102
|
+
</div>
|
|
150
103
|
</div>
|
|
151
|
-
` :
|
|
104
|
+
` : u}
|
|
152
105
|
</div>
|
|
153
106
|
`;
|
|
154
107
|
}
|
|
155
108
|
};
|
|
156
|
-
c.styles = [f, b, y, p`
|
|
109
|
+
c.styles = [m, f, b, y, p`
|
|
157
110
|
:host {
|
|
158
|
-
animation: fadeSlideIn
|
|
111
|
+
animation: fadeSlideIn 200ms var(--cg-transition-easing-ease-out) both;
|
|
159
112
|
}
|
|
160
113
|
:host([hidden]) { display: none; }
|
|
161
114
|
|
|
162
115
|
.container {
|
|
163
116
|
background: var(--cg-color-surface-cards-background);
|
|
164
117
|
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
165
|
-
border-radius: var(--cg-border-radius-
|
|
166
|
-
box-shadow: var(--cg-elevation-1);
|
|
118
|
+
border-radius: var(--cg-border-radius-200);
|
|
167
119
|
padding: var(--cg-spacing-20);
|
|
168
120
|
color: var(--cg-color-surface-base-text);
|
|
169
121
|
}
|
|
170
122
|
|
|
171
|
-
/* ── Header ── */
|
|
172
123
|
.header {
|
|
173
124
|
display: flex;
|
|
174
125
|
align-items: center;
|
|
175
126
|
justify-content: space-between;
|
|
176
|
-
gap: var(--cg-spacing-12);
|
|
177
127
|
margin-bottom: var(--cg-spacing-16);
|
|
178
128
|
}
|
|
129
|
+
|
|
179
130
|
.title {
|
|
180
131
|
font-size: var(--cg-font-size-base);
|
|
181
132
|
font-weight: var(--cg-font-weight-semibold);
|
|
182
133
|
}
|
|
183
134
|
|
|
135
|
+
.run-btn {
|
|
136
|
+
background: var(--cg-color-action-primary-background-default);
|
|
137
|
+
color: var(--cg-color-surface-cards-background);
|
|
138
|
+
border: none;
|
|
139
|
+
font-size: var(--cg-font-size-xs);
|
|
140
|
+
font-weight: var(--cg-font-weight-bold);
|
|
141
|
+
padding: var(--cg-spacing-6) var(--cg-spacing-16);
|
|
142
|
+
border-radius: var(--cg-border-radius-full);
|
|
143
|
+
cursor: pointer;
|
|
144
|
+
transition: filter var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
145
|
+
}
|
|
146
|
+
.run-btn:hover:not(:disabled) { filter: brightness(0.9); }
|
|
147
|
+
.run-btn:focus-visible {
|
|
148
|
+
outline: none;
|
|
149
|
+
box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);
|
|
150
|
+
}
|
|
151
|
+
.run-btn:disabled {
|
|
152
|
+
background: var(--cg-color-action-primary-background-disable);
|
|
153
|
+
color: var(--cg-color-action-primary-text-disable);
|
|
154
|
+
cursor: not-allowed;
|
|
155
|
+
}
|
|
156
|
+
|
|
184
157
|
/* ── Progress bar ── */
|
|
185
158
|
.progress-track {
|
|
186
|
-
height: var(--cg-spacing-
|
|
159
|
+
height: var(--cg-spacing-4);
|
|
187
160
|
background: var(--cg-color-surface-cards-divider);
|
|
188
|
-
border-radius: var(--cg-border-radius-
|
|
161
|
+
border-radius: var(--cg-border-radius-50);
|
|
189
162
|
overflow: hidden;
|
|
190
163
|
margin-bottom: var(--cg-spacing-16);
|
|
191
164
|
}
|
|
165
|
+
|
|
192
166
|
.progress-fill {
|
|
193
|
-
display: block;
|
|
194
167
|
height: 100%;
|
|
195
168
|
background: var(--cg-color-action-primary-background-default);
|
|
196
|
-
border-radius: var(--cg-border-radius-
|
|
197
|
-
transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-
|
|
169
|
+
border-radius: var(--cg-border-radius-50);
|
|
170
|
+
transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-default);
|
|
198
171
|
}
|
|
199
172
|
|
|
200
173
|
/* ── Check list ── */
|
|
@@ -207,152 +180,125 @@ c.styles = [f, b, y, p`
|
|
|
207
180
|
gap: var(--cg-spacing-4);
|
|
208
181
|
}
|
|
209
182
|
|
|
210
|
-
/* Each row is a real <button> so native focus + Enter/Space work without
|
|
211
|
-
hand-rolled key handlers, and screen readers announce it correctly. */
|
|
212
183
|
.check-item {
|
|
213
184
|
display: flex;
|
|
214
185
|
align-items: flex-start;
|
|
215
|
-
gap: var(--cg-spacing-
|
|
216
|
-
width: 100%;
|
|
217
|
-
min-height: var(--cg-spacing-44, 44px);
|
|
186
|
+
gap: var(--cg-spacing-8);
|
|
218
187
|
padding: var(--cg-spacing-8) var(--cg-spacing-12);
|
|
219
188
|
border-radius: var(--cg-border-radius-100);
|
|
220
|
-
border: none;
|
|
221
|
-
background: transparent;
|
|
222
|
-
color: inherit;
|
|
223
|
-
font: inherit;
|
|
224
|
-
text-align: left;
|
|
225
189
|
cursor: pointer;
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
190
|
+
transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
191
|
+
}
|
|
192
|
+
.check-item:hover {
|
|
193
|
+
background: var(--cg-color-surface-cards-border);
|
|
230
194
|
}
|
|
231
|
-
.check-item:hover { background: var(--cg-color-action-tertiary-background-hover); }
|
|
232
|
-
.check-item:active { transform: scale(var(--cg-interaction-press-scale)); }
|
|
233
195
|
.check-item:focus-visible {
|
|
234
196
|
outline: none;
|
|
235
197
|
box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);
|
|
236
198
|
}
|
|
237
199
|
|
|
238
|
-
/* ── Status icon ── */
|
|
239
200
|
.status-icon {
|
|
240
201
|
flex-shrink: 0;
|
|
241
|
-
width: var(--cg-
|
|
242
|
-
height: var(--cg-
|
|
243
|
-
display:
|
|
202
|
+
width: var(--cg-spacing-20);
|
|
203
|
+
height: var(--cg-spacing-20);
|
|
204
|
+
display: flex;
|
|
244
205
|
align-items: center;
|
|
245
206
|
justify-content: center;
|
|
246
207
|
font-size: var(--cg-font-size-sm);
|
|
247
208
|
line-height: 1;
|
|
248
209
|
margin-top: var(--cg-spacing-1);
|
|
249
210
|
}
|
|
250
|
-
|
|
251
|
-
.status-icon.
|
|
211
|
+
|
|
212
|
+
.status-icon.pass { color: var(--cg-color-status-success-text-default); }
|
|
213
|
+
.status-icon.fail { color: var(--cg-color-status-error-text-default); }
|
|
252
214
|
.status-icon.warning { color: var(--cg-color-status-warning-text-default); }
|
|
253
215
|
.status-icon.pending { color: var(--cg-color-input-text-placeholder); }
|
|
254
216
|
.status-icon.skipped { color: var(--cg-color-input-text-placeholder); }
|
|
255
217
|
.status-icon.running { color: var(--cg-color-status-info-text-default); }
|
|
256
218
|
|
|
257
|
-
|
|
219
|
+
.spinner {
|
|
220
|
+
width: var(--cg-spacing-12);
|
|
221
|
+
height: var(--cg-spacing-12);
|
|
222
|
+
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);
|
|
223
|
+
border-top-color: var(--cg-color-status-info-text-default);
|
|
224
|
+
border-radius: var(--cg-border-radius-full);
|
|
225
|
+
animation: spin 0.8s linear infinite;
|
|
226
|
+
}
|
|
227
|
+
|
|
258
228
|
.check-content {
|
|
259
229
|
flex: 1;
|
|
260
230
|
min-width: 0;
|
|
261
|
-
display: flex;
|
|
262
|
-
flex-direction: column;
|
|
263
|
-
gap: var(--cg-spacing-2);
|
|
264
|
-
}
|
|
265
|
-
.check-label-row {
|
|
266
|
-
display: flex;
|
|
267
|
-
align-items: center;
|
|
268
|
-
gap: var(--cg-spacing-8);
|
|
269
|
-
flex-wrap: wrap;
|
|
270
231
|
}
|
|
232
|
+
|
|
271
233
|
.check-label {
|
|
272
234
|
font-size: var(--cg-font-size-sm);
|
|
273
235
|
font-weight: var(--cg-font-weight-medium);
|
|
274
236
|
}
|
|
275
|
-
.check-desc {
|
|
276
|
-
font-size: var(--cg-font-size-xs);
|
|
277
|
-
color: var(--cg-color-input-text-placeholder);
|
|
278
|
-
line-height: var(--cg-line-height-normal);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/* Severity badge — outlined pill matching the side-bar color. */
|
|
282
|
-
.severity-badge {
|
|
283
|
-
display: inline-flex;
|
|
284
|
-
align-items: center;
|
|
285
|
-
padding: 0 var(--cg-spacing-6);
|
|
286
|
-
height: var(--cg-spacing-16);
|
|
287
|
-
border-radius: var(--cg-border-radius-50);
|
|
288
|
-
font-size: 10px;
|
|
289
|
-
font-weight: var(--cg-font-weight-bold);
|
|
290
|
-
text-transform: uppercase;
|
|
291
|
-
letter-spacing: var(--cg-letter-spacing-wide);
|
|
292
|
-
border: var(--cg-border-width-50) solid currentColor;
|
|
293
|
-
background: transparent;
|
|
294
|
-
flex-shrink: 0;
|
|
295
|
-
}
|
|
296
|
-
.severity-critical { color: var(--cg-color-status-error-text-default); }
|
|
297
|
-
.severity-high { color: var(--cg-color-status-error-text-default); }
|
|
298
|
-
.severity-medium { color: var(--cg-color-status-warning-text-default); }
|
|
299
|
-
.severity-low { color: var(--cg-color-status-info-text-default); }
|
|
300
|
-
.severity-info { color: var(--cg-color-input-text-placeholder); }
|
|
301
237
|
|
|
302
|
-
.check-
|
|
303
|
-
flex-shrink: 0;
|
|
238
|
+
.check-desc {
|
|
304
239
|
font-size: var(--cg-font-size-xs);
|
|
305
|
-
font-weight: var(--cg-font-weight-semibold);
|
|
306
|
-
font-variant-numeric: tabular-nums;
|
|
307
240
|
color: var(--cg-color-input-text-placeholder);
|
|
308
241
|
margin-top: var(--cg-spacing-2);
|
|
309
242
|
}
|
|
310
243
|
|
|
311
|
-
/* ── Divider
|
|
244
|
+
/* ── Divider ── */
|
|
312
245
|
.divider {
|
|
313
246
|
height: var(--cg-border-width-50);
|
|
314
247
|
background: var(--cg-color-surface-cards-divider);
|
|
315
248
|
margin: var(--cg-spacing-16) 0;
|
|
316
|
-
border: none;
|
|
317
249
|
}
|
|
318
250
|
|
|
251
|
+
/* ── Summary ── */
|
|
319
252
|
.summary {
|
|
320
253
|
display: flex;
|
|
321
254
|
gap: var(--cg-spacing-16);
|
|
322
255
|
flex-wrap: wrap;
|
|
323
|
-
font-variant-numeric: tabular-nums;
|
|
324
256
|
}
|
|
257
|
+
|
|
325
258
|
.summary-item {
|
|
326
259
|
font-size: var(--cg-font-size-xs);
|
|
327
260
|
display: flex;
|
|
328
261
|
align-items: center;
|
|
329
262
|
gap: var(--cg-spacing-6);
|
|
330
263
|
}
|
|
264
|
+
|
|
331
265
|
.summary-dot {
|
|
332
266
|
width: var(--cg-spacing-8);
|
|
333
267
|
height: var(--cg-spacing-8);
|
|
334
268
|
border-radius: var(--cg-border-radius-full);
|
|
335
269
|
}
|
|
336
|
-
.summary-dot.pass
|
|
337
|
-
.summary-dot.fail
|
|
270
|
+
.summary-dot.pass { background: var(--cg-color-status-success-text-default); }
|
|
271
|
+
.summary-dot.fail { background: var(--cg-color-status-error-text-default); }
|
|
338
272
|
.summary-dot.warning { background: var(--cg-color-status-warning-text-default); }
|
|
339
|
-
.summary-
|
|
340
|
-
|
|
273
|
+
.summary-dot.pending { background: var(--cg-color-input-text-placeholder); }
|
|
274
|
+
|
|
275
|
+
.summary-count {
|
|
276
|
+
font-weight: var(--cg-font-weight-bold);
|
|
277
|
+
color: var(--cg-color-surface-base-text);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.summary-label {
|
|
281
|
+
color: var(--cg-color-input-text-placeholder);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
@media (prefers-reduced-motion: reduce) {
|
|
285
|
+
.spinner { animation: none !important; border-top-color: var(--cg-color-status-info-text-default); }
|
|
286
|
+
}
|
|
341
287
|
`];
|
|
342
288
|
d([
|
|
343
|
-
|
|
289
|
+
g({ attribute: !1 })
|
|
344
290
|
], c.prototype, "checks", 2);
|
|
345
291
|
d([
|
|
346
|
-
|
|
292
|
+
g({ type: String })
|
|
347
293
|
], c.prototype, "title", 2);
|
|
348
294
|
d([
|
|
349
|
-
|
|
350
|
-
], c.prototype, "
|
|
295
|
+
g({ type: Boolean })
|
|
296
|
+
], c.prototype, "autoRun", 2);
|
|
351
297
|
d([
|
|
352
|
-
|
|
353
|
-
], c.prototype, "
|
|
298
|
+
g({ type: Boolean })
|
|
299
|
+
], c.prototype, "loading", 2);
|
|
354
300
|
c = d([
|
|
355
|
-
|
|
301
|
+
h("ai-validation-checklist")
|
|
356
302
|
], c);
|
|
357
303
|
export {
|
|
358
304
|
c as AiValidationChecklist
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-validation-checklist.js","sources":["../../../src/components/ai-validation-checklist/ai-validation-checklist.ts"],"sourcesContent":["/**\n * @element ai-validation-checklist\n * Data / output validation checklist with status icons, optional severity\n * tags + per-check score, progress bar, run button, summary, and\n * fires-on-settle completion event. Modeled on Patronus / Confident AI /\n * Fiddler guardrail-result UIs.\n *\n * @example\n * ```html\n * <ai-validation-checklist\n * title=\"Output validation\"\n * .checks=${[\n * { id: '1', label: 'Schema valid', status: 'pass', severity: 'low' },\n * { id: '2', label: 'No PII leaked', status: 'pass', severity: 'critical', score: 100 },\n * { id: '3', label: 'Hallucination check', status: 'fail', severity: 'high', score: 45,\n * description: 'Found 2 unverifiable claims' },\n * ]}\n * ></ai-validation-checklist>\n * ```\n *\n * @fires {CustomEvent<{checks}>} ai-validation-run - Run-all clicked\n * @fires {CustomEvent<{passed, failed, warnings, total}>} ai-validation-complete - All checks settled (no running/pending left)\n * @fires {CustomEvent<{id, label, status}>} ai-validation-item-click - Check row activated\n *\n * @cssprop [--cg-color-surface-cards-background] - Card background\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, state, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\nimport '../cg-button/cg-button.js';\nimport '../cg-spinner/cg-spinner.js';\n\nexport type Severity = 'critical' | 'high' | 'medium' | 'low' | 'info';\n\nexport interface ValidationCheck {\n id: string;\n label: string;\n description?: string;\n status: 'pending' | 'running' | 'pass' | 'fail' | 'warning' | 'skipped';\n /** Optional severity classification — drives the colored side bar + badge. */\n severity?: Severity;\n /** Optional 0-100 score; renders as X% next to the status icon. */\n score?: number;\n}\n\nconst SEVERITY_LABELS: Record<Severity, string> = {\n critical: 'Critical',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n info: 'Info',\n};\n\n@customElement('ai-validation-checklist')\nexport class AiValidationChecklist 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-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-150);\n box-shadow: var(--cg-elevation-1);\n padding: var(--cg-spacing-20);\n color: var(--cg-color-surface-base-text);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--cg-spacing-12);\n margin-bottom: var(--cg-spacing-16);\n }\n .title {\n font-size: var(--cg-font-size-base);\n font-weight: var(--cg-font-weight-semibold);\n }\n\n /* ── Progress bar ── */\n .progress-track {\n height: var(--cg-spacing-6);\n background: var(--cg-color-surface-cards-divider);\n border-radius: var(--cg-border-radius-full);\n overflow: hidden;\n margin-bottom: var(--cg-spacing-16);\n }\n .progress-fill {\n display: block;\n height: 100%;\n background: var(--cg-color-action-primary-background-default);\n border-radius: var(--cg-border-radius-full);\n transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Check list ── */\n .check-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-4);\n }\n\n /* Each row is a real <button> so native focus + Enter/Space work without\n hand-rolled key handlers, and screen readers announce it correctly. */\n .check-item {\n display: flex;\n align-items: flex-start;\n gap: var(--cg-spacing-12);\n width: 100%;\n min-height: var(--cg-spacing-44, 44px);\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-100);\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n position: relative;\n transition:\n background var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .check-item:hover { background: var(--cg-color-action-tertiary-background-hover); }\n .check-item:active { transform: scale(var(--cg-interaction-press-scale)); }\n .check-item:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n\n /* ── Status icon ── */\n .status-icon {\n flex-shrink: 0;\n width: var(--cg-icon-size-150);\n height: var(--cg-icon-size-150);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: var(--cg-font-size-sm);\n line-height: 1;\n margin-top: var(--cg-spacing-1);\n }\n .status-icon.pass { color: var(--cg-color-status-success-text-default); }\n .status-icon.fail { color: var(--cg-color-status-error-text-default); }\n .status-icon.warning { color: var(--cg-color-status-warning-text-default); }\n .status-icon.pending { color: var(--cg-color-input-text-placeholder); }\n .status-icon.skipped { color: var(--cg-color-input-text-placeholder); }\n .status-icon.running { color: var(--cg-color-status-info-text-default); }\n\n /* ── Content ── */\n .check-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-2);\n }\n .check-label-row {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-wrap: wrap;\n }\n .check-label {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n }\n .check-desc {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n line-height: var(--cg-line-height-normal);\n }\n\n /* Severity badge — outlined pill matching the side-bar color. */\n .severity-badge {\n display: inline-flex;\n align-items: center;\n padding: 0 var(--cg-spacing-6);\n height: var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-50);\n font-size: 10px;\n font-weight: var(--cg-font-weight-bold);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n border: var(--cg-border-width-50) solid currentColor;\n background: transparent;\n flex-shrink: 0;\n }\n .severity-critical { color: var(--cg-color-status-error-text-default); }\n .severity-high { color: var(--cg-color-status-error-text-default); }\n .severity-medium { color: var(--cg-color-status-warning-text-default); }\n .severity-low { color: var(--cg-color-status-info-text-default); }\n .severity-info { color: var(--cg-color-input-text-placeholder); }\n\n .check-score {\n flex-shrink: 0;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n font-variant-numeric: tabular-nums;\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-2);\n }\n\n /* ── Divider + Summary ── */\n .divider {\n height: var(--cg-border-width-50);\n background: var(--cg-color-surface-cards-divider);\n margin: var(--cg-spacing-16) 0;\n border: none;\n }\n\n .summary {\n display: flex;\n gap: var(--cg-spacing-16);\n flex-wrap: wrap;\n font-variant-numeric: tabular-nums;\n }\n .summary-item {\n font-size: var(--cg-font-size-xs);\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n }\n .summary-dot {\n width: var(--cg-spacing-8);\n height: var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-full);\n }\n .summary-dot.pass { background: var(--cg-color-status-success-text-default); }\n .summary-dot.fail { background: var(--cg-color-status-error-text-default); }\n .summary-dot.warning { background: var(--cg-color-status-warning-text-default); }\n .summary-count { font-weight: var(--cg-font-weight-bold); color: var(--cg-color-surface-base-text); }\n .summary-label { color: var(--cg-color-input-text-placeholder); }\n `];\n\n @property({ attribute: false }) checks: ValidationCheck[] = [];\n @property({ type: String }) override title = 'Validation';\n @property({ type: Boolean }) loading = false;\n\n /** Last-emitted \"all settled\" signature, used to avoid duplicate complete events. */\n @state() private _lastCompleteSig = '';\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('checks')) this._maybeFireComplete();\n }\n\n /** All checks settled = no running and no pending. Fires `ai-validation-complete`\n once per settle (deduped via signature). */\n private _maybeFireComplete(): void {\n const s = this._stats;\n const settled = this.checks.length > 0 && s.running === 0 && s.pending === 0;\n if (!settled) {\n this._lastCompleteSig = '';\n return;\n }\n const sig = `${s.passed}/${s.failed}/${s.warnings}/${this.checks.length}`;\n if (sig === this._lastCompleteSig) return;\n this._lastCompleteSig = sig;\n this.dispatchEvent(new CustomEvent('ai-validation-complete', {\n detail: { passed: s.passed, failed: s.failed, warnings: s.warnings, total: this.checks.length },\n bubbles: true, composed: true,\n }));\n }\n\n // ─── Derivations ────────────────────────────────────────────────────────\n\n private get _stats() {\n const passed = this.checks.filter(c => c.status === 'pass').length;\n const failed = this.checks.filter(c => c.status === 'fail').length;\n const warnings = this.checks.filter(c => c.status === 'warning').length;\n const running = this.checks.filter(c => c.status === 'running').length;\n const pending = this.checks.filter(c => c.status === 'pending').length;\n const done = this.checks.length - pending - running;\n const percent = this.checks.length > 0 ? Math.round((done / this.checks.length) * 100) : 0;\n return { passed, failed, warnings, running, pending, done, percent };\n }\n\n // ─── Handlers ───────────────────────────────────────────────────────────\n\n private _onRun(): void {\n this.dispatchEvent(new CustomEvent('ai-validation-run', {\n detail: { checks: this.checks },\n bubbles: true, composed: true,\n }));\n }\n\n private _onItemClick(check: ValidationCheck): void {\n this.dispatchEvent(new CustomEvent('ai-validation-item-click', {\n detail: { id: check.id, label: check.label, status: check.status },\n bubbles: true, composed: true,\n }));\n }\n\n // ─── Renderers ──────────────────────────────────────────────────────────\n\n private _statusIcon(status: ValidationCheck['status']) {\n switch (status) {\n case 'pass':\n return html`<span class=\"status-icon pass\" aria-label=\"Passed\">✓</span>`;\n case 'fail':\n return html`<span class=\"status-icon fail\" aria-label=\"Failed\">✕</span>`;\n case 'warning':\n return html`<span class=\"status-icon warning\" aria-label=\"Warning\">!</span>`;\n case 'running':\n return html`<span class=\"status-icon running\" aria-label=\"Running\"><cg-spinner size=\"sm\"></cg-spinner></span>`;\n case 'skipped':\n return html`<span class=\"status-icon skipped\" aria-label=\"Skipped\">—</span>`;\n default:\n return html`<span class=\"status-icon pending\" aria-label=\"Pending\">●</span>`;\n }\n }\n\n override render() {\n const s = this._stats;\n const isRunning = s.running > 0 || this.loading;\n\n return html`\n <div class=\"container\" role=\"region\" aria-label=\"${this.title}\">\n <div class=\"header\">\n <span class=\"title\">${this.title}</span>\n <cg-button\n variant=\"primary\"\n size=\"sm\"\n ?loading=${isRunning}\n ?disabled=${isRunning || this.checks.length === 0}\n aria-label=\"Run all validations\"\n @click=${this._onRun}\n >Run all</cg-button>\n </div>\n\n <div\n class=\"progress-track\"\n role=\"progressbar\"\n aria-valuenow=${s.percent}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-label=\"Validation progress\"\n >\n <span class=\"progress-fill\" style=\"width:${s.percent}%\"></span>\n </div>\n\n <ul class=\"check-list\" role=\"list\">\n ${this.checks.map(check => html`\n <li role=\"listitem\">\n <button\n class=\"check-item\"\n type=\"button\"\n @click=${() => this._onItemClick(check)}\n >\n ${this._statusIcon(check.status)}\n <div class=\"check-content\">\n <div class=\"check-label-row\">\n <span class=\"check-label\">${check.label}</span>\n ${check.severity ? html`\n <span class=\"severity-badge severity-${check.severity}\">\n ${SEVERITY_LABELS[check.severity]}\n </span>\n ` : nothing}\n </div>\n ${check.description ? html`<div class=\"check-desc\">${check.description}</div>` : nothing}\n </div>\n ${check.score != null ? html`<span class=\"check-score\">${check.score}%</span>` : nothing}\n </button>\n </li>\n `)}\n </ul>\n\n ${this.checks.length > 0 ? html`\n <hr class=\"divider\" aria-hidden=\"true\" />\n <div class=\"summary\">\n <div class=\"summary-item\">\n <span class=\"summary-dot pass\" aria-hidden=\"true\"></span>\n <span class=\"summary-count\">${s.passed}</span>\n <span class=\"summary-label\">passed</span>\n </div>\n <div class=\"summary-item\">\n <span class=\"summary-dot fail\" aria-hidden=\"true\"></span>\n <span class=\"summary-count\">${s.failed}</span>\n <span class=\"summary-label\">failed</span>\n </div>\n ${s.warnings ? html`\n <div class=\"summary-item\">\n <span class=\"summary-dot warning\" aria-hidden=\"true\"></span>\n <span class=\"summary-count\">${s.warnings}</span>\n <span class=\"summary-label\">warning${s.warnings === 1 ? '' : 's'}</span>\n </div>\n ` : nothing}\n </div>\n ` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-validation-checklist': AiValidationChecklist;\n }\n}\n"],"names":["SEVERITY_LABELS","AiValidationChecklist","LitElement","changed","s","sig","passed","c","failed","warnings","running","pending","done","percent","check","status","html","isRunning","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;;;AA6CA,MAAMA,IAA4C;AAAA,EAChD,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AACR;AAGO,IAAMC,IAAN,cAAoCC,EAAW;AAAA,EAA/C,cAAA;AAAA,UAAA,GAAA,SAAA,GA4L2B,KAAA,SAA4B,CAAA,GAChC,KAAS,QAAQ,cAChB,KAAA,UAAU,IAG9B,KAAQ,mBAAmB;AAAA,EAAA;AAAA,EAE3B,QAAQC,GAAqC;AACpD,IAAIA,EAAQ,IAAI,QAAQ,UAAQ,mBAAA;AAAA,EAClC;AAAA;AAAA;AAAA,EAIQ,qBAA2B;AACjC,UAAMC,IAAI,KAAK;AAEf,QAAI,EADY,KAAK,OAAO,SAAS,KAAKA,EAAE,YAAY,KAAKA,EAAE,YAAY,IAC7D;AACZ,WAAK,mBAAmB;AACxB;AAAA,IACF;AACA,UAAMC,IAAM,GAAGD,EAAE,MAAM,IAAIA,EAAE,MAAM,IAAIA,EAAE,QAAQ,IAAI,KAAK,OAAO,MAAM;AACvE,IAAIC,MAAQ,KAAK,qBACjB,KAAK,mBAAmBA,GACxB,KAAK,cAAc,IAAI,YAAY,0BAA0B;AAAA,MAC3D,QAAQ,EAAE,QAAQD,EAAE,QAAQ,QAAQA,EAAE,QAAQ,UAAUA,EAAE,UAAU,OAAO,KAAK,OAAO,OAAA;AAAA,MACvF,SAAS;AAAA,MAAM,UAAU;AAAA,IAAA,CAC1B,CAAC;AAAA,EACJ;AAAA;AAAA,EAIA,IAAY,SAAS;AACnB,UAAME,IAAS,KAAK,OAAO,OAAO,OAAKC,EAAE,WAAW,MAAM,EAAE,QACtDC,IAAS,KAAK,OAAO,OAAO,OAAKD,EAAE,WAAW,MAAM,EAAE,QACtDE,IAAW,KAAK,OAAO,OAAO,OAAKF,EAAE,WAAW,SAAS,EAAE,QAC3DG,IAAU,KAAK,OAAO,OAAO,OAAKH,EAAE,WAAW,SAAS,EAAE,QAC1DI,IAAU,KAAK,OAAO,OAAO,OAAKJ,EAAE,WAAW,SAAS,EAAE,QAC1DK,IAAO,KAAK,OAAO,SAASD,IAAUD,GACtCG,IAAU,KAAK,OAAO,SAAS,IAAI,KAAK,MAAOD,IAAO,KAAK,OAAO,SAAU,GAAG,IAAI;AACzF,WAAO,EAAE,QAAAN,GAAQ,QAAAE,GAAQ,UAAAC,GAAU,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,SAAAC,EAAA;AAAA,EAC7D;AAAA;AAAA,EAIQ,SAAe;AACrB,SAAK,cAAc,IAAI,YAAY,qBAAqB;AAAA,MACtD,QAAQ,EAAE,QAAQ,KAAK,OAAA;AAAA,MACvB,SAAS;AAAA,MAAM,UAAU;AAAA,IAAA,CAC1B,CAAC;AAAA,EACJ;AAAA,EAEQ,aAAaC,GAA8B;AACjD,SAAK,cAAc,IAAI,YAAY,4BAA4B;AAAA,MAC7D,QAAQ,EAAE,IAAIA,EAAM,IAAI,OAAOA,EAAM,OAAO,QAAQA,EAAM,OAAA;AAAA,MAC1D,SAAS;AAAA,MAAM,UAAU;AAAA,IAAA,CAC1B,CAAC;AAAA,EACJ;AAAA;AAAA,EAIQ,YAAYC,GAAmC;AACrD,YAAQA,GAAA;AAAA,MACN,KAAK;AACH,eAAOC;AAAA,MACT,KAAK;AACH,eAAOA;AAAA,MACT,KAAK;AACH,eAAOA;AAAA,MACT,KAAK;AACH,eAAOA;AAAA,MACT,KAAK;AACH,eAAOA;AAAA,MACT;AACE,eAAOA;AAAA,IAAA;AAAA,EAEb;AAAA,EAES,SAAS;AAChB,UAAMZ,IAAI,KAAK,QACTa,IAAYb,EAAE,UAAU,KAAK,KAAK;AAExC,WAAOY;AAAA,yDAC8C,KAAK,KAAK;AAAA;AAAA,gCAEnC,KAAK,KAAK;AAAA;AAAA;AAAA;AAAA,uBAInBC,CAAS;AAAA,wBACRA,KAAa,KAAK,OAAO,WAAW,CAAC;AAAA;AAAA,qBAExC,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAONb,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,qDAKkBA,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,YAIlD,KAAK,OAAO,IAAI,CAAAU,MAASE;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKV,MAAM,KAAK,aAAaF,CAAK,CAAC;AAAA;AAAA,oBAErC,KAAK,YAAYA,EAAM,MAAM,CAAC;AAAA;AAAA;AAAA,kDAGAA,EAAM,KAAK;AAAA,wBACrCA,EAAM,WAAWE;AAAA,+DACsBF,EAAM,QAAQ;AAAA,4BACjDd,EAAgBc,EAAM,QAAQ,CAAC;AAAA;AAAA,0BAEjCI,CAAO;AAAA;AAAA,sBAEXJ,EAAM,cAAcE,4BAA+BF,EAAM,WAAW,WAAWI,CAAO;AAAA;AAAA,oBAExFJ,EAAM,SAAS,OAAOE,8BAAiCF,EAAM,KAAK,aAAaI,CAAO;AAAA;AAAA;AAAA,aAG7F,CAAC;AAAA;AAAA;AAAA,UAGJ,KAAK,OAAO,SAAS,IAAIF;AAAA;AAAA;AAAA;AAAA;AAAA,4CAKSZ,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,4CAKRA,EAAE,MAAM;AAAA;AAAA;AAAA,cAGtCA,EAAE,WAAWY;AAAA;AAAA;AAAA,8CAGmBZ,EAAE,QAAQ;AAAA,qDACHA,EAAE,aAAa,IAAI,KAAK,GAAG;AAAA;AAAA,gBAEhEc,CAAO;AAAA;AAAA,YAEXA,CAAO;AAAA;AAAA;AAAA,EAGjB;AACF;AAzVajB,EACK,SAAS,CAACkB,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;AAAA;AAAA;AAAA;AAAA;AAAA,GAyLzE;AAE+BC,EAAA;AAAA,EAA/BC,EAAS,EAAE,WAAW,GAAA,CAAO;AAAA,GA5LnBvB,EA4LqB,WAAA,UAAA,CAAA;AACKsB,EAAA;AAAA,EAApCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA7LfvB,EA6L0B,WAAA,SAAA,CAAA;AACRsB,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA9LhBvB,EA8LkB,WAAA,WAAA,CAAA;AAGZsB,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAjMIxB,EAiMM,WAAA,oBAAA,CAAA;AAjMNA,IAANsB,EAAA;AAAA,EADNG,EAAc,yBAAyB;AAAA,GAC3BzB,CAAA;"}
|
|
1
|
+
{"version":3,"file":"ai-validation-checklist.js","sources":["../../../src/components/ai-validation-checklist/ai-validation-checklist.ts"],"sourcesContent":["/**\n * @element ai-validation-checklist\n * Data validation checklist with status icons, progress bar, run button, and summary stats.\n *\n * @example\n * ```html\n * <ai-validation-checklist\n * title=\"Data Quality\"\n * .checks=${[{id:'1',label:'Schema valid',status:'pass'},{id:'2',label:'No nulls',status:'fail'}]}\n * ></ai-validation-checklist>\n * ```\n *\n * @fires {CustomEvent<{checks}>} ai-validation-run - Run all validations\n * @fires {CustomEvent<{passed, failed, warnings, total}>} ai-validation-complete - All checks finished\n * @fires {CustomEvent<{id, label, status}>} ai-validation-item-click - Check item clicked\n *\n * @cssprop [--cg-brand-ai-accent=#dfff61] - Accent for run button and progress\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, spinKeyframes, fadeSlideInKeyframes } from '../../styles/index.js';\n\nexport interface ValidationCheck {\n id: string;\n label: string;\n description?: string;\n status: 'pending' | 'running' | 'pass' | 'fail' | 'warning' | 'skipped';\n}\n\n@customElement('ai-validation-checklist')\nexport class AiValidationChecklist extends LitElement {\n static override styles = [hostBlock, reducedMotion, spinKeyframes, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn 200ms var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n .container {\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-20);\n color: var(--cg-color-surface-base-text);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--cg-spacing-16);\n }\n\n .title {\n font-size: var(--cg-font-size-base);\n font-weight: var(--cg-font-weight-semibold);\n }\n\n .run-btn {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-cards-background);\n border: none;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-bold);\n padding: var(--cg-spacing-6) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n transition: filter var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .run-btn:hover:not(:disabled) { filter: brightness(0.9); }\n .run-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n .run-btn:disabled {\n background: var(--cg-color-action-primary-background-disable);\n color: var(--cg-color-action-primary-text-disable);\n cursor: not-allowed;\n }\n\n /* ── Progress bar ── */\n .progress-track {\n height: var(--cg-spacing-4);\n background: var(--cg-color-surface-cards-divider);\n border-radius: var(--cg-border-radius-50);\n overflow: hidden;\n margin-bottom: var(--cg-spacing-16);\n }\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\n /* ── Check list ── */\n .check-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-4);\n }\n\n .check-item {\n display: flex;\n align-items: flex-start;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-100);\n cursor: pointer;\n transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .check-item:hover {\n background: var(--cg-color-surface-cards-border);\n }\n .check-item:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n\n .status-icon {\n flex-shrink: 0;\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--cg-font-size-sm);\n line-height: 1;\n margin-top: var(--cg-spacing-1);\n }\n\n .status-icon.pass { color: var(--cg-color-status-success-text-default); }\n .status-icon.fail { color: var(--cg-color-status-error-text-default); }\n .status-icon.warning { color: var(--cg-color-status-warning-text-default); }\n .status-icon.pending { color: var(--cg-color-input-text-placeholder); }\n .status-icon.skipped { color: var(--cg-color-input-text-placeholder); }\n .status-icon.running { color: var(--cg-color-status-info-text-default); }\n\n .spinner {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n border-top-color: var(--cg-color-status-info-text-default);\n border-radius: var(--cg-border-radius-full);\n animation: spin 0.8s linear infinite;\n }\n\n .check-content {\n flex: 1;\n min-width: 0;\n }\n\n .check-label {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n }\n\n .check-desc {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-2);\n }\n\n /* ── Divider ── */\n .divider {\n height: var(--cg-border-width-50);\n background: var(--cg-color-surface-cards-divider);\n margin: var(--cg-spacing-16) 0;\n }\n\n /* ── Summary ── */\n .summary {\n display: flex;\n gap: var(--cg-spacing-16);\n flex-wrap: wrap;\n }\n\n .summary-item {\n font-size: var(--cg-font-size-xs);\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n }\n\n .summary-dot {\n width: var(--cg-spacing-8);\n height: var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-full);\n }\n .summary-dot.pass { background: var(--cg-color-status-success-text-default); }\n .summary-dot.fail { background: var(--cg-color-status-error-text-default); }\n .summary-dot.warning { background: var(--cg-color-status-warning-text-default); }\n .summary-dot.pending { background: var(--cg-color-input-text-placeholder); }\n\n .summary-count {\n font-weight: var(--cg-font-weight-bold);\n color: var(--cg-color-surface-base-text);\n }\n\n .summary-label {\n color: var(--cg-color-input-text-placeholder);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .spinner { animation: none !important; border-top-color: var(--cg-color-status-info-text-default); }\n }\n `];\n\n @property({ attribute: false }) checks: ValidationCheck[] = [];\n @property({ type: String }) override title = 'Validation';\n @property({ type: Boolean }) autoRun = false;\n @property({ type: Boolean }) loading = false;\n\n private get _stats() {\n const passed = this.checks.filter(c => c.status === 'pass').length;\n const failed = this.checks.filter(c => c.status === 'fail').length;\n const warnings = this.checks.filter(c => c.status === 'warning').length;\n const running = this.checks.filter(c => c.status === 'running').length;\n const pending = this.checks.filter(c => c.status === 'pending').length;\n const done = this.checks.length - pending - running;\n const percent = this.checks.length > 0 ? Math.round((done / this.checks.length) * 100) : 0;\n return { passed, failed, warnings, running, pending, done, percent };\n }\n\n private _onRun() {\n this.dispatchEvent(new CustomEvent('ai-validation-run', {\n detail: { checks: this.checks },\n bubbles: true, composed: true,\n }));\n }\n\n private _onItemClick(check: ValidationCheck) {\n this.dispatchEvent(new CustomEvent('ai-validation-item-click', {\n detail: { id: check.id, label: check.label, status: check.status },\n bubbles: true, composed: true,\n }));\n }\n\n private _statusIcon(status: ValidationCheck['status']) {\n switch (status) {\n case 'pass': return html`<span class=\"status-icon pass\" aria-label=\"Passed\">✓</span>`;\n case 'fail': return html`<span class=\"status-icon fail\" aria-label=\"Failed\">✗</span>`;\n case 'warning': return html`<span class=\"status-icon warning\" aria-label=\"Warning\">⚠</span>`;\n case 'running': return html`<span class=\"status-icon running\"><span class=\"spinner\"></span></span>`;\n case 'skipped': return html`<span class=\"status-icon skipped\" aria-label=\"Skipped\">—</span>`;\n default: return html`<span class=\"status-icon pending\" aria-label=\"Pending\">●</span>`;\n }\n }\n\n override render() {\n const s = this._stats;\n const isRunning = s.running > 0 || this.loading;\n\n return html`\n <div class=\"container\" role=\"region\" aria-label=\"${this.title}\">\n <div class=\"header\">\n <span class=\"title\">${this.title}</span>\n <button\n class=\"run-btn\"\n ?disabled=${isRunning}\n @click=${this._onRun}\n aria-label=\"Run validations\"\n >${isRunning ? 'Running...' : 'Run All'}</button>\n </div>\n\n <div class=\"progress-track\" role=\"progressbar\" aria-valuenow=${s.percent} aria-valuemin=\"0\" aria-valuemax=\"100\" aria-label=\"Validation progress\">\n <div class=\"progress-fill\" style=\"width:${s.percent}%\"></div>\n </div>\n\n <ul class=\"check-list\" role=\"list\">\n ${this.checks.map(check => html`\n <li\n class=\"check-item\"\n role=\"listitem\"\n tabindex=\"0\"\n @click=${() => this._onItemClick(check)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._onItemClick(check); } }}\n >\n ${this._statusIcon(check.status)}\n <div class=\"check-content\">\n <div class=\"check-label\">${check.label}</div>\n ${check.description ? html`<div class=\"check-desc\">${check.description}</div>` : nothing}\n </div>\n </li>\n `)}\n </ul>\n\n ${this.checks.length > 0 ? html`\n <div class=\"divider\"></div>\n <div class=\"summary\">\n <div class=\"summary-item\">\n <span class=\"summary-dot pass\"></span>\n <span class=\"summary-count\">${s.passed}</span>\n <span class=\"summary-label\">passed</span>\n </div>\n <div class=\"summary-item\">\n <span class=\"summary-dot fail\"></span>\n <span class=\"summary-count\">${s.failed}</span>\n <span class=\"summary-label\">failed</span>\n </div>\n <div class=\"summary-item\">\n <span class=\"summary-dot warning\"></span>\n <span class=\"summary-count\">${s.warnings}</span>\n <span class=\"summary-label\">warnings</span>\n </div>\n </div>\n ` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-validation-checklist': AiValidationChecklist;\n }\n}\n"],"names":["AiValidationChecklist","LitElement","passed","c","failed","warnings","running","pending","done","percent","check","status","html","s","isRunning","e","nothing","hostBlock","reducedMotion","spinKeyframes","fadeSlideInKeyframes","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -5,10 +5,6 @@ export interface VersionEntry {
|
|
|
5
5
|
status: 'active' | 'canary' | 'deprecated';
|
|
6
6
|
rolloutPercent?: number;
|
|
7
7
|
date: string;
|
|
8
|
-
/** Optional per-version metrics (LaunchDarkly AI configs pattern). */
|
|
9
|
-
latency?: number;
|
|
10
|
-
cost?: string;
|
|
11
|
-
quality?: number;
|
|
12
8
|
}
|
|
13
9
|
export declare class AiVersionSelector extends LitElement {
|
|
14
10
|
static styles: import('lit').CSSResult[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-version-selector.d.ts","sourceRoot":"","sources":["../../../src/components/ai-version-selector/ai-version-selector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ai-version-selector.d.ts","sourceRoot":"","sources":["../../../src/components/ai-version-selector/ai-version-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,4BA6MnB;IAE0B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACvD,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC7B,QAAQ,SAAM;IAE1C,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;IAQT,MAAM;CA8ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
|