@cognivo/components 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/focus-trap-vlQwKK-3.js +82 -0
- package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
- package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
- package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
- package/dist/cognivo.min.js +3375 -5270
- package/dist/cognivo.min.js.map +1 -1
- package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
- package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
- package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
- package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
- package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
- package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
- package/dist/components/ai-annotation/ai-annotation.js +2 -2
- package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
- package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
- package/dist/components/ai-avatar/ai-avatar.js +1 -1
- package/dist/components/ai-badge/ai-badge.js +1 -1
- package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
- package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
- package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
- package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
- package/dist/components/ai-changelog/ai-changelog.js +26 -26
- package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
- package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
- package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/ai-chat/ai-chat.js +9 -3
- package/dist/components/ai-chat/ai-chat.js.map +1 -1
- package/dist/components/ai-citation/ai-citation.d.ts +0 -6
- package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/ai-citation/ai-citation.js +64 -90
- package/dist/components/ai-citation/ai-citation.js.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
- package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
- package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
- package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
- package/dist/components/ai-context-window/ai-context-window.js +19 -19
- package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
- package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
- package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
- package/dist/components/ai-data-card/ai-data-card.js +2 -2
- package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
- package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
- package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
- package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
- package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
- package/dist/components/ai-data-table/ai-data-table.js +9 -9
- package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
- package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
- package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
- package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
- package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
- package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
- package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.js +10 -5
- package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
- package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
- package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
- package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
- package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
- package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
- package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
- package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
- package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
- package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
- package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
- package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
- package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
- package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
- package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
- package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
- package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
- package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
- package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
- package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
- package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
- package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
- package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
- package/dist/components/ai-presence/ai-presence.js +25 -25
- package/dist/components/ai-presence/ai-presence.js.map +1 -1
- package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
- package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
- package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
- package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
- package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
- package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
- package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
- package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
- package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
- package/dist/components/ai-search/ai-search.js +1 -1
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
- package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
- package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
- package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
- package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
- package/dist/components/ai-status-page/ai-status-page.js +15 -15
- package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
- package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
- package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
- package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
- package/dist/components/ai-thinking/ai-thinking.js +1 -1
- package/dist/components/ai-timeline/ai-timeline.js +2 -2
- package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
- package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
- package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
- package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
- package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
- package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
- package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
- package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
- package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
- package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
- package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
- package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
- package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
- package/dist/components/bias-authority/bias-authority.js +1 -1
- package/dist/components/bias-commitment/bias-commitment.js +1 -1
- package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
- package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
- package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
- package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
- package/dist/components/cg-accordion/cg-accordion.js +51 -43
- package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
- package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.js +24 -24
- package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
- package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
- package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
- package/dist/components/cg-badge/cg-badge.js +26 -20
- package/dist/components/cg-badge/cg-badge.js.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
- package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
- package/dist/components/cg-button/cg-button.d.ts +5 -71
- package/dist/components/cg-button/cg-button.d.ts.map +1 -1
- package/dist/components/cg-button/cg-button.js +63 -172
- package/dist/components/cg-button/cg-button.js.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.js +43 -29
- package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.js +28 -12
- package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
- package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
- package/dist/components/cg-callout/cg-callout.js +49 -48
- package/dist/components/cg-callout/cg-callout.js.map +1 -1
- package/dist/components/cg-card/cg-card.d.ts +9 -22
- package/dist/components/cg-card/cg-card.d.ts.map +1 -1
- package/dist/components/cg-card/cg-card.js +28 -56
- package/dist/components/cg-card/cg-card.js.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.js +19 -13
- package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
- package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
- package/dist/components/cg-chart/cg-chart.js +63 -58
- package/dist/components/cg-chart/cg-chart.js.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
- package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
- package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
- package/dist/components/cg-chip/cg-chip.js +31 -31
- package/dist/components/cg-chip/cg-chip.js.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.js +36 -34
- package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
- package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
- package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.js +13 -6
- package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
- package/dist/components/cg-command/cg-command.d.ts.map +1 -1
- package/dist/components/cg-command/cg-command.js +52 -45
- package/dist/components/cg-command/cg-command.js.map +1 -1
- package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
- package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
- package/dist/components/cg-drawer/cg-drawer.js +3 -3
- package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
- package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
- package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
- package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.js +9 -10
- package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
- package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
- package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
- package/dist/components/cg-form/cg-form.js +17 -17
- package/dist/components/cg-form/cg-form.js.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
- package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
- package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
- package/dist/components/cg-icon/cg-icon.js +44 -37
- package/dist/components/cg-icon/cg-icon.js.map +1 -1
- package/dist/components/cg-image/cg-image.js +2 -2
- package/dist/components/cg-image/cg-image.js.map +1 -1
- package/dist/components/cg-image-block/cg-image-block.js +3 -3
- package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
- package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
- package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
- package/dist/components/cg-input/cg-input.js +3 -3
- package/dist/components/cg-input/cg-input.js.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.js +26 -24
- package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
- package/dist/components/cg-label/cg-label.d.ts +4 -1
- package/dist/components/cg-label/cg-label.d.ts.map +1 -1
- package/dist/components/cg-label/cg-label.js +44 -41
- package/dist/components/cg-label/cg-label.js.map +1 -1
- package/dist/components/cg-link/cg-link.js +23 -23
- package/dist/components/cg-link/cg-link.js.map +1 -1
- package/dist/components/cg-list/cg-list.js +5 -5
- package/dist/components/cg-list/cg-list.js.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.js +46 -40
- package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.js +171 -121
- package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.js +59 -47
- package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
- package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
- package/dist/components/cg-meter/cg-meter.js +76 -76
- package/dist/components/cg-meter/cg-meter.js.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
- package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
- package/dist/components/cg-modal/cg-modal.d.ts +3 -0
- package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
- package/dist/components/cg-modal/cg-modal.js +82 -83
- package/dist/components/cg-modal/cg-modal.js.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.js +64 -55
- package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.js +90 -77
- package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
- package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.js +50 -49
- package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.js +42 -34
- package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
- package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
- package/dist/components/cg-popover/cg-popover.d.ts +12 -2
- package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
- package/dist/components/cg-popover/cg-popover.js +90 -63
- package/dist/components/cg-popover/cg-popover.js.map +1 -1
- package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
- package/dist/components/cg-portal/cg-portal.js +42 -41
- package/dist/components/cg-portal/cg-portal.js.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
- package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
- package/dist/components/cg-radio/cg-radio.d.ts +10 -0
- package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
- package/dist/components/cg-radio/cg-radio.js +59 -48
- package/dist/components/cg-radio/cg-radio.js.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
- package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
- package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
- package/dist/components/cg-rating/cg-rating.js +56 -54
- package/dist/components/cg-rating/cg-rating.js.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.js +45 -35
- package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
- package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
- package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
- package/dist/components/cg-select/cg-select.d.ts +4 -2
- package/dist/components/cg-select/cg-select.d.ts.map +1 -1
- package/dist/components/cg-select/cg-select.js +96 -58
- package/dist/components/cg-select/cg-select.js.map +1 -1
- package/dist/components/cg-separator/cg-separator.d.ts +1 -2
- package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
- package/dist/components/cg-separator/cg-separator.js +5 -8
- package/dist/components/cg-separator/cg-separator.js.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.js +80 -43
- package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
- package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
- package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
- package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
- package/dist/components/cg-slider/cg-slider.js +80 -73
- package/dist/components/cg-slider/cg-slider.js.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.js +10 -19
- package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.js +64 -50
- package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
- package/dist/components/cg-stack/cg-stack.js +1 -1
- package/dist/components/cg-steps/cg-steps.js +1 -1
- package/dist/components/cg-switch/cg-switch.d.ts +3 -0
- package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
- package/dist/components/cg-switch/cg-switch.js +39 -47
- package/dist/components/cg-switch/cg-switch.js.map +1 -1
- package/dist/components/cg-table/cg-table.d.ts +0 -7
- package/dist/components/cg-table/cg-table.d.ts.map +1 -1
- package/dist/components/cg-table/cg-table.js +50 -47
- package/dist/components/cg-table/cg-table.js.map +1 -1
- package/dist/components/cg-tabs/cg-tabs.js +1 -1
- package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
- package/dist/components/cg-text/cg-text.js +1 -1
- package/dist/components/cg-textarea/cg-textarea.js +1 -1
- package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
- package/dist/components/cg-toaster/cg-toaster.js +3 -3
- package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
- package/dist/components/cg-toggle/cg-toggle.js +1 -1
- package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
- package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
- package/dist/foundation.d.ts +0 -16
- package/dist/foundation.d.ts.map +1 -1
- package/dist/foundation.js +174 -206
- package/dist/foundation.js.map +1 -1
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -132
- package/dist/index.js.map +1 -1
- package/dist/utils/focus-trap.d.ts +19 -2
- package/dist/utils/focus-trap.d.ts.map +1 -1
- package/package.json +6 -810
- package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
- package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
- package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
- package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
- package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
- package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
- package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
- package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.js +0 -136
- package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
- package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.js +0 -114
- package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
- package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
- package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
- package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.js +0 -86
- package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
- package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
- package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.js +0 -106
- package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
- package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.js +0 -177
- package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
- package/dist/components/cg-theme/cg-theme.d.ts +0 -82
- package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
- package/dist/components/cg-theme/cg-theme.js +0 -91
- package/dist/components/cg-theme/cg-theme.js.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
- package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
- package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.js +0 -131
- package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
- package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
- package/dist/utils/drag-manager.d.ts +0 -40
- package/dist/utils/drag-manager.d.ts.map +0 -1
|
@@ -1,166 +1,71 @@
|
|
|
1
|
-
import { css as h, LitElement as
|
|
2
|
-
import { property as
|
|
3
|
-
import { h as v, r as m, f as y } from "../../chunks/premium.css-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
(o = t[n]) && (e = (a ? o(r, i, e) : o(e)) || e);
|
|
9
|
-
return a && e && x(r, i, e), e;
|
|
1
|
+
import { css as h, LitElement as b, html as o, nothing as g } from "lit";
|
|
2
|
+
import { property as d, customElement as p } from "lit/decorators.js";
|
|
3
|
+
import { h as v, r as m, f as y } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var x = Object.defineProperty, w = Object.getOwnPropertyDescriptor, l = (t, r, n, e) => {
|
|
5
|
+
for (var a = e > 1 ? void 0 : e ? w(r, n) : r, i = t.length - 1, s; i >= 0; i--)
|
|
6
|
+
(s = t[i]) && (a = (e ? s(r, n, a) : s(a)) || a);
|
|
7
|
+
return e && a && x(r, n, a), a;
|
|
10
8
|
};
|
|
11
|
-
let
|
|
9
|
+
let c = class extends b {
|
|
12
10
|
constructor() {
|
|
13
|
-
super(...arguments), this.data = null, this.format = "json", this.maxRows = 50, this.title = "Data Preview"
|
|
11
|
+
super(...arguments), this.data = null, this.format = "json", this.maxRows = 50, this.title = "Data Preview";
|
|
14
12
|
}
|
|
15
|
-
// ─── Helpers ────────────────────────────────────────────────────────────
|
|
16
13
|
_getRowCount() {
|
|
17
|
-
return Array.isArray(this.data) ? this.data.length : typeof this.data == "string" && this.format === "csv" ?
|
|
18
|
-
`).filter(Boolean).length - 1
|
|
14
|
+
return Array.isArray(this.data) ? this.data.length : typeof this.data == "string" && this.format === "csv" ? this.data.split(`
|
|
15
|
+
`).filter(Boolean).length - 1 : 0;
|
|
19
16
|
}
|
|
20
17
|
_getSize() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return r < 1024 ? `${r} B` : r < 1024 * 1024 ? `${(r / 1024).toFixed(1)} KB` : `${(r / (1024 * 1024)).toFixed(1)} MB`;
|
|
24
|
-
} catch {
|
|
25
|
-
return "0 B";
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/** Detect column type by sampling values across rows. */
|
|
29
|
-
_inferColumnType(t, r) {
|
|
30
|
-
let i = 0, a = 0, e = null;
|
|
31
|
-
for (const n of t) {
|
|
32
|
-
const o = n[r];
|
|
33
|
-
if (o == null || o === "") {
|
|
34
|
-
i++;
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
a++;
|
|
38
|
-
const c = this._cellType(o);
|
|
39
|
-
if (e && e !== c) return "string";
|
|
40
|
-
if (e = c, a > 25) break;
|
|
41
|
-
}
|
|
42
|
-
return a === 0 ? i > 0 ? "null" : "string" : e ?? "string";
|
|
43
|
-
}
|
|
44
|
-
_cellType(t) {
|
|
45
|
-
return t == null ? "null" : typeof t == "boolean" ? "boolean" : typeof t == "number" ? "number" : typeof t == "object" ? "object" : typeof t == "string" ? /^-?\d+(\.\d+)?$/.test(t) ? "number" : t === "true" || t === "false" ? "boolean" : t === "null" ? "null" : /^\d{4}-\d{2}-\d{2}/.test(t) && !isNaN(Date.parse(t)) ? "date" : "string" : "string";
|
|
46
|
-
}
|
|
47
|
-
_typeClass(t) {
|
|
48
|
-
switch (t) {
|
|
49
|
-
case "number":
|
|
50
|
-
return "tok-number";
|
|
51
|
-
case "boolean":
|
|
52
|
-
return "tok-bool";
|
|
53
|
-
case "null":
|
|
54
|
-
return "tok-null";
|
|
55
|
-
case "date":
|
|
56
|
-
return "tok-date";
|
|
57
|
-
case "object":
|
|
58
|
-
return "tok-string";
|
|
59
|
-
default:
|
|
60
|
-
return "tok-string";
|
|
61
|
-
}
|
|
18
|
+
const t = typeof this.data == "string" ? this.data : JSON.stringify(this.data), r = new Blob([t]).size;
|
|
19
|
+
return r < 1024 ? `${r} B` : r < 1024 * 1024 ? `${(r / 1024).toFixed(1)} KB` : `${(r / (1024 * 1024)).toFixed(1)} MB`;
|
|
62
20
|
}
|
|
63
|
-
_formatCell(t, r) {
|
|
64
|
-
if (t == null) return "null";
|
|
65
|
-
if (r === "object")
|
|
66
|
-
try {
|
|
67
|
-
return JSON.stringify(t);
|
|
68
|
-
} catch {
|
|
69
|
-
return String(t);
|
|
70
|
-
}
|
|
71
|
-
return String(t);
|
|
72
|
-
}
|
|
73
|
-
// ─── JSON syntax highlight ──────────────────────────────────────────────
|
|
74
21
|
_syntaxHighlight(t) {
|
|
75
|
-
const r = [],
|
|
76
|
-
let
|
|
77
|
-
for (; (
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
let
|
|
81
|
-
/^"/.test(
|
|
22
|
+
const r = [], n = /("(\\u[\dA-Fa-f]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)/g;
|
|
23
|
+
let e = 0, a;
|
|
24
|
+
for (; (a = n.exec(t)) !== null; ) {
|
|
25
|
+
a.index > e && r.push(o`${t.substring(e, a.index)}`);
|
|
26
|
+
const i = a[0];
|
|
27
|
+
let s = "json-number";
|
|
28
|
+
/^"/.test(i) ? s = a[3] ? "json-key" : "json-string" : /true|false/.test(i) ? s = "json-bool" : /null/.test(i) && (s = "json-null"), r.push(o`<span class=${s}>${i}</span>`), e = n.lastIndex;
|
|
82
29
|
}
|
|
83
|
-
return
|
|
30
|
+
return e < t.length && r.push(o`${t.substring(e)}`), o`${r}`;
|
|
84
31
|
}
|
|
85
|
-
// ─── Renderers ──────────────────────────────────────────────────────────
|
|
86
32
|
_renderJson() {
|
|
87
33
|
try {
|
|
88
34
|
const t = typeof this.data == "string" ? this.data : JSON.stringify(this.data, null, 2);
|
|
89
|
-
return
|
|
35
|
+
return o`<pre>${this._syntaxHighlight(t)}</pre>`;
|
|
90
36
|
} catch {
|
|
91
|
-
return
|
|
37
|
+
return o`<pre>${String(this.data)}</pre>`;
|
|
92
38
|
}
|
|
93
39
|
}
|
|
94
40
|
_renderTable(t, r) {
|
|
95
|
-
if (t.length === 0)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<path d="M3 10h18M9 4v16"/>
|
|
101
|
-
</svg>
|
|
102
|
-
<span>No data to preview</span>
|
|
103
|
-
</div>
|
|
104
|
-
`;
|
|
105
|
-
const i = Object.keys(t[0]), a = {};
|
|
106
|
-
for (const e of i) a[e] = this._inferColumnType(t, e);
|
|
107
|
-
return s`
|
|
108
|
-
<table aria-label="Data table">
|
|
109
|
-
<thead>
|
|
110
|
-
<tr>
|
|
111
|
-
${i.map((e) => s`
|
|
112
|
-
<th scope="col">
|
|
113
|
-
<span class="col-name">${e}</span>
|
|
114
|
-
<span class="col-type">${a[e]}</span>
|
|
115
|
-
</th>
|
|
116
|
-
`)}
|
|
117
|
-
</tr>
|
|
118
|
-
</thead>
|
|
41
|
+
if (t.length === 0) return o`<div class="truncated-msg">No data</div>`;
|
|
42
|
+
const n = Object.keys(t[0]);
|
|
43
|
+
return o`
|
|
44
|
+
<table role="table" aria-label="Data table">
|
|
45
|
+
<thead><tr>${n.map((e) => o`<th scope="col">${e}</th>`)}</tr></thead>
|
|
119
46
|
<tbody>
|
|
120
|
-
${t.map((e) =>
|
|
121
|
-
<tr>
|
|
122
|
-
${i.map((n) => {
|
|
123
|
-
const o = this._cellType(e[n]) === "null" ? "null" : a[n], c = this._formatCell(e[n], o);
|
|
124
|
-
return s`<td title=${c}><span class=${this._typeClass(o)}>${c}</span></td>`;
|
|
125
|
-
})}
|
|
126
|
-
</tr>
|
|
47
|
+
${t.map((e) => o`
|
|
48
|
+
<tr>${n.map((a) => o`<td>${String(e[a] ?? "")}</td>`)}</tr>
|
|
127
49
|
`)}
|
|
128
50
|
</tbody>
|
|
129
51
|
</table>
|
|
130
|
-
${r ?
|
|
52
|
+
${r ? o`<div class="truncated-msg">Showing ${t.length} of ${this._getRowCount()} rows</div>` : g}
|
|
131
53
|
`;
|
|
132
54
|
}
|
|
133
55
|
_renderCsv() {
|
|
134
56
|
if (typeof this.data != "string") return this._renderJson();
|
|
135
57
|
const t = this.data.split(`
|
|
136
58
|
`).filter(Boolean);
|
|
137
|
-
if (t.length === 0) return
|
|
138
|
-
const r = t[0].split(",").map((
|
|
139
|
-
const
|
|
140
|
-
return r.forEach((
|
|
141
|
-
|
|
142
|
-
}),
|
|
59
|
+
if (t.length === 0) return o`<pre>${this.data}</pre>`;
|
|
60
|
+
const r = t[0].split(",").map((a) => a.trim()), e = t.slice(1, this.maxRows + 1).map((a) => {
|
|
61
|
+
const i = a.split(","), s = {};
|
|
62
|
+
return r.forEach((f, u) => {
|
|
63
|
+
s[f] = (i[u] || "").trim();
|
|
64
|
+
}), s;
|
|
143
65
|
});
|
|
144
|
-
return this._renderTable(
|
|
66
|
+
return this._renderTable(e, t.length - 1 > this.maxRows);
|
|
145
67
|
}
|
|
146
68
|
_renderContent() {
|
|
147
|
-
if (this.loading)
|
|
148
|
-
return s`
|
|
149
|
-
<div class="state">
|
|
150
|
-
<cg-spinner size="md"></cg-spinner>
|
|
151
|
-
<span>Parsing data…</span>
|
|
152
|
-
</div>
|
|
153
|
-
`;
|
|
154
|
-
if (this.error)
|
|
155
|
-
return s`
|
|
156
|
-
<div class="state error" role="alert">
|
|
157
|
-
<svg class="state-icon" viewBox="0 0 24 24" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
158
|
-
<circle cx="12" cy="12" r="9"/>
|
|
159
|
-
<path d="M12 8v5M12 16h.01"/>
|
|
160
|
-
</svg>
|
|
161
|
-
<span>${this.error}</span>
|
|
162
|
-
</div>
|
|
163
|
-
`;
|
|
164
69
|
if (this.format === "csv") return this._renderCsv();
|
|
165
70
|
if (this.format === "table" || Array.isArray(this.data) && typeof this.data[0] == "object") {
|
|
166
71
|
const t = Array.isArray(this.data) ? this.data : [this.data], r = t.slice(0, this.maxRows);
|
|
@@ -183,110 +88,79 @@ let l = class extends f {
|
|
|
183
88
|
}
|
|
184
89
|
render() {
|
|
185
90
|
const t = this._getRowCount();
|
|
186
|
-
|
|
187
|
-
if (Array.isArray(this.data) && this.data.length > 0 && typeof this.data[0] == "object" && this.data[0] !== null)
|
|
188
|
-
r = Object.keys(this.data[0]).length;
|
|
189
|
-
else if (this.format === "csv" && typeof this.data == "string") {
|
|
190
|
-
const i = this.data.split(`
|
|
191
|
-
`)[0];
|
|
192
|
-
r = i ? i.split(",").length : 0;
|
|
193
|
-
}
|
|
194
|
-
return s`
|
|
91
|
+
return o`
|
|
195
92
|
<div class="header">
|
|
196
|
-
<div
|
|
93
|
+
<div>
|
|
197
94
|
<h3 class="title">${this.title}</h3>
|
|
198
95
|
<div class="meta">
|
|
199
96
|
<span class="format-badge">${this.format}</span>
|
|
200
|
-
${t > 0 ?
|
|
201
|
-
|
|
202
|
-
<span>· ${this._getSize()}</span>
|
|
97
|
+
${t > 0 ? o`<span>${t} rows</span>` : g}
|
|
98
|
+
<span>${this._getSize()}</span>
|
|
203
99
|
</div>
|
|
204
100
|
</div>
|
|
205
101
|
</div>
|
|
206
|
-
|
|
207
102
|
<div class="preview-area" role="region" aria-label="Data preview" tabindex="0">
|
|
208
103
|
${this._renderContent()}
|
|
209
104
|
</div>
|
|
210
|
-
|
|
211
105
|
<div class="actions">
|
|
212
|
-
<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
Confirm
|
|
217
|
-
</cg-button>
|
|
106
|
+
<button class="btn btn-cancel" @click=${this._onCancel}
|
|
107
|
+
aria-label="Cancel" tabindex="0">Cancel</button>
|
|
108
|
+
<button class="btn btn-confirm" @click=${this._onConfirm}
|
|
109
|
+
aria-label="Confirm data" tabindex="0">Confirm</button>
|
|
218
110
|
</div>
|
|
219
111
|
`;
|
|
220
112
|
}
|
|
221
113
|
};
|
|
222
|
-
|
|
114
|
+
c.styles = [v, m, y, h`
|
|
223
115
|
:host {
|
|
224
|
-
|
|
225
|
-
background: var(--cg-color-surface-cards-background);
|
|
116
|
+
background: var(--cg-color-surface-base-background);
|
|
226
117
|
color: var(--cg-color-surface-base-text);
|
|
227
118
|
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
228
119
|
border-radius: var(--cg-border-radius-150);
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;
|
|
120
|
+
padding: var(--cg-spacing-16);
|
|
121
|
+
animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out) both;
|
|
232
122
|
}
|
|
233
123
|
:host([hidden]) { display: none; }
|
|
234
124
|
|
|
235
|
-
/* ── Header ── */
|
|
236
125
|
.header {
|
|
237
126
|
display: flex;
|
|
238
127
|
justify-content: space-between;
|
|
239
|
-
align-items:
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
margin-bottom: var(--cg-spacing-16);
|
|
128
|
+
align-items: center;
|
|
129
|
+
padding-bottom: var(--cg-spacing-12);
|
|
130
|
+
border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
131
|
+
margin-bottom: var(--cg-spacing-12);
|
|
244
132
|
}
|
|
245
|
-
.header-left { min-width: 0; flex: 1; }
|
|
246
133
|
|
|
247
134
|
.title {
|
|
248
135
|
font-size: var(--cg-font-size-sm);
|
|
249
136
|
font-weight: var(--cg-font-weight-semibold);
|
|
250
|
-
margin: 0
|
|
251
|
-
color: var(--cg-color-surface-base-text);
|
|
137
|
+
margin: 0;
|
|
252
138
|
}
|
|
253
139
|
|
|
254
140
|
.meta {
|
|
255
141
|
display: flex;
|
|
256
|
-
|
|
257
|
-
gap: var(--cg-spacing-8) var(--cg-spacing-12);
|
|
142
|
+
gap: var(--cg-spacing-12);
|
|
258
143
|
font-size: var(--cg-font-size-xs);
|
|
259
144
|
color: var(--cg-color-input-text-placeholder);
|
|
260
|
-
align-items: center;
|
|
261
|
-
font-variant-numeric: tabular-nums;
|
|
262
145
|
}
|
|
263
146
|
|
|
264
|
-
/* Format badge — neutral chrome, not brand-tinted (it's a type label, not a CTA). */
|
|
265
147
|
.format-badge {
|
|
266
|
-
display: inline-flex;
|
|
267
|
-
align-items: center;
|
|
268
148
|
padding: var(--cg-spacing-2) var(--cg-spacing-8);
|
|
269
|
-
background: var(--cg-
|
|
270
|
-
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
149
|
+
background: var(--cg-overlay-accent-subtle);
|
|
271
150
|
border-radius: var(--cg-border-radius-50);
|
|
272
|
-
font-size:
|
|
273
|
-
font-weight: var(--cg-font-weight-bold);
|
|
151
|
+
font-size: var(--cg-font-size-xs);
|
|
274
152
|
color: var(--cg-color-surface-base-text);
|
|
275
153
|
text-transform: uppercase;
|
|
276
|
-
|
|
154
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
277
155
|
}
|
|
278
156
|
|
|
279
|
-
/* ── Preview surface ── */
|
|
280
157
|
.preview-area {
|
|
281
|
-
max-height:
|
|
158
|
+
max-height: var(--cg-component-table-virtual-max-height);
|
|
282
159
|
overflow: auto;
|
|
283
|
-
background: var(--cg-
|
|
284
|
-
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
160
|
+
background: var(--cg-color-surface-cards-background);
|
|
285
161
|
border-radius: var(--cg-border-radius-100);
|
|
286
162
|
padding: var(--cg-spacing-12);
|
|
287
|
-
margin-bottom: var(--cg-spacing-
|
|
288
|
-
scrollbar-width: thin;
|
|
289
|
-
scrollbar-color: var(--cg-color-surface-cards-border-strong) transparent;
|
|
163
|
+
margin-bottom: var(--cg-spacing-12);
|
|
290
164
|
}
|
|
291
165
|
|
|
292
166
|
pre {
|
|
@@ -298,118 +172,107 @@ l.styles = [v, m, y, h`
|
|
|
298
172
|
word-break: break-word;
|
|
299
173
|
}
|
|
300
174
|
|
|
301
|
-
|
|
302
|
-
.
|
|
303
|
-
.
|
|
304
|
-
.
|
|
305
|
-
.
|
|
306
|
-
.tok-null, .json-null { color: var(--cg-color-input-text-placeholder); font-style: italic; }
|
|
307
|
-
.tok-date { color: var(--cg-color-status-info-text-default); }
|
|
175
|
+
.json-key { color: var(--cg-color-code-keyword); }
|
|
176
|
+
.json-string { color: var(--cg-color-code-string); }
|
|
177
|
+
.json-number { color: var(--cg-color-code-number); }
|
|
178
|
+
.json-bool { color: var(--cg-color-status-success-text-default); }
|
|
179
|
+
.json-null { color: var(--cg-color-input-text-placeholder); }
|
|
308
180
|
|
|
309
|
-
/* ── Table ── */
|
|
310
181
|
table {
|
|
311
182
|
width: 100%;
|
|
312
183
|
border-collapse: collapse;
|
|
313
184
|
font-size: var(--cg-font-size-xs);
|
|
314
185
|
}
|
|
315
186
|
|
|
316
|
-
|
|
187
|
+
th {
|
|
317
188
|
text-align: left;
|
|
318
|
-
padding: var(--cg-spacing-
|
|
189
|
+
padding: var(--cg-spacing-6) var(--cg-spacing-8);
|
|
319
190
|
border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
320
191
|
color: var(--cg-color-input-text-placeholder);
|
|
321
|
-
font-weight: var(--cg-font-weight-
|
|
322
|
-
font-size: 10px;
|
|
323
|
-
text-transform: uppercase;
|
|
324
|
-
letter-spacing: var(--cg-letter-spacing-wide);
|
|
192
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
325
193
|
position: sticky;
|
|
326
|
-
top:
|
|
327
|
-
background: var(--cg-color-surface-cards-
|
|
328
|
-
backdrop-filter: blur(6px);
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
.col-name { display: inline-block; }
|
|
332
|
-
.col-type {
|
|
333
|
-
display: inline-block;
|
|
334
|
-
margin-left: var(--cg-spacing-6);
|
|
335
|
-
font-size: 9px;
|
|
336
|
-
font-weight: var(--cg-font-weight-medium);
|
|
337
|
-
color: var(--cg-color-input-text-placeholder);
|
|
338
|
-
opacity: 0.7;
|
|
194
|
+
top: 0;
|
|
195
|
+
background: var(--cg-color-surface-cards-background);
|
|
339
196
|
}
|
|
340
197
|
|
|
341
|
-
|
|
342
|
-
padding: var(--cg-spacing-
|
|
198
|
+
td {
|
|
199
|
+
padding: var(--cg-spacing-4) var(--cg-spacing-8);
|
|
200
|
+
border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
343
201
|
color: var(--cg-color-surface-base-text);
|
|
344
202
|
font-family: var(--cg-font-family-mono);
|
|
345
|
-
vertical-align: top;
|
|
346
|
-
max-width: 240px;
|
|
347
|
-
overflow: hidden;
|
|
348
|
-
text-overflow: ellipsis;
|
|
349
|
-
white-space: nowrap;
|
|
350
|
-
border-bottom: var(--cg-border-width-50) solid transparent;
|
|
351
203
|
}
|
|
352
204
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
205
|
+
tr:hover td {
|
|
206
|
+
background: var(--cg-overlay-dark-subtle);
|
|
207
|
+
}
|
|
356
208
|
|
|
357
209
|
.truncated-msg {
|
|
358
210
|
font-size: var(--cg-font-size-xs);
|
|
359
211
|
color: var(--cg-color-input-text-placeholder);
|
|
360
212
|
text-align: center;
|
|
361
|
-
padding: var(--cg-spacing-
|
|
213
|
+
padding: var(--cg-spacing-8);
|
|
362
214
|
font-style: italic;
|
|
363
215
|
}
|
|
364
216
|
|
|
365
|
-
|
|
366
|
-
.state {
|
|
217
|
+
.actions {
|
|
367
218
|
display: flex;
|
|
368
|
-
flex-direction: column;
|
|
369
|
-
align-items: center;
|
|
370
|
-
justify-content: center;
|
|
371
219
|
gap: var(--cg-spacing-8);
|
|
372
|
-
|
|
373
|
-
|
|
220
|
+
justify-content: flex-end;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.btn {
|
|
224
|
+
border: none;
|
|
225
|
+
border-radius: var(--cg-border-radius-100);
|
|
226
|
+
padding: var(--cg-spacing-8) var(--cg-spacing-16);
|
|
374
227
|
font-size: var(--cg-font-size-sm);
|
|
228
|
+
font-weight: var(--cg-font-weight-semibold);
|
|
229
|
+
cursor: pointer;
|
|
230
|
+
font-family: inherit;
|
|
375
231
|
}
|
|
376
|
-
|
|
377
|
-
.
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
stroke: currentColor;
|
|
232
|
+
|
|
233
|
+
.btn:focus-visible {
|
|
234
|
+
outline: 2px solid var(--cg-overlay-accent-strong);
|
|
235
|
+
outline-offset: var(--cg-outline-offset-default);
|
|
381
236
|
}
|
|
382
237
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
238
|
+
.btn-cancel {
|
|
239
|
+
background: transparent;
|
|
240
|
+
border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
|
|
241
|
+
color: var(--cg-color-input-text-placeholder);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.btn-cancel:hover {
|
|
245
|
+
background: var(--cg-color-surface-cards-border);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.btn-confirm {
|
|
249
|
+
background: var(--cg-color-action-primary-background-default);
|
|
250
|
+
color: var(--cg-color-surface-container-background);
|
|
251
|
+
}
|
|
252
|
+
.btn-confirm:hover {
|
|
253
|
+
filter: brightness(1.1);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.btn:active {
|
|
257
|
+
transform: scale(var(--cg-interaction-press-scale));
|
|
388
258
|
}
|
|
389
|
-
.actions cg-button { flex-shrink: 0; }
|
|
390
259
|
`];
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
],
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
],
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
],
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
],
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
],
|
|
406
|
-
d([
|
|
407
|
-
g({ type: String })
|
|
408
|
-
], l.prototype, "error", 2);
|
|
409
|
-
l = d([
|
|
410
|
-
b("ai-data-preview")
|
|
411
|
-
], l);
|
|
260
|
+
l([
|
|
261
|
+
d({ attribute: !1 })
|
|
262
|
+
], c.prototype, "data", 2);
|
|
263
|
+
l([
|
|
264
|
+
d({ type: String })
|
|
265
|
+
], c.prototype, "format", 2);
|
|
266
|
+
l([
|
|
267
|
+
d({ type: Number })
|
|
268
|
+
], c.prototype, "maxRows", 2);
|
|
269
|
+
l([
|
|
270
|
+
d({ type: String })
|
|
271
|
+
], c.prototype, "title", 2);
|
|
272
|
+
c = l([
|
|
273
|
+
p("ai-data-preview")
|
|
274
|
+
], c);
|
|
412
275
|
export {
|
|
413
|
-
|
|
276
|
+
c as AiDataPreview
|
|
414
277
|
};
|
|
415
278
|
//# sourceMappingURL=ai-data-preview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-data-preview.js","sources":["../../../src/components/ai-data-preview/ai-data-preview.ts"],"sourcesContent":["/**\n * @element ai-data-preview\n * Structured-data preview with JSON syntax coloring, CSV/table formatting,\n * type-inferred + color-coded cell values, zebra-striped rows, schema\n * summary, loading/error/empty states, and dogfooded confirm/cancel\n * actions via <cg-button>.\n *\n * @example\n * ```html\n * <ai-data-preview\n * .data=${[{name:'Alice', score:92}, {name:'Bob', score:87}]}\n * format=\"table\"\n * title=\"Training Data\"\n * max-rows=\"25\"\n * ></ai-data-preview>\n * ```\n *\n * @fires {CustomEvent<{data: unknown, format: string}>} ai-data-confirm - Confirm clicked\n * @fires {CustomEvent} ai-data-cancel - Cancel clicked\n *\n * @cssprop [--cg-color-surface-cards-background] - Card background\n * @cssprop [--cg-color-code-keyword] - JSON key + table-string color\n * @cssprop [--cg-color-code-number] - Number cell color\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\nimport '../cg-button/cg-button.js';\nimport '../cg-spinner/cg-spinner.js';\n\ntype CellType = 'string' | 'number' | 'boolean' | 'null' | 'date' | 'object';\n\n@customElement('ai-data-preview')\nexport class AiDataPreview extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n display: block;\n background: var(--cg-color-surface-cards-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 padding: var(--cg-spacing-20);\n animation: fadeSlideIn var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n /* ── Header ── */\n .header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: var(--cg-spacing-12);\n padding-bottom: var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n margin-bottom: var(--cg-spacing-16);\n }\n .header-left { min-width: 0; flex: 1; }\n\n .title {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n margin: 0 0 var(--cg-spacing-4);\n color: var(--cg-color-surface-base-text);\n }\n\n .meta {\n display: flex;\n flex-wrap: wrap;\n gap: var(--cg-spacing-8) var(--cg-spacing-12);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n align-items: center;\n font-variant-numeric: tabular-nums;\n }\n\n /* Format badge — neutral chrome, not brand-tinted (it's a type label, not a CTA). */\n .format-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n background: var(--cg-color-surface-cards-emphasis);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-50);\n font-size: 10px;\n font-weight: var(--cg-font-weight-bold);\n color: var(--cg-color-surface-base-text);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n\n /* ── Preview surface ── */\n .preview-area {\n max-height: 320px;\n overflow: auto;\n background: var(--cg-overlay-dark-subtle);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-12);\n margin-bottom: var(--cg-spacing-16);\n scrollbar-width: thin;\n scrollbar-color: var(--cg-color-surface-cards-border-strong) transparent;\n }\n\n pre {\n margin: 0;\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-xs);\n line-height: var(--cg-line-height-relaxed);\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n /* JSON syntax tokens — match the type colors used in the table cells. */\n .tok-key, .json-key { color: var(--cg-color-code-keyword); }\n .tok-string, .json-string { color: var(--cg-color-code-string); }\n .tok-number, .json-number { color: var(--cg-color-code-number); }\n .tok-bool, .json-bool { color: var(--cg-color-status-success-text-default); }\n .tok-null, .json-null { color: var(--cg-color-input-text-placeholder); font-style: italic; }\n .tok-date { color: var(--cg-color-status-info-text-default); }\n\n /* ── Table ── */\n table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--cg-font-size-xs);\n }\n\n thead th {\n text-align: left;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-input-text-placeholder);\n font-weight: var(--cg-font-weight-bold);\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n position: sticky;\n top: calc(-1 * var(--cg-spacing-12));\n background: var(--cg-color-surface-cards-emphasis);\n backdrop-filter: blur(6px);\n }\n\n .col-name { display: inline-block; }\n .col-type {\n display: inline-block;\n margin-left: var(--cg-spacing-6);\n font-size: 9px;\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-input-text-placeholder);\n opacity: 0.7;\n }\n\n tbody td {\n padding: var(--cg-spacing-6) var(--cg-spacing-12);\n color: var(--cg-color-surface-base-text);\n font-family: var(--cg-font-family-mono);\n vertical-align: top;\n max-width: 240px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-bottom: var(--cg-border-width-50) solid transparent;\n }\n\n /* Zebra striping for readability — the modern data-viewer default. */\n tbody tr:nth-child(even) td { background: var(--cg-overlay-dark-subtle); }\n tbody tr:hover td { background: var(--cg-color-action-tertiary-background-hover); }\n\n .truncated-msg {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n text-align: center;\n padding: var(--cg-spacing-12);\n font-style: italic;\n }\n\n /* ── State overlays ── */\n .state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-32);\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-sm);\n }\n .state.error { color: var(--cg-color-status-error-text-default); }\n .state-icon {\n width: var(--cg-icon-size-200);\n height: var(--cg-icon-size-200);\n stroke: currentColor;\n }\n\n /* ── Actions ── */\n .actions {\n display: flex;\n gap: var(--cg-spacing-8);\n justify-content: flex-end;\n }\n .actions cg-button { flex-shrink: 0; }\n `];\n\n @property({ attribute: false }) data: unknown = null;\n @property({ type: String }) format: 'json' | 'csv' | 'table' = 'json';\n @property({ type: Number, attribute: 'max-rows' }) maxRows = 50;\n @property({ type: String }) override title = 'Data Preview';\n @property({ type: Boolean }) loading = false;\n @property({ type: String }) error = '';\n\n // ─── Helpers ────────────────────────────────────────────────────────────\n\n private _getRowCount(): number {\n if (Array.isArray(this.data)) return this.data.length;\n if (typeof this.data === 'string' && this.format === 'csv') {\n return Math.max(0, this.data.split('\\n').filter(Boolean).length - 1);\n }\n return 0;\n }\n\n private _getSize(): string {\n try {\n const json = typeof this.data === 'string' ? this.data : JSON.stringify(this.data);\n const bytes = new Blob([json]).size;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n } catch {\n return '0 B';\n }\n }\n\n /** Detect column type by sampling values across rows. */\n private _inferColumnType(rows: Record<string, unknown>[], key: string): CellType {\n let nullCount = 0;\n let sampled = 0;\n let kind: CellType | null = null;\n for (const row of rows) {\n const v = row[key];\n if (v === null || v === undefined || v === '') { nullCount++; continue; }\n sampled++;\n const t = this._cellType(v);\n // Promote conflicting types to 'string'.\n if (kind && kind !== t) return 'string';\n kind = t;\n if (sampled > 25) break;\n }\n if (sampled === 0) return nullCount > 0 ? 'null' : 'string';\n return kind ?? 'string';\n }\n\n private _cellType(v: unknown): CellType {\n if (v === null || v === undefined) return 'null';\n if (typeof v === 'boolean') return 'boolean';\n if (typeof v === 'number') return 'number';\n if (typeof v === 'object') return 'object';\n if (typeof v === 'string') {\n // Try numeric-looking strings (CSV input arrives as strings).\n if (/^-?\\d+(\\.\\d+)?$/.test(v)) return 'number';\n if (v === 'true' || v === 'false') return 'boolean';\n if (v === 'null') return 'null';\n // Loose ISO date detect\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(v) && !isNaN(Date.parse(v))) return 'date';\n return 'string';\n }\n return 'string';\n }\n\n private _typeClass(t: CellType): string {\n switch (t) {\n case 'number': return 'tok-number';\n case 'boolean': return 'tok-bool';\n case 'null': return 'tok-null';\n case 'date': return 'tok-date';\n case 'object': return 'tok-string';\n default: return 'tok-string';\n }\n }\n\n private _formatCell(v: unknown, t: CellType): string {\n if (v === null || v === undefined) return 'null';\n if (t === 'object') {\n try { return JSON.stringify(v); } catch { return String(v); }\n }\n return String(v);\n }\n\n // ─── JSON syntax highlight ──────────────────────────────────────────────\n\n private _syntaxHighlight(json: string): ReturnType<typeof html> {\n const parts: Array<ReturnType<typeof html>> = [];\n const regex = /(\"(\\\\u[\\dA-Fa-f]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = regex.exec(json)) !== null) {\n if (match.index > lastIndex) {\n parts.push(html`${json.substring(lastIndex, match.index)}`);\n }\n const val = match[0];\n let cls = 'json-number';\n if (/^\"/.test(val)) cls = match[3] ? 'json-key' : 'json-string';\n else if (/true|false/.test(val)) cls = 'json-bool';\n else if (/null/.test(val)) cls = 'json-null';\n parts.push(html`<span class=${cls}>${val}</span>`);\n lastIndex = regex.lastIndex;\n }\n if (lastIndex < json.length) parts.push(html`${json.substring(lastIndex)}`);\n return html`${parts}`;\n }\n\n // ─── Renderers ──────────────────────────────────────────────────────────\n\n private _renderJson() {\n try {\n const str = typeof this.data === 'string' ? this.data : JSON.stringify(this.data, null, 2);\n return html`<pre>${this._syntaxHighlight(str)}</pre>`;\n } catch {\n return html`<pre>${String(this.data)}</pre>`;\n }\n }\n\n private _renderTable(rows: Record<string, unknown>[], truncated: boolean) {\n if (rows.length === 0) {\n return html`\n <div class=\"state\">\n <svg class=\"state-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M3 6.5a2.5 2.5 0 0 1 2.5-2.5h13A2.5 2.5 0 0 1 21 6.5v11a2.5 2.5 0 0 1-2.5 2.5h-13A2.5 2.5 0 0 1 3 17.5z\"/>\n <path d=\"M3 10h18M9 4v16\"/>\n </svg>\n <span>No data to preview</span>\n </div>\n `;\n }\n const keys = Object.keys(rows[0] as Record<string, unknown>);\n const types: Record<string, CellType> = {};\n for (const k of keys) types[k] = this._inferColumnType(rows, k);\n\n return html`\n <table aria-label=\"Data table\">\n <thead>\n <tr>\n ${keys.map(k => html`\n <th scope=\"col\">\n <span class=\"col-name\">${k}</span>\n <span class=\"col-type\">${types[k]}</span>\n </th>\n `)}\n </tr>\n </thead>\n <tbody>\n ${rows.map(row => html`\n <tr>\n ${keys.map(k => {\n const t = this._cellType(row[k]) === 'null' ? 'null' : types[k]!;\n const display = this._formatCell(row[k], t);\n return html`<td title=${display}><span class=${this._typeClass(t)}>${display}</span></td>`;\n })}\n </tr>\n `)}\n </tbody>\n </table>\n ${truncated ? html`<div class=\"truncated-msg\">Showing ${rows.length} of ${this._getRowCount()} rows</div>` : nothing}\n `;\n }\n\n private _renderCsv() {\n if (typeof this.data !== 'string') return this._renderJson();\n const lines = this.data.split('\\n').filter(Boolean);\n if (lines.length === 0) return html`<pre>${this.data}</pre>`;\n const headers = lines[0]!.split(',').map(h => h.trim());\n const dataLines = lines.slice(1, this.maxRows + 1);\n const rows = dataLines.map(line => {\n const vals = line.split(',');\n const obj: Record<string, string> = {};\n headers.forEach((h, i) => { obj[h] = (vals[i] || '').trim(); });\n return obj;\n });\n return this._renderTable(rows, lines.length - 1 > this.maxRows);\n }\n\n private _renderContent() {\n if (this.loading) {\n return html`\n <div class=\"state\">\n <cg-spinner size=\"md\"></cg-spinner>\n <span>Parsing data…</span>\n </div>\n `;\n }\n if (this.error) {\n return html`\n <div class=\"state error\" role=\"alert\">\n <svg class=\"state-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <path d=\"M12 8v5M12 16h.01\"/>\n </svg>\n <span>${this.error}</span>\n </div>\n `;\n }\n if (this.format === 'csv') return this._renderCsv();\n if (this.format === 'table' || (Array.isArray(this.data) && typeof this.data[0] === 'object')) {\n const arr = Array.isArray(this.data) ? this.data : [this.data];\n const limited = arr.slice(0, this.maxRows);\n return this._renderTable(limited as Record<string, unknown>[], arr.length > this.maxRows);\n }\n return this._renderJson();\n }\n\n private _onConfirm(): void {\n this.dispatchEvent(new CustomEvent('ai-data-confirm', {\n bubbles: true, composed: true,\n detail: { data: this.data, format: this.format },\n }));\n }\n\n private _onCancel(): void {\n this.dispatchEvent(new CustomEvent('ai-data-cancel', {\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n const rowCount = this._getRowCount();\n let colCount = 0;\n if (Array.isArray(this.data) && this.data.length > 0 && typeof this.data[0] === 'object' && this.data[0] !== null) {\n colCount = Object.keys(this.data[0] as Record<string, unknown>).length;\n } else if (this.format === 'csv' && typeof this.data === 'string') {\n const firstLine = this.data.split('\\n')[0];\n colCount = firstLine ? firstLine.split(',').length : 0;\n }\n\n return html`\n <div class=\"header\">\n <div class=\"header-left\">\n <h3 class=\"title\">${this.title}</h3>\n <div class=\"meta\">\n <span class=\"format-badge\">${this.format}</span>\n ${rowCount > 0 ? html`<span>${rowCount.toLocaleString()} ${rowCount === 1 ? 'row' : 'rows'}</span>` : nothing}\n ${colCount > 0 ? html`<span>· ${colCount} ${colCount === 1 ? 'col' : 'cols'}</span>` : nothing}\n <span>· ${this._getSize()}</span>\n </div>\n </div>\n </div>\n\n <div class=\"preview-area\" role=\"region\" aria-label=\"Data preview\" tabindex=\"0\">\n ${this._renderContent()}\n </div>\n\n <div class=\"actions\">\n <cg-button variant=\"secondary\" size=\"sm\" @click=${this._onCancel}>\n Cancel\n </cg-button>\n <cg-button variant=\"primary\" size=\"sm\" @click=${this._onConfirm} ?disabled=${!!this.error || this.loading}>\n Confirm\n </cg-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-data-preview': AiDataPreview;\n }\n}\n"],"names":["AiDataPreview","LitElement","json","bytes","rows","key","nullCount","sampled","kind","row","v","t","parts","regex","lastIndex","match","html","val","cls","str","truncated","keys","types","k","display","nothing","lines","headers","h","line","vals","obj","i","arr","limited","rowCount","colCount","firstLine","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-data-preview.js","sources":["../../../src/components/ai-data-preview/ai-data-preview.ts"],"sourcesContent":["/**\n * @element ai-data-preview\n * Structured data preview with JSON syntax coloring, CSV/table formatting, and confirm/cancel actions.\n *\n * @example\n * ```html\n * <ai-data-preview\n * .data=${[{name:'Alice', score:92}, {name:'Bob', score:87}]}\n * format=\"table\"\n * title=\"Training Data\"\n * maxRows=\"25\"\n * ></ai-data-preview>\n * ```\n *\n * @fires {CustomEvent<{data: unknown, format: string}>} ai-data-confirm - Confirm button clicked\n * @fires {CustomEvent} ai-data-cancel - Cancel button clicked\n *\n * @cssprop [--cg-color-accent=#dfff61] - Confirm button and JSON key color\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\n@customElement('ai-data-preview')\nexport class AiDataPreview extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n background: var(--cg-color-surface-base-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 padding: var(--cg-spacing-16);\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out) both;\n }\n :host([hidden]) { display: none; }\n\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: var(--cg-spacing-12);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n margin-bottom: var(--cg-spacing-12);\n }\n\n .title {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n margin: 0;\n }\n\n .meta {\n display: flex;\n gap: var(--cg-spacing-12);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n }\n\n .format-badge {\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n background: var(--cg-overlay-accent-subtle);\n border-radius: var(--cg-border-radius-50);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-base-text);\n text-transform: uppercase;\n font-weight: var(--cg-font-weight-semibold);\n }\n\n .preview-area {\n max-height: var(--cg-component-table-virtual-max-height);\n overflow: auto;\n background: var(--cg-color-surface-cards-background);\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-12);\n margin-bottom: var(--cg-spacing-12);\n }\n\n pre {\n margin: 0;\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-xs);\n line-height: var(--cg-line-height-relaxed);\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n .json-key { color: var(--cg-color-code-keyword); }\n .json-string { color: var(--cg-color-code-string); }\n .json-number { color: var(--cg-color-code-number); }\n .json-bool { color: var(--cg-color-status-success-text-default); }\n .json-null { color: var(--cg-color-input-text-placeholder); }\n\n table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--cg-font-size-xs);\n }\n\n th {\n text-align: left;\n padding: var(--cg-spacing-6) var(--cg-spacing-8);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-input-text-placeholder);\n font-weight: var(--cg-font-weight-semibold);\n position: sticky;\n top: 0;\n background: var(--cg-color-surface-cards-background);\n }\n\n td {\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-surface-base-text);\n font-family: var(--cg-font-family-mono);\n }\n\n tr:hover td {\n background: var(--cg-overlay-dark-subtle);\n }\n\n .truncated-msg {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n text-align: center;\n padding: var(--cg-spacing-8);\n font-style: italic;\n }\n\n .actions {\n display: flex;\n gap: var(--cg-spacing-8);\n justify-content: flex-end;\n }\n\n .btn {\n border: none;\n border-radius: var(--cg-border-radius-100);\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n cursor: pointer;\n font-family: inherit;\n }\n\n .btn:focus-visible {\n outline: 2px solid var(--cg-overlay-accent-strong);\n outline-offset: var(--cg-outline-offset-default);\n }\n\n .btn-cancel {\n background: transparent;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-input-text-placeholder);\n }\n\n .btn-cancel:hover {\n background: var(--cg-color-surface-cards-border);\n }\n\n .btn-confirm {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-surface-container-background);\n }\n .btn-confirm:hover {\n filter: brightness(1.1);\n }\n\n .btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n `];\n @property({ attribute: false }) data: unknown = null;\n @property({ type: String }) format: 'json' | 'csv' | 'table' = 'json';\n @property({ type: Number }) maxRows = 50;\n @property({ type: String }) override title = 'Data Preview';\n\n private _getRowCount(): number {\n if (Array.isArray(this.data)) return this.data.length;\n if (typeof this.data === 'string' && this.format === 'csv') {\n return this.data.split('\\n').filter(Boolean).length - 1;\n }\n return 0;\n }\n\n private _getSize(): string {\n const json = typeof this.data === 'string' ? this.data : JSON.stringify(this.data);\n const bytes = new Blob([json]).size;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n private _syntaxHighlight(json: string): ReturnType<typeof html> {\n const parts: Array<ReturnType<typeof html>> = [];\n const regex = /(\"(\\\\u[\\dA-Fa-f]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(json)) !== null) {\n if (match.index > lastIndex) {\n parts.push(html`${json.substring(lastIndex, match.index)}`);\n }\n const val = match[0];\n let cls = 'json-number';\n if (/^\"/.test(val)) {\n cls = match[3] ? 'json-key' : 'json-string';\n } else if (/true|false/.test(val)) {\n cls = 'json-bool';\n } else if (/null/.test(val)) {\n cls = 'json-null';\n }\n parts.push(html`<span class=${cls}>${val}</span>`);\n lastIndex = regex.lastIndex;\n }\n if (lastIndex < json.length) {\n parts.push(html`${json.substring(lastIndex)}`);\n }\n return html`${parts}`;\n }\n\n private _renderJson() {\n try {\n const str = typeof this.data === 'string' ? this.data : JSON.stringify(this.data, null, 2);\n return html`<pre>${this._syntaxHighlight(str)}</pre>`;\n } catch {\n return html`<pre>${String(this.data)}</pre>`;\n }\n }\n\n private _renderTable(rows: Record<string, unknown>[], truncated: boolean) {\n if (rows.length === 0) return html`<div class=\"truncated-msg\">No data</div>`;\n const keys = Object.keys(rows[0] as Record<string, unknown>);\n return html`\n <table role=\"table\" aria-label=\"Data table\">\n <thead><tr>${keys.map(k => html`<th scope=\"col\">${k}</th>`)}</tr></thead>\n <tbody>\n ${rows.map(row => html`\n <tr>${keys.map(k => html`<td>${String(row[k] ?? '')}</td>`)}</tr>\n `)}\n </tbody>\n </table>\n ${truncated ? html`<div class=\"truncated-msg\">Showing ${rows.length} of ${this._getRowCount()} rows</div>` : nothing}\n `;\n }\n\n private _renderCsv() {\n if (typeof this.data !== 'string') return this._renderJson();\n const lines = this.data.split('\\n').filter(Boolean);\n if (lines.length === 0) return html`<pre>${this.data}</pre>`;\n const headers = lines[0]!.split(',').map(h => h.trim());\n const dataLines = lines.slice(1, this.maxRows + 1);\n const rows = dataLines.map(line => {\n const vals = line.split(',');\n const obj: Record<string, string> = {};\n headers.forEach((h, i) => { obj[h] = (vals[i] || '').trim(); });\n return obj;\n });\n return this._renderTable(rows, lines.length - 1 > this.maxRows);\n }\n\n private _renderContent() {\n if (this.format === 'csv') return this._renderCsv();\n if (this.format === 'table' || (Array.isArray(this.data) && typeof this.data[0] === 'object')) {\n const arr = Array.isArray(this.data) ? this.data : [this.data];\n const limited = arr.slice(0, this.maxRows);\n return this._renderTable(limited as Record<string, unknown>[], arr.length > this.maxRows);\n }\n return this._renderJson();\n }\n\n private _onConfirm(): void {\n this.dispatchEvent(new CustomEvent('ai-data-confirm', {\n bubbles: true, composed: true,\n detail: { data: this.data, format: this.format },\n }));\n }\n\n private _onCancel(): void {\n this.dispatchEvent(new CustomEvent('ai-data-cancel', {\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n const rowCount = this._getRowCount();\n\n return html`\n <div class=\"header\">\n <div>\n <h3 class=\"title\">${this.title}</h3>\n <div class=\"meta\">\n <span class=\"format-badge\">${this.format}</span>\n ${rowCount > 0 ? html`<span>${rowCount} rows</span>` : nothing}\n <span>${this._getSize()}</span>\n </div>\n </div>\n </div>\n <div class=\"preview-area\" role=\"region\" aria-label=\"Data preview\" tabindex=\"0\">\n ${this._renderContent()}\n </div>\n <div class=\"actions\">\n <button class=\"btn btn-cancel\" @click=${this._onCancel}\n aria-label=\"Cancel\" tabindex=\"0\">Cancel</button>\n <button class=\"btn btn-confirm\" @click=${this._onConfirm}\n aria-label=\"Confirm data\" tabindex=\"0\">Confirm</button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-data-preview': AiDataPreview;\n }\n}\n"],"names":["AiDataPreview","LitElement","json","bytes","parts","regex","lastIndex","match","html","val","cls","str","rows","truncated","keys","k","row","nothing","lines","headers","h","line","vals","obj","i","arr","limited","rowCount","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","customElement"],"mappings":"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"}
|