@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.
Files changed (543) hide show
  1. package/dist/chunks/focus-trap-vlQwKK-3.js +82 -0
  2. package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
  3. package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
  4. package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
  5. package/dist/cognivo.min.js +3375 -5270
  6. package/dist/cognivo.min.js.map +1 -1
  7. package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
  8. package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
  9. package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
  10. package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
  11. package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
  12. package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
  13. package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
  14. package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
  15. package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
  16. package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
  17. package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
  18. package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
  19. package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
  20. package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
  21. package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
  22. package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
  23. package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
  24. package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
  25. package/dist/components/ai-annotation/ai-annotation.js +2 -2
  26. package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
  27. package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
  28. package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
  29. package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
  30. package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
  31. package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
  32. package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
  33. package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
  34. package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
  35. package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
  36. package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
  37. package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
  38. package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
  39. package/dist/components/ai-avatar/ai-avatar.js +1 -1
  40. package/dist/components/ai-badge/ai-badge.js +1 -1
  41. package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
  42. package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
  43. package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
  44. package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
  45. package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
  46. package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
  47. package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
  48. package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
  49. package/dist/components/ai-changelog/ai-changelog.js +26 -26
  50. package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
  51. package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
  52. package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
  53. package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
  54. package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
  55. package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
  56. package/dist/components/ai-chat/ai-chat.js +9 -3
  57. package/dist/components/ai-chat/ai-chat.js.map +1 -1
  58. package/dist/components/ai-citation/ai-citation.d.ts +0 -6
  59. package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
  60. package/dist/components/ai-citation/ai-citation.js +64 -90
  61. package/dist/components/ai-citation/ai-citation.js.map +1 -1
  62. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
  63. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
  64. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
  65. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
  66. package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
  67. package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
  68. package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
  69. package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
  70. package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
  71. package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
  72. package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
  73. package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
  74. package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
  75. package/dist/components/ai-context-window/ai-context-window.js +19 -19
  76. package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
  77. package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
  78. package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
  79. package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
  80. package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
  81. package/dist/components/ai-data-card/ai-data-card.js +2 -2
  82. package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
  83. package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
  84. package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
  85. package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
  86. package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
  87. package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
  88. package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
  89. package/dist/components/ai-data-table/ai-data-table.js +9 -9
  90. package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
  91. package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
  92. package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
  93. package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
  94. package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
  95. package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
  96. package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
  97. package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
  98. package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
  99. package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
  100. package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
  101. package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
  102. package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
  103. package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
  104. package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
  105. package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
  106. package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
  107. package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
  108. package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
  109. package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
  110. package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
  111. package/dist/components/ai-feedback/ai-feedback.js +10 -5
  112. package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
  113. package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
  114. package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
  115. package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
  116. package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
  117. package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
  118. package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
  119. package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
  120. package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
  121. package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
  122. package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
  123. package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
  124. package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
  125. package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
  126. package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
  127. package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
  128. package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
  129. package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
  130. package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
  131. package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
  132. package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
  133. package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
  134. package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
  135. package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
  136. package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
  137. package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
  138. package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
  139. package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
  140. package/dist/components/ai-presence/ai-presence.js +25 -25
  141. package/dist/components/ai-presence/ai-presence.js.map +1 -1
  142. package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
  143. package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
  144. package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
  145. package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
  146. package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
  147. package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
  148. package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
  149. package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
  150. package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
  151. package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
  152. package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
  153. package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
  154. package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
  155. package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
  156. package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
  157. package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
  158. package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
  159. package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
  160. package/dist/components/ai-search/ai-search.js +1 -1
  161. package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
  162. package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
  163. package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
  164. package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
  165. package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
  166. package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
  167. package/dist/components/ai-status-page/ai-status-page.js +15 -15
  168. package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
  169. package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
  170. package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
  171. package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
  172. package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
  173. package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
  174. package/dist/components/ai-thinking/ai-thinking.js +1 -1
  175. package/dist/components/ai-timeline/ai-timeline.js +2 -2
  176. package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
  177. package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
  178. package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
  179. package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
  180. package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
  181. package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
  182. package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
  183. package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
  184. package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
  185. package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
  186. package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
  187. package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
  188. package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
  189. package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
  190. package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
  191. package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
  192. package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
  193. package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
  194. package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
  195. package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
  196. package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
  197. package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
  198. package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
  199. package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
  200. package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
  201. package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
  202. package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
  203. package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
  204. package/dist/components/bias-authority/bias-authority.js +1 -1
  205. package/dist/components/bias-commitment/bias-commitment.js +1 -1
  206. package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
  207. package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
  208. package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
  209. package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
  210. package/dist/components/cg-accordion/cg-accordion.js +51 -43
  211. package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
  212. package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
  213. package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
  214. package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
  215. package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
  216. package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
  217. package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
  218. package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
  219. package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
  220. package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
  221. package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
  222. package/dist/components/cg-avatar/cg-avatar.js +24 -24
  223. package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
  224. package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
  225. package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
  226. package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
  227. package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
  228. package/dist/components/cg-badge/cg-badge.js +26 -20
  229. package/dist/components/cg-badge/cg-badge.js.map +1 -1
  230. package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
  231. package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
  232. package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
  233. package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
  234. package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
  235. package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
  236. package/dist/components/cg-button/cg-button.d.ts +5 -71
  237. package/dist/components/cg-button/cg-button.d.ts.map +1 -1
  238. package/dist/components/cg-button/cg-button.js +63 -172
  239. package/dist/components/cg-button/cg-button.js.map +1 -1
  240. package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
  241. package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
  242. package/dist/components/cg-button-group/cg-button-group.js +43 -29
  243. package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
  244. package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
  245. package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
  246. package/dist/components/cg-calendar/cg-calendar.js +28 -12
  247. package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
  248. package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
  249. package/dist/components/cg-callout/cg-callout.js +49 -48
  250. package/dist/components/cg-callout/cg-callout.js.map +1 -1
  251. package/dist/components/cg-card/cg-card.d.ts +9 -22
  252. package/dist/components/cg-card/cg-card.d.ts.map +1 -1
  253. package/dist/components/cg-card/cg-card.js +28 -56
  254. package/dist/components/cg-card/cg-card.js.map +1 -1
  255. package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
  256. package/dist/components/cg-carousel/cg-carousel.js +19 -13
  257. package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
  258. package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
  259. package/dist/components/cg-chart/cg-chart.js +63 -58
  260. package/dist/components/cg-chart/cg-chart.js.map +1 -1
  261. package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
  262. package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
  263. package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
  264. package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
  265. package/dist/components/cg-chip/cg-chip.js +31 -31
  266. package/dist/components/cg-chip/cg-chip.js.map +1 -1
  267. package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
  268. package/dist/components/cg-code-block/cg-code-block.js +36 -34
  269. package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
  270. package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
  271. package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
  272. package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
  273. package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
  274. package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
  275. package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
  276. package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
  277. package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
  278. package/dist/components/cg-combobox/cg-combobox.js +13 -6
  279. package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
  280. package/dist/components/cg-command/cg-command.d.ts.map +1 -1
  281. package/dist/components/cg-command/cg-command.js +52 -45
  282. package/dist/components/cg-command/cg-command.js.map +1 -1
  283. package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
  284. package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
  285. package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
  286. package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
  287. package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
  288. package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
  289. package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
  290. package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
  291. package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
  292. package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
  293. package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
  294. package/dist/components/cg-drawer/cg-drawer.js +3 -3
  295. package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
  296. package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
  297. package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
  298. package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
  299. package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
  300. package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
  301. package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
  302. package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
  303. package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
  304. package/dist/components/cg-file-input/cg-file-input.js +9 -10
  305. package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
  306. package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
  307. package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
  308. package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
  309. package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
  310. package/dist/components/cg-form/cg-form.js +17 -17
  311. package/dist/components/cg-form/cg-form.js.map +1 -1
  312. package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
  313. package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
  314. package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
  315. package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
  316. package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
  317. package/dist/components/cg-icon/cg-icon.js +44 -37
  318. package/dist/components/cg-icon/cg-icon.js.map +1 -1
  319. package/dist/components/cg-image/cg-image.js +2 -2
  320. package/dist/components/cg-image/cg-image.js.map +1 -1
  321. package/dist/components/cg-image-block/cg-image-block.js +3 -3
  322. package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
  323. package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
  324. package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
  325. package/dist/components/cg-input/cg-input.js +3 -3
  326. package/dist/components/cg-input/cg-input.js.map +1 -1
  327. package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
  328. package/dist/components/cg-kbd/cg-kbd.js +26 -24
  329. package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
  330. package/dist/components/cg-label/cg-label.d.ts +4 -1
  331. package/dist/components/cg-label/cg-label.d.ts.map +1 -1
  332. package/dist/components/cg-label/cg-label.js +44 -41
  333. package/dist/components/cg-label/cg-label.js.map +1 -1
  334. package/dist/components/cg-link/cg-link.js +23 -23
  335. package/dist/components/cg-link/cg-link.js.map +1 -1
  336. package/dist/components/cg-list/cg-list.js +5 -5
  337. package/dist/components/cg-list/cg-list.js.map +1 -1
  338. package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
  339. package/dist/components/cg-listbox/cg-listbox.js +46 -40
  340. package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
  341. package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
  342. package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
  343. package/dist/components/cg-markdown/cg-markdown.js +171 -121
  344. package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
  345. package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
  346. package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
  347. package/dist/components/cg-menubar/cg-menubar.js +59 -47
  348. package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
  349. package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
  350. package/dist/components/cg-meter/cg-meter.js +76 -76
  351. package/dist/components/cg-meter/cg-meter.js.map +1 -1
  352. package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
  353. package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
  354. package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
  355. package/dist/components/cg-modal/cg-modal.d.ts +3 -0
  356. package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
  357. package/dist/components/cg-modal/cg-modal.js +82 -83
  358. package/dist/components/cg-modal/cg-modal.js.map +1 -1
  359. package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
  360. package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
  361. package/dist/components/cg-navbar/cg-navbar.js +64 -55
  362. package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
  363. package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
  364. package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
  365. package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
  366. package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
  367. package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
  368. package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
  369. package/dist/components/cg-number-input/cg-number-input.js +90 -77
  370. package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
  371. package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
  372. package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
  373. package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
  374. package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
  375. package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
  376. package/dist/components/cg-pagination/cg-pagination.js +50 -49
  377. package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
  378. package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
  379. package/dist/components/cg-password-input/cg-password-input.js +42 -34
  380. package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
  381. package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
  382. package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
  383. package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
  384. package/dist/components/cg-popover/cg-popover.d.ts +12 -2
  385. package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
  386. package/dist/components/cg-popover/cg-popover.js +90 -63
  387. package/dist/components/cg-popover/cg-popover.js.map +1 -1
  388. package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
  389. package/dist/components/cg-portal/cg-portal.js +42 -41
  390. package/dist/components/cg-portal/cg-portal.js.map +1 -1
  391. package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
  392. package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
  393. package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
  394. package/dist/components/cg-radio/cg-radio.d.ts +10 -0
  395. package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
  396. package/dist/components/cg-radio/cg-radio.js +59 -48
  397. package/dist/components/cg-radio/cg-radio.js.map +1 -1
  398. package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
  399. package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
  400. package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
  401. package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
  402. package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
  403. package/dist/components/cg-rating/cg-rating.js +56 -54
  404. package/dist/components/cg-rating/cg-rating.js.map +1 -1
  405. package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
  406. package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
  407. package/dist/components/cg-resizable/cg-resizable.js +45 -35
  408. package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
  409. package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
  410. package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
  411. package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
  412. package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
  413. package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
  414. package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
  415. package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
  416. package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
  417. package/dist/components/cg-select/cg-select.d.ts +4 -2
  418. package/dist/components/cg-select/cg-select.d.ts.map +1 -1
  419. package/dist/components/cg-select/cg-select.js +96 -58
  420. package/dist/components/cg-select/cg-select.js.map +1 -1
  421. package/dist/components/cg-separator/cg-separator.d.ts +1 -2
  422. package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
  423. package/dist/components/cg-separator/cg-separator.js +5 -8
  424. package/dist/components/cg-separator/cg-separator.js.map +1 -1
  425. package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
  426. package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
  427. package/dist/components/cg-sheet/cg-sheet.js +80 -43
  428. package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
  429. package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
  430. package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
  431. package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
  432. package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
  433. package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
  434. package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
  435. package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
  436. package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
  437. package/dist/components/cg-slider/cg-slider.js +80 -73
  438. package/dist/components/cg-slider/cg-slider.js.map +1 -1
  439. package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
  440. package/dist/components/cg-spinner/cg-spinner.js +10 -19
  441. package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
  442. package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
  443. package/dist/components/cg-split-button/cg-split-button.js +64 -50
  444. package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
  445. package/dist/components/cg-stack/cg-stack.js +1 -1
  446. package/dist/components/cg-steps/cg-steps.js +1 -1
  447. package/dist/components/cg-switch/cg-switch.d.ts +3 -0
  448. package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
  449. package/dist/components/cg-switch/cg-switch.js +39 -47
  450. package/dist/components/cg-switch/cg-switch.js.map +1 -1
  451. package/dist/components/cg-table/cg-table.d.ts +0 -7
  452. package/dist/components/cg-table/cg-table.d.ts.map +1 -1
  453. package/dist/components/cg-table/cg-table.js +50 -47
  454. package/dist/components/cg-table/cg-table.js.map +1 -1
  455. package/dist/components/cg-tabs/cg-tabs.js +1 -1
  456. package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
  457. package/dist/components/cg-text/cg-text.js +1 -1
  458. package/dist/components/cg-textarea/cg-textarea.js +1 -1
  459. package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
  460. package/dist/components/cg-toaster/cg-toaster.js +3 -3
  461. package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
  462. package/dist/components/cg-toggle/cg-toggle.js +1 -1
  463. package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
  464. package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
  465. package/dist/foundation.d.ts +0 -16
  466. package/dist/foundation.d.ts.map +1 -1
  467. package/dist/foundation.js +174 -206
  468. package/dist/foundation.js.map +1 -1
  469. package/dist/index.d.ts +1 -17
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +100 -132
  472. package/dist/index.js.map +1 -1
  473. package/dist/utils/focus-trap.d.ts +19 -2
  474. package/dist/utils/focus-trap.d.ts.map +1 -1
  475. package/package.json +6 -810
  476. package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
  477. package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
  478. package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
  479. package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
  480. package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
  481. package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
  482. package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
  483. package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
  484. package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
  485. package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
  486. package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
  487. package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
  488. package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
  489. package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
  490. package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
  491. package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
  492. package/dist/components/cg-draggable/cg-draggable.js +0 -136
  493. package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
  494. package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
  495. package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
  496. package/dist/components/cg-droppable/cg-droppable.js +0 -114
  497. package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
  498. package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
  499. package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
  500. package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
  501. package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
  502. package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
  503. package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
  504. package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
  505. package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
  506. package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
  507. package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
  508. package/dist/components/cg-kanban/cg-kanban.js +0 -86
  509. package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
  510. package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
  511. package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
  512. package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
  513. package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
  514. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
  515. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
  516. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
  517. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
  518. package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
  519. package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
  520. package/dist/components/cg-search-input/cg-search-input.js +0 -106
  521. package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
  522. package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
  523. package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
  524. package/dist/components/cg-sortable/cg-sortable.js +0 -177
  525. package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
  526. package/dist/components/cg-theme/cg-theme.d.ts +0 -82
  527. package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
  528. package/dist/components/cg-theme/cg-theme.js +0 -91
  529. package/dist/components/cg-theme/cg-theme.js.map +0 -1
  530. package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
  531. package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
  532. package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
  533. package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
  534. package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
  535. package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
  536. package/dist/components/cg-timeline/cg-timeline.js +0 -131
  537. package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
  538. package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
  539. package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
  540. package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
  541. package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
  542. package/dist/utils/drag-manager.d.ts +0 -40
  543. package/dist/utils/drag-manager.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai-data-card.js","sources":["../../../src/components/ai-data-card/ai-data-card.ts"],"sourcesContent":["/**\n * @element ai-data-card\n * Compact key-value data card with typed formatting, header badge, footer actions, and loading skeleton.\n *\n * @example\n * ```html\n * <ai-data-card\n * title=\"Invoice #4821\"\n * icon=\"[receipt icon]\"\n * headerStatus=\"success\" headerStatusLabel=\"Paid\"\n * .fields=${[\n * {label:'Amount', value:'$1,240.00', type:'currency'},\n * {label:'Status', value:'Completed', type:'status', status:'success'}\n * ]}\n * .actions=${[{id:'view', label:'View Details', variant:'primary'}]}\n * ></ai-data-card>\n * ```\n *\n * @fires {CustomEvent<{actionId, actionLabel}>} ai-data-card-action - Footer action clicked\n * @fires {CustomEvent<{label, value, type}>} ai-data-card-row-click - Row clicked\n *\n * @cssprop [--cg-brand-ai-accent=#dfff61] - Primary button, link, and currency text color\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes, shimmerKeyframes } from '../../styles/index.js';\nimport '../cg-button/cg-button.js';\nimport '../cg-badge/cg-badge.js';\n\ninterface DataField {\n label: string;\n value: string | number;\n type?: 'text' | 'currency' | 'date' | 'status' | 'badge' | 'link' | 'number' | 'percent';\n status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';\n url?: string;\n copyable?: boolean;\n}\n\ninterface CardAction {\n id: string;\n label: string;\n variant?: 'primary' | 'secondary' | 'danger';\n icon?: string;\n disabled?: boolean;\n}\n\n@customElement('ai-data-card')\nexport class AiDataCard extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, shimmerKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n .card {\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-card-radius);\n overflow: hidden;\n font-family: var(--cg-font-family-primary);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-20) var(--cg-spacing-20) var(--cg-spacing-16);\n }\n .header-info {\n flex: 1;\n min-width: 0;\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 overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .header-subtitle {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-2);\n }\n\n /* ── Rows (table-style inset) ── */\n .rows {\n margin: 0 var(--cg-spacing-12);\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 overflow: hidden;\n }\n .row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n .row:last-child {\n border-bottom: none;\n }\n .row.clickable {\n cursor: pointer;\n }\n .row.clickable:focus-visible {\n outline: none;\n box-shadow: inset 0 0 0 2px var(--cg-overlay-accent-strong);\n }\n\n .row-label {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n flex-shrink: 0;\n min-width: 100px;\n }\n .row-value {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--cg-spacing-6);\n }\n\n /* ── Value types ── */\n .val-currency {\n color: var(--cg-color-surface-base-text);\n font-weight: var(--cg-font-weight-semibold);\n }\n .val-number {\n color: var(--cg-color-surface-base-text);\n }\n .val-percent {\n font-weight: var(--cg-font-weight-semibold);\n }\n .val-date {\n color: var(--cg-color-surface-base-text);\n }\n .val-link {\n color: var(--cg-color-surface-base-text);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .val-link:hover {\n text-decoration: underline;\n }\n\n\n /* Copy button (positioned inline) */\n .copy-wrap { flex-shrink: 0; }\n\n /* ── Footer ── */\n .footer {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-16) var(--cg-spacing-12);\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host(:hover) .card { transform: none; }\n }\n\n /* ── Compact mode ── */\n :host([compact]) .header { padding: var(--cg-spacing-8) var(--cg-spacing-12); }\n :host([compact]) .header-icon { width: var(--cg-spacing-24); height: var(--cg-spacing-24); font-size: var(--cg-font-size-xs); }\n :host([compact]) .header-title { font-size: var(--cg-font-size-xs); }\n :host([compact]) .rows { margin: 0 var(--cg-spacing-4); }\n :host([compact]) .row { padding: var(--cg-spacing-8) var(--cg-spacing-12); }\n :host([compact]) .row-label { min-width: 80px; }\n :host([compact]) .row-value { font-size: var(--cg-font-size-xs); }\n :host([compact]) .footer { padding: var(--cg-spacing-8) var(--cg-spacing-12); }\n\n /* ── Highlighted / selected ── */\n .card.highlighted {\n border-color: var(--cg-color-surface-base-text);\n }\n\n /* ── Loading skeleton ── */\n .skeleton .skel {\n border-radius: var(--cg-border-radius-100);\n background: linear-gradient(90deg, var(--cg-color-surface-container-background) 25%, var(--cg-color-surface-container-border) 50%, var(--cg-color-surface-container-background) 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s linear infinite;\n }\n .skel-header { display: flex; gap: var(--cg-spacing-8); padding: var(--cg-spacing-12) var(--cg-spacing-16); border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-background); }\n .skel-icon { width: var(--cg-spacing-32); height: var(--cg-spacing-32); border-radius: var(--cg-border-radius-100); }\n .skel-lines { flex: 1; display: flex; flex-direction: column; gap: var(--cg-spacing-6); justify-content: center; }\n .skel-line-lg { height: var(--cg-spacing-12); width: 60%; }\n .skel-line-sm { height: var(--cg-spacing-8); width: 35%; }\n .skel-row { display: flex; justify-content: space-between; padding: var(--cg-spacing-12) var(--cg-spacing-16); border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-background); }\n .skel-row:last-child { border-bottom: none; }\n .skel-label { height: var(--cg-spacing-8); width: 30%; }\n .skel-value { height: var(--cg-spacing-8); width: 40%; }\n\n /* ── Empty state ── */\n .empty {\n padding: var(--cg-spacing-24);\n text-align: center;\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-xs);\n }\n\n `];\n /** Card title */\n @property({ type: String }) override title: string = '';\n\n /** Subtitle text */\n @property({ type: String }) subtitle: string = '';\n\n /** Header icon (emoji or text) */\n @property({ type: String }) icon: string = '';\n\n /** Header status badge */\n @property({ type: String }) headerStatus: '' | 'success' | 'warning' | 'error' | 'info' | 'neutral' = '';\n\n /** Header status label */\n @property({ type: String }) headerStatusLabel: string = '';\n\n /** Data fields (key-value rows) */\n @property({ type: Array }) fields: DataField[] = [];\n\n /** Action buttons in footer */\n @property({ type: Array }) actions: CardAction[] = [];\n\n /** Compact display mode */\n @property({ type: Boolean, reflect: true }) compact: boolean = false;\n\n /** Loading skeleton */\n @property({ type: Boolean }) loading: boolean = false;\n\n /** Highlighted border */\n @property({ type: Boolean }) highlighted: boolean = false;\n\n private _copiedField: string | null = null;\n private _copyTimer?: ReturnType<typeof setTimeout>;\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n if (this._copyTimer) clearTimeout(this._copyTimer);\n }\n\n private _sanitizeUrl(url: string): string {\n const trimmed = url.trim().toLowerCase();\n if (trimmed.startsWith('javascript:') || trimmed.startsWith('data:') || trimmed.startsWith('vbscript:')) return '#';\n return url;\n }\n\n private _handleAction(action: CardAction) {\n if (action.disabled) return;\n this.dispatchEvent(new CustomEvent('ai-data-card-action', {\n bubbles: true, composed: true,\n detail: { actionId: action.id, actionLabel: action.label },\n }));\n }\n\n private _handleRowClick(field: DataField) {\n this.dispatchEvent(new CustomEvent('ai-data-card-row-click', {\n bubbles: true, composed: true,\n detail: { label: field.label, value: field.value, type: field.type },\n }));\n }\n\n private async _handleCopy(field: DataField) {\n const text = String(field.value);\n try {\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n } else {\n const ta = document.createElement('textarea');\n ta.value = text;\n ta.style.position = 'fixed';\n ta.style.opacity = '0';\n document.body.appendChild(ta);\n ta.select();\n document.execCommand('copy');\n document.body.removeChild(ta);\n }\n this._copiedField = field.label;\n this.requestUpdate();\n if (this._copyTimer) clearTimeout(this._copyTimer);\n this._copyTimer = setTimeout(() => { this._copiedField = null; this.requestUpdate(); }, 2000);\n } catch { /* silently fail */ }\n }\n\n private _renderValue(field: DataField) {\n const val = String(field.value);\n const status = field.status || 'neutral';\n\n switch (field.type) {\n case 'currency':\n return html`<span class=\"val-currency\">${val}</span>`;\n case 'number':\n return html`<span class=\"val-number\">${val}</span>`;\n case 'percent': {\n const num = Number(field.value);\n const pColor = isNaN(num) ? 'var(--cg-color-input-text-placeholder)' : num >= 0 ? 'var(--cg-color-status-success-text-default)' : 'var(--cg-color-status-error-text-default)';\n return html`<span class=\"val-percent\" style=\"color: ${pColor};\">${val}</span>`;\n }\n case 'date':\n return html`<span class=\"val-date\">${val}</span>`;\n case 'status':\n return html`<cg-badge variant=\"${status === 'error' ? 'danger' : status}\" label=\"${val}\" size=\"sm\"></cg-badge>`;\n case 'badge':\n return html`<cg-badge variant=\"${status === 'error' ? 'danger' : status}\" label=\"${val}\" size=\"sm\"></cg-badge>`;\n case 'link':\n return html`<a class=\"val-link\" href=\"${this._sanitizeUrl(field.url || '#')}\" target=\"_blank\" rel=\"noopener noreferrer\">${val}</a>`;\n default:\n return html`<span>${val}</span>`;\n }\n }\n\n override render() {\n if (this.loading) {\n return html`\n <div class=\"card skeleton\" role=\"status\" aria-label=\"Loading data\">\n <div class=\"skel-header\">\n <div class=\"skel skel-icon\"></div>\n <div class=\"skel-lines\">\n <div class=\"skel skel-line-lg\"></div>\n <div class=\"skel skel-line-sm\"></div>\n </div>\n </div>\n ${[1, 2, 3, 4].map(() => html`\n <div class=\"skel-row\">\n <div class=\"skel skel-label\"></div>\n <div class=\"skel skel-value\"></div>\n </div>\n `)}\n </div>\n `;\n }\n\n if (this.fields.length === 0 && !this.title) {\n return html`<div class=\"card\"><div class=\"empty\">No data to display</div></div>`;\n }\n\n return html`\n <div class=\"card ${this.highlighted ? 'highlighted' : ''}\"\n role=\"region\" aria-label=\"${this.title || 'Data card'}\">\n\n ${this.title ? html`\n <div class=\"header\">\n <div class=\"header-info\">\n <div class=\"header-title\">${this.title}</div>\n ${this.subtitle ? html`<div class=\"header-subtitle\">${this.subtitle}</div>` : nothing}\n </div>\n ${this.headerStatus && this.headerStatusLabel ? html`\n <cg-badge variant=\"${this.headerStatus === 'error' ? 'danger' : this.headerStatus}\" label=\"${this.headerStatusLabel}\" size=\"sm\"></cg-badge>\n ` : nothing}\n </div>\n ` : nothing}\n\n ${this.fields.length > 0 ? html`\n <div class=\"rows\" role=\"list\">\n ${this.fields.map(field => html`\n <div class=\"row ${field.copyable || field.url ? 'clickable' : ''}\"\n role=\"listitem\"\n tabindex=\"${field.copyable || field.url ? '0' : '-1'}\"\n aria-label=\"${field.label}: ${field.value}\"\n @click=${() => this._handleRowClick(field)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._handleRowClick(field); } }}>\n <span class=\"row-label\">${field.label}</span>\n <span class=\"row-value\">\n ${this._renderValue(field)}\n ${field.copyable ? html`\n <span class=\"copy-wrap\">\n <cg-button variant=\"tertiary\" size=\"sm\"\n status=${this._copiedField === field.label ? 'success' : 'idle'}\n label=\"${this._copiedField === field.label ? 'Copied!' : `Copy ${field.label}`}\"\n @click=${(e: Event) => { e.stopPropagation(); this._handleCopy(field); }}>\n <cg-icon name=${this._copiedField === field.label ? 'check' : 'copy'} size=\"xs\"></cg-icon>\n </cg-button>\n </span>\n ` : nothing}\n </span>\n </div>\n `)}\n </div>\n ` : nothing}\n\n ${this.actions.length > 0 ? html`\n <div class=\"footer\">\n ${this.actions.map(action => html`\n <cg-button\n variant=${action.variant === 'danger' ? 'tertiary' : action.variant === 'primary' ? 'primary' : 'secondary'}\n size=\"sm\"\n full\n type=${action.variant === 'danger' ? 'danger' : 'normal'}\n ?disabled=${action.disabled}\n @cg-click=${() => this._handleAction(action)}>\n ${action.label}\n </cg-button>\n `)}\n </div>\n ` : nothing}\n </div>\n `;\n }\n}\n"],"names":["AiDataCard","LitElement","url","trimmed","action","field","text","ta","val","status","html","num","pColor","nothing","e","hostBlock","reducedMotion","fadeSlideInKeyframes","shimmerKeyframes","css","__decorateClass","property","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"ai-data-card.js","sources":["../../../src/components/ai-data-card/ai-data-card.ts"],"sourcesContent":["/**\n * @element ai-data-card\n * Compact key-value data card with typed formatting, header badge, footer actions, and loading skeleton.\n *\n * @example\n * ```html\n * <ai-data-card\n * title=\"Invoice #4821\"\n * icon=\"[receipt icon]\"\n * headerStatus=\"success\" headerStatusLabel=\"Paid\"\n * .fields=${[\n * {label:'Amount', value:'$1,240.00', type:'currency'},\n * {label:'Status', value:'Completed', type:'status', status:'success'}\n * ]}\n * .actions=${[{id:'view', label:'View Details', variant:'primary'}]}\n * ></ai-data-card>\n * ```\n *\n * @fires {CustomEvent<{actionId, actionLabel}>} ai-data-card-action - Footer action clicked\n * @fires {CustomEvent<{label, value, type}>} ai-data-card-row-click - Row clicked\n *\n * @cssprop [--cg-brand-ai-accent=#dfff61] - Primary button, link, and currency text color\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes, shimmerKeyframes } from '../../styles/index.js';\nimport '../cg-button/cg-button.js';\nimport '../cg-badge/cg-badge.js';\n\ninterface DataField {\n label: string;\n value: string | number;\n type?: 'text' | 'currency' | 'date' | 'status' | 'badge' | 'link' | 'number' | 'percent';\n status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';\n url?: string;\n copyable?: boolean;\n}\n\ninterface CardAction {\n id: string;\n label: string;\n variant?: 'primary' | 'secondary' | 'danger';\n icon?: string;\n disabled?: boolean;\n}\n\n@customElement('ai-data-card')\nexport class AiDataCard extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, shimmerKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n .card {\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-card-radius);\n overflow: hidden;\n font-family: var(--cg-font-family-primary);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-20) var(--cg-spacing-20) var(--cg-spacing-16);\n }\n .header-info {\n flex: 1;\n min-width: 0;\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 overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .header-subtitle {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n margin-top: var(--cg-spacing-2);\n }\n\n /* ── Rows (table-style inset) ── */\n .rows {\n margin: 0 var(--cg-spacing-12);\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 overflow: hidden;\n }\n .row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n .row:last-child {\n border-bottom: none;\n }\n .row.clickable {\n cursor: pointer;\n }\n .row.clickable:focus-visible {\n outline: none;\n box-shadow: inset 0 0 0 2px var(--cg-overlay-accent-strong);\n }\n\n .row-label {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-placeholder);\n flex-shrink: 0;\n min-width: 100px;\n }\n .row-value {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--cg-spacing-6);\n }\n\n /* ── Value types ── */\n .val-currency {\n color: var(--cg-color-surface-base-text);\n font-weight: var(--cg-font-weight-semibold);\n }\n .val-number {\n color: var(--cg-color-surface-base-text);\n }\n .val-percent {\n font-weight: var(--cg-font-weight-semibold);\n }\n .val-date {\n color: var(--cg-color-surface-base-text);\n }\n .val-link {\n color: var(--cg-color-surface-base-text);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .val-link:hover {\n text-decoration: underline;\n }\n\n\n /* Copy button (positioned inline) */\n .copy-wrap { flex-shrink: 0; }\n\n /* ── Footer ── */\n .footer {\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-16) var(--cg-spacing-12);\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host(:hover) .card { transform: none; }\n }\n\n /* ── Compact mode ── */\n :host([compact]) .header { padding: var(--cg-spacing-8) var(--cg-spacing-12); }\n :host([compact]) .header-icon { width: var(--cg-spacing-24); height: var(--cg-spacing-24); font-size: var(--cg-font-size-xs); }\n :host([compact]) .header-title { font-size: var(--cg-font-size-xs); }\n :host([compact]) .rows { margin: 0 var(--cg-spacing-4); }\n :host([compact]) .row { padding: var(--cg-spacing-8) var(--cg-spacing-12); }\n :host([compact]) .row-label { min-width: 80px; }\n :host([compact]) .row-value { font-size: var(--cg-font-size-xs); }\n :host([compact]) .footer { padding: var(--cg-spacing-8) var(--cg-spacing-12); }\n\n /* ── Highlighted / selected ── */\n .card.highlighted {\n border-color: var(--cg-color-surface-base-text);\n }\n\n /* ── Loading skeleton ── */\n .skeleton .skel {\n border-radius: var(--cg-border-radius-100);\n background: linear-gradient(90deg, var(--cg-color-surface-container-background) 25%, var(--cg-color-surface-container-border) 50%, var(--cg-color-surface-container-background) 75%);\n background-size: 200% 100%;\n animation: shimmer 1.5s linear infinite;\n }\n .skel-header { display: flex; gap: var(--cg-spacing-8); padding: var(--cg-spacing-12) var(--cg-spacing-16); border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-background); }\n .skel-icon { width: var(--cg-spacing-32); height: var(--cg-spacing-32); border-radius: var(--cg-border-radius-100); }\n .skel-lines { flex: 1; display: flex; flex-direction: column; gap: var(--cg-spacing-6); justify-content: center; }\n .skel-line-lg { height: var(--cg-spacing-12); width: 60%; }\n .skel-line-sm { height: var(--cg-spacing-8); width: 35%; }\n .skel-row { display: flex; justify-content: space-between; padding: var(--cg-spacing-12) var(--cg-spacing-16); border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-background); }\n .skel-row:last-child { border-bottom: none; }\n .skel-label { height: var(--cg-spacing-8); width: 30%; }\n .skel-value { height: var(--cg-spacing-8); width: 40%; }\n\n /* ── Empty state ── */\n .empty {\n padding: var(--cg-spacing-24);\n text-align: center;\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-sm);\n }\n\n `];\n /** Card title */\n @property({ type: String }) override title: string = '';\n\n /** Subtitle text */\n @property({ type: String }) subtitle: string = '';\n\n /** Header icon (emoji or text) */\n @property({ type: String }) icon: string = '';\n\n /** Header status badge */\n @property({ type: String }) headerStatus: '' | 'success' | 'warning' | 'error' | 'info' | 'neutral' = '';\n\n /** Header status label */\n @property({ type: String }) headerStatusLabel: string = '';\n\n /** Data fields (key-value rows) */\n @property({ type: Array }) fields: DataField[] = [];\n\n /** Action buttons in footer */\n @property({ type: Array }) actions: CardAction[] = [];\n\n /** Compact display mode */\n @property({ type: Boolean, reflect: true }) compact: boolean = false;\n\n /** Loading skeleton */\n @property({ type: Boolean }) loading: boolean = false;\n\n /** Highlighted border */\n @property({ type: Boolean }) highlighted: boolean = false;\n\n private _copiedField: string | null = null;\n private _copyTimer?: ReturnType<typeof setTimeout>;\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n if (this._copyTimer) clearTimeout(this._copyTimer);\n }\n\n private _sanitizeUrl(url: string): string {\n const trimmed = url.trim().toLowerCase();\n if (trimmed.startsWith('javascript:') || trimmed.startsWith('data:') || trimmed.startsWith('vbscript:')) return '#';\n return url;\n }\n\n private _handleAction(action: CardAction) {\n if (action.disabled) return;\n this.dispatchEvent(new CustomEvent('ai-data-card-action', {\n bubbles: true, composed: true,\n detail: { actionId: action.id, actionLabel: action.label },\n }));\n }\n\n private _handleRowClick(field: DataField) {\n this.dispatchEvent(new CustomEvent('ai-data-card-row-click', {\n bubbles: true, composed: true,\n detail: { label: field.label, value: field.value, type: field.type },\n }));\n }\n\n private async _handleCopy(field: DataField) {\n const text = String(field.value);\n try {\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n } else {\n const ta = document.createElement('textarea');\n ta.value = text;\n ta.style.position = 'fixed';\n ta.style.opacity = '0';\n document.body.appendChild(ta);\n ta.select();\n document.execCommand('copy');\n document.body.removeChild(ta);\n }\n this._copiedField = field.label;\n this.requestUpdate();\n if (this._copyTimer) clearTimeout(this._copyTimer);\n this._copyTimer = setTimeout(() => { this._copiedField = null; this.requestUpdate(); }, 2000);\n } catch { /* silently fail */ }\n }\n\n private _renderValue(field: DataField) {\n const val = String(field.value);\n const status = field.status || 'neutral';\n\n switch (field.type) {\n case 'currency':\n return html`<span class=\"val-currency\">${val}</span>`;\n case 'number':\n return html`<span class=\"val-number\">${val}</span>`;\n case 'percent': {\n const num = Number(field.value);\n const pColor = isNaN(num) ? 'var(--cg-color-input-text-placeholder)' : num >= 0 ? 'var(--cg-color-status-success-text-default)' : 'var(--cg-color-status-error-text-default)';\n return html`<span class=\"val-percent\" style=\"color: ${pColor};\">${val}</span>`;\n }\n case 'date':\n return html`<span class=\"val-date\">${val}</span>`;\n case 'status':\n return html`<cg-badge variant=\"${status === 'error' ? 'danger' : status}\" label=\"${val}\" size=\"sm\"></cg-badge>`;\n case 'badge':\n return html`<cg-badge variant=\"${status === 'error' ? 'danger' : status}\" label=\"${val}\" size=\"sm\"></cg-badge>`;\n case 'link':\n return html`<a class=\"val-link\" href=\"${this._sanitizeUrl(field.url || '#')}\" target=\"_blank\" rel=\"noopener noreferrer\">${val}</a>`;\n default:\n return html`<span>${val}</span>`;\n }\n }\n\n override render() {\n if (this.loading) {\n return html`\n <div class=\"card skeleton\" role=\"status\" aria-label=\"Loading data\">\n <div class=\"skel-header\">\n <div class=\"skel skel-icon\"></div>\n <div class=\"skel-lines\">\n <div class=\"skel skel-line-lg\"></div>\n <div class=\"skel skel-line-sm\"></div>\n </div>\n </div>\n ${[1, 2, 3, 4].map(() => html`\n <div class=\"skel-row\">\n <div class=\"skel skel-label\"></div>\n <div class=\"skel skel-value\"></div>\n </div>\n `)}\n </div>\n `;\n }\n\n if (this.fields.length === 0 && !this.title) {\n return html`<div class=\"card\"><div class=\"empty\">No data to display</div></div>`;\n }\n\n return html`\n <div class=\"card ${this.highlighted ? 'highlighted' : ''}\"\n role=\"region\" aria-label=\"${this.title || 'Data card'}\">\n\n ${this.title ? html`\n <div class=\"header\">\n <div class=\"header-info\">\n <div class=\"header-title\">${this.title}</div>\n ${this.subtitle ? html`<div class=\"header-subtitle\">${this.subtitle}</div>` : nothing}\n </div>\n ${this.headerStatus && this.headerStatusLabel ? html`\n <cg-badge variant=\"${this.headerStatus === 'error' ? 'danger' : this.headerStatus}\" label=\"${this.headerStatusLabel}\" size=\"sm\"></cg-badge>\n ` : nothing}\n </div>\n ` : nothing}\n\n ${this.fields.length > 0 ? html`\n <div class=\"rows\" role=\"list\">\n ${this.fields.map(field => html`\n <div class=\"row ${field.copyable || field.url ? 'clickable' : ''}\"\n role=\"listitem\"\n tabindex=\"${field.copyable || field.url ? '0' : '-1'}\"\n aria-label=\"${field.label}: ${field.value}\"\n @click=${() => this._handleRowClick(field)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._handleRowClick(field); } }}>\n <span class=\"row-label\">${field.label}</span>\n <span class=\"row-value\">\n ${this._renderValue(field)}\n ${field.copyable ? html`\n <span class=\"copy-wrap\">\n <cg-button variant=\"tertiary\" size=\"sm\"\n status=${this._copiedField === field.label ? 'success' : 'idle'}\n label=\"${this._copiedField === field.label ? 'Copied!' : `Copy ${field.label}`}\"\n @click=${(e: Event) => { e.stopPropagation(); this._handleCopy(field); }}>\n <cg-icon name=${this._copiedField === field.label ? 'check' : 'copy'} size=\"xs\"></cg-icon>\n </cg-button>\n </span>\n ` : nothing}\n </span>\n </div>\n `)}\n </div>\n ` : nothing}\n\n ${this.actions.length > 0 ? html`\n <div class=\"footer\">\n ${this.actions.map(action => html`\n <cg-button\n variant=${action.variant === 'danger' ? 'tertiary' : action.variant === 'primary' ? 'primary' : 'secondary'}\n size=\"sm\"\n full\n type=${action.variant === 'danger' ? 'danger' : 'normal'}\n ?disabled=${action.disabled}\n @cg-click=${() => this._handleAction(action)}>\n ${action.label}\n </cg-button>\n `)}\n </div>\n ` : nothing}\n </div>\n `;\n }\n}\n"],"names":["AiDataCard","LitElement","url","trimmed","action","field","text","ta","val","status","html","num","pColor","nothing","e","hostBlock","reducedMotion","fadeSlideInKeyframes","shimmerKeyframes","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;;;AA+CO,IAAMA,IAAN,cAAyBC,EAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA,GAsKuB,KAAS,QAAgB,IAGzB,KAAA,WAAmB,IAGnB,KAAA,OAAe,IAGf,KAAA,eAA0E,IAG1E,KAAA,oBAA4B,IAG7B,KAAA,SAAsB,CAAA,GAGtB,KAAA,UAAwB,CAAA,GAGP,KAAA,UAAmB,IAGlC,KAAA,UAAmB,IAGnB,KAAA,cAAuB,IAEpD,KAAQ,eAA8B;AAAA,EAAA;AAAA,EAG7B,uBAAuB;AAC9B,UAAM,qBAAA,GACF,KAAK,cAAY,aAAa,KAAK,UAAU;AAAA,EACnD;AAAA,EAEQ,aAAaC,GAAqB;AACxC,UAAMC,IAAUD,EAAI,KAAA,EAAO,YAAA;AAC3B,WAAIC,EAAQ,WAAW,aAAa,KAAKA,EAAQ,WAAW,OAAO,KAAKA,EAAQ,WAAW,WAAW,IAAU,MACzGD;AAAA,EACT;AAAA,EAEQ,cAAcE,GAAoB;AACxC,IAAIA,EAAO,YACX,KAAK,cAAc,IAAI,YAAY,uBAAuB;AAAA,MACxD,SAAS;AAAA,MAAM,UAAU;AAAA,MACzB,QAAQ,EAAE,UAAUA,EAAO,IAAI,aAAaA,EAAO,MAAA;AAAA,IAAM,CAC1D,CAAC;AAAA,EACJ;AAAA,EAEQ,gBAAgBC,GAAkB;AACxC,SAAK,cAAc,IAAI,YAAY,0BAA0B;AAAA,MAC3D,SAAS;AAAA,MAAM,UAAU;AAAA,MACzB,QAAQ,EAAE,OAAOA,EAAM,OAAO,OAAOA,EAAM,OAAO,MAAMA,EAAM,KAAA;AAAA,IAAK,CACpE,CAAC;AAAA,EACJ;AAAA,EAEA,MAAc,YAAYA,GAAkB;AAC1C,UAAMC,IAAO,OAAOD,EAAM,KAAK;AAC/B,QAAI;AACF,UAAI,UAAU;AACZ,cAAM,UAAU,UAAU,UAAUC,CAAI;AAAA,WACnC;AACL,cAAMC,IAAK,SAAS,cAAc,UAAU;AAC5C,QAAAA,EAAG,QAAQD,GACXC,EAAG,MAAM,WAAW,SACpBA,EAAG,MAAM,UAAU,KACnB,SAAS,KAAK,YAAYA,CAAE,GAC5BA,EAAG,OAAA,GACH,SAAS,YAAY,MAAM,GAC3B,SAAS,KAAK,YAAYA,CAAE;AAAA,MAC9B;AACA,WAAK,eAAeF,EAAM,OAC1B,KAAK,cAAA,GACD,KAAK,cAAY,aAAa,KAAK,UAAU,GACjD,KAAK,aAAa,WAAW,MAAM;AAAE,aAAK,eAAe,MAAM,KAAK,cAAA;AAAA,MAAiB,GAAG,GAAI;AAAA,IAC9F,QAAQ;AAAA,IAAsB;AAAA,EAChC;AAAA,EAEQ,aAAaA,GAAkB;AACrC,UAAMG,IAAM,OAAOH,EAAM,KAAK,GACxBI,IAASJ,EAAM,UAAU;AAE/B,YAAQA,EAAM,MAAA;AAAA,MACZ,KAAK;AACH,eAAOK,+BAAkCF,CAAG;AAAA,MAC9C,KAAK;AACH,eAAOE,6BAAgCF,CAAG;AAAA,MAC5C,KAAK,WAAW;AACd,cAAMG,IAAM,OAAON,EAAM,KAAK,GACxBO,IAAS,MAAMD,CAAG,IAAI,2CAA2CA,KAAO,IAAI,gDAAgD;AAClI,eAAOD,4CAA+CE,CAAM,MAAMJ,CAAG;AAAA,MACvE;AAAA,MACA,KAAK;AACH,eAAOE,2BAA8BF,CAAG;AAAA,MAC1C,KAAK;AACH,eAAOE,uBAA0BD,MAAW,UAAU,WAAWA,CAAM,YAAYD,CAAG;AAAA,MACxF,KAAK;AACH,eAAOE,uBAA0BD,MAAW,UAAU,WAAWA,CAAM,YAAYD,CAAG;AAAA,MACxF,KAAK;AACH,eAAOE,8BAAiC,KAAK,aAAaL,EAAM,OAAO,GAAG,CAAC,+CAA+CG,CAAG;AAAA,MAC/H;AACE,eAAOE,UAAaF,CAAG;AAAA,IAAA;AAAA,EAE7B;AAAA,EAES,SAAS;AAChB,WAAI,KAAK,UACAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASD,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,MAAMA;AAAA;AAAA;AAAA;AAAA;AAAA,WAKxB,CAAC;AAAA;AAAA,UAKJ,KAAK,OAAO,WAAW,KAAK,CAAC,KAAK,QAC7BA,yEAGFA;AAAA,yBACc,KAAK,cAAc,gBAAgB,EAAE;AAAA,oCAC1B,KAAK,SAAS,WAAW;AAAA;AAAA,UAEnD,KAAK,QAAQA;AAAA;AAAA;AAAA,0CAGmB,KAAK,KAAK;AAAA,gBACpC,KAAK,WAAWA,iCAAoC,KAAK,QAAQ,WAAWG,CAAO;AAAA;AAAA,cAErF,KAAK,gBAAgB,KAAK,oBAAoBH;AAAA,mCACzB,KAAK,iBAAiB,UAAU,WAAW,KAAK,YAAY,YAAY,KAAK,iBAAiB;AAAA,gBACjHG,CAAO;AAAA;AAAA,YAEXA,CAAO;AAAA;AAAA,UAET,KAAK,OAAO,SAAS,IAAIH;AAAA;AAAA,cAErB,KAAK,OAAO,IAAI,CAAAL,MAASK;AAAA,gCACPL,EAAM,YAAYA,EAAM,MAAM,cAAc,EAAE;AAAA;AAAA,4BAElDA,EAAM,YAAYA,EAAM,MAAM,MAAM,IAAI;AAAA,8BACtCA,EAAM,KAAK,KAAKA,EAAM,KAAK;AAAA,yBAChC,MAAM,KAAK,gBAAgBA,CAAK,CAAC;AAAA,2BAC/B,CAACS,MAAqB;AAAE,OAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SAAOA,EAAE,eAAA,GAAkB,KAAK,gBAAgBT,CAAK;AAAA,IAAK,CAAC;AAAA,0CACvGA,EAAM,KAAK;AAAA;AAAA,oBAEjC,KAAK,aAAaA,CAAK,CAAC;AAAA,oBACxBA,EAAM,WAAWK;AAAA;AAAA;AAAA,iCAGJ,KAAK,iBAAiBL,EAAM,QAAQ,YAAY,MAAM;AAAA,iCACtD,KAAK,iBAAiBA,EAAM,QAAQ,YAAY,QAAQA,EAAM,KAAK,EAAE;AAAA,iCACrE,CAACS,MAAa;AAAE,MAAAA,EAAE,gBAAA,GAAmB,KAAK,YAAYT,CAAK;AAAA,IAAG,CAAC;AAAA,wCACxD,KAAK,iBAAiBA,EAAM,QAAQ,UAAU,MAAM;AAAA;AAAA;AAAA,sBAGtEQ,CAAO;AAAA;AAAA;AAAA,aAGhB,CAAC;AAAA;AAAA,YAEFA,CAAO;AAAA;AAAA,UAET,KAAK,QAAQ,SAAS,IAAIH;AAAA;AAAA,cAEtB,KAAK,QAAQ,IAAI,CAAAN,MAAUM;AAAA;AAAA,0BAEfN,EAAO,YAAY,WAAW,aAAaA,EAAO,YAAY,YAAY,YAAY,WAAW;AAAA;AAAA;AAAA,uBAGpGA,EAAO,YAAY,WAAW,WAAW,QAAQ;AAAA,4BAC5CA,EAAO,QAAQ;AAAA,4BACf,MAAM,KAAK,cAAcA,CAAM,CAAC;AAAA,kBAC1CA,EAAO,KAAK;AAAA;AAAA,aAEjB,CAAC;AAAA;AAAA,YAEFS,CAAO;AAAA;AAAA;AAAA,EAGjB;AACF;AAxWab,EACK,SAAS,CAACe,GAAWC,GAAeC,GAAsBC,GAAkBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmK3F;AAEoCC,EAAA;AAAA,EAApCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtKfrB,EAsK0B,WAAA,SAAA,CAAA;AAGToB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAzKfrB,EAyKiB,WAAA,YAAA,CAAA;AAGAoB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA5KfrB,EA4KiB,WAAA,QAAA,CAAA;AAGAoB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA/KfrB,EA+KiB,WAAA,gBAAA,CAAA;AAGAoB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAlLfrB,EAkLiB,WAAA,qBAAA,CAAA;AAGDoB,EAAA;AAAA,EAA1BC,EAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GArLdrB,EAqLgB,WAAA,UAAA,CAAA;AAGAoB,EAAA;AAAA,EAA1BC,EAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GAxLdrB,EAwLgB,WAAA,WAAA,CAAA;AAGiBoB,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA3L/BrB,EA2LiC,WAAA,WAAA,CAAA;AAGfoB,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA9LhBrB,EA8LkB,WAAA,WAAA,CAAA;AAGAoB,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAjMhBrB,EAiMkB,WAAA,eAAA,CAAA;AAjMlBA,IAANoB,EAAA;AAAA,EADNE,EAAc,cAAc;AAAA,GAChBtB,CAAA;"}
@@ -1,6 +1,6 @@
1
1
  import { css as y, LitElement as k, html as c, nothing as v } from "lit";
2
2
  import { property as p, customElement as $ } from "lit/decorators.js";
3
- import { h as P, r as _ } from "../../chunks/premium.css-9I4kHrsl.js";
3
+ import { h as P, r as _ } from "../../chunks/premium.css-DHekUEUt.js";
4
4
  var z = Object.defineProperty, S = Object.getOwnPropertyDescriptor, l = (e, a, s, r) => {
5
5
  for (var o = r > 1 ? void 0 : r ? S(a, s) : a, g = e.length - 1, i; g >= 0; g--)
6
6
  (i = e[g]) && (o = (r ? i(a, s, o) : i(o)) || o);
@@ -50,12 +50,12 @@ let n = class extends k {
50
50
  }
51
51
  }
52
52
  for (const t of this.nodes) s.has(t.id) || r.push(t);
53
- const b = c`<svg width="24" height="12" viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="0" y1="6" x2="18" y2="6"/><path d="M15 2l5 4-5 4"/></svg>`, w = c`<svg width="12" height="24" viewBox="0 0 12 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="6" y1="0" x2="6" y2="18"/><path d="M2 15l4 5 4-5"/></svg>`;
53
+ const b = c`<svg width="24" height="12" viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="0" y1="6" x2="18" y2="6"/><path d="M15 2l5 4-5 4"/></svg>`, m = c`<svg width="12" height="24" viewBox="0 0 12 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="6" y1="0" x2="6" y2="18"/><path d="M2 15l4 5 4-5"/></svg>`;
54
54
  return c`
55
55
  <div class="container" role="group" aria-label="Data lineage">
56
56
  <div class="flow ${a ? "vertical" : ""}">
57
57
  ${r.map((t, u) => {
58
- const h = e.has(t.id), d = r[u + 1], m = d && this.edges.some((f) => f.from === t.id && f.to === d.id), x = d && e.has(t.id) && e.has(d.id);
58
+ const h = e.has(t.id), d = r[u + 1], w = d && this.edges.some((f) => f.from === t.id && f.to === d.id), x = d && e.has(t.id) && e.has(d.id);
59
59
  return c`
60
60
  <div class="step">
61
61
  <button class="node ${h ? "on-path" : ""}"
@@ -65,7 +65,7 @@ let n = class extends k {
65
65
  <span class="node-type">${t.type}</span>
66
66
  ${t.status ? c`<span class="status-dot ${t.status}"></span>` : v}
67
67
  </button>
68
- ${m ? c`<span class="arrow ${x ? "on-path" : ""}">${a ? w : b}</span>` : v}
68
+ ${w ? c`<span class="arrow ${x ? "on-path" : ""}">${a ? m : b}</span>` : v}
69
69
  </div>
70
70
  `;
71
71
  })}
@@ -132,7 +132,7 @@ n.styles = [P, _, y`
132
132
  }
133
133
 
134
134
  .node-label {
135
- font-size: var(--cg-font-size-xs);
135
+ font-size: var(--cg-font-size-sm);
136
136
  font-weight: var(--cg-font-weight-semibold);
137
137
  white-space: nowrap;
138
138
  }
@@ -151,7 +151,7 @@ n.styles = [P, _, y`
151
151
  right: var(--cg-spacing-6);
152
152
  }
153
153
  .status-dot.active { background: var(--cg-color-surface-base-text); }
154
- .status-dot.complete { background: var(--cg-color-input-text-placeholder); }
154
+ .status-dot.complete { background: var(--cg-color-ai-complete-text); }
155
155
  .status-dot.error { background: var(--cg-color-status-error-text-default); }
156
156
 
157
157
  /* ── Arrow ── */
@@ -1 +1 @@
1
- {"version":3,"file":"ai-data-lineage.js","sources":["../../../src/components/ai-data-lineage/ai-data-lineage.ts"],"sourcesContent":["/**\n * @element ai-data-lineage\n * Minimal data provenance flow — clean monochrome nodes connected by arrows.\n * Click a node to highlight its upstream path.\n *\n * @example\n * ```html\n * <ai-data-lineage\n * .nodes=${[{id:'1',label:'CSV Upload',type:'source'},{id:'2',label:'Clean',type:'transform'},{id:'3',label:'GPT-4',type:'model'},{id:'4',label:'Summary',type:'output'}]}\n * .edges=${[{from:'1',to:'2'},{from:'2',to:'3'},{from:'3',to:'4'}]}\n * highlightPath=\"4\"\n * ></ai-data-lineage>\n * ```\n *\n * @fires {CustomEvent<{id, label, type}>} ai-lineage-node-click - Node clicked\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\nexport interface LineageNode {\n id: string;\n label: string;\n type: 'source' | 'transform' | 'model' | 'output';\n status?: 'active' | 'complete' | 'error';\n}\n\nexport interface LineageEdge {\n from: string;\n to: string;\n}\n\n@customElement('ai-data-lineage')\nexport class AiDataLineage extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n .container {\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-200);\n padding: var(--cg-spacing-20);\n overflow-x: auto;\n }\n\n .flow {\n display: flex;\n align-items: center;\n min-width: min-content;\n }\n .flow.vertical { flex-direction: column; }\n\n .step {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n }\n .flow.vertical .step { flex-direction: column; }\n\n /* ── Node ── */\n .node {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--cg-spacing-4);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n cursor: pointer;\n font-family: inherit;\n color: var(--cg-color-surface-base-text);\n min-width: var(--cg-spacing-80);\n text-align: center;\n position: relative;\n transition:\n border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .node:hover {\n border-color: var(--cg-color-input-border-hover);\n }\n .node:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 2px var(--cg-color-surface-base-background),\n 0 0 0 4px var(--cg-color-focus-ring);\n }\n .node.on-path {\n border-color: var(--cg-color-surface-base-text);\n background: var(--cg-overlay-dark-subtle);\n }\n\n .node-label {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n white-space: nowrap;\n }\n .node-type {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n }\n\n /* Status dot */\n .status-dot {\n width: var(--cg-spacing-6);\n height: var(--cg-spacing-6);\n border-radius: var(--cg-border-radius-full);\n position: absolute;\n top: var(--cg-spacing-6);\n right: var(--cg-spacing-6);\n }\n .status-dot.active { background: var(--cg-color-surface-base-text); }\n .status-dot.complete { background: var(--cg-color-input-text-placeholder); }\n .status-dot.error { background: var(--cg-color-status-error-text-default); }\n\n /* ── Arrow ── */\n .arrow {\n flex-shrink: 0;\n color: var(--cg-color-surface-cards-border);\n display: flex;\n padding: 0 var(--cg-spacing-2);\n }\n .arrow.on-path { color: var(--cg-color-surface-base-text); }\n .flow.vertical .arrow { padding: var(--cg-spacing-2) 0; }\n\n .empty {\n text-align: center;\n padding: var(--cg-spacing-32);\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-sm);\n }\n\n :host([rounded=\"none\"]) .container { border-radius: 0; }\n :host([rounded=\"sm\"]) .container { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .container { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .container { border-radius: var(--cg-border-radius-200); }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property({ attribute: false }) nodes: LineageNode[] = [];\n @property({ attribute: false }) edges: LineageEdge[] = [];\n @property({ type: String }) highlightPath = '';\n @property({ type: String }) direction: 'horizontal' | 'vertical' = 'horizontal';\n\n private _getPathIds(): Set<string> {\n if (!this.highlightPath) return new Set();\n const ids = new Set<string>();\n const parents = new Map<string, string[]>();\n for (const e of this.edges) {\n if (!parents.has(e.to)) parents.set(e.to, []);\n parents.get(e.to)!.push(e.from);\n }\n const q = [this.highlightPath];\n while (q.length) {\n const id = q.shift()!;\n if (ids.has(id)) continue;\n ids.add(id);\n for (const p of parents.get(id) || []) q.push(p);\n }\n return ids;\n }\n\n private _onNodeClick(node: LineageNode) {\n this.dispatchEvent(new CustomEvent('ai-lineage-node-click', {\n detail: { id: node.id, label: node.label, type: node.type },\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n if (this.nodes.length === 0) {\n return html`<div class=\"container\"><div class=\"empty\">No lineage data</div></div>`;\n }\n\n const pathIds = this._getPathIds();\n const isV = this.direction === 'vertical';\n\n // Topological order\n const done = new Set<string>();\n const ordered: LineageNode[] = [];\n const children = new Map<string, string[]>();\n for (const e of this.edges) {\n if (!children.has(e.from)) children.set(e.from, []);\n children.get(e.from)!.push(e.to);\n }\n const targeted = new Set(this.edges.map(e => e.to));\n const q: (LineageNode | undefined)[] = this.nodes.filter(n => !targeted.has(n.id));\n if (q.length === 0 && this.nodes.length > 0) q.push(this.nodes[0]);\n while (q.length) {\n const n = q.shift();\n if (!n || done.has(n.id)) continue;\n done.add(n.id);\n ordered.push(n);\n for (const cid of children.get(n.id) || []) {\n const c = this.nodes.find(x => x.id === cid);\n if (c && !done.has(c.id)) q.push(c);\n }\n }\n for (const n of this.nodes) if (!done.has(n.id)) ordered.push(n);\n\n const arrowH = html`<svg width=\"24\" height=\"12\" viewBox=\"0 0 24 12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><line x1=\"0\" y1=\"6\" x2=\"18\" y2=\"6\"/><path d=\"M15 2l5 4-5 4\"/></svg>`;\n const arrowV = html`<svg width=\"12\" height=\"24\" viewBox=\"0 0 12 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"18\"/><path d=\"M2 15l4 5 4-5\"/></svg>`;\n\n return html`\n <div class=\"container\" role=\"group\" aria-label=\"Data lineage\">\n <div class=\"flow ${isV ? 'vertical' : ''}\">\n ${ordered.map((node, i) => {\n const onPath = pathIds.has(node.id);\n const next = ordered[i + 1];\n const hasEdge = next && this.edges.some(e => e.from === node.id && e.to === next.id);\n const edgeOnPath = next && pathIds.has(node.id) && pathIds.has(next.id);\n\n return html`\n <div class=\"step\">\n <button class=\"node ${onPath ? 'on-path' : ''}\"\n @click=${() => this._onNodeClick(node)}\n aria-label=\"${node.label} (${node.type})\">\n <span class=\"node-label\">${node.label}</span>\n <span class=\"node-type\">${node.type}</span>\n ${node.status ? html`<span class=\"status-dot ${node.status}\"></span>` : nothing}\n </button>\n ${hasEdge ? html`<span class=\"arrow ${edgeOnPath ? 'on-path' : ''}\">${isV ? arrowV : arrowH}</span>` : nothing}\n </div>\n `;\n })}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-data-lineage': AiDataLineage;\n }\n}\n"],"names":["AiDataLineage","LitElement","ids","parents","e","q","id","p","node","html","pathIds","isV","done","ordered","children","targeted","n","cid","c","x","arrowH","arrowV","i","onPath","next","hasEdge","edgeOnPath","nothing","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"ai-data-lineage.js","sources":["../../../src/components/ai-data-lineage/ai-data-lineage.ts"],"sourcesContent":["/**\n * @element ai-data-lineage\n * Minimal data provenance flow — clean monochrome nodes connected by arrows.\n * Click a node to highlight its upstream path.\n *\n * @example\n * ```html\n * <ai-data-lineage\n * .nodes=${[{id:'1',label:'CSV Upload',type:'source'},{id:'2',label:'Clean',type:'transform'},{id:'3',label:'GPT-4',type:'model'},{id:'4',label:'Summary',type:'output'}]}\n * .edges=${[{from:'1',to:'2'},{from:'2',to:'3'},{from:'3',to:'4'}]}\n * highlightPath=\"4\"\n * ></ai-data-lineage>\n * ```\n *\n * @fires {CustomEvent<{id, label, type}>} ai-lineage-node-click - Node clicked\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, customElement } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\nexport interface LineageNode {\n id: string;\n label: string;\n type: 'source' | 'transform' | 'model' | 'output';\n status?: 'active' | 'complete' | 'error';\n}\n\nexport interface LineageEdge {\n from: string;\n to: string;\n}\n\n@customElement('ai-data-lineage')\nexport class AiDataLineage extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n .container {\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-200);\n padding: var(--cg-spacing-20);\n overflow-x: auto;\n }\n\n .flow {\n display: flex;\n align-items: center;\n min-width: min-content;\n }\n .flow.vertical { flex-direction: column; }\n\n .step {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n }\n .flow.vertical .step { flex-direction: column; }\n\n /* ── Node ── */\n .node {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--cg-spacing-4);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n cursor: pointer;\n font-family: inherit;\n color: var(--cg-color-surface-base-text);\n min-width: var(--cg-spacing-80);\n text-align: center;\n position: relative;\n transition:\n border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .node:hover {\n border-color: var(--cg-color-input-border-hover);\n }\n .node:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 2px var(--cg-color-surface-base-background),\n 0 0 0 4px var(--cg-color-focus-ring);\n }\n .node.on-path {\n border-color: var(--cg-color-surface-base-text);\n background: var(--cg-overlay-dark-subtle);\n }\n\n .node-label {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n white-space: nowrap;\n }\n .node-type {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-input-text-placeholder);\n }\n\n /* Status dot */\n .status-dot {\n width: var(--cg-spacing-6);\n height: var(--cg-spacing-6);\n border-radius: var(--cg-border-radius-full);\n position: absolute;\n top: var(--cg-spacing-6);\n right: var(--cg-spacing-6);\n }\n .status-dot.active { background: var(--cg-color-surface-base-text); }\n .status-dot.complete { background: var(--cg-color-ai-complete-text); }\n .status-dot.error { background: var(--cg-color-status-error-text-default); }\n\n /* ── Arrow ── */\n .arrow {\n flex-shrink: 0;\n color: var(--cg-color-surface-cards-border);\n display: flex;\n padding: 0 var(--cg-spacing-2);\n }\n .arrow.on-path { color: var(--cg-color-surface-base-text); }\n .flow.vertical .arrow { padding: var(--cg-spacing-2) 0; }\n\n .empty {\n text-align: center;\n padding: var(--cg-spacing-32);\n color: var(--cg-color-input-text-placeholder);\n font-size: var(--cg-font-size-sm);\n }\n\n :host([rounded=\"none\"]) .container { border-radius: 0; }\n :host([rounded=\"sm\"]) .container { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .container { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .container { border-radius: var(--cg-border-radius-200); }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property({ attribute: false }) nodes: LineageNode[] = [];\n @property({ attribute: false }) edges: LineageEdge[] = [];\n @property({ type: String }) highlightPath = '';\n @property({ type: String }) direction: 'horizontal' | 'vertical' = 'horizontal';\n\n private _getPathIds(): Set<string> {\n if (!this.highlightPath) return new Set();\n const ids = new Set<string>();\n const parents = new Map<string, string[]>();\n for (const e of this.edges) {\n if (!parents.has(e.to)) parents.set(e.to, []);\n parents.get(e.to)!.push(e.from);\n }\n const q = [this.highlightPath];\n while (q.length) {\n const id = q.shift()!;\n if (ids.has(id)) continue;\n ids.add(id);\n for (const p of parents.get(id) || []) q.push(p);\n }\n return ids;\n }\n\n private _onNodeClick(node: LineageNode) {\n this.dispatchEvent(new CustomEvent('ai-lineage-node-click', {\n detail: { id: node.id, label: node.label, type: node.type },\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n if (this.nodes.length === 0) {\n return html`<div class=\"container\"><div class=\"empty\">No lineage data</div></div>`;\n }\n\n const pathIds = this._getPathIds();\n const isV = this.direction === 'vertical';\n\n // Topological order\n const done = new Set<string>();\n const ordered: LineageNode[] = [];\n const children = new Map<string, string[]>();\n for (const e of this.edges) {\n if (!children.has(e.from)) children.set(e.from, []);\n children.get(e.from)!.push(e.to);\n }\n const targeted = new Set(this.edges.map(e => e.to));\n const q: (LineageNode | undefined)[] = this.nodes.filter(n => !targeted.has(n.id));\n if (q.length === 0 && this.nodes.length > 0) q.push(this.nodes[0]);\n while (q.length) {\n const n = q.shift();\n if (!n || done.has(n.id)) continue;\n done.add(n.id);\n ordered.push(n);\n for (const cid of children.get(n.id) || []) {\n const c = this.nodes.find(x => x.id === cid);\n if (c && !done.has(c.id)) q.push(c);\n }\n }\n for (const n of this.nodes) if (!done.has(n.id)) ordered.push(n);\n\n const arrowH = html`<svg width=\"24\" height=\"12\" viewBox=\"0 0 24 12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><line x1=\"0\" y1=\"6\" x2=\"18\" y2=\"6\"/><path d=\"M15 2l5 4-5 4\"/></svg>`;\n const arrowV = html`<svg width=\"12\" height=\"24\" viewBox=\"0 0 12 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"18\"/><path d=\"M2 15l4 5 4-5\"/></svg>`;\n\n return html`\n <div class=\"container\" role=\"group\" aria-label=\"Data lineage\">\n <div class=\"flow ${isV ? 'vertical' : ''}\">\n ${ordered.map((node, i) => {\n const onPath = pathIds.has(node.id);\n const next = ordered[i + 1];\n const hasEdge = next && this.edges.some(e => e.from === node.id && e.to === next.id);\n const edgeOnPath = next && pathIds.has(node.id) && pathIds.has(next.id);\n\n return html`\n <div class=\"step\">\n <button class=\"node ${onPath ? 'on-path' : ''}\"\n @click=${() => this._onNodeClick(node)}\n aria-label=\"${node.label} (${node.type})\">\n <span class=\"node-label\">${node.label}</span>\n <span class=\"node-type\">${node.type}</span>\n ${node.status ? html`<span class=\"status-dot ${node.status}\"></span>` : nothing}\n </button>\n ${hasEdge ? html`<span class=\"arrow ${edgeOnPath ? 'on-path' : ''}\">${isV ? arrowV : arrowH}</span>` : nothing}\n </div>\n `;\n })}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-data-lineage': AiDataLineage;\n }\n}\n"],"names":["AiDataLineage","LitElement","ids","parents","e","q","id","p","node","html","pathIds","isV","done","ordered","children","targeted","n","cid","c","x","arrowH","arrowV","i","onPath","next","hasEdge","edgeOnPath","nothing","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
@@ -5,15 +5,8 @@ export declare class AiDataPreview extends LitElement {
5
5
  format: 'json' | 'csv' | 'table';
6
6
  maxRows: number;
7
7
  title: string;
8
- loading: boolean;
9
- error: string;
10
8
  private _getRowCount;
11
9
  private _getSize;
12
- /** Detect column type by sampling values across rows. */
13
- private _inferColumnType;
14
- private _cellType;
15
- private _typeClass;
16
- private _formatCell;
17
10
  private _syntaxHighlight;
18
11
  private _renderJson;
19
12
  private _renderTable;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-data-preview.d.ts","sourceRoot":"","sources":["../../../src/components/ai-data-preview/ai-data-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,2BAA2B,CAAC;AACnC,OAAO,6BAA6B,CAAC;AAIrC,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAwKnB;IAE6B,IAAI,EAAE,OAAO,CAAQ;IACzB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAU;IACnB,OAAO,SAAM;IAC3B,KAAK,SAAkB;IAC/B,OAAO,UAAS;IACjB,KAAK,SAAM;IAIvC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;IAYhB,yDAAyD;IACzD,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,SAAS;IAMR,MAAM;CAqChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"ai-data-preview.d.ts","sourceRoot":"","sources":["../../../src/components/ai-data-preview/ai-data-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAiJnB;IAC6B,IAAI,EAAE,OAAO,CAAQ;IACzB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAU;IAC1C,OAAO,SAAM;IACJ,KAAK,SAAkB;IAE5D,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,SAAS;IAMR,MAAM;CAyBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}