@cognivo/components 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/focus-trap-vlQwKK-3.js +82 -0
- package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
- package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
- package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
- package/dist/cognivo.min.js +3375 -5270
- package/dist/cognivo.min.js.map +1 -1
- package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
- package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
- package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
- package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
- package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
- package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
- package/dist/components/ai-annotation/ai-annotation.js +2 -2
- package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
- package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
- package/dist/components/ai-avatar/ai-avatar.js +1 -1
- package/dist/components/ai-badge/ai-badge.js +1 -1
- package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
- package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
- package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
- package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
- package/dist/components/ai-changelog/ai-changelog.js +26 -26
- package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
- package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
- package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/ai-chat/ai-chat.js +9 -3
- package/dist/components/ai-chat/ai-chat.js.map +1 -1
- package/dist/components/ai-citation/ai-citation.d.ts +0 -6
- package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/ai-citation/ai-citation.js +64 -90
- package/dist/components/ai-citation/ai-citation.js.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
- package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
- package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
- package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
- package/dist/components/ai-context-window/ai-context-window.js +19 -19
- package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
- package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
- package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
- package/dist/components/ai-data-card/ai-data-card.js +2 -2
- package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
- package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
- package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
- package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
- package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
- package/dist/components/ai-data-table/ai-data-table.js +9 -9
- package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
- package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
- package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
- package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
- package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
- package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
- package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.js +10 -5
- package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
- package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
- package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
- package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
- package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
- package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
- package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
- package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
- package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
- package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
- package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
- package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
- package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
- package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
- package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
- package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
- package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
- package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
- package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
- package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
- package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
- package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
- package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
- package/dist/components/ai-presence/ai-presence.js +25 -25
- package/dist/components/ai-presence/ai-presence.js.map +1 -1
- package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
- package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
- package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
- package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
- package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
- package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
- package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
- package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
- package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
- package/dist/components/ai-search/ai-search.js +1 -1
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
- package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
- package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
- package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
- package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
- package/dist/components/ai-status-page/ai-status-page.js +15 -15
- package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
- package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
- package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
- package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
- package/dist/components/ai-thinking/ai-thinking.js +1 -1
- package/dist/components/ai-timeline/ai-timeline.js +2 -2
- package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
- package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
- package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
- package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
- package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
- package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
- package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
- package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
- package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
- package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
- package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
- package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
- package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
- package/dist/components/bias-authority/bias-authority.js +1 -1
- package/dist/components/bias-commitment/bias-commitment.js +1 -1
- package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
- package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
- package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
- package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
- package/dist/components/cg-accordion/cg-accordion.js +51 -43
- package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
- package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.js +24 -24
- package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
- package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
- package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
- package/dist/components/cg-badge/cg-badge.js +26 -20
- package/dist/components/cg-badge/cg-badge.js.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
- package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
- package/dist/components/cg-button/cg-button.d.ts +5 -71
- package/dist/components/cg-button/cg-button.d.ts.map +1 -1
- package/dist/components/cg-button/cg-button.js +63 -172
- package/dist/components/cg-button/cg-button.js.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.js +43 -29
- package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.js +28 -12
- package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
- package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
- package/dist/components/cg-callout/cg-callout.js +49 -48
- package/dist/components/cg-callout/cg-callout.js.map +1 -1
- package/dist/components/cg-card/cg-card.d.ts +9 -22
- package/dist/components/cg-card/cg-card.d.ts.map +1 -1
- package/dist/components/cg-card/cg-card.js +28 -56
- package/dist/components/cg-card/cg-card.js.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.js +19 -13
- package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
- package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
- package/dist/components/cg-chart/cg-chart.js +63 -58
- package/dist/components/cg-chart/cg-chart.js.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
- package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
- package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
- package/dist/components/cg-chip/cg-chip.js +31 -31
- package/dist/components/cg-chip/cg-chip.js.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.js +36 -34
- package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
- package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
- package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.js +13 -6
- package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
- package/dist/components/cg-command/cg-command.d.ts.map +1 -1
- package/dist/components/cg-command/cg-command.js +52 -45
- package/dist/components/cg-command/cg-command.js.map +1 -1
- package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
- package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
- package/dist/components/cg-drawer/cg-drawer.js +3 -3
- package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
- package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
- package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
- package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.js +9 -10
- package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
- package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
- package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
- package/dist/components/cg-form/cg-form.js +17 -17
- package/dist/components/cg-form/cg-form.js.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
- package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
- package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
- package/dist/components/cg-icon/cg-icon.js +44 -37
- package/dist/components/cg-icon/cg-icon.js.map +1 -1
- package/dist/components/cg-image/cg-image.js +2 -2
- package/dist/components/cg-image/cg-image.js.map +1 -1
- package/dist/components/cg-image-block/cg-image-block.js +3 -3
- package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
- package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
- package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
- package/dist/components/cg-input/cg-input.js +3 -3
- package/dist/components/cg-input/cg-input.js.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.js +26 -24
- package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
- package/dist/components/cg-label/cg-label.d.ts +4 -1
- package/dist/components/cg-label/cg-label.d.ts.map +1 -1
- package/dist/components/cg-label/cg-label.js +44 -41
- package/dist/components/cg-label/cg-label.js.map +1 -1
- package/dist/components/cg-link/cg-link.js +23 -23
- package/dist/components/cg-link/cg-link.js.map +1 -1
- package/dist/components/cg-list/cg-list.js +5 -5
- package/dist/components/cg-list/cg-list.js.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.js +46 -40
- package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.js +171 -121
- package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.js +59 -47
- package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
- package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
- package/dist/components/cg-meter/cg-meter.js +76 -76
- package/dist/components/cg-meter/cg-meter.js.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
- package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
- package/dist/components/cg-modal/cg-modal.d.ts +3 -0
- package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
- package/dist/components/cg-modal/cg-modal.js +82 -83
- package/dist/components/cg-modal/cg-modal.js.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.js +64 -55
- package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.js +90 -77
- package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
- package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.js +50 -49
- package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.js +42 -34
- package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
- package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
- package/dist/components/cg-popover/cg-popover.d.ts +12 -2
- package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
- package/dist/components/cg-popover/cg-popover.js +90 -63
- package/dist/components/cg-popover/cg-popover.js.map +1 -1
- package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
- package/dist/components/cg-portal/cg-portal.js +42 -41
- package/dist/components/cg-portal/cg-portal.js.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
- package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
- package/dist/components/cg-radio/cg-radio.d.ts +10 -0
- package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
- package/dist/components/cg-radio/cg-radio.js +59 -48
- package/dist/components/cg-radio/cg-radio.js.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
- package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
- package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
- package/dist/components/cg-rating/cg-rating.js +56 -54
- package/dist/components/cg-rating/cg-rating.js.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.js +45 -35
- package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
- package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
- package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
- package/dist/components/cg-select/cg-select.d.ts +4 -2
- package/dist/components/cg-select/cg-select.d.ts.map +1 -1
- package/dist/components/cg-select/cg-select.js +96 -58
- package/dist/components/cg-select/cg-select.js.map +1 -1
- package/dist/components/cg-separator/cg-separator.d.ts +1 -2
- package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
- package/dist/components/cg-separator/cg-separator.js +5 -8
- package/dist/components/cg-separator/cg-separator.js.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.js +80 -43
- package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
- package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
- package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
- package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
- package/dist/components/cg-slider/cg-slider.js +80 -73
- package/dist/components/cg-slider/cg-slider.js.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.js +10 -19
- package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.js +64 -50
- package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
- package/dist/components/cg-stack/cg-stack.js +1 -1
- package/dist/components/cg-steps/cg-steps.js +1 -1
- package/dist/components/cg-switch/cg-switch.d.ts +3 -0
- package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
- package/dist/components/cg-switch/cg-switch.js +39 -47
- package/dist/components/cg-switch/cg-switch.js.map +1 -1
- package/dist/components/cg-table/cg-table.d.ts +0 -7
- package/dist/components/cg-table/cg-table.d.ts.map +1 -1
- package/dist/components/cg-table/cg-table.js +50 -47
- package/dist/components/cg-table/cg-table.js.map +1 -1
- package/dist/components/cg-tabs/cg-tabs.js +1 -1
- package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
- package/dist/components/cg-text/cg-text.js +1 -1
- package/dist/components/cg-textarea/cg-textarea.js +1 -1
- package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
- package/dist/components/cg-toaster/cg-toaster.js +3 -3
- package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
- package/dist/components/cg-toggle/cg-toggle.js +1 -1
- package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
- package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
- package/dist/foundation.d.ts +0 -16
- package/dist/foundation.d.ts.map +1 -1
- package/dist/foundation.js +174 -206
- package/dist/foundation.js.map +1 -1
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -132
- package/dist/index.js.map +1 -1
- package/dist/utils/focus-trap.d.ts +19 -2
- package/dist/utils/focus-trap.d.ts.map +1 -1
- package/package.json +6 -810
- package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
- package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
- package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
- package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
- package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
- package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
- package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
- package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.js +0 -136
- package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
- package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.js +0 -114
- package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
- package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
- package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
- package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.js +0 -86
- package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
- package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
- package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.js +0 -106
- package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
- package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.js +0 -177
- package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
- package/dist/components/cg-theme/cg-theme.d.ts +0 -82
- package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
- package/dist/components/cg-theme/cg-theme.js +0 -91
- package/dist/components/cg-theme/cg-theme.js.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
- package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
- package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.js +0 -131
- package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
- package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
- package/dist/utils/drag-manager.d.ts +0 -40
- package/dist/utils/drag-manager.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-checkbox.js","sources":["../../../src/components/cg-checkbox/cg-checkbox.ts"],"sourcesContent":["import { LitElement, html, css, nothing, type PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-checkbox\n * Checkbox with animated tick draw, spring bounce, and indeterminate state.\n * Supports rich label content via the default slot — links and other\n * interactive elements inside the label do not toggle the checkbox.\n *\n * @example\n * ```html\n * <cg-checkbox label=\"Accept terms\" description=\"Required to continue\"></cg-checkbox>\n * <cg-checkbox checked label=\"Notifications\"></cg-checkbox>\n * <cg-checkbox indeterminate label=\"Select all\"></cg-checkbox>\n * <cg-checkbox rounded=\"full\" checked label=\"Round checkbox\"></cg-checkbox>\n * <cg-checkbox>I agree to the <a href=\"/terms\">terms</a></cg-checkbox>\n * ```\n *\n * @slot - Default slot for label content (overrides `label` prop)\n * @slot description - Description content (overrides `description` prop)\n *\n * @fires {CustomEvent<{checked: boolean, value: string}>} cg-change - When toggled\n */\n@customElement('cg-checkbox')\nexport class CgCheckbox extends LitElement {\n static formAssociated = true;\n private _internals: ElementInternals | undefined;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n label {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n cursor: pointer;\n padding: var(--cg-spacing-6) 0;\n min-height: 44px;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n }\n :host([disabled]) label {\n pointer-events: none;\n }\n :host([disabled]) .box {\n background: var(--cg-color-checkbox-background-disabled);\n border-color: var(--cg-color-checkbox-border-disabled);\n }\n :host([disabled]) .check-icon {\n color: var(--cg-color-checkbox-checkmark-disabled);\n }\n\n /* ── Box ── */\n .box {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n border: var(--cg-border-width-100) solid var(--cg-color-checkbox-border-default);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default), box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .box { border-radius: 0; }\n :host([rounded=\"sm\"]) .box { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .box { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .box { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .box { border-radius: var(--cg-border-radius-full); }\n\n /* Hover */\n :host(:not([disabled])) label:hover .box {\n border-color: var(--cg-color-checkbox-background-hover);\n }\n\n /* Pressed */\n :host(:not([disabled])) label:active .box {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* Focus ring */\n label:focus-visible .box {\n border-color: var(--cg-color-checkbox-border-focus);\n box-shadow: 0 0 0 2px var(--cg-color-focus-ring-offset), 0 0 0 4px var(--cg-color-focus-ring);\n }\n\n /* ── Checked state ── */\n .box.checked {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n animation: boxPop var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* Indeterminate */\n .box.indeterminate {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n }\n\n /* ── Animated tick — stroke reveal ── */\n .check-icon {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n color: var(--cg-color-checkbox-checkmark-default);\n overflow: visible;\n }\n\n .check-icon .tick {\n stroke-dasharray: 24;\n stroke-dashoffset: 24;\n animation: drawTick var(--cg-transition-duration-slow) 60ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n .check-icon .dash {\n stroke-dasharray: 14;\n stroke-dashoffset: 14;\n animation: drawDash var(--cg-transition-duration-default) 40ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n @keyframes drawTick {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes drawDash {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes boxPop {\n 0% { transform: scale(1); }\n 30% { transform: scale(0.85); }\n 60% { transform: scale(1.08); }\n 80% { transform: scale(0.97); }\n 100% { transform: scale(1); }\n }\n\n /* Hidden native input */\n input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n /* ── Error state ── */\n :host([error]) .box {\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .box.checked,\n :host([error]) .box.indeterminate {\n background: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .label-text {\n color: var(--cg-color-status-error-text-default);\n }\n\n /* ── Success state ── */\n :host([success]) .box {\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .box.checked,\n :host([success]) .box.indeterminate {\n background: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .label-text {\n color: var(--cg-color-status-success-text-default);\n }\n\n /* ── Loading state ── */\n :host([loading]) label { pointer-events: none; opacity: 0.5; }\n .loading-spinner {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n margin-top: var(--cg-spacing-2);\n border: var(--cg-border-width-100) solid var(--cg-color-loading-spinner-secondary);\n border-top-color: var(--cg-color-loading-spinner-primary);\n border-radius: var(--cg-border-radius-full);\n animation: cg-checkbox-spin var(--cg-transition-duration-slow) linear infinite;\n }\n @keyframes cg-checkbox-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Text */\n .text-group { display: flex; flex-direction: column; gap: var(--cg-spacing-2); }\n .label-text {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-base-text);\n line-height: var(--cg-line-height-snug);\n }\n .description {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n line-height: var(--cg-line-height-snug);\n }\n `];\n\n @property() label = '';\n @property() description = '';\n @property() name = '';\n @property() value = '';\n @property({ type: Boolean }) checked = false;\n @property({ type: Boolean }) indeterminate = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) error = false;\n @property({ type: Boolean, reflect: true }) success = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) required = false;\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'sm';\n\n override updated(changed: PropertyValues) {\n super.updated(changed);\n if (changed.has('checked') || changed.has('value')) {\n this._internals?.setFormValue(this.checked ? (this.value || 'on') : null);\n }\n if (changed.has('required') || changed.has('checked')) {\n if (this.required && !this.checked) {\n this._internals?.setValidity({ valueMissing: true }, 'This field is required');\n } else {\n this._internals?.setValidity({});\n }\n }\n }\n\n formResetCallback() {\n this.checked = this.hasAttribute('checked');\n }\n\n formStateRestoreCallback(state: string) {\n this.checked = state === (this.value || 'on');\n }\n\n private _toggle(e: Event) {\n e.preventDefault();\n if (this.disabled || this.loading) return;\n const target = e.target as HTMLElement | null;\n if (target && target !== this) {\n const interactive = target.closest(\n 'a, button, [role=\"button\"], [role=\"link\"], input:not([type=\"checkbox\"]), select, textarea'\n );\n if (interactive) return;\n }\n this.checked = !this.checked;\n this.indeterminate = false;\n this.dispatchEvent(new CustomEvent('cg-change', {\n detail: { checked: this.checked, value: this.value },\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n const state = this.indeterminate ? 'indeterminate' : this.checked ? 'checked' : '';\n\n return html`\n <label\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"checkbox\"\n aria-checked=${this.indeterminate ? 'mixed' : String(this.checked)}\n aria-disabled=${String(this.disabled)}\n aria-required=${this.required ? 'true' : 'false'}\n aria-invalid=${this.error ? 'true' : 'false'}\n aria-busy=${this.loading ? 'true' : 'false'}\n @click=${this._toggle}\n @keydown=${(e: KeyboardEvent) => { if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); this._toggle(e); } }}\n >\n <input type=\"checkbox\" .checked=${this.checked} .indeterminate=${this.indeterminate}\n ?disabled=${this.disabled} name=${this.name} value=${this.value}\n tabindex=\"-1\" aria-hidden=\"true\"\n @click=${(e: Event) => e.stopPropagation()} />\n\n ${this.loading ? html`<span class=\"loading-spinner\" aria-hidden=\"true\"></span>` : html`<span class=\"box ${state}\">\n ${this.checked ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path class=\"tick\" d=\"M4 12L9 17L20 6\"></path>\n </svg>\n ` : nothing}\n ${this.indeterminate ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\">\n <path class=\"dash\" d=\"M5 12h14\"></path>\n </svg>\n ` : nothing}\n </span>`}\n\n <span class=\"text-group\">\n <span class=\"label-text\"><slot>${this.label}</slot></span>\n <span class=\"description\"><slot name=\"description\">${this.description}</slot></span>\n </span>\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-checkbox': CgCheckbox; }\n}\n"],"names":["CgCheckbox","LitElement","changed","state","e","target","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-checkbox.js","sources":["../../../src/components/cg-checkbox/cg-checkbox.ts"],"sourcesContent":["import { LitElement, html, css, nothing, type PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-checkbox\n * Checkbox with animated tick draw, spring bounce, and indeterminate state.\n *\n * @example\n * ```html\n * <cg-checkbox label=\"Accept terms\" description=\"Required to continue\"></cg-checkbox>\n * <cg-checkbox checked label=\"Notifications\"></cg-checkbox>\n * <cg-checkbox indeterminate label=\"Select all\"></cg-checkbox>\n * <cg-checkbox rounded=\"full\" checked label=\"Round checkbox\"></cg-checkbox>\n * ```\n *\n * @fires {CustomEvent<{checked: boolean, value: string}>} cg-change - When toggled\n */\n@customElement('cg-checkbox')\nexport class CgCheckbox extends LitElement {\n static formAssociated = true;\n private _internals: ElementInternals | undefined;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n label {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n cursor: pointer;\n padding: var(--cg-spacing-6) 0;\n min-height: 44px;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n }\n :host([disabled]) label {\n pointer-events: none;\n }\n :host([disabled]) .box {\n background: var(--cg-color-checkbox-background-disabled);\n border-color: var(--cg-color-checkbox-border-disabled);\n }\n :host([disabled]) .check-icon {\n color: var(--cg-color-checkbox-checkmark-disabled);\n }\n\n /* ── Box ── */\n .box {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n border: var(--cg-border-width-100) solid var(--cg-color-checkbox-border-default);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default), box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .box { border-radius: 0; }\n :host([rounded=\"sm\"]) .box { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .box { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .box { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .box { border-radius: var(--cg-border-radius-full); }\n\n /* Hover — scoped so it doesn't override the error/success border, and\n uses the accent BORDER token (not a -background- fill) for the edge. */\n :host(:not([disabled]):not([error]):not([success])) label:hover .box {\n border-color: var(--cg-color-checkbox-border-checked);\n }\n\n /* Pressed */\n :host(:not([disabled])) label:active .box {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* Focus ring */\n label:focus-visible .box {\n border-color: var(--cg-color-checkbox-border-focus);\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring-offset), 0 0 0 calc(var(--cg-border-width-100) * 2) var(--cg-color-focus-ring);\n }\n\n /* ── Checked state ── */\n .box.checked {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n animation: boxPop var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* Indeterminate — same spring entry as checked for consistent feedback. */\n .box.indeterminate {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n animation: boxPop var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Animated tick — stroke reveal ── */\n .check-icon {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n color: var(--cg-color-checkbox-checkmark-default);\n overflow: visible;\n }\n\n .check-icon .tick {\n stroke-dasharray: 24;\n stroke-dashoffset: 24;\n animation: drawTick var(--cg-transition-duration-slow) 60ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n .check-icon .dash {\n stroke-dasharray: 14;\n stroke-dashoffset: 14;\n animation: drawDash var(--cg-transition-duration-default) 40ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n @keyframes drawTick {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes drawDash {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes boxPop {\n 0% { transform: scale(1); }\n 30% { transform: scale(0.85); }\n 60% { transform: scale(1.08); }\n 80% { transform: scale(0.97); }\n 100% { transform: scale(1); }\n }\n\n /* Hidden native input */\n input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n /* ── Error state ── */\n :host([error]) .box {\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .box.checked,\n :host([error]) .box.indeterminate {\n background: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .label-text {\n color: var(--cg-color-status-error-text-default);\n }\n\n /* ── Success state ── */\n :host([success]) .box {\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .box.checked,\n :host([success]) .box.indeterminate {\n background: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .label-text {\n color: var(--cg-color-status-success-text-default);\n }\n\n /* ── Loading state ── */\n :host([loading]) label { pointer-events: none; opacity: 0.5; }\n .loading-spinner {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n margin-top: var(--cg-spacing-2);\n border: var(--cg-border-width-100) solid var(--cg-color-loading-spinner-secondary);\n border-top-color: var(--cg-color-loading-spinner-primary);\n border-radius: var(--cg-border-radius-full);\n animation: cg-checkbox-spin var(--cg-transition-duration-slow) linear infinite;\n }\n @keyframes cg-checkbox-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Text */\n .text-group { display: flex; flex-direction: column; gap: var(--cg-spacing-2); }\n .label-text {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-base-text);\n line-height: var(--cg-line-height-snug);\n }\n .description {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n line-height: var(--cg-line-height-snug);\n }\n `];\n\n @property() label = '';\n @property() description = '';\n @property() name = '';\n @property() value = '';\n @property({ type: Boolean }) checked = false;\n @property({ type: Boolean }) indeterminate = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) error = false;\n @property({ type: Boolean, reflect: true }) success = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) required = false;\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'sm';\n\n override updated(changed: PropertyValues) {\n super.updated(changed);\n if (changed.has('checked') || changed.has('value')) {\n this._internals?.setFormValue(this.checked ? (this.value || 'on') : null);\n }\n if (changed.has('required') || changed.has('checked')) {\n if (this.required && !this.checked) {\n this._internals?.setValidity({ valueMissing: true }, 'This field is required');\n } else {\n this._internals?.setValidity({});\n }\n }\n }\n\n formResetCallback() {\n this.checked = this.hasAttribute('checked');\n }\n\n formStateRestoreCallback(state: string) {\n this.checked = state === (this.value || 'on');\n }\n\n private _toggle(e: Event) {\n e.preventDefault();\n if (this.disabled || this.loading) return;\n this.checked = !this.checked;\n this.indeterminate = false;\n this.dispatchEvent(new CustomEvent('cg-change', {\n detail: { checked: this.checked, value: this.value },\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n const state = this.indeterminate ? 'indeterminate' : this.checked ? 'checked' : '';\n\n return html`\n <label\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"checkbox\"\n aria-checked=${this.indeterminate ? 'mixed' : String(this.checked)}\n aria-disabled=${String(this.disabled)}\n aria-required=${this.required ? 'true' : 'false'}\n aria-invalid=${this.error ? 'true' : 'false'}\n aria-busy=${this.loading ? 'true' : 'false'}\n @click=${this._toggle}\n @keydown=${(e: KeyboardEvent) => { if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); this._toggle(e); } }}\n >\n <input type=\"checkbox\" .checked=${this.checked} .indeterminate=${this.indeterminate}\n ?disabled=${this.disabled} name=${this.name} value=${this.value}\n tabindex=\"-1\" aria-hidden=\"true\"\n @click=${(e: Event) => e.stopPropagation()} />\n\n ${this.loading ? html`<span class=\"loading-spinner\" aria-hidden=\"true\"></span>` : html`<span class=\"box ${state}\">\n ${this.checked ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path class=\"tick\" d=\"M4 12L9 17L20 6\"></path>\n </svg>\n ` : nothing}\n ${this.indeterminate ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\">\n <path class=\"dash\" d=\"M5 12h14\"></path>\n </svg>\n ` : nothing}\n </span>`}\n\n ${this.label ? html`\n <span class=\"text-group\">\n <span class=\"label-text\">${this.label}</span>\n ${this.description ? html`<span class=\"description\">${this.description}</span>` : nothing}\n </span>\n ` : nothing}\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-checkbox': CgCheckbox; }\n}\n"],"names":["CgCheckbox","LitElement","changed","state","e","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { css as u, LitElement as h, nothing as
|
|
2
|
-
import { property as
|
|
3
|
-
import { a as p, r as b } from "../../chunks/premium.css-
|
|
4
|
-
var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor,
|
|
5
|
-
for (var o = s > 1 ? void 0 : s ? m(i,
|
|
6
|
-
(
|
|
7
|
-
return s && o && f(i,
|
|
1
|
+
import { css as u, LitElement as h, nothing as n, html as g } from "lit";
|
|
2
|
+
import { property as t, customElement as v } from "lit/decorators.js";
|
|
3
|
+
import { a as p, r as b } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, a = (r, i, c, s) => {
|
|
5
|
+
for (var o = s > 1 ? void 0 : s ? m(i, c) : i, l = r.length - 1, d; l >= 0; l--)
|
|
6
|
+
(d = r[l]) && (o = (s ? d(i, c, o) : d(o)) || o);
|
|
7
|
+
return s && o && f(i, c, o), o;
|
|
8
8
|
};
|
|
9
9
|
let e = class extends h {
|
|
10
10
|
constructor() {
|
|
@@ -25,22 +25,22 @@ let e = class extends h {
|
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
27
|
render() {
|
|
28
|
-
return
|
|
28
|
+
return g`
|
|
29
29
|
<span
|
|
30
30
|
class="chip ${this.disabled ? "disabled" : ""}"
|
|
31
31
|
role="button"
|
|
32
32
|
tabindex="${this.disabled ? "-1" : "0"}"
|
|
33
33
|
aria-disabled="${this.disabled}"
|
|
34
34
|
aria-pressed="${this.selected}"
|
|
35
|
-
aria-label="${this.label}"
|
|
35
|
+
aria-label="${this.label ? n : this.icon || n}"
|
|
36
36
|
@click="${this._handleClick}"
|
|
37
37
|
@keydown="${(r) => {
|
|
38
38
|
(r.key === "Enter" || r.key === " ") && (r.preventDefault(), this._handleClick()), (r.key === "Delete" || r.key === "Backspace") && this.removable && (r.preventDefault(), this._handleRemove(r));
|
|
39
39
|
}}"
|
|
40
40
|
>
|
|
41
|
-
${this.icon ?
|
|
41
|
+
${this.icon ? g`<span class="chip-icon">${this.icon}</span>` : n}
|
|
42
42
|
<span class="chip-label">${this.label}</span>
|
|
43
|
-
${this.removable && !this.disabled ?
|
|
43
|
+
${this.removable && !this.disabled ? g`
|
|
44
44
|
<button
|
|
45
45
|
class="remove-btn"
|
|
46
46
|
aria-label="Remove ${this.label}"
|
|
@@ -51,7 +51,7 @@ let e = class extends h {
|
|
|
51
51
|
<path d="M7.5 2.5L2.5 7.5M2.5 2.5l5 5" stroke="currentColor" stroke-width="1.25" stroke-linecap="round"/>
|
|
52
52
|
</svg>
|
|
53
53
|
</button>
|
|
54
|
-
` :
|
|
54
|
+
` : n}
|
|
55
55
|
</span>
|
|
56
56
|
`;
|
|
57
57
|
}
|
|
@@ -191,7 +191,7 @@ e.styles = [p, b, u`
|
|
|
191
191
|
.chip-label {
|
|
192
192
|
overflow: hidden;
|
|
193
193
|
text-overflow: ellipsis;
|
|
194
|
-
max-width:
|
|
194
|
+
max-width: var(--cg-spacing-192);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
/* ── Remove button ── */
|
|
@@ -217,37 +217,37 @@ e.styles = [p, b, u`
|
|
|
217
217
|
transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
218
218
|
}
|
|
219
219
|
.remove-btn:hover { opacity: 1; }
|
|
220
|
-
.remove-btn:active { transform: scale(
|
|
220
|
+
.remove-btn:active { transform: scale(var(--cg-interaction-press-scale)); }
|
|
221
221
|
.remove-btn:focus-visible {
|
|
222
222
|
box-shadow: 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);
|
|
223
223
|
outline: none;
|
|
224
224
|
}
|
|
225
225
|
`];
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
a([
|
|
227
|
+
t({ type: String })
|
|
228
228
|
], e.prototype, "label", 2);
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
a([
|
|
230
|
+
t({ type: String, reflect: !0 })
|
|
231
231
|
], e.prototype, "variant", 2);
|
|
232
|
-
|
|
233
|
-
|
|
232
|
+
a([
|
|
233
|
+
t({ type: Boolean })
|
|
234
234
|
], e.prototype, "removable", 2);
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
a([
|
|
236
|
+
t({ type: String, reflect: !0 })
|
|
237
237
|
], e.prototype, "size", 2);
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
a([
|
|
239
|
+
t({ reflect: !0 })
|
|
240
240
|
], e.prototype, "rounded", 2);
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
a([
|
|
242
|
+
t({ type: String })
|
|
243
243
|
], e.prototype, "icon", 2);
|
|
244
|
-
|
|
245
|
-
|
|
244
|
+
a([
|
|
245
|
+
t({ type: Boolean })
|
|
246
246
|
], e.prototype, "disabled", 2);
|
|
247
|
-
|
|
248
|
-
|
|
247
|
+
a([
|
|
248
|
+
t({ type: Boolean, reflect: !0 })
|
|
249
249
|
], e.prototype, "selected", 2);
|
|
250
|
-
e =
|
|
250
|
+
e = a([
|
|
251
251
|
v("cg-chip")
|
|
252
252
|
], e);
|
|
253
253
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-chip.js","sources":["../../../src/components/cg-chip/cg-chip.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-chip\n * Pill-shaped tag/chip with neutral default, color variants, optional icon,\n * removable X button, and toggleable selected state.\n *\n * @example\n * ```html\n * <cg-chip label=\"TypeScript\"></cg-chip>\n * <cg-chip label=\"Bug\" variant=\"error\" removable></cg-chip>\n * <cg-chip label=\"Active\" selected></cg-chip>\n * ```\n *\n * @fires {CustomEvent<{label: string, selected: boolean}>} cg-chip-click - When the chip is clicked\n * @fires {CustomEvent<{label: string}>} cg-chip-remove - When the remove button is clicked\n */\n@customElement('cg-chip')\nexport class CgChip extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n .chip {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-4);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-cards-background);\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n line-height: 1;\n white-space: nowrap;\n user-select: none;\n -webkit-font-smoothing: antialiased;\n transition:\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n /* ── Sizes ── */\n :host([size=\"sm\"]) .chip {\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n height: var(--cg-spacing-24);\n }\n :host([size=\"md\"]) .chip {\n padding: var(--cg-spacing-4) var(--cg-spacing-12);\n font-size: var(--cg-font-size-sm);\n height: var(--cg-spacing-32);\n }\n\n /* ── Hover ── */\n .chip:hover:not(.disabled) {\n border-color: var(--cg-color-input-border-hover);\n transform: scale(1.02);\n }\n\n /* ── Press ── */\n .chip:active:not(.disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* ── Focus ring ── */\n .chip:focus-visible {\n box-shadow:\n 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n outline-offset: var(--cg-outline-offset-default);\n }\n\n /* ── Disabled ── */\n .chip.disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* ── Variant: success ── */\n :host([variant=\"success\"]) .chip {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-border-default);\n }\n :host([variant=\"success\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-success-background-hover);\n }\n\n /* ── Variant: warning ── */\n :host([variant=\"warning\"]) .chip {\n background: var(--cg-color-status-warning-background-default);\n color: var(--cg-color-status-warning-text-default);\n border-color: var(--cg-color-status-warning-border-default);\n }\n :host([variant=\"warning\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-warning-background-hover);\n }\n\n /* ── Variant: error ── */\n :host([variant=\"error\"]) .chip {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-border-default);\n }\n :host([variant=\"error\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-error-background-hover);\n }\n\n /* ── Variant: info ── */\n :host([variant=\"info\"]) .chip {\n background: var(--cg-color-status-info-background-default);\n color: var(--cg-color-status-info-text-default);\n border-color: var(--cg-color-status-info-border-default);\n }\n :host([variant=\"info\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-info-background-hover);\n }\n\n /* ── Selected state ── */\n :host([selected]) .chip {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-color: var(--cg-color-action-primary-background-default);\n }\n :host([selected]) .chip:hover:not(.disabled) {\n background: var(--cg-color-action-primary-background-hover);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .chip { border-radius: 0; }\n :host([rounded=\"sm\"]) .chip { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .chip { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .chip { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .chip { border-radius: var(--cg-border-radius-full); }\n\n /* ── Icon ── */\n .chip-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n font-size: var(--cg-font-size-xs);\n }\n\n /* ── Label ── */\n .chip-label {\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n }\n\n /* ── Remove button ── */\n .remove-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n margin-left: var(--cg-spacing-2);\n margin-right: calc(-1 * var(--cg-spacing-4));\n border: none;\n border-radius: 50%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n opacity: 0.6;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .remove-btn:hover { opacity: 1; }\n .remove-btn:active { transform: scale(0.9); }\n .remove-btn:focus-visible {\n box-shadow: 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n }\n `];\n\n @property({ type: String }) label = '';\n @property({ type: String, reflect: true }) variant: 'default' | 'success' | 'warning' | 'error' | 'info' = 'default';\n @property({ type: Boolean }) removable = false;\n @property({ type: String, reflect: true }) size: 'sm' | 'md' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'full';\n @property({ type: String }) icon = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean, reflect: true }) selected = false;\n\n private _handleClick() {\n if (this.disabled) return;\n this.selected = !this.selected;\n this.dispatchEvent(new CustomEvent('cg-chip-click', {\n bubbles: true,\n composed: true,\n detail: { label: this.label, selected: this.selected },\n }));\n }\n\n private _handleRemove(e: Event) {\n e.stopPropagation();\n if (this.disabled) return;\n this.dispatchEvent(new CustomEvent('cg-chip-remove', {\n bubbles: true,\n composed: true,\n detail: { label: this.label },\n }));\n }\n\n override render() {\n return html`\n <span\n class=\"chip ${this.disabled ? 'disabled' : ''}\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-disabled=\"${this.disabled}\"\n aria-pressed=\"${this.selected}\"\n aria-label=\"${this.label}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._handleClick();\n }\n if ((e.key === 'Delete' || e.key === 'Backspace') && this.removable) {\n e.preventDefault();\n this._handleRemove(e);\n }\n }}\"\n >\n ${this.icon ? html`<span class=\"chip-icon\">${this.icon}</span>` : nothing}\n <span class=\"chip-label\">${this.label}</span>\n ${this.removable && !this.disabled ? html`\n <button\n class=\"remove-btn\"\n aria-label=\"Remove ${this.label}\"\n tabindex=\"-1\"\n @click=\"${this._handleRemove}\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7.5 2.5L2.5 7.5M2.5 2.5l5 5\" stroke=\"currentColor\" stroke-width=\"1.25\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n ` : nothing}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-chip': CgChip;\n }\n}\n"],"names":["CgChip","LitElement","e","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-chip.js","sources":["../../../src/components/cg-chip/cg-chip.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-chip\n * Pill-shaped tag/chip with neutral default, color variants, optional icon,\n * removable X button, and toggleable selected state.\n *\n * @example\n * ```html\n * <cg-chip label=\"TypeScript\"></cg-chip>\n * <cg-chip label=\"Bug\" variant=\"error\" removable></cg-chip>\n * <cg-chip label=\"Active\" selected></cg-chip>\n * ```\n *\n * @fires {CustomEvent<{label: string, selected: boolean}>} cg-chip-click - When the chip is clicked\n * @fires {CustomEvent<{label: string}>} cg-chip-remove - When the remove button is clicked\n */\n@customElement('cg-chip')\nexport class CgChip extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n .chip {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-4);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-cards-background);\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n line-height: 1;\n white-space: nowrap;\n user-select: none;\n -webkit-font-smoothing: antialiased;\n transition:\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n /* ── Sizes ── */\n :host([size=\"sm\"]) .chip {\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n height: var(--cg-spacing-24);\n }\n :host([size=\"md\"]) .chip {\n padding: var(--cg-spacing-4) var(--cg-spacing-12);\n font-size: var(--cg-font-size-sm);\n height: var(--cg-spacing-32);\n }\n\n /* ── Hover ── */\n .chip:hover:not(.disabled) {\n border-color: var(--cg-color-input-border-hover);\n transform: scale(1.02);\n }\n\n /* ── Press ── */\n .chip:active:not(.disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* ── Focus ring ── */\n .chip:focus-visible {\n box-shadow:\n 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n outline-offset: var(--cg-outline-offset-default);\n }\n\n /* ── Disabled ── */\n .chip.disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* ── Variant: success ── */\n :host([variant=\"success\"]) .chip {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-border-default);\n }\n :host([variant=\"success\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-success-background-hover);\n }\n\n /* ── Variant: warning ── */\n :host([variant=\"warning\"]) .chip {\n background: var(--cg-color-status-warning-background-default);\n color: var(--cg-color-status-warning-text-default);\n border-color: var(--cg-color-status-warning-border-default);\n }\n :host([variant=\"warning\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-warning-background-hover);\n }\n\n /* ── Variant: error ── */\n :host([variant=\"error\"]) .chip {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-border-default);\n }\n :host([variant=\"error\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-error-background-hover);\n }\n\n /* ── Variant: info ── */\n :host([variant=\"info\"]) .chip {\n background: var(--cg-color-status-info-background-default);\n color: var(--cg-color-status-info-text-default);\n border-color: var(--cg-color-status-info-border-default);\n }\n :host([variant=\"info\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-info-background-hover);\n }\n\n /* ── Selected state ── */\n :host([selected]) .chip {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-color: var(--cg-color-action-primary-background-default);\n }\n :host([selected]) .chip:hover:not(.disabled) {\n background: var(--cg-color-action-primary-background-hover);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .chip { border-radius: 0; }\n :host([rounded=\"sm\"]) .chip { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .chip { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .chip { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .chip { border-radius: var(--cg-border-radius-full); }\n\n /* ── Icon ── */\n .chip-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n font-size: var(--cg-font-size-xs);\n }\n\n /* ── Label ── */\n .chip-label {\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: var(--cg-spacing-192);\n }\n\n /* ── Remove button ── */\n .remove-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n margin-left: var(--cg-spacing-2);\n margin-right: calc(-1 * var(--cg-spacing-4));\n border: none;\n border-radius: 50%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n opacity: 0.6;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .remove-btn:hover { opacity: 1; }\n .remove-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .remove-btn:focus-visible {\n box-shadow: 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n }\n `];\n\n @property({ type: String }) label = '';\n @property({ type: String, reflect: true }) variant: 'default' | 'success' | 'warning' | 'error' | 'info' = 'default';\n @property({ type: Boolean }) removable = false;\n @property({ type: String, reflect: true }) size: 'sm' | 'md' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'full';\n @property({ type: String }) icon = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean, reflect: true }) selected = false;\n\n private _handleClick() {\n if (this.disabled) return;\n this.selected = !this.selected;\n this.dispatchEvent(new CustomEvent('cg-chip-click', {\n bubbles: true,\n composed: true,\n detail: { label: this.label, selected: this.selected },\n }));\n }\n\n private _handleRemove(e: Event) {\n e.stopPropagation();\n if (this.disabled) return;\n this.dispatchEvent(new CustomEvent('cg-chip-remove', {\n bubbles: true,\n composed: true,\n detail: { label: this.label },\n }));\n }\n\n override render() {\n return html`\n <span\n class=\"chip ${this.disabled ? 'disabled' : ''}\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-disabled=\"${this.disabled}\"\n aria-pressed=\"${this.selected}\"\n aria-label=\"${this.label ? nothing : (this.icon || nothing)}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._handleClick();\n }\n if ((e.key === 'Delete' || e.key === 'Backspace') && this.removable) {\n e.preventDefault();\n this._handleRemove(e);\n }\n }}\"\n >\n ${this.icon ? html`<span class=\"chip-icon\">${this.icon}</span>` : nothing}\n <span class=\"chip-label\">${this.label}</span>\n ${this.removable && !this.disabled ? html`\n <button\n class=\"remove-btn\"\n aria-label=\"Remove ${this.label}\"\n tabindex=\"-1\"\n @click=\"${this._handleRemove}\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7.5 2.5L2.5 7.5M2.5 2.5l5 5\" stroke=\"currentColor\" stroke-width=\"1.25\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n ` : nothing}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-chip': CgChip;\n }\n}\n"],"names":["CgChip","LitElement","e","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-code-block.d.ts","sourceRoot":"","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cg-code-block.d.ts","sourceRoot":"","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AA6CrD,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BAkNnB;IAES,IAAI,SAAM;IACO,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC7D,QAAQ,SAAM;IACd,QAAQ,SAAM;IAC6C,WAAW,UAAS;IAC/C,IAAI,UAAS;IAC5B,WAAW,UAAS;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAQ;YAErB,KAAK;IAQV,MAAM;IAmDf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;CAKpB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,eAAe,EAAE,WAAW,CAAC;KAAE;CAClE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { css as v, LitElement as f, nothing as p, html as
|
|
1
|
+
import { css as v, LitElement as f, nothing as p, html as c } from "lit";
|
|
2
2
|
import { property as l, state as h, customElement as b } from "lit/decorators.js";
|
|
3
|
-
import { h as m, r as y } from "../../chunks/premium.css-
|
|
4
|
-
var w = Object.defineProperty, x = Object.getOwnPropertyDescriptor,
|
|
5
|
-
for (var r = a > 1 ? void 0 : a ? x(e,
|
|
6
|
-
(g = o[
|
|
7
|
-
return a && r && w(e,
|
|
3
|
+
import { h as m, r as y } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var w = Object.defineProperty, x = Object.getOwnPropertyDescriptor, n = (o, e, i, a) => {
|
|
5
|
+
for (var r = a > 1 ? void 0 : a ? x(e, i) : e, s = o.length - 1, g; s >= 0; s--)
|
|
6
|
+
(g = o[s]) && (r = (a ? g(e, i, r) : g(r)) || r);
|
|
7
|
+
return a && r && w(e, i, r), r;
|
|
8
8
|
};
|
|
9
9
|
const d = {
|
|
10
10
|
keyword: /\b(const|let|var|function|return|if|else|for|while|import|export|from|class|extends|new|this|async|await|try|catch|throw|switch|case|break|default|typeof|instanceof|interface|type|enum|public|private|protected|static|override|readonly|abstract|implements|def|lambda|print|self|True|False|None|SELECT|FROM|WHERE|JOIN|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|AND|OR|NOT|IN|IS|NULL|GROUP|ORDER|BY|HAVING|LIMIT|AS|ON|SET|INTO|VALUES)\b/g,
|
|
@@ -15,8 +15,8 @@ const d = {
|
|
|
15
15
|
};
|
|
16
16
|
function u(o) {
|
|
17
17
|
let e = o.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
18
|
-
const
|
|
19
|
-
return e = e.replace(d.comment, (r) => a("comment", r)), e = e.replace(d.string, (r) => a("string", r)), e = e.replace(d.keyword, (r) => a("keyword", r)), e = e.replace(d.function, (r,
|
|
18
|
+
const i = [], a = (r, s) => (i.push(`<span class="hl-${r}">${s}</span>`), `\0${i.length - 1}\0`);
|
|
19
|
+
return e = e.replace(d.comment, (r) => a("comment", r)), e = e.replace(d.string, (r) => a("string", r)), e = e.replace(d.keyword, (r) => a("keyword", r)), e = e.replace(d.function, (r, s) => a("function", s)), e = e.replace(d.number, (r) => a("number", r)), e = e.replace(/\x00(\d+)\x00/g, (r, s) => i[Number(s)]), e;
|
|
20
20
|
}
|
|
21
21
|
let t = class extends f {
|
|
22
22
|
constructor() {
|
|
@@ -32,8 +32,8 @@ let t = class extends f {
|
|
|
32
32
|
}
|
|
33
33
|
render() {
|
|
34
34
|
const o = this.code.split(`
|
|
35
|
-
`), e = this.collapsible && o.length > 15,
|
|
36
|
-
return
|
|
35
|
+
`), e = this.collapsible && o.length > 15, i = u(this.code);
|
|
36
|
+
return c`
|
|
37
37
|
<div class="wrapper">
|
|
38
38
|
<div class="header">
|
|
39
39
|
<div class="header-left">
|
|
@@ -42,28 +42,32 @@ let t = class extends f {
|
|
|
42
42
|
<span class="dot dot-yellow"></span>
|
|
43
43
|
<span class="dot dot-green"></span>
|
|
44
44
|
</div>
|
|
45
|
-
${this.filename ?
|
|
45
|
+
${this.filename ? c`<span class="filename">${this.filename}</span>` : p}
|
|
46
46
|
</div>
|
|
47
47
|
<div class="actions">
|
|
48
|
-
${this.language ?
|
|
49
|
-
<button class="copy-btn ${this._copied ? "copied" : ""}" @click=${this._copy} aria-label
|
|
50
|
-
${this._copied ?
|
|
48
|
+
${this.language ? c`<span class="language">${this.language}</span>` : p}
|
|
49
|
+
<button class="copy-btn ${this._copied ? "copied" : ""}" @click=${this._copy} aria-label=${this._copied ? "Code copied" : "Copy code"}>
|
|
50
|
+
${this._copied ? c`<cg-icon name="check" size="xs"></cg-icon> Copied` : c`<cg-icon name="copy" size="xs"></cg-icon> Copy`}
|
|
51
51
|
</button>
|
|
52
52
|
<span class="sr-only" role="status" aria-live="polite">${this._copied ? "Copied!" : ""}</span>
|
|
53
53
|
</div>
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
|
-
<div class="code-area ${e && this._collapsed ? "collapsed" : ""}">
|
|
57
|
-
<pre>${this.lineNumbers ? o.map((a) =>
|
|
56
|
+
<div id="code-area" class="code-area ${e && this._collapsed ? "collapsed" : ""}">
|
|
57
|
+
<pre>${this.lineNumbers ? o.map((a) => c`<span class="line">${this._highlightLine(a)}\n</span>`) : c`${this._unsafeHTML(i)}`}</pre>
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
|
-
${e
|
|
60
|
+
${e ? c`
|
|
61
61
|
<div class="expand-bar">
|
|
62
|
-
<button
|
|
63
|
-
|
|
62
|
+
<button
|
|
63
|
+
class="expand-btn"
|
|
64
|
+
aria-expanded=${this._collapsed ? "false" : "true"}
|
|
65
|
+
aria-controls="code-area"
|
|
66
|
+
@click=${() => {
|
|
67
|
+
this._collapsed = !this._collapsed;
|
|
64
68
|
}}>
|
|
65
|
-
<cg-icon name
|
|
66
|
-
Show all ${o.length} lines
|
|
69
|
+
<cg-icon name=${this._collapsed ? "chevron-down" : "chevron-up"} size="xs"></cg-icon>
|
|
70
|
+
${this._collapsed ? c`Show all ${o.length} lines` : c`Show less`}
|
|
67
71
|
</button>
|
|
68
72
|
</div>
|
|
69
73
|
` : p}
|
|
@@ -148,7 +152,7 @@ t.styles = [m, y, v`
|
|
|
148
152
|
font-size: var(--cg-font-size-xs);
|
|
149
153
|
font-weight: var(--cg-font-weight-medium);
|
|
150
154
|
text-transform: uppercase;
|
|
151
|
-
letter-spacing:
|
|
155
|
+
letter-spacing: var(--cg-letter-spacing-wider);
|
|
152
156
|
}
|
|
153
157
|
|
|
154
158
|
.copy-btn {
|
|
@@ -230,8 +234,6 @@ t.styles = [m, y, v`
|
|
|
230
234
|
.hl-comment { color: var(--cg-color-code-comment); font-style: italic; }
|
|
231
235
|
.hl-number { color: var(--cg-color-code-number); }
|
|
232
236
|
.hl-function { color: var(--cg-color-code-function); }
|
|
233
|
-
.hl-tag { color: var(--cg-color-code-keyword); }
|
|
234
|
-
.hl-attr { color: var(--cg-color-code-number); }
|
|
235
237
|
|
|
236
238
|
/* ── Expand button ── */
|
|
237
239
|
.expand-bar {
|
|
@@ -291,34 +293,34 @@ t.styles = [m, y, v`
|
|
|
291
293
|
:host([rounded="md"]) .wrapper { border-radius: var(--cg-border-radius-150); }
|
|
292
294
|
:host([rounded="lg"]) .wrapper { border-radius: var(--cg-border-radius-200); }
|
|
293
295
|
`];
|
|
294
|
-
|
|
296
|
+
n([
|
|
295
297
|
l()
|
|
296
298
|
], t.prototype, "code", 2);
|
|
297
|
-
|
|
299
|
+
n([
|
|
298
300
|
l({ reflect: !0 })
|
|
299
301
|
], t.prototype, "rounded", 2);
|
|
300
|
-
|
|
302
|
+
n([
|
|
301
303
|
l()
|
|
302
304
|
], t.prototype, "language", 2);
|
|
303
|
-
|
|
305
|
+
n([
|
|
304
306
|
l()
|
|
305
307
|
], t.prototype, "filename", 2);
|
|
306
|
-
|
|
308
|
+
n([
|
|
307
309
|
l({ type: Boolean, attribute: "line-numbers", reflect: !0 })
|
|
308
310
|
], t.prototype, "lineNumbers", 2);
|
|
309
|
-
|
|
311
|
+
n([
|
|
310
312
|
l({ type: Boolean, reflect: !0 })
|
|
311
313
|
], t.prototype, "wrap", 2);
|
|
312
|
-
|
|
314
|
+
n([
|
|
313
315
|
l({ type: Boolean })
|
|
314
316
|
], t.prototype, "collapsible", 2);
|
|
315
|
-
|
|
317
|
+
n([
|
|
316
318
|
h()
|
|
317
319
|
], t.prototype, "_copied", 2);
|
|
318
|
-
|
|
320
|
+
n([
|
|
319
321
|
h()
|
|
320
322
|
], t.prototype, "_collapsed", 2);
|
|
321
|
-
t =
|
|
323
|
+
t = n([
|
|
322
324
|
b("cg-code-block")
|
|
323
325
|
], t);
|
|
324
326
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-code-block.js","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-code-block> — Code display with syntax highlighting, copy button, and line numbers.\n *\n * @example\n * ```html\n * <cg-code-block code=\"const x = 1;\" language=\"javascript\" line-numbers></cg-code-block>\n * ```\n *\n * @cssprop --cg-color-code-background - Block background\n * @cssprop --cg-color-code-text - Text color\n * @cssprop --cg-color-code-keyword - Keyword highlight color\n */\n\nconst KEYWORD_PATTERNS: Record<string, RegExp> = {\n keyword: /\\b(const|let|var|function|return|if|else|for|while|import|export|from|class|extends|new|this|async|await|try|catch|throw|switch|case|break|default|typeof|instanceof|interface|type|enum|public|private|protected|static|override|readonly|abstract|implements|def|lambda|print|self|True|False|None|SELECT|FROM|WHERE|JOIN|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|AND|OR|NOT|IN|IS|NULL|GROUP|ORDER|BY|HAVING|LIMIT|AS|ON|SET|INTO|VALUES)\\b/g,\n string: /([\"'`])(?:(?!\\1|\\\\).|\\\\.)*?\\1/g,\n comment: /\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/|#.*$/gm,\n number: /\\b\\d+\\.?\\d*\\b/g,\n function: /\\b([a-zA-Z_]\\w*)\\s*(?=\\()/g,\n tag: /(<\\/?[a-zA-Z][a-zA-Z0-9-]*)/g,\n attr: /\\b([a-zA-Z-]+)(?==)/g,\n punctuation: /[{}()\\[\\];,.:]/g,\n};\n\nfunction highlight(code: string): string {\n let escaped = code.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\n const tokens: string[] = [];\n const placeholder = (cls: string, text: string) => {\n tokens.push(`<span class=\"hl-${cls}\">${text}</span>`);\n return `\\x00${tokens.length - 1}\\x00`;\n };\n\n escaped = escaped.replace(KEYWORD_PATTERNS.comment!, m => placeholder('comment', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.string!, m => placeholder('string', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.keyword!, m => placeholder('keyword', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.function!, (_, name) => placeholder('function', name));\n escaped = escaped.replace(KEYWORD_PATTERNS.number!, m => placeholder('number', m));\n\n escaped = escaped.replace(/\\x00(\\d+)\\x00/g, (_, idx) => tokens[Number(idx)]!);\n\n return escaped;\n}\n\n@customElement('cg-code-block')\nexport class CgCodeBlock extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n .wrapper {\n background: var(--cg-color-code-background);\n border-radius: var(--cg-border-radius-200);\n overflow: hidden;\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cg-spacing-16);\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n min-height: var(--cg-spacing-48);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-16);\n min-width: 0;\n flex: 1;\n }\n\n .dots {\n display: flex;\n gap: var(--cg-spacing-6);\n flex-shrink: 0;\n }\n .dot {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-full);\n }\n .dot-red { background: var(--cg-color-chart-8-background); }\n .dot-yellow { background: var(--cg-color-chart-7-background); }\n .dot-green { background: var(--cg-color-chart-3-background); }\n\n .filename {\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-code-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n\n .actions {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-shrink: 0;\n }\n\n .language {\n display: inline-flex;\n align-items: center;\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-muted);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .copy-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n border: none;\n color: var(--cg-color-code-muted);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .copy-btn:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-text);\n }\n .copy-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .copy-btn.copied {\n color: var(--cg-color-status-success-text-default);\n }\n .copy-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n /* ── Code area ── */\n .code-area {\n overflow-x: auto;\n overflow-y: auto;\n }\n .code-area.collapsed { max-height: var(--cg-spacing-256); }\n\n pre {\n margin: 0;\n padding: var(--cg-spacing-20) var(--cg-spacing-24);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-relaxed);\n color: var(--cg-color-code-text);\n tab-size: 2;\n counter-reset: line;\n font-variant-numeric: tabular-nums;\n }\n\n :host([wrap]) pre { white-space: pre-wrap; word-break: break-all; }\n\n /* ── Line numbers ── */\n .line {\n display: block;\n }\n :host([line-numbers]) .line::before {\n counter-increment: line;\n content: counter(line);\n display: inline-block;\n width: 3ch;\n padding-right: var(--cg-spacing-16);\n margin-right: var(--cg-spacing-16);\n border-right: var(--cg-border-width-50) solid var(--cg-color-code-border);\n color: var(--cg-color-code-muted);\n text-align: right;\n user-select: none;\n opacity: 0.6;\n }\n\n /* ── Syntax highlighting ── */\n .hl-keyword { color: var(--cg-color-code-keyword); font-weight: var(--cg-font-weight-medium); }\n .hl-string { color: var(--cg-color-code-string); }\n .hl-comment { color: var(--cg-color-code-comment); font-style: italic; }\n .hl-number { color: var(--cg-color-code-number); }\n .hl-function { color: var(--cg-color-code-function); }\n .hl-tag { color: var(--cg-color-code-keyword); }\n .hl-attr { color: var(--cg-color-code-number); }\n\n /* ── Expand button ── */\n .expand-bar {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) var(--cg-spacing-12) var(--cg-spacing-12);\n background: linear-gradient(transparent, var(--cg-color-code-background) 60%);\n margin-top: calc(var(--cg-spacing-48) * -1);\n position: relative;\n }\n .expand-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-16);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-code-muted);\n background: var(--cg-color-code-surface);\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n transition:\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .expand-btn:hover {\n color: var(--cg-color-code-text);\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .expand-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .expand-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .wrapper { border-radius: 0; }\n :host([rounded=\"sm\"]) .wrapper { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"md\"]) .wrapper { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .wrapper { border-radius: var(--cg-border-radius-200); }\n `];\n\n @property() code = '';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property() language = '';\n @property() filename = '';\n @property({ type: Boolean, attribute: 'line-numbers', reflect: true }) lineNumbers = false;\n @property({ type: Boolean, reflect: true }) wrap = false;\n @property({ type: Boolean }) collapsible = false;\n\n @state() private _copied = false;\n @state() private _collapsed = true;\n\n private async _copy() {\n try {\n await navigator.clipboard.writeText(this.code);\n this._copied = true;\n setTimeout(() => { this._copied = false; }, 2000);\n } catch { /* noop */ }\n }\n\n override render() {\n const lines = this.code.split('\\n');\n const isLong = this.collapsible && lines.length > 15;\n const highlighted = highlight(this.code);\n\n return html`\n <div class=\"wrapper\">\n <div class=\"header\">\n <div class=\"header-left\">\n <div class=\"dots\">\n <span class=\"dot dot-red\"></span>\n <span class=\"dot dot-yellow\"></span>\n <span class=\"dot dot-green\"></span>\n </div>\n ${this.filename ? html`<span class=\"filename\">${this.filename}</span>` : nothing}\n </div>\n <div class=\"actions\">\n ${this.language ? html`<span class=\"language\">${this.language}</span>` : nothing}\n <button class=\"copy-btn ${this._copied ? 'copied' : ''}\" @click=${this._copy} aria-label=\"Copy code\">\n ${this._copied\n ? html`<cg-icon name=\"check\" size=\"xs\"></cg-icon> Copied`\n : html`<cg-icon name=\"copy\" size=\"xs\"></cg-icon> Copy`\n }\n </button>\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\">${this._copied ? 'Copied!' : ''}</span>\n </div>\n </div>\n\n <div class=\"code-area ${isLong && this._collapsed ? 'collapsed' : ''}\">\n <pre>${this.lineNumbers\n ? lines.map(l => html`<span class=\"line\">${this._highlightLine(l)}\\n</span>`)\n : html`${this._unsafeHTML(highlighted)}`\n }</pre>\n </div>\n\n ${isLong && this._collapsed ? html`\n <div class=\"expand-bar\">\n <button class=\"expand-btn\" aria-expanded=\"false\" @click=${() => { this._collapsed = false; }}>\n <cg-icon name=\"chevron-down\" size=\"xs\"></cg-icon>\n Show all ${lines.length} lines\n </button>\n </div>\n ` : nothing}\n </div>\n `;\n }\n\n private _highlightLine(line: string): unknown {\n return this._unsafeHTML(highlight(line));\n }\n\n private _unsafeHTML(html: string): unknown {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template.content.cloneNode(true);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-code-block': CgCodeBlock; }\n}\n"],"names":["KEYWORD_PATTERNS","highlight","code","escaped","tokens","placeholder","cls","text","m","_","name","idx","CgCodeBlock","LitElement","lines","isLong","highlighted","html","nothing","l","line","template","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AAiBA,MAAMA,IAA2C;AAAA,EAC/C,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAIZ;AAEA,SAASC,EAAUC,GAAsB;AACvC,MAAIC,IAAUD,EAAK,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAEpF,QAAME,IAAmB,CAAA,GACnBC,IAAc,CAACC,GAAaC,OAChCH,EAAO,KAAK,mBAAmBE,CAAG,KAAKC,CAAI,SAAS,GAC7C,KAAOH,EAAO,SAAS,CAAC;AAGjC,SAAAD,IAAUA,EAAQ,QAAQH,EAAiB,SAAU,OAAKK,EAAY,WAAWG,CAAC,CAAC,GACnFL,IAAUA,EAAQ,QAAQH,EAAiB,QAAS,OAAKK,EAAY,UAAUG,CAAC,CAAC,GACjFL,IAAUA,EAAQ,QAAQH,EAAiB,SAAU,OAAKK,EAAY,WAAWG,CAAC,CAAC,GACnFL,IAAUA,EAAQ,QAAQH,EAAiB,UAAW,CAACS,GAAGC,MAASL,EAAY,YAAYK,CAAI,CAAC,GAChGP,IAAUA,EAAQ,QAAQH,EAAiB,QAAS,OAAKK,EAAY,UAAUG,CAAC,CAAC,GAEjFL,IAAUA,EAAQ,QAAQ,kBAAkB,CAACM,GAAGE,MAAQP,EAAO,OAAOO,CAAG,CAAC,CAAE,GAErER;AACT;AAGO,IAAMS,IAAN,cAA0BC,EAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GAuNO,KAAA,OAAO,IACU,KAAA,UAAuC,MACxD,KAAA,WAAW,IACX,KAAA,WAAW,IACgD,KAAA,cAAc,IACzC,KAAA,OAAO,IACtB,KAAA,cAAc,IAElC,KAAQ,UAAU,IAClB,KAAQ,aAAa;AAAA,EAAA;AAAA,EAE9B,MAAc,QAAQ;AACpB,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,KAAK,IAAI,GAC7C,KAAK,UAAU,IACf,WAAW,MAAM;AAAE,aAAK,UAAU;AAAA,MAAO,GAAG,GAAI;AAAA,IAClD,QAAQ;AAAA,IAAa;AAAA,EACvB;AAAA,EAES,SAAS;AAChB,UAAMC,IAAQ,KAAK,KAAK,MAAM;AAAA,CAAI,GAC5BC,IAAS,KAAK,eAAeD,EAAM,SAAS,IAC5CE,IAAcf,EAAU,KAAK,IAAI;AAEvC,WAAOgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cASG,KAAK,WAAWA,2BAA8B,KAAK,QAAQ,YAAYC,CAAO;AAAA;AAAA;AAAA,cAG9E,KAAK,WAAWD,2BAA8B,KAAK,QAAQ,YAAYC,CAAO;AAAA,sCACtD,KAAK,UAAU,WAAW,EAAE,YAAY,KAAK,KAAK;AAAA,gBACxE,KAAK,UACHD,uDACAA,iDACJ;AAAA;AAAA,qEAEuD,KAAK,UAAU,YAAY,EAAE;AAAA;AAAA;AAAA;AAAA,gCAIlEF,KAAU,KAAK,aAAa,cAAc,EAAE;AAAA,iBAC3D,KAAK,cACRD,EAAM,IAAI,CAAAK,MAAKF,uBAA0B,KAAK,eAAeE,CAAC,CAAC,WAAW,IAC1EF,IAAO,KAAK,YAAYD,CAAW,CAAC,EACxC;AAAA;AAAA;AAAA,UAGAD,KAAU,KAAK,aAAaE;AAAA;AAAA,sEAEgC,MAAM;AAAE,WAAK,aAAa;AAAA,IAAO,CAAC;AAAA;AAAA,yBAE/EH,EAAM,MAAM;AAAA;AAAA;AAAA,YAGzBI,CAAO;AAAA;AAAA;AAAA,EAGjB;AAAA,EAEQ,eAAeE,GAAuB;AAC5C,WAAO,KAAK,YAAYnB,EAAUmB,CAAI,CAAC;AAAA,EACzC;AAAA,EAEQ,YAAYH,GAAuB;AACzC,UAAMI,IAAW,SAAS,cAAc,UAAU;AAClD,WAAAA,EAAS,YAAYJ,GACdI,EAAS,QAAQ,UAAU,EAAI;AAAA,EACxC;AACF;AAlSaT,EACK,SAAS,CAACU,GAAWC,GAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAoNnD;AAEWC,EAAA;AAAA,EAAXC,EAAA;AAAS,GAvNCd,EAuNC,WAAA,QAAA,CAAA;AACiBa,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAxNhBd,EAwNkB,WAAA,WAAA,CAAA;AACjBa,EAAA;AAAA,EAAXC,EAAA;AAAS,GAzNCd,EAyNC,WAAA,YAAA,CAAA;AACAa,EAAA;AAAA,EAAXC,EAAA;AAAS,GA1NCd,EA0NC,WAAA,YAAA,CAAA;AAC2Da,EAAA;AAAA,EAAtEC,EAAS,EAAE,MAAM,SAAS,WAAW,gBAAgB,SAAS,IAAM;AAAA,GA3N1Dd,EA2N4D,WAAA,eAAA,CAAA;AAC3Ba,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA5N/Bd,EA4NiC,WAAA,QAAA,CAAA;AACfa,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA7NhBd,EA6NkB,WAAA,eAAA,CAAA;AAEZa,EAAA;AAAA,EAAhBE,EAAA;AAAM,GA/NIf,EA+NM,WAAA,WAAA,CAAA;AACAa,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAhOIf,EAgOM,WAAA,cAAA,CAAA;AAhONA,IAANa,EAAA;AAAA,EADNG,EAAc,eAAe;AAAA,GACjBhB,CAAA;"}
|
|
1
|
+
{"version":3,"file":"cg-code-block.js","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-code-block> — Code display with syntax highlighting, copy button, and line numbers.\n *\n * @example\n * ```html\n * <cg-code-block code=\"const x = 1;\" language=\"javascript\" line-numbers></cg-code-block>\n * ```\n *\n * @cssprop --cg-color-code-background - Block background\n * @cssprop --cg-color-code-text - Text color\n * @cssprop --cg-color-code-keyword - Keyword highlight color\n */\n\nconst KEYWORD_PATTERNS: Record<string, RegExp> = {\n keyword: /\\b(const|let|var|function|return|if|else|for|while|import|export|from|class|extends|new|this|async|await|try|catch|throw|switch|case|break|default|typeof|instanceof|interface|type|enum|public|private|protected|static|override|readonly|abstract|implements|def|lambda|print|self|True|False|None|SELECT|FROM|WHERE|JOIN|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|AND|OR|NOT|IN|IS|NULL|GROUP|ORDER|BY|HAVING|LIMIT|AS|ON|SET|INTO|VALUES)\\b/g,\n string: /([\"'`])(?:(?!\\1|\\\\).|\\\\.)*?\\1/g,\n comment: /\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/|#.*$/gm,\n number: /\\b\\d+\\.?\\d*\\b/g,\n function: /\\b([a-zA-Z_]\\w*)\\s*(?=\\()/g,\n};\n\nfunction highlight(code: string): string {\n let escaped = code.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\n const tokens: string[] = [];\n const placeholder = (cls: string, text: string) => {\n tokens.push(`<span class=\"hl-${cls}\">${text}</span>`);\n return `\\x00${tokens.length - 1}\\x00`;\n };\n\n escaped = escaped.replace(KEYWORD_PATTERNS.comment!, m => placeholder('comment', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.string!, m => placeholder('string', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.keyword!, m => placeholder('keyword', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.function!, (_, name) => placeholder('function', name));\n escaped = escaped.replace(KEYWORD_PATTERNS.number!, m => placeholder('number', m));\n\n escaped = escaped.replace(/\\x00(\\d+)\\x00/g, (_, idx) => tokens[Number(idx)]!);\n\n return escaped;\n}\n\n@customElement('cg-code-block')\nexport class CgCodeBlock extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n .wrapper {\n background: var(--cg-color-code-background);\n border-radius: var(--cg-border-radius-200);\n overflow: hidden;\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cg-spacing-16);\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n min-height: var(--cg-spacing-48);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-16);\n min-width: 0;\n flex: 1;\n }\n\n .dots {\n display: flex;\n gap: var(--cg-spacing-6);\n flex-shrink: 0;\n }\n .dot {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-full);\n }\n .dot-red { background: var(--cg-color-chart-8-background); }\n .dot-yellow { background: var(--cg-color-chart-7-background); }\n .dot-green { background: var(--cg-color-chart-3-background); }\n\n .filename {\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-code-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n\n .actions {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-shrink: 0;\n }\n\n .language {\n display: inline-flex;\n align-items: center;\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-muted);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wider);\n }\n\n .copy-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n border: none;\n color: var(--cg-color-code-muted);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n font-family: inherit;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .copy-btn:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-text);\n }\n .copy-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .copy-btn.copied {\n color: var(--cg-color-status-success-text-default);\n }\n .copy-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n /* ── Code area ── */\n .code-area {\n overflow-x: auto;\n overflow-y: auto;\n }\n .code-area.collapsed { max-height: var(--cg-spacing-256); }\n\n pre {\n margin: 0;\n padding: var(--cg-spacing-20) var(--cg-spacing-24);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-relaxed);\n color: var(--cg-color-code-text);\n tab-size: 2;\n counter-reset: line;\n font-variant-numeric: tabular-nums;\n }\n\n :host([wrap]) pre { white-space: pre-wrap; word-break: break-all; }\n\n /* ── Line numbers ── */\n .line {\n display: block;\n }\n :host([line-numbers]) .line::before {\n counter-increment: line;\n content: counter(line);\n display: inline-block;\n width: 3ch;\n padding-right: var(--cg-spacing-16);\n margin-right: var(--cg-spacing-16);\n border-right: var(--cg-border-width-50) solid var(--cg-color-code-border);\n color: var(--cg-color-code-muted);\n text-align: right;\n user-select: none;\n opacity: 0.6;\n }\n\n /* ── Syntax highlighting ── */\n .hl-keyword { color: var(--cg-color-code-keyword); font-weight: var(--cg-font-weight-medium); }\n .hl-string { color: var(--cg-color-code-string); }\n .hl-comment { color: var(--cg-color-code-comment); font-style: italic; }\n .hl-number { color: var(--cg-color-code-number); }\n .hl-function { color: var(--cg-color-code-function); }\n\n /* ── Expand button ── */\n .expand-bar {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) var(--cg-spacing-12) var(--cg-spacing-12);\n background: linear-gradient(transparent, var(--cg-color-code-background) 60%);\n margin-top: calc(var(--cg-spacing-48) * -1);\n position: relative;\n }\n .expand-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-16);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-code-muted);\n background: var(--cg-color-code-surface);\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n transition:\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .expand-btn:hover {\n color: var(--cg-color-code-text);\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .expand-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .expand-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .wrapper { border-radius: 0; }\n :host([rounded=\"sm\"]) .wrapper { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"md\"]) .wrapper { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .wrapper { border-radius: var(--cg-border-radius-200); }\n `];\n\n @property() code = '';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property() language = '';\n @property() filename = '';\n @property({ type: Boolean, attribute: 'line-numbers', reflect: true }) lineNumbers = false;\n @property({ type: Boolean, reflect: true }) wrap = false;\n @property({ type: Boolean }) collapsible = false;\n\n @state() private _copied = false;\n @state() private _collapsed = true;\n\n private async _copy() {\n try {\n await navigator.clipboard.writeText(this.code);\n this._copied = true;\n setTimeout(() => { this._copied = false; }, 2000);\n } catch { /* noop */ }\n }\n\n override render() {\n const lines = this.code.split('\\n');\n const isLong = this.collapsible && lines.length > 15;\n const highlighted = highlight(this.code);\n\n return html`\n <div class=\"wrapper\">\n <div class=\"header\">\n <div class=\"header-left\">\n <div class=\"dots\">\n <span class=\"dot dot-red\"></span>\n <span class=\"dot dot-yellow\"></span>\n <span class=\"dot dot-green\"></span>\n </div>\n ${this.filename ? html`<span class=\"filename\">${this.filename}</span>` : nothing}\n </div>\n <div class=\"actions\">\n ${this.language ? html`<span class=\"language\">${this.language}</span>` : nothing}\n <button class=\"copy-btn ${this._copied ? 'copied' : ''}\" @click=${this._copy} aria-label=${this._copied ? 'Code copied' : 'Copy code'}>\n ${this._copied\n ? html`<cg-icon name=\"check\" size=\"xs\"></cg-icon> Copied`\n : html`<cg-icon name=\"copy\" size=\"xs\"></cg-icon> Copy`\n }\n </button>\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\">${this._copied ? 'Copied!' : ''}</span>\n </div>\n </div>\n\n <div id=\"code-area\" class=\"code-area ${isLong && this._collapsed ? 'collapsed' : ''}\">\n <pre>${this.lineNumbers\n ? lines.map(l => html`<span class=\"line\">${this._highlightLine(l)}\\n</span>`)\n : html`${this._unsafeHTML(highlighted)}`\n }</pre>\n </div>\n\n ${isLong ? html`\n <div class=\"expand-bar\">\n <button\n class=\"expand-btn\"\n aria-expanded=${this._collapsed ? 'false' : 'true'}\n aria-controls=\"code-area\"\n @click=${() => { this._collapsed = !this._collapsed; }}>\n <cg-icon name=${this._collapsed ? 'chevron-down' : 'chevron-up'} size=\"xs\"></cg-icon>\n ${this._collapsed ? html`Show all ${lines.length} lines` : html`Show less`}\n </button>\n </div>\n ` : nothing}\n </div>\n `;\n }\n\n private _highlightLine(line: string): unknown {\n return this._unsafeHTML(highlight(line));\n }\n\n private _unsafeHTML(html: string): unknown {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template.content.cloneNode(true);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-code-block': CgCodeBlock; }\n}\n"],"names":["KEYWORD_PATTERNS","highlight","code","escaped","tokens","placeholder","cls","text","m","_","name","idx","CgCodeBlock","LitElement","lines","isLong","highlighted","html","nothing","l","line","template","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/cg-collapsible/cg-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"cg-collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/cg-collapsible/cg-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAuGnB;IAEyC,IAAI,UAAS;IACb,QAAQ,UAAS;IAChC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAU;IAEhE,OAAO,CAAC,OAAO;IAUN,MAAM;CAsBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,aAAa,CAAC;KACjC;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as i, customElement as
|
|
3
|
-
import { h as
|
|
4
|
-
var f = Object.defineProperty,
|
|
5
|
-
for (var
|
|
6
|
-
(d =
|
|
7
|
-
return a &&
|
|
1
|
+
import { css as l, LitElement as g, html as p } from "lit";
|
|
2
|
+
import { property as i, customElement as v } from "lit/decorators.js";
|
|
3
|
+
import { h as b, r as u } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var f = Object.defineProperty, h = Object.getOwnPropertyDescriptor, e = (c, t, n, a) => {
|
|
5
|
+
for (var r = a > 1 ? void 0 : a ? h(t, n) : t, s = c.length - 1, d; s >= 0; s--)
|
|
6
|
+
(d = c[s]) && (r = (a ? d(t, n, r) : d(r)) || r);
|
|
7
|
+
return a && r && f(t, n, r), r;
|
|
8
8
|
};
|
|
9
|
-
let
|
|
9
|
+
let o = class extends g {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.open = !1, this.disabled = !1, this.size = "md", this.variant = "card";
|
|
12
12
|
}
|
|
@@ -40,7 +40,7 @@ let r = class extends g {
|
|
|
40
40
|
`;
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
|
-
|
|
43
|
+
o.styles = [b, u, l`
|
|
44
44
|
:host {
|
|
45
45
|
display: block;
|
|
46
46
|
overflow: hidden;
|
|
@@ -52,6 +52,11 @@ r.styles = [v, u, c`
|
|
|
52
52
|
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
53
53
|
border-radius: var(--cg-component-collapsible-radius);
|
|
54
54
|
}
|
|
55
|
+
/* Open card: structural divider under the trigger so the expanded state
|
|
56
|
+
reads beyond the chevron alone (card is the default variant). */
|
|
57
|
+
:host([variant="card"][open]) .trigger {
|
|
58
|
+
border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);
|
|
59
|
+
}
|
|
55
60
|
|
|
56
61
|
/* ── Variant: flush — no chrome, just hover affordance ── */
|
|
57
62
|
:host([variant="flush"]) .trigger {
|
|
@@ -76,7 +81,7 @@ r.styles = [v, u, c`
|
|
|
76
81
|
font-weight: var(--cg-font-weight-medium);
|
|
77
82
|
text-align: left;
|
|
78
83
|
cursor: pointer;
|
|
79
|
-
transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
84
|
+
transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
/* ── Sizes ── */
|
|
@@ -141,20 +146,20 @@ r.styles = [v, u, c`
|
|
|
141
146
|
`];
|
|
142
147
|
e([
|
|
143
148
|
i({ type: Boolean, reflect: !0 })
|
|
144
|
-
],
|
|
149
|
+
], o.prototype, "open", 2);
|
|
145
150
|
e([
|
|
146
151
|
i({ type: Boolean, reflect: !0 })
|
|
147
|
-
],
|
|
152
|
+
], o.prototype, "disabled", 2);
|
|
148
153
|
e([
|
|
149
154
|
i({ reflect: !0 })
|
|
150
|
-
],
|
|
155
|
+
], o.prototype, "size", 2);
|
|
151
156
|
e([
|
|
152
157
|
i({ reflect: !0 })
|
|
153
|
-
],
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
],
|
|
158
|
+
], o.prototype, "variant", 2);
|
|
159
|
+
o = e([
|
|
160
|
+
v("cg-collapsible")
|
|
161
|
+
], o);
|
|
157
162
|
export {
|
|
158
|
-
|
|
163
|
+
o as CgCollapsible
|
|
159
164
|
};
|
|
160
165
|
//# sourceMappingURL=cg-collapsible.js.map
|