@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,155 +1,101 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as
|
|
3
|
-
import { h, r as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
for (var r = o > 1 ? void 0 : o ? w(t, i) : t, c = e.length - 1, d; c >= 0; c--)
|
|
9
|
-
(d = e[c]) && (r = (o ? d(t, i, r) : d(r)) || r);
|
|
10
|
-
return o && r && m(t, i, r), r;
|
|
1
|
+
import { css as u, LitElement as p, nothing as d, html as s } from "lit";
|
|
2
|
+
import { property as g, customElement as v } from "lit/decorators.js";
|
|
3
|
+
import { h as b, r as f, f as h } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var m = Object.defineProperty, x = Object.getOwnPropertyDescriptor, n = (r, a, e, i) => {
|
|
5
|
+
for (var o = i > 1 ? void 0 : i ? x(a, e) : a, c = r.length - 1, l; c >= 0; c--)
|
|
6
|
+
(l = r[c]) && (o = (i ? l(a, e, o) : l(o)) || o);
|
|
7
|
+
return i && o && m(a, e, o), o;
|
|
11
8
|
};
|
|
12
|
-
let
|
|
9
|
+
let t = class extends p {
|
|
13
10
|
constructor() {
|
|
14
11
|
super(...arguments), this.rounded = "lg", this.versions = [], this.selected = "";
|
|
15
12
|
}
|
|
16
|
-
|
|
17
|
-
_onSelect(e) {
|
|
13
|
+
_onSelect(r) {
|
|
18
14
|
this.dispatchEvent(new CustomEvent("ai-version-select", {
|
|
19
15
|
bubbles: !0,
|
|
20
16
|
composed: !0,
|
|
21
|
-
detail: { id:
|
|
17
|
+
detail: { id: r.id, label: r.label }
|
|
22
18
|
}));
|
|
23
19
|
}
|
|
24
|
-
_onRolloutChange(
|
|
25
|
-
const
|
|
20
|
+
_onRolloutChange(r, a) {
|
|
21
|
+
const e = Number(a.target.value);
|
|
26
22
|
this.dispatchEvent(new CustomEvent("ai-version-rollout-change", {
|
|
27
23
|
bubbles: !0,
|
|
28
24
|
composed: !0,
|
|
29
|
-
detail: { id:
|
|
25
|
+
detail: { id: r.id, rolloutPercent: e }
|
|
30
26
|
}));
|
|
31
27
|
}
|
|
32
|
-
_onPromote(
|
|
33
|
-
|
|
28
|
+
_onPromote(r, a) {
|
|
29
|
+
a.stopPropagation(), this.dispatchEvent(new CustomEvent("ai-version-rollout-change", {
|
|
34
30
|
bubbles: !0,
|
|
35
31
|
composed: !0,
|
|
36
|
-
detail: { id:
|
|
32
|
+
detail: { id: r.id, rolloutPercent: 100 }
|
|
37
33
|
}));
|
|
38
34
|
}
|
|
39
35
|
render() {
|
|
40
|
-
return
|
|
41
|
-
<h3 class="title">Model
|
|
36
|
+
return s`
|
|
37
|
+
<h3 class="title">Model Versions</h3>
|
|
42
38
|
<div class="version-list" role="radiogroup" aria-label="Select model version">
|
|
43
|
-
${this.versions.map((
|
|
44
|
-
const
|
|
45
|
-
return
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
${this.versions.map((r) => {
|
|
40
|
+
const a = r.id === this.selected;
|
|
41
|
+
return s`
|
|
42
|
+
<div class="version-item" role="radio"
|
|
43
|
+
aria-selected=${a ? "true" : "false"}
|
|
44
|
+
aria-label="${r.label} ${r.status}"
|
|
45
|
+
tabindex="0"
|
|
46
|
+
@click=${() => this._onSelect(r)}
|
|
47
|
+
@keydown=${(e) => {
|
|
48
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), this._onSelect(r));
|
|
49
|
+
}}>
|
|
54
50
|
<div class="version-top">
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
tabindex="-1"
|
|
60
|
-
></cg-radio>
|
|
61
|
-
<span class="version-label">${e.label}</span>
|
|
62
|
-
<span class="status-pill ${e.status}">
|
|
63
|
-
<span class="pill-dot" aria-hidden="true"></span>
|
|
64
|
-
${e.status}
|
|
65
|
-
</span>
|
|
66
|
-
<span class="version-date">${e.date}</span>
|
|
51
|
+
<span class="radio-dot"><span class="radio-inner"></span></span>
|
|
52
|
+
<span class="version-label">${r.label}</span>
|
|
53
|
+
<span class="status-badge status-${r.status}">${r.status}</span>
|
|
54
|
+
<span class="version-date">${r.date}</span>
|
|
67
55
|
</div>
|
|
68
|
-
|
|
69
|
-
${o ? a`
|
|
70
|
-
<div class="meta-row">
|
|
71
|
-
${e.latency != null ? a`
|
|
72
|
-
<span class="meta-item">
|
|
73
|
-
<span class="meta-label">Latency</span>
|
|
74
|
-
<span class="meta-value">${e.latency} ms</span>
|
|
75
|
-
</span>
|
|
76
|
-
` : s}
|
|
77
|
-
${e.cost ? a`
|
|
78
|
-
<span class="meta-item">
|
|
79
|
-
<span class="meta-label">Cost</span>
|
|
80
|
-
<span class="meta-value">${e.cost}</span>
|
|
81
|
-
</span>
|
|
82
|
-
` : s}
|
|
83
|
-
${e.quality != null ? a`
|
|
84
|
-
<span class="meta-item">
|
|
85
|
-
<span class="meta-label">Quality</span>
|
|
86
|
-
<span class="meta-value">${e.quality}%</span>
|
|
87
|
-
</span>
|
|
88
|
-
` : s}
|
|
89
|
-
</div>
|
|
90
|
-
` : s}
|
|
91
|
-
|
|
92
|
-
${e.status === "deprecated" ? a`
|
|
56
|
+
${r.status === "deprecated" ? s`
|
|
93
57
|
<div class="deprecation-warning" role="alert">
|
|
94
|
-
|
|
95
|
-
<path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/>
|
|
96
|
-
<line x1="12" y1="9" x2="12" y2="13"/>
|
|
97
|
-
<line x1="12" y1="17" x2="12.01" y2="17"/>
|
|
98
|
-
</svg>
|
|
99
|
-
<span>This version is deprecated. Migrate before the sunset date.</span>
|
|
58
|
+
⚠ This version is deprecated. Consider migrating.
|
|
100
59
|
</div>
|
|
101
|
-
` :
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
${(e.rolloutPercent ?? 0) < 100 ? a`
|
|
117
|
-
<div class="rollout-actions">
|
|
118
|
-
<cg-button
|
|
119
|
-
variant="secondary"
|
|
120
|
-
size="sm"
|
|
121
|
-
@click=${(r) => this._onPromote(e, r)}
|
|
122
|
-
aria-label="Promote ${e.label} to 100%"
|
|
123
|
-
>Promote to 100%</cg-button>
|
|
124
|
-
</div>
|
|
125
|
-
` : s}
|
|
60
|
+
` : d}
|
|
61
|
+
${r.rolloutPercent != null && r.status !== "deprecated" ? s`
|
|
62
|
+
<div class="rollout-row">
|
|
63
|
+
<span class="rollout-label">Rollout</span>
|
|
64
|
+
<input type="range" min="0" max="100" .value=${String(r.rolloutPercent)}
|
|
65
|
+
@input=${(e) => this._onRolloutChange(r, e)}
|
|
66
|
+
@click=${(e) => e.stopPropagation()}
|
|
67
|
+
aria-label="Rollout percentage for ${r.label}" />
|
|
68
|
+
<span class="rollout-value">${r.rolloutPercent}%</span>
|
|
69
|
+
${r.rolloutPercent < 100 ? s`
|
|
70
|
+
<button class="promote-btn" @click=${(e) => this._onPromote(r, e)}
|
|
71
|
+
tabindex="0" aria-label="Promote ${r.label} to 100%">
|
|
72
|
+
Promote to 100%
|
|
73
|
+
</button>
|
|
74
|
+
` : d}
|
|
126
75
|
</div>
|
|
127
|
-
` :
|
|
128
|
-
</
|
|
76
|
+
` : d}
|
|
77
|
+
</div>
|
|
129
78
|
`;
|
|
130
79
|
})}
|
|
131
80
|
</div>
|
|
132
81
|
`;
|
|
133
82
|
}
|
|
134
83
|
};
|
|
135
|
-
|
|
84
|
+
t.styles = [b, f, h, u`
|
|
136
85
|
:host {
|
|
137
|
-
|
|
138
|
-
background: var(--cg-color-surface-cards-background);
|
|
86
|
+
background: var(--cg-color-surface-base-background);
|
|
139
87
|
color: var(--cg-color-surface-base-text);
|
|
140
88
|
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
141
89
|
border-radius: var(--cg-border-radius-150);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;
|
|
90
|
+
padding: var(--cg-spacing-16);
|
|
91
|
+
animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
145
92
|
}
|
|
146
93
|
:host([hidden]) { display: none; }
|
|
147
94
|
|
|
148
95
|
.title {
|
|
149
96
|
font-size: var(--cg-font-size-sm);
|
|
150
97
|
font-weight: var(--cg-font-weight-semibold);
|
|
151
|
-
margin: 0 0 var(--cg-spacing-
|
|
152
|
-
color: var(--cg-color-surface-base-text);
|
|
98
|
+
margin: 0 0 var(--cg-spacing-12) 0;
|
|
153
99
|
}
|
|
154
100
|
|
|
155
101
|
.version-list {
|
|
@@ -158,169 +104,202 @@ l.styles = [h, b, f, g`
|
|
|
158
104
|
gap: var(--cg-spacing-8);
|
|
159
105
|
}
|
|
160
106
|
|
|
161
|
-
/* ── Version row card ──
|
|
162
|
-
Border: subtle resting, slightly stronger on hover, one more
|
|
163
|
-
tonal step on selected. NO brand-accent border on selected (was
|
|
164
|
-
too loud) — selection is signaled by the cg-radio dot. NO press-
|
|
165
|
-
scale on the row — selecting a version isn't a "tap" interaction. */
|
|
166
107
|
.version-item {
|
|
167
108
|
display: flex;
|
|
168
109
|
flex-direction: column;
|
|
169
|
-
gap: var(--cg-spacing-
|
|
170
|
-
padding: var(--cg-spacing-12)
|
|
171
|
-
background: var(--cg-color-surface-cards-
|
|
110
|
+
gap: var(--cg-spacing-8);
|
|
111
|
+
padding: var(--cg-spacing-12);
|
|
112
|
+
background: var(--cg-color-surface-cards-background);
|
|
172
113
|
border-radius: var(--cg-border-radius-100);
|
|
173
|
-
border: var(--cg-border-width-
|
|
114
|
+
border: var(--cg-border-width-100) solid transparent;
|
|
174
115
|
cursor: pointer;
|
|
175
|
-
width: 100%;
|
|
176
|
-
text-align: left;
|
|
177
|
-
font: inherit;
|
|
178
|
-
color: inherit;
|
|
179
116
|
transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
180
117
|
}
|
|
181
|
-
|
|
182
|
-
.version-item:
|
|
183
|
-
|
|
184
|
-
|
|
118
|
+
|
|
119
|
+
.version-item:hover {
|
|
120
|
+
border-color: var(--cg-color-surface-cards-border);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.version-item[aria-selected="true"] {
|
|
124
|
+
border-color: var(--cg-color-surface-base-text);
|
|
185
125
|
}
|
|
186
|
-
|
|
187
|
-
|
|
126
|
+
|
|
127
|
+
.version-item:focus-visible {
|
|
128
|
+
outline: var(--cg-outline-width-default) solid var(--cg-overlay-accent-strong);
|
|
129
|
+
outline-offset: var(--cg-outline-offset-default);
|
|
188
130
|
}
|
|
189
131
|
|
|
190
132
|
.version-top {
|
|
191
133
|
display: flex;
|
|
192
134
|
align-items: center;
|
|
193
|
-
gap: var(--cg-spacing-
|
|
194
|
-
flex-wrap: wrap;
|
|
135
|
+
gap: var(--cg-spacing-8);
|
|
195
136
|
}
|
|
196
137
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
138
|
+
.radio-dot {
|
|
139
|
+
width: var(--cg-spacing-16);
|
|
140
|
+
height: var(--cg-spacing-16);
|
|
141
|
+
border-radius: 50%;
|
|
142
|
+
border: var(--cg-border-width-100) solid var(--cg-color-surface-cards-border);
|
|
202
143
|
flex-shrink: 0;
|
|
144
|
+
display: flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
justify-content: center;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.version-item[aria-selected="true"] .radio-dot {
|
|
150
|
+
border-color: var(--cg-color-surface-base-text);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.radio-inner {
|
|
154
|
+
width: var(--cg-spacing-8);
|
|
155
|
+
height: var(--cg-spacing-8);
|
|
156
|
+
border-radius: 50%;
|
|
157
|
+
background: var(--cg-color-action-primary-background-default);
|
|
158
|
+
display: none;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.version-item[aria-selected="true"] .radio-inner {
|
|
162
|
+
display: block;
|
|
203
163
|
}
|
|
204
164
|
|
|
205
165
|
.version-label {
|
|
206
166
|
flex: 1;
|
|
207
|
-
min-width: 0;
|
|
208
167
|
font-size: var(--cg-font-size-sm);
|
|
209
168
|
font-weight: var(--cg-font-weight-medium);
|
|
210
|
-
color: var(--cg-color-surface-base-text);
|
|
211
|
-
overflow: hidden;
|
|
212
|
-
text-overflow: ellipsis;
|
|
213
|
-
white-space: nowrap;
|
|
214
169
|
}
|
|
215
170
|
|
|
216
171
|
.version-date {
|
|
217
172
|
font-size: var(--cg-font-size-xs);
|
|
218
173
|
color: var(--cg-color-input-text-placeholder);
|
|
219
|
-
flex-shrink: 0;
|
|
220
|
-
font-variant-numeric: tabular-nums;
|
|
221
174
|
}
|
|
222
175
|
|
|
223
|
-
|
|
224
|
-
.status-pill {
|
|
176
|
+
.status-badge {
|
|
225
177
|
display: inline-flex;
|
|
226
|
-
align-items: center;
|
|
227
|
-
gap: var(--cg-spacing-6);
|
|
228
178
|
padding: var(--cg-spacing-2) var(--cg-spacing-8);
|
|
229
179
|
border-radius: var(--cg-border-radius-full);
|
|
230
|
-
font-size:
|
|
231
|
-
font-weight: var(--cg-font-weight-
|
|
180
|
+
font-size: var(--cg-font-size-xs);
|
|
181
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
232
182
|
text-transform: uppercase;
|
|
233
|
-
letter-spacing:
|
|
183
|
+
letter-spacing: 0.05em;
|
|
234
184
|
flex-shrink: 0;
|
|
235
|
-
border: var(--cg-border-width-50) solid currentColor;
|
|
236
|
-
background: transparent;
|
|
237
185
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
background: currentColor;
|
|
243
|
-
flex-shrink: 0;
|
|
186
|
+
|
|
187
|
+
.status-active {
|
|
188
|
+
background: var(--cg-color-status-success-background-default);
|
|
189
|
+
color: var(--cg-color-status-success-text-default);
|
|
244
190
|
}
|
|
245
|
-
|
|
246
|
-
.status-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
.status-pill.active .pill-dot {
|
|
250
|
-
animation: cg-version-pulse 2s var(--cg-transition-easing-ease-in-out) infinite;
|
|
191
|
+
|
|
192
|
+
.status-canary {
|
|
193
|
+
background: var(--cg-color-status-warning-background-default);
|
|
194
|
+
color: var(--cg-color-status-warning-text-default);
|
|
251
195
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
196
|
+
|
|
197
|
+
.status-deprecated {
|
|
198
|
+
background: var(--cg-color-status-error-background-default);
|
|
199
|
+
color: var(--cg-color-status-error-text-default);
|
|
255
200
|
}
|
|
256
201
|
|
|
257
|
-
/* ── Deprecation warning ── */
|
|
258
202
|
.deprecation-warning {
|
|
259
203
|
display: flex;
|
|
260
204
|
align-items: center;
|
|
261
|
-
gap: var(--cg-spacing-
|
|
205
|
+
gap: var(--cg-spacing-6);
|
|
262
206
|
font-size: var(--cg-font-size-xs);
|
|
263
207
|
color: var(--cg-color-status-error-text-default);
|
|
264
|
-
padding: var(--cg-spacing-
|
|
208
|
+
padding: var(--cg-spacing-4) var(--cg-spacing-8);
|
|
265
209
|
background: var(--cg-color-status-error-background-default);
|
|
266
|
-
border: var(--cg-border-width-50) solid var(--cg-color-status-error-border-default);
|
|
267
210
|
border-radius: var(--cg-border-radius-50);
|
|
268
211
|
}
|
|
269
|
-
.deprecation-warning svg {
|
|
270
|
-
width: var(--cg-icon-size-100);
|
|
271
|
-
height: var(--cg-icon-size-100);
|
|
272
|
-
flex-shrink: 0;
|
|
273
|
-
}
|
|
274
212
|
|
|
275
|
-
|
|
276
|
-
.meta-row {
|
|
213
|
+
.rollout-row {
|
|
277
214
|
display: flex;
|
|
278
|
-
|
|
279
|
-
gap: var(--cg-spacing-
|
|
215
|
+
align-items: center;
|
|
216
|
+
gap: var(--cg-spacing-8);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.rollout-label {
|
|
280
220
|
font-size: var(--cg-font-size-xs);
|
|
281
221
|
color: var(--cg-color-input-text-placeholder);
|
|
282
|
-
|
|
222
|
+
min-width: var(--cg-spacing-56);
|
|
283
223
|
}
|
|
284
|
-
.meta-item { display: inline-flex; gap: var(--cg-spacing-4); }
|
|
285
|
-
.meta-label { color: var(--cg-color-input-text-placeholder); }
|
|
286
|
-
.meta-value { color: var(--cg-color-surface-base-text); font-weight: var(--cg-font-weight-medium); }
|
|
287
224
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
gap: var(--cg-spacing-4);
|
|
225
|
+
input[type="range"] {
|
|
226
|
+
flex: 1;
|
|
227
|
+
-webkit-appearance: none;
|
|
228
|
+
appearance: none;
|
|
229
|
+
height: var(--cg-spacing-4);
|
|
230
|
+
background: var(--cg-color-surface-base-background);
|
|
231
|
+
border-radius: var(--cg-spacing-2);
|
|
232
|
+
outline: none;
|
|
297
233
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
234
|
+
|
|
235
|
+
input[type="range"]::-webkit-slider-thumb {
|
|
236
|
+
-webkit-appearance: none;
|
|
237
|
+
width: var(--cg-spacing-12);
|
|
238
|
+
height: var(--cg-spacing-12);
|
|
239
|
+
border-radius: 50%;
|
|
240
|
+
background: var(--cg-color-action-primary-background-default);
|
|
241
|
+
cursor: pointer;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
input[type="range"]:focus-visible {
|
|
245
|
+
outline: var(--cg-outline-width-default) solid var(--cg-overlay-accent-strong);
|
|
246
|
+
outline-offset: var(--cg-spacing-4);
|
|
247
|
+
border-radius: var(--cg-spacing-2);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.rollout-value {
|
|
251
|
+
font-size: var(--cg-font-size-xs);
|
|
252
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
253
|
+
color: var(--cg-color-surface-base-text);
|
|
254
|
+
min-width: var(--cg-spacing-32);
|
|
255
|
+
text-align: right;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.promote-btn {
|
|
259
|
+
background: transparent;
|
|
260
|
+
border: var(--cg-border-width-50) solid var(--cg-overlay-accent-strong);
|
|
261
|
+
color: var(--cg-color-surface-base-text);
|
|
262
|
+
border-radius: var(--cg-border-radius-50);
|
|
263
|
+
padding: var(--cg-spacing-2) var(--cg-spacing-8);
|
|
264
|
+
font-size: var(--cg-font-size-xs);
|
|
265
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
266
|
+
cursor: pointer;
|
|
267
|
+
font-family: inherit;
|
|
268
|
+
flex-shrink: 0;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.promote-btn:focus-visible {
|
|
272
|
+
outline: var(--cg-outline-width-default) solid var(--cg-overlay-accent-strong);
|
|
273
|
+
outline-offset: var(--cg-outline-offset-default);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.promote-btn:hover {
|
|
277
|
+
background: var(--cg-overlay-accent-subtle);
|
|
278
|
+
}
|
|
279
|
+
.promote-btn:active {
|
|
280
|
+
transform: scale(var(--cg-interaction-press-scale));
|
|
302
281
|
}
|
|
303
282
|
|
|
304
283
|
/* ── Rounded variants ── */
|
|
305
284
|
:host([rounded="none"]) { border-radius: 0; }
|
|
306
|
-
:host([rounded="sm"])
|
|
307
|
-
:host([rounded="md"])
|
|
308
|
-
:host([rounded="lg"])
|
|
285
|
+
:host([rounded="sm"]) { border-radius: var(--cg-border-radius-50); }
|
|
286
|
+
:host([rounded="md"]) { border-radius: var(--cg-border-radius-100); }
|
|
287
|
+
:host([rounded="lg"]) { border-radius: var(--cg-border-radius-150); }
|
|
309
288
|
:host([rounded="full"]) { border-radius: var(--cg-border-radius-full); }
|
|
310
289
|
`];
|
|
311
290
|
n([
|
|
312
|
-
|
|
313
|
-
],
|
|
291
|
+
g({ reflect: !0 })
|
|
292
|
+
], t.prototype, "rounded", 2);
|
|
314
293
|
n([
|
|
315
|
-
|
|
316
|
-
],
|
|
294
|
+
g({ type: Array })
|
|
295
|
+
], t.prototype, "versions", 2);
|
|
317
296
|
n([
|
|
318
|
-
|
|
319
|
-
],
|
|
320
|
-
|
|
297
|
+
g({ type: String })
|
|
298
|
+
], t.prototype, "selected", 2);
|
|
299
|
+
t = n([
|
|
321
300
|
v("ai-version-selector")
|
|
322
|
-
],
|
|
301
|
+
], t);
|
|
323
302
|
export {
|
|
324
|
-
|
|
303
|
+
t as AiVersionSelector
|
|
325
304
|
};
|
|
326
305
|
//# sourceMappingURL=ai-version-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-version-selector.js","sources":["../../../src/components/ai-version-selector/ai-version-selector.ts"],"sourcesContent":["/**\n * @element ai-version-selector\n * Model-version picker — radio-group selection, outlined status pills with\n * leading dot (active / canary / deprecated), dogfooded <cg-slider> rollout\n * percentage, dogfooded <cg-button> Promote action, optional per-version\n * latency / cost / quality meta. Modeled on LaunchDarkly AI configs +\n * Vercel Rolling Releases.\n *\n * @example\n * ```html\n * <ai-version-selector selected=\"v3\" .versions=${[\n * { id: 'v3', label: 'v3.0-canary', status: 'canary', rolloutPercent: 10, date: 'Mar 28', latency: 280 },\n * { id: 'v2', label: 'v2.1-stable', status: 'active', rolloutPercent: 90, date: 'Mar 15', latency: 240 },\n * ]}></ai-version-selector>\n * ```\n *\n * @prop {VersionEntry[]} versions - Array of versions\n * @prop {string} selected - Currently selected version ID\n *\n * @fires {CustomEvent<{id, label}>} ai-version-select - Selection changed\n * @fires {CustomEvent<{id, rolloutPercent}>} ai-version-rollout-change - Slider or Promote\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\nimport '../cg-slider/cg-slider.js';\nimport '../cg-button/cg-button.js';\nimport '../cg-radio/cg-radio.js';\n\nexport interface VersionEntry {\n id: string;\n label: string;\n status: 'active' | 'canary' | 'deprecated';\n rolloutPercent?: number;\n date: string;\n /** Optional per-version metrics (LaunchDarkly AI configs pattern). */\n latency?: number; // ms\n cost?: string; // formatted dollar value, e.g. \"$0.04 / 1k tokens\"\n quality?: number; // 0-100 score\n}\n\n@customElement('ai-version-selector')\nexport class AiVersionSelector extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n display: block;\n background: var(--cg-color-surface-cards-background);\n color: var(--cg-color-surface-base-text);\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 animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n .title {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n margin: 0 0 var(--cg-spacing-16) 0;\n color: var(--cg-color-surface-base-text);\n }\n\n .version-list {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-8);\n }\n\n /* ── Version row card ──\n Border: subtle resting, slightly stronger on hover, one more\n tonal step on selected. NO brand-accent border on selected (was\n too loud) — selection is signaled by the cg-radio dot. NO press-\n scale on the row — selecting a version isn't a \"tap\" interaction. */\n .version-item {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n background: var(--cg-color-surface-cards-emphasis);\n border-radius: var(--cg-border-radius-100);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n cursor: pointer;\n width: 100%;\n text-align: left;\n font: inherit;\n color: inherit;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .version-item:hover { border-color: var(--cg-color-surface-cards-border-strong); }\n .version-item:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n .version-item[aria-checked=\"true\"] {\n border-color: var(--cg-color-surface-cards-border-strong);\n }\n\n .version-top {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n flex-wrap: wrap;\n }\n\n /* The cg-radio inside the row is a display-only indicator; the\n wrapping button captures all interaction. pointer-events: none\n lets clicks fall through to the button. */\n .version-item cg-radio {\n pointer-events: none;\n flex-shrink: 0;\n }\n\n .version-label {\n flex: 1;\n min-width: 0;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-base-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .version-date {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n }\n\n /* ── Status pill — outlined with leading colored dot ── */\n .status-pill {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-full);\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 flex-shrink: 0;\n border: var(--cg-border-width-50) solid currentColor;\n background: transparent;\n }\n .status-pill .pill-dot {\n width: var(--cg-spacing-6);\n height: var(--cg-spacing-6);\n border-radius: var(--cg-border-radius-full);\n background: currentColor;\n flex-shrink: 0;\n }\n .status-pill.active { color: var(--cg-color-status-success-text-default); }\n .status-pill.canary { color: var(--cg-color-status-warning-text-default); }\n .status-pill.deprecated { color: var(--cg-color-status-error-text-default); }\n /* Pulse the active dot — alive signal. */\n .status-pill.active .pill-dot {\n animation: cg-version-pulse 2s var(--cg-transition-easing-ease-in-out) infinite;\n }\n @keyframes cg-version-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n /* ── Deprecation warning ── */\n .deprecation-warning {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-status-error-text-default);\n padding: var(--cg-spacing-6) var(--cg-spacing-8);\n background: var(--cg-color-status-error-background-default);\n border: var(--cg-border-width-50) solid var(--cg-color-status-error-border-default);\n border-radius: var(--cg-border-radius-50);\n }\n .deprecation-warning svg {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n flex-shrink: 0;\n }\n\n /* ── Per-version meta row (latency / cost / quality) ── */\n .meta-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cg-spacing-12);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n font-variant-numeric: tabular-nums;\n }\n .meta-item { display: inline-flex; gap: var(--cg-spacing-4); }\n .meta-label { color: var(--cg-color-input-text-placeholder); }\n .meta-value { color: var(--cg-color-surface-base-text); font-weight: var(--cg-font-weight-medium); }\n\n /* ── Rollout section ──\n Slider gets a full-width row of its own; the Promote action sits on\n a dedicated row below, right-aligned, as a tertiary (text-style)\n button so it reads as a quick-shortcut, not a primary CTA competing\n with the slider's value display. */\n .rollout-section {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-4);\n }\n .rollout-section cg-slider { width: 100%; }\n .rollout-actions {\n display: flex;\n justify-content: flex-end;\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) { border-radius: 0; }\n :host([rounded=\"sm\"]) { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property({ type: Array }) versions: VersionEntry[] = [];\n @property({ type: String }) selected = '';\n\n // ─── Handlers ───────────────────────────────────────────────────────────\n\n private _onSelect(v: VersionEntry): void {\n this.dispatchEvent(new CustomEvent('ai-version-select', {\n bubbles: true, composed: true,\n detail: { id: v.id, label: v.label },\n }));\n }\n\n private _onRolloutChange(v: VersionEntry, e: Event): void {\n // cg-slider fires CustomEvent<{value: number}>.\n const detail = (e as CustomEvent<{ value: number }>).detail;\n const value = detail?.value ?? 0;\n this.dispatchEvent(new CustomEvent('ai-version-rollout-change', {\n bubbles: true, composed: true,\n detail: { id: v.id, rolloutPercent: value },\n }));\n }\n\n private _onPromote(v: VersionEntry, e: Event): void {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('ai-version-rollout-change', {\n bubbles: true, composed: true,\n detail: { id: v.id, rolloutPercent: 100 },\n }));\n }\n\n override render() {\n return html`\n <h3 class=\"title\">Model versions</h3>\n <div class=\"version-list\" role=\"radiogroup\" aria-label=\"Select model version\">\n ${this.versions.map(v => {\n const isSelected = v.id === this.selected;\n const showRollout = v.rolloutPercent != null && v.status !== 'deprecated';\n const hasMeta = v.latency != null || v.cost != null || v.quality != null;\n\n return html`\n <button\n class=\"version-item\"\n type=\"button\"\n role=\"radio\"\n aria-checked=${isSelected ? 'true' : 'false'}\n aria-label=\"${v.label}, ${v.status}\"\n @click=${() => this._onSelect(v)}\n >\n <div class=\"version-top\">\n <cg-radio\n variant=\"tick\"\n .checked=${isSelected}\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></cg-radio>\n <span class=\"version-label\">${v.label}</span>\n <span class=\"status-pill ${v.status}\">\n <span class=\"pill-dot\" aria-hidden=\"true\"></span>\n ${v.status}\n </span>\n <span class=\"version-date\">${v.date}</span>\n </div>\n\n ${hasMeta ? html`\n <div class=\"meta-row\">\n ${v.latency != null ? html`\n <span class=\"meta-item\">\n <span class=\"meta-label\">Latency</span>\n <span class=\"meta-value\">${v.latency} ms</span>\n </span>\n ` : nothing}\n ${v.cost ? html`\n <span class=\"meta-item\">\n <span class=\"meta-label\">Cost</span>\n <span class=\"meta-value\">${v.cost}</span>\n </span>\n ` : nothing}\n ${v.quality != null ? html`\n <span class=\"meta-item\">\n <span class=\"meta-label\">Quality</span>\n <span class=\"meta-value\">${v.quality}%</span>\n </span>\n ` : nothing}\n </div>\n ` : nothing}\n\n ${v.status === 'deprecated' ? html`\n <div class=\"deprecation-warning\" role=\"alert\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"/>\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"/>\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"/>\n </svg>\n <span>This version is deprecated. Migrate before the sunset date.</span>\n </div>\n ` : nothing}\n\n ${showRollout ? html`\n <div class=\"rollout-section\" @click=${(e: Event) => e.stopPropagation()}>\n <cg-slider\n label=\"Rollout\"\n .value=${v.rolloutPercent ?? 0}\n min=\"0\"\n max=\"100\"\n unit=\"%\"\n showValue\n showTooltip\n aria-label=\"Rollout percentage for ${v.label}\"\n @cg-change=${(e: Event) => this._onRolloutChange(v, e)}\n ></cg-slider>\n ${(v.rolloutPercent ?? 0) < 100 ? html`\n <div class=\"rollout-actions\">\n <cg-button\n variant=\"secondary\"\n size=\"sm\"\n @click=${(e: Event) => this._onPromote(v, e)}\n aria-label=\"Promote ${v.label} to 100%\"\n >Promote to 100%</cg-button>\n </div>\n ` : nothing}\n </div>\n ` : nothing}\n </button>\n `;\n })}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-version-selector': AiVersionSelector;\n }\n}\n"],"names":["AiVersionSelector","LitElement","v","e","value","html","isSelected","showRollout","hasMeta","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-version-selector.js","sources":["../../../src/components/ai-version-selector/ai-version-selector.ts"],"sourcesContent":["/**\n * @element ai-version-selector\n * Radio-group version picker for AI models with status badges\n * (active/canary/deprecated), rollout percentage sliders,\n * \"Promote to 100%\" buttons, and deprecation warnings.\n *\n * @example\n * ```html\n * <ai-version-selector selected=\"v2\" .versions=${[\n * { id: 'v2', label: 'v2.1-stable', status: 'active', rolloutPercent: 100, date: 'Mar 15' },\n * { id: 'v3', label: 'v3.0-canary', status: 'canary', rolloutPercent: 10, date: 'Mar 28' }\n * ]}></ai-version-selector>\n * ```\n *\n * @prop {VersionEntry[]} versions - Array of version entries\n * @prop {string} selected - Currently selected version ID\n *\n * @fires {CustomEvent<{id: string, label: string}>} ai-version-select - When a version is selected\n * @fires {CustomEvent<{id: string, rolloutPercent: number}>} ai-version-rollout-change - When rollout slider or promote button changes\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\nexport interface VersionEntry {\n id: string;\n label: string;\n status: 'active' | 'canary' | 'deprecated';\n rolloutPercent?: number;\n date: string;\n}\n\n@customElement('ai-version-selector')\nexport class AiVersionSelector extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n background: var(--cg-color-surface-base-background);\n color: var(--cg-color-surface-base-text);\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 animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([hidden]) { display: none; }\n\n .title {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n margin: 0 0 var(--cg-spacing-12) 0;\n }\n\n .version-list {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-8);\n }\n\n .version-item {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-12);\n background: var(--cg-color-surface-cards-background);\n border-radius: var(--cg-border-radius-100);\n border: var(--cg-border-width-100) solid transparent;\n cursor: pointer;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n .version-item:hover {\n border-color: var(--cg-color-surface-cards-border);\n }\n\n .version-item[aria-selected=\"true\"] {\n border-color: var(--cg-color-surface-base-text);\n }\n\n .version-item:focus-visible {\n outline: var(--cg-outline-width-default) solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .version-top {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n }\n\n .radio-dot {\n width: var(--cg-spacing-16);\n height: var(--cg-spacing-16);\n border-radius: 50%;\n border: var(--cg-border-width-100) solid var(--cg-color-surface-cards-border);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .version-item[aria-selected=\"true\"] .radio-dot {\n border-color: var(--cg-color-surface-base-text);\n }\n\n .radio-inner {\n width: var(--cg-spacing-8);\n height: var(--cg-spacing-8);\n border-radius: 50%;\n background: var(--cg-color-action-primary-background-default);\n display: none;\n }\n\n .version-item[aria-selected=\"true\"] .radio-inner {\n display: block;\n }\n\n .version-label {\n flex: 1;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n }\n\n .version-date {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n }\n\n .status-badge {\n display: inline-flex;\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-full);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n flex-shrink: 0;\n }\n\n .status-active {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n }\n\n .status-canary {\n background: var(--cg-color-status-warning-background-default);\n color: var(--cg-color-status-warning-text-default);\n }\n\n .status-deprecated {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n }\n\n .deprecation-warning {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-status-error-text-default);\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n background: var(--cg-color-status-error-background-default);\n border-radius: var(--cg-border-radius-50);\n }\n\n .rollout-row {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n }\n\n .rollout-label {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n min-width: var(--cg-spacing-56);\n }\n\n input[type=\"range\"] {\n flex: 1;\n -webkit-appearance: none;\n appearance: none;\n height: var(--cg-spacing-4);\n background: var(--cg-color-surface-base-background);\n border-radius: var(--cg-spacing-2);\n outline: none;\n }\n\n input[type=\"range\"]::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n border-radius: 50%;\n background: var(--cg-color-action-primary-background-default);\n cursor: pointer;\n }\n\n input[type=\"range\"]:focus-visible {\n outline: var(--cg-outline-width-default) solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-spacing-4);\n border-radius: var(--cg-spacing-2);\n }\n\n .rollout-value {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n min-width: var(--cg-spacing-32);\n text-align: right;\n }\n\n .promote-btn {\n background: transparent;\n border: var(--cg-border-width-50) solid var(--cg-overlay-accent-strong);\n color: var(--cg-color-surface-base-text);\n border-radius: var(--cg-border-radius-50);\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n cursor: pointer;\n font-family: inherit;\n flex-shrink: 0;\n }\n\n .promote-btn:focus-visible {\n outline: var(--cg-outline-width-default) solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .promote-btn:hover {\n background: var(--cg-overlay-accent-subtle);\n }\n .promote-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) { border-radius: 0; }\n :host([rounded=\"sm\"]) { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property({ type: Array }) versions: VersionEntry[] = [];\n @property({ type: String }) selected = '';\n\n private _onSelect(v: VersionEntry): void {\n this.dispatchEvent(new CustomEvent('ai-version-select', {\n bubbles: true, composed: true,\n detail: { id: v.id, label: v.label },\n }));\n }\n\n private _onRolloutChange(v: VersionEntry, e: Event): void {\n const value = Number((e.target as HTMLInputElement).value);\n this.dispatchEvent(new CustomEvent('ai-version-rollout-change', {\n bubbles: true, composed: true,\n detail: { id: v.id, rolloutPercent: value },\n }));\n }\n\n private _onPromote(v: VersionEntry, e: Event): void {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('ai-version-rollout-change', {\n bubbles: true, composed: true,\n detail: { id: v.id, rolloutPercent: 100 },\n }));\n }\n\n override render() {\n return html`\n <h3 class=\"title\">Model Versions</h3>\n <div class=\"version-list\" role=\"radiogroup\" aria-label=\"Select model version\">\n ${this.versions.map(v => {\n const isSelected = v.id === this.selected;\n return html`\n <div class=\"version-item\" role=\"radio\"\n aria-selected=${isSelected ? 'true' : 'false'}\n aria-label=\"${v.label} ${v.status}\"\n tabindex=\"0\"\n @click=${() => this._onSelect(v)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._onSelect(v); } }}>\n <div class=\"version-top\">\n <span class=\"radio-dot\"><span class=\"radio-inner\"></span></span>\n <span class=\"version-label\">${v.label}</span>\n <span class=\"status-badge status-${v.status}\">${v.status}</span>\n <span class=\"version-date\">${v.date}</span>\n </div>\n ${v.status === 'deprecated' ? html`\n <div class=\"deprecation-warning\" role=\"alert\">\n ⚠ This version is deprecated. Consider migrating.\n </div>\n ` : nothing}\n ${v.rolloutPercent != null && v.status !== 'deprecated' ? html`\n <div class=\"rollout-row\">\n <span class=\"rollout-label\">Rollout</span>\n <input type=\"range\" min=\"0\" max=\"100\" .value=${String(v.rolloutPercent)}\n @input=${(e: Event) => this._onRolloutChange(v, e)}\n @click=${(e: Event) => e.stopPropagation()}\n aria-label=\"Rollout percentage for ${v.label}\" />\n <span class=\"rollout-value\">${v.rolloutPercent}%</span>\n ${v.rolloutPercent < 100 ? html`\n <button class=\"promote-btn\" @click=${(e: Event) => this._onPromote(v, e)}\n tabindex=\"0\" aria-label=\"Promote ${v.label} to 100%\">\n Promote to 100%\n </button>\n ` : nothing}\n </div>\n ` : nothing}\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-version-selector': AiVersionSelector;\n }\n}\n"],"names":["AiVersionSelector","LitElement","v","e","value","html","isSelected","nothing","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","customElement"],"mappings":"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"}
|