@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,20 +1,20 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as
|
|
3
|
-
import { a as
|
|
4
|
-
var f = Object.defineProperty,
|
|
5
|
-
for (var
|
|
6
|
-
(
|
|
7
|
-
return
|
|
1
|
+
import { css as c, LitElement as p, nothing as u, html as h } from "lit";
|
|
2
|
+
import { property as r, customElement as g } from "lit/decorators.js";
|
|
3
|
+
import { a as m, r as v } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var f = Object.defineProperty, b = Object.getOwnPropertyDescriptor, o = (l, a, s, i) => {
|
|
5
|
+
for (var e = i > 1 ? void 0 : i ? b(a, s) : a, n = l.length - 1, d; n >= 0; n--)
|
|
6
|
+
(d = l[n]) && (e = (i ? d(a, s, e) : d(e)) || e);
|
|
7
|
+
return i && e && f(a, s, e), e;
|
|
8
8
|
};
|
|
9
|
-
let t = class extends
|
|
9
|
+
let t = class extends p {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.direction = "row", this.gap = "sm", this.align = "start", this.attached = !1;
|
|
12
12
|
}
|
|
13
13
|
render() {
|
|
14
|
-
return
|
|
14
|
+
return h`<div role="group" aria-label=${this.label ? this.label : u}><slot></slot></div>`;
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
-
t.styles = [
|
|
17
|
+
t.styles = [m, v, c`
|
|
18
18
|
div[role="group"] {
|
|
19
19
|
display: flex;
|
|
20
20
|
}
|
|
@@ -35,53 +35,67 @@ t.styles = [h, v, n`
|
|
|
35
35
|
:host([align="end"]) div[role="group"] { justify-content: flex-end; }
|
|
36
36
|
:host([align="stretch"]) ::slotted(*) { flex: 1; }
|
|
37
37
|
|
|
38
|
-
/* Attached mode — buttons share borders
|
|
39
|
-
|
|
38
|
+
/* Attached mode — buttons share borders. The gap must be zeroed on the
|
|
39
|
+
flex CONTAINER (the div), not the host (not a flex parent), or the
|
|
40
|
+
gap-attribute rule above keeps an 8px gap and buttons aren't attached. */
|
|
41
|
+
:host([attached]) div[role="group"] {
|
|
40
42
|
gap: 0;
|
|
41
43
|
}
|
|
42
44
|
:host([attached]) ::slotted(*) {
|
|
43
45
|
border-radius: 0;
|
|
44
|
-
margin-left: -
|
|
46
|
+
margin-left: calc(-1 * var(--cg-border-width-50));
|
|
47
|
+
}
|
|
48
|
+
/* Lift the hovered/focused button so its border + focus ring aren't
|
|
49
|
+
clipped under the next sibling (the -1px overlap stacks later siblings
|
|
50
|
+
on top). position:relative is required for z-index on flex children. */
|
|
51
|
+
:host([attached]) ::slotted(*:hover),
|
|
52
|
+
:host([attached]) ::slotted(*:focus),
|
|
53
|
+
:host([attached]) ::slotted(*:focus-within) {
|
|
54
|
+
position: relative;
|
|
55
|
+
z-index: 1;
|
|
45
56
|
}
|
|
46
57
|
:host([attached]) ::slotted(*:first-child) {
|
|
47
58
|
margin-left: 0;
|
|
48
|
-
border-radius: var(--cg-
|
|
59
|
+
border-radius: var(--cg-component-button-radius-md) 0 0 var(--cg-component-button-radius-md);
|
|
49
60
|
}
|
|
50
61
|
:host([attached]) ::slotted(*:last-child) {
|
|
51
|
-
border-radius: 0 var(--cg-
|
|
62
|
+
border-radius: 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0;
|
|
52
63
|
}
|
|
53
64
|
:host([attached]) ::slotted(*:only-child) {
|
|
54
|
-
border-radius: var(--cg-
|
|
65
|
+
border-radius: var(--cg-component-button-radius-md);
|
|
55
66
|
margin-left: 0;
|
|
56
67
|
}
|
|
57
68
|
|
|
58
69
|
/* Attached vertical */
|
|
59
70
|
:host([attached][direction="column"]) ::slotted(*) {
|
|
60
71
|
margin-left: 0;
|
|
61
|
-
margin-top: -
|
|
72
|
+
margin-top: calc(-1 * var(--cg-border-width-50));
|
|
62
73
|
}
|
|
63
74
|
:host([attached][direction="column"]) ::slotted(*:first-child) {
|
|
64
75
|
margin-top: 0;
|
|
65
|
-
border-radius: var(--cg-
|
|
76
|
+
border-radius: var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0 0;
|
|
66
77
|
}
|
|
67
78
|
:host([attached][direction="column"]) ::slotted(*:last-child) {
|
|
68
|
-
border-radius: 0 0 var(--cg-
|
|
79
|
+
border-radius: 0 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md);
|
|
69
80
|
}
|
|
70
81
|
`];
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
o([
|
|
83
|
+
r({ reflect: !0 })
|
|
73
84
|
], t.prototype, "direction", 2);
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
o([
|
|
86
|
+
r({ reflect: !0 })
|
|
76
87
|
], t.prototype, "gap", 2);
|
|
77
|
-
|
|
78
|
-
|
|
88
|
+
o([
|
|
89
|
+
r({ reflect: !0 })
|
|
79
90
|
], t.prototype, "align", 2);
|
|
80
|
-
|
|
81
|
-
|
|
91
|
+
o([
|
|
92
|
+
r({ type: Boolean, reflect: !0 })
|
|
82
93
|
], t.prototype, "attached", 2);
|
|
83
|
-
|
|
84
|
-
|
|
94
|
+
o([
|
|
95
|
+
r()
|
|
96
|
+
], t.prototype, "label", 2);
|
|
97
|
+
t = o([
|
|
98
|
+
g("cg-button-group")
|
|
85
99
|
], t);
|
|
86
100
|
export {
|
|
87
101
|
t as CgButtonGroup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-button-group.js","sources":["../../../src/components/cg-button-group/cg-button-group.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-button-group> — Groups buttons with optional attached mode.\n *\n * Features:\n * - Row or column direction\n * - Attached mode (no gap, shared border radius)\n * - Gap size control\n * - Alignment (start/center/end/stretch)\n * - ARIA group role\n */\n@customElement('cg-button-group')\nexport class CgButtonGroup extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n div[role=\"group\"] {\n display: flex;\n }\n\n /* Direction */\n :host([direction=\"row\"]) div[role=\"group\"] { flex-direction: row; }\n :host([direction=\"column\"]) div[role=\"group\"] { flex-direction: column; width: 100%; }\n\n /* Gap */\n :host([gap=\"none\"]) div[role=\"group\"] { gap: 0; }\n :host([gap=\"xs\"]) div[role=\"group\"] { gap: var(--cg-spacing-4); }\n :host([gap=\"sm\"]) div[role=\"group\"] { gap: var(--cg-spacing-8); }\n :host([gap=\"md\"]) div[role=\"group\"] { gap: var(--cg-spacing-12); }\n\n /* Alignment */\n :host([align=\"start\"]) div[role=\"group\"] { justify-content: flex-start; }\n :host([align=\"center\"]) div[role=\"group\"] { justify-content: center; }\n :host([align=\"end\"]) div[role=\"group\"] { justify-content: flex-end; }\n :host([align=\"stretch\"]) ::slotted(*) { flex: 1; }\n\n /* Attached mode — buttons share borders */\n :host([attached]) {\n gap: 0;\n }\n :host([attached]) ::slotted(*) {\n border-radius: 0;\n margin-left: -1px;\n }\n :host([attached]) ::slotted(*:first-child) {\n margin-left: 0;\n border-radius: var(--cg-
|
|
1
|
+
{"version":3,"file":"cg-button-group.js","sources":["../../../src/components/cg-button-group/cg-button-group.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-button-group> — Groups buttons with optional attached mode.\n *\n * Features:\n * - Row or column direction\n * - Attached mode (no gap, shared border radius)\n * - Gap size control\n * - Alignment (start/center/end/stretch)\n * - ARIA group role\n */\n@customElement('cg-button-group')\nexport class CgButtonGroup extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n div[role=\"group\"] {\n display: flex;\n }\n\n /* Direction */\n :host([direction=\"row\"]) div[role=\"group\"] { flex-direction: row; }\n :host([direction=\"column\"]) div[role=\"group\"] { flex-direction: column; width: 100%; }\n\n /* Gap */\n :host([gap=\"none\"]) div[role=\"group\"] { gap: 0; }\n :host([gap=\"xs\"]) div[role=\"group\"] { gap: var(--cg-spacing-4); }\n :host([gap=\"sm\"]) div[role=\"group\"] { gap: var(--cg-spacing-8); }\n :host([gap=\"md\"]) div[role=\"group\"] { gap: var(--cg-spacing-12); }\n\n /* Alignment */\n :host([align=\"start\"]) div[role=\"group\"] { justify-content: flex-start; }\n :host([align=\"center\"]) div[role=\"group\"] { justify-content: center; }\n :host([align=\"end\"]) div[role=\"group\"] { justify-content: flex-end; }\n :host([align=\"stretch\"]) ::slotted(*) { flex: 1; }\n\n /* Attached mode — buttons share borders. The gap must be zeroed on the\n flex CONTAINER (the div), not the host (not a flex parent), or the\n gap-attribute rule above keeps an 8px gap and buttons aren't attached. */\n :host([attached]) div[role=\"group\"] {\n gap: 0;\n }\n :host([attached]) ::slotted(*) {\n border-radius: 0;\n margin-left: calc(-1 * var(--cg-border-width-50));\n }\n /* Lift the hovered/focused button so its border + focus ring aren't\n clipped under the next sibling (the -1px overlap stacks later siblings\n on top). position:relative is required for z-index on flex children. */\n :host([attached]) ::slotted(*:hover),\n :host([attached]) ::slotted(*:focus),\n :host([attached]) ::slotted(*:focus-within) {\n position: relative;\n z-index: 1;\n }\n :host([attached]) ::slotted(*:first-child) {\n margin-left: 0;\n border-radius: var(--cg-component-button-radius-md) 0 0 var(--cg-component-button-radius-md);\n }\n :host([attached]) ::slotted(*:last-child) {\n border-radius: 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0;\n }\n :host([attached]) ::slotted(*:only-child) {\n border-radius: var(--cg-component-button-radius-md);\n margin-left: 0;\n }\n\n /* Attached vertical */\n :host([attached][direction=\"column\"]) ::slotted(*) {\n margin-left: 0;\n margin-top: calc(-1 * var(--cg-border-width-50));\n }\n :host([attached][direction=\"column\"]) ::slotted(*:first-child) {\n margin-top: 0;\n border-radius: var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0 0;\n }\n :host([attached][direction=\"column\"]) ::slotted(*:last-child) {\n border-radius: 0 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md);\n }\n `];\n\n @property({ reflect: true }) direction: 'row' | 'column' = 'row';\n @property({ reflect: true }) gap: 'none' | 'xs' | 'sm' | 'md' = 'sm';\n @property({ reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' = 'start';\n @property({ type: Boolean, reflect: true }) attached = false;\n /** Accessible name for the group landmark (e.g. \"Text alignment\"). */\n @property() label?: string;\n\n override render() {\n return html`<div role=\"group\" aria-label=${this.label ? this.label : nothing}><slot></slot></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-button-group': CgButtonGroup; }\n}\n"],"names":["CgButtonGroup","LitElement","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;AAeO,IAAMA,IAAN,cAA4BC,EAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GAmEwB,KAAA,YAA8B,OAC9B,KAAA,MAAmC,MACnC,KAAA,QAAgD,SACjC,KAAA,WAAW;AAAA,EAAA;AAAA,EAI9C,SAAS;AAChB,WAAOC,iCAAoC,KAAK,QAAQ,KAAK,QAAQC,CAAO;AAAA,EAC9E;AACF;AA7EaH,EACK,SAAS,CAACI,GAAUC,GAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgElD;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAnEhBR,EAmEkB,WAAA,aAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GApEhBR,EAoEkB,WAAA,OAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GArEhBR,EAqEkB,WAAA,SAAA,CAAA;AACeO,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAtE/BR,EAsEiC,WAAA,YAAA,CAAA;AAEhCO,EAAA;AAAA,EAAXC,EAAA;AAAS,GAxECR,EAwEC,WAAA,SAAA,CAAA;AAxEDA,IAANO,EAAA;AAAA,EADNE,EAAc,iBAAiB;AAAA,GACnBT,CAAA;"}
|
|
@@ -35,6 +35,10 @@ export declare class CgCalendar extends LitElement {
|
|
|
35
35
|
private _isToday;
|
|
36
36
|
private _isSameDay;
|
|
37
37
|
private _isDisabled;
|
|
38
|
+
/** True when the entire previous month is before `min` (nothing to show). */
|
|
39
|
+
private _isPrevMonthOutOfBounds;
|
|
40
|
+
/** True when the entire next month is after `max` (nothing to show). */
|
|
41
|
+
private _isNextMonthOutOfBounds;
|
|
38
42
|
private _prevMonth;
|
|
39
43
|
private _nextMonth;
|
|
40
44
|
private _onGridKeydown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-calendar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;GAYG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"cg-calendar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;GAYG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAqInB;IAEH,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAmB;;IAS1B,KAAK,SAAM;IACe,QAAQ,SAAM;IACxC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAY;IACjD,GAAG,SAAM;IACT,GAAG,SAAM;IACoC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAK;IACrE,IAAI,SAAM;IAEb,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAyB;IAE9C,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAcrD,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;IAYnB,6EAA6E;IAC7E,OAAO,CAAC,uBAAuB;IAQ/B,wEAAwE;IACxE,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAuBb,MAAM;CA0DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as c, state as
|
|
3
|
-
import { h as f, r as v } from "../../chunks/premium.css-
|
|
1
|
+
import { css as g, LitElement as u, html as d } from "lit";
|
|
2
|
+
import { property as c, state as h, customElement as p } from "lit/decorators.js";
|
|
3
|
+
import { h as f, r as v } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
4
|
var y = Object.defineProperty, m = Object.getOwnPropertyDescriptor, i = (t, e, s, r) => {
|
|
5
5
|
for (var a = r > 1 ? void 0 : r ? m(e, s) : e, o = t.length - 1, l; o >= 0; o--)
|
|
6
6
|
(l = t[o]) && (a = (r ? l(e, s, a) : l(a)) || a);
|
|
@@ -57,11 +57,23 @@ let n = class extends u {
|
|
|
57
57
|
}
|
|
58
58
|
return !1;
|
|
59
59
|
}
|
|
60
|
+
/** True when the entire previous month is before `min` (nothing to show). */
|
|
61
|
+
_isPrevMonthOutOfBounds() {
|
|
62
|
+
if (!this.min) return !1;
|
|
63
|
+
const t = this._parseDate(this.min);
|
|
64
|
+
return t ? new Date(this._displayYear, this._displayMonth, 0) < t : !1;
|
|
65
|
+
}
|
|
66
|
+
/** True when the entire next month is after `max` (nothing to show). */
|
|
67
|
+
_isNextMonthOutOfBounds() {
|
|
68
|
+
if (!this.max) return !1;
|
|
69
|
+
const t = this._parseDate(this.max);
|
|
70
|
+
return t ? new Date(this._displayYear, this._displayMonth + 1, 1) > t : !1;
|
|
71
|
+
}
|
|
60
72
|
_prevMonth() {
|
|
61
|
-
this._displayMonth === 0 ? (this._displayMonth = 11, this._displayYear--) : this._displayMonth
|
|
73
|
+
this._isPrevMonthOutOfBounds() || (this._displayMonth === 0 ? (this._displayMonth = 11, this._displayYear--) : this._displayMonth--);
|
|
62
74
|
}
|
|
63
75
|
_nextMonth() {
|
|
64
|
-
this._displayMonth === 11 ? (this._displayMonth = 0, this._displayYear++) : this._displayMonth
|
|
76
|
+
this._isNextMonthOutOfBounds() || (this._displayMonth === 11 ? (this._displayMonth = 0, this._displayYear++) : this._displayMonth++);
|
|
65
77
|
}
|
|
66
78
|
_onGridKeydown(t) {
|
|
67
79
|
const e = t.target;
|
|
@@ -149,13 +161,13 @@ let n = class extends u {
|
|
|
149
161
|
return d`
|
|
150
162
|
<div class="calendar" role="grid" aria-label=${`${this._getMonthName()} ${this._displayYear}`}>
|
|
151
163
|
<div class="header">
|
|
152
|
-
<button class="nav-btn" type="button" aria-label="Previous month" @click=${this._prevMonth}>
|
|
164
|
+
<button class="nav-btn" type="button" aria-label="Previous month" ?disabled=${this._isPrevMonthOutOfBounds()} @click=${this._prevMonth}>
|
|
153
165
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
154
166
|
<path d="M9 3L5 7l4 4"/>
|
|
155
167
|
</svg>
|
|
156
168
|
</button>
|
|
157
169
|
<div class="month-year">${this._getMonthName()} ${this._displayYear}</div>
|
|
158
|
-
<button class="nav-btn" type="button" aria-label="Next month" @click=${this._nextMonth}>
|
|
170
|
+
<button class="nav-btn" type="button" aria-label="Next month" ?disabled=${this._isNextMonthOutOfBounds()} @click=${this._nextMonth}>
|
|
159
171
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
160
172
|
<path d="M5 3l4 4-4 4"/>
|
|
161
173
|
</svg>
|
|
@@ -179,7 +191,7 @@ let n = class extends u {
|
|
|
179
191
|
`;
|
|
180
192
|
}
|
|
181
193
|
};
|
|
182
|
-
n.styles = [f, v,
|
|
194
|
+
n.styles = [f, v, g`
|
|
183
195
|
:host { display: inline-block; }
|
|
184
196
|
|
|
185
197
|
.calendar {
|
|
@@ -211,6 +223,10 @@ n.styles = [f, v, h`
|
|
|
211
223
|
transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
212
224
|
}
|
|
213
225
|
.nav-btn:hover { background: var(--cg-color-action-tertiary-background-hover); }
|
|
226
|
+
.nav-btn:disabled {
|
|
227
|
+
opacity: 0.3;
|
|
228
|
+
cursor: not-allowed;
|
|
229
|
+
}
|
|
214
230
|
.nav-btn:focus-visible {
|
|
215
231
|
outline: none;
|
|
216
232
|
box-shadow:
|
|
@@ -281,8 +297,8 @@ n.styles = [f, v, h`
|
|
|
281
297
|
opacity: 0.5;
|
|
282
298
|
}
|
|
283
299
|
.day.today:not(.selected):not(.range-start):not(.range-end) {
|
|
284
|
-
box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-
|
|
285
|
-
color: var(--cg-color-action-primary-
|
|
300
|
+
box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-border-default);
|
|
301
|
+
color: var(--cg-color-action-primary-border-default);
|
|
286
302
|
font-weight: var(--cg-font-weight-semibold);
|
|
287
303
|
}
|
|
288
304
|
.day.selected {
|
|
@@ -332,10 +348,10 @@ i([
|
|
|
332
348
|
c()
|
|
333
349
|
], n.prototype, "name", 2);
|
|
334
350
|
i([
|
|
335
|
-
|
|
351
|
+
h()
|
|
336
352
|
], n.prototype, "_displayYear", 2);
|
|
337
353
|
i([
|
|
338
|
-
|
|
354
|
+
h()
|
|
339
355
|
], n.prototype, "_displayMonth", 2);
|
|
340
356
|
n = i([
|
|
341
357
|
p("cg-calendar")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-calendar.js","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-calendar\n * Full month calendar view with single/range/multiple selection modes,\n * keyboard navigation, and min/max bounds.\n *\n * @example\n * ```html\n * <cg-calendar value=\"2026-04-15\"></cg-calendar>\n * <cg-calendar mode=\"range\" value=\"2026-04-10\" range-end=\"2026-04-20\"></cg-calendar>\n * ```\n *\n * @fires {CustomEvent<{value: string, rangeEnd?: string}>} cg-calendar-change\n */\n@customElement('cg-calendar')\nexport class CgCalendar extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n .calendar {\n padding: var(--cg-spacing-16);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-calendar-radius);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--cg-spacing-12);\n }\n .nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n border-radius: var(--cg-border-radius-100);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .nav-btn:hover { background: var(--cg-color-action-tertiary-background-hover); }\n .nav-btn:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .month-year {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n }\n\n .weekdays {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n margin-bottom: var(--cg-spacing-8);\n }\n .weekday {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--cg-spacing-32);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-outlined);\n }\n\n .days {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n }\n .day {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-component-calendar-cell-size);\n height: var(--cg-component-calendar-cell-size);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n font-size: var(--cg-font-size-sm);\n cursor: pointer;\n border-radius: var(--cg-border-radius-full);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform 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 .day:hover:not(:disabled) {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .day:active:not(:disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .nav-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .day:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n .day.outside {\n color: var(--cg-color-surface-container-outlined);\n opacity: 0.5;\n }\n .day.today:not(.selected):not(.range-start):not(.range-end) {\n box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-background-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.selected {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.in-range {\n background: var(--cg-overlay-accent-light);\n border-radius: 0;\n }\n .day.range-start {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: var(--cg-border-radius-100) 0 0 var(--cg-border-radius-100);\n }\n .day.range-end {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: 0 var(--cg-border-radius-100) var(--cg-border-radius-100) 0;\n }\n .day:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n `];\n\n static formAssociated = true;\n private _internals?: ElementInternals;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n @property() value = '';\n @property({ attribute: 'range-end' }) rangeEnd = '';\n @property() mode: 'single' | 'range' | 'multiple' = 'single';\n @property() min = '';\n @property() max = '';\n @property({ type: Number, attribute: 'week-starts-on' }) weekStartsOn: 0 | 1 = 0;\n @property() name = '';\n\n @state() private _displayYear = new Date().getFullYear();\n @state() private _displayMonth = new Date().getMonth();\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n // Jump to the month containing the new value\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n }\n\n private _parseDate(iso: string): Date | null {\n if (!iso) return null;\n const parts = iso.split('-');\n if (parts.length !== 3) return null;\n const year = parseInt(parts[0]!, 10);\n const month = parseInt(parts[1]!, 10) - 1;\n const day = parseInt(parts[2]!, 10);\n if (isNaN(year) || isNaN(month) || isNaN(day)) return null;\n return new Date(year, month, day);\n }\n\n private _formatISO(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n }\n\n private _getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n }\n\n private _getFirstDayOfWeek(year: number, month: number): number {\n const day = new Date(year, month, 1).getDay();\n return (day - this.weekStartsOn + 7) % 7;\n }\n\n private _isToday(date: Date): boolean {\n const today = new Date();\n return date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate();\n }\n\n private _isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n }\n\n private _isDisabled(date: Date): boolean {\n if (this.min) {\n const min = this._parseDate(this.min);\n if (min && date < min) return true;\n }\n if (this.max) {\n const max = this._parseDate(this.max);\n if (max && date > max) return true;\n }\n return false;\n }\n\n private _prevMonth(): void {\n if (this._displayMonth === 0) {\n this._displayMonth = 11;\n this._displayYear--;\n } else {\n this._displayMonth--;\n }\n }\n\n private _nextMonth(): void {\n if (this._displayMonth === 11) {\n this._displayMonth = 0;\n this._displayYear++;\n } else {\n this._displayMonth++;\n }\n }\n\n private _onGridKeydown(e: KeyboardEvent): void {\n const target = e.target as HTMLElement;\n if (!target || !target.classList.contains('day')) return;\n const buttons = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>('.day:not(:disabled)') ?? [],\n );\n const idx = buttons.indexOf(target as HTMLButtonElement);\n if (idx < 0) return;\n let next = idx;\n switch (e.key) {\n case 'ArrowLeft': next = Math.max(0, idx - 1); break;\n case 'ArrowRight': next = Math.min(buttons.length - 1, idx + 1); break;\n case 'ArrowUp': next = Math.max(0, idx - 7); break;\n case 'ArrowDown': next = Math.min(buttons.length - 1, idx + 7); break;\n case 'Home': next = 0; break;\n case 'End': next = buttons.length - 1; break;\n case 'PageUp': e.preventDefault(); this._prevMonth(); return;\n case 'PageDown': e.preventDefault(); this._nextMonth(); return;\n default: return;\n }\n e.preventDefault();\n buttons[next]?.focus();\n }\n\n private _selectDate(date: Date): void {\n if (this._isDisabled(date)) return;\n const iso = this._formatISO(date);\n\n if (this.mode === 'range') {\n if (!this.value || (this.value && this.rangeEnd)) {\n // Start new range\n this.value = iso;\n this.rangeEnd = '';\n } else {\n // Complete range\n const start = this._parseDate(this.value);\n if (start && date < start) {\n this.rangeEnd = this.value;\n this.value = iso;\n } else {\n this.rangeEnd = iso;\n }\n }\n } else {\n this.value = iso;\n }\n\n this.dispatchEvent(new CustomEvent('cg-calendar-change', {\n detail: { value: this.value, rangeEnd: this.rangeEnd },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _getWeekdayNames(): string[] {\n const names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n if (this.weekStartsOn === 1) {\n return [...names.slice(1), names[0]!];\n }\n return names;\n }\n\n private _getMonthName(): string {\n return new Date(this._displayYear, this._displayMonth, 1).toLocaleString('default', { month: 'long' });\n }\n\n private _getDayClasses(date: Date, isOutside: boolean): string {\n const classes = ['day'];\n if (isOutside) classes.push('outside');\n if (this._isToday(date)) classes.push('today');\n\n const selected = this._parseDate(this.value);\n const rangeEnd = this._parseDate(this.rangeEnd);\n\n if (this.mode === 'range') {\n if (selected && this._isSameDay(date, selected)) {\n classes.push(rangeEnd ? 'range-start' : 'selected');\n } else if (rangeEnd && this._isSameDay(date, rangeEnd)) {\n classes.push('range-end');\n } else if (selected && rangeEnd && date > selected && date < rangeEnd) {\n classes.push('in-range');\n }\n } else {\n if (selected && this._isSameDay(date, selected)) classes.push('selected');\n }\n\n return classes.join(' ');\n }\n\n override render() {\n const daysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth);\n const firstDayOffset = this._getFirstDayOfWeek(this._displayYear, this._displayMonth);\n const prevDaysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth - 1);\n\n const cells: Array<{ date: Date; outside: boolean }> = [];\n\n // Previous month outside days\n for (let i = firstDayOffset - 1; i >= 0; i--) {\n const date = new Date(this._displayYear, this._displayMonth - 1, prevDaysInMonth - i);\n cells.push({ date, outside: true });\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(this._displayYear, this._displayMonth, i);\n cells.push({ date, outside: false });\n }\n\n // Next month outside days (fill to 42 cells = 6 rows)\n while (cells.length < 42) {\n const lastDate = cells[cells.length - 1]!.date;\n const date = new Date(lastDate.getFullYear(), lastDate.getMonth(), lastDate.getDate() + 1);\n cells.push({ date, outside: true });\n }\n\n return html`\n <div class=\"calendar\" role=\"grid\" aria-label=${`${this._getMonthName()} ${this._displayYear}`}>\n <div class=\"header\">\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Previous month\" @click=${this._prevMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 3L5 7l4 4\"/>\n </svg>\n </button>\n <div class=\"month-year\">${this._getMonthName()} ${this._displayYear}</div>\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Next month\" @click=${this._nextMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M5 3l4 4-4 4\"/>\n </svg>\n </button>\n </div>\n <div class=\"weekdays\">\n ${this._getWeekdayNames().map(name => html`<div class=\"weekday\">${name}</div>`)}\n </div>\n <div class=\"days\" @keydown=${this._onGridKeydown}>\n ${cells.map(cell => html`\n <button\n class=${this._getDayClasses(cell.date, cell.outside)}\n role=\"gridcell\"\n aria-selected=${this._parseDate(this.value) && this._isSameDay(cell.date, this._parseDate(this.value)!) ? 'true' : 'false'}\n ?disabled=${this._isDisabled(cell.date)}\n @click=${() => this._selectDate(cell.date)}\n >${cell.date.getDate()}</button>\n `)}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-calendar': CgCalendar;\n }\n}\n"],"names":["CgCalendar","LitElement","d","changed","iso","parts","year","month","day","date","y","m","today","a","b","min","max","e","target","buttons","idx","next","start","names","isOutside","classes","selected","rangeEnd","daysInMonth","firstDayOffset","prevDaysInMonth","cells","i","lastDate","html","name","cell","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-calendar.js","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-calendar\n * Full month calendar view with single/range/multiple selection modes,\n * keyboard navigation, and min/max bounds.\n *\n * @example\n * ```html\n * <cg-calendar value=\"2026-04-15\"></cg-calendar>\n * <cg-calendar mode=\"range\" value=\"2026-04-10\" range-end=\"2026-04-20\"></cg-calendar>\n * ```\n *\n * @fires {CustomEvent<{value: string, rangeEnd?: string}>} cg-calendar-change\n */\n@customElement('cg-calendar')\nexport class CgCalendar extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n .calendar {\n padding: var(--cg-spacing-16);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-calendar-radius);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--cg-spacing-12);\n }\n .nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n border-radius: var(--cg-border-radius-100);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .nav-btn:hover { background: var(--cg-color-action-tertiary-background-hover); }\n .nav-btn:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n .nav-btn:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .month-year {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n }\n\n .weekdays {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n margin-bottom: var(--cg-spacing-8);\n }\n .weekday {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--cg-spacing-32);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-outlined);\n }\n\n .days {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n }\n .day {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-component-calendar-cell-size);\n height: var(--cg-component-calendar-cell-size);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n font-size: var(--cg-font-size-sm);\n cursor: pointer;\n border-radius: var(--cg-border-radius-full);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform 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 .day:hover:not(:disabled) {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .day:active:not(:disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .nav-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .day:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n .day.outside {\n color: var(--cg-color-surface-container-outlined);\n opacity: 0.5;\n }\n .day.today:not(.selected):not(.range-start):not(.range-end) {\n box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-border-default);\n color: var(--cg-color-action-primary-border-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.selected {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.in-range {\n background: var(--cg-overlay-accent-light);\n border-radius: 0;\n }\n .day.range-start {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: var(--cg-border-radius-100) 0 0 var(--cg-border-radius-100);\n }\n .day.range-end {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: 0 var(--cg-border-radius-100) var(--cg-border-radius-100) 0;\n }\n .day:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n `];\n\n static formAssociated = true;\n private _internals?: ElementInternals;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n @property() value = '';\n @property({ attribute: 'range-end' }) rangeEnd = '';\n @property() mode: 'single' | 'range' | 'multiple' = 'single';\n @property() min = '';\n @property() max = '';\n @property({ type: Number, attribute: 'week-starts-on' }) weekStartsOn: 0 | 1 = 0;\n @property() name = '';\n\n @state() private _displayYear = new Date().getFullYear();\n @state() private _displayMonth = new Date().getMonth();\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n // Jump to the month containing the new value\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n }\n\n private _parseDate(iso: string): Date | null {\n if (!iso) return null;\n const parts = iso.split('-');\n if (parts.length !== 3) return null;\n const year = parseInt(parts[0]!, 10);\n const month = parseInt(parts[1]!, 10) - 1;\n const day = parseInt(parts[2]!, 10);\n if (isNaN(year) || isNaN(month) || isNaN(day)) return null;\n return new Date(year, month, day);\n }\n\n private _formatISO(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n }\n\n private _getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n }\n\n private _getFirstDayOfWeek(year: number, month: number): number {\n const day = new Date(year, month, 1).getDay();\n return (day - this.weekStartsOn + 7) % 7;\n }\n\n private _isToday(date: Date): boolean {\n const today = new Date();\n return date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate();\n }\n\n private _isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n }\n\n private _isDisabled(date: Date): boolean {\n if (this.min) {\n const min = this._parseDate(this.min);\n if (min && date < min) return true;\n }\n if (this.max) {\n const max = this._parseDate(this.max);\n if (max && date > max) return true;\n }\n return false;\n }\n\n /** True when the entire previous month is before `min` (nothing to show). */\n private _isPrevMonthOutOfBounds(): boolean {\n if (!this.min) return false;\n const min = this._parseDate(this.min);\n if (!min) return false;\n const lastDayPrev = new Date(this._displayYear, this._displayMonth, 0);\n return lastDayPrev < min;\n }\n\n /** True when the entire next month is after `max` (nothing to show). */\n private _isNextMonthOutOfBounds(): boolean {\n if (!this.max) return false;\n const max = this._parseDate(this.max);\n if (!max) return false;\n const firstDayNext = new Date(this._displayYear, this._displayMonth + 1, 1);\n return firstDayNext > max;\n }\n\n private _prevMonth(): void {\n if (this._isPrevMonthOutOfBounds()) return;\n if (this._displayMonth === 0) {\n this._displayMonth = 11;\n this._displayYear--;\n } else {\n this._displayMonth--;\n }\n }\n\n private _nextMonth(): void {\n if (this._isNextMonthOutOfBounds()) return;\n if (this._displayMonth === 11) {\n this._displayMonth = 0;\n this._displayYear++;\n } else {\n this._displayMonth++;\n }\n }\n\n private _onGridKeydown(e: KeyboardEvent): void {\n const target = e.target as HTMLElement;\n if (!target || !target.classList.contains('day')) return;\n const buttons = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>('.day:not(:disabled)') ?? [],\n );\n const idx = buttons.indexOf(target as HTMLButtonElement);\n if (idx < 0) return;\n let next = idx;\n switch (e.key) {\n case 'ArrowLeft': next = Math.max(0, idx - 1); break;\n case 'ArrowRight': next = Math.min(buttons.length - 1, idx + 1); break;\n case 'ArrowUp': next = Math.max(0, idx - 7); break;\n case 'ArrowDown': next = Math.min(buttons.length - 1, idx + 7); break;\n case 'Home': next = 0; break;\n case 'End': next = buttons.length - 1; break;\n case 'PageUp': e.preventDefault(); this._prevMonth(); return;\n case 'PageDown': e.preventDefault(); this._nextMonth(); return;\n default: return;\n }\n e.preventDefault();\n buttons[next]?.focus();\n }\n\n private _selectDate(date: Date): void {\n if (this._isDisabled(date)) return;\n const iso = this._formatISO(date);\n\n if (this.mode === 'range') {\n if (!this.value || (this.value && this.rangeEnd)) {\n // Start new range\n this.value = iso;\n this.rangeEnd = '';\n } else {\n // Complete range\n const start = this._parseDate(this.value);\n if (start && date < start) {\n this.rangeEnd = this.value;\n this.value = iso;\n } else {\n this.rangeEnd = iso;\n }\n }\n } else {\n this.value = iso;\n }\n\n this.dispatchEvent(new CustomEvent('cg-calendar-change', {\n detail: { value: this.value, rangeEnd: this.rangeEnd },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _getWeekdayNames(): string[] {\n const names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n if (this.weekStartsOn === 1) {\n return [...names.slice(1), names[0]!];\n }\n return names;\n }\n\n private _getMonthName(): string {\n return new Date(this._displayYear, this._displayMonth, 1).toLocaleString('default', { month: 'long' });\n }\n\n private _getDayClasses(date: Date, isOutside: boolean): string {\n const classes = ['day'];\n if (isOutside) classes.push('outside');\n if (this._isToday(date)) classes.push('today');\n\n const selected = this._parseDate(this.value);\n const rangeEnd = this._parseDate(this.rangeEnd);\n\n if (this.mode === 'range') {\n if (selected && this._isSameDay(date, selected)) {\n classes.push(rangeEnd ? 'range-start' : 'selected');\n } else if (rangeEnd && this._isSameDay(date, rangeEnd)) {\n classes.push('range-end');\n } else if (selected && rangeEnd && date > selected && date < rangeEnd) {\n classes.push('in-range');\n }\n } else {\n if (selected && this._isSameDay(date, selected)) classes.push('selected');\n }\n\n return classes.join(' ');\n }\n\n override render() {\n const daysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth);\n const firstDayOffset = this._getFirstDayOfWeek(this._displayYear, this._displayMonth);\n const prevDaysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth - 1);\n\n const cells: Array<{ date: Date; outside: boolean }> = [];\n\n // Previous month outside days\n for (let i = firstDayOffset - 1; i >= 0; i--) {\n const date = new Date(this._displayYear, this._displayMonth - 1, prevDaysInMonth - i);\n cells.push({ date, outside: true });\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(this._displayYear, this._displayMonth, i);\n cells.push({ date, outside: false });\n }\n\n // Next month outside days (fill to 42 cells = 6 rows)\n while (cells.length < 42) {\n const lastDate = cells[cells.length - 1]!.date;\n const date = new Date(lastDate.getFullYear(), lastDate.getMonth(), lastDate.getDate() + 1);\n cells.push({ date, outside: true });\n }\n\n return html`\n <div class=\"calendar\" role=\"grid\" aria-label=${`${this._getMonthName()} ${this._displayYear}`}>\n <div class=\"header\">\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Previous month\" ?disabled=${this._isPrevMonthOutOfBounds()} @click=${this._prevMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 3L5 7l4 4\"/>\n </svg>\n </button>\n <div class=\"month-year\">${this._getMonthName()} ${this._displayYear}</div>\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Next month\" ?disabled=${this._isNextMonthOutOfBounds()} @click=${this._nextMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M5 3l4 4-4 4\"/>\n </svg>\n </button>\n </div>\n <div class=\"weekdays\">\n ${this._getWeekdayNames().map(name => html`<div class=\"weekday\">${name}</div>`)}\n </div>\n <div class=\"days\" @keydown=${this._onGridKeydown}>\n ${cells.map(cell => html`\n <button\n class=${this._getDayClasses(cell.date, cell.outside)}\n role=\"gridcell\"\n aria-selected=${this._parseDate(this.value) && this._isSameDay(cell.date, this._parseDate(this.value)!) ? 'true' : 'false'}\n ?disabled=${this._isDisabled(cell.date)}\n @click=${() => this._selectDate(cell.date)}\n >${cell.date.getDate()}</button>\n `)}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-calendar': CgCalendar;\n }\n}\n"],"names":["CgCalendar","LitElement","d","changed","iso","parts","year","month","day","date","y","m","today","a","b","min","max","e","target","buttons","idx","next","start","names","isOutside","classes","selected","rangeEnd","daysInMonth","firstDayOffset","prevDaysInMonth","cells","i","lastDate","html","name","cell","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-callout.d.ts","sourceRoot":"","sources":["../../../src/components/cg-callout/cg-callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAIrD;;;;;;;;GAQG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"cg-callout.d.ts","sourceRoot":"","sources":["../../../src/components/cg-callout/cg-callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAIrD;;;;;;;;GAQG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BA+GnB;IAE0B,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAU;IACxE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IAC7D,KAAK,SAAM;IACpB,WAAW,SAAM;IACA,WAAW,UAAS;IAExC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,UAAU,CAMhB;IAEO,oBAAoB;IAK7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,QAAQ;IAUP,MAAM;CAkChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { css as v, LitElement as h, nothing as n, html as c } from "lit";
|
|
2
|
-
import { property as
|
|
3
|
-
import { h as
|
|
4
|
-
var
|
|
5
|
-
for (var
|
|
6
|
-
(g =
|
|
7
|
-
return e &&
|
|
2
|
+
import { property as a, state as u, customElement as m } from "lit/decorators.js";
|
|
3
|
+
import { h as f, r as p, f as b } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var w = Object.defineProperty, y = Object.getOwnPropertyDescriptor, i = (s, t, l, e) => {
|
|
5
|
+
for (var o = e > 1 ? void 0 : e ? y(t, l) : t, d = s.length - 1, g; d >= 0; d--)
|
|
6
|
+
(g = s[d]) && (o = (e ? g(t, l, o) : g(o)) || o);
|
|
7
|
+
return e && o && w(t, l, o), o;
|
|
8
8
|
};
|
|
9
|
-
let
|
|
9
|
+
let r = class extends h {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.variant = "info", this.rounded = "lg", this.title = "", this.description = "", this.dismissible = !1, this._dismissed = !1, this._dismissing = !1, this._dismissTimer = 0, this._iconPaths = {
|
|
12
12
|
info: "M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z",
|
|
@@ -19,8 +19,8 @@ let i = class extends h {
|
|
|
19
19
|
disconnectedCallback() {
|
|
20
20
|
super.disconnectedCallback(), clearTimeout(this._dismissTimer);
|
|
21
21
|
}
|
|
22
|
-
_handleKeydown(
|
|
23
|
-
this.dismissible &&
|
|
22
|
+
_handleKeydown(s) {
|
|
23
|
+
this.dismissible && s.key === "Escape" && (s.preventDefault(), this._dismiss());
|
|
24
24
|
}
|
|
25
25
|
_dismiss() {
|
|
26
26
|
this._dismissing = !0, this.dispatchEvent(new CustomEvent("cg-callout-dismiss", { bubbles: !0, composed: !0 })), this._dismissTimer = window.setTimeout(() => {
|
|
@@ -29,13 +29,13 @@ let i = class extends h {
|
|
|
29
29
|
}
|
|
30
30
|
render() {
|
|
31
31
|
if (this._dismissed && !this._dismissing) return n;
|
|
32
|
-
const
|
|
32
|
+
const s = this._iconPaths[this.variant] ?? this._iconPaths.info, t = this.variant === "danger" || this.variant === "warning";
|
|
33
33
|
return c`
|
|
34
|
-
<div class="callout ${this._dismissing ? "dismissing" : ""}" role=${
|
|
34
|
+
<div class="callout ${this._dismissing ? "dismissing" : ""}" role=${t ? "alert" : "note"} aria-live=${t ? "assertive" : "polite"} @keydown=${this._handleKeydown}>
|
|
35
35
|
<div class="icon">
|
|
36
36
|
<slot name="icon">
|
|
37
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
38
|
-
<path d="${
|
|
37
|
+
<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
38
|
+
<path d="${s}"></path>
|
|
39
39
|
</svg>
|
|
40
40
|
</slot>
|
|
41
41
|
</div>
|
|
@@ -56,7 +56,7 @@ let i = class extends h {
|
|
|
56
56
|
`;
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
|
-
|
|
59
|
+
r.styles = [f, p, b, v`
|
|
60
60
|
:host {
|
|
61
61
|
animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
62
62
|
}
|
|
@@ -71,7 +71,7 @@ i.styles = [p, f, b, v`
|
|
|
71
71
|
opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default),
|
|
72
72
|
transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);
|
|
73
73
|
display: flex;
|
|
74
|
-
align-items:
|
|
74
|
+
align-items: flex-start;
|
|
75
75
|
gap: var(--cg-spacing-12);
|
|
76
76
|
padding: var(--cg-spacing-12) var(--cg-spacing-16);
|
|
77
77
|
border-radius: var(--cg-border-radius-100);
|
|
@@ -80,22 +80,23 @@ i.styles = [p, f, b, v`
|
|
|
80
80
|
line-height: var(--cg-line-height-normal);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
/* Variants —
|
|
84
|
-
|
|
83
|
+
/* Variants — tinted surface + colored border for at-a-glance distinction,
|
|
84
|
+
icon + title at full accent strength (no opacity dampening). */
|
|
85
|
+
:host([variant="info"]) .callout { background: var(--cg-color-message-background-info); border-color: var(--cg-color-message-border-info); }
|
|
85
86
|
:host([variant="info"]) .icon { color: var(--cg-color-message-icon-info); }
|
|
86
|
-
:host([variant="info"]) .title { color: var(--cg-color-message-text-info);
|
|
87
|
+
:host([variant="info"]) .title { color: var(--cg-color-message-text-info); }
|
|
87
88
|
|
|
88
|
-
:host([variant="success"]) .callout { border-color: var(--cg-color-message-border-success); }
|
|
89
|
+
:host([variant="success"]) .callout { background: var(--cg-color-message-background-success); border-color: var(--cg-color-message-border-success); }
|
|
89
90
|
:host([variant="success"]) .icon { color: var(--cg-color-message-icon-success); }
|
|
90
|
-
:host([variant="success"]) .title { color: var(--cg-color-message-text-success);
|
|
91
|
+
:host([variant="success"]) .title { color: var(--cg-color-message-text-success); }
|
|
91
92
|
|
|
92
|
-
:host([variant="warning"]) .callout { border-color: var(--cg-color-message-border-warning); }
|
|
93
|
+
:host([variant="warning"]) .callout { background: var(--cg-color-message-background-warning); border-color: var(--cg-color-message-border-warning); }
|
|
93
94
|
:host([variant="warning"]) .icon { color: var(--cg-color-message-icon-warning); }
|
|
94
|
-
:host([variant="warning"]) .title { color: var(--cg-color-message-text-warning);
|
|
95
|
+
:host([variant="warning"]) .title { color: var(--cg-color-message-text-warning); }
|
|
95
96
|
|
|
96
|
-
:host([variant="danger"]) .callout { border-color: var(--cg-color-message-border-error); }
|
|
97
|
+
:host([variant="danger"]) .callout { background: var(--cg-color-message-background-error); border-color: var(--cg-color-message-border-error); }
|
|
97
98
|
:host([variant="danger"]) .icon { color: var(--cg-color-message-icon-error); }
|
|
98
|
-
:host([variant="danger"]) .title { color: var(--cg-color-message-text-error);
|
|
99
|
+
:host([variant="danger"]) .title { color: var(--cg-color-message-text-error); }
|
|
99
100
|
|
|
100
101
|
:host([variant="neutral"]) .icon,
|
|
101
102
|
:host([variant="neutral"]) .title { color: var(--cg-color-surface-container-text); }
|
|
@@ -148,13 +149,13 @@ i.styles = [p, f, b, v`
|
|
|
148
149
|
.dismiss:hover { opacity: 0.8; }
|
|
149
150
|
.dismiss:focus-visible {
|
|
150
151
|
outline: none;
|
|
151
|
-
box-shadow: 0 0 0
|
|
152
|
+
box-shadow: 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-surface-base-background), 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
|
|
152
153
|
}
|
|
153
154
|
.dismiss svg { width: var(--cg-spacing-16); height: var(--cg-spacing-16); }
|
|
154
155
|
|
|
155
156
|
@keyframes calloutExit {
|
|
156
157
|
from { opacity: 1; transform: translateY(0); }
|
|
157
|
-
to { opacity: 0; transform: translateY(-
|
|
158
|
+
to { opacity: 0; transform: translateY(calc(-1 * var(--cg-spacing-8))); }
|
|
158
159
|
}
|
|
159
160
|
.callout.dismissing {
|
|
160
161
|
animation: calloutExit var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-in) forwards;
|
|
@@ -167,31 +168,31 @@ i.styles = [p, f, b, v`
|
|
|
167
168
|
:host([rounded="lg"]) .callout { border-radius: var(--cg-border-radius-150); }
|
|
168
169
|
:host([rounded="full"]) .callout { border-radius: var(--cg-border-radius-full); }
|
|
169
170
|
`];
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
],
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
],
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
],
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
],
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
],
|
|
185
|
-
|
|
171
|
+
i([
|
|
172
|
+
a({ reflect: !0 })
|
|
173
|
+
], r.prototype, "variant", 2);
|
|
174
|
+
i([
|
|
175
|
+
a({ reflect: !0 })
|
|
176
|
+
], r.prototype, "rounded", 2);
|
|
177
|
+
i([
|
|
178
|
+
a()
|
|
179
|
+
], r.prototype, "title", 2);
|
|
180
|
+
i([
|
|
181
|
+
a()
|
|
182
|
+
], r.prototype, "description", 2);
|
|
183
|
+
i([
|
|
184
|
+
a({ type: Boolean })
|
|
185
|
+
], r.prototype, "dismissible", 2);
|
|
186
|
+
i([
|
|
186
187
|
u()
|
|
187
|
-
],
|
|
188
|
-
|
|
188
|
+
], r.prototype, "_dismissed", 2);
|
|
189
|
+
i([
|
|
189
190
|
u()
|
|
190
|
-
],
|
|
191
|
-
|
|
191
|
+
], r.prototype, "_dismissing", 2);
|
|
192
|
+
r = i([
|
|
192
193
|
m("cg-callout")
|
|
193
|
-
],
|
|
194
|
+
], r);
|
|
194
195
|
export {
|
|
195
|
-
|
|
196
|
+
r as CgCallout
|
|
196
197
|
};
|
|
197
198
|
//# sourceMappingURL=cg-callout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-callout.js","sources":["../../../src/components/cg-callout/cg-callout.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\n/**\n * <cg-callout> — Alert/notice with semantic variants.\n *\n * Better than OpenUI's Callout:\n * - Dismissible\n * - Icon auto-selected by variant (or custom via slot)\n * - Action slot (button)\n * - 5 semantic variants\n */\n@customElement('cg-callout')\nexport class CgCallout extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n :host([hidden]) { display: none; }\n\n .callout {\n transition:\n background-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n border-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n line-height: var(--cg-line-height-normal);\n }\n\n /* Variants — colored border, icon + title colored (softened), description normal */\n :host([variant=\"info\"]) .callout { border-color: var(--cg-color-message-border-info); }\n :host([variant=\"info\"]) .icon { color: var(--cg-color-message-icon-info); }\n :host([variant=\"info\"]) .title { color: var(--cg-color-message-text-info); opacity: 0.85; }\n\n :host([variant=\"success\"]) .callout { border-color: var(--cg-color-message-border-success); }\n :host([variant=\"success\"]) .icon { color: var(--cg-color-message-icon-success); }\n :host([variant=\"success\"]) .title { color: var(--cg-color-message-text-success); opacity: 0.85; }\n\n :host([variant=\"warning\"]) .callout { border-color: var(--cg-color-message-border-warning); }\n :host([variant=\"warning\"]) .icon { color: var(--cg-color-message-icon-warning); }\n :host([variant=\"warning\"]) .title { color: var(--cg-color-message-text-warning); opacity: 0.85; }\n\n :host([variant=\"danger\"]) .callout { border-color: var(--cg-color-message-border-error); }\n :host([variant=\"danger\"]) .icon { color: var(--cg-color-message-icon-error); }\n :host([variant=\"danger\"]) .title { color: var(--cg-color-message-text-error); opacity: 0.85; }\n\n :host([variant=\"neutral\"]) .icon,\n :host([variant=\"neutral\"]) .title { color: var(--cg-color-surface-container-text); }\n\n .icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .icon svg {\n width: var(--cg-icon-size-150);\n height: var(--cg-icon-size-150);\n }\n\n .content { flex: 1; min-width: 0; }\n\n .title {\n font-weight: var(--cg-font-weight-medium);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-tight);\n letter-spacing: var(--cg-letter-spacing-tight);\n }\n\n .title + .description {\n margin-top: var(--cg-spacing-2);\n }\n\n .description {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n }\n\n ::slotted([slot=\"action\"]) {\n margin-top: var(--cg-spacing-8);\n }\n\n .dismiss {\n flex-shrink: 0;\n background: none;\n border: none;\n color: currentColor;\n opacity: 0.5;\n cursor: pointer;\n padding: var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n display: flex;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .dismiss:hover { opacity: 0.8; }\n .dismiss:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--cg-color-surface-base-background), 0 0 0 4px var(--cg-color-focus-ring);\n }\n .dismiss svg { width: var(--cg-spacing-16); height: var(--cg-spacing-16); }\n\n @keyframes calloutExit {\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(-8px); }\n }\n .callout.dismissing {\n animation: calloutExit var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-in) forwards;\n }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .callout { border-radius: 0; }\n :host([rounded=\"sm\"]) .callout { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .callout { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .callout { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .callout { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) variant: 'info' | 'success' | 'warning' | 'danger' | 'neutral' = 'info';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property() override title = '';\n @property() description = '';\n @property({ type: Boolean }) dismissible = false;\n\n @state() private _dismissed = false;\n @state() private _dismissing = false;\n\n private _dismissTimer = 0;\n\n private _iconPaths: Record<string, string> = {\n info: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n success: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-2 10l2 2 4-4',\n warning: 'M12 2L2 22h20L12 2zm0 7v4m0 4h.01',\n danger: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-1 5h2v6h-2zm0 8h2v2h-2z',\n neutral: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n };\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n clearTimeout(this._dismissTimer);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.dismissible && e.key === 'Escape') {\n e.preventDefault();\n this._dismiss();\n }\n }\n\n private _dismiss() {\n this._dismissing = true;\n this.dispatchEvent(new CustomEvent('cg-callout-dismiss', { bubbles: true, composed: true }));\n this._dismissTimer = window.setTimeout(() => {\n this._dismissed = true;\n this._dismissing = false;\n this.setAttribute('hidden', '');\n }, 250);\n }\n\n override render() {\n if (this._dismissed && !this._dismissing) return nothing;\n\n const iconPath = this._iconPaths[this.variant] ?? this._iconPaths.info;\n\n return html`\n <div class=\"callout ${this._dismissing ? 'dismissing' : ''}\" role=${this.variant === 'danger' || this.variant === 'warning' ? 'alert' : 'note'} aria-live=\"polite\" @keydown=${this._handleKeydown}>\n <div class=\"icon\">\n <slot name=\"icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"${iconPath}\"></path>\n </svg>\n </slot>\n </div>\n <div class=\"content\">\n ${this.title ? html`<div class=\"title\">${this.title}</div>` : nothing}\n ${this.description ? html`<div class=\"description\">${this.description}</div>` : nothing}\n <slot></slot>\n <slot name=\"action\"></slot>\n </div>\n ${this.dismissible ? html`\n <button class=\"dismiss\" @click=${this._dismiss} aria-label=\"Dismiss\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M18 6L6 18M6 6l12 12\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-callout': CgCallout;\n }\n}\n"],"names":["CgCallout","LitElement","e","nothing","iconPath","html","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AAcO,IAAMA,IAAN,cAAwBC,EAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA,GAiHwB,KAAA,UAAiE,QACjE,KAAA,UAAgD,MACjE,KAAS,QAAQ,IACjB,KAAA,cAAc,IACG,KAAA,cAAc,IAElC,KAAQ,aAAa,IACrB,KAAQ,cAAc,IAE/B,KAAQ,gBAAgB,GAExB,KAAQ,aAAqC;AAAA,MAC3C,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAES,uBAAuB;AAC9B,UAAM,qBAAA,GACN,aAAa,KAAK,aAAa;AAAA,EACjC;AAAA,EAEQ,eAAeC,GAAkB;AACvC,IAAI,KAAK,eAAeA,EAAE,QAAQ,aAChCA,EAAE,eAAA,GACF,KAAK,SAAA;AAAA,EAET;AAAA,EAEQ,WAAW;AACjB,SAAK,cAAc,IACnB,KAAK,cAAc,IAAI,YAAY,sBAAsB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GAC3F,KAAK,gBAAgB,OAAO,WAAW,MAAM;AAC3C,WAAK,aAAa,IAClB,KAAK,cAAc,IACnB,KAAK,aAAa,UAAU,EAAE;AAAA,IAChC,GAAG,GAAG;AAAA,EACR;AAAA,EAES,SAAS;AAChB,QAAI,KAAK,cAAc,CAAC,KAAK,YAAa,QAAOC;AAEjD,UAAMC,IAAW,KAAK,WAAW,KAAK,OAAO,KAAK,KAAK,WAAW;AAElE,WAAOC;AAAA,4BACiB,KAAK,cAAc,eAAe,EAAE,UAAU,KAAK,YAAY,YAAY,KAAK,YAAY,YAAY,UAAU,MAAM,gCAAgC,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA,yBAI9KD,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKrB,KAAK,QAAQC,uBAA0B,KAAK,KAAK,WAAWF,CAAO;AAAA,YACnE,KAAK,cAAcE,6BAAgC,KAAK,WAAW,WAAWF,CAAO;AAAA;AAAA;AAAA;AAAA,UAIvF,KAAK,cAAcE;AAAA,2CACc,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAK5CF,CAAO;AAAA;AAAA;AAAA,EAGjB;AACF;AAxLaH,EACK,SAAS,CAACM,GAAWC,GAAeC,GAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA8GzE;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAjHhBX,EAiHkB,WAAA,WAAA,CAAA;AACAU,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAlHhBX,EAkHkB,WAAA,WAAA,CAAA;AACRU,EAAA;AAAA,EAApBC,EAAA;AAAS,GAnHCX,EAmHU,WAAA,SAAA,CAAA;AACTU,EAAA;AAAA,EAAXC,EAAA;AAAS,GApHCX,EAoHC,WAAA,eAAA,CAAA;AACiBU,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GArHhBX,EAqHkB,WAAA,eAAA,CAAA;AAEZU,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAvHIZ,EAuHM,WAAA,cAAA,CAAA;AACAU,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAxHIZ,EAwHM,WAAA,eAAA,CAAA;AAxHNA,IAANU,EAAA;AAAA,EADNG,EAAc,YAAY;AAAA,GACdb,CAAA;"}
|
|
1
|
+
{"version":3,"file":"cg-callout.js","sources":["../../../src/components/cg-callout/cg-callout.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\n/**\n * <cg-callout> — Alert/notice with semantic variants.\n *\n * Better than OpenUI's Callout:\n * - Dismissible\n * - Icon auto-selected by variant (or custom via slot)\n * - Action slot (button)\n * - 5 semantic variants\n */\n@customElement('cg-callout')\nexport class CgCallout extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n :host([hidden]) { display: none; }\n\n .callout {\n transition:\n background-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n border-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n display: flex;\n align-items: flex-start;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n line-height: var(--cg-line-height-normal);\n }\n\n /* Variants — tinted surface + colored border for at-a-glance distinction,\n icon + title at full accent strength (no opacity dampening). */\n :host([variant=\"info\"]) .callout { background: var(--cg-color-message-background-info); border-color: var(--cg-color-message-border-info); }\n :host([variant=\"info\"]) .icon { color: var(--cg-color-message-icon-info); }\n :host([variant=\"info\"]) .title { color: var(--cg-color-message-text-info); }\n\n :host([variant=\"success\"]) .callout { background: var(--cg-color-message-background-success); border-color: var(--cg-color-message-border-success); }\n :host([variant=\"success\"]) .icon { color: var(--cg-color-message-icon-success); }\n :host([variant=\"success\"]) .title { color: var(--cg-color-message-text-success); }\n\n :host([variant=\"warning\"]) .callout { background: var(--cg-color-message-background-warning); border-color: var(--cg-color-message-border-warning); }\n :host([variant=\"warning\"]) .icon { color: var(--cg-color-message-icon-warning); }\n :host([variant=\"warning\"]) .title { color: var(--cg-color-message-text-warning); }\n\n :host([variant=\"danger\"]) .callout { background: var(--cg-color-message-background-error); border-color: var(--cg-color-message-border-error); }\n :host([variant=\"danger\"]) .icon { color: var(--cg-color-message-icon-error); }\n :host([variant=\"danger\"]) .title { color: var(--cg-color-message-text-error); }\n\n :host([variant=\"neutral\"]) .icon,\n :host([variant=\"neutral\"]) .title { color: var(--cg-color-surface-container-text); }\n\n .icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .icon svg {\n width: var(--cg-icon-size-150);\n height: var(--cg-icon-size-150);\n }\n\n .content { flex: 1; min-width: 0; }\n\n .title {\n font-weight: var(--cg-font-weight-medium);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-tight);\n letter-spacing: var(--cg-letter-spacing-tight);\n }\n\n .title + .description {\n margin-top: var(--cg-spacing-2);\n }\n\n .description {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n }\n\n ::slotted([slot=\"action\"]) {\n margin-top: var(--cg-spacing-8);\n }\n\n .dismiss {\n flex-shrink: 0;\n background: none;\n border: none;\n color: currentColor;\n opacity: 0.5;\n cursor: pointer;\n padding: var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n display: flex;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .dismiss:hover { opacity: 0.8; }\n .dismiss:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-surface-base-background), 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n .dismiss svg { width: var(--cg-spacing-16); height: var(--cg-spacing-16); }\n\n @keyframes calloutExit {\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(calc(-1 * var(--cg-spacing-8))); }\n }\n .callout.dismissing {\n animation: calloutExit var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-in) forwards;\n }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .callout { border-radius: 0; }\n :host([rounded=\"sm\"]) .callout { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .callout { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .callout { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .callout { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) variant: 'info' | 'success' | 'warning' | 'danger' | 'neutral' = 'info';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property() override title = '';\n @property() description = '';\n @property({ type: Boolean }) dismissible = false;\n\n @state() private _dismissed = false;\n @state() private _dismissing = false;\n\n private _dismissTimer = 0;\n\n private _iconPaths: Record<string, string> = {\n info: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n success: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-2 10l2 2 4-4',\n warning: 'M12 2L2 22h20L12 2zm0 7v4m0 4h.01',\n danger: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-1 5h2v6h-2zm0 8h2v2h-2z',\n neutral: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n };\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n clearTimeout(this._dismissTimer);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.dismissible && e.key === 'Escape') {\n e.preventDefault();\n this._dismiss();\n }\n }\n\n private _dismiss() {\n this._dismissing = true;\n this.dispatchEvent(new CustomEvent('cg-callout-dismiss', { bubbles: true, composed: true }));\n this._dismissTimer = window.setTimeout(() => {\n this._dismissed = true;\n this._dismissing = false;\n this.setAttribute('hidden', '');\n }, 250);\n }\n\n override render() {\n if (this._dismissed && !this._dismissing) return nothing;\n\n const iconPath = this._iconPaths[this.variant] ?? this._iconPaths.info;\n // role=\"alert\" carries implicit aria-live=\"assertive\"; setting an explicit\n // \"polite\" on it downgrades urgent callouts. Pair role and aria-live so\n // danger/warning announce assertively and the rest stay polite.\n const isAlert = this.variant === 'danger' || this.variant === 'warning';\n\n return html`\n <div class=\"callout ${this._dismissing ? 'dismissing' : ''}\" role=${isAlert ? 'alert' : 'note'} aria-live=${isAlert ? 'assertive' : 'polite'} @keydown=${this._handleKeydown}>\n <div class=\"icon\">\n <slot name=\"icon\">\n <svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"${iconPath}\"></path>\n </svg>\n </slot>\n </div>\n <div class=\"content\">\n ${this.title ? html`<div class=\"title\">${this.title}</div>` : nothing}\n ${this.description ? html`<div class=\"description\">${this.description}</div>` : nothing}\n <slot></slot>\n <slot name=\"action\"></slot>\n </div>\n ${this.dismissible ? html`\n <button class=\"dismiss\" @click=${this._dismiss} aria-label=\"Dismiss\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M18 6L6 18M6 6l12 12\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-callout': CgCallout;\n }\n}\n"],"names":["CgCallout","LitElement","e","nothing","iconPath","isAlert","html","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AAcO,IAAMA,IAAN,cAAwBC,EAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA,GAkHwB,KAAA,UAAiE,QACjE,KAAA,UAAgD,MACjE,KAAS,QAAQ,IACjB,KAAA,cAAc,IACG,KAAA,cAAc,IAElC,KAAQ,aAAa,IACrB,KAAQ,cAAc,IAE/B,KAAQ,gBAAgB,GAExB,KAAQ,aAAqC;AAAA,MAC3C,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAES,uBAAuB;AAC9B,UAAM,qBAAA,GACN,aAAa,KAAK,aAAa;AAAA,EACjC;AAAA,EAEQ,eAAeC,GAAkB;AACvC,IAAI,KAAK,eAAeA,EAAE,QAAQ,aAChCA,EAAE,eAAA,GACF,KAAK,SAAA;AAAA,EAET;AAAA,EAEQ,WAAW;AACjB,SAAK,cAAc,IACnB,KAAK,cAAc,IAAI,YAAY,sBAAsB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GAC3F,KAAK,gBAAgB,OAAO,WAAW,MAAM;AAC3C,WAAK,aAAa,IAClB,KAAK,cAAc,IACnB,KAAK,aAAa,UAAU,EAAE;AAAA,IAChC,GAAG,GAAG;AAAA,EACR;AAAA,EAES,SAAS;AAChB,QAAI,KAAK,cAAc,CAAC,KAAK,YAAa,QAAOC;AAEjD,UAAMC,IAAW,KAAK,WAAW,KAAK,OAAO,KAAK,KAAK,WAAW,MAI5DC,IAAU,KAAK,YAAY,YAAY,KAAK,YAAY;AAE9D,WAAOC;AAAA,4BACiB,KAAK,cAAc,eAAe,EAAE,UAAUD,IAAU,UAAU,MAAM,cAAcA,IAAU,cAAc,QAAQ,aAAa,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA,yBAIzJD,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKrB,KAAK,QAAQE,uBAA0B,KAAK,KAAK,WAAWH,CAAO;AAAA,YACnE,KAAK,cAAcG,6BAAgC,KAAK,WAAW,WAAWH,CAAO;AAAA;AAAA;AAAA;AAAA,UAIvF,KAAK,cAAcG;AAAA,2CACc,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAK5CH,CAAO;AAAA;AAAA;AAAA,EAGjB;AACF;AA7LaH,EACK,SAAS,CAACO,GAAWC,GAAeC,GAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA+GzE;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAlHhBZ,EAkHkB,WAAA,WAAA,CAAA;AACAW,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAnHhBZ,EAmHkB,WAAA,WAAA,CAAA;AACRW,EAAA;AAAA,EAApBC,EAAA;AAAS,GApHCZ,EAoHU,WAAA,SAAA,CAAA;AACTW,EAAA;AAAA,EAAXC,EAAA;AAAS,GArHCZ,EAqHC,WAAA,eAAA,CAAA;AACiBW,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAtHhBZ,EAsHkB,WAAA,eAAA,CAAA;AAEZW,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAxHIb,EAwHM,WAAA,cAAA,CAAA;AACAW,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAzHIb,EAyHM,WAAA,eAAA,CAAA;AAzHNA,IAANW,EAAA;AAAA,EADNG,EAAc,YAAY;AAAA,GACdd,CAAA;"}
|