@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,27 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as
|
|
3
|
-
import { r as v } from "../../chunks/premium.css-
|
|
4
|
-
import { F as b } from "../../chunks/focus-trap-
|
|
5
|
-
var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (t, e,
|
|
6
|
-
for (var
|
|
7
|
-
(
|
|
8
|
-
return
|
|
1
|
+
import { css as c, LitElement as g, nothing as n, html as p } from "lit";
|
|
2
|
+
import { property as h, state as f, customElement as u } from "lit/decorators.js";
|
|
3
|
+
import { r as v } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
import { F as b } from "../../chunks/focus-trap-vlQwKK-3.js";
|
|
5
|
+
var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (t, e, s, o) => {
|
|
6
|
+
for (var r = o > 1 ? void 0 : o ? _(e, s) : e, d = t.length - 1, l; d >= 0; d--)
|
|
7
|
+
(l = t[d]) && (r = (o ? l(e, s, r) : l(r)) || r);
|
|
8
|
+
return o && r && m(e, s, r), r;
|
|
9
9
|
};
|
|
10
|
-
let
|
|
10
|
+
let i = class extends g {
|
|
11
11
|
constructor() {
|
|
12
|
-
super(...arguments), this.open = !1, this.label = "Sheet", this.side = "bottom", this.snapPoints = [], this.activeSnap = 0, this.dismissible = !0, this._dragOffset = 0, this._focusTrap = new b(), this._dragStart = 0, this._dragging = !1;
|
|
12
|
+
super(...arguments), this.open = !1, this.label = "Sheet", this.side = "bottom", this.snapPoints = [], this.activeSnap = 0, this.dismissible = !0, this._dragOffset = 0, this._focusTrap = new b(), this._dragStart = 0, this._dragging = !1, this._previousOverflow = "";
|
|
13
13
|
}
|
|
14
14
|
disconnectedCallback() {
|
|
15
|
-
super.disconnectedCallback(), this._focusTrap.deactivate();
|
|
15
|
+
super.disconnectedCallback(), this.open && (document.body.style.overflow = this._previousOverflow), this._focusTrap.deactivate();
|
|
16
16
|
}
|
|
17
17
|
updated(t) {
|
|
18
|
-
t.has("open")
|
|
18
|
+
if (t.has("open")) {
|
|
19
|
+
if (t.get("open") === void 0 && !this.open) return;
|
|
20
|
+
this.open ? this._onOpen() : this._onClose();
|
|
21
|
+
}
|
|
19
22
|
}
|
|
20
23
|
_onOpen() {
|
|
21
|
-
this.dispatchEvent(new CustomEvent("cg-sheet-open", { bubbles: !0, composed: !0 })), requestAnimationFrame(() => {
|
|
24
|
+
this._previousOverflow = document.body.style.overflow, document.body.style.overflow = "hidden", this.dispatchEvent(new CustomEvent("cg-sheet-open", { bubbles: !0, composed: !0 })), requestAnimationFrame(() => {
|
|
22
25
|
const t = this.shadowRoot?.querySelector(".panel");
|
|
23
26
|
if (t) {
|
|
24
27
|
const e = {};
|
|
@@ -29,34 +32,55 @@ let s = class extends h {
|
|
|
29
32
|
});
|
|
30
33
|
}
|
|
31
34
|
_onClose() {
|
|
32
|
-
this.dispatchEvent(new CustomEvent("cg-sheet-close", { bubbles: !0, composed: !0 })), this._focusTrap.deactivate(), this._dragOffset = 0;
|
|
35
|
+
document.body.style.overflow = this._previousOverflow, this.dispatchEvent(new CustomEvent("cg-sheet-close", { bubbles: !0, composed: !0 })), this._focusTrap.deactivate(), this._dragOffset = 0;
|
|
33
36
|
}
|
|
34
37
|
_handleBackdrop() {
|
|
35
38
|
this.dismissible && (this.open = !1);
|
|
36
39
|
}
|
|
37
40
|
_onDragStart(t) {
|
|
38
|
-
this.dismissible && (this._dragging = !0, this._dragStart = this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX, t.currentTarget.setPointerCapture?.(t.pointerId));
|
|
41
|
+
!this.dismissible && !this.snapPoints.length || (this._dragging = !0, this._dragStart = this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX, t.currentTarget.setPointerCapture?.(t.pointerId));
|
|
39
42
|
}
|
|
40
43
|
_onDragMove(t) {
|
|
41
44
|
if (!this._dragging) return;
|
|
42
|
-
let
|
|
43
|
-
(this.side === "top" || this.side === "left") && (
|
|
45
|
+
let s = (this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX) - this._dragStart;
|
|
46
|
+
(this.side === "top" || this.side === "left") && (s = -s), this._dragOffset = this.snapPoints.length ? s : Math.max(0, s);
|
|
44
47
|
}
|
|
45
48
|
_onDragEnd() {
|
|
46
|
-
|
|
49
|
+
if (this._dragging) {
|
|
50
|
+
if (this._dragging = !1, this.snapPoints.length) {
|
|
51
|
+
const t = this.side === "bottom" || this.side === "top" ? window.innerHeight : window.innerWidth, e = (this.snapPoints[this.activeSnap] ?? 0.95) - this._dragOffset / Math.max(1, t);
|
|
52
|
+
let s = 0;
|
|
53
|
+
for (let o = 1; o < this.snapPoints.length; o++)
|
|
54
|
+
Math.abs(this.snapPoints[o] - e) < Math.abs(this.snapPoints[s] - e) && (s = o);
|
|
55
|
+
this.dismissible && e < Math.min(...this.snapPoints) - 0.1 ? this.open = !1 : s !== this.activeSnap && (this.activeSnap = s, this._emitSnap());
|
|
56
|
+
} else this._dragOffset > 80 && this.dismissible && (this.open = !1);
|
|
57
|
+
this._dragOffset = 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
_emitSnap() {
|
|
61
|
+
this.dispatchEvent(new CustomEvent("cg-sheet-snap", {
|
|
47
62
|
bubbles: !0,
|
|
48
63
|
composed: !0,
|
|
49
64
|
detail: { index: this.activeSnap, value: this.snapPoints[this.activeSnap] ?? 1 }
|
|
50
|
-
}))
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
/** SHEET-5: keyboard path for snap resizing (slider pattern on the handle). */
|
|
68
|
+
_onHandleKeydown(t) {
|
|
69
|
+
if (!this.snapPoints.length) return;
|
|
70
|
+
let e = this.activeSnap;
|
|
71
|
+
if (t.key === "ArrowUp" || t.key === "ArrowRight") e = Math.min(this.snapPoints.length - 1, e + 1);
|
|
72
|
+
else if (t.key === "ArrowDown" || t.key === "ArrowLeft") e = Math.max(0, e - 1);
|
|
73
|
+
else return;
|
|
74
|
+
t.preventDefault(), e !== this.activeSnap && (this.activeSnap = e, this._emitSnap());
|
|
51
75
|
}
|
|
52
76
|
render() {
|
|
53
77
|
const t = this.side === "bottom" ? `translateY(${this._dragOffset}px)` : this.side === "top" ? `translateY(${-this._dragOffset}px)` : this.side === "right" ? `translateX(${this._dragOffset}px)` : `translateX(${-this._dragOffset}px)`;
|
|
54
78
|
let e = "";
|
|
55
79
|
if ((this.side === "bottom" || this.side === "top") && this.snapPoints.length) {
|
|
56
|
-
const
|
|
57
|
-
e = `height: ${Math.round(
|
|
80
|
+
const s = this.snapPoints[this.activeSnap] ?? 0.95;
|
|
81
|
+
e = `height: ${Math.round(s * 100)}vh;`;
|
|
58
82
|
}
|
|
59
|
-
return (this._dragging || this._dragOffset) && (e += `transform: ${t};`), p`
|
|
83
|
+
return (this._dragging || this._dragOffset) && (e += `transform: ${t};`), this._dragging && (e += "transition: none;"), p`
|
|
60
84
|
<div class="backdrop" aria-hidden="true" @click=${this._handleBackdrop}></div>
|
|
61
85
|
<div
|
|
62
86
|
class="panel"
|
|
@@ -70,6 +94,13 @@ let s = class extends h {
|
|
|
70
94
|
${this.side === "bottom" || this.side === "top" ? p`
|
|
71
95
|
<div
|
|
72
96
|
class="handle"
|
|
97
|
+
role=${this.snapPoints.length ? "slider" : n}
|
|
98
|
+
tabindex=${this.snapPoints.length ? "0" : n}
|
|
99
|
+
aria-label=${this.snapPoints.length ? "Resize sheet" : n}
|
|
100
|
+
aria-valuemin=${this.snapPoints.length ? "0" : n}
|
|
101
|
+
aria-valuemax=${this.snapPoints.length ? String(this.snapPoints.length - 1) : n}
|
|
102
|
+
aria-valuenow=${this.snapPoints.length ? String(this.activeSnap) : n}
|
|
103
|
+
@keydown=${this._onHandleKeydown}
|
|
73
104
|
@pointerdown=${this._onDragStart}
|
|
74
105
|
@pointermove=${this._onDragMove}
|
|
75
106
|
@pointerup=${this._onDragEnd}
|
|
@@ -77,7 +108,7 @@ let s = class extends h {
|
|
|
77
108
|
>
|
|
78
109
|
<span class="handle-bar"></span>
|
|
79
110
|
</div>
|
|
80
|
-
` :
|
|
111
|
+
` : n}
|
|
81
112
|
<div class="body">
|
|
82
113
|
<slot></slot>
|
|
83
114
|
</div>
|
|
@@ -85,7 +116,7 @@ let s = class extends h {
|
|
|
85
116
|
`;
|
|
86
117
|
}
|
|
87
118
|
};
|
|
88
|
-
|
|
119
|
+
i.styles = [v, c`
|
|
89
120
|
:host {
|
|
90
121
|
display: contents;
|
|
91
122
|
font-family: var(--cg-font-family-primary);
|
|
@@ -95,8 +126,8 @@ s.styles = [v, l`
|
|
|
95
126
|
inset: 0;
|
|
96
127
|
z-index: var(--cg-z-index-500);
|
|
97
128
|
background: var(--cg-color-modal-overlay-background);
|
|
98
|
-
backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(
|
|
99
|
-
-webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(
|
|
129
|
+
backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);
|
|
130
|
+
-webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);
|
|
100
131
|
opacity: 0;
|
|
101
132
|
pointer-events: none;
|
|
102
133
|
transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
@@ -168,10 +199,16 @@ s.styles = [v, l`
|
|
|
168
199
|
width: var(--cg-spacing-40);
|
|
169
200
|
height: var(--cg-spacing-4);
|
|
170
201
|
border-radius: var(--cg-border-radius-full);
|
|
171
|
-
background: var(--cg-color-surface-container-
|
|
202
|
+
background: var(--cg-color-surface-container-divider);
|
|
172
203
|
transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
173
204
|
}
|
|
174
205
|
.handle:hover .handle-bar { background: var(--cg-color-surface-cards-border-strong); }
|
|
206
|
+
.handle:focus-visible {
|
|
207
|
+
outline: none;
|
|
208
|
+
box-shadow:
|
|
209
|
+
inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),
|
|
210
|
+
inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
|
|
211
|
+
}
|
|
175
212
|
|
|
176
213
|
.body {
|
|
177
214
|
flex: 1;
|
|
@@ -182,30 +219,30 @@ s.styles = [v, l`
|
|
|
182
219
|
}
|
|
183
220
|
`];
|
|
184
221
|
a([
|
|
185
|
-
|
|
186
|
-
],
|
|
222
|
+
h({ type: Boolean, reflect: !0 })
|
|
223
|
+
], i.prototype, "open", 2);
|
|
187
224
|
a([
|
|
188
|
-
|
|
189
|
-
],
|
|
225
|
+
h()
|
|
226
|
+
], i.prototype, "label", 2);
|
|
190
227
|
a([
|
|
191
|
-
|
|
192
|
-
],
|
|
228
|
+
h({ reflect: !0 })
|
|
229
|
+
], i.prototype, "side", 2);
|
|
193
230
|
a([
|
|
194
|
-
|
|
195
|
-
],
|
|
231
|
+
h({ type: Array })
|
|
232
|
+
], i.prototype, "snapPoints", 2);
|
|
196
233
|
a([
|
|
197
|
-
|
|
198
|
-
],
|
|
234
|
+
h({ type: Number })
|
|
235
|
+
], i.prototype, "activeSnap", 2);
|
|
199
236
|
a([
|
|
200
|
-
|
|
201
|
-
],
|
|
237
|
+
h({ type: Boolean })
|
|
238
|
+
], i.prototype, "dismissible", 2);
|
|
202
239
|
a([
|
|
203
240
|
f()
|
|
204
|
-
],
|
|
205
|
-
|
|
241
|
+
], i.prototype, "_dragOffset", 2);
|
|
242
|
+
i = a([
|
|
206
243
|
u("cg-sheet")
|
|
207
|
-
],
|
|
244
|
+
], i);
|
|
208
245
|
export {
|
|
209
|
-
|
|
246
|
+
i as CgSheet
|
|
210
247
|
};
|
|
211
248
|
//# sourceMappingURL=cg-sheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-sheet.js","sources":["../../../src/components/cg-sheet/cg-sheet.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-sheet\n * Mobile-first drawer variant with optional snap points and drag-to-dismiss.\n *\n * @slot - Default slot for sheet body content.\n *\n * @fires {CustomEvent} cg-sheet-open\n * @fires {CustomEvent} cg-sheet-close\n * @fires {CustomEvent<{index:number,value:number}>} cg-sheet-snap\n */\n@customElement('cg-sheet')\nexport class CgSheet extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: contents;\n font-family: var(--cg-font-family-primary);\n }\n .backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--cg-z-index-500);\n background: var(--cg-color-modal-overlay-background);\n backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(140%);\n -webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(140%);\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([open]) .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .panel {\n position: fixed;\n z-index: var(--cg-z-index-top);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n box-shadow: var(--cg-shadow-elevation-xl);\n transition: transform var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n :host([side=\"bottom\"]) .panel {\n left: 0;\n right: 0;\n bottom: 0;\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-top-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(100%);\n max-height: 95vh;\n }\n :host([side=\"bottom\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"top\"]) .panel {\n left: 0; right: 0; top: 0;\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(-100%);\n max-height: 95vh;\n }\n :host([side=\"top\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"right\"]) .panel {\n top: 0; bottom: 0; right: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n transform: translateX(100%);\n }\n :host([side=\"right\"][open]) .panel { transform: translateX(0); }\n\n :host([side=\"left\"]) .panel {\n top: 0; bottom: 0; left: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-right-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateX(-100%);\n }\n :host([side=\"left\"][open]) .panel { transform: translateX(0); }\n\n .handle {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) 0 var(--cg-spacing-6);\n cursor: grab;\n touch-action: none;\n }\n .handle:active { cursor: grabbing; }\n .handle-bar {\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-4);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-border);\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .handle:hover .handle-bar { background: var(--cg-color-surface-cards-border-strong); }\n\n .body {\n flex: 1;\n overflow-y: auto;\n padding: var(--cg-spacing-20) var(--cg-spacing-24) var(--cg-spacing-24);\n color: var(--cg-color-surface-container-text);\n font-size: var(--cg-font-size-sm);\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() label = 'Sheet';\n @property({ reflect: true }) side: 'bottom' | 'right' | 'left' | 'top' = 'bottom';\n @property({ type: Array }) snapPoints: number[] = [];\n @property({ type: Number }) activeSnap = 0;\n @property({ type: Boolean }) dismissible = true;\n\n @state() private _dragOffset = 0;\n\n private _focusTrap = new FocusTrap();\n private _dragStart = 0;\n private _dragging = false;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._focusTrap.deactivate();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _onOpen(): void {\n this.dispatchEvent(new CustomEvent('cg-sheet-open', { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.panel');\n if (panel) {\n const opts: { onEscape?: () => void } = {};\n if (this.dismissible) opts.onEscape = () => { this.open = false; };\n this._focusTrap.activate(panel, opts);\n }\n });\n }\n\n private _onClose(): void {\n this.dispatchEvent(new CustomEvent('cg-sheet-close', { bubbles: true, composed: true }));\n this._focusTrap.deactivate();\n this._dragOffset = 0;\n }\n\n private _handleBackdrop(): void {\n if (this.dismissible) this.open = false;\n }\n\n private _onDragStart(e: PointerEvent): void {\n if (!this.dismissible) return;\n this._dragging = true;\n this._dragStart = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n }\n\n private _onDragMove(e: PointerEvent): void {\n if (!this._dragging) return;\n const pos = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n let delta = pos - this._dragStart;\n if (this.side === 'top' || this.side === 'left') delta = -delta;\n this._dragOffset = Math.max(0, delta);\n }\n\n private _onDragEnd(): void {\n if (!this._dragging) return;\n this._dragging = false;\n if (this._dragOffset > 80 && this.dismissible) {\n this.open = false;\n } else if (this.snapPoints.length) {\n this.dispatchEvent(new CustomEvent('cg-sheet-snap', {\n bubbles: true, composed: true,\n detail: { index: this.activeSnap, value: this.snapPoints[this.activeSnap] ?? 1 },\n }));\n }\n this._dragOffset = 0;\n }\n\n override render() {\n const translateAxis = this.side === 'bottom' ? `translateY(${this._dragOffset}px)`\n : this.side === 'top' ? `translateY(${-this._dragOffset}px)`\n : this.side === 'right' ? `translateX(${this._dragOffset}px)`\n : `translateX(${-this._dragOffset}px)`;\n\n // Apply snap-point height when bottom sheet\n let panelStyle = '';\n if ((this.side === 'bottom' || this.side === 'top') && this.snapPoints.length) {\n const snap = this.snapPoints[this.activeSnap] ?? 0.95;\n panelStyle = `height: ${Math.round(snap * 100)}vh;`;\n }\n if (this._dragging || this._dragOffset) panelStyle += `transform: ${translateAxis};`;\n\n return html`\n <div class=\"backdrop\" aria-hidden=\"true\" @click=${this._handleBackdrop}></div>\n <div\n class=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=${this.label}\n aria-hidden=${this.open ? 'false' : 'true'}\n ?inert=${!this.open}\n style=${panelStyle}\n >\n ${this.side === 'bottom' || this.side === 'top' ? html`\n <div\n class=\"handle\"\n @pointerdown=${this._onDragStart}\n @pointermove=${this._onDragMove}\n @pointerup=${this._onDragEnd}\n @pointercancel=${this._onDragEnd}\n >\n <span class=\"handle-bar\"></span>\n </div>\n ` : nothing}\n <div class=\"body\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sheet': CgSheet;\n }\n}\n"],"names":["CgSheet","LitElement","FocusTrap","changed","panel","opts","e","delta","translateAxis","panelStyle","snap","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;;AAgBO,IAAMA,IAAN,cAAsBC,EAAW;AAAA,EAAjC,cAAA;AAAA,UAAA,GAAA,SAAA,GAkGuC,KAAA,OAAO,IACvC,KAAA,QAAQ,SACS,KAAA,OAA4C,UAC9C,KAAA,aAAuB,CAAA,GACtB,KAAA,aAAa,GACZ,KAAA,cAAc,IAElC,KAAQ,cAAc,GAE/B,KAAQ,aAAa,IAAIC,EAAA,GACzB,KAAQ,aAAa,GACrB,KAAQ,YAAY;AAAA,EAAA;AAAA,EAEX,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,WAAW,WAAA;AAAA,EAClB;AAAA,EAES,QAAQC,GAAqC;AACpD,IAAIA,EAAQ,IAAI,MAAM,MAChB,KAAK,OAAM,KAAK,QAAA,SACV,SAAA;AAAA,EAEd;AAAA,EAEQ,UAAgB;AACtB,SAAK,cAAc,IAAI,YAAY,iBAAiB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GACtF,sBAAsB,MAAM;AAC1B,YAAMC,IAAQ,KAAK,YAAY,cAA2B,QAAQ;AAClE,UAAIA,GAAO;AACT,cAAMC,IAAkC,CAAA;AACxC,QAAI,KAAK,gBAAaA,EAAK,WAAW,MAAM;AAAE,eAAK,OAAO;AAAA,QAAO,IACjE,KAAK,WAAW,SAASD,GAAOC,CAAI;AAAA,MACtC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,WAAiB;AACvB,SAAK,cAAc,IAAI,YAAY,kBAAkB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GACvF,KAAK,WAAW,WAAA,GAChB,KAAK,cAAc;AAAA,EACrB;AAAA,EAEQ,kBAAwB;AAC9B,IAAI,KAAK,gBAAa,KAAK,OAAO;AAAA,EACpC;AAAA,EAEQ,aAAaC,GAAuB;AAC1C,IAAK,KAAK,gBACV,KAAK,YAAY,IACjB,KAAK,aAAa,KAAK,SAAS,YAAY,KAAK,SAAS,QAAQA,EAAE,UAAUA,EAAE,SAC/EA,EAAE,cAA8B,oBAAoBA,EAAE,SAAS;AAAA,EAClE;AAAA,EAEQ,YAAYA,GAAuB;AACzC,QAAI,CAAC,KAAK,UAAW;AAErB,QAAIC,KADQ,KAAK,SAAS,YAAY,KAAK,SAAS,QAAQD,EAAE,UAAUA,EAAE,WACxD,KAAK;AACvB,KAAI,KAAK,SAAS,SAAS,KAAK,SAAS,gBAAgB,CAACC,IAC1D,KAAK,cAAc,KAAK,IAAI,GAAGA,CAAK;AAAA,EACtC;AAAA,EAEQ,aAAmB;AACzB,IAAK,KAAK,cACV,KAAK,YAAY,IACb,KAAK,cAAc,MAAM,KAAK,cAChC,KAAK,OAAO,KACH,KAAK,WAAW,UACzB,KAAK,cAAc,IAAI,YAAY,iBAAiB;AAAA,MAClD,SAAS;AAAA,MAAM,UAAU;AAAA,MACzB,QAAQ,EAAE,OAAO,KAAK,YAAY,OAAO,KAAK,WAAW,KAAK,UAAU,KAAK,EAAA;AAAA,IAAE,CAChF,CAAC,GAEJ,KAAK,cAAc;AAAA,EACrB;AAAA,EAES,SAAS;AAChB,UAAMC,IAAgB,KAAK,SAAS,WAAW,cAAc,KAAK,WAAW,QACzE,KAAK,SAAS,QAAQ,cAAc,CAAC,KAAK,WAAW,QACrD,KAAK,SAAS,UAAU,cAAc,KAAK,WAAW,QACtD,cAAc,CAAC,KAAK,WAAW;AAGnC,QAAIC,IAAa;AACjB,SAAK,KAAK,SAAS,YAAY,KAAK,SAAS,UAAU,KAAK,WAAW,QAAQ;AAC7E,YAAMC,IAAO,KAAK,WAAW,KAAK,UAAU,KAAK;AACjD,MAAAD,IAAa,WAAW,KAAK,MAAMC,IAAO,GAAG,CAAC;AAAA,IAChD;AACA,YAAI,KAAK,aAAa,KAAK,iBAAaD,KAAc,cAAcD,CAAa,MAE1EG;AAAA,wDAC6C,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKvD,KAAK,KAAK;AAAA,sBACT,KAAK,OAAO,UAAU,MAAM;AAAA,iBACjC,CAAC,KAAK,IAAI;AAAA,gBACXF,CAAU;AAAA;AAAA,UAEhB,KAAK,SAAS,YAAY,KAAK,SAAS,QAAQE;AAAA;AAAA;AAAA,2BAG/B,KAAK,YAAY;AAAA,2BACjB,KAAK,WAAW;AAAA,yBAClB,KAAK,UAAU;AAAA,6BACX,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA,YAIhCC,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB;AACF;AAxNaZ,EACK,SAAS,CAACa,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,GA+FxC;AAE2CC,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAlG/BhB,EAkGiC,WAAA,QAAA,CAAA;AAChCe,EAAA;AAAA,EAAXC,EAAA;AAAS,GAnGChB,EAmGC,WAAA,SAAA,CAAA;AACiBe,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GApGhBhB,EAoGkB,WAAA,QAAA,CAAA;AACFe,EAAA;AAAA,EAA1BC,EAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GArGdhB,EAqGgB,WAAA,cAAA,CAAA;AACCe,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtGfhB,EAsGiB,WAAA,cAAA,CAAA;AACCe,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAvGhBhB,EAuGkB,WAAA,eAAA,CAAA;AAEZe,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAzGIjB,EAyGM,WAAA,eAAA,CAAA;AAzGNA,IAANe,EAAA;AAAA,EADNG,EAAc,UAAU;AAAA,GACZlB,CAAA;"}
|
|
1
|
+
{"version":3,"file":"cg-sheet.js","sources":["../../../src/components/cg-sheet/cg-sheet.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-sheet\n * Mobile-first drawer variant with optional snap points and drag-to-dismiss.\n *\n * @slot - Default slot for sheet body content.\n *\n * @fires {CustomEvent} cg-sheet-open\n * @fires {CustomEvent} cg-sheet-close\n * @fires {CustomEvent<{index:number,value:number}>} cg-sheet-snap\n */\n@customElement('cg-sheet')\nexport class CgSheet extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: contents;\n font-family: var(--cg-font-family-primary);\n }\n .backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--cg-z-index-500);\n background: var(--cg-color-modal-overlay-background);\n backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);\n -webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([open]) .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .panel {\n position: fixed;\n z-index: var(--cg-z-index-top);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n box-shadow: var(--cg-shadow-elevation-xl);\n transition: transform var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n :host([side=\"bottom\"]) .panel {\n left: 0;\n right: 0;\n bottom: 0;\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-top-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(100%);\n max-height: 95vh;\n }\n :host([side=\"bottom\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"top\"]) .panel {\n left: 0; right: 0; top: 0;\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(-100%);\n max-height: 95vh;\n }\n :host([side=\"top\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"right\"]) .panel {\n top: 0; bottom: 0; right: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n transform: translateX(100%);\n }\n :host([side=\"right\"][open]) .panel { transform: translateX(0); }\n\n :host([side=\"left\"]) .panel {\n top: 0; bottom: 0; left: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-right-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateX(-100%);\n }\n :host([side=\"left\"][open]) .panel { transform: translateX(0); }\n\n .handle {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) 0 var(--cg-spacing-6);\n cursor: grab;\n touch-action: none;\n }\n .handle:active { cursor: grabbing; }\n .handle-bar {\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-4);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-divider);\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .handle:hover .handle-bar { background: var(--cg-color-surface-cards-border-strong); }\n .handle: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 .body {\n flex: 1;\n overflow-y: auto;\n padding: var(--cg-spacing-20) var(--cg-spacing-24) var(--cg-spacing-24);\n color: var(--cg-color-surface-container-text);\n font-size: var(--cg-font-size-sm);\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() label = 'Sheet';\n @property({ reflect: true }) side: 'bottom' | 'right' | 'left' | 'top' = 'bottom';\n @property({ type: Array }) snapPoints: number[] = [];\n @property({ type: Number }) activeSnap = 0;\n @property({ type: Boolean }) dismissible = true;\n\n @state() private _dragOffset = 0;\n\n private _focusTrap = new FocusTrap();\n private _dragStart = 0;\n private _dragging = false;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // An unmount while open must not leave the page scroll-locked.\n if (this.open) document.body.style.overflow = this._previousOverflow;\n this._focusTrap.deactivate();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n // First render with open=false is not a close — no spurious event,\n // no clobbering document.body.style.overflow on mount.\n if (changed.get('open') === undefined && !this.open) return;\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _previousOverflow = '';\n\n private _onOpen(): void {\n this._previousOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n this.dispatchEvent(new CustomEvent('cg-sheet-open', { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.panel');\n if (panel) {\n const opts: { onEscape?: () => void } = {};\n if (this.dismissible) opts.onEscape = () => { this.open = false; };\n this._focusTrap.activate(panel, opts);\n }\n });\n }\n\n private _onClose(): void {\n document.body.style.overflow = this._previousOverflow;\n this.dispatchEvent(new CustomEvent('cg-sheet-close', { bubbles: true, composed: true }));\n this._focusTrap.deactivate();\n this._dragOffset = 0;\n }\n\n private _handleBackdrop(): void {\n if (this.dismissible) this.open = false;\n }\n\n private _onDragStart(e: PointerEvent): void {\n if (!this.dismissible && !this.snapPoints.length) return;\n this._dragging = true;\n this._dragStart = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n }\n\n private _onDragMove(e: PointerEvent): void {\n if (!this._dragging) return;\n const pos = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n let delta = pos - this._dragStart;\n if (this.side === 'top' || this.side === 'left') delta = -delta;\n // With snap points the user can drag toward LARGER snaps too — keep the\n // signed delta; dismiss-only sheets still clamp to the dismiss direction.\n this._dragOffset = this.snapPoints.length ? delta : Math.max(0, delta);\n }\n\n private _onDragEnd(): void {\n if (!this._dragging) return;\n this._dragging = false;\n if (this.snapPoints.length) {\n // Land on the snap nearest to the released position.\n const viewport = this.side === 'bottom' || this.side === 'top'\n ? window.innerHeight : window.innerWidth;\n const current = (this.snapPoints[this.activeSnap] ?? 0.95) - this._dragOffset / Math.max(1, viewport);\n let nearest = 0;\n for (let i = 1; i < this.snapPoints.length; i++) {\n if (Math.abs(this.snapPoints[i]! - current) < Math.abs(this.snapPoints[nearest]! - current)) nearest = i;\n }\n if (this.dismissible && current < Math.min(...this.snapPoints) - 0.1) {\n this.open = false;\n } else if (nearest !== this.activeSnap) {\n this.activeSnap = nearest;\n this._emitSnap();\n }\n } else if (this._dragOffset > 80 && this.dismissible) {\n this.open = false;\n }\n this._dragOffset = 0;\n }\n\n private _emitSnap(): void {\n this.dispatchEvent(new CustomEvent('cg-sheet-snap', {\n bubbles: true, composed: true,\n detail: { index: this.activeSnap, value: this.snapPoints[this.activeSnap] ?? 1 },\n }));\n }\n\n /** SHEET-5: keyboard path for snap resizing (slider pattern on the handle). */\n private _onHandleKeydown(e: KeyboardEvent): void {\n if (!this.snapPoints.length) return;\n let next = this.activeSnap;\n if (e.key === 'ArrowUp' || e.key === 'ArrowRight') next = Math.min(this.snapPoints.length - 1, next + 1);\n else if (e.key === 'ArrowDown' || e.key === 'ArrowLeft') next = Math.max(0, next - 1);\n else return;\n e.preventDefault();\n if (next !== this.activeSnap) {\n this.activeSnap = next;\n this._emitSnap();\n }\n }\n\n override render() {\n const translateAxis = this.side === 'bottom' ? `translateY(${this._dragOffset}px)`\n : this.side === 'top' ? `translateY(${-this._dragOffset}px)`\n : this.side === 'right' ? `translateX(${this._dragOffset}px)`\n : `translateX(${-this._dragOffset}px)`;\n\n // Apply snap-point height when bottom sheet\n let panelStyle = '';\n if ((this.side === 'bottom' || this.side === 'top') && this.snapPoints.length) {\n const snap = this.snapPoints[this.activeSnap] ?? 0.95;\n panelStyle = `height: ${Math.round(snap * 100)}vh;`;\n }\n if (this._dragging || this._dragOffset) panelStyle += `transform: ${translateAxis};`;\n if (this._dragging) panelStyle += 'transition: none;';\n\n return html`\n <div class=\"backdrop\" aria-hidden=\"true\" @click=${this._handleBackdrop}></div>\n <div\n class=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=${this.label}\n aria-hidden=${this.open ? 'false' : 'true'}\n ?inert=${!this.open}\n style=${panelStyle}\n >\n ${this.side === 'bottom' || this.side === 'top' ? html`\n <div\n class=\"handle\"\n role=${this.snapPoints.length ? 'slider' : nothing}\n tabindex=${this.snapPoints.length ? '0' : nothing}\n aria-label=${this.snapPoints.length ? 'Resize sheet' : nothing}\n aria-valuemin=${this.snapPoints.length ? '0' : nothing}\n aria-valuemax=${this.snapPoints.length ? String(this.snapPoints.length - 1) : nothing}\n aria-valuenow=${this.snapPoints.length ? String(this.activeSnap) : nothing}\n @keydown=${this._onHandleKeydown}\n @pointerdown=${this._onDragStart}\n @pointermove=${this._onDragMove}\n @pointerup=${this._onDragEnd}\n @pointercancel=${this._onDragEnd}\n >\n <span class=\"handle-bar\"></span>\n </div>\n ` : nothing}\n <div class=\"body\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sheet': CgSheet;\n }\n}\n"],"names":["CgSheet","LitElement","FocusTrap","changed","panel","opts","e","delta","viewport","current","nearest","i","next","translateAxis","panelStyle","snap","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"cg-sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BA+OnB;IAEyC,SAAS,UAAS;IACjC,WAAW,UAAS;IACpB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAU;IACjB,MAAM,UAAS;IAC/C,KAAK,SAAM;IAGd,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAE7B,iBAAiB,IAAI,IAAI;IAOzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY9C,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,mBAAmB,CAGzB;IAEO,MAAM;CA6BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { css as
|
|
1
|
+
import { css as h, LitElement as p, nothing as u, html as d } from "lit";
|
|
2
2
|
import { property as i, state as g, customElement as f } from "lit/decorators.js";
|
|
3
|
-
import { r as
|
|
4
|
-
var b = Object.defineProperty,
|
|
5
|
-
for (var r = s > 1 ? void 0 : s ?
|
|
6
|
-
(
|
|
3
|
+
import { r as v } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var b = Object.defineProperty, m = Object.getOwnPropertyDescriptor, a = (t, o, n, s) => {
|
|
5
|
+
for (var r = s > 1 ? void 0 : s ? m(o, n) : o, l = t.length - 1, c; l >= 0; l--)
|
|
6
|
+
(c = t[l]) && (r = (s ? c(o, n, r) : c(r)) || r);
|
|
7
7
|
return s && r && b(o, n, r), r;
|
|
8
8
|
};
|
|
9
|
-
let e = class extends
|
|
9
|
+
let e = class extends p {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.collapsed = !1, this.collapsible = !1, this.side = "left", this.sticky = !1, this.width = "", this._headerEmpty = !1, this._footerEmpty = !1, this._onHeaderSlotChange = (t) => {
|
|
12
12
|
const o = t.target;
|
|
@@ -47,7 +47,7 @@ let e = class extends h {
|
|
|
47
47
|
<path d="M15 18l-6-6 6-6"></path>
|
|
48
48
|
</svg>
|
|
49
49
|
</button>
|
|
50
|
-
` :
|
|
50
|
+
` : u}
|
|
51
51
|
</div>
|
|
52
52
|
<div class="body" id="sidebar-body">
|
|
53
53
|
<slot></slot>
|
|
@@ -59,7 +59,7 @@ let e = class extends h {
|
|
|
59
59
|
`;
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
|
-
e.styles = [
|
|
62
|
+
e.styles = [v, h`
|
|
63
63
|
:host {
|
|
64
64
|
display: block;
|
|
65
65
|
width: var(--cg-component-sidebar-width);
|
|
@@ -197,12 +197,47 @@ e.styles = [u, p`
|
|
|
197
197
|
background: var(--cg-color-action-tertiary-background-hover);
|
|
198
198
|
color: var(--cg-color-surface-base-text);
|
|
199
199
|
}
|
|
200
|
+
/* Icon sizing contract: the leading icon (aria-hidden span or [data-icon])
|
|
201
|
+
gets a fixed square box so every row's label starts at the same x —
|
|
202
|
+
consumers no longer have to hand-fix alignment with inline widths. */
|
|
203
|
+
::slotted(a) > [aria-hidden="true"],
|
|
204
|
+
::slotted(button) > [aria-hidden="true"],
|
|
205
|
+
::slotted(a) > [data-icon],
|
|
206
|
+
::slotted(button) > [data-icon] {
|
|
207
|
+
display: inline-flex;
|
|
208
|
+
align-items: center;
|
|
209
|
+
justify-content: center;
|
|
210
|
+
width: var(--cg-icon-size-100);
|
|
211
|
+
flex-shrink: 0;
|
|
212
|
+
text-align: center;
|
|
213
|
+
}
|
|
200
214
|
::slotted(a[aria-current]),
|
|
201
215
|
::slotted(button[aria-current]),
|
|
202
216
|
::slotted(a.active),
|
|
203
217
|
::slotted(button.active) {
|
|
204
218
|
background: var(--cg-color-surface-cards-active-background);
|
|
205
|
-
|
|
219
|
+
/* Accent the active item with the brand: a crisp left bar + accent
|
|
220
|
+
text. The bar is a square-cornered left border (the rounding is
|
|
221
|
+
removed on the left edge so it reads as a clean vertical rule, the
|
|
222
|
+
Linear/Notion convention) — not an inset shadow, which would curve
|
|
223
|
+
along the corner radius. This is the "where am I?" signal the bare
|
|
224
|
+
fill was missing, and the one place the brand should surface in chrome. */
|
|
225
|
+
color: var(--cg-color-accent-text);
|
|
226
|
+
border-left: var(--cg-spacing-2) solid var(--cg-color-action-primary-border-default);
|
|
227
|
+
border-top-left-radius: 0;
|
|
228
|
+
border-bottom-left-radius: 0;
|
|
229
|
+
/* Compensate the left border so the icon doesn't shift vs. inactive rows. */
|
|
230
|
+
padding-left: calc(var(--cg-spacing-12) - var(--cg-spacing-2));
|
|
231
|
+
}
|
|
232
|
+
/* Collapsed rail: a left bar would clip on a centered icon button, so
|
|
233
|
+
signal active with an accent ring instead. */
|
|
234
|
+
:host([collapsed]) ::slotted(a[aria-current]),
|
|
235
|
+
:host([collapsed]) ::slotted(button[aria-current]),
|
|
236
|
+
:host([collapsed]) ::slotted(a.active),
|
|
237
|
+
:host([collapsed]) ::slotted(button.active) {
|
|
238
|
+
border-left: none;
|
|
239
|
+
padding: 0;
|
|
240
|
+
box-shadow: inset 0 0 0 var(--cg-border-width-100) var(--cg-color-action-primary-border-default);
|
|
206
241
|
}
|
|
207
242
|
::slotted(a:focus-visible),
|
|
208
243
|
::slotted(button:focus-visible) {
|
|
@@ -210,31 +245,59 @@ e.styles = [u, p`
|
|
|
210
245
|
outline-offset: calc(-1 * var(--cg-border-width-100));
|
|
211
246
|
}
|
|
212
247
|
|
|
213
|
-
/* ── Section labels ──
|
|
248
|
+
/* ── Section labels ──
|
|
249
|
+
Scaffolding, not content — kept quiet (medium weight, muted color) so
|
|
250
|
+
they group the nav without competing with the items for attention. */
|
|
214
251
|
::slotted(.section-title),
|
|
215
252
|
::slotted([data-section-title]) {
|
|
216
253
|
display: block;
|
|
217
254
|
padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);
|
|
218
255
|
font-size: var(--cg-font-size-xs);
|
|
219
|
-
font-weight: var(--cg-font-weight-
|
|
220
|
-
color: var(--cg-color-
|
|
256
|
+
font-weight: var(--cg-font-weight-medium);
|
|
257
|
+
color: var(--cg-color-input-text-placeholder);
|
|
221
258
|
text-transform: uppercase;
|
|
222
259
|
letter-spacing: var(--cg-letter-spacing-wide);
|
|
223
260
|
}
|
|
261
|
+
/* The first section title shouldn't add a big gap under the header. */
|
|
262
|
+
::slotted(.section-title:first-child),
|
|
263
|
+
::slotted([data-section-title]:first-child) {
|
|
264
|
+
padding-top: var(--cg-spacing-4);
|
|
265
|
+
}
|
|
224
266
|
|
|
225
|
-
/* ── Collapsed:
|
|
267
|
+
/* ── Collapsed: collapse to an icon-only rail ──
|
|
268
|
+
Robust by default: we do NOT depend on the consumer wrapping every
|
|
269
|
+
label in <span data-label>. In collapsed mode the slotted item is
|
|
270
|
+
clipped to icon width and its text is zeroed out, so plain
|
|
271
|
+
<a href>Dashboard</a> markup collapses cleanly instead of bleeding
|
|
272
|
+
half-clipped text into the rail. The icon (first child, or an explicit
|
|
273
|
+
[data-icon] / aria-hidden span) is restored to a fixed size. */
|
|
274
|
+
:host([collapsed]) ::slotted(a),
|
|
275
|
+
:host([collapsed]) ::slotted(button) {
|
|
276
|
+
justify-content: center;
|
|
277
|
+
width: var(--cg-spacing-40);
|
|
278
|
+
height: var(--cg-spacing-40);
|
|
279
|
+
margin: 0 auto;
|
|
280
|
+
padding: 0;
|
|
281
|
+
gap: 0;
|
|
282
|
+
overflow: hidden;
|
|
283
|
+
white-space: nowrap;
|
|
284
|
+
font-size: 0; /* zero out bare text nodes / unwrapped labels */
|
|
285
|
+
}
|
|
286
|
+
/* Restore the icon glyph at a real size, centered in the rail. */
|
|
287
|
+
:host([collapsed]) ::slotted(a) > [aria-hidden="true"],
|
|
288
|
+
:host([collapsed]) ::slotted(button) > [aria-hidden="true"],
|
|
289
|
+
:host([collapsed]) ::slotted(a) > [data-icon],
|
|
290
|
+
:host([collapsed]) ::slotted(button) > [data-icon] {
|
|
291
|
+
font-size: var(--cg-font-size-md);
|
|
292
|
+
width: auto;
|
|
293
|
+
}
|
|
294
|
+
/* Explicit labels and section titles are still hidden outright. */
|
|
226
295
|
:host([collapsed]) ::slotted([data-label]),
|
|
227
296
|
:host([collapsed]) ::slotted(.label),
|
|
228
297
|
:host([collapsed]) ::slotted(.section-title),
|
|
229
298
|
:host([collapsed]) ::slotted([data-section-title]) {
|
|
230
299
|
display: none;
|
|
231
300
|
}
|
|
232
|
-
:host([collapsed]) ::slotted(a),
|
|
233
|
-
:host([collapsed]) ::slotted(button) {
|
|
234
|
-
justify-content: center;
|
|
235
|
-
padding: var(--cg-spacing-8);
|
|
236
|
-
gap: 0;
|
|
237
|
-
}
|
|
238
301
|
`];
|
|
239
302
|
a([
|
|
240
303
|
i({ type: Boolean, reflect: !0 })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-sidebar.js","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-sidebar\n * Modern collapsible side navigation panel. Two states (expanded ↔ icon-only),\n * smooth 200ms width transition, full-row hit targets on slotted `<a>` / `<button>`\n * items, `aria-current` active state, and section headers via `.section-title`.\n *\n * Modeled after the 2024–2025 consensus from shadcn/ui, Linear, Notion, and Cursor:\n * 8px grid, full-row click targets, no hover-peek, native `title` for collapsed\n * tooltips.\n *\n * @example\n * ```html\n * <cg-sidebar collapsible>\n * <div slot=\"header\">Logo</div>\n *\n * <div class=\"section-title\">Workspace</div>\n * <a href=\"/dashboard\" aria-current=\"page\" title=\"Dashboard\">\n * <span aria-hidden=\"true\">◐</span><span data-label>Dashboard</span>\n * </a>\n * <a href=\"/settings\" title=\"Settings\">\n * <span aria-hidden=\"true\">⚙</span><span data-label>Settings</span>\n * </a>\n *\n * <div slot=\"footer\">User</div>\n * </cg-sidebar>\n * ```\n *\n * @slot header - Branding/header area (auto-hides when empty)\n * @slot - Navigation content (`<a>` / `<button>` get modern default styling)\n * @slot footer - Footer area (auto-hides when empty)\n *\n * @fires {CustomEvent<{collapsed: boolean}>} cg-sidebar-toggle\n */\n@customElement('cg-sidebar')\nexport class CgSidebar extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: block;\n width: var(--cg-component-sidebar-width);\n height: 100%;\n font-family: var(--cg-font-family-primary);\n flex-shrink: 0;\n transition: width var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) {\n width: var(--cg-component-sidebar-collapsed-width);\n }\n :host([sticky]) {\n position: sticky;\n top: 0;\n max-height: 100vh;\n }\n\n /* ── Panel ── */\n .nav {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-container-text);\n border-right: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([side=\"right\"]) .nav {\n border-right: none;\n border-left: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n\n /* ── Header ── */\n .header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--cg-spacing-8);\n min-height: var(--cg-spacing-56);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .header {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n justify-content: center;\n }\n :host([data-header-empty]) .header { display: none; }\n\n /* ── Body ── */\n .body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--cg-spacing-8);\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-2);\n }\n :host([collapsed]) .body {\n padding: var(--cg-spacing-8) var(--cg-spacing-6);\n }\n\n /* ── Footer ── */\n .footer {\n flex-shrink: 0;\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .footer {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n }\n :host([data-footer-empty]) .footer { display: none; }\n\n /* ── Toggle button ── */\n .toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n padding: 0;\n border: none;\n border-radius: var(--cg-border-radius-100);\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n flex-shrink: 0;\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 }\n .toggle:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n .toggle:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-border-width-50);\n }\n .toggle svg {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) .toggle svg {\n transform: rotate(180deg);\n }\n\n /* ── Modern nav-item defaults — applies to slotted <a> and <button> ── */\n ::slotted(a),\n ::slotted(button) {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n width: 100%;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border: none;\n border-radius: var(--cg-border-radius-100);\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 line-height: var(--cg-line-height-snug);\n text-decoration: none;\n text-align: left;\n cursor: pointer;\n box-sizing: border-box;\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 }\n ::slotted(a:hover),\n ::slotted(button:hover) {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n ::slotted(a[aria-current]),\n ::slotted(button[aria-current]),\n ::slotted(a.active),\n ::slotted(button.active) {\n background: var(--cg-color-surface-cards-active-background);\n color: var(--cg-color-surface-base-text);\n }\n ::slotted(a:focus-visible),\n ::slotted(button:focus-visible) {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: calc(-1 * var(--cg-border-width-100));\n }\n\n /* ── Section labels ── */\n ::slotted(.section-title),\n ::slotted([data-section-title]) {\n display: block;\n padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-container-outlined);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n\n /* ── Collapsed: hide labels & section titles, center icons ── */\n :host([collapsed]) ::slotted([data-label]),\n :host([collapsed]) ::slotted(.label),\n :host([collapsed]) ::slotted(.section-title),\n :host([collapsed]) ::slotted([data-section-title]) {\n display: none;\n }\n :host([collapsed]) ::slotted(a),\n :host([collapsed]) ::slotted(button) {\n justify-content: center;\n padding: var(--cg-spacing-8);\n gap: 0;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) collapsed = false;\n @property({ type: Boolean }) collapsible = false;\n @property({ reflect: true }) side: 'left' | 'right' = 'left';\n @property({ type: Boolean, reflect: true }) sticky = false;\n @property() width = '';\n\n // Default to *visible* — slotchange flips to hidden if empty (avoids first-paint flicker).\n @state() private _headerEmpty = false;\n @state() private _footerEmpty = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('width') && this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n if (changed.has('_headerEmpty')) {\n this.toggleAttribute('data-header-empty', this._headerEmpty);\n }\n if (changed.has('_footerEmpty')) {\n this.toggleAttribute('data-footer-empty', this._footerEmpty);\n }\n }\n\n private _toggle() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent('cg-sidebar-toggle', {\n detail: { collapsed: this.collapsed },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _onHeaderSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n // Header is \"empty\" only when slot has no content AND there's no toggle button.\n this._headerEmpty = slot.assignedNodes({ flatten: true }).length === 0 && !this.collapsible;\n };\n\n private _onFooterSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n this._footerEmpty = slot.assignedNodes({ flatten: true }).length === 0;\n };\n\n override render() {\n return html`\n <nav class=\"nav\" role=\"navigation\" aria-label=\"Primary navigation\">\n <div class=\"header\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n ${this.collapsible ? html`\n <button\n class=\"toggle\"\n type=\"button\"\n aria-label=${this.collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded=${this.collapsed ? 'false' : 'true'}\n aria-controls=\"sidebar-body\"\n @click=${this._toggle}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M15 18l-6-6 6-6\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n <div class=\"body\" id=\"sidebar-body\">\n <slot></slot>\n </div>\n <div class=\"footer\">\n <slot name=\"footer\" @slotchange=${this._onFooterSlotChange}></slot>\n </div>\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sidebar': CgSidebar;\n }\n}\n"],"names":["CgSidebar","LitElement","e","slot","changed","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-sidebar.js","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-sidebar\n * Modern collapsible side navigation panel. Two states (expanded ↔ icon-only),\n * smooth 200ms width transition, full-row hit targets on slotted `<a>` / `<button>`\n * items, `aria-current` active state, and section headers via `.section-title`.\n *\n * Modeled after the 2024–2025 consensus from shadcn/ui, Linear, Notion, and Cursor:\n * 8px grid, full-row click targets, no hover-peek, native `title` for collapsed\n * tooltips.\n *\n * @example\n * ```html\n * <cg-sidebar collapsible>\n * <div slot=\"header\">Logo</div>\n *\n * <div class=\"section-title\">Workspace</div>\n * <a href=\"/dashboard\" aria-current=\"page\" title=\"Dashboard\">\n * <span aria-hidden=\"true\">◐</span><span data-label>Dashboard</span>\n * </a>\n * <a href=\"/settings\" title=\"Settings\">\n * <span aria-hidden=\"true\">⚙</span><span data-label>Settings</span>\n * </a>\n *\n * <div slot=\"footer\">User</div>\n * </cg-sidebar>\n * ```\n *\n * @slot header - Branding/header area (auto-hides when empty)\n * @slot - Navigation content (`<a>` / `<button>` get modern default styling)\n * @slot footer - Footer area (auto-hides when empty)\n *\n * @fires {CustomEvent<{collapsed: boolean}>} cg-sidebar-toggle\n */\n@customElement('cg-sidebar')\nexport class CgSidebar extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: block;\n width: var(--cg-component-sidebar-width);\n height: 100%;\n font-family: var(--cg-font-family-primary);\n flex-shrink: 0;\n transition: width var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) {\n width: var(--cg-component-sidebar-collapsed-width);\n }\n :host([sticky]) {\n position: sticky;\n top: 0;\n max-height: 100vh;\n }\n\n /* ── Panel ── */\n .nav {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-container-text);\n border-right: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([side=\"right\"]) .nav {\n border-right: none;\n border-left: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n\n /* ── Header ── */\n .header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--cg-spacing-8);\n min-height: var(--cg-spacing-56);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .header {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n justify-content: center;\n }\n :host([data-header-empty]) .header { display: none; }\n\n /* ── Body ── */\n .body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--cg-spacing-8);\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-2);\n }\n :host([collapsed]) .body {\n padding: var(--cg-spacing-8) var(--cg-spacing-6);\n }\n\n /* ── Footer ── */\n .footer {\n flex-shrink: 0;\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .footer {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n }\n :host([data-footer-empty]) .footer { display: none; }\n\n /* ── Toggle button ── */\n .toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n padding: 0;\n border: none;\n border-radius: var(--cg-border-radius-100);\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n flex-shrink: 0;\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 }\n .toggle:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n .toggle:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-border-width-50);\n }\n .toggle svg {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) .toggle svg {\n transform: rotate(180deg);\n }\n\n /* ── Modern nav-item defaults — applies to slotted <a> and <button> ── */\n ::slotted(a),\n ::slotted(button) {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n width: 100%;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border: none;\n border-radius: var(--cg-border-radius-100);\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 line-height: var(--cg-line-height-snug);\n text-decoration: none;\n text-align: left;\n cursor: pointer;\n box-sizing: border-box;\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 }\n ::slotted(a:hover),\n ::slotted(button:hover) {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n /* Icon sizing contract: the leading icon (aria-hidden span or [data-icon])\n gets a fixed square box so every row's label starts at the same x —\n consumers no longer have to hand-fix alignment with inline widths. */\n ::slotted(a) > [aria-hidden=\"true\"],\n ::slotted(button) > [aria-hidden=\"true\"],\n ::slotted(a) > [data-icon],\n ::slotted(button) > [data-icon] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-icon-size-100);\n flex-shrink: 0;\n text-align: center;\n }\n ::slotted(a[aria-current]),\n ::slotted(button[aria-current]),\n ::slotted(a.active),\n ::slotted(button.active) {\n background: var(--cg-color-surface-cards-active-background);\n /* Accent the active item with the brand: a crisp left bar + accent\n text. The bar is a square-cornered left border (the rounding is\n removed on the left edge so it reads as a clean vertical rule, the\n Linear/Notion convention) — not an inset shadow, which would curve\n along the corner radius. This is the \"where am I?\" signal the bare\n fill was missing, and the one place the brand should surface in chrome. */\n color: var(--cg-color-accent-text);\n border-left: var(--cg-spacing-2) solid var(--cg-color-action-primary-border-default);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n /* Compensate the left border so the icon doesn't shift vs. inactive rows. */\n padding-left: calc(var(--cg-spacing-12) - var(--cg-spacing-2));\n }\n /* Collapsed rail: a left bar would clip on a centered icon button, so\n signal active with an accent ring instead. */\n :host([collapsed]) ::slotted(a[aria-current]),\n :host([collapsed]) ::slotted(button[aria-current]),\n :host([collapsed]) ::slotted(a.active),\n :host([collapsed]) ::slotted(button.active) {\n border-left: none;\n padding: 0;\n box-shadow: inset 0 0 0 var(--cg-border-width-100) var(--cg-color-action-primary-border-default);\n }\n ::slotted(a:focus-visible),\n ::slotted(button:focus-visible) {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: calc(-1 * var(--cg-border-width-100));\n }\n\n /* ── Section labels ──\n Scaffolding, not content — kept quiet (medium weight, muted color) so\n they group the nav without competing with the items for attention. */\n ::slotted(.section-title),\n ::slotted([data-section-title]) {\n display: block;\n padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-input-text-placeholder);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n /* The first section title shouldn't add a big gap under the header. */\n ::slotted(.section-title:first-child),\n ::slotted([data-section-title]:first-child) {\n padding-top: var(--cg-spacing-4);\n }\n\n /* ── Collapsed: collapse to an icon-only rail ──\n Robust by default: we do NOT depend on the consumer wrapping every\n label in <span data-label>. In collapsed mode the slotted item is\n clipped to icon width and its text is zeroed out, so plain\n <a href>Dashboard</a> markup collapses cleanly instead of bleeding\n half-clipped text into the rail. The icon (first child, or an explicit\n [data-icon] / aria-hidden span) is restored to a fixed size. */\n :host([collapsed]) ::slotted(a),\n :host([collapsed]) ::slotted(button) {\n justify-content: center;\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-40);\n margin: 0 auto;\n padding: 0;\n gap: 0;\n overflow: hidden;\n white-space: nowrap;\n font-size: 0; /* zero out bare text nodes / unwrapped labels */\n }\n /* Restore the icon glyph at a real size, centered in the rail. */\n :host([collapsed]) ::slotted(a) > [aria-hidden=\"true\"],\n :host([collapsed]) ::slotted(button) > [aria-hidden=\"true\"],\n :host([collapsed]) ::slotted(a) > [data-icon],\n :host([collapsed]) ::slotted(button) > [data-icon] {\n font-size: var(--cg-font-size-md);\n width: auto;\n }\n /* Explicit labels and section titles are still hidden outright. */\n :host([collapsed]) ::slotted([data-label]),\n :host([collapsed]) ::slotted(.label),\n :host([collapsed]) ::slotted(.section-title),\n :host([collapsed]) ::slotted([data-section-title]) {\n display: none;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) collapsed = false;\n @property({ type: Boolean }) collapsible = false;\n @property({ reflect: true }) side: 'left' | 'right' = 'left';\n @property({ type: Boolean, reflect: true }) sticky = false;\n @property() width = '';\n\n // Default to *visible* — slotchange flips to hidden if empty (avoids first-paint flicker).\n @state() private _headerEmpty = false;\n @state() private _footerEmpty = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('width') && this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n if (changed.has('_headerEmpty')) {\n this.toggleAttribute('data-header-empty', this._headerEmpty);\n }\n if (changed.has('_footerEmpty')) {\n this.toggleAttribute('data-footer-empty', this._footerEmpty);\n }\n }\n\n private _toggle() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent('cg-sidebar-toggle', {\n detail: { collapsed: this.collapsed },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _onHeaderSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n // Header is \"empty\" only when slot has no content AND there's no toggle button.\n this._headerEmpty = slot.assignedNodes({ flatten: true }).length === 0 && !this.collapsible;\n };\n\n private _onFooterSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n this._footerEmpty = slot.assignedNodes({ flatten: true }).length === 0;\n };\n\n override render() {\n return html`\n <nav class=\"nav\" role=\"navigation\" aria-label=\"Primary navigation\">\n <div class=\"header\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n ${this.collapsible ? html`\n <button\n class=\"toggle\"\n type=\"button\"\n aria-label=${this.collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded=${this.collapsed ? 'false' : 'true'}\n aria-controls=\"sidebar-body\"\n @click=${this._toggle}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M15 18l-6-6 6-6\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n <div class=\"body\" id=\"sidebar-body\">\n <slot></slot>\n </div>\n <div class=\"footer\">\n <slot name=\"footer\" @slotchange=${this._onFooterSlotChange}></slot>\n </div>\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sidebar': CgSidebar;\n }\n}\n"],"names":["CgSidebar","LitElement","e","slot","changed","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { LitElement } from 'lit';
|
|
|
7
7
|
* <cg-skeleton variant="rectangular" width="100%" height="80px"></cg-skeleton>
|
|
8
8
|
* <cg-skeleton variant="circular" width="40px" height="40px"></cg-skeleton>
|
|
9
9
|
* <cg-skeleton variant="text" lines="3"></cg-skeleton>
|
|
10
|
+
* <cg-skeleton no-animation></cg-skeleton>
|
|
10
11
|
* ```
|
|
11
12
|
*
|
|
12
13
|
* @cssprop --cg-color-loading-spinner-secondary - Skeleton background color
|
|
@@ -18,7 +19,12 @@ export declare class CgSkeleton extends LitElement {
|
|
|
18
19
|
width: string;
|
|
19
20
|
height: string;
|
|
20
21
|
lines: number;
|
|
21
|
-
|
|
22
|
+
noAnimation: boolean;
|
|
23
|
+
/** @deprecated Use `noAnimation` / `no-animation`. Kept as a JS-property
|
|
24
|
+
* alias so adapter wrappers and existing consumers don't break — the old
|
|
25
|
+
* `animated="false"` attribute path never worked (Lit Boolean semantics). */
|
|
26
|
+
get animated(): boolean;
|
|
27
|
+
set animated(v: boolean);
|
|
22
28
|
rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';
|
|
23
29
|
private _getDefaultHeight;
|
|
24
30
|
render(): import('lit').TemplateResult<1>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/cg-skeleton/cg-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C
|
|
1
|
+
{"version":3,"file":"cg-skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/cg-skeleton/cg-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;GAaG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BA+CnB;IAEwC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAAiB;IAC5E,KAAK,SAAU;IACf,MAAM,SAAM;IACZ,KAAK,SAAK;IACiC,WAAW,UAAS;IAE3F;;kFAE8E;IAC9E,IAAI,QAAQ,IAAI,OAAO,CAA8B;IACrD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAA4B;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IAElF,OAAO,CAAC,iBAAiB;IAShB,MAAM;CAqChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|