@cognivo/components 0.8.0
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/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/ai.d.ts +102 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +181 -0
- package/dist/ai.js.map +1 -0
- package/dist/bias.d.ts +21 -0
- package/dist/bias.d.ts.map +1 -0
- package/dist/bias.js +15 -0
- package/dist/bias.js.map +1 -0
- package/dist/chunks/floating-DfsaYJnh.js +103 -0
- package/dist/chunks/floating-DfsaYJnh.js.map +1 -0
- package/dist/chunks/focus-trap-BdRNhSPD.js +53 -0
- package/dist/chunks/focus-trap-BdRNhSPD.js.map +1 -0
- package/dist/chunks/outside-click-CP1P1fK3.js +15 -0
- package/dist/chunks/outside-click-CP1P1fK3.js.map +1 -0
- package/dist/chunks/premium.css-9I4kHrsl.js +466 -0
- package/dist/chunks/premium.css-9I4kHrsl.js.map +1 -0
- package/dist/chunks/roving-index-BuO0tTba.js +31 -0
- package/dist/chunks/roving-index-BuO0tTba.js.map +1 -0
- package/dist/cognivo.min.js +33066 -0
- package/dist/cognivo.min.js.map +1 -0
- package/dist/components/ai-ab-test/ai-ab-test.d.ts +22 -0
- package/dist/components/ai-ab-test/ai-ab-test.d.ts.map +1 -0
- package/dist/components/ai-ab-test/ai-ab-test.js +173 -0
- package/dist/components/ai-ab-test/ai-ab-test.js.map +1 -0
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts +33 -0
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -0
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js +380 -0
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -0
- package/dist/components/ai-action-preview/ai-action-preview.d.ts +32 -0
- package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -0
- package/dist/components/ai-action-preview/ai-action-preview.js +295 -0
- package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -0
- package/dist/components/ai-agent-card/ai-agent-card.d.ts +18 -0
- package/dist/components/ai-agent-card/ai-agent-card.d.ts.map +1 -0
- package/dist/components/ai-agent-card/ai-agent-card.js +267 -0
- package/dist/components/ai-agent-card/ai-agent-card.js.map +1 -0
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +53 -0
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -0
- package/dist/components/ai-agent-steps/ai-agent-steps.js +297 -0
- package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -0
- package/dist/components/ai-alert-card/ai-alert-card.d.ts +25 -0
- package/dist/components/ai-alert-card/ai-alert-card.d.ts.map +1 -0
- package/dist/components/ai-alert-card/ai-alert-card.js +235 -0
- package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -0
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +51 -0
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -0
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js +334 -0
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -0
- package/dist/components/ai-annotation/ai-annotation.d.ts +34 -0
- package/dist/components/ai-annotation/ai-annotation.d.ts.map +1 -0
- package/dist/components/ai-annotation/ai-annotation.js +254 -0
- package/dist/components/ai-annotation/ai-annotation.js.map +1 -0
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +35 -0
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -0
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js +443 -0
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -0
- package/dist/components/ai-app-sidebar/ai-app-sidebar.d.ts +26 -0
- package/dist/components/ai-app-sidebar/ai-app-sidebar.d.ts.map +1 -0
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js +206 -0
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -0
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts +28 -0
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -0
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js +335 -0
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -0
- package/dist/components/ai-audio-player/ai-audio-player.d.ts +31 -0
- package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -0
- package/dist/components/ai-audio-player/ai-audio-player.js +274 -0
- package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -0
- package/dist/components/ai-avatar/ai-avatar.d.ts +20 -0
- package/dist/components/ai-avatar/ai-avatar.d.ts.map +1 -0
- package/dist/components/ai-avatar/ai-avatar.js +77 -0
- package/dist/components/ai-avatar/ai-avatar.js.map +1 -0
- package/dist/components/ai-badge/ai-badge.d.ts +20 -0
- package/dist/components/ai-badge/ai-badge.d.ts.map +1 -0
- package/dist/components/ai-badge/ai-badge.js +69 -0
- package/dist/components/ai-badge/ai-badge.js.map +1 -0
- package/dist/components/ai-batch-progress/ai-batch-progress.d.ts +21 -0
- package/dist/components/ai-batch-progress/ai-batch-progress.d.ts.map +1 -0
- package/dist/components/ai-batch-progress/ai-batch-progress.js +334 -0
- package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -0
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +31 -0
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -0
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js +314 -0
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -0
- package/dist/components/ai-capture-flow/ai-capture-flow.d.ts +33 -0
- package/dist/components/ai-capture-flow/ai-capture-flow.d.ts.map +1 -0
- package/dist/components/ai-capture-flow/ai-capture-flow.js +336 -0
- package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -0
- package/dist/components/ai-changelog/ai-changelog.d.ts +24 -0
- package/dist/components/ai-changelog/ai-changelog.d.ts.map +1 -0
- package/dist/components/ai-changelog/ai-changelog.js +292 -0
- package/dist/components/ai-changelog/ai-changelog.js.map +1 -0
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +30 -0
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -0
- package/dist/components/ai-chart-summary/ai-chart-summary.js +269 -0
- package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -0
- package/dist/components/ai-chat/ai-chat.d.ts +70 -0
- package/dist/components/ai-chat/ai-chat.d.ts.map +1 -0
- package/dist/components/ai-chat/ai-chat.js +707 -0
- package/dist/components/ai-chat/ai-chat.js.map +1 -0
- package/dist/components/ai-citation/ai-citation.d.ts +27 -0
- package/dist/components/ai-citation/ai-citation.d.ts.map +1 -0
- package/dist/components/ai-citation/ai-citation.js +277 -0
- package/dist/components/ai-citation/ai-citation.js.map +1 -0
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +54 -0
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -0
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +387 -0
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -0
- package/dist/components/ai-command-palette/ai-command-palette.d.ts +34 -0
- package/dist/components/ai-command-palette/ai-command-palette.d.ts.map +1 -0
- package/dist/components/ai-command-palette/ai-command-palette.js +119 -0
- package/dist/components/ai-command-palette/ai-command-palette.js.map +1 -0
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +31 -0
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -0
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js +200 -0
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -0
- package/dist/components/ai-confidence-slider/ai-confidence-slider.d.ts +16 -0
- package/dist/components/ai-confidence-slider/ai-confidence-slider.d.ts.map +1 -0
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js +212 -0
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -0
- package/dist/components/ai-consent-manager/ai-consent-manager.d.ts +26 -0
- package/dist/components/ai-consent-manager/ai-consent-manager.d.ts.map +1 -0
- package/dist/components/ai-consent-manager/ai-consent-manager.js +169 -0
- package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -0
- package/dist/components/ai-context-window/ai-context-window.d.ts +20 -0
- package/dist/components/ai-context-window/ai-context-window.d.ts.map +1 -0
- package/dist/components/ai-context-window/ai-context-window.js +201 -0
- package/dist/components/ai-context-window/ai-context-window.js.map +1 -0
- package/dist/components/ai-copy-button/ai-copy-button.d.ts +23 -0
- package/dist/components/ai-copy-button/ai-copy-button.d.ts.map +1 -0
- package/dist/components/ai-copy-button/ai-copy-button.js +193 -0
- package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -0
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.d.ts +28 -0
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.d.ts.map +1 -0
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +328 -0
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -0
- package/dist/components/ai-data-card/ai-data-card.d.ts +50 -0
- package/dist/components/ai-data-card/ai-data-card.d.ts.map +1 -0
- package/dist/components/ai-data-card/ai-data-card.js +358 -0
- package/dist/components/ai-data-card/ai-data-card.js.map +1 -0
- package/dist/components/ai-data-lineage/ai-data-lineage.d.ts +28 -0
- package/dist/components/ai-data-lineage/ai-data-lineage.d.ts.map +1 -0
- package/dist/components/ai-data-lineage/ai-data-lineage.js +200 -0
- package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -0
- package/dist/components/ai-data-preview/ai-data-preview.d.ts +31 -0
- package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -0
- package/dist/components/ai-data-preview/ai-data-preview.js +415 -0
- package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -0
- package/dist/components/ai-data-table/ai-data-table.d.ts +62 -0
- package/dist/components/ai-data-table/ai-data-table.d.ts.map +1 -0
- package/dist/components/ai-data-table/ai-data-table.js +388 -0
- package/dist/components/ai-data-table/ai-data-table.js.map +1 -0
- package/dist/components/ai-debug-console/ai-debug-console.d.ts +39 -0
- package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -0
- package/dist/components/ai-debug-console/ai-debug-console.js +517 -0
- package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -0
- package/dist/components/ai-detection-canvas/ai-detection-canvas.d.ts +26 -0
- package/dist/components/ai-detection-canvas/ai-detection-canvas.d.ts.map +1 -0
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js +233 -0
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -0
- package/dist/components/ai-diff-panel/ai-diff-panel.d.ts +35 -0
- package/dist/components/ai-diff-panel/ai-diff-panel.d.ts.map +1 -0
- package/dist/components/ai-diff-panel/ai-diff-panel.js +374 -0
- package/dist/components/ai-diff-panel/ai-diff-panel.js.map +1 -0
- package/dist/components/ai-embedding-viz/ai-embedding-viz.d.ts +31 -0
- package/dist/components/ai-embedding-viz/ai-embedding-viz.d.ts.map +1 -0
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js +256 -0
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -0
- package/dist/components/ai-empty-state/ai-empty-state.d.ts +18 -0
- package/dist/components/ai-empty-state/ai-empty-state.d.ts.map +1 -0
- package/dist/components/ai-empty-state/ai-empty-state.js +58 -0
- package/dist/components/ai-empty-state/ai-empty-state.js.map +1 -0
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts +17 -0
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -0
- package/dist/components/ai-error-boundary/ai-error-boundary.js +212 -0
- package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -0
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.d.ts +19 -0
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.d.ts.map +1 -0
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +199 -0
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -0
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +43 -0
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -0
- package/dist/components/ai-feature-flag/ai-feature-flag.js +457 -0
- package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -0
- package/dist/components/ai-feedback/ai-feedback.d.ts +28 -0
- package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -0
- package/dist/components/ai-feedback/ai-feedback.js +478 -0
- package/dist/components/ai-feedback/ai-feedback.js.map +1 -0
- package/dist/components/ai-file-upload/ai-file-upload.d.ts +18 -0
- package/dist/components/ai-file-upload/ai-file-upload.d.ts.map +1 -0
- package/dist/components/ai-file-upload/ai-file-upload.js +70 -0
- package/dist/components/ai-file-upload/ai-file-upload.js.map +1 -0
- package/dist/components/ai-form-generator/ai-form-generator.d.ts +39 -0
- package/dist/components/ai-form-generator/ai-form-generator.d.ts.map +1 -0
- package/dist/components/ai-form-generator/ai-form-generator.js +225 -0
- package/dist/components/ai-form-generator/ai-form-generator.js.map +1 -0
- package/dist/components/ai-guardrail/ai-guardrail.d.ts +22 -0
- package/dist/components/ai-guardrail/ai-guardrail.d.ts.map +1 -0
- package/dist/components/ai-guardrail/ai-guardrail.js +229 -0
- package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -0
- package/dist/components/ai-heatmap/ai-heatmap.d.ts +38 -0
- package/dist/components/ai-heatmap/ai-heatmap.d.ts.map +1 -0
- package/dist/components/ai-heatmap/ai-heatmap.js +250 -0
- package/dist/components/ai-heatmap/ai-heatmap.js.map +1 -0
- package/dist/components/ai-insight-card/ai-insight-card.d.ts +28 -0
- package/dist/components/ai-insight-card/ai-insight-card.d.ts.map +1 -0
- package/dist/components/ai-insight-card/ai-insight-card.js +319 -0
- package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -0
- package/dist/components/ai-json-viewer/ai-json-viewer.d.ts +24 -0
- package/dist/components/ai-json-viewer/ai-json-viewer.d.ts.map +1 -0
- package/dist/components/ai-json-viewer/ai-json-viewer.js +173 -0
- package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -0
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.d.ts +25 -0
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.d.ts.map +1 -0
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +240 -0
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -0
- package/dist/components/ai-kpi-grid/ai-kpi-grid.d.ts +26 -0
- package/dist/components/ai-kpi-grid/ai-kpi-grid.d.ts.map +1 -0
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js +180 -0
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -0
- package/dist/components/ai-labeling-board/ai-labeling-board.d.ts +31 -0
- package/dist/components/ai-labeling-board/ai-labeling-board.d.ts.map +1 -0
- package/dist/components/ai-labeling-board/ai-labeling-board.js +393 -0
- package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -0
- package/dist/components/ai-memory-panel/ai-memory-panel.d.ts +24 -0
- package/dist/components/ai-memory-panel/ai-memory-panel.d.ts.map +1 -0
- package/dist/components/ai-memory-panel/ai-memory-panel.js +238 -0
- package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -0
- package/dist/components/ai-model-comparison/ai-model-comparison.d.ts +25 -0
- package/dist/components/ai-model-comparison/ai-model-comparison.d.ts.map +1 -0
- package/dist/components/ai-model-comparison/ai-model-comparison.js +321 -0
- package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -0
- package/dist/components/ai-model-selector/ai-model-selector.d.ts +29 -0
- package/dist/components/ai-model-selector/ai-model-selector.d.ts.map +1 -0
- package/dist/components/ai-model-selector/ai-model-selector.js +200 -0
- package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -0
- package/dist/components/ai-notification-center/ai-notification-center.d.ts +34 -0
- package/dist/components/ai-notification-center/ai-notification-center.d.ts.map +1 -0
- package/dist/components/ai-notification-center/ai-notification-center.js +334 -0
- package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -0
- package/dist/components/ai-onboarding/ai-onboarding.d.ts +35 -0
- package/dist/components/ai-onboarding/ai-onboarding.d.ts.map +1 -0
- package/dist/components/ai-onboarding/ai-onboarding.js +375 -0
- package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -0
- package/dist/components/ai-permission-gate/ai-permission-gate.d.ts +27 -0
- package/dist/components/ai-permission-gate/ai-permission-gate.d.ts.map +1 -0
- package/dist/components/ai-permission-gate/ai-permission-gate.js +193 -0
- package/dist/components/ai-permission-gate/ai-permission-gate.js.map +1 -0
- package/dist/components/ai-personalization-dash/ai-personalization-dash.d.ts +27 -0
- package/dist/components/ai-personalization-dash/ai-personalization-dash.d.ts.map +1 -0
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js +181 -0
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js.map +1 -0
- package/dist/components/ai-presence/ai-presence.d.ts +27 -0
- package/dist/components/ai-presence/ai-presence.d.ts.map +1 -0
- package/dist/components/ai-presence/ai-presence.js +261 -0
- package/dist/components/ai-presence/ai-presence.js.map +1 -0
- package/dist/components/ai-progress-steps/ai-progress-steps.d.ts +20 -0
- package/dist/components/ai-progress-steps/ai-progress-steps.d.ts.map +1 -0
- package/dist/components/ai-progress-steps/ai-progress-steps.js +201 -0
- package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -0
- package/dist/components/ai-prompt-editor/ai-prompt-editor.d.ts +25 -0
- package/dist/components/ai-prompt-editor/ai-prompt-editor.d.ts.map +1 -0
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js +294 -0
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js.map +1 -0
- package/dist/components/ai-prompt-template/ai-prompt-template.d.ts +20 -0
- package/dist/components/ai-prompt-template/ai-prompt-template.d.ts.map +1 -0
- package/dist/components/ai-prompt-template/ai-prompt-template.js +288 -0
- package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -0
- package/dist/components/ai-rag-panel/ai-rag-panel.d.ts +24 -0
- package/dist/components/ai-rag-panel/ai-rag-panel.d.ts.map +1 -0
- package/dist/components/ai-rag-panel/ai-rag-panel.js +226 -0
- package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -0
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.d.ts +20 -0
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.d.ts.map +1 -0
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +180 -0
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -0
- package/dist/components/ai-result-panel/ai-result-panel.d.ts +35 -0
- package/dist/components/ai-result-panel/ai-result-panel.d.ts.map +1 -0
- package/dist/components/ai-result-panel/ai-result-panel.js +412 -0
- package/dist/components/ai-result-panel/ai-result-panel.js.map +1 -0
- package/dist/components/ai-reveal-animation/ai-reveal-animation.d.ts +28 -0
- package/dist/components/ai-reveal-animation/ai-reveal-animation.d.ts.map +1 -0
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js +146 -0
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -0
- package/dist/components/ai-reward-signal/ai-reward-signal.d.ts +22 -0
- package/dist/components/ai-reward-signal/ai-reward-signal.d.ts.map +1 -0
- package/dist/components/ai-reward-signal/ai-reward-signal.js +231 -0
- package/dist/components/ai-reward-signal/ai-reward-signal.js.map +1 -0
- package/dist/components/ai-rich-message/ai-rich-message.d.ts +38 -0
- package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -0
- package/dist/components/ai-rich-message/ai-rich-message.js +285 -0
- package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -0
- package/dist/components/ai-scenario-panel/ai-scenario-panel.d.ts +19 -0
- package/dist/components/ai-scenario-panel/ai-scenario-panel.d.ts.map +1 -0
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js +182 -0
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -0
- package/dist/components/ai-search/ai-search.d.ts +38 -0
- package/dist/components/ai-search/ai-search.d.ts.map +1 -0
- package/dist/components/ai-search/ai-search.js +397 -0
- package/dist/components/ai-search/ai-search.js.map +1 -0
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.d.ts +21 -0
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.d.ts.map +1 -0
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +185 -0
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -0
- package/dist/components/ai-sidebar/ai-sidebar.d.ts +19 -0
- package/dist/components/ai-sidebar/ai-sidebar.d.ts.map +1 -0
- package/dist/components/ai-sidebar/ai-sidebar.js +59 -0
- package/dist/components/ai-sidebar/ai-sidebar.js.map +1 -0
- package/dist/components/ai-similarity-card/ai-similarity-card.d.ts +23 -0
- package/dist/components/ai-similarity-card/ai-similarity-card.d.ts.map +1 -0
- package/dist/components/ai-similarity-card/ai-similarity-card.js +224 -0
- package/dist/components/ai-similarity-card/ai-similarity-card.js.map +1 -0
- package/dist/components/ai-source-graph/ai-source-graph.d.ts +19 -0
- package/dist/components/ai-source-graph/ai-source-graph.d.ts.map +1 -0
- package/dist/components/ai-source-graph/ai-source-graph.js +226 -0
- package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -0
- package/dist/components/ai-status-page/ai-status-page.d.ts +32 -0
- package/dist/components/ai-status-page/ai-status-page.d.ts.map +1 -0
- package/dist/components/ai-status-page/ai-status-page.js +304 -0
- package/dist/components/ai-status-page/ai-status-page.js.map +1 -0
- package/dist/components/ai-streaming-text/ai-streaming-text.d.ts +23 -0
- package/dist/components/ai-streaming-text/ai-streaming-text.d.ts.map +1 -0
- package/dist/components/ai-streaming-text/ai-streaming-text.js +80 -0
- package/dist/components/ai-streaming-text/ai-streaming-text.js.map +1 -0
- package/dist/components/ai-test-runner/ai-test-runner.d.ts +37 -0
- package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -0
- package/dist/components/ai-test-runner/ai-test-runner.js +448 -0
- package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -0
- package/dist/components/ai-thinking/ai-thinking.d.ts +33 -0
- package/dist/components/ai-thinking/ai-thinking.d.ts.map +1 -0
- package/dist/components/ai-thinking/ai-thinking.js +371 -0
- package/dist/components/ai-thinking/ai-thinking.js.map +1 -0
- package/dist/components/ai-timeline/ai-timeline.d.ts +28 -0
- package/dist/components/ai-timeline/ai-timeline.d.ts.map +1 -0
- package/dist/components/ai-timeline/ai-timeline.js +378 -0
- package/dist/components/ai-timeline/ai-timeline.js.map +1 -0
- package/dist/components/ai-toast/ai-toast.d.ts +27 -0
- package/dist/components/ai-toast/ai-toast.d.ts.map +1 -0
- package/dist/components/ai-toast/ai-toast.js +68 -0
- package/dist/components/ai-toast/ai-toast.js.map +1 -0
- package/dist/components/ai-token-tracker/ai-token-tracker.d.ts +20 -0
- package/dist/components/ai-token-tracker/ai-token-tracker.d.ts.map +1 -0
- package/dist/components/ai-token-tracker/ai-token-tracker.js +235 -0
- package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -0
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.d.ts +31 -0
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.d.ts.map +1 -0
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +225 -0
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -0
- package/dist/components/ai-tool-indicator/ai-tool-indicator.d.ts +18 -0
- package/dist/components/ai-tool-indicator/ai-tool-indicator.d.ts.map +1 -0
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js +186 -0
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -0
- package/dist/components/ai-transform-slider/ai-transform-slider.d.ts +21 -0
- package/dist/components/ai-transform-slider/ai-transform-slider.d.ts.map +1 -0
- package/dist/components/ai-transform-slider/ai-transform-slider.js +270 -0
- package/dist/components/ai-transform-slider/ai-transform-slider.js.map +1 -0
- package/dist/components/ai-translation-panel/ai-translation-panel.d.ts +24 -0
- package/dist/components/ai-translation-panel/ai-translation-panel.d.ts.map +1 -0
- package/dist/components/ai-translation-panel/ai-translation-panel.js +347 -0
- package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -0
- package/dist/components/ai-usage-meter/ai-usage-meter.d.ts +33 -0
- package/dist/components/ai-usage-meter/ai-usage-meter.d.ts.map +1 -0
- package/dist/components/ai-usage-meter/ai-usage-meter.js +286 -0
- package/dist/components/ai-usage-meter/ai-usage-meter.js.map +1 -0
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +35 -0
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -0
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js +360 -0
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -0
- package/dist/components/ai-version-selector/ai-version-selector.d.ts +28 -0
- package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -0
- package/dist/components/ai-version-selector/ai-version-selector.js +326 -0
- package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -0
- package/dist/components/ai-voice-panel/ai-voice-panel.d.ts +46 -0
- package/dist/components/ai-voice-panel/ai-voice-panel.d.ts.map +1 -0
- package/dist/components/ai-voice-panel/ai-voice-panel.js +363 -0
- package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -0
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +46 -0
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -0
- package/dist/components/ai-webhook-config/ai-webhook-config.js +358 -0
- package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -0
- package/dist/components/ai-workflow-builder/ai-workflow-builder.d.ts +26 -0
- package/dist/components/ai-workflow-builder/ai-workflow-builder.d.ts.map +1 -0
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js +179 -0
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -0
- package/dist/components/bias-anchoring/bias-anchoring.d.ts +35 -0
- package/dist/components/bias-anchoring/bias-anchoring.d.ts.map +1 -0
- package/dist/components/bias-anchoring/bias-anchoring.js +107 -0
- package/dist/components/bias-anchoring/bias-anchoring.js.map +1 -0
- package/dist/components/bias-authority/bias-authority.d.ts +31 -0
- package/dist/components/bias-authority/bias-authority.d.ts.map +1 -0
- package/dist/components/bias-authority/bias-authority.js +97 -0
- package/dist/components/bias-authority/bias-authority.js.map +1 -0
- package/dist/components/bias-commitment/bias-commitment.d.ts +39 -0
- package/dist/components/bias-commitment/bias-commitment.d.ts.map +1 -0
- package/dist/components/bias-commitment/bias-commitment.js +115 -0
- package/dist/components/bias-commitment/bias-commitment.js.map +1 -0
- package/dist/components/bias-reciprocity/bias-reciprocity.d.ts +30 -0
- package/dist/components/bias-reciprocity/bias-reciprocity.d.ts.map +1 -0
- package/dist/components/bias-reciprocity/bias-reciprocity.js +86 -0
- package/dist/components/bias-reciprocity/bias-reciprocity.js.map +1 -0
- package/dist/components/bias-scarcity/bias-scarcity.d.ts +39 -0
- package/dist/components/bias-scarcity/bias-scarcity.d.ts.map +1 -0
- package/dist/components/bias-scarcity/bias-scarcity.js +120 -0
- package/dist/components/bias-scarcity/bias-scarcity.js.map +1 -0
- package/dist/components/bias-social-proof/bias-social-proof.d.ts +37 -0
- package/dist/components/bias-social-proof/bias-social-proof.d.ts.map +1 -0
- package/dist/components/bias-social-proof/bias-social-proof.js +112 -0
- package/dist/components/bias-social-proof/bias-social-proof.js.map +1 -0
- package/dist/components/cg-accordion/cg-accordion.d.ts +34 -0
- package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -0
- package/dist/components/cg-accordion/cg-accordion.js +219 -0
- package/dist/components/cg-accordion/cg-accordion.js.map +1 -0
- package/dist/components/cg-alert-dialog/cg-alert-dialog.d.ts +53 -0
- package/dist/components/cg-alert-dialog/cg-alert-dialog.d.ts.map +1 -0
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js +220 -0
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -0
- package/dist/components/cg-app-shell/cg-app-shell.d.ts +54 -0
- package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +1 -0
- package/dist/components/cg-app-shell/cg-app-shell.js +135 -0
- package/dist/components/cg-app-shell/cg-app-shell.js.map +1 -0
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts +34 -0
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -0
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +47 -0
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -0
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +61 -0
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +1 -0
- package/dist/components/cg-auth-shell/cg-auth-shell.js +163 -0
- package/dist/components/cg-auth-shell/cg-auth-shell.js.map +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +50 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.js +279 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -0
- package/dist/components/cg-avatar/cg-avatar.d.ts +35 -0
- package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -0
- package/dist/components/cg-avatar/cg-avatar.js +171 -0
- package/dist/components/cg-avatar/cg-avatar.js.map +1 -0
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts +39 -0
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -0
- package/dist/components/cg-avatar-group/cg-avatar-group.js +218 -0
- package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -0
- package/dist/components/cg-badge/cg-badge.d.ts +37 -0
- package/dist/components/cg-badge/cg-badge.d.ts.map +1 -0
- package/dist/components/cg-badge/cg-badge.js +125 -0
- package/dist/components/cg-badge/cg-badge.js.map +1 -0
- package/dist/components/cg-badge-group/cg-badge-group.d.ts +28 -0
- package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -0
- package/dist/components/cg-badge-group/cg-badge-group.js +78 -0
- package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -0
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.d.ts +52 -0
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.d.ts.map +1 -0
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +286 -0
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -0
- package/dist/components/cg-button/cg-button.d.ts +106 -0
- package/dist/components/cg-button/cg-button.d.ts.map +1 -0
- package/dist/components/cg-button/cg-button.js +355 -0
- package/dist/components/cg-button/cg-button.js.map +1 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts +25 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -0
- package/dist/components/cg-button-group/cg-button-group.js +89 -0
- package/dist/components/cg-button-group/cg-button-group.js.map +1 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts +52 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -0
- package/dist/components/cg-calendar/cg-calendar.js +346 -0
- package/dist/components/cg-calendar/cg-calendar.js.map +1 -0
- package/dist/components/cg-callout/cg-callout.d.ts +32 -0
- package/dist/components/cg-callout/cg-callout.d.ts.map +1 -0
- package/dist/components/cg-callout/cg-callout.js +197 -0
- package/dist/components/cg-callout/cg-callout.js.map +1 -0
- package/dist/components/cg-card/cg-card.d.ts +60 -0
- package/dist/components/cg-card/cg-card.d.ts.map +1 -0
- package/dist/components/cg-card/cg-card.js +207 -0
- package/dist/components/cg-card/cg-card.js.map +1 -0
- package/dist/components/cg-carousel/cg-carousel.d.ts +52 -0
- package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -0
- package/dist/components/cg-carousel/cg-carousel.js +262 -0
- package/dist/components/cg-carousel/cg-carousel.js.map +1 -0
- package/dist/components/cg-chart/cg-chart.d.ts +55 -0
- package/dist/components/cg-chart/cg-chart.d.ts.map +1 -0
- package/dist/components/cg-chart/cg-chart.js +381 -0
- package/dist/components/cg-chart/cg-chart.js.map +1 -0
- package/dist/components/cg-checkbox/cg-checkbox.d.ts +50 -0
- package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -0
- package/dist/components/cg-checkbox/cg-checkbox.js +294 -0
- package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -0
- package/dist/components/cg-chip/cg-chip.d.ts +36 -0
- package/dist/components/cg-chip/cg-chip.d.ts.map +1 -0
- package/dist/components/cg-chip/cg-chip.js +256 -0
- package/dist/components/cg-chip/cg-chip.js.map +1 -0
- package/dist/components/cg-code-block/cg-code-block.d.ts +23 -0
- package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -0
- package/dist/components/cg-code-block/cg-code-block.js +327 -0
- package/dist/components/cg-code-block/cg-code-block.js.map +1 -0
- package/dist/components/cg-collapsible/cg-collapsible.d.ts +34 -0
- package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -0
- package/dist/components/cg-collapsible/cg-collapsible.js +160 -0
- package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts +51 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -0
- package/dist/components/cg-color-picker/cg-color-picker.js +492 -0
- package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -0
- package/dist/components/cg-combobox/cg-combobox.d.ts +56 -0
- package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -0
- package/dist/components/cg-combobox/cg-combobox.js +374 -0
- package/dist/components/cg-combobox/cg-combobox.js.map +1 -0
- package/dist/components/cg-command/cg-command.d.ts +65 -0
- package/dist/components/cg-command/cg-command.d.ts.map +1 -0
- package/dist/components/cg-command/cg-command.js +339 -0
- package/dist/components/cg-command/cg-command.js.map +1 -0
- package/dist/components/cg-context-menu/cg-context-menu.d.ts +66 -0
- package/dist/components/cg-context-menu/cg-context-menu.d.ts.map +1 -0
- package/dist/components/cg-context-menu/cg-context-menu.js +165 -0
- package/dist/components/cg-context-menu/cg-context-menu.js.map +1 -0
- package/dist/components/cg-date-picker/cg-date-picker.d.ts +44 -0
- package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -0
- package/dist/components/cg-date-picker/cg-date-picker.js +240 -0
- package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +45 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js +266 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -0
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts +66 -0
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -0
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js +521 -0
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -0
- package/dist/components/cg-definition-list/cg-definition-list.d.ts +99 -0
- package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +1 -0
- package/dist/components/cg-definition-list/cg-definition-list.js +332 -0
- package/dist/components/cg-definition-list/cg-definition-list.js.map +1 -0
- package/dist/components/cg-draggable/cg-draggable.d.ts +53 -0
- package/dist/components/cg-draggable/cg-draggable.d.ts.map +1 -0
- package/dist/components/cg-draggable/cg-draggable.js +136 -0
- package/dist/components/cg-draggable/cg-draggable.js.map +1 -0
- package/dist/components/cg-drawer/cg-drawer.d.ts +57 -0
- package/dist/components/cg-drawer/cg-drawer.d.ts.map +1 -0
- package/dist/components/cg-drawer/cg-drawer.js +421 -0
- package/dist/components/cg-drawer/cg-drawer.js.map +1 -0
- package/dist/components/cg-dropdown/cg-dropdown.d.ts +63 -0
- package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -0
- package/dist/components/cg-dropdown/cg-dropdown.js +232 -0
- package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -0
- package/dist/components/cg-droppable/cg-droppable.d.ts +57 -0
- package/dist/components/cg-droppable/cg-droppable.d.ts.map +1 -0
- package/dist/components/cg-droppable/cg-droppable.js +114 -0
- package/dist/components/cg-droppable/cg-droppable.js.map +1 -0
- package/dist/components/cg-empty-state/cg-empty-state.d.ts +54 -0
- package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -0
- package/dist/components/cg-empty-state/cg-empty-state.js +201 -0
- package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -0
- package/dist/components/cg-file-input/cg-file-input.d.ts +101 -0
- package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -0
- package/dist/components/cg-file-input/cg-file-input.js +684 -0
- package/dist/components/cg-file-input/cg-file-input.js.map +1 -0
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +50 -0
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +1 -0
- package/dist/components/cg-filter-bar/cg-filter-bar.js +115 -0
- package/dist/components/cg-filter-bar/cg-filter-bar.js.map +1 -0
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +55 -0
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +1 -0
- package/dist/components/cg-filter-chip/cg-filter-chip.js +213 -0
- package/dist/components/cg-filter-chip/cg-filter-chip.js.map +1 -0
- package/dist/components/cg-focus-scope/cg-focus-scope.d.ts +38 -0
- package/dist/components/cg-focus-scope/cg-focus-scope.d.ts.map +1 -0
- package/dist/components/cg-focus-scope/cg-focus-scope.js +47 -0
- package/dist/components/cg-focus-scope/cg-focus-scope.js.map +1 -0
- package/dist/components/cg-follow-up/cg-follow-up.d.ts +32 -0
- package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -0
- package/dist/components/cg-follow-up/cg-follow-up.js +233 -0
- package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -0
- package/dist/components/cg-form/cg-form.d.ts +32 -0
- package/dist/components/cg-form/cg-form.d.ts.map +1 -0
- package/dist/components/cg-form/cg-form.js +109 -0
- package/dist/components/cg-form/cg-form.js.map +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts +49 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.js +149 -0
- package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -0
- package/dist/components/cg-icon/cg-icon.d.ts +28 -0
- package/dist/components/cg-icon/cg-icon.d.ts.map +1 -0
- package/dist/components/cg-icon/cg-icon.js +339 -0
- package/dist/components/cg-icon/cg-icon.js.map +1 -0
- package/dist/components/cg-icon/solar-icons.d.ts +12 -0
- package/dist/components/cg-icon/solar-icons.d.ts.map +1 -0
- package/dist/components/cg-image/cg-image.d.ts +31 -0
- package/dist/components/cg-image/cg-image.d.ts.map +1 -0
- package/dist/components/cg-image/cg-image.js +168 -0
- package/dist/components/cg-image/cg-image.js.map +1 -0
- package/dist/components/cg-image-block/cg-image-block.d.ts +36 -0
- package/dist/components/cg-image-block/cg-image-block.d.ts.map +1 -0
- package/dist/components/cg-image-block/cg-image-block.js +214 -0
- package/dist/components/cg-image-block/cg-image-block.js.map +1 -0
- package/dist/components/cg-image-gallery/cg-image-gallery.d.ts +34 -0
- package/dist/components/cg-image-gallery/cg-image-gallery.d.ts.map +1 -0
- package/dist/components/cg-image-gallery/cg-image-gallery.js +158 -0
- package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -0
- package/dist/components/cg-input/cg-input.d.ts +65 -0
- package/dist/components/cg-input/cg-input.d.ts.map +1 -0
- package/dist/components/cg-input/cg-input.js +425 -0
- package/dist/components/cg-input/cg-input.js.map +1 -0
- package/dist/components/cg-kanban/cg-kanban.d.ts +44 -0
- package/dist/components/cg-kanban/cg-kanban.d.ts.map +1 -0
- package/dist/components/cg-kanban/cg-kanban.js +86 -0
- package/dist/components/cg-kanban/cg-kanban.js.map +1 -0
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +58 -0
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +1 -0
- package/dist/components/cg-kanban-column/cg-kanban-column.js +144 -0
- package/dist/components/cg-kanban-column/cg-kanban-column.js.map +1 -0
- package/dist/components/cg-kbd/cg-kbd.d.ts +27 -0
- package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -0
- package/dist/components/cg-kbd/cg-kbd.js +91 -0
- package/dist/components/cg-kbd/cg-kbd.js.map +1 -0
- package/dist/components/cg-label/cg-label.d.ts +26 -0
- package/dist/components/cg-label/cg-label.d.ts.map +1 -0
- package/dist/components/cg-label/cg-label.js +89 -0
- package/dist/components/cg-label/cg-label.js.map +1 -0
- package/dist/components/cg-link/cg-link.d.ts +27 -0
- package/dist/components/cg-link/cg-link.d.ts.map +1 -0
- package/dist/components/cg-link/cg-link.js +152 -0
- package/dist/components/cg-link/cg-link.js.map +1 -0
- package/dist/components/cg-list/cg-list.d.ts +37 -0
- package/dist/components/cg-list/cg-list.d.ts.map +1 -0
- package/dist/components/cg-list/cg-list.js +314 -0
- package/dist/components/cg-list/cg-list.js.map +1 -0
- package/dist/components/cg-listbox/cg-listbox.d.ts +38 -0
- package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -0
- package/dist/components/cg-listbox/cg-listbox.js +258 -0
- package/dist/components/cg-listbox/cg-listbox.js.map +1 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts +41 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -0
- package/dist/components/cg-markdown/cg-markdown.js +542 -0
- package/dist/components/cg-markdown/cg-markdown.js.map +1 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts +64 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -0
- package/dist/components/cg-menubar/cg-menubar.js +338 -0
- package/dist/components/cg-menubar/cg-menubar.js.map +1 -0
- package/dist/components/cg-meter/cg-meter.d.ts +36 -0
- package/dist/components/cg-meter/cg-meter.d.ts.map +1 -0
- package/dist/components/cg-meter/cg-meter.js +204 -0
- package/dist/components/cg-meter/cg-meter.js.map +1 -0
- package/dist/components/cg-metric-card/cg-metric-card.d.ts +51 -0
- package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -0
- package/dist/components/cg-metric-card/cg-metric-card.js +312 -0
- package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -0
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +77 -0
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +1 -0
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +245 -0
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +1 -0
- package/dist/components/cg-modal/cg-modal.d.ts +55 -0
- package/dist/components/cg-modal/cg-modal.d.ts.map +1 -0
- package/dist/components/cg-modal/cg-modal.js +409 -0
- package/dist/components/cg-modal/cg-modal.js.map +1 -0
- package/dist/components/cg-navbar/cg-navbar.d.ts +87 -0
- package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -0
- package/dist/components/cg-navbar/cg-navbar.js +473 -0
- package/dist/components/cg-navbar/cg-navbar.js.map +1 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +46 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js +257 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts +47 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -0
- package/dist/components/cg-number-input/cg-number-input.js +266 -0
- package/dist/components/cg-number-input/cg-number-input.js.map +1 -0
- package/dist/components/cg-otp-input/cg-otp-input.d.ts +44 -0
- package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -0
- package/dist/components/cg-otp-input/cg-otp-input.js +188 -0
- package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts +34 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -0
- package/dist/components/cg-pagination/cg-pagination.js +232 -0
- package/dist/components/cg-pagination/cg-pagination.js.map +1 -0
- package/dist/components/cg-password-input/cg-password-input.d.ts +43 -0
- package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -0
- package/dist/components/cg-password-input/cg-password-input.js +261 -0
- package/dist/components/cg-password-input/cg-password-input.js.map +1 -0
- package/dist/components/cg-phone-input/cg-phone-input.d.ts +93 -0
- package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -0
- package/dist/components/cg-phone-input/cg-phone-input.js +972 -0
- package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -0
- package/dist/components/cg-phone-input/countries.d.ts +38 -0
- package/dist/components/cg-phone-input/countries.d.ts.map +1 -0
- package/dist/components/cg-popover/cg-popover.d.ts +53 -0
- package/dist/components/cg-popover/cg-popover.d.ts.map +1 -0
- package/dist/components/cg-popover/cg-popover.js +215 -0
- package/dist/components/cg-popover/cg-popover.js.map +1 -0
- package/dist/components/cg-portal/cg-portal.d.ts +73 -0
- package/dist/components/cg-portal/cg-portal.d.ts.map +1 -0
- package/dist/components/cg-portal/cg-portal.js +80 -0
- package/dist/components/cg-portal/cg-portal.js.map +1 -0
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts +51 -0
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -0
- package/dist/components/cg-progress-bar/cg-progress-bar.js +267 -0
- package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -0
- package/dist/components/cg-radio/cg-radio.d.ts +43 -0
- package/dist/components/cg-radio/cg-radio.d.ts.map +1 -0
- package/dist/components/cg-radio/cg-radio.js +268 -0
- package/dist/components/cg-radio/cg-radio.js.map +1 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts +49 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -0
- package/dist/components/cg-radio-group/cg-radio-group.js +142 -0
- package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -0
- package/dist/components/cg-rating/cg-rating.d.ts +41 -0
- package/dist/components/cg-rating/cg-rating.d.ts.map +1 -0
- package/dist/components/cg-rating/cg-rating.js +201 -0
- package/dist/components/cg-rating/cg-rating.js.map +1 -0
- package/dist/components/cg-resizable/cg-resizable.d.ts +33 -0
- package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -0
- package/dist/components/cg-resizable/cg-resizable.js +236 -0
- package/dist/components/cg-resizable/cg-resizable.js.map +1 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +27 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.js +111 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -0
- package/dist/components/cg-search-input/cg-search-input.d.ts +62 -0
- package/dist/components/cg-search-input/cg-search-input.d.ts.map +1 -0
- package/dist/components/cg-search-input/cg-search-input.js +106 -0
- package/dist/components/cg-search-input/cg-search-input.js.map +1 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +52 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.js +182 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -0
- package/dist/components/cg-select/cg-select.d.ts +67 -0
- package/dist/components/cg-select/cg-select.d.ts.map +1 -0
- package/dist/components/cg-select/cg-select.js +302 -0
- package/dist/components/cg-select/cg-select.js.map +1 -0
- package/dist/components/cg-separator/cg-separator.d.ts +25 -0
- package/dist/components/cg-separator/cg-separator.d.ts.map +1 -0
- package/dist/components/cg-separator/cg-separator.js +105 -0
- package/dist/components/cg-separator/cg-separator.js.map +1 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts +39 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -0
- package/dist/components/cg-sheet/cg-sheet.js +211 -0
- package/dist/components/cg-sheet/cg-sheet.js.map +1 -0
- package/dist/components/cg-sidebar/cg-sidebar.d.ts +56 -0
- package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -0
- package/dist/components/cg-sidebar/cg-sidebar.js +266 -0
- package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -0
- package/dist/components/cg-skeleton/cg-skeleton.d.ts +31 -0
- package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -0
- package/dist/components/cg-skeleton/cg-skeleton.js +136 -0
- package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -0
- package/dist/components/cg-slider/cg-slider.d.ts +51 -0
- package/dist/components/cg-slider/cg-slider.d.ts.map +1 -0
- package/dist/components/cg-slider/cg-slider.js +375 -0
- package/dist/components/cg-slider/cg-slider.js.map +1 -0
- package/dist/components/cg-sortable/cg-sortable.d.ts +72 -0
- package/dist/components/cg-sortable/cg-sortable.d.ts.map +1 -0
- package/dist/components/cg-sortable/cg-sortable.js +177 -0
- package/dist/components/cg-sortable/cg-sortable.js.map +1 -0
- package/dist/components/cg-spinner/cg-spinner.d.ts +28 -0
- package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -0
- package/dist/components/cg-spinner/cg-spinner.js +119 -0
- package/dist/components/cg-spinner/cg-spinner.js.map +1 -0
- package/dist/components/cg-split-button/cg-split-button.d.ts +66 -0
- package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -0
- package/dist/components/cg-split-button/cg-split-button.js +330 -0
- package/dist/components/cg-split-button/cg-split-button.js.map +1 -0
- package/dist/components/cg-stack/cg-stack.d.ts +25 -0
- package/dist/components/cg-stack/cg-stack.d.ts.map +1 -0
- package/dist/components/cg-stack/cg-stack.js +85 -0
- package/dist/components/cg-stack/cg-stack.js.map +1 -0
- package/dist/components/cg-steps/cg-steps.d.ts +37 -0
- package/dist/components/cg-steps/cg-steps.d.ts.map +1 -0
- package/dist/components/cg-steps/cg-steps.js +251 -0
- package/dist/components/cg-steps/cg-steps.js.map +1 -0
- package/dist/components/cg-switch/cg-switch.d.ts +38 -0
- package/dist/components/cg-switch/cg-switch.d.ts.map +1 -0
- package/dist/components/cg-switch/cg-switch.js +210 -0
- package/dist/components/cg-switch/cg-switch.js.map +1 -0
- package/dist/components/cg-table/cg-table.d.ts +67 -0
- package/dist/components/cg-table/cg-table.d.ts.map +1 -0
- package/dist/components/cg-table/cg-table.js +395 -0
- package/dist/components/cg-table/cg-table.js.map +1 -0
- package/dist/components/cg-tabs/cg-tabs.d.ts +39 -0
- package/dist/components/cg-tabs/cg-tabs.d.ts.map +1 -0
- package/dist/components/cg-tabs/cg-tabs.js +241 -0
- package/dist/components/cg-tabs/cg-tabs.js.map +1 -0
- package/dist/components/cg-tag-input/cg-tag-input.d.ts +50 -0
- package/dist/components/cg-tag-input/cg-tag-input.d.ts.map +1 -0
- package/dist/components/cg-tag-input/cg-tag-input.js +307 -0
- package/dist/components/cg-tag-input/cg-tag-input.js.map +1 -0
- package/dist/components/cg-text/cg-text.d.ts +30 -0
- package/dist/components/cg-text/cg-text.d.ts.map +1 -0
- package/dist/components/cg-text/cg-text.js +126 -0
- package/dist/components/cg-text/cg-text.js.map +1 -0
- package/dist/components/cg-textarea/cg-textarea.d.ts +57 -0
- package/dist/components/cg-textarea/cg-textarea.d.ts.map +1 -0
- package/dist/components/cg-textarea/cg-textarea.js +295 -0
- package/dist/components/cg-textarea/cg-textarea.js.map +1 -0
- package/dist/components/cg-theme/cg-theme.d.ts +82 -0
- package/dist/components/cg-theme/cg-theme.d.ts.map +1 -0
- package/dist/components/cg-theme/cg-theme.js +91 -0
- package/dist/components/cg-theme/cg-theme.js.map +1 -0
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +98 -0
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +1 -0
- package/dist/components/cg-theme-editor/cg-theme-editor.js +341 -0
- package/dist/components/cg-theme-editor/cg-theme-editor.js.map +1 -0
- package/dist/components/cg-time-picker/cg-time-picker.d.ts +55 -0
- package/dist/components/cg-time-picker/cg-time-picker.d.ts.map +1 -0
- package/dist/components/cg-time-picker/cg-time-picker.js +417 -0
- package/dist/components/cg-time-picker/cg-time-picker.js.map +1 -0
- package/dist/components/cg-timeline/cg-timeline.d.ts +70 -0
- package/dist/components/cg-timeline/cg-timeline.d.ts.map +1 -0
- package/dist/components/cg-timeline/cg-timeline.js +131 -0
- package/dist/components/cg-timeline/cg-timeline.js.map +1 -0
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +59 -0
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +1 -0
- package/dist/components/cg-timeline-event/cg-timeline-event.js +190 -0
- package/dist/components/cg-timeline-event/cg-timeline-event.js.map +1 -0
- package/dist/components/cg-toaster/cg-toaster.d.ts +44 -0
- package/dist/components/cg-toaster/cg-toaster.d.ts.map +1 -0
- package/dist/components/cg-toaster/cg-toaster.js +226 -0
- package/dist/components/cg-toaster/cg-toaster.js.map +1 -0
- package/dist/components/cg-toggle/cg-toggle.d.ts +38 -0
- package/dist/components/cg-toggle/cg-toggle.d.ts.map +1 -0
- package/dist/components/cg-toggle/cg-toggle.js +204 -0
- package/dist/components/cg-toggle/cg-toggle.js.map +1 -0
- package/dist/components/cg-toggle-group/cg-toggle-group.d.ts +39 -0
- package/dist/components/cg-toggle-group/cg-toggle-group.d.ts.map +1 -0
- package/dist/components/cg-toggle-group/cg-toggle-group.js +112 -0
- package/dist/components/cg-toggle-group/cg-toggle-group.js.map +1 -0
- package/dist/components/cg-tooltip/cg-tooltip.d.ts +59 -0
- package/dist/components/cg-tooltip/cg-tooltip.d.ts.map +1 -0
- package/dist/components/cg-tooltip/cg-tooltip.js +277 -0
- package/dist/components/cg-tooltip/cg-tooltip.js.map +1 -0
- package/dist/components/cg-tree-view/cg-tree-view.d.ts +42 -0
- package/dist/components/cg-tree-view/cg-tree-view.d.ts.map +1 -0
- package/dist/components/cg-tree-view/cg-tree-view.js +244 -0
- package/dist/components/cg-tree-view/cg-tree-view.js.map +1 -0
- package/dist/components/cg-visually-hidden/cg-visually-hidden.d.ts +42 -0
- package/dist/components/cg-visually-hidden/cg-visually-hidden.d.ts.map +1 -0
- package/dist/components/cg-visually-hidden/cg-visually-hidden.js +40 -0
- package/dist/components/cg-visually-hidden/cg-visually-hidden.js.map +1 -0
- package/dist/foundation.d.ts +116 -0
- package/dist/foundation.d.ts.map +1 -0
- package/dist/foundation.js +211 -0
- package/dist/foundation.js.map +1 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +407 -0
- package/dist/index.js.map +1 -0
- package/dist/lazy.d.ts +9 -0
- package/dist/lazy.d.ts.map +1 -0
- package/dist/lazy.js +38 -0
- package/dist/lazy.js.map +1 -0
- package/dist/styles/ai-effects.css.d.ts +11 -0
- package/dist/styles/ai-effects.css.d.ts.map +1 -0
- package/dist/styles/base.css.d.ts +12 -0
- package/dist/styles/base.css.d.ts.map +1 -0
- package/dist/styles/elevation.css.d.ts +11 -0
- package/dist/styles/elevation.css.d.ts.map +1 -0
- package/dist/styles/focus.css.d.ts +11 -0
- package/dist/styles/focus.css.d.ts.map +1 -0
- package/dist/styles/index.d.ts +8 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/menu.css.d.ts +14 -0
- package/dist/styles/menu.css.d.ts.map +1 -0
- package/dist/styles/motion.css.d.ts +41 -0
- package/dist/styles/motion.css.d.ts.map +1 -0
- package/dist/styles/premium.css.d.ts +75 -0
- package/dist/styles/premium.css.d.ts.map +1 -0
- package/dist/utils/drag-manager.d.ts +40 -0
- package/dist/utils/drag-manager.d.ts.map +1 -0
- package/dist/utils/floating.d.ts +55 -0
- package/dist/utils/floating.d.ts.map +1 -0
- package/dist/utils/focus-trap.d.ts +37 -0
- package/dist/utils/focus-trap.d.ts.map +1 -0
- package/dist/utils/lazy.d.ts +47 -0
- package/dist/utils/lazy.d.ts.map +1 -0
- package/dist/utils/outside-click.d.ts +24 -0
- package/dist/utils/outside-click.d.ts.map +1 -0
- package/dist/utils/roving-index.d.ts +54 -0
- package/dist/utils/roving-index.d.ts.map +1 -0
- package/dist/utils/sanitize.d.ts +7 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/text-scramble.d.ts +144 -0
- package/dist/utils/text-scramble.d.ts.map +1 -0
- package/package.json +887 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import { css as f, LitElement as m, nothing as p, html as o } from "lit";
|
|
2
|
+
import { property as l, state as h, query as v, customElement as b } from "lit/decorators.js";
|
|
3
|
+
import { h as y, r as w, f as x } from "../../chunks/premium.css-9I4kHrsl.js";
|
|
4
|
+
import "../cg-avatar/cg-avatar.js";
|
|
5
|
+
import "../cg-spinner/cg-spinner.js";
|
|
6
|
+
var _ = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, i = (e, t, s, a) => {
|
|
7
|
+
for (var n = a > 1 ? void 0 : a ? $(t, s) : t, d = e.length - 1, c; d >= 0; d--)
|
|
8
|
+
(c = e[d]) && (n = (a ? c(t, s, n) : c(n)) || n);
|
|
9
|
+
return a && n && _(t, s, n), n;
|
|
10
|
+
};
|
|
11
|
+
let r = class extends m {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments), this.content = "", this.cursors = [], this.editable = !0, this.placeholder = "Start typing…", this.title = "", this.sync = "idle", this.idleFadeDelay = 2e3, this._charCount = 0, this._wordCount = 0, this._idleUsers = /* @__PURE__ */ new Set(), this._cursorPositions = /* @__PURE__ */ new Map(), this._idleTimers = /* @__PURE__ */ new Map(), this._previousPositions = /* @__PURE__ */ new Map();
|
|
14
|
+
}
|
|
15
|
+
updated(e) {
|
|
16
|
+
e.has("content") && this._updateCounts(), (e.has("content") || e.has("cursors")) && this.updateComplete.then(() => this._measureCursors()), e.has("cursors") && this._handleCursorActivity();
|
|
17
|
+
}
|
|
18
|
+
disconnectedCallback() {
|
|
19
|
+
super.disconnectedCallback();
|
|
20
|
+
for (const e of this._idleTimers.values()) clearTimeout(e);
|
|
21
|
+
this._idleTimers.clear();
|
|
22
|
+
}
|
|
23
|
+
_updateCounts() {
|
|
24
|
+
this._charCount = this.content.length;
|
|
25
|
+
const e = this.content.trim();
|
|
26
|
+
this._wordCount = e ? e.split(/\s+/).length : 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* For each remote cursor, measure where its caret would render by inserting
|
|
30
|
+
* a zero-width marker at that offset in a hidden mirror element with the
|
|
31
|
+
* same metrics as the textarea, then reading the rect.
|
|
32
|
+
*
|
|
33
|
+
* Replaces the previous `charWidth = 8.4 / lineHeight = 22.4` heuristic
|
|
34
|
+
* which silently drifted under any zoom or font fallback.
|
|
35
|
+
*/
|
|
36
|
+
_measureCursors() {
|
|
37
|
+
if (!this._mirror || !this._textarea) return;
|
|
38
|
+
const e = this._textarea.clientWidth;
|
|
39
|
+
this._mirror.style.width = `${e}px`;
|
|
40
|
+
const t = /* @__PURE__ */ new Map();
|
|
41
|
+
for (const s of this.cursors) {
|
|
42
|
+
const a = Math.max(0, Math.min(this.content.length, s.position)), n = this.content.slice(0, a);
|
|
43
|
+
this._mirror.textContent = "";
|
|
44
|
+
const d = document.createTextNode(n), c = document.createElement("span");
|
|
45
|
+
c.textContent = "", this._mirror.appendChild(d), this._mirror.appendChild(c);
|
|
46
|
+
const u = this._mirror.getBoundingClientRect(), g = c.getBoundingClientRect();
|
|
47
|
+
t.set(s.user, {
|
|
48
|
+
top: g.top - u.top - this._textarea.scrollTop,
|
|
49
|
+
left: g.left - u.left
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
this._cursorPositions = t;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* When a remote cursor's `position` changes, the user is "active" — clear
|
|
56
|
+
* the idle flag and (re)start a timer that marks them idle after
|
|
57
|
+
* idleFadeDelay ms.
|
|
58
|
+
*/
|
|
59
|
+
_handleCursorActivity() {
|
|
60
|
+
if (this.idleFadeDelay <= 0) return;
|
|
61
|
+
const e = /* @__PURE__ */ new Set();
|
|
62
|
+
for (const t of this.cursors)
|
|
63
|
+
if (e.add(t.user), this._previousPositions.get(t.user) !== t.position) {
|
|
64
|
+
this._idleUsers.delete(t.user), this._previousPositions.set(t.user, t.position);
|
|
65
|
+
const a = this._idleTimers.get(t.user);
|
|
66
|
+
a && clearTimeout(a), this._idleTimers.set(t.user, window.setTimeout(() => {
|
|
67
|
+
this._idleUsers.add(t.user), this._idleUsers = new Set(this._idleUsers);
|
|
68
|
+
}, this.idleFadeDelay));
|
|
69
|
+
}
|
|
70
|
+
for (const t of [...this._previousPositions.keys()])
|
|
71
|
+
if (!e.has(t)) {
|
|
72
|
+
this._previousPositions.delete(t);
|
|
73
|
+
const s = this._idleTimers.get(t);
|
|
74
|
+
s && clearTimeout(s), this._idleTimers.delete(t), this._idleUsers.delete(t);
|
|
75
|
+
}
|
|
76
|
+
this.requestUpdate();
|
|
77
|
+
}
|
|
78
|
+
_onInput(e) {
|
|
79
|
+
const t = e.target;
|
|
80
|
+
this.content = t.value, this._updateCounts(), this.dispatchEvent(new CustomEvent("ai-editor-change", {
|
|
81
|
+
bubbles: !0,
|
|
82
|
+
composed: !0,
|
|
83
|
+
detail: { content: this.content }
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
_onSelect(e) {
|
|
87
|
+
const t = e.target;
|
|
88
|
+
this.dispatchEvent(new CustomEvent("ai-editor-cursor-move", {
|
|
89
|
+
bubbles: !0,
|
|
90
|
+
composed: !0,
|
|
91
|
+
detail: {
|
|
92
|
+
position: t.selectionStart,
|
|
93
|
+
selectionStart: t.selectionStart,
|
|
94
|
+
selectionEnd: t.selectionEnd
|
|
95
|
+
}
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
render() {
|
|
99
|
+
const e = this.sync === "saving" ? "Saving…" : this.sync === "saved" ? "Saved" : this.sync === "error" ? "Save failed" : "";
|
|
100
|
+
return o`
|
|
101
|
+
${this.title || this.cursors.length ? o`
|
|
102
|
+
<div class="header">
|
|
103
|
+
${this.title ? o`<h3 class="header-title">${this.title}</h3>` : o`<span class="header-title muted">${this.cursors.length} editor${this.cursors.length === 1 ? "" : "s"} present</span>`}
|
|
104
|
+
${this.cursors.length ? o`
|
|
105
|
+
<div class="avatar-stack" role="list" aria-label="Active editors">
|
|
106
|
+
${this.cursors.map((t) => o`
|
|
107
|
+
<span class="avatar-ring" role="listitem" style="border-color: ${t.color}; background: ${t.color}" title="${t.user}">
|
|
108
|
+
<cg-avatar size="xs" shape="circle" name=${t.user} status="online"></cg-avatar>
|
|
109
|
+
</span>
|
|
110
|
+
`)}
|
|
111
|
+
</div>
|
|
112
|
+
` : p}
|
|
113
|
+
</div>
|
|
114
|
+
` : p}
|
|
115
|
+
|
|
116
|
+
<div class="editor-wrap" role="group" aria-label="Collaborative text editor">
|
|
117
|
+
<textarea
|
|
118
|
+
.value=${this.content}
|
|
119
|
+
?disabled=${!this.editable}
|
|
120
|
+
placeholder=${this.placeholder}
|
|
121
|
+
@input=${this._onInput}
|
|
122
|
+
@keyup=${this._onSelect}
|
|
123
|
+
@click=${this._onSelect}
|
|
124
|
+
aria-label="Editor content"
|
|
125
|
+
></textarea>
|
|
126
|
+
<div class="mirror" aria-hidden="true"></div>
|
|
127
|
+
<div class="cursors-overlay" aria-hidden="true">
|
|
128
|
+
${this.cursors.map((t) => {
|
|
129
|
+
const s = this._cursorPositions.get(t.user);
|
|
130
|
+
if (!s) return p;
|
|
131
|
+
const a = this._idleUsers.has(t.user);
|
|
132
|
+
return o`
|
|
133
|
+
<div
|
|
134
|
+
class="cursor-marker ${a ? "idle" : ""}"
|
|
135
|
+
style="top: ${s.top}px; left: ${s.left}px"
|
|
136
|
+
>
|
|
137
|
+
<div class="cursor-line" style="background: ${t.color}"></div>
|
|
138
|
+
<span class="cursor-label" style="background: ${t.color}">${t.user}</span>
|
|
139
|
+
</div>
|
|
140
|
+
`;
|
|
141
|
+
})}
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
<div class="footer">
|
|
146
|
+
<div class="stats">
|
|
147
|
+
<span>${this._charCount} chars</span>
|
|
148
|
+
<span>${this._wordCount} words</span>
|
|
149
|
+
</div>
|
|
150
|
+
${this.sync !== "idle" ? o`
|
|
151
|
+
<div class="sync-state ${this.sync}" role="status" aria-live="polite">
|
|
152
|
+
${this.sync === "saving" ? o`<cg-spinner size="xs"></cg-spinner>` : o`
|
|
153
|
+
<svg class="sync-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
154
|
+
${this.sync === "error" ? o`<path d="M4 4l8 8M12 4l-8 8"/>` : o`<path d="M3 8.5l3 3 7-7"/>`}
|
|
155
|
+
</svg>
|
|
156
|
+
`}
|
|
157
|
+
<span>${e}</span>
|
|
158
|
+
</div>
|
|
159
|
+
` : p}
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<span class="sr-only" role="status" aria-live="polite" aria-atomic="true">${e}</span>
|
|
163
|
+
`;
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
r.styles = [y, w, x, f`
|
|
167
|
+
:host {
|
|
168
|
+
background: var(--cg-color-surface-container-background);
|
|
169
|
+
color: var(--cg-color-surface-base-text);
|
|
170
|
+
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
171
|
+
border-radius: var(--cg-border-radius-150);
|
|
172
|
+
box-shadow: var(--cg-elevation-1);
|
|
173
|
+
overflow: hidden;
|
|
174
|
+
animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out) both;
|
|
175
|
+
}
|
|
176
|
+
:host([hidden]) { display: none; }
|
|
177
|
+
|
|
178
|
+
/* ── Header: title + avatar stack ── */
|
|
179
|
+
.header {
|
|
180
|
+
display: flex;
|
|
181
|
+
align-items: center;
|
|
182
|
+
justify-content: space-between;
|
|
183
|
+
gap: var(--cg-spacing-12);
|
|
184
|
+
padding: var(--cg-spacing-12) var(--cg-spacing-16);
|
|
185
|
+
border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);
|
|
186
|
+
}
|
|
187
|
+
.header-title {
|
|
188
|
+
font-size: var(--cg-font-size-sm);
|
|
189
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
190
|
+
color: var(--cg-color-surface-base-text);
|
|
191
|
+
margin: 0;
|
|
192
|
+
}
|
|
193
|
+
.header-title.muted {
|
|
194
|
+
color: var(--cg-color-input-text-placeholder);
|
|
195
|
+
font-weight: var(--cg-font-weight-medium);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/* Stacked avatars — overlap so the row stays compact. */
|
|
199
|
+
.avatar-stack {
|
|
200
|
+
display: inline-flex;
|
|
201
|
+
align-items: center;
|
|
202
|
+
}
|
|
203
|
+
.avatar-ring {
|
|
204
|
+
display: inline-flex;
|
|
205
|
+
border-radius: var(--cg-border-radius-full);
|
|
206
|
+
padding: var(--cg-border-width-100);
|
|
207
|
+
border: var(--cg-border-width-100) solid var(--cg-color-surface-container-background);
|
|
208
|
+
margin-left: calc(-1 * var(--cg-spacing-6));
|
|
209
|
+
transition: transform var(--cg-transition-duration-fast) var(--cg-transition-easing-spring);
|
|
210
|
+
}
|
|
211
|
+
.avatar-ring:first-child { margin-left: 0; }
|
|
212
|
+
.avatar-ring:hover { transform: translateY(calc(-1 * var(--cg-spacing-2))); }
|
|
213
|
+
|
|
214
|
+
/* ── Editor surface ── */
|
|
215
|
+
.editor-wrap {
|
|
216
|
+
position: relative;
|
|
217
|
+
min-height: 200px;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
textarea {
|
|
221
|
+
display: block;
|
|
222
|
+
width: 100%;
|
|
223
|
+
min-height: 200px;
|
|
224
|
+
background: transparent;
|
|
225
|
+
color: var(--cg-color-surface-base-text);
|
|
226
|
+
border: none;
|
|
227
|
+
outline: none;
|
|
228
|
+
resize: vertical;
|
|
229
|
+
padding: var(--cg-spacing-16);
|
|
230
|
+
font-family: var(--cg-font-family-mono);
|
|
231
|
+
font-size: var(--cg-font-size-sm);
|
|
232
|
+
line-height: var(--cg-line-height-relaxed);
|
|
233
|
+
box-sizing: border-box;
|
|
234
|
+
caret-color: var(--cg-color-action-primary-background-default);
|
|
235
|
+
}
|
|
236
|
+
textarea::placeholder { color: var(--cg-color-input-text-placeholder); }
|
|
237
|
+
textarea:focus-visible {
|
|
238
|
+
box-shadow: inset 0 0 0 3px var(--cg-overlay-accent-strong);
|
|
239
|
+
}
|
|
240
|
+
textarea:disabled {
|
|
241
|
+
opacity: 0.5;
|
|
242
|
+
cursor: not-allowed;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* ── Hidden mirror — exact textarea geometry, used to measure
|
|
246
|
+
per-character coordinates for cursor markers. */
|
|
247
|
+
.mirror {
|
|
248
|
+
position: absolute;
|
|
249
|
+
top: 0;
|
|
250
|
+
left: 0;
|
|
251
|
+
visibility: hidden;
|
|
252
|
+
pointer-events: none;
|
|
253
|
+
white-space: pre-wrap;
|
|
254
|
+
word-wrap: break-word;
|
|
255
|
+
overflow-wrap: break-word;
|
|
256
|
+
font-family: var(--cg-font-family-mono);
|
|
257
|
+
font-size: var(--cg-font-size-sm);
|
|
258
|
+
line-height: var(--cg-line-height-relaxed);
|
|
259
|
+
padding: var(--cg-spacing-16);
|
|
260
|
+
box-sizing: border-box;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.cursors-overlay {
|
|
264
|
+
position: absolute;
|
|
265
|
+
top: 0;
|
|
266
|
+
left: 0;
|
|
267
|
+
right: 0;
|
|
268
|
+
bottom: 0;
|
|
269
|
+
pointer-events: none;
|
|
270
|
+
overflow: hidden;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/* ── Cursor marker — flag style with smooth transition between
|
|
274
|
+
positions and label fade after inactivity. */
|
|
275
|
+
.cursor-marker {
|
|
276
|
+
position: absolute;
|
|
277
|
+
display: flex;
|
|
278
|
+
flex-direction: column;
|
|
279
|
+
align-items: flex-start;
|
|
280
|
+
pointer-events: none;
|
|
281
|
+
z-index: 2;
|
|
282
|
+
transition:
|
|
283
|
+
top var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out),
|
|
284
|
+
left var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);
|
|
285
|
+
}
|
|
286
|
+
.cursor-line {
|
|
287
|
+
width: var(--cg-border-width-100);
|
|
288
|
+
height: 1.4em;
|
|
289
|
+
border-radius: var(--cg-border-width-50);
|
|
290
|
+
}
|
|
291
|
+
.cursor-label {
|
|
292
|
+
font-size: var(--cg-font-size-xs);
|
|
293
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
294
|
+
padding: var(--cg-spacing-1) var(--cg-spacing-6);
|
|
295
|
+
border-radius: var(--cg-border-radius-50);
|
|
296
|
+
white-space: nowrap;
|
|
297
|
+
margin-top: calc(-1 * var(--cg-spacing-1));
|
|
298
|
+
color: var(--cg-color-action-primary-text-default);
|
|
299
|
+
transition: opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default);
|
|
300
|
+
transform: translateY(0);
|
|
301
|
+
}
|
|
302
|
+
.cursor-marker.idle .cursor-label {
|
|
303
|
+
opacity: 0;
|
|
304
|
+
pointer-events: none;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/* ── Footer ── */
|
|
308
|
+
.footer {
|
|
309
|
+
display: flex;
|
|
310
|
+
justify-content: space-between;
|
|
311
|
+
align-items: center;
|
|
312
|
+
gap: var(--cg-spacing-12);
|
|
313
|
+
padding: var(--cg-spacing-8) var(--cg-spacing-16);
|
|
314
|
+
border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);
|
|
315
|
+
font-size: var(--cg-font-size-xs);
|
|
316
|
+
color: var(--cg-color-input-text-placeholder);
|
|
317
|
+
}
|
|
318
|
+
.stats {
|
|
319
|
+
display: flex;
|
|
320
|
+
gap: var(--cg-spacing-12);
|
|
321
|
+
font-variant-numeric: tabular-nums;
|
|
322
|
+
}
|
|
323
|
+
.sync-state {
|
|
324
|
+
display: inline-flex;
|
|
325
|
+
align-items: center;
|
|
326
|
+
gap: var(--cg-spacing-6);
|
|
327
|
+
}
|
|
328
|
+
.sync-state.saved { color: var(--cg-color-status-success-text-default); }
|
|
329
|
+
.sync-state.error { color: var(--cg-color-status-error-text-default); }
|
|
330
|
+
.sync-icon {
|
|
331
|
+
width: var(--cg-spacing-12);
|
|
332
|
+
height: var(--cg-spacing-12);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/* Visually-hidden live region. */
|
|
336
|
+
.sr-only {
|
|
337
|
+
position: absolute; width: 1px; height: 1px;
|
|
338
|
+
padding: 0; margin: -1px; overflow: hidden;
|
|
339
|
+
clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
|
|
340
|
+
}
|
|
341
|
+
`];
|
|
342
|
+
i([
|
|
343
|
+
l({ type: String })
|
|
344
|
+
], r.prototype, "content", 2);
|
|
345
|
+
i([
|
|
346
|
+
l({ type: Array })
|
|
347
|
+
], r.prototype, "cursors", 2);
|
|
348
|
+
i([
|
|
349
|
+
l({ type: Boolean })
|
|
350
|
+
], r.prototype, "editable", 2);
|
|
351
|
+
i([
|
|
352
|
+
l({ type: String })
|
|
353
|
+
], r.prototype, "placeholder", 2);
|
|
354
|
+
i([
|
|
355
|
+
l({ type: String })
|
|
356
|
+
], r.prototype, "title", 2);
|
|
357
|
+
i([
|
|
358
|
+
l({ reflect: !0 })
|
|
359
|
+
], r.prototype, "sync", 2);
|
|
360
|
+
i([
|
|
361
|
+
l({ type: Number, attribute: "idle-fade-delay" })
|
|
362
|
+
], r.prototype, "idleFadeDelay", 2);
|
|
363
|
+
i([
|
|
364
|
+
h()
|
|
365
|
+
], r.prototype, "_charCount", 2);
|
|
366
|
+
i([
|
|
367
|
+
h()
|
|
368
|
+
], r.prototype, "_wordCount", 2);
|
|
369
|
+
i([
|
|
370
|
+
h()
|
|
371
|
+
], r.prototype, "_idleUsers", 2);
|
|
372
|
+
i([
|
|
373
|
+
h()
|
|
374
|
+
], r.prototype, "_cursorPositions", 2);
|
|
375
|
+
i([
|
|
376
|
+
v("textarea")
|
|
377
|
+
], r.prototype, "_textarea", 2);
|
|
378
|
+
i([
|
|
379
|
+
v(".mirror")
|
|
380
|
+
], r.prototype, "_mirror", 2);
|
|
381
|
+
r = i([
|
|
382
|
+
b("ai-collaborative-editor")
|
|
383
|
+
], r);
|
|
384
|
+
export {
|
|
385
|
+
r as AiCollaborativeEditor
|
|
386
|
+
};
|
|
387
|
+
//# sourceMappingURL=ai-collaborative-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-collaborative-editor.js","sources":["../../../src/components/ai-collaborative-editor/ai-collaborative-editor.ts"],"sourcesContent":["/**\n * @element ai-collaborative-editor\n * Multiplayer monospace editor with live cursor + selection overlays, an\n * avatar-stack presence header (Linear/Figma pattern), word/char counts,\n * smooth cursor transitions, label fade on inactivity, and a Saving…/Saved\n * sync indicator.\n *\n * Cursor positions are measured with a hidden mirror element + per-character\n * Range geometry — accurate across font metrics, zoom level, and word-wrap\n * (the previous hand-rolled char-width math drifted with any font change).\n *\n * @example\n * ```html\n * <ai-collaborative-editor\n * content=\"Hello world\"\n * .cursors=${[{ user: 'Alice', position: 5, color: '#60a5fa' }]}\n * editable\n * ></ai-collaborative-editor>\n * ```\n *\n * @fires {CustomEvent<{content: string}>} ai-editor-change - Content changed\n * @fires {CustomEvent<{position, selectionStart, selectionEnd}>} ai-editor-cursor-move - Cursor moved\n *\n * @cssprop [--cg-color-surface-container-background] - Editor background\n * @cssprop [--cg-font-family-mono] - Editor font family\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\nimport '../cg-avatar/cg-avatar.js';\nimport '../cg-spinner/cg-spinner.js';\n\nexport interface EditorCursor {\n user: string;\n position: number;\n color: string;\n}\n\n@customElement('ai-collaborative-editor')\nexport class AiCollaborativeEditor extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-base-text);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-150);\n box-shadow: var(--cg-elevation-1);\n overflow: hidden;\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n /* ── Header: title + avatar stack ── */\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n }\n .header-title {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n margin: 0;\n }\n .header-title.muted {\n color: var(--cg-color-input-text-placeholder);\n font-weight: var(--cg-font-weight-medium);\n }\n\n /* Stacked avatars — overlap so the row stays compact. */\n .avatar-stack {\n display: inline-flex;\n align-items: center;\n }\n .avatar-ring {\n display: inline-flex;\n border-radius: var(--cg-border-radius-full);\n padding: var(--cg-border-width-100);\n border: var(--cg-border-width-100) solid var(--cg-color-surface-container-background);\n margin-left: calc(-1 * var(--cg-spacing-6));\n transition: transform var(--cg-transition-duration-fast) var(--cg-transition-easing-spring);\n }\n .avatar-ring:first-child { margin-left: 0; }\n .avatar-ring:hover { transform: translateY(calc(-1 * var(--cg-spacing-2))); }\n\n /* ── Editor surface ── */\n .editor-wrap {\n position: relative;\n min-height: 200px;\n }\n\n textarea {\n display: block;\n width: 100%;\n min-height: 200px;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n border: none;\n outline: none;\n resize: vertical;\n padding: var(--cg-spacing-16);\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 box-sizing: border-box;\n caret-color: var(--cg-color-action-primary-background-default);\n }\n textarea::placeholder { color: var(--cg-color-input-text-placeholder); }\n textarea:focus-visible {\n box-shadow: inset 0 0 0 3px var(--cg-overlay-accent-strong);\n }\n textarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* ── Hidden mirror — exact textarea geometry, used to measure\n per-character coordinates for cursor markers. */\n .mirror {\n position: absolute;\n top: 0;\n left: 0;\n visibility: hidden;\n pointer-events: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: break-word;\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 padding: var(--cg-spacing-16);\n box-sizing: border-box;\n }\n\n .cursors-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n overflow: hidden;\n }\n\n /* ── Cursor marker — flag style with smooth transition between\n positions and label fade after inactivity. */\n .cursor-marker {\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n pointer-events: none;\n z-index: 2;\n transition:\n top var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out),\n left var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n .cursor-line {\n width: var(--cg-border-width-100);\n height: 1.4em;\n border-radius: var(--cg-border-width-50);\n }\n .cursor-label {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n padding: var(--cg-spacing-1) var(--cg-spacing-6);\n border-radius: var(--cg-border-radius-50);\n white-space: nowrap;\n margin-top: calc(-1 * var(--cg-spacing-1));\n color: var(--cg-color-action-primary-text-default);\n transition: opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n transform: translateY(0);\n }\n .cursor-marker.idle .cursor-label {\n opacity: 0;\n pointer-events: none;\n }\n\n /* ── Footer ── */\n .footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n }\n .stats {\n display: flex;\n gap: var(--cg-spacing-12);\n font-variant-numeric: tabular-nums;\n }\n .sync-state {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n }\n .sync-state.saved { color: var(--cg-color-status-success-text-default); }\n .sync-state.error { color: var(--cg-color-status-error-text-default); }\n .sync-icon {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n }\n\n /* Visually-hidden live region. */\n .sr-only {\n position: absolute; width: 1px; height: 1px;\n padding: 0; margin: -1px; overflow: hidden;\n clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;\n }\n `];\n\n @property({ type: String }) content = '';\n @property({ type: Array }) cursors: EditorCursor[] = [];\n @property({ type: Boolean }) editable = true;\n @property({ type: String }) placeholder = 'Start typing…';\n @property({ type: String }) override title = '';\n /** Sync state shown in the footer. Consumers flip this during save. */\n @property({ reflect: true }) sync: 'idle' | 'saving' | 'saved' | 'error' = 'idle';\n /** ms of cursor inactivity before the user's label fades out. 0 disables. */\n @property({ type: Number, attribute: 'idle-fade-delay' }) idleFadeDelay = 2000;\n\n @state() private _charCount = 0;\n @state() private _wordCount = 0;\n @state() private _idleUsers = new Set<string>();\n /** Per-cursor screen positions in textarea-relative pixels. */\n @state() private _cursorPositions = new Map<string, { top: number; left: number }>();\n\n @query('textarea') private _textarea!: HTMLTextAreaElement;\n @query('.mirror') private _mirror!: HTMLDivElement;\n\n private _idleTimers = new Map<string, number>();\n private _previousPositions = new Map<string, number>();\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('content')) this._updateCounts();\n if (changed.has('content') || changed.has('cursors')) {\n // Recompute cursor screen positions whenever text or remote cursors move.\n this.updateComplete.then(() => this._measureCursors());\n }\n if (changed.has('cursors')) this._handleCursorActivity();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n for (const t of this._idleTimers.values()) clearTimeout(t);\n this._idleTimers.clear();\n }\n\n private _updateCounts(): void {\n this._charCount = this.content.length;\n const trimmed = this.content.trim();\n this._wordCount = trimmed ? trimmed.split(/\\s+/).length : 0;\n }\n\n /**\n * For each remote cursor, measure where its caret would render by inserting\n * a zero-width marker at that offset in a hidden mirror element with the\n * same metrics as the textarea, then reading the rect.\n *\n * Replaces the previous `charWidth = 8.4 / lineHeight = 22.4` heuristic\n * which silently drifted under any zoom or font fallback.\n */\n private _measureCursors(): void {\n if (!this._mirror || !this._textarea) return;\n const mirrorWidth = this._textarea.clientWidth;\n this._mirror.style.width = `${mirrorWidth}px`;\n const next = new Map<string, { top: number; left: number }>();\n for (const c of this.cursors) {\n const pos = Math.max(0, Math.min(this.content.length, c.position));\n const before = this.content.slice(0, pos);\n // Render the text-up-to-cursor + a marker span the mirror can measure.\n this._mirror.textContent = '';\n const beforeNode = document.createTextNode(before);\n const marker = document.createElement('span');\n marker.textContent = ''; // zero-width space\n this._mirror.appendChild(beforeNode);\n this._mirror.appendChild(marker);\n const wrapRect = this._mirror.getBoundingClientRect();\n const markerRect = marker.getBoundingClientRect();\n next.set(c.user, {\n top: markerRect.top - wrapRect.top - this._textarea.scrollTop,\n left: markerRect.left - wrapRect.left,\n });\n }\n this._cursorPositions = next;\n }\n\n /**\n * When a remote cursor's `position` changes, the user is \"active\" — clear\n * the idle flag and (re)start a timer that marks them idle after\n * idleFadeDelay ms.\n */\n private _handleCursorActivity(): void {\n if (this.idleFadeDelay <= 0) return;\n const seen = new Set<string>();\n for (const c of this.cursors) {\n seen.add(c.user);\n const prev = this._previousPositions.get(c.user);\n if (prev !== c.position) {\n this._idleUsers.delete(c.user);\n this._previousPositions.set(c.user, c.position);\n const existing = this._idleTimers.get(c.user);\n if (existing) clearTimeout(existing);\n this._idleTimers.set(c.user, window.setTimeout(() => {\n this._idleUsers.add(c.user);\n this._idleUsers = new Set(this._idleUsers);\n }, this.idleFadeDelay));\n }\n }\n // Remove disconnected users from tracking.\n for (const user of [...this._previousPositions.keys()]) {\n if (!seen.has(user)) {\n this._previousPositions.delete(user);\n const t = this._idleTimers.get(user); if (t) clearTimeout(t);\n this._idleTimers.delete(user);\n this._idleUsers.delete(user);\n }\n }\n this.requestUpdate();\n }\n\n private _onInput(e: Event): void {\n const target = e.target as HTMLTextAreaElement;\n this.content = target.value;\n this._updateCounts();\n this.dispatchEvent(new CustomEvent('ai-editor-change', {\n bubbles: true, composed: true,\n detail: { content: this.content },\n }));\n }\n\n private _onSelect(e: Event): void {\n const target = e.target as HTMLTextAreaElement;\n this.dispatchEvent(new CustomEvent('ai-editor-cursor-move', {\n bubbles: true, composed: true,\n detail: {\n position: target.selectionStart,\n selectionStart: target.selectionStart,\n selectionEnd: target.selectionEnd,\n },\n }));\n }\n\n override render() {\n const syncLabel =\n this.sync === 'saving' ? 'Saving…' :\n this.sync === 'saved' ? 'Saved' :\n this.sync === 'error' ? 'Save failed' : '';\n\n return html`\n ${this.title || this.cursors.length ? html`\n <div class=\"header\">\n ${this.title\n ? html`<h3 class=\"header-title\">${this.title}</h3>`\n : html`<span class=\"header-title muted\">${this.cursors.length} editor${this.cursors.length === 1 ? '' : 's'} present</span>`}\n ${this.cursors.length ? html`\n <div class=\"avatar-stack\" role=\"list\" aria-label=\"Active editors\">\n ${this.cursors.map(c => html`\n <span class=\"avatar-ring\" role=\"listitem\" style=\"border-color: ${c.color}; background: ${c.color}\" title=\"${c.user}\">\n <cg-avatar size=\"xs\" shape=\"circle\" name=${c.user} status=\"online\"></cg-avatar>\n </span>\n `)}\n </div>\n ` : nothing}\n </div>\n ` : nothing}\n\n <div class=\"editor-wrap\" role=\"group\" aria-label=\"Collaborative text editor\">\n <textarea\n .value=${this.content}\n ?disabled=${!this.editable}\n placeholder=${this.placeholder}\n @input=${this._onInput}\n @keyup=${this._onSelect}\n @click=${this._onSelect}\n aria-label=\"Editor content\"\n ></textarea>\n <div class=\"mirror\" aria-hidden=\"true\"></div>\n <div class=\"cursors-overlay\" aria-hidden=\"true\">\n ${this.cursors.map(c => {\n const pos = this._cursorPositions.get(c.user);\n if (!pos) return nothing;\n const idle = this._idleUsers.has(c.user);\n return html`\n <div\n class=\"cursor-marker ${idle ? 'idle' : ''}\"\n style=\"top: ${pos.top}px; left: ${pos.left}px\"\n >\n <div class=\"cursor-line\" style=\"background: ${c.color}\"></div>\n <span class=\"cursor-label\" style=\"background: ${c.color}\">${c.user}</span>\n </div>\n `;\n })}\n </div>\n </div>\n\n <div class=\"footer\">\n <div class=\"stats\">\n <span>${this._charCount} chars</span>\n <span>${this._wordCount} words</span>\n </div>\n ${this.sync !== 'idle' ? html`\n <div class=\"sync-state ${this.sync}\" role=\"status\" aria-live=\"polite\">\n ${this.sync === 'saving' ? html`<cg-spinner size=\"xs\"></cg-spinner>` : html`\n <svg class=\"sync-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n ${this.sync === 'error'\n ? html`<path d=\"M4 4l8 8M12 4l-8 8\"/>`\n : html`<path d=\"M3 8.5l3 3 7-7\"/>`}\n </svg>\n `}\n <span>${syncLabel}</span>\n </div>\n ` : nothing}\n </div>\n\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">${syncLabel}</span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-collaborative-editor': AiCollaborativeEditor;\n }\n}\n"],"names":["AiCollaborativeEditor","LitElement","changed","t","trimmed","mirrorWidth","next","c","pos","before","beforeNode","marker","wrapRect","markerRect","seen","existing","user","target","syncLabel","html","nothing","idle","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { LitElement, nothing } from 'lit';
|
|
2
|
+
export interface PaletteCommand {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
shortcut?: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
category?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class AiCommandPalette extends LitElement {
|
|
10
|
+
static styles: import('lit').CSSResult[];
|
|
11
|
+
rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';
|
|
12
|
+
commands: PaletteCommand[];
|
|
13
|
+
open: boolean;
|
|
14
|
+
placeholder: string;
|
|
15
|
+
private _query;
|
|
16
|
+
private _readRecent;
|
|
17
|
+
private _writeRecent;
|
|
18
|
+
/** Fuzzy score: substring match (strong), then in-order character match (weak). Returns -1 if no match. */
|
|
19
|
+
private _score;
|
|
20
|
+
/** Map PaletteCommand → CommandItem (category → group). */
|
|
21
|
+
private _toItem;
|
|
22
|
+
/** Build the filtered + ordered + recent-prepended item list to hand to cg-command. */
|
|
23
|
+
private get _items();
|
|
24
|
+
private _onSelect;
|
|
25
|
+
private _onClose;
|
|
26
|
+
private _onInput;
|
|
27
|
+
render(): import('lit').TemplateResult<1> | typeof nothing;
|
|
28
|
+
}
|
|
29
|
+
declare global {
|
|
30
|
+
interface HTMLElementTagNameMap {
|
|
31
|
+
'ai-command-palette': AiCommandPalette;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ai-command-palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-command-palette.d.ts","sourceRoot":"","sources":["../../../src/components/ai-command-palette/ai-command-palette.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAGrD,OAAO,6BAA6B,CAAC;AAGrC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,4BAGnB;IAE0B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACvD,QAAQ,EAAE,cAAc,EAAE,CAAM;IACf,IAAI,UAAS;IAC7B,WAAW,SAA0B;IAExD,OAAO,CAAC,MAAM,CAAM;IAE7B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAUpB,2GAA2G;IAC3G,OAAO,CAAC,MAAM;IAmBd,2DAA2D;IAC3D,OAAO,CAAC,OAAO;IAcf,uFAAuF;IACvF,OAAO,KAAK,MAAM,GAyBjB;IAED,OAAO,CAAC,SAAS,CAaf;IAEF,OAAO,CAAC,QAAQ,CAQd;IAEF,OAAO,CAAC,QAAQ,CAId;IAEO,MAAM;CAahB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { css as _, LitElement as g, nothing as y, html as v } from "lit";
|
|
2
|
+
import { property as d, state as b, customElement as w } from "lit/decorators.js";
|
|
3
|
+
import { h as E } from "../../chunks/premium.css-9I4kHrsl.js";
|
|
4
|
+
import "../cg-command/cg-command.js";
|
|
5
|
+
var I = Object.defineProperty, C = Object.getOwnPropertyDescriptor, l = (t, e, n, o) => {
|
|
6
|
+
for (var r = o > 1 ? void 0 : o ? C(e, n) : e, c = t.length - 1, s; c >= 0; c--)
|
|
7
|
+
(s = t[c]) && (r = (o ? s(e, n, r) : s(r)) || r);
|
|
8
|
+
return o && r && I(e, n, r), r;
|
|
9
|
+
};
|
|
10
|
+
const u = "cognivo:ai-command-palette:recent", S = 5;
|
|
11
|
+
let a = class extends g {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments), this.rounded = "lg", this.commands = [], this.open = !1, this.placeholder = "Type a command…", this._query = "", this._onSelect = (t) => {
|
|
14
|
+
const e = t;
|
|
15
|
+
t.stopPropagation();
|
|
16
|
+
const n = e.detail?.id, o = this.commands.find((r) => r.id === n);
|
|
17
|
+
o && (this._writeRecent(n), this.open = !1, this.dispatchEvent(new CustomEvent("ai-command-select", {
|
|
18
|
+
detail: { id: o.id, label: o.label },
|
|
19
|
+
bubbles: !0,
|
|
20
|
+
composed: !0
|
|
21
|
+
})));
|
|
22
|
+
}, this._onClose = (t) => {
|
|
23
|
+
t.stopPropagation(), this.open && (this.open = !1), this._query = "", this.dispatchEvent(new CustomEvent("ai-command-close", {
|
|
24
|
+
bubbles: !0,
|
|
25
|
+
composed: !0
|
|
26
|
+
}));
|
|
27
|
+
}, this._onInput = (t) => {
|
|
28
|
+
const e = t;
|
|
29
|
+
t.stopPropagation(), this._query = e.detail?.value ?? "";
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
_readRecent() {
|
|
33
|
+
try {
|
|
34
|
+
const t = globalThis.localStorage?.getItem(u), e = t ? JSON.parse(t) : [];
|
|
35
|
+
return Array.isArray(e) ? e.filter((n) => typeof n == "string") : [];
|
|
36
|
+
} catch {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
_writeRecent(t) {
|
|
41
|
+
try {
|
|
42
|
+
const e = this._readRecent().filter((n) => n !== t);
|
|
43
|
+
e.unshift(t), globalThis.localStorage?.setItem(u, JSON.stringify(e.slice(0, S)));
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Fuzzy score: substring match (strong), then in-order character match (weak). Returns -1 if no match. */
|
|
48
|
+
_score(t, e) {
|
|
49
|
+
if (!e) return 0;
|
|
50
|
+
const n = t.toLowerCase(), o = e.toLowerCase(), r = n.indexOf(o);
|
|
51
|
+
if (r !== -1) return 1e3 - r;
|
|
52
|
+
let c = 0, s = 0, i = -1, p = 0;
|
|
53
|
+
for (let h = 0; h < o.length; h++) {
|
|
54
|
+
const f = o[h], m = n.indexOf(f, c);
|
|
55
|
+
if (m === -1) return -1;
|
|
56
|
+
i !== -1 && (p += m - i - 1), i = m, c = m + 1, s++;
|
|
57
|
+
}
|
|
58
|
+
return s === o.length ? 100 - p : -1;
|
|
59
|
+
}
|
|
60
|
+
/** Map PaletteCommand → CommandItem (category → group). */
|
|
61
|
+
_toItem(t, e, n = "") {
|
|
62
|
+
const o = {
|
|
63
|
+
id: t.id,
|
|
64
|
+
label: t.label,
|
|
65
|
+
group: e ?? t.category ?? "General"
|
|
66
|
+
};
|
|
67
|
+
return t.shortcut !== void 0 && (o.shortcut = t.shortcut), t.icon !== void 0 && (o.icon = t.icon), n && (o.keywords = [n]), o;
|
|
68
|
+
}
|
|
69
|
+
/** Build the filtered + ordered + recent-prepended item list to hand to cg-command. */
|
|
70
|
+
get _items() {
|
|
71
|
+
const t = this._query.trim(), e = this.commands, n = t ? [] : this._readRecent(), o = new Map(e.map((s) => [s.id, s])), r = n.map((s) => o.get(s)).filter((s) => !!s).map((s) => this._toItem(s, "Recent", t));
|
|
72
|
+
let c;
|
|
73
|
+
if (t)
|
|
74
|
+
c = e.map((i) => ({ c: i, s: this._score(i.label, t) })).filter((i) => i.s >= 0).sort((i, p) => p.s - i.s).map((i) => i.c);
|
|
75
|
+
else {
|
|
76
|
+
const s = new Set(n);
|
|
77
|
+
c = e.filter((i) => !s.has(i.id));
|
|
78
|
+
}
|
|
79
|
+
return [...r, ...c.map((s) => this._toItem(s, void 0, t))];
|
|
80
|
+
}
|
|
81
|
+
render() {
|
|
82
|
+
return this.open ? v`
|
|
83
|
+
<cg-command
|
|
84
|
+
?open=${this.open}
|
|
85
|
+
.placeholder=${this.placeholder}
|
|
86
|
+
.commands=${this._items}
|
|
87
|
+
@cg-command-select=${this._onSelect}
|
|
88
|
+
@cg-command-close=${this._onClose}
|
|
89
|
+
@cg-command-input=${this._onInput}
|
|
90
|
+
></cg-command>
|
|
91
|
+
` : y;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
a.styles = [E, _`
|
|
95
|
+
:host { display: contents; }
|
|
96
|
+
:host([hidden]) { display: none; }
|
|
97
|
+
`];
|
|
98
|
+
l([
|
|
99
|
+
d({ reflect: !0 })
|
|
100
|
+
], a.prototype, "rounded", 2);
|
|
101
|
+
l([
|
|
102
|
+
d({ type: Array })
|
|
103
|
+
], a.prototype, "commands", 2);
|
|
104
|
+
l([
|
|
105
|
+
d({ type: Boolean, reflect: !0 })
|
|
106
|
+
], a.prototype, "open", 2);
|
|
107
|
+
l([
|
|
108
|
+
d({ type: String })
|
|
109
|
+
], a.prototype, "placeholder", 2);
|
|
110
|
+
l([
|
|
111
|
+
b()
|
|
112
|
+
], a.prototype, "_query", 2);
|
|
113
|
+
a = l([
|
|
114
|
+
w("ai-command-palette")
|
|
115
|
+
], a);
|
|
116
|
+
export {
|
|
117
|
+
a as AiCommandPalette
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=ai-command-palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-command-palette.js","sources":["../../../src/components/ai-command-palette/ai-command-palette.ts"],"sourcesContent":["/**\n * @element ai-command-palette\n * AI-flavored command palette — thin wrapper around <cg-command> adding fuzzy\n * search, recent commands history, and category badges.\n *\n * @example\n * ```html\n * <ai-command-palette\n * .commands=${[\n * {id:'new-chat', label:'New Chat', shortcut:'Ctrl+N', category:'AI'},\n * {id:'export', label:'Export Data', icon:'[box icon]', category:'Data'}\n * ]}\n * open\n * ></ai-command-palette>\n * ```\n *\n * @fires {CustomEvent<{id: string, label: string}>} ai-command-select - Command selected\n * @fires {CustomEvent} ai-command-close - Palette closed (Escape or overlay click)\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock } from '../../styles/index.js';\nimport '../cg-command/cg-command.js';\nimport type { CommandItem } from '../cg-command/cg-command.js';\n\nexport interface PaletteCommand {\n id: string;\n label: string;\n shortcut?: string;\n icon?: string;\n category?: string;\n}\n\nconst RECENT_STORAGE_KEY = 'cognivo:ai-command-palette:recent';\nconst RECENT_LIMIT = 5;\n\n@customElement('ai-command-palette')\nexport class AiCommandPalette extends LitElement {\n static override styles = [hostBlock, css`\n :host { display: contents; }\n :host([hidden]) { display: none; }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property({ type: Array }) commands: PaletteCommand[] = [];\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String }) placeholder = 'Type a command\\u2026';\n\n @state() private _query = '';\n\n private _readRecent(): string[] {\n try {\n const raw = globalThis.localStorage?.getItem(RECENT_STORAGE_KEY);\n const parsed = raw ? JSON.parse(raw) : [];\n return Array.isArray(parsed) ? parsed.filter((x): x is string => typeof x === 'string') : [];\n } catch {\n return [];\n }\n }\n\n private _writeRecent(id: string): void {\n try {\n const prev = this._readRecent().filter(x => x !== id);\n prev.unshift(id);\n globalThis.localStorage?.setItem(RECENT_STORAGE_KEY, JSON.stringify(prev.slice(0, RECENT_LIMIT)));\n } catch {\n /* ignore quota / privacy mode */\n }\n }\n\n /** Fuzzy score: substring match (strong), then in-order character match (weak). Returns -1 if no match. */\n private _score(label: string, q: string): number {\n if (!q) return 0;\n const l = label.toLowerCase();\n const needle = q.toLowerCase();\n const idx = l.indexOf(needle);\n if (idx !== -1) return 1000 - idx;\n let li = 0, matched = 0, lastHit = -1, gaps = 0;\n for (let i = 0; i < needle.length; i++) {\n const ch = needle[i]!;\n const found = l.indexOf(ch, li);\n if (found === -1) return -1;\n if (lastHit !== -1) gaps += found - lastHit - 1;\n lastHit = found;\n li = found + 1;\n matched++;\n }\n return matched === needle.length ? 100 - gaps : -1;\n }\n\n /** Map PaletteCommand → CommandItem (category → group). */\n private _toItem(c: PaletteCommand, groupOverride?: string, query = ''): CommandItem {\n // Inject the active query as a keyword so cg-command's internal substring\n // filter passes through items we've already matched via fuzzy scoring.\n const item: CommandItem = {\n id: c.id,\n label: c.label,\n group: groupOverride ?? c.category ?? 'General',\n };\n if (c.shortcut !== undefined) item.shortcut = c.shortcut;\n if (c.icon !== undefined) item.icon = c.icon;\n if (query) item.keywords = [query];\n return item;\n }\n\n /** Build the filtered + ordered + recent-prepended item list to hand to cg-command. */\n private get _items(): CommandItem[] {\n const q = this._query.trim();\n const base = this.commands;\n\n // Recent group (only when no active query)\n const recentIds = q ? [] : this._readRecent();\n const byId = new Map(base.map(c => [c.id, c]));\n const recentItems: CommandItem[] = recentIds\n .map(id => byId.get(id))\n .filter((c): c is PaletteCommand => !!c)\n .map(c => this._toItem(c, 'Recent', q));\n\n let rest: PaletteCommand[];\n if (q) {\n const scored = base\n .map(c => ({ c, s: this._score(c.label, q) }))\n .filter(x => x.s >= 0)\n .sort((a, b) => b.s - a.s);\n rest = scored.map(x => x.c);\n } else {\n const recentSet = new Set(recentIds);\n rest = base.filter(c => !recentSet.has(c.id));\n }\n\n return [...recentItems, ...rest.map(c => this._toItem(c, undefined, q))];\n }\n\n private _onSelect = (e: Event): void => {\n const ev = e as CustomEvent<{ id: string; command: CommandItem }>;\n e.stopPropagation();\n const id = ev.detail?.id;\n const cmd = this.commands.find(c => c.id === id);\n if (!cmd) return;\n this._writeRecent(id);\n this.open = false;\n this.dispatchEvent(new CustomEvent('ai-command-select', {\n detail: { id: cmd.id, label: cmd.label },\n bubbles: true,\n composed: true,\n }));\n };\n\n private _onClose = (e: Event): void => {\n e.stopPropagation();\n if (this.open) this.open = false;\n this._query = '';\n this.dispatchEvent(new CustomEvent('ai-command-close', {\n bubbles: true,\n composed: true,\n }));\n };\n\n private _onInput = (e: Event): void => {\n const ev = e as CustomEvent<{ value: string }>;\n e.stopPropagation();\n this._query = ev.detail?.value ?? '';\n };\n\n override render() {\n if (!this.open) return nothing;\n return html`\n <cg-command\n ?open=${this.open}\n .placeholder=${this.placeholder}\n .commands=${this._items}\n @cg-command-select=${this._onSelect}\n @cg-command-close=${this._onClose}\n @cg-command-input=${this._onInput}\n ></cg-command>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-command-palette': AiCommandPalette;\n }\n}\n"],"names":["RECENT_STORAGE_KEY","RECENT_LIMIT","AiCommandPalette","LitElement","e","ev","id","cmd","c","raw","parsed","x","prev","label","q","l","needle","idx","li","matched","lastHit","gaps","i","ch","found","groupOverride","query","item","base","recentIds","byId","recentItems","rest","a","b","recentSet","html","nothing","hostBlock","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export declare class AiConfidenceBadge extends LitElement {
|
|
3
|
+
static styles: import('lit').CSSResult[];
|
|
4
|
+
/** Confidence score 0-1. */
|
|
5
|
+
score: number;
|
|
6
|
+
/** Show percentage or level name in the inline label. */
|
|
7
|
+
showPercentage: boolean;
|
|
8
|
+
/** Size variant. */
|
|
9
|
+
size: 'sm' | 'md' | 'lg';
|
|
10
|
+
/** Tooltip explanation text. */
|
|
11
|
+
explanation: string;
|
|
12
|
+
/** History array of scores (0-1) for sparkline. */
|
|
13
|
+
history: number[];
|
|
14
|
+
/** High-confidence threshold (default 0.8). */
|
|
15
|
+
highThreshold: number;
|
|
16
|
+
/** Low-confidence threshold (default 0.5). Below this = "low". */
|
|
17
|
+
lowThreshold: number;
|
|
18
|
+
private _getLevel;
|
|
19
|
+
private _getIconName;
|
|
20
|
+
private _getProgressVariant;
|
|
21
|
+
private _getSparkColor;
|
|
22
|
+
private _renderSparkline;
|
|
23
|
+
private _renderInner;
|
|
24
|
+
render(): import('lit').TemplateResult<1>;
|
|
25
|
+
}
|
|
26
|
+
declare global {
|
|
27
|
+
interface HTMLElementTagNameMap {
|
|
28
|
+
'ai-confidence-badge': AiConfidenceBadge;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ai-confidence-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-confidence-badge.d.ts","sourceRoot":"","sources":["../../../src/components/ai-confidence-badge/ai-confidence-badge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,uBAAuB,CAAC;AAC/B,OAAO,6BAA6B,CAAC;AACrC,OAAO,uCAAuC,CAAC;AAE/C,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,4BA+FnB;IAEH,4BAA4B;IACA,KAAK,EAAE,MAAM,CAAQ;IAEjD,yDAAyD;IACE,cAAc,EAAE,OAAO,CAAQ;IAE1F,oBAAoB;IACuB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAE3E,gCAAgC;IACJ,WAAW,EAAE,MAAM,CAAM;IAErD,mDAAmD;IACxB,OAAO,EAAE,MAAM,EAAE,CAAM;IAElD,+CAA+C;IACU,aAAa,EAAE,MAAM,CAAO;IAErF,kEAAkE;IACV,YAAY,EAAE,MAAM,CAAO;IAInF,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,YAAY;IA+BX,MAAM;CAiBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
|