@cognivo/components 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/focus-trap-vlQwKK-3.js +82 -0
- package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
- package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
- package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
- package/dist/cognivo.min.js +3375 -5270
- package/dist/cognivo.min.js.map +1 -1
- package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
- package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
- package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
- package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
- package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
- package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
- package/dist/components/ai-annotation/ai-annotation.js +2 -2
- package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
- package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
- package/dist/components/ai-avatar/ai-avatar.js +1 -1
- package/dist/components/ai-badge/ai-badge.js +1 -1
- package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
- package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
- package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
- package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
- package/dist/components/ai-changelog/ai-changelog.js +26 -26
- package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
- package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
- package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/ai-chat/ai-chat.js +9 -3
- package/dist/components/ai-chat/ai-chat.js.map +1 -1
- package/dist/components/ai-citation/ai-citation.d.ts +0 -6
- package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/ai-citation/ai-citation.js +64 -90
- package/dist/components/ai-citation/ai-citation.js.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
- package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
- package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
- package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
- package/dist/components/ai-context-window/ai-context-window.js +19 -19
- package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
- package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
- package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
- package/dist/components/ai-data-card/ai-data-card.js +2 -2
- package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
- package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
- package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
- package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
- package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
- package/dist/components/ai-data-table/ai-data-table.js +9 -9
- package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
- package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
- package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
- package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
- package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
- package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
- package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.js +10 -5
- package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
- package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
- package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
- package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
- package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
- package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
- package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
- package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
- package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
- package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
- package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
- package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
- package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
- package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
- package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
- package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
- package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
- package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
- package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
- package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
- package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
- package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
- package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
- package/dist/components/ai-presence/ai-presence.js +25 -25
- package/dist/components/ai-presence/ai-presence.js.map +1 -1
- package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
- package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
- package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
- package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
- package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
- package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
- package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
- package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
- package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
- package/dist/components/ai-search/ai-search.js +1 -1
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
- package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
- package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
- package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
- package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
- package/dist/components/ai-status-page/ai-status-page.js +15 -15
- package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
- package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
- package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
- package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
- package/dist/components/ai-thinking/ai-thinking.js +1 -1
- package/dist/components/ai-timeline/ai-timeline.js +2 -2
- package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
- package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
- package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
- package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
- package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
- package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
- package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
- package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
- package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
- package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
- package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
- package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
- package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
- package/dist/components/bias-authority/bias-authority.js +1 -1
- package/dist/components/bias-commitment/bias-commitment.js +1 -1
- package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
- package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
- package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
- package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
- package/dist/components/cg-accordion/cg-accordion.js +51 -43
- package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
- package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.js +24 -24
- package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
- package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
- package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
- package/dist/components/cg-badge/cg-badge.js +26 -20
- package/dist/components/cg-badge/cg-badge.js.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
- package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
- package/dist/components/cg-button/cg-button.d.ts +5 -71
- package/dist/components/cg-button/cg-button.d.ts.map +1 -1
- package/dist/components/cg-button/cg-button.js +63 -172
- package/dist/components/cg-button/cg-button.js.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.js +43 -29
- package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.js +28 -12
- package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
- package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
- package/dist/components/cg-callout/cg-callout.js +49 -48
- package/dist/components/cg-callout/cg-callout.js.map +1 -1
- package/dist/components/cg-card/cg-card.d.ts +9 -22
- package/dist/components/cg-card/cg-card.d.ts.map +1 -1
- package/dist/components/cg-card/cg-card.js +28 -56
- package/dist/components/cg-card/cg-card.js.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.js +19 -13
- package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
- package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
- package/dist/components/cg-chart/cg-chart.js +63 -58
- package/dist/components/cg-chart/cg-chart.js.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
- package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
- package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
- package/dist/components/cg-chip/cg-chip.js +31 -31
- package/dist/components/cg-chip/cg-chip.js.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.js +36 -34
- package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
- package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
- package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.js +13 -6
- package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
- package/dist/components/cg-command/cg-command.d.ts.map +1 -1
- package/dist/components/cg-command/cg-command.js +52 -45
- package/dist/components/cg-command/cg-command.js.map +1 -1
- package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
- package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
- package/dist/components/cg-drawer/cg-drawer.js +3 -3
- package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
- package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
- package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
- package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.js +9 -10
- package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
- package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
- package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
- package/dist/components/cg-form/cg-form.js +17 -17
- package/dist/components/cg-form/cg-form.js.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
- package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
- package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
- package/dist/components/cg-icon/cg-icon.js +44 -37
- package/dist/components/cg-icon/cg-icon.js.map +1 -1
- package/dist/components/cg-image/cg-image.js +2 -2
- package/dist/components/cg-image/cg-image.js.map +1 -1
- package/dist/components/cg-image-block/cg-image-block.js +3 -3
- package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
- package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
- package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
- package/dist/components/cg-input/cg-input.js +3 -3
- package/dist/components/cg-input/cg-input.js.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.js +26 -24
- package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
- package/dist/components/cg-label/cg-label.d.ts +4 -1
- package/dist/components/cg-label/cg-label.d.ts.map +1 -1
- package/dist/components/cg-label/cg-label.js +44 -41
- package/dist/components/cg-label/cg-label.js.map +1 -1
- package/dist/components/cg-link/cg-link.js +23 -23
- package/dist/components/cg-link/cg-link.js.map +1 -1
- package/dist/components/cg-list/cg-list.js +5 -5
- package/dist/components/cg-list/cg-list.js.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.js +46 -40
- package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.js +171 -121
- package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.js +59 -47
- package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
- package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
- package/dist/components/cg-meter/cg-meter.js +76 -76
- package/dist/components/cg-meter/cg-meter.js.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
- package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
- package/dist/components/cg-modal/cg-modal.d.ts +3 -0
- package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
- package/dist/components/cg-modal/cg-modal.js +82 -83
- package/dist/components/cg-modal/cg-modal.js.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.js +64 -55
- package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.js +90 -77
- package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
- package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.js +50 -49
- package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.js +42 -34
- package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
- package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
- package/dist/components/cg-popover/cg-popover.d.ts +12 -2
- package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
- package/dist/components/cg-popover/cg-popover.js +90 -63
- package/dist/components/cg-popover/cg-popover.js.map +1 -1
- package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
- package/dist/components/cg-portal/cg-portal.js +42 -41
- package/dist/components/cg-portal/cg-portal.js.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
- package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
- package/dist/components/cg-radio/cg-radio.d.ts +10 -0
- package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
- package/dist/components/cg-radio/cg-radio.js +59 -48
- package/dist/components/cg-radio/cg-radio.js.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
- package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
- package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
- package/dist/components/cg-rating/cg-rating.js +56 -54
- package/dist/components/cg-rating/cg-rating.js.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.js +45 -35
- package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
- package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
- package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
- package/dist/components/cg-select/cg-select.d.ts +4 -2
- package/dist/components/cg-select/cg-select.d.ts.map +1 -1
- package/dist/components/cg-select/cg-select.js +96 -58
- package/dist/components/cg-select/cg-select.js.map +1 -1
- package/dist/components/cg-separator/cg-separator.d.ts +1 -2
- package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
- package/dist/components/cg-separator/cg-separator.js +5 -8
- package/dist/components/cg-separator/cg-separator.js.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.js +80 -43
- package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
- package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
- package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
- package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
- package/dist/components/cg-slider/cg-slider.js +80 -73
- package/dist/components/cg-slider/cg-slider.js.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.js +10 -19
- package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.js +64 -50
- package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
- package/dist/components/cg-stack/cg-stack.js +1 -1
- package/dist/components/cg-steps/cg-steps.js +1 -1
- package/dist/components/cg-switch/cg-switch.d.ts +3 -0
- package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
- package/dist/components/cg-switch/cg-switch.js +39 -47
- package/dist/components/cg-switch/cg-switch.js.map +1 -1
- package/dist/components/cg-table/cg-table.d.ts +0 -7
- package/dist/components/cg-table/cg-table.d.ts.map +1 -1
- package/dist/components/cg-table/cg-table.js +50 -47
- package/dist/components/cg-table/cg-table.js.map +1 -1
- package/dist/components/cg-tabs/cg-tabs.js +1 -1
- package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
- package/dist/components/cg-text/cg-text.js +1 -1
- package/dist/components/cg-textarea/cg-textarea.js +1 -1
- package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
- package/dist/components/cg-toaster/cg-toaster.js +3 -3
- package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
- package/dist/components/cg-toggle/cg-toggle.js +1 -1
- package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
- package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
- package/dist/foundation.d.ts +0 -16
- package/dist/foundation.d.ts.map +1 -1
- package/dist/foundation.js +174 -206
- package/dist/foundation.js.map +1 -1
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -132
- package/dist/index.js.map +1 -1
- package/dist/utils/focus-trap.d.ts +19 -2
- package/dist/utils/focus-trap.d.ts.map +1 -1
- package/package.json +6 -810
- package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
- package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
- package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
- package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
- package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
- package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
- package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
- package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.js +0 -136
- package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
- package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.js +0 -114
- package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
- package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
- package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
- package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.js +0 -86
- package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
- package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
- package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.js +0 -106
- package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
- package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.js +0 -177
- package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
- package/dist/components/cg-theme/cg-theme.d.ts +0 -82
- package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
- package/dist/components/cg-theme/cg-theme.js +0 -91
- package/dist/components/cg-theme/cg-theme.js.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
- package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
- package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.js +0 -131
- package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
- package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
- package/dist/utils/drag-manager.d.ts +0 -40
- package/dist/utils/drag-manager.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-alert-dialog.js","sources":["../../../src/components/cg-alert-dialog/cg-alert-dialog.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-alert-dialog\n * Destructive confirmation dialog with alertdialog ARIA role. Uses danger styling\n * for destructive actions and focuses cancel button by default for safety.\n *\n * @example\n * ```html\n * <cg-alert-dialog\n * open\n * title=\"Delete project?\"\n * description=\"This action cannot be undone.\"\n * destructive\n * confirm-label=\"Delete\"\n * ></cg-alert-dialog>\n * ```\n *\n * @slot - Optional body content (overrides description)\n * @slot icon - Optional icon\n * @slot actions - Override default action buttons\n *\n * @fires {CustomEvent} cg-alert-confirm\n * @fires {CustomEvent} cg-alert-cancel\n * @fires {CustomEvent} cg-alert-open\n * @fires {CustomEvent} cg-alert-close\n */\n@customElement('cg-alert-dialog')\nexport class CgAlertDialog extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: contents;\n }\n\n .backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--cg-z-index-500);\n background: var(--cg-color-modal-overlay-background);\n backdrop-filter: blur(var(--cg-blur-backdrop));\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([open]) .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: var(--cg-z-index-top);\n width: calc(100% - var(--cg-spacing-32));\n max-width: var(--cg-component-alert-dialog-width);\n padding: var(--cg-spacing-24);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-component-alert-dialog-radius);\n box-shadow: var(--cg-shadow-elevation-xl);\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n pointer-events: none;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([open]) .dialog {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n pointer-events: auto;\n }\n\n .header {\n display: flex;\n align-items: flex-start;\n gap: var(--cg-spacing-16);\n margin-bottom: var(--cg-spacing-16);\n }\n .icon-wrap {\n flex-shrink: 0;\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-40);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-base-text);\n }\n :host([destructive]) .icon-wrap {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n }\n\n .title {\n font-size: var(--cg-font-size-base);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n margin: 0 0 var(--cg-spacing-4);\n line-height: var(--cg-line-height-snug);\n }\n .description {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-container-outlined);\n margin: 0;\n line-height: var(--cg-line-height-relaxed);\n }\n .header-text { flex: 1; }\n\n .body {\n margin: var(--cg-spacing-16) 0;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n }\n\n .actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--cg-spacing-8);\n margin-top: var(--cg-spacing-24);\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() override title = '';\n @property() description = '';\n @property({ attribute: 'confirm-label' }) confirmLabel = 'Confirm';\n @property({ attribute: 'cancel-label' }) cancelLabel = 'Cancel';\n @property({ type: Boolean, reflect: true }) destructive = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) closable = false;\n\n @query('.dialog') private _dialogEl!: HTMLElement;\n\n private _focusTrap = new FocusTrap();\n private _previousOverflow = '';\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._focusTrap.deactivate();\n document.body.style.overflow = this._previousOverflow;\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _onOpen(): void {\n this._previousOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n this.dispatchEvent(new CustomEvent('cg-alert-open', { bubbles: true, composed: true }));\n\n requestAnimationFrame(() => {\n if (this._dialogEl) {\n // Focus cancel button by default for safety\n const cancelBtn = this._dialogEl.querySelector<HTMLButtonElement>('[data-cancel]');\n this._focusTrap.activate(this._dialogEl, {\n initialFocus: cancelBtn ?? null,\n handleEscape: this.closable,\n onEscape: this.closable ? () => this._cancel() : undefined,\n });\n }\n });\n }\n\n private _onClose(): void {\n document.body.style.overflow = this._previousOverflow;\n this._focusTrap.deactivate();\n this.dispatchEvent(new CustomEvent('cg-alert-close', { bubbles: true, composed: true }));\n }\n\n private _confirm(): void {\n this.dispatchEvent(new CustomEvent('cg-alert-confirm', { bubbles: true, composed: true }));\n if (!this.loading) this.open = false;\n }\n\n private _cancel(): void {\n this.dispatchEvent(new CustomEvent('cg-alert-cancel', { bubbles: true, composed: true }));\n this.open = false;\n }\n\n override render() {\n return html`\n <div class=\"backdrop\" @click=${() => this.closable && this._cancel()}></div>\n <div\n class=\"dialog\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby=\"alert-title\"\n aria-describedby=\"alert-description\"\n ?inert=${!this.open}\n >\n <div class=\"header\">\n <slot name=\"icon\">\n ${this.destructive ? html`\n <div class=\"icon-wrap\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 9v4M12 17h.01\"/>\n <path d=\"M10.29 3.86L1.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 </svg>\n </div>\n ` : nothing}\n </slot>\n <div class=\"header-text\">\n ${this.title ? html`<h2 id=\"alert-title\" class=\"title\">${this.title}</h2>` : nothing}\n ${this.description ? html`<p id=\"alert-description\" class=\"description\">${this.description}</p>` : nothing}\n </div>\n </div>\n <div class=\"body\"><slot></slot></div>\n <div class=\"actions\">\n <slot name=\"actions\">\n <cg-button\n variant=\"tertiary\"\n size=\"md\"\n data-cancel\n @click=${this._cancel}\n ?disabled=${this.loading}\n >${this.cancelLabel}</cg-button>\n <cg-button\n variant=\"primary\"\n type=\"${this.destructive ? 'danger' : 'normal'}\"\n size=\"md\"\n data-confirm\n @click=${this._confirm}\n ?loading=${this.loading}\n >${this.confirmLabel}</cg-button>\n </slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-alert-dialog': CgAlertDialog;\n }\n}\n"],"names":["CgAlertDialog","LitElement","FocusTrap","changed","cancelBtn","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","query","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-alert-dialog.js","sources":["../../../src/components/cg-alert-dialog/cg-alert-dialog.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-alert-dialog\n * Destructive confirmation dialog with alertdialog ARIA role. Uses danger styling\n * for destructive actions and focuses cancel button by default for safety.\n *\n * @example\n * ```html\n * <cg-alert-dialog\n * open\n * title=\"Delete project?\"\n * description=\"This action cannot be undone.\"\n * destructive\n * confirm-label=\"Delete\"\n * ></cg-alert-dialog>\n * ```\n *\n * @slot - Optional body content (overrides description)\n * @slot icon - Optional icon\n * @slot actions - Override default action buttons\n *\n * @fires {CustomEvent} cg-alert-confirm\n * @fires {CustomEvent} cg-alert-cancel\n * @fires {CustomEvent} cg-alert-open\n * @fires {CustomEvent} cg-alert-close\n */\n@customElement('cg-alert-dialog')\nexport class CgAlertDialog extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: contents;\n }\n\n .backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--cg-z-index-500);\n background: var(--cg-color-modal-overlay-background);\n backdrop-filter: blur(var(--cg-blur-backdrop));\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([open]) .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: var(--cg-z-index-top);\n width: calc(100% - var(--cg-spacing-32));\n max-width: var(--cg-component-alert-dialog-width);\n padding: var(--cg-spacing-24);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-component-alert-dialog-radius);\n box-shadow: var(--cg-shadow-elevation-xl);\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n pointer-events: none;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([open]) .dialog {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n pointer-events: auto;\n }\n\n .header {\n display: flex;\n align-items: flex-start;\n gap: var(--cg-spacing-16);\n margin-bottom: var(--cg-spacing-16);\n }\n .icon-wrap {\n flex-shrink: 0;\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-40);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-base-text);\n }\n :host([destructive]) .icon-wrap {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n }\n\n .title {\n font-size: var(--cg-font-size-base);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n margin: 0 0 var(--cg-spacing-4);\n line-height: var(--cg-line-height-snug);\n }\n .description {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-container-outlined);\n margin: 0;\n line-height: var(--cg-line-height-relaxed);\n }\n .header-text { flex: 1; }\n\n .body {\n margin: var(--cg-spacing-16) 0;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n }\n\n .actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--cg-spacing-8);\n margin-top: var(--cg-spacing-24);\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() override title = '';\n @property() description = '';\n @property({ attribute: 'confirm-label' }) confirmLabel = 'Confirm';\n @property({ attribute: 'cancel-label' }) cancelLabel = 'Cancel';\n @property({ type: Boolean, reflect: true }) destructive = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) closable = false;\n\n @query('.dialog') private _dialogEl!: HTMLElement;\n\n private _focusTrap = new FocusTrap();\n private _previousOverflow = '';\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._focusTrap.deactivate();\n document.body.style.overflow = this._previousOverflow;\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _onOpen(): void {\n this._previousOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n this.dispatchEvent(new CustomEvent('cg-alert-open', { bubbles: true, composed: true }));\n\n requestAnimationFrame(() => {\n if (this._dialogEl) {\n // Focus cancel button by default for safety\n const cancelBtn = this._dialogEl.querySelector<HTMLButtonElement>('[data-cancel]');\n this._focusTrap.activate(this._dialogEl, {\n initialFocus: cancelBtn ?? null,\n handleEscape: this.closable,\n onEscape: this.closable ? () => this._cancel() : undefined,\n });\n }\n });\n }\n\n private _onClose(): void {\n document.body.style.overflow = this._previousOverflow;\n this._focusTrap.deactivate();\n this.dispatchEvent(new CustomEvent('cg-alert-close', { bubbles: true, composed: true }));\n }\n\n private _confirm(): void {\n this.dispatchEvent(new CustomEvent('cg-alert-confirm', { bubbles: true, composed: true }));\n if (!this.loading) this.open = false;\n }\n\n private _cancel(): void {\n this.dispatchEvent(new CustomEvent('cg-alert-cancel', { bubbles: true, composed: true }));\n this.open = false;\n }\n\n override render() {\n return html`\n <div class=\"backdrop\" @click=${() => this.closable && this._cancel()}></div>\n <div\n class=\"dialog\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby=${this.title ? 'alert-title' : nothing}\n aria-describedby=${this.description ? 'alert-description' : nothing}\n ?inert=${!this.open}\n >\n <div class=\"header\">\n <slot name=\"icon\">\n ${this.destructive ? html`\n <div class=\"icon-wrap\">\n <svg aria-hidden=\"true\" focusable=\"false\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 9v4M12 17h.01\"/>\n <path d=\"M10.29 3.86L1.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 </svg>\n </div>\n ` : nothing}\n </slot>\n <div class=\"header-text\">\n ${this.title ? html`<h2 id=\"alert-title\" class=\"title\">${this.title}</h2>` : nothing}\n ${this.description ? html`<p id=\"alert-description\" class=\"description\">${this.description}</p>` : nothing}\n </div>\n </div>\n <div class=\"body\"><slot></slot></div>\n <div class=\"actions\">\n <slot name=\"actions\">\n <cg-button\n variant=\"tertiary\"\n size=\"md\"\n data-cancel\n @click=${this._cancel}\n ?disabled=${this.loading}\n >${this.cancelLabel}</cg-button>\n <cg-button\n variant=\"primary\"\n type=\"${this.destructive ? 'danger' : 'normal'}\"\n size=\"md\"\n data-confirm\n @click=${this._confirm}\n ?loading=${this.loading}\n >${this.confirmLabel}</cg-button>\n </slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-alert-dialog': CgAlertDialog;\n }\n}\n"],"names":["CgAlertDialog","LitElement","FocusTrap","changed","cancelBtn","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","query","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-aspect-ratio.d.ts","sourceRoot":"","sources":["../../../src/components/cg-aspect-ratio/cg-aspect-ratio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cg-aspect-ratio.d.ts","sourceRoot":"","sources":["../../../src/components/cg-aspect-ratio/cg-aspect-ratio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAYnB;IAEH,6EAA6E;IAChD,KAAK,EAAE,MAAM,CAAU;IAEpD,4EAA4E;IAC/C,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAW;IAExF,MAAM;CAiBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
|
|
@@ -1,47 +1,51 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as l, customElement as
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { css as f, LitElement as d, html as m } from "lit";
|
|
2
|
+
import { property as l, customElement as n } from "lit/decorators.js";
|
|
3
|
+
import { styleMap as v } from "lit/directives/style-map.js";
|
|
4
|
+
import { h } from "../../chunks/premium.css-DHekUEUt.js";
|
|
5
|
+
var _ = Object.defineProperty, u = Object.getOwnPropertyDescriptor, c = (r, e, s, i) => {
|
|
6
|
+
for (var t = i > 1 ? void 0 : i ? u(e, s) : e, a = r.length - 1, p; a >= 0; a--)
|
|
7
|
+
(p = r[a]) && (t = (i ? p(e, s, t) : p(t)) || t);
|
|
8
|
+
return i && t && _(e, s, t), t;
|
|
8
9
|
};
|
|
9
|
-
let
|
|
10
|
+
let o = class extends d {
|
|
10
11
|
constructor() {
|
|
11
12
|
super(...arguments), this.ratio = "16/9", this.fit = "cover";
|
|
12
13
|
}
|
|
13
14
|
render() {
|
|
14
|
-
const
|
|
15
|
+
const r = (this.ratio ?? "").trim(), s = /^\d+(\.\d+)?\s*\/\s*\d+(\.\d+)?$/.test(r) ? r.replace(/\s*\/\s*/g, " / ") : "16 / 9";
|
|
15
16
|
return m`
|
|
16
|
-
<div
|
|
17
|
+
<div
|
|
18
|
+
class="wrap"
|
|
19
|
+
style=${v({ "--_aspect-ratio": s, "--_aspect-fit": this.fit })}
|
|
20
|
+
>
|
|
17
21
|
<slot></slot>
|
|
18
22
|
</div>
|
|
19
23
|
`;
|
|
20
24
|
}
|
|
21
25
|
};
|
|
22
|
-
|
|
26
|
+
o.styles = [h, f`
|
|
23
27
|
.wrap {
|
|
24
28
|
width: 100%;
|
|
25
|
-
aspect-ratio: var(--
|
|
29
|
+
aspect-ratio: var(--_aspect-ratio);
|
|
26
30
|
overflow: hidden;
|
|
27
31
|
}
|
|
28
32
|
.wrap ::slotted(*) {
|
|
29
33
|
width: 100%;
|
|
30
34
|
height: 100%;
|
|
31
|
-
object-fit: var(--
|
|
35
|
+
object-fit: var(--_aspect-fit);
|
|
32
36
|
display: block;
|
|
33
37
|
}
|
|
34
38
|
`];
|
|
35
|
-
|
|
39
|
+
c([
|
|
36
40
|
l({ reflect: !0 })
|
|
37
|
-
],
|
|
38
|
-
|
|
41
|
+
], o.prototype, "ratio", 2);
|
|
42
|
+
c([
|
|
39
43
|
l({ reflect: !0 })
|
|
40
|
-
],
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
],
|
|
44
|
+
], o.prototype, "fit", 2);
|
|
45
|
+
o = c([
|
|
46
|
+
n("cg-aspect-ratio")
|
|
47
|
+
], o);
|
|
44
48
|
export {
|
|
45
|
-
|
|
49
|
+
o as CgAspectRatio
|
|
46
50
|
};
|
|
47
51
|
//# sourceMappingURL=cg-aspect-ratio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-aspect-ratio.js","sources":["../../../src/components/cg-aspect-ratio/cg-aspect-ratio.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock } from '../../styles/index.js';\n\n/**\n * @element cg-aspect-ratio\n * Layout primitive that constrains its slotted child to a fixed aspect ratio.\n * The slotted element is sized to fill the box — pick `fit` to control how it\n * fills (default `cover` crops to fill; `contain` letterboxes; `fill` stretches).\n *\n * @example\n * ```html\n * <cg-aspect-ratio ratio=\"16/9\">\n * <img src=\"hero.jpg\" alt=\"Hero\" />\n * </cg-aspect-ratio>\n *\n * <cg-aspect-ratio ratio=\"1/1\" fit=\"contain\">\n * <img src=\"logo.svg\" alt=\"Logo\" />\n * </cg-aspect-ratio>\n * ```\n *\n * @slot - Content (usually an `<img>`, `<video>`, `<picture>`, or `<iframe>`).\n */\n@customElement('cg-aspect-ratio')\nexport class CgAspectRatio extends LitElement {\n static override styles = [hostBlock, css`\n .wrap {\n width: 100%;\n aspect-ratio: var(--
|
|
1
|
+
{"version":3,"file":"cg-aspect-ratio.js","sources":["../../../src/components/cg-aspect-ratio/cg-aspect-ratio.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { hostBlock } from '../../styles/index.js';\n\n/**\n * @element cg-aspect-ratio\n * Layout primitive that constrains its slotted child to a fixed aspect ratio.\n * The slotted element is sized to fill the box — pick `fit` to control how it\n * fills (default `cover` crops to fill; `contain` letterboxes; `fill` stretches).\n *\n * @example\n * ```html\n * <cg-aspect-ratio ratio=\"16/9\">\n * <img src=\"hero.jpg\" alt=\"Hero\" />\n * </cg-aspect-ratio>\n *\n * <cg-aspect-ratio ratio=\"1/1\" fit=\"contain\">\n * <img src=\"logo.svg\" alt=\"Logo\" />\n * </cg-aspect-ratio>\n * ```\n *\n * @slot - Content (usually an `<img>`, `<video>`, `<picture>`, or `<iframe>`).\n */\n@customElement('cg-aspect-ratio')\nexport class CgAspectRatio extends LitElement {\n static override styles = [hostBlock, css`\n .wrap {\n width: 100%;\n aspect-ratio: var(--_aspect-ratio);\n overflow: hidden;\n }\n .wrap ::slotted(*) {\n width: 100%;\n height: 100%;\n object-fit: var(--_aspect-fit);\n display: block;\n }\n `];\n\n /** Aspect ratio expressed as `\"W/H\"` (e.g. `\"16/9\"`, `\"1/1\"`, `\"4 / 3\"`). */\n @property({ reflect: true }) ratio: string = '16/9';\n\n /** How the slotted element fills the box. Defaults to `cover` (cropped). */\n @property({ reflect: true }) fit: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down' = 'cover';\n\n override render() {\n // Accept \"16/9\" or \"16 / 9\" and normalize to CSS aspect-ratio syntax.\n // Validate against W/H to (a) avoid a collapsed 0-height box on garbage\n // input and (b) prevent CSS injection — styleMap binds the value as a\n // discrete property value, never a parsed declaration string.\n const raw = (this.ratio ?? '').trim();\n const valid = /^\\d+(\\.\\d+)?\\s*\\/\\s*\\d+(\\.\\d+)?$/.test(raw);\n const normalized = valid ? raw.replace(/\\s*\\/\\s*/g, ' / ') : '16 / 9';\n return html`\n <div\n class=\"wrap\"\n style=${styleMap({ '--_aspect-ratio': normalized, '--_aspect-fit': this.fit })}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-aspect-ratio': CgAspectRatio;\n }\n}\n"],"names":["CgAspectRatio","LitElement","raw","normalized","html","styleMap","hostBlock","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;;AAyBO,IAAMA,IAAN,cAA4BC,EAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GAgBwB,KAAA,QAAgB,QAGhB,KAAA,MAA4D;AAAA,EAAA;AAAA,EAEhF,SAAS;AAKhB,UAAMC,KAAO,KAAK,SAAS,IAAI,KAAA,GAEzBC,IADQ,mCAAmC,KAAKD,CAAG,IAC9BA,EAAI,QAAQ,aAAa,KAAK,IAAI;AAC7D,WAAOE;AAAA;AAAA;AAAA,gBAGKC,EAAS,EAAE,mBAAmBF,GAAY,iBAAiB,KAAK,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpF;AACF;AAtCaH,EACK,SAAS,CAACM,GAAWC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYpC;AAG4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAhBhBT,EAgBkB,WAAA,SAAA,CAAA;AAGAQ,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAnBhBT,EAmBkB,WAAA,OAAA,CAAA;AAnBlBA,IAANQ,EAAA;AAAA,EADNE,EAAc,iBAAiB;AAAA,GACnBV,CAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-autocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/cg-autocomplete/cg-autocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAqJnB;IAEwB,OAAO,EAAE,kBAAkB,EAAE,CAAM;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACtE,KAAK,SAAM;IACX,WAAW,SAAM;IACjB,KAAK,SAAM;IACM,QAAQ,UAAS;IACF,KAAK,UAAS;IAC7B,SAAS,UAAS;IAEtC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAM;IAEnB,OAAO,CAAC,MAAM,CAAoB;
|
|
1
|
+
{"version":3,"file":"cg-autocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/cg-autocomplete/cg-autocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAqJnB;IAEwB,OAAO,EAAE,kBAAkB,EAAE,CAAM;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACtE,KAAK,SAAM;IACX,WAAW,SAAM;IACjB,KAAK,SAAM;IACM,QAAQ,UAAS;IACF,KAAK,UAAS;IAC7B,SAAS,UAAS;IAEtC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAM;IAEnB,OAAO,CAAC,MAAM,CAAoB;IAIlD,OAAO,CAAC,IAAI,CAAqD;IAEjE,OAAO,KAAK,SAAS,GAIpB;IAED,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,OAAO;YAOD,UAAU;IAyBxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,eAAe;IAUd,MAAM;CAgDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,cAAc,CAAC;KACnC;CACF"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { css as g, LitElement as h, html as s, nothing as
|
|
1
|
+
import { css as g, LitElement as h, html as s, nothing as l } from "lit";
|
|
2
2
|
import { property as c, state as u, query as v, customElement as f } from "lit/decorators.js";
|
|
3
|
-
import { h as b, r as m } from "../../chunks/premium.css-
|
|
4
|
-
var _ = Object.defineProperty, y = Object.getOwnPropertyDescriptor, o = (e,
|
|
5
|
-
for (var i = n > 1 ? void 0 : n ? y(
|
|
6
|
-
(p = e[
|
|
7
|
-
return n && i && _(
|
|
3
|
+
import { h as b, r as m } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var _ = Object.defineProperty, y = Object.getOwnPropertyDescriptor, o = (e, t, a, n) => {
|
|
5
|
+
for (var i = n > 1 ? void 0 : n ? y(t, a) : t, d = e.length - 1, p; d >= 0; d--)
|
|
6
|
+
(p = e[d]) && (i = (n ? p(t, a, i) : p(i)) || i);
|
|
7
|
+
return n && i && _(t, a, i), i;
|
|
8
8
|
};
|
|
9
|
-
let
|
|
9
|
+
let r = class extends h {
|
|
10
10
|
constructor() {
|
|
11
|
-
super(...arguments), this.options = [], this.rounded = "lg", this.value = "", this.placeholder = "", this.label = "", this.disabled = !1, this.error = !1, this.clearable = !1, this._query = "", this._open = !1, this._focused = !1, this._activeIndex = -1
|
|
11
|
+
super(...arguments), this.options = [], this.rounded = "lg", this.value = "", this.placeholder = "", this.label = "", this.disabled = !1, this.error = !1, this.clearable = !1, this._query = "", this._open = !1, this._focused = !1, this._activeIndex = -1, this._uid = `cg-ac-${Math.random().toString(36).slice(2, 9)}`;
|
|
12
12
|
}
|
|
13
13
|
get _filtered() {
|
|
14
14
|
const e = this._query.toLowerCase();
|
|
15
|
-
return e ? this.options.filter((
|
|
15
|
+
return e ? this.options.filter((t) => t.label.toLowerCase().includes(e)) : this.options;
|
|
16
16
|
}
|
|
17
17
|
_onInput(e) {
|
|
18
18
|
this._query = e.target.value, this._open = !0, this._activeIndex = -1, this.dispatchEvent(new CustomEvent("cg-autocomplete-input", { detail: { query: this._query }, bubbles: !0, composed: !0 }));
|
|
@@ -20,31 +20,46 @@ let t = class extends h {
|
|
|
20
20
|
_select(e) {
|
|
21
21
|
this.value = e.value, this._query = e.label, this._open = !1, this.dispatchEvent(new CustomEvent("cg-autocomplete-select", { detail: { value: e.value, label: e.label }, bubbles: !0, composed: !0 }));
|
|
22
22
|
}
|
|
23
|
-
_onKeyDown(e) {
|
|
24
|
-
const
|
|
25
|
-
|
|
23
|
+
async _onKeyDown(e) {
|
|
24
|
+
const t = this._filtered;
|
|
25
|
+
if (e.key === "ArrowDown")
|
|
26
|
+
e.preventDefault(), this._open = !0, this._activeIndex = Math.min(this._activeIndex + 1, t.length - 1);
|
|
27
|
+
else if (e.key === "ArrowUp")
|
|
28
|
+
e.preventDefault(), this._open = !0, this._activeIndex = Math.max(this._activeIndex - 1, 0);
|
|
29
|
+
else if (e.key === "Enter" && this._activeIndex >= 0 && t[this._activeIndex]) {
|
|
30
|
+
e.preventDefault(), this._select(t[this._activeIndex]);
|
|
31
|
+
return;
|
|
32
|
+
} else if (e.key === "Escape") {
|
|
33
|
+
this._open = !1;
|
|
34
|
+
return;
|
|
35
|
+
} else
|
|
36
|
+
return;
|
|
37
|
+
await this.updateComplete, this.renderRoot.querySelector(".option.active")?.scrollIntoView({ block: "nearest" });
|
|
26
38
|
}
|
|
27
39
|
_clear() {
|
|
28
40
|
this.value = "", this._query = "", this._input.focus(), this.dispatchEvent(new CustomEvent("cg-autocomplete-select", { detail: { value: "", label: "" }, bubbles: !0, composed: !0 }));
|
|
29
41
|
}
|
|
30
42
|
_highlightMatch(e) {
|
|
31
|
-
const
|
|
32
|
-
if (a < 0 || !
|
|
33
|
-
const n = e.slice(0, a), i = e.slice(a, a +
|
|
34
|
-
return s`${n}<span class="match">${i}</span>${
|
|
43
|
+
const t = this._query.toLowerCase(), a = e.toLowerCase().indexOf(t);
|
|
44
|
+
if (a < 0 || !t) return e;
|
|
45
|
+
const n = e.slice(0, a), i = e.slice(a, a + t.length), d = e.slice(a + t.length);
|
|
46
|
+
return s`${n}<span class="match">${i}</span>${d}`;
|
|
35
47
|
}
|
|
36
48
|
render() {
|
|
37
49
|
const e = this._filtered;
|
|
38
50
|
return s`
|
|
39
|
-
${this.label ? s`<span class="label">${this.label}</span>` :
|
|
51
|
+
${this.label ? s`<span class="label">${this.label}</span>` : l}
|
|
40
52
|
<div class="input-wrap ${this._focused ? "focused" : ""} ${this.disabled ? "disabled" : ""}">
|
|
41
53
|
<input
|
|
42
54
|
.value=${this._query}
|
|
43
|
-
placeholder=${this.placeholder ||
|
|
55
|
+
placeholder=${this.placeholder || l}
|
|
44
56
|
?disabled=${this.disabled}
|
|
45
57
|
role="combobox"
|
|
46
58
|
aria-expanded=${this._open}
|
|
47
59
|
aria-autocomplete="list"
|
|
60
|
+
aria-controls=${`${this._uid}-listbox`}
|
|
61
|
+
aria-activedescendant=${this._open && this._activeIndex >= 0 ? `${this._uid}-opt-${this._activeIndex}` : l}
|
|
62
|
+
aria-invalid=${this.error ? "true" : l}
|
|
48
63
|
aria-label=${this.label || "Autocomplete"}
|
|
49
64
|
@input=${this._onInput}
|
|
50
65
|
@keydown=${this._onKeyDown}
|
|
@@ -56,32 +71,33 @@ let t = class extends h {
|
|
|
56
71
|
}}
|
|
57
72
|
/>
|
|
58
73
|
${this.clearable && this._query ? s`
|
|
59
|
-
<button class="clear" @mousedown=${(
|
|
74
|
+
<button class="clear" @mousedown=${(t) => t.preventDefault()} @click=${this._clear} aria-label="Clear">
|
|
60
75
|
<cg-icon name="x" size="xs"></cg-icon>
|
|
61
76
|
</button>
|
|
62
|
-
` :
|
|
77
|
+
` : l}
|
|
63
78
|
<span class="chevron ${this._open ? "open" : ""}">
|
|
64
79
|
<cg-icon name="chevron-down" size="sm"></cg-icon>
|
|
65
80
|
</span>
|
|
66
81
|
</div>
|
|
67
82
|
${this._open ? s`
|
|
68
|
-
<div class="dropdown" role="listbox">
|
|
69
|
-
${e.length === 0 ? s`<div class="empty">No results found</div>` : e.map((
|
|
83
|
+
<div class="dropdown" role="listbox" id=${`${this._uid}-listbox`}>
|
|
84
|
+
${e.length === 0 ? s`<div class="empty">No results found</div>` : e.map((t, a) => s`
|
|
70
85
|
<div class="option ${a === this._activeIndex ? "active" : ""}"
|
|
71
86
|
role="option"
|
|
87
|
+
id=${`${this._uid}-opt-${a}`}
|
|
72
88
|
aria-selected=${a === this._activeIndex}
|
|
73
89
|
@mousedown=${(n) => n.preventDefault()}
|
|
74
|
-
@click=${() => this._select(
|
|
75
|
-
${
|
|
76
|
-
<span>${this._highlightMatch(
|
|
90
|
+
@click=${() => this._select(t)}>
|
|
91
|
+
${t.icon ? s`<cg-icon name="${t.icon}" size="sm"></cg-icon>` : l}
|
|
92
|
+
<span>${this._highlightMatch(t.label)}</span>
|
|
77
93
|
</div>
|
|
78
94
|
`)}
|
|
79
95
|
</div>
|
|
80
|
-
` :
|
|
96
|
+
` : l}
|
|
81
97
|
`;
|
|
82
98
|
}
|
|
83
99
|
};
|
|
84
|
-
|
|
100
|
+
r.styles = [b, m, g`
|
|
85
101
|
:host {
|
|
86
102
|
position: relative;
|
|
87
103
|
}
|
|
@@ -233,47 +249,47 @@ t.styles = [b, m, g`
|
|
|
233
249
|
`];
|
|
234
250
|
o([
|
|
235
251
|
c({ type: Array })
|
|
236
|
-
],
|
|
252
|
+
], r.prototype, "options", 2);
|
|
237
253
|
o([
|
|
238
254
|
c({ reflect: !0 })
|
|
239
|
-
],
|
|
255
|
+
], r.prototype, "rounded", 2);
|
|
240
256
|
o([
|
|
241
257
|
c()
|
|
242
|
-
],
|
|
258
|
+
], r.prototype, "value", 2);
|
|
243
259
|
o([
|
|
244
260
|
c()
|
|
245
|
-
],
|
|
261
|
+
], r.prototype, "placeholder", 2);
|
|
246
262
|
o([
|
|
247
263
|
c()
|
|
248
|
-
],
|
|
264
|
+
], r.prototype, "label", 2);
|
|
249
265
|
o([
|
|
250
266
|
c({ type: Boolean })
|
|
251
|
-
],
|
|
267
|
+
], r.prototype, "disabled", 2);
|
|
252
268
|
o([
|
|
253
269
|
c({ type: Boolean, reflect: !0 })
|
|
254
|
-
],
|
|
270
|
+
], r.prototype, "error", 2);
|
|
255
271
|
o([
|
|
256
272
|
c({ type: Boolean })
|
|
257
|
-
],
|
|
273
|
+
], r.prototype, "clearable", 2);
|
|
258
274
|
o([
|
|
259
275
|
u()
|
|
260
|
-
],
|
|
276
|
+
], r.prototype, "_query", 2);
|
|
261
277
|
o([
|
|
262
278
|
u()
|
|
263
|
-
],
|
|
279
|
+
], r.prototype, "_open", 2);
|
|
264
280
|
o([
|
|
265
281
|
u()
|
|
266
|
-
],
|
|
282
|
+
], r.prototype, "_focused", 2);
|
|
267
283
|
o([
|
|
268
284
|
u()
|
|
269
|
-
],
|
|
285
|
+
], r.prototype, "_activeIndex", 2);
|
|
270
286
|
o([
|
|
271
287
|
v("input")
|
|
272
|
-
],
|
|
273
|
-
|
|
288
|
+
], r.prototype, "_input", 2);
|
|
289
|
+
r = o([
|
|
274
290
|
f("cg-autocomplete")
|
|
275
|
-
],
|
|
291
|
+
], r);
|
|
276
292
|
export {
|
|
277
|
-
|
|
293
|
+
r as CgAutocomplete
|
|
278
294
|
};
|
|
279
295
|
//# sourceMappingURL=cg-autocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-autocomplete.js","sources":["../../../src/components/cg-autocomplete/cg-autocomplete.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\nexport interface AutocompleteOption {\n value: string;\n label: string;\n icon?: string;\n}\n\n/**\n * <cg-autocomplete> — Combobox input with filtered dropdown suggestions.\n *\n * @example\n * ```html\n * <cg-autocomplete label=\"Country\" placeholder=\"Search...\" .options=${countries}></cg-autocomplete>\n * ```\n *\n * @fires {CustomEvent<{query: string}>} cg-autocomplete-input - On input change\n * @fires {CustomEvent<{value: string, label: string}>} cg-autocomplete-select - On option select\n *\n * @cssprop --cg-component-input-radius - Input border radius\n * @cssprop --cg-component-input-height-md - Input height\n * @cssprop --cg-color-input-border-default - Default border color\n */\n@customElement('cg-autocomplete')\nexport class CgAutocomplete extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n position: relative;\n }\n\n .label {\n display: block;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-text);\n margin-bottom: var(--cg-spacing-6);\n }\n\n .input-wrap {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: 0 var(--cg-spacing-12);\n border: var(--cg-border-width-50) solid var(--cg-color-input-border-default);\n border-radius: var(--cg-component-input-radius);\n background: var(--cg-color-input-background-default);\n min-height: var(--cg-component-input-height-md);\n transition:\n border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .input-wrap:hover:not(.disabled) {\n border-color: var(--cg-color-input-border-hover);\n }\n .input-wrap.focused {\n border-color: var(--cg-color-input-border-focus);\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n .input-wrap.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: var(--cg-color-input-background-disabled);\n border-color: var(--cg-color-input-border-disabled);\n }\n\n /* ── Error state ── */\n :host([error]) .input-wrap {\n border-color: var(--cg-color-input-border-error);\n }\n :host([error]) .input-wrap.focused {\n border-color: var(--cg-color-status-error-text-default);\n box-shadow: 0 0 0 3px var(--cg-shadow-focus-error);\n }\n\n input {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font: inherit;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-default);\n min-width: 0;\n padding: var(--cg-spacing-8) 0;\n }\n input::placeholder { color: var(--cg-color-input-text-placeholder); }\n input:disabled { cursor: not-allowed; }\n\n .clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n border: none;\n padding: 0;\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-container-outlined);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n flex-shrink: 0;\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .clear:hover {\n background: var(--cg-color-action-secondary-background-hover);\n color: var(--cg-color-surface-container-text);\n }\n\n .chevron {\n flex-shrink: 0;\n color: var(--cg-color-input-icon-default);\n transition: transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .chevron.open { transform: rotate(180deg); }\n\n .dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n margin-top: var(--cg-spacing-4);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-border-radius-100);\n box-shadow: var(--cg-elevation-3);\n max-height: 280px;\n overflow-y: auto;\n z-index: var(--cg-z-index-400);\n padding: var(--cg-spacing-6);\n animation: dropIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n @keyframes dropIn {\n from { opacity: 0; transform: scale(0.96) translateY(calc(var(--cg-spacing-4) * -1)); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .option {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-50);\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-container-text);\n cursor: pointer;\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .option:hover, .option.active {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .option .match {\n color: var(--cg-color-action-primary-background-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n\n .empty {\n padding: var(--cg-spacing-16);\n text-align: center;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-container-outlined);\n }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .input-wrap { border-radius: 0; }\n :host([rounded=\"sm\"]) .input-wrap { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .input-wrap { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .input-wrap { border-radius: var(--cg-component-input-radius); }\n :host([rounded=\"full\"]) .input-wrap { border-radius: var(--cg-border-radius-full); }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .dropdown { animation: none; }\n }\n `];\n\n @property({ type: Array }) options: AutocompleteOption[] = [];\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property() value = '';\n @property() placeholder = '';\n @property() label = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean, reflect: true }) error = false;\n @property({ type: Boolean }) clearable = false;\n\n @state() private _query = '';\n @state() private _open = false;\n @state() private _focused = false;\n @state() private _activeIndex = -1;\n\n @query('input') private _input!: HTMLInputElement;\n\n private get _filtered(): AutocompleteOption[] {\n const q = this._query.toLowerCase();\n if (!q) return this.options;\n return this.options.filter(o => o.label.toLowerCase().includes(q));\n }\n\n private _onInput(e: Event) {\n this._query = (e.target as HTMLInputElement).value;\n this._open = true;\n this._activeIndex = -1;\n this.dispatchEvent(new CustomEvent('cg-autocomplete-input', { detail: { query: this._query }, bubbles: true, composed: true }));\n }\n\n private _select(opt: AutocompleteOption) {\n this.value = opt.value;\n this._query = opt.label;\n this._open = false;\n this.dispatchEvent(new CustomEvent('cg-autocomplete-select', { detail: { value: opt.value, label: opt.label }, bubbles: true, composed: true }));\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n const list = this._filtered;\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this._open = true;\n this._activeIndex = Math.min(this._activeIndex + 1, list.length - 1);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._activeIndex = Math.max(this._activeIndex - 1, 0);\n } else if (e.key === 'Enter' && this._activeIndex >= 0 && list[this._activeIndex]) {\n e.preventDefault();\n this._select(list[this._activeIndex]!);\n } else if (e.key === 'Escape') {\n this._open = false;\n }\n }\n\n private _clear() {\n this.value = '';\n this._query = '';\n this._input.focus();\n this.dispatchEvent(new CustomEvent('cg-autocomplete-select', { detail: { value: '', label: '' }, bubbles: true, composed: true }));\n }\n\n private _highlightMatch(label: string): unknown {\n const q = this._query.toLowerCase();\n const idx = label.toLowerCase().indexOf(q);\n if (idx < 0 || !q) return label;\n const before = label.slice(0, idx);\n const match = label.slice(idx, idx + q.length);\n const after = label.slice(idx + q.length);\n return html`${before}<span class=\"match\">${match}</span>${after}`;\n }\n\n override render() {\n const filtered = this._filtered;\n return html`\n ${this.label ? html`<span class=\"label\">${this.label}</span>` : nothing}\n <div class=\"input-wrap ${this._focused ? 'focused' : ''} ${this.disabled ? 'disabled' : ''}\">\n <input\n .value=${this._query}\n placeholder=${this.placeholder || nothing}\n ?disabled=${this.disabled}\n role=\"combobox\"\n aria-expanded=${this._open}\n aria-autocomplete=\"list\"\n aria-label=${this.label || 'Autocomplete'}\n @input=${this._onInput}\n @keydown=${this._onKeyDown}\n @focus=${() => { this._focused = true; this._open = true; }}\n @blur=${() => { this._focused = false; this._open = false; }}\n />\n ${this.clearable && this._query ? html`\n <button class=\"clear\" @mousedown=${(e: Event) => e.preventDefault()} @click=${this._clear} aria-label=\"Clear\">\n <cg-icon name=\"x\" size=\"xs\"></cg-icon>\n </button>\n ` : nothing}\n <span class=\"chevron ${this._open ? 'open' : ''}\">\n <cg-icon name=\"chevron-down\" size=\"sm\"></cg-icon>\n </span>\n </div>\n ${this._open ? html`\n <div class=\"dropdown\" role=\"listbox\">\n ${filtered.length === 0 ? html`<div class=\"empty\">No results found</div>` :\n filtered.map((opt, i) => html`\n <div class=\"option ${i === this._activeIndex ? 'active' : ''}\"\n role=\"option\"\n aria-selected=${i === this._activeIndex}\n @mousedown=${(e: Event) => e.preventDefault()}\n @click=${() => this._select(opt)}>\n ${opt.icon ? html`<cg-icon name=\"${opt.icon}\" size=\"sm\"></cg-icon>` : nothing}\n <span>${this._highlightMatch(opt.label)}</span>\n </div>\n `)}\n </div>\n ` : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-autocomplete': CgAutocomplete;\n }\n}\n"],"names":["CgAutocomplete","LitElement","q","o","opt","list","label","idx","before","match","after","html","filtered","nothing","e","i","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-autocomplete.js","sources":["../../../src/components/cg-autocomplete/cg-autocomplete.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\nexport interface AutocompleteOption {\n value: string;\n label: string;\n icon?: string;\n}\n\n/**\n * <cg-autocomplete> — Combobox input with filtered dropdown suggestions.\n *\n * @example\n * ```html\n * <cg-autocomplete label=\"Country\" placeholder=\"Search...\" .options=${countries}></cg-autocomplete>\n * ```\n *\n * @fires {CustomEvent<{query: string}>} cg-autocomplete-input - On input change\n * @fires {CustomEvent<{value: string, label: string}>} cg-autocomplete-select - On option select\n *\n * @cssprop --cg-component-input-radius - Input border radius\n * @cssprop --cg-component-input-height-md - Input height\n * @cssprop --cg-color-input-border-default - Default border color\n */\n@customElement('cg-autocomplete')\nexport class CgAutocomplete extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n position: relative;\n }\n\n .label {\n display: block;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-text);\n margin-bottom: var(--cg-spacing-6);\n }\n\n .input-wrap {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: 0 var(--cg-spacing-12);\n border: var(--cg-border-width-50) solid var(--cg-color-input-border-default);\n border-radius: var(--cg-component-input-radius);\n background: var(--cg-color-input-background-default);\n min-height: var(--cg-component-input-height-md);\n transition:\n border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .input-wrap:hover:not(.disabled) {\n border-color: var(--cg-color-input-border-hover);\n }\n .input-wrap.focused {\n border-color: var(--cg-color-input-border-focus);\n box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n .input-wrap.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: var(--cg-color-input-background-disabled);\n border-color: var(--cg-color-input-border-disabled);\n }\n\n /* ── Error state ── */\n :host([error]) .input-wrap {\n border-color: var(--cg-color-input-border-error);\n }\n :host([error]) .input-wrap.focused {\n border-color: var(--cg-color-status-error-text-default);\n box-shadow: 0 0 0 3px var(--cg-shadow-focus-error);\n }\n\n input {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font: inherit;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-default);\n min-width: 0;\n padding: var(--cg-spacing-8) 0;\n }\n input::placeholder { color: var(--cg-color-input-text-placeholder); }\n input:disabled { cursor: not-allowed; }\n\n .clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n border: none;\n padding: 0;\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-container-outlined);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n flex-shrink: 0;\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .clear:hover {\n background: var(--cg-color-action-secondary-background-hover);\n color: var(--cg-color-surface-container-text);\n }\n\n .chevron {\n flex-shrink: 0;\n color: var(--cg-color-input-icon-default);\n transition: transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .chevron.open { transform: rotate(180deg); }\n\n .dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n margin-top: var(--cg-spacing-4);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-border-radius-100);\n box-shadow: var(--cg-elevation-3);\n max-height: 280px;\n overflow-y: auto;\n z-index: var(--cg-z-index-400);\n padding: var(--cg-spacing-6);\n animation: dropIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n @keyframes dropIn {\n from { opacity: 0; transform: scale(0.96) translateY(calc(var(--cg-spacing-4) * -1)); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .option {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-50);\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-container-text);\n cursor: pointer;\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .option:hover, .option.active {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .option .match {\n color: var(--cg-color-action-primary-background-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n\n .empty {\n padding: var(--cg-spacing-16);\n text-align: center;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-container-outlined);\n }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .input-wrap { border-radius: 0; }\n :host([rounded=\"sm\"]) .input-wrap { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .input-wrap { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .input-wrap { border-radius: var(--cg-component-input-radius); }\n :host([rounded=\"full\"]) .input-wrap { border-radius: var(--cg-border-radius-full); }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .dropdown { animation: none; }\n }\n `];\n\n @property({ type: Array }) options: AutocompleteOption[] = [];\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property() value = '';\n @property() placeholder = '';\n @property() label = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean, reflect: true }) error = false;\n @property({ type: Boolean }) clearable = false;\n\n @state() private _query = '';\n @state() private _open = false;\n @state() private _focused = false;\n @state() private _activeIndex = -1;\n\n @query('input') private _input!: HTMLInputElement;\n\n // Per-instance id prefix so aria-controls / aria-activedescendant references\n // never collide across multiple autocompletes on the same page.\n private _uid = `cg-ac-${Math.random().toString(36).slice(2, 9)}`;\n\n private get _filtered(): AutocompleteOption[] {\n const q = this._query.toLowerCase();\n if (!q) return this.options;\n return this.options.filter(o => o.label.toLowerCase().includes(q));\n }\n\n private _onInput(e: Event) {\n this._query = (e.target as HTMLInputElement).value;\n this._open = true;\n this._activeIndex = -1;\n this.dispatchEvent(new CustomEvent('cg-autocomplete-input', { detail: { query: this._query }, bubbles: true, composed: true }));\n }\n\n private _select(opt: AutocompleteOption) {\n this.value = opt.value;\n this._query = opt.label;\n this._open = false;\n this.dispatchEvent(new CustomEvent('cg-autocomplete-select', { detail: { value: opt.value, label: opt.label }, bubbles: true, composed: true }));\n }\n\n private async _onKeyDown(e: KeyboardEvent) {\n const list = this._filtered;\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this._open = true;\n this._activeIndex = Math.min(this._activeIndex + 1, list.length - 1);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._open = true;\n this._activeIndex = Math.max(this._activeIndex - 1, 0);\n } else if (e.key === 'Enter' && this._activeIndex >= 0 && list[this._activeIndex]) {\n e.preventDefault();\n this._select(list[this._activeIndex]!);\n return;\n } else if (e.key === 'Escape') {\n this._open = false;\n return;\n } else {\n return;\n }\n // Keep the active option visible when navigating past the scroll window.\n await this.updateComplete;\n this.renderRoot.querySelector('.option.active')?.scrollIntoView({ block: 'nearest' });\n }\n\n private _clear() {\n this.value = '';\n this._query = '';\n this._input.focus();\n this.dispatchEvent(new CustomEvent('cg-autocomplete-select', { detail: { value: '', label: '' }, bubbles: true, composed: true }));\n }\n\n private _highlightMatch(label: string): unknown {\n const q = this._query.toLowerCase();\n const idx = label.toLowerCase().indexOf(q);\n if (idx < 0 || !q) return label;\n const before = label.slice(0, idx);\n const match = label.slice(idx, idx + q.length);\n const after = label.slice(idx + q.length);\n return html`${before}<span class=\"match\">${match}</span>${after}`;\n }\n\n override render() {\n const filtered = this._filtered;\n return html`\n ${this.label ? html`<span class=\"label\">${this.label}</span>` : nothing}\n <div class=\"input-wrap ${this._focused ? 'focused' : ''} ${this.disabled ? 'disabled' : ''}\">\n <input\n .value=${this._query}\n placeholder=${this.placeholder || nothing}\n ?disabled=${this.disabled}\n role=\"combobox\"\n aria-expanded=${this._open}\n aria-autocomplete=\"list\"\n aria-controls=${`${this._uid}-listbox`}\n aria-activedescendant=${this._open && this._activeIndex >= 0 ? `${this._uid}-opt-${this._activeIndex}` : nothing}\n aria-invalid=${this.error ? 'true' : nothing}\n aria-label=${this.label || 'Autocomplete'}\n @input=${this._onInput}\n @keydown=${this._onKeyDown}\n @focus=${() => { this._focused = true; this._open = true; }}\n @blur=${() => { this._focused = false; this._open = false; }}\n />\n ${this.clearable && this._query ? html`\n <button class=\"clear\" @mousedown=${(e: Event) => e.preventDefault()} @click=${this._clear} aria-label=\"Clear\">\n <cg-icon name=\"x\" size=\"xs\"></cg-icon>\n </button>\n ` : nothing}\n <span class=\"chevron ${this._open ? 'open' : ''}\">\n <cg-icon name=\"chevron-down\" size=\"sm\"></cg-icon>\n </span>\n </div>\n ${this._open ? html`\n <div class=\"dropdown\" role=\"listbox\" id=${`${this._uid}-listbox`}>\n ${filtered.length === 0 ? html`<div class=\"empty\">No results found</div>` :\n filtered.map((opt, i) => html`\n <div class=\"option ${i === this._activeIndex ? 'active' : ''}\"\n role=\"option\"\n id=${`${this._uid}-opt-${i}`}\n aria-selected=${i === this._activeIndex}\n @mousedown=${(e: Event) => e.preventDefault()}\n @click=${() => this._select(opt)}>\n ${opt.icon ? html`<cg-icon name=\"${opt.icon}\" size=\"sm\"></cg-icon>` : nothing}\n <span>${this._highlightMatch(opt.label)}</span>\n </div>\n `)}\n </div>\n ` : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-autocomplete': CgAutocomplete;\n }\n}\n"],"names":["CgAutocomplete","LitElement","q","o","opt","list","label","idx","before","match","after","html","filtered","nothing","e","i","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-avatar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-avatar/cg-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,KAAK,CAAC;AAI1D;;;;;;;;;;;GAWG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,4BA6FnB;IAES,GAAG,SAAM;IACT,GAAG,SAAM;IACT,IAAI,SAAM;IACO,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC9C,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAY;IACtC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAQ;IAC7D,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAQ;IACnC,YAAY,SAAM;IAEnD,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAIN,MAAM;
|
|
1
|
+
{"version":3,"file":"cg-avatar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-avatar/cg-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,KAAK,CAAC;AAI1D;;;;;;;;;;;GAWG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,4BA6FnB;IAES,GAAG,SAAM;IACT,GAAG,SAAM;IACT,IAAI,SAAM;IACO,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC9C,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAY;IACtC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAQ;IAC7D,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAQ;IACnC,YAAY,SAAM;IAEnD,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAIN,MAAM;CA+BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { css as g, LitElement as d, svg as v, nothing as u, html as
|
|
2
|
-
import { property as
|
|
3
|
-
import { a as m, r as b } from "../../chunks/premium.css-
|
|
4
|
-
var z = Object.defineProperty, x = Object.getOwnPropertyDescriptor, a = (
|
|
5
|
-
for (var
|
|
6
|
-
(h =
|
|
7
|
-
return i &&
|
|
1
|
+
import { css as g, LitElement as d, svg as v, nothing as u, html as l } from "lit";
|
|
2
|
+
import { property as o, state as p, customElement as f } from "lit/decorators.js";
|
|
3
|
+
import { a as m, r as b } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var z = Object.defineProperty, x = Object.getOwnPropertyDescriptor, a = (e, r, c, i) => {
|
|
5
|
+
for (var s = i > 1 ? void 0 : i ? x(r, c) : r, n = e.length - 1, h; n >= 0; n--)
|
|
6
|
+
(h = e[n]) && (s = (i ? h(r, c, s) : h(s)) || s);
|
|
7
|
+
return i && s && z(r, c, s), s;
|
|
8
8
|
};
|
|
9
9
|
let t = class extends d {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.src = "", this.alt = "", this.name = "", this.size = "md", this.shape = "circle", this.status = null, this.type = null, this.fallbackIcon = "", this._imgFailed = !1;
|
|
12
12
|
}
|
|
13
|
-
_getInitials(
|
|
14
|
-
return
|
|
13
|
+
_getInitials(e) {
|
|
14
|
+
return e ? e.trim().split(/\s+/).slice(0, 2).map((r) => r[0] || "").join("").toUpperCase() : "";
|
|
15
15
|
}
|
|
16
16
|
_onError() {
|
|
17
17
|
this._imgFailed = !0;
|
|
@@ -20,24 +20,24 @@ let t = class extends d {
|
|
|
20
20
|
this._imgFailed = !1;
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
23
|
-
const
|
|
23
|
+
const e = this._getInitials(this.name), r = this.src && !this._imgFailed, c = this.type ? `${this.type} ` : "", i = this.status ? `, ${this.status}` : "", s = `${c}${this.alt || this.name || "Avatar"}${i}`, n = v`
|
|
24
24
|
<svg class="fallback-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
|
|
25
25
|
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
|
|
26
26
|
<circle cx="12" cy="7" r="4"></circle>
|
|
27
27
|
</svg>
|
|
28
28
|
`;
|
|
29
|
-
return
|
|
30
|
-
<div class="avatar" role="img" aria-label=${
|
|
31
|
-
${
|
|
29
|
+
return l`
|
|
30
|
+
<div class="avatar" role="img" aria-label=${s}>
|
|
31
|
+
${r ? l`
|
|
32
32
|
<img
|
|
33
33
|
src=${this.src}
|
|
34
34
|
alt=${this.alt || this.name || ""}
|
|
35
35
|
@error=${this._onError}
|
|
36
36
|
@load=${this._onLoad}
|
|
37
37
|
/>
|
|
38
|
-
` :
|
|
38
|
+
` : e ? l`<span class="initials">${e}</span>` : l`<slot name="fallback">${n}</slot>`}
|
|
39
39
|
</div>
|
|
40
|
-
${this.status ?
|
|
40
|
+
${this.status ? l`<span class="status ${this.status}" aria-hidden="true"></span>` : u}
|
|
41
41
|
`;
|
|
42
42
|
}
|
|
43
43
|
};
|
|
@@ -57,7 +57,7 @@ t.styles = [m, b, g`
|
|
|
57
57
|
align-items: center;
|
|
58
58
|
justify-content: center;
|
|
59
59
|
background: var(--cg-color-action-secondary-background-default);
|
|
60
|
-
color: var(--cg-color-
|
|
60
|
+
color: var(--cg-color-action-secondary-text-default);
|
|
61
61
|
overflow: hidden;
|
|
62
62
|
border-radius: var(--cg-border-radius-full);
|
|
63
63
|
font-weight: var(--cg-font-weight-semibold);
|
|
@@ -136,28 +136,28 @@ t.styles = [m, b, g`
|
|
|
136
136
|
}
|
|
137
137
|
`];
|
|
138
138
|
a([
|
|
139
|
-
|
|
139
|
+
o()
|
|
140
140
|
], t.prototype, "src", 2);
|
|
141
141
|
a([
|
|
142
|
-
|
|
142
|
+
o()
|
|
143
143
|
], t.prototype, "alt", 2);
|
|
144
144
|
a([
|
|
145
|
-
|
|
145
|
+
o()
|
|
146
146
|
], t.prototype, "name", 2);
|
|
147
147
|
a([
|
|
148
|
-
|
|
148
|
+
o({ reflect: !0 })
|
|
149
149
|
], t.prototype, "size", 2);
|
|
150
150
|
a([
|
|
151
|
-
|
|
151
|
+
o({ reflect: !0 })
|
|
152
152
|
], t.prototype, "shape", 2);
|
|
153
153
|
a([
|
|
154
|
-
|
|
154
|
+
o({ reflect: !0 })
|
|
155
155
|
], t.prototype, "status", 2);
|
|
156
156
|
a([
|
|
157
|
-
|
|
157
|
+
o({ reflect: !0 })
|
|
158
158
|
], t.prototype, "type", 2);
|
|
159
159
|
a([
|
|
160
|
-
|
|
160
|
+
o({ attribute: "fallback-icon" })
|
|
161
161
|
], t.prototype, "fallbackIcon", 2);
|
|
162
162
|
a([
|
|
163
163
|
p()
|