@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,24 +1,42 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as n,
|
|
3
|
-
import { h, r as
|
|
4
|
-
var
|
|
5
|
-
for (var
|
|
6
|
-
(
|
|
7
|
-
return
|
|
1
|
+
import { css as b, LitElement as d, nothing as v, html as h } from "lit";
|
|
2
|
+
import { property as n, state as p, customElement as u } from "lit/decorators.js";
|
|
3
|
+
import { h as w, r as g } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var f = Object.defineProperty, y = Object.getOwnPropertyDescriptor, t = (r, l, s, a) => {
|
|
5
|
+
for (var o = a > 1 ? void 0 : a ? y(l, s) : l, c = r.length - 1, i; c >= 0; c--)
|
|
6
|
+
(i = r[c]) && (o = (a ? i(l, s, o) : i(o)) || o);
|
|
7
|
+
return a && o && f(l, s, o), o;
|
|
8
8
|
};
|
|
9
|
-
let
|
|
9
|
+
let e = class extends d {
|
|
10
10
|
constructor() {
|
|
11
|
-
super(...arguments), this.orientation = "vertical", this.type = "hover";
|
|
11
|
+
super(...arguments), this.orientation = "vertical", this.type = "hover", this.label = "", this._scrollable = !1;
|
|
12
|
+
}
|
|
13
|
+
firstUpdated() {
|
|
14
|
+
const r = this.shadowRoot?.querySelector(".viewport");
|
|
15
|
+
r && (this._resizeObserver = new ResizeObserver(() => this._updateScrollable(r)), this._resizeObserver.observe(r), this._updateScrollable(r));
|
|
16
|
+
}
|
|
17
|
+
disconnectedCallback() {
|
|
18
|
+
super.disconnectedCallback(), this._resizeObserver?.disconnect(), this._resizeObserver = void 0;
|
|
19
|
+
}
|
|
20
|
+
_updateScrollable(r) {
|
|
21
|
+
this._scrollable = r.scrollHeight > r.clientHeight || r.scrollWidth > r.clientWidth;
|
|
12
22
|
}
|
|
13
23
|
render() {
|
|
14
|
-
return
|
|
15
|
-
<div
|
|
16
|
-
|
|
24
|
+
return h`
|
|
25
|
+
<div
|
|
26
|
+
class="viewport"
|
|
27
|
+
tabindex=${this._scrollable ? "0" : "-1"}
|
|
28
|
+
role=${this.label ? "region" : v}
|
|
29
|
+
aria-label=${this.label || v}
|
|
30
|
+
>
|
|
31
|
+
<slot @slotchange=${() => {
|
|
32
|
+
const r = this.shadowRoot?.querySelector(".viewport");
|
|
33
|
+
r && this._updateScrollable(r);
|
|
34
|
+
}}></slot>
|
|
17
35
|
</div>
|
|
18
36
|
`;
|
|
19
37
|
}
|
|
20
38
|
};
|
|
21
|
-
|
|
39
|
+
e.styles = [w, g, b`
|
|
22
40
|
:host {
|
|
23
41
|
display: block;
|
|
24
42
|
position: relative;
|
|
@@ -51,6 +69,10 @@ o.styles = [h, w, v`
|
|
|
51
69
|
background-color: var(--cg-color-surface-cards-border-strong);
|
|
52
70
|
background-clip: padding-box;
|
|
53
71
|
}
|
|
72
|
+
.viewport::-webkit-scrollbar-thumb:active {
|
|
73
|
+
background-color: var(--cg-color-surface-cards-selected-border);
|
|
74
|
+
background-clip: padding-box;
|
|
75
|
+
}
|
|
54
76
|
.viewport::-webkit-scrollbar-corner {
|
|
55
77
|
background: transparent;
|
|
56
78
|
}
|
|
@@ -72,6 +94,21 @@ o.styles = [h, w, v`
|
|
|
72
94
|
:host([type="hover"]:hover) .viewport::-webkit-scrollbar-thumb:hover {
|
|
73
95
|
background-color: var(--cg-color-surface-cards-border-strong);
|
|
74
96
|
}
|
|
97
|
+
:host([type="hover"]:hover) .viewport::-webkit-scrollbar-thumb:active {
|
|
98
|
+
background-color: var(--cg-color-surface-cards-selected-border);
|
|
99
|
+
}
|
|
100
|
+
/* Keyboard users need the position indicator too, not just mouse hover */
|
|
101
|
+
:host([type="hover"]) .viewport:focus-visible::-webkit-scrollbar-thumb {
|
|
102
|
+
background-color: var(--cg-color-surface-cards-border);
|
|
103
|
+
}
|
|
104
|
+
/* Firefox: scrollbar-color is the only channel — mirror the hover reveal */
|
|
105
|
+
:host([type="hover"]) .viewport {
|
|
106
|
+
scrollbar-color: transparent transparent;
|
|
107
|
+
}
|
|
108
|
+
:host([type="hover"]:hover) .viewport,
|
|
109
|
+
:host([type="hover"]) .viewport:focus-visible {
|
|
110
|
+
scrollbar-color: var(--cg-color-surface-cards-border) transparent;
|
|
111
|
+
}
|
|
75
112
|
|
|
76
113
|
/* Always-visible scrollbar (forces overflow even when content fits) */
|
|
77
114
|
:host([type="always"]) .viewport {
|
|
@@ -96,16 +133,22 @@ o.styles = [h, w, v`
|
|
|
96
133
|
overflow-y: auto;
|
|
97
134
|
}
|
|
98
135
|
`];
|
|
99
|
-
|
|
136
|
+
t([
|
|
100
137
|
n({ reflect: !0 })
|
|
101
|
-
],
|
|
102
|
-
|
|
138
|
+
], e.prototype, "orientation", 2);
|
|
139
|
+
t([
|
|
103
140
|
n({ reflect: !0 })
|
|
104
|
-
],
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
],
|
|
141
|
+
], e.prototype, "type", 2);
|
|
142
|
+
t([
|
|
143
|
+
n()
|
|
144
|
+
], e.prototype, "label", 2);
|
|
145
|
+
t([
|
|
146
|
+
p()
|
|
147
|
+
], e.prototype, "_scrollable", 2);
|
|
148
|
+
e = t([
|
|
149
|
+
u("cg-scroll-area")
|
|
150
|
+
], e);
|
|
108
151
|
export {
|
|
109
|
-
|
|
152
|
+
e as CgScrollArea
|
|
110
153
|
};
|
|
111
154
|
//# sourceMappingURL=cg-scroll-area.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-scroll-area.js","sources":["../../../src/components/cg-scroll-area/cg-scroll-area.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-scroll-area\n * Custom-styled scroll container with themed scrollbars.\n * Uses native scrolling with styled thumbs.\n *\n * @example\n * ```html\n * <cg-scroll-area style=\"height: 300px;\">\n * <div>Long content...</div>\n * </cg-scroll-area>\n * ```\n *\n * @slot - Scrollable content\n */\n@customElement('cg-scroll-area')\nexport class CgScrollArea extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: block;\n position: relative;\n overflow: hidden;\n }\n\n .viewport {\n width: 100%;\n height: 100%;\n overflow: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--cg-color-surface-cards-border) transparent;\n }\n\n .viewport::-webkit-scrollbar {\n width: var(--cg-component-scroll-area-scrollbar-size);\n height: var(--cg-component-scroll-area-scrollbar-size);\n }\n .viewport::-webkit-scrollbar-track {\n background: transparent;\n }\n .viewport::-webkit-scrollbar-thumb {\n background: var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-scroll-area-scrollbar-radius);\n border: var(--cg-border-width-100) solid transparent;\n background-clip: padding-box;\n transition: background-color var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .viewport::-webkit-scrollbar-thumb:hover {\n background-color: var(--cg-color-surface-cards-border-strong);\n background-clip: padding-box;\n }\n .viewport::-webkit-scrollbar-corner {\n background: transparent;\n }\n .viewport:focus-visible {\n outline: none;\n box-shadow:\n inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n /* Hide scrollbar until hover when type=\"hover\" — fade in smoothly */\n :host([type=\"hover\"]) .viewport::-webkit-scrollbar-thumb {\n background-color: transparent;\n transition: background-color var(--cg-transition-duration-slow) var(--cg-transition-easing-default);\n }\n :host([type=\"hover\"]:hover) .viewport::-webkit-scrollbar-thumb {\n background-color: var(--cg-color-surface-cards-border);\n }\n :host([type=\"hover\"]:hover) .viewport::-webkit-scrollbar-thumb:hover {\n background-color: var(--cg-color-surface-cards-border-strong);\n }\n\n /* Always-visible scrollbar (forces overflow even when content fits) */\n :host([type=\"always\"]) .viewport {\n overflow: scroll;\n }\n :host([type=\"always\"][orientation=\"vertical\"]) .viewport {\n overflow-x: hidden;\n overflow-y: scroll;\n }\n :host([type=\"always\"][orientation=\"horizontal\"]) .viewport {\n overflow-y: hidden;\n overflow-x: scroll;\n }\n\n /* Horizontal only */\n :host([orientation=\"horizontal\"]) .viewport {\n overflow-y: hidden;\n overflow-x: auto;\n }\n :host([orientation=\"vertical\"]) .viewport {\n overflow-x: hidden;\n overflow-y: auto;\n }\n `];\n\n @property({ reflect: true }) orientation: 'vertical' | 'horizontal' | 'both' = 'vertical';\n @property({ reflect: true }) type: 'auto' | 'always' | 'hover' = 'hover';\n\n override render() {\n return html`\n <div
|
|
1
|
+
{"version":3,"file":"cg-scroll-area.js","sources":["../../../src/components/cg-scroll-area/cg-scroll-area.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-scroll-area\n * Custom-styled scroll container with themed scrollbars.\n * Uses native scrolling with styled thumbs.\n *\n * @example\n * ```html\n * <cg-scroll-area style=\"height: 300px;\">\n * <div>Long content...</div>\n * </cg-scroll-area>\n * ```\n *\n * @slot - Scrollable content\n */\n@customElement('cg-scroll-area')\nexport class CgScrollArea extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: block;\n position: relative;\n overflow: hidden;\n }\n\n .viewport {\n width: 100%;\n height: 100%;\n overflow: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--cg-color-surface-cards-border) transparent;\n }\n\n .viewport::-webkit-scrollbar {\n width: var(--cg-component-scroll-area-scrollbar-size);\n height: var(--cg-component-scroll-area-scrollbar-size);\n }\n .viewport::-webkit-scrollbar-track {\n background: transparent;\n }\n .viewport::-webkit-scrollbar-thumb {\n background: var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-scroll-area-scrollbar-radius);\n border: var(--cg-border-width-100) solid transparent;\n background-clip: padding-box;\n transition: background-color var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n .viewport::-webkit-scrollbar-thumb:hover {\n background-color: var(--cg-color-surface-cards-border-strong);\n background-clip: padding-box;\n }\n .viewport::-webkit-scrollbar-thumb:active {\n background-color: var(--cg-color-surface-cards-selected-border);\n background-clip: padding-box;\n }\n .viewport::-webkit-scrollbar-corner {\n background: transparent;\n }\n .viewport:focus-visible {\n outline: none;\n box-shadow:\n inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n /* Hide scrollbar until hover when type=\"hover\" — fade in smoothly */\n :host([type=\"hover\"]) .viewport::-webkit-scrollbar-thumb {\n background-color: transparent;\n transition: background-color var(--cg-transition-duration-slow) var(--cg-transition-easing-default);\n }\n :host([type=\"hover\"]:hover) .viewport::-webkit-scrollbar-thumb {\n background-color: var(--cg-color-surface-cards-border);\n }\n :host([type=\"hover\"]:hover) .viewport::-webkit-scrollbar-thumb:hover {\n background-color: var(--cg-color-surface-cards-border-strong);\n }\n :host([type=\"hover\"]:hover) .viewport::-webkit-scrollbar-thumb:active {\n background-color: var(--cg-color-surface-cards-selected-border);\n }\n /* Keyboard users need the position indicator too, not just mouse hover */\n :host([type=\"hover\"]) .viewport:focus-visible::-webkit-scrollbar-thumb {\n background-color: var(--cg-color-surface-cards-border);\n }\n /* Firefox: scrollbar-color is the only channel — mirror the hover reveal */\n :host([type=\"hover\"]) .viewport {\n scrollbar-color: transparent transparent;\n }\n :host([type=\"hover\"]:hover) .viewport,\n :host([type=\"hover\"]) .viewport:focus-visible {\n scrollbar-color: var(--cg-color-surface-cards-border) transparent;\n }\n\n /* Always-visible scrollbar (forces overflow even when content fits) */\n :host([type=\"always\"]) .viewport {\n overflow: scroll;\n }\n :host([type=\"always\"][orientation=\"vertical\"]) .viewport {\n overflow-x: hidden;\n overflow-y: scroll;\n }\n :host([type=\"always\"][orientation=\"horizontal\"]) .viewport {\n overflow-y: hidden;\n overflow-x: scroll;\n }\n\n /* Horizontal only */\n :host([orientation=\"horizontal\"]) .viewport {\n overflow-y: hidden;\n overflow-x: auto;\n }\n :host([orientation=\"vertical\"]) .viewport {\n overflow-x: hidden;\n overflow-y: auto;\n }\n `];\n\n @property({ reflect: true }) orientation: 'vertical' | 'horizontal' | 'both' = 'vertical';\n @property({ reflect: true }) type: 'auto' | 'always' | 'hover' = 'hover';\n /** Accessible name for the scroll region (role=\"region\" is only emitted\n * when named — an anonymous focusable container is an AT dead stop). */\n @property() label = '';\n\n @state() private _scrollable = false;\n\n private _resizeObserver: ResizeObserver | undefined;\n\n override firstUpdated(): void {\n const viewport = this.shadowRoot?.querySelector<HTMLElement>('.viewport');\n if (!viewport) return;\n this._resizeObserver = new ResizeObserver(() => this._updateScrollable(viewport));\n this._resizeObserver.observe(viewport);\n this._updateScrollable(viewport);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n this._resizeObserver = undefined;\n }\n\n private _updateScrollable(viewport: HTMLElement): void {\n this._scrollable =\n viewport.scrollHeight > viewport.clientHeight ||\n viewport.scrollWidth > viewport.clientWidth;\n }\n\n override render() {\n return html`\n <div\n class=\"viewport\"\n tabindex=${this._scrollable ? '0' : '-1'}\n role=${this.label ? 'region' : nothing}\n aria-label=${this.label || nothing}\n >\n <slot @slotchange=${() => {\n const viewport = this.shadowRoot?.querySelector<HTMLElement>('.viewport');\n if (viewport) this._updateScrollable(viewport);\n }}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-scroll-area': CgScrollArea;\n }\n}\n"],"names":["CgScrollArea","LitElement","viewport","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AAmBO,IAAMA,IAAN,cAA2BC,EAAW;AAAA,EAAtC,cAAA;AAAA,UAAA,GAAA,SAAA,GAmGwB,KAAA,cAAkD,YAClD,KAAA,OAAoC,SAGrD,KAAA,QAAQ,IAEX,KAAQ,cAAc;AAAA,EAAA;AAAA,EAItB,eAAqB;AAC5B,UAAMC,IAAW,KAAK,YAAY,cAA2B,WAAW;AACxE,IAAKA,MACL,KAAK,kBAAkB,IAAI,eAAe,MAAM,KAAK,kBAAkBA,CAAQ,CAAC,GAChF,KAAK,gBAAgB,QAAQA,CAAQ,GACrC,KAAK,kBAAkBA,CAAQ;AAAA,EACjC;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,iBAAiB,WAAA,GACtB,KAAK,kBAAkB;AAAA,EACzB;AAAA,EAEQ,kBAAkBA,GAA6B;AACrD,SAAK,cACHA,EAAS,eAAeA,EAAS,gBACjCA,EAAS,cAAcA,EAAS;AAAA,EACpC;AAAA,EAES,SAAS;AAChB,WAAOC;AAAA;AAAA;AAAA,mBAGQ,KAAK,cAAc,MAAM,IAAI;AAAA,eACjC,KAAK,QAAQ,WAAWC,CAAO;AAAA,qBACzB,KAAK,SAASA,CAAO;AAAA;AAAA,4BAEd,MAAM;AACxB,YAAMF,IAAW,KAAK,YAAY,cAA2B,WAAW;AACxE,MAAIA,KAAU,KAAK,kBAAkBA,CAAQ;AAAA,IAC/C,CAAC;AAAA;AAAA;AAAA,EAGP;AACF;AAhJaF,EACK,SAAS,CAACK,GAAWC,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgGnD;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAnGhBT,EAmGkB,WAAA,eAAA,CAAA;AACAQ,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GApGhBT,EAoGkB,WAAA,QAAA,CAAA;AAGjBQ,EAAA;AAAA,EAAXC,EAAA;AAAS,GAvGCT,EAuGC,WAAA,SAAA,CAAA;AAEKQ,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAzGIV,EAyGM,WAAA,eAAA,CAAA;AAzGNA,IAANQ,EAAA;AAAA,EADNG,EAAc,gBAAgB;AAAA,GAClBX,CAAA;"}
|
|
@@ -12,6 +12,7 @@ export interface SegmentOption {
|
|
|
12
12
|
* @example
|
|
13
13
|
* ```html
|
|
14
14
|
* <cg-segmented-control
|
|
15
|
+
* label="View period"
|
|
15
16
|
* value="day"
|
|
16
17
|
* .options=${[
|
|
17
18
|
* { label: 'Day', value: 'day' },
|
|
@@ -22,6 +23,7 @@ export interface SegmentOption {
|
|
|
22
23
|
* ```
|
|
23
24
|
*
|
|
24
25
|
* @fires {CustomEvent<{value: string}>} cg-segmented-change
|
|
26
|
+
* @attr {string} label - Accessible name for the radiogroup. Always provide one.
|
|
25
27
|
*/
|
|
26
28
|
export declare class CgSegmentedControl extends LitElement {
|
|
27
29
|
static styles: import('lit').CSSResult[];
|
|
@@ -31,6 +33,8 @@ export declare class CgSegmentedControl extends LitElement {
|
|
|
31
33
|
options: SegmentOption[];
|
|
32
34
|
value: string;
|
|
33
35
|
name: string;
|
|
36
|
+
/** Accessible name for the radiogroup (e.g. "View period"). Strongly recommended. */
|
|
37
|
+
label: string;
|
|
34
38
|
disabled: boolean;
|
|
35
39
|
size: 'sm' | 'md' | 'lg';
|
|
36
40
|
full: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-segmented-control.d.ts","sourceRoot":"","sources":["../../../src/components/cg-segmented-control/cg-segmented-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"cg-segmented-control.d.ts","sourceRoot":"","sources":["../../../src/components/cg-segmented-control/cg-segmented-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IAChD,OAAgB,MAAM,4BAuFnB;IAEH,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAmB;;IASX,OAAO,EAAE,aAAa,EAAE,CAAM;IAC7C,KAAK,SAAM;IACM,IAAI,SAAM;IACvC,qFAAqF;IACzE,KAAK,SAAM;IACqB,QAAQ,UAAS;IAChC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IACjB,IAAI,UAAS;IAEzD,OAAO,CAAC,eAAe,CAA+B;IAE7C,iBAAiB,IAAI,IAAI;IAUzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU5C,YAAY,IAAI,IAAI;IAI7B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,cAAc;IA8Cb,MAAM;CAsBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { css as
|
|
1
|
+
import { css as u, LitElement as h, nothing as g, html as d } from "lit";
|
|
2
2
|
import { property as a, customElement as p } from "lit/decorators.js";
|
|
3
|
-
import { a as
|
|
4
|
-
var
|
|
5
|
-
for (var
|
|
6
|
-
(l = e[c]) && (
|
|
7
|
-
return
|
|
3
|
+
import { a as f, r as v } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var m = Object.defineProperty, b = Object.getOwnPropertyDescriptor, r = (e, i, s, t) => {
|
|
5
|
+
for (var o = t > 1 ? void 0 : t ? b(i, s) : i, c = e.length - 1, l; c >= 0; c--)
|
|
6
|
+
(l = e[c]) && (o = (t ? l(i, s, o) : l(o)) || o);
|
|
7
|
+
return t && o && m(i, s, o), o;
|
|
8
8
|
};
|
|
9
|
-
let n = class extends
|
|
9
|
+
let n = class extends h {
|
|
10
10
|
constructor() {
|
|
11
|
-
super(), this.options = [], this.value = "", this.name = "", this.disabled = !1, this.size = "md", this.full = !1, this._resizeObserver = null, typeof this.attachInternals == "function" && (this._internals = this.attachInternals());
|
|
11
|
+
super(), this.options = [], this.value = "", this.name = "", this.label = "", this.disabled = !1, this.size = "md", this.full = !1, this._resizeObserver = null, typeof this.attachInternals == "function" && (this._internals = this.attachInternals());
|
|
12
12
|
}
|
|
13
13
|
connectedCallback() {
|
|
14
14
|
super.connectedCallback(), this._resizeObserver = new ResizeObserver(() => this._updateIndicator()), requestAnimationFrame(() => {
|
|
@@ -26,12 +26,15 @@ let n = class extends u {
|
|
|
26
26
|
requestAnimationFrame(() => this._updateIndicator());
|
|
27
27
|
}
|
|
28
28
|
_updateIndicator() {
|
|
29
|
-
const e = this.
|
|
30
|
-
if (e
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
const e = this.shadowRoot?.querySelector(".indicator");
|
|
30
|
+
if (!e) return;
|
|
31
|
+
const i = this.options.findIndex((o) => o.value === this.value);
|
|
32
|
+
if (i < 0) {
|
|
33
|
+
e.style.visibility = "hidden";
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const t = this.shadowRoot?.querySelectorAll(".segment")?.[i];
|
|
37
|
+
t && (e.style.visibility = "visible", e.style.width = `${t.offsetWidth}px`, e.style.transform = `translateX(${t.offsetLeft}px)`);
|
|
35
38
|
}
|
|
36
39
|
_select(e) {
|
|
37
40
|
e.disabled || this.disabled || (this.value = e.value, this.dispatchEvent(new CustomEvent("cg-segmented-change", {
|
|
@@ -42,36 +45,61 @@ let n = class extends u {
|
|
|
42
45
|
}
|
|
43
46
|
_handleKeydown(e) {
|
|
44
47
|
if (this.disabled) return;
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
let
|
|
48
|
-
if (e.key === "ArrowLeft" || e.key === "ArrowUp"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
let i = this.options.findIndex((t) => t.value === this.value);
|
|
49
|
+
if (i < 0 && (i = this.options.findIndex((t) => !t.disabled)), i < 0) return;
|
|
50
|
+
let s = i;
|
|
51
|
+
if (e.key === "ArrowLeft" || e.key === "ArrowUp" || e.key === "ArrowRight" || e.key === "ArrowDown") {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
const t = e.key === "ArrowLeft" || e.key === "ArrowUp" ? -1 : 1;
|
|
54
|
+
for (let o = 1; o <= this.options.length; o++) {
|
|
55
|
+
const c = (i + t * o + this.options.length) % this.options.length, l = this.options[c];
|
|
56
|
+
if (l && !l.disabled) {
|
|
57
|
+
s = c;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} else if (e.key === "Home") {
|
|
62
|
+
e.preventDefault();
|
|
63
|
+
const t = this.options.findIndex((o) => !o.disabled);
|
|
64
|
+
t >= 0 && (s = t);
|
|
65
|
+
} else if (e.key === "End") {
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
for (let t = this.options.length - 1; t >= 0; t--) {
|
|
68
|
+
const o = this.options[t];
|
|
69
|
+
if (o && !o.disabled) {
|
|
70
|
+
s = t;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (s !== i) {
|
|
76
|
+
const t = this.options[s];
|
|
77
|
+
t && !t.disabled && (this._select(t), this.updateComplete.then(() => {
|
|
78
|
+
this.shadowRoot?.querySelectorAll(".segment")?.[s]?.focus();
|
|
52
79
|
}));
|
|
53
80
|
}
|
|
54
81
|
}
|
|
55
82
|
render() {
|
|
83
|
+
const e = this.options.findIndex((s) => s.value === this.value), i = e >= 0 ? e : this.options.findIndex((s) => !s.disabled);
|
|
56
84
|
return d`
|
|
57
|
-
<div class="track" role="radiogroup" aria-disabled=${this.disabled ? "true" : "false"} @keydown=${this._handleKeydown}>
|
|
85
|
+
<div class="track" role="radiogroup" aria-label=${this.label || g} aria-disabled=${this.disabled ? "true" : "false"} @keydown=${this._handleKeydown}>
|
|
58
86
|
<span class="indicator"></span>
|
|
59
|
-
${this.options.map((
|
|
87
|
+
${this.options.map((s, t) => d`
|
|
60
88
|
<button
|
|
61
89
|
type="button"
|
|
62
90
|
class="segment"
|
|
63
91
|
role="radio"
|
|
64
|
-
aria-checked=${
|
|
65
|
-
tabindex=${
|
|
66
|
-
?disabled=${
|
|
67
|
-
@click=${() => this._select(
|
|
68
|
-
>${
|
|
92
|
+
aria-checked=${s.value === this.value ? "true" : "false"}
|
|
93
|
+
tabindex=${t === i ? "0" : "-1"}
|
|
94
|
+
?disabled=${s.disabled || this.disabled}
|
|
95
|
+
@click=${() => this._select(s)}
|
|
96
|
+
>${s.icon ? d`<cg-icon name=${s.icon}></cg-icon>` : g}${s.label}</button>
|
|
69
97
|
`)}
|
|
70
98
|
</div>
|
|
71
99
|
`;
|
|
72
100
|
}
|
|
73
101
|
};
|
|
74
|
-
n.styles = [
|
|
102
|
+
n.styles = [f, v, u`
|
|
75
103
|
:host {
|
|
76
104
|
display: inline-flex;
|
|
77
105
|
}
|
|
@@ -120,7 +148,9 @@ n.styles = [h, f, g`
|
|
|
120
148
|
font-size: var(--cg-font-size-sm);
|
|
121
149
|
font-weight: var(--cg-font-weight-medium);
|
|
122
150
|
cursor: pointer;
|
|
123
|
-
transition:
|
|
151
|
+
transition:
|
|
152
|
+
color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),
|
|
153
|
+
transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
124
154
|
z-index: 1;
|
|
125
155
|
border-radius: inherit;
|
|
126
156
|
flex: 1;
|
|
@@ -138,9 +168,12 @@ n.styles = [h, f, g`
|
|
|
138
168
|
0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
|
|
139
169
|
}
|
|
140
170
|
.segment:disabled {
|
|
141
|
-
opacity:
|
|
171
|
+
opacity: var(--cg-opacity-50);
|
|
142
172
|
cursor: not-allowed;
|
|
143
173
|
}
|
|
174
|
+
.segment:active:not(:disabled) {
|
|
175
|
+
transform: scale(var(--cg-interaction-press-scale));
|
|
176
|
+
}
|
|
144
177
|
|
|
145
178
|
/* Sizes */
|
|
146
179
|
:host([size="sm"]) .segment {
|
|
@@ -155,25 +188,28 @@ n.styles = [h, f, g`
|
|
|
155
188
|
}
|
|
156
189
|
`];
|
|
157
190
|
n.formAssociated = !0;
|
|
158
|
-
|
|
191
|
+
r([
|
|
159
192
|
a({ type: Array })
|
|
160
193
|
], n.prototype, "options", 2);
|
|
161
|
-
|
|
194
|
+
r([
|
|
162
195
|
a()
|
|
163
196
|
], n.prototype, "value", 2);
|
|
164
|
-
|
|
165
|
-
a()
|
|
197
|
+
r([
|
|
198
|
+
a({ reflect: !0 })
|
|
166
199
|
], n.prototype, "name", 2);
|
|
167
|
-
|
|
200
|
+
r([
|
|
201
|
+
a()
|
|
202
|
+
], n.prototype, "label", 2);
|
|
203
|
+
r([
|
|
168
204
|
a({ type: Boolean, reflect: !0 })
|
|
169
205
|
], n.prototype, "disabled", 2);
|
|
170
|
-
|
|
206
|
+
r([
|
|
171
207
|
a({ reflect: !0 })
|
|
172
208
|
], n.prototype, "size", 2);
|
|
173
|
-
|
|
209
|
+
r([
|
|
174
210
|
a({ type: Boolean, reflect: !0 })
|
|
175
211
|
], n.prototype, "full", 2);
|
|
176
|
-
n =
|
|
212
|
+
n = r([
|
|
177
213
|
p("cg-segmented-control")
|
|
178
214
|
], n);
|
|
179
215
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-segmented-control.js","sources":["../../../src/components/cg-segmented-control/cg-segmented-control.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\nexport interface SegmentOption {\n label: string;\n value: string;\n icon?: string;\n disabled?: boolean;\n}\n\n/**\n * @element cg-segmented-control\n * iOS-style pill selector with animated indicator. Single value selection.\n *\n * @example\n * ```html\n * <cg-segmented-control\n * value=\"day\"\n * .options=${[\n * { label: 'Day', value: 'day' },\n * { label: 'Week', value: 'week' },\n * { label: 'Month', value: 'month' },\n * ]}\n * ></cg-segmented-control>\n * ```\n *\n * @fires {CustomEvent<{value: string}>} cg-segmented-change\n */\n@customElement('cg-segmented-control')\nexport class CgSegmentedControl extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n :host {\n display: inline-flex;\n }\n\n .track {\n display: inline-flex;\n position: relative;\n padding: var(--cg-component-segmented-control-padding);\n background: var(--cg-color-action-secondary-background-default);\n border: var(--cg-border-width-50) solid var(--cg-color-action-secondary-border-default);\n border-radius: var(--cg-component-segmented-control-radius);\n gap: var(--cg-spacing-2);\n }\n :host([full]) .track {\n display: flex;\n width: 100%;\n }\n\n .indicator {\n position: absolute;\n top: var(--cg-component-segmented-control-padding);\n left: 0;\n height: calc(100% - 2 * var(--cg-component-segmented-control-padding));\n box-sizing: border-box;\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-action-secondary-border-default);\n border-radius: calc(var(--cg-component-segmented-control-radius) - var(--cg-component-segmented-control-padding));\n transition:\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-in-out),\n width var(--cg-transition-duration-default) var(--cg-transition-easing-ease-in-out);\n pointer-events: none;\n }\n\n .segment {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--cg-spacing-6);\n height: calc(var(--cg-component-segmented-control-height-md) - 2 * var(--cg-component-segmented-control-padding));\n padding: 0 var(--cg-spacing-16);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n font-family: inherit;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n transition: color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n z-index: 1;\n border-radius: inherit;\n flex: 1;\n }\n .segment:hover:not(:disabled) {\n color: var(--cg-color-surface-base-text);\n }\n .segment[aria-checked=\"true\"] {\n color: var(--cg-color-surface-base-text);\n }\n .segment: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 .segment:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n }\n\n /* Sizes */\n :host([size=\"sm\"]) .segment {\n height: calc(var(--cg-component-segmented-control-height-sm) - 2 * var(--cg-component-segmented-control-padding));\n padding: 0 var(--cg-spacing-12);\n font-size: var(--cg-font-size-xs);\n }\n :host([size=\"lg\"]) .segment {\n height: calc(var(--cg-component-segmented-control-height-lg) - 2 * var(--cg-component-segmented-control-padding));\n padding: 0 var(--cg-spacing-20);\n font-size: var(--cg-font-size-base);\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({ type: Array }) options: SegmentOption[] = [];\n @property() value = '';\n @property() name = '';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ type: Boolean, reflect: true }) full = false;\n\n private _resizeObserver: ResizeObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Re-compute indicator when container resizes (e.g. full width on mobile)\n this._resizeObserver = new ResizeObserver(() => this._updateIndicator());\n requestAnimationFrame(() => {\n const track = this.shadowRoot?.querySelector('.track');\n if (track && this._resizeObserver) this._resizeObserver.observe(track);\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n }\n if (changed.has('value') || changed.has('options') || changed.has('size')) {\n // Wait for DOM to settle before measuring\n requestAnimationFrame(() => this._updateIndicator());\n }\n }\n\n override firstUpdated(): void {\n requestAnimationFrame(() => this._updateIndicator());\n }\n\n private _updateIndicator(): void {\n const activeIdx = this.options.findIndex(o => o.value === this.value);\n if (activeIdx < 0) return;\n const segments = this.shadowRoot?.querySelectorAll<HTMLElement>('.segment');\n const indicator = this.shadowRoot?.querySelector<HTMLElement>('.indicator');\n if (!segments || !indicator || !segments[activeIdx]) return;\n const seg = segments[activeIdx];\n indicator.style.width = `${seg.offsetWidth}px`;\n indicator.style.transform = `translateX(${seg.offsetLeft}px)`;\n }\n\n private _select(option: SegmentOption): void {\n if (option.disabled || this.disabled) return;\n this.value = option.value;\n this.dispatchEvent(new CustomEvent('cg-segmented-change', {\n detail: { value: option.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleKeydown(e: KeyboardEvent): void {\n if (this.disabled) return;\n const current = this.options.findIndex(o => o.value === this.value);\n if (current < 0) return;\n let next = current;\n if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n next = (current - 1 + this.options.length) % this.options.length;\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n next = (current + 1) % this.options.length;\n } else if (e.key === 'Home') {\n e.preventDefault();\n next = 0;\n } else if (e.key === 'End') {\n e.preventDefault();\n next = this.options.length - 1;\n }\n if (next !== current) {\n const option = this.options[next];\n if (option && !option.disabled) {\n this._select(option);\n // Roving tabindex: focus the newly-selected segment so Tab tracking stays consistent.\n this.updateComplete.then(() => {\n const segments = this.shadowRoot?.querySelectorAll<HTMLElement>('.segment');\n segments?.[next]?.focus();\n });\n }\n }\n }\n\n override render() {\n return html`\n <div class=\"track\" role=\"radiogroup\" aria-disabled=${this.disabled ? 'true' : 'false'} @keydown=${this._handleKeydown}>\n <span class=\"indicator\"></span>\n ${this.options.map(option => html`\n <button\n type=\"button\"\n class=\"segment\"\n role=\"radio\"\n aria-checked=${option.value === this.value ? 'true' : 'false'}\n tabindex=${option.value === this.value ? '0' : '-1'}\n ?disabled=${option.disabled || this.disabled}\n @click=${() => this._select(option)}\n >${option.label}</button>\n `)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-segmented-control': CgSegmentedControl;\n }\n}\n"],"names":["CgSegmentedControl","LitElement","track","changed","activeIdx","o","segments","indicator","seg","option","current","next","html","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-segmented-control.js","sources":["../../../src/components/cg-segmented-control/cg-segmented-control.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\nexport interface SegmentOption {\n label: string;\n value: string;\n icon?: string;\n disabled?: boolean;\n}\n\n/**\n * @element cg-segmented-control\n * iOS-style pill selector with animated indicator. Single value selection.\n *\n * @example\n * ```html\n * <cg-segmented-control\n * label=\"View period\"\n * value=\"day\"\n * .options=${[\n * { label: 'Day', value: 'day' },\n * { label: 'Week', value: 'week' },\n * { label: 'Month', value: 'month' },\n * ]}\n * ></cg-segmented-control>\n * ```\n *\n * @fires {CustomEvent<{value: string}>} cg-segmented-change\n * @attr {string} label - Accessible name for the radiogroup. Always provide one.\n */\n@customElement('cg-segmented-control')\nexport class CgSegmentedControl extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n :host {\n display: inline-flex;\n }\n\n .track {\n display: inline-flex;\n position: relative;\n padding: var(--cg-component-segmented-control-padding);\n background: var(--cg-color-action-secondary-background-default);\n border: var(--cg-border-width-50) solid var(--cg-color-action-secondary-border-default);\n border-radius: var(--cg-component-segmented-control-radius);\n gap: var(--cg-spacing-2);\n }\n :host([full]) .track {\n display: flex;\n width: 100%;\n }\n\n .indicator {\n position: absolute;\n top: var(--cg-component-segmented-control-padding);\n left: 0;\n height: calc(100% - 2 * var(--cg-component-segmented-control-padding));\n box-sizing: border-box;\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-action-secondary-border-default);\n border-radius: calc(var(--cg-component-segmented-control-radius) - var(--cg-component-segmented-control-padding));\n transition:\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-in-out),\n width var(--cg-transition-duration-default) var(--cg-transition-easing-ease-in-out);\n pointer-events: none;\n }\n\n .segment {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--cg-spacing-6);\n height: calc(var(--cg-component-segmented-control-height-md) - 2 * var(--cg-component-segmented-control-padding));\n padding: 0 var(--cg-spacing-16);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n font-family: inherit;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n transition:\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 z-index: 1;\n border-radius: inherit;\n flex: 1;\n }\n .segment:hover:not(:disabled) {\n color: var(--cg-color-surface-base-text);\n }\n .segment[aria-checked=\"true\"] {\n color: var(--cg-color-surface-base-text);\n }\n .segment: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 .segment:disabled {\n opacity: var(--cg-opacity-50);\n cursor: not-allowed;\n }\n .segment:active:not(:disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* Sizes */\n :host([size=\"sm\"]) .segment {\n height: calc(var(--cg-component-segmented-control-height-sm) - 2 * var(--cg-component-segmented-control-padding));\n padding: 0 var(--cg-spacing-12);\n font-size: var(--cg-font-size-xs);\n }\n :host([size=\"lg\"]) .segment {\n height: calc(var(--cg-component-segmented-control-height-lg) - 2 * var(--cg-component-segmented-control-padding));\n padding: 0 var(--cg-spacing-20);\n font-size: var(--cg-font-size-base);\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({ type: Array }) options: SegmentOption[] = [];\n @property() value = '';\n @property({ reflect: true }) name = '';\n /** Accessible name for the radiogroup (e.g. \"View period\"). Strongly recommended. */\n @property() label = '';\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ type: Boolean, reflect: true }) full = false;\n\n private _resizeObserver: ResizeObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Re-compute indicator when container resizes (e.g. full width on mobile)\n this._resizeObserver = new ResizeObserver(() => this._updateIndicator());\n requestAnimationFrame(() => {\n const track = this.shadowRoot?.querySelector('.track');\n if (track && this._resizeObserver) this._resizeObserver.observe(track);\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n }\n if (changed.has('value') || changed.has('options') || changed.has('size')) {\n // Wait for DOM to settle before measuring\n requestAnimationFrame(() => this._updateIndicator());\n }\n }\n\n override firstUpdated(): void {\n requestAnimationFrame(() => this._updateIndicator());\n }\n\n private _updateIndicator(): void {\n const indicator = this.shadowRoot?.querySelector<HTMLElement>('.indicator');\n if (!indicator) return;\n const activeIdx = this.options.findIndex(o => o.value === this.value);\n if (activeIdx < 0) {\n // No active option: hide the indicator so its border doesn't render as a sliver at left:0.\n indicator.style.visibility = 'hidden';\n return;\n }\n const segments = this.shadowRoot?.querySelectorAll<HTMLElement>('.segment');\n const seg = segments?.[activeIdx];\n if (!seg) return;\n indicator.style.visibility = 'visible';\n indicator.style.width = `${seg.offsetWidth}px`;\n indicator.style.transform = `translateX(${seg.offsetLeft}px)`;\n }\n\n private _select(option: SegmentOption): void {\n if (option.disabled || this.disabled) return;\n this.value = option.value;\n this.dispatchEvent(new CustomEvent('cg-segmented-change', {\n detail: { value: option.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleKeydown(e: KeyboardEvent): void {\n if (this.disabled) return;\n let current = this.options.findIndex(o => o.value === this.value);\n // No selection yet: navigate relative to the first enabled option (roving-focus seed).\n if (current < 0) current = this.options.findIndex(o => !o.disabled);\n if (current < 0) return;\n let next = current;\n if (e.key === 'ArrowLeft' || e.key === 'ArrowUp' || e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const dir = e.key === 'ArrowLeft' || e.key === 'ArrowUp' ? -1 : 1;\n // Scan for the next enabled option, skipping disabled segments (WAI-ARIA radio-group pattern).\n for (let i = 1; i <= this.options.length; i++) {\n const idx = (current + dir * i + this.options.length) % this.options.length;\n const candidate = this.options[idx];\n if (candidate && !candidate.disabled) {\n next = idx;\n break;\n }\n }\n } else if (e.key === 'Home') {\n e.preventDefault();\n const idx = this.options.findIndex(o => !o.disabled);\n if (idx >= 0) next = idx;\n } else if (e.key === 'End') {\n e.preventDefault();\n for (let i = this.options.length - 1; i >= 0; i--) {\n const candidate = this.options[i];\n if (candidate && !candidate.disabled) {\n next = i;\n break;\n }\n }\n }\n if (next !== current) {\n const option = this.options[next];\n if (option && !option.disabled) {\n this._select(option);\n // Roving tabindex: focus the newly-selected segment so Tab tracking stays consistent.\n this.updateComplete.then(() => {\n const segments = this.shadowRoot?.querySelectorAll<HTMLElement>('.segment');\n segments?.[next]?.focus();\n });\n }\n }\n }\n\n override render() {\n const activeIdx = this.options.findIndex(o => o.value === this.value);\n // Roving tabindex: when nothing is selected, seed focus on the first enabled segment\n // so the control stays keyboard-reachable.\n const focusIdx = activeIdx >= 0 ? activeIdx : this.options.findIndex(o => !o.disabled);\n return html`\n <div class=\"track\" role=\"radiogroup\" aria-label=${this.label || nothing} aria-disabled=${this.disabled ? 'true' : 'false'} @keydown=${this._handleKeydown}>\n <span class=\"indicator\"></span>\n ${this.options.map((option, i) => html`\n <button\n type=\"button\"\n class=\"segment\"\n role=\"radio\"\n aria-checked=${option.value === this.value ? 'true' : 'false'}\n tabindex=${i === focusIdx ? '0' : '-1'}\n ?disabled=${option.disabled || this.disabled}\n @click=${() => this._select(option)}\n >${option.icon ? html`<cg-icon name=${option.icon}></cg-icon>` : nothing}${option.label}</button>\n `)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-segmented-control': CgSegmentedControl;\n }\n}\n"],"names":["CgSegmentedControl","LitElement","track","changed","indicator","activeIdx","seg","option","current","o","next","dir","i","idx","candidate","focusIdx","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ import { LitElement, PropertyValues } from 'lit';
|
|
|
17
17
|
* @cssprop [--cg-color-input-background-default=#18181b] - Trigger background
|
|
18
18
|
* @cssprop [--cg-color-surface-container-background=#18181b] - Dropdown panel background
|
|
19
19
|
* @cssprop [--cg-color-focus-ring] - Focus/hover border accent
|
|
20
|
-
* @cssprop [--cg-
|
|
20
|
+
* @cssprop [--cg-component-select-radius] - Border radius for trigger and dropdown (default rounded="md")
|
|
21
21
|
*/
|
|
22
22
|
/** Option entry for cg-select, with value, display label, and optional disabled state. */
|
|
23
23
|
export interface SelectOption {
|
|
@@ -49,12 +49,14 @@ export declare class CgSelect extends LitElement {
|
|
|
49
49
|
private _open;
|
|
50
50
|
private _search;
|
|
51
51
|
private _highlighted;
|
|
52
|
+
private _openPanel;
|
|
52
53
|
private _toggle;
|
|
53
54
|
private _close;
|
|
54
55
|
private _select;
|
|
55
56
|
private _filteredOptions;
|
|
57
|
+
private _scrollHighlightedIntoView;
|
|
56
58
|
private _handleKeydown;
|
|
57
|
-
private
|
|
59
|
+
private _disposeOutsideClick;
|
|
58
60
|
connectedCallback(): void;
|
|
59
61
|
disconnectedCallback(): void;
|
|
60
62
|
render(): import('lit').TemplateResult<1>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-select.d.ts","sourceRoot":"","sources":["../../../src/components/cg-select/cg-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cg-select.d.ts","sourceRoot":"","sources":["../../../src/components/cg-select/cg-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1E;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,0FAA0F;AAC1F,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBACa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAA+B;;IASjD,OAAgB,MAAM,4BA8HnB;IAE0B,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACvD,OAAO,EAAE,YAAY,EAAE,CAAM;IAC5C,KAAK,SAAM;IACX,KAAK,SAAM;IACX,WAAW,SAAe;IAC1B,IAAI,SAAM;IACO,QAAQ,UAAS;IACF,KAAK,UAAS;IACd,OAAO,UAAS;IAChB,OAAO,UAAS;IAC/B,UAAU,UAAS;IACnB,QAAQ,UAAS;IAErC,OAAO,CAAC,OAAO,EAAE,cAAc;IAcxC,iBAAiB;IAIjB,wBAAwB,CAAC,KAAK,EAAE,MAAM;IAI7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,YAAY,CAAM;IAEnC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,oBAAoB,CAA6B;IAEhD,iBAAiB;IAMjB,oBAAoB;IAMpB,MAAM;CA6DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,WAAW,EAAE,QAAQ,CAAC;KAAE;CAC3D"}
|