@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
@@ -2,7 +2,7 @@ import { css as f, LitElement as _, nothing as g, html as l } from "lit";
2
2
  import { property as n, state as b, query as w, customElement as k } from "lit/decorators.js";
3
3
  import { repeat as y } from "lit/directives/repeat.js";
4
4
  import { styleMap as m } from "lit/directives/style-map.js";
5
- import { h as $, r as x } from "../../chunks/premium.css-9I4kHrsl.js";
5
+ import { h as $, r as x } from "../../chunks/premium.css-DHekUEUt.js";
6
6
  var z = Object.defineProperty, M = Object.getOwnPropertyDescriptor, i = (t, e, r, o) => {
7
7
  for (var s = o > 1 ? void 0 : o ? M(e, r) : e, c = t.length - 1, d; c >= 0; c--)
8
8
  (d = t[c]) && (s = (o ? d(e, r, s) : d(s)) || s);
@@ -262,11 +262,11 @@ a.styles = [$, x, f`
262
262
 
263
263
  /* Row states */
264
264
  tbody tr { transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default); }
265
- tbody tr:hover td { background: var(--cg-color-action-tertiary-background-hover); }
265
+ tbody tr:hover td { background: var(--cg-color-surface-table-row-hover-background); }
266
266
 
267
267
  /* Striped */
268
268
  :host([striped]) tbody tr:nth-child(even) td {
269
- background: var(--cg-color-action-tertiary-background-hover);
269
+ background: var(--cg-color-surface-table-row-alt-background);
270
270
  }
271
271
 
272
272
  /* ── Anomaly cells — left accent border ── */
@@ -283,7 +283,7 @@ a.styles = [$, x, f`
283
283
  .anomaly-icon {
284
284
  display: inline-flex;
285
285
  margin-left: var(--cg-spacing-6);
286
- color: var(--cg-color-input-text-placeholder);
286
+ color: var(--cg-color-surface-table-icon);
287
287
  vertical-align: middle;
288
288
  }
289
289
 
@@ -293,12 +293,12 @@ a.styles = [$, x, f`
293
293
  bottom: calc(100% + var(--cg-spacing-4));
294
294
  left: 50%;
295
295
  transform: translateX(-50%);
296
- background: var(--cg-color-surface-base-background);
297
- border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
298
- color: var(--cg-color-surface-base-text);
296
+ background: var(--cg-color-surface-tooltip-background);
297
+ border: var(--cg-border-width-50) solid var(--cg-color-surface-tooltip-border);
298
+ color: var(--cg-color-surface-tooltip-text);
299
299
  font-size: var(--cg-font-size-xs);
300
300
  padding: var(--cg-spacing-6) var(--cg-spacing-8);
301
- border-radius: var(--cg-border-radius-100);
301
+ border-radius: var(--cg-component-tooltip-radius);
302
302
  white-space: nowrap;
303
303
  pointer-events: none;
304
304
  z-index: 10;
@@ -308,7 +308,7 @@ a.styles = [$, x, f`
308
308
  .empty-state {
309
309
  padding: var(--cg-spacing-24);
310
310
  text-align: center;
311
- color: var(--cg-color-input-text-placeholder);
311
+ color: var(--cg-color-empty-state-text-secondary);
312
312
  font-size: var(--cg-font-size-sm);
313
313
  }
314
314
 
@@ -1 +1 @@
1
- {"version":3,"file":"ai-data-table.js","sources":["../../../src/components/ai-data-table/ai-data-table.ts"],"sourcesContent":["/**\n * @element ai-data-table\n * Data table with sortable columns, AI-detected anomaly highlighting, striped rows, and compact mode.\n * Aligned with cg-table patterns — same header style, spacing, row hover, focus rings.\n * Adds: anomaly left-border + tooltip, sort arrows, cell click events.\n *\n * @example\n * ```html\n * <ai-data-table\n * .columns=${[{key:'name', label:'Name'}, {key:'score', label:'Score', type:'number'}]}\n * .data=${[{name:'Alice', score:92}, {name:'Bob', score:12}]}\n * .anomalies=${[{row:1, col:'score', severity:'high', reason:'Unusually low'}]}\n * sortable striped\n * ></ai-data-table>\n * ```\n *\n * @fires {CustomEvent<{key, direction}>} ai-data-sort - Column sorted\n * @fires {CustomEvent<{row, col, value}>} ai-data-cell-click - Cell clicked\n * @fires {CustomEvent<{row, col, severity, reason}>} ai-data-anomaly-click - Anomaly clicked\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, state, customElement, query } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\ninterface Column {\n key: string;\n label: string;\n type?: string;\n align?: 'left' | 'center' | 'right';\n}\n\ninterface Anomaly {\n row: number;\n col: string;\n severity: 'high' | 'medium' | 'low';\n reason: string;\n}\n\n@customElement('ai-data-table')\nexport class AiDataTable extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host([hidden]) { display: none; }\n\n /* ── Wrapper — matches cg-table ── */\n .wrapper {\n overflow: hidden;\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider);\n border-radius: var(--cg-component-table-radius);\n padding: var(--cg-spacing-4) 0;\n }\n\n .table-scroll { overflow-x: auto; }\n\n /* ── Virtualized scroll container ── */\n :host([virtualize]) .table-scroll {\n overflow-y: auto;\n max-height: var(--cg-component-table-virtual-max-height);\n }\n :host([virtualize]) table { table-layout: fixed; }\n .virtual-spacer td { padding: 0; border: none; background: transparent; }\n\n table {\n width: calc(100% - var(--cg-spacing-8) * 2);\n margin: 0 var(--cg-spacing-8);\n border-collapse: separate;\n border-spacing: 0;\n font-size: var(--cg-font-size-sm);\n }\n :host([compact]) table { font-size: var(--cg-font-size-xs); }\n\n /* ── Header — matches cg-table: transparent, medium weight, muted ── */\n thead { position: sticky; top: 0; z-index: 1; }\n\n th {\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n text-align: left;\n font-weight: var(--cg-font-weight-medium);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n background: transparent;\n border-bottom: none;\n white-space: nowrap;\n user-select: none;\n }\n :host([compact]) th { padding: var(--cg-spacing-6) var(--cg-spacing-12); }\n th[data-align=\"center\"] { text-align: center; }\n th[data-align=\"right\"] { text-align: right; }\n\n th.sortable { cursor: pointer; }\n th.sortable:hover { color: var(--cg-color-action-primary-background-default); }\n th.sortable:focus-visible {\n outline: none;\n box-shadow: inset 0 0 0 var(--cg-border-width-100) var(--cg-color-action-primary-background-default);\n }\n\n .sort-icon {\n display: inline-flex;\n margin-left: var(--cg-spacing-4);\n opacity: 0.4;\n vertical-align: middle;\n }\n th.sorted .sort-icon {\n opacity: 1;\n color: var(--cg-color-action-primary-background-default);\n }\n\n /* ── Body — inset with inner rounding (matches cg-table) ── */\n tbody { background: var(--cg-overlay-dark-subtle); }\n tbody tr:first-child td { border-top: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody tr:last-child td { border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody td:first-child { border-left: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody td:last-child { border-right: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody tr:first-child td:first-child { border-top-left-radius: var(--cg-border-radius-150); }\n tbody tr:first-child td:last-child { border-top-right-radius: var(--cg-border-radius-150); }\n tbody tr:last-child td:first-child { border-bottom-left-radius: var(--cg-border-radius-150); }\n tbody tr:last-child td:last-child { border-bottom-right-radius: var(--cg-border-radius-150); }\n\n td {\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n color: var(--cg-color-surface-table-text);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider);\n vertical-align: middle;\n position: relative;\n }\n :host([compact]) td { padding: var(--cg-spacing-6) var(--cg-spacing-12); }\n td[data-align=\"center\"] { text-align: center; }\n td[data-align=\"right\"] { text-align: right; }\n td.clickable { cursor: pointer; }\n\n /* Row states */\n tbody tr { transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default); }\n tbody tr:hover td { background: var(--cg-color-action-tertiary-background-hover); }\n\n /* Striped */\n :host([striped]) tbody tr:nth-child(even) td {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n\n /* ── Anomaly cells — left accent border ── */\n .anomaly-high {\n border-left: var(--cg-border-width-300) solid var(--cg-color-status-error-text-default);\n }\n .anomaly-medium {\n border-left: var(--cg-border-width-300) solid var(--cg-color-status-warning-text-default);\n }\n .anomaly-low {\n border-left: var(--cg-border-width-300) solid var(--cg-color-status-info-text-default);\n }\n\n .anomaly-icon {\n display: inline-flex;\n margin-left: var(--cg-spacing-6);\n color: var(--cg-color-input-text-placeholder);\n vertical-align: middle;\n }\n\n /* Tooltip */\n .tooltip {\n position: absolute;\n bottom: calc(100% + var(--cg-spacing-4));\n left: 50%;\n transform: translateX(-50%);\n background: var(--cg-color-surface-base-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n color: var(--cg-color-surface-base-text);\n font-size: var(--cg-font-size-xs);\n padding: var(--cg-spacing-6) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-100);\n white-space: nowrap;\n pointer-events: none;\n z-index: 10;\n box-shadow: var(--cg-elevation-2);\n }\n\n .empty-state {\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 /* ── Rounded variants — matches cg-table ── */\n :host([rounded=\"none\"]) .wrapper { border-radius: 0; }\n :host([rounded=\"none\"]) tbody tr:first-child td:first-child,\n :host([rounded=\"none\"]) tbody tr:first-child td:last-child,\n :host([rounded=\"none\"]) tbody tr:last-child td:first-child,\n :host([rounded=\"none\"]) tbody tr:last-child td:last-child { border-radius: 0; }\n\n :host([rounded=\"sm\"]) .wrapper { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"sm\"]) tbody tr:first-child td:first-child { border-top-left-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) tbody tr:first-child td:last-child { border-top-right-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) tbody tr:last-child td:first-child { border-bottom-left-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) tbody tr:last-child td:last-child { border-bottom-right-radius: var(--cg-border-radius-50); }\n\n :host([rounded=\"md\"]) .wrapper { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .wrapper { border-radius: var(--cg-component-table-radius); }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property({ type: Array }) columns: Column[] = [];\n @property({ type: Array }) data: Record<string, unknown>[] = [];\n @property({ type: Array }) anomalies: Anomaly[] = [];\n @property({ type: Boolean, reflect: true }) sortable = false;\n @property({ type: Boolean, reflect: true }) striped = false;\n @property({ type: Boolean, reflect: true }) compact = false;\n\n /** Field name used as stable key for each row (Lit repeat directive). Improves diffing on sort/filter. */\n @property({ type: String }) rowIdKey = 'id';\n /** Opt-in windowed rendering for large datasets (>200 rows recommended). */\n @property({ type: Boolean, reflect: true }) virtualize = false;\n /** Estimated row height in pixels (used to compute the visible window). */\n @property({ type: Number }) rowHeight = 48;\n /** Extra rows rendered above/below the viewport to avoid pop-in during fast scrolls. */\n @property({ type: Number }) overscan = 5;\n\n @state() private _sortKey = '';\n @state() private _sortDir: 'asc' | 'desc' = 'asc';\n @state() private _hoveredAnomaly: string | null = null;\n @state() private _scrollTop = 0;\n @state() private _viewportHeight = 0;\n\n @query('.table-scroll') private _scrollEl?: HTMLElement;\n\n private _resizeObserver: ResizeObserver | null = null;\n private _onScroll = (): void => {\n if (this._scrollEl) this._scrollTop = this._scrollEl.scrollTop;\n };\n\n // Memo cache for sorted data + anomaly lookup\n private _sortedCache: { data: Record<string, unknown>[]; key: string; dir: string; source: Record<string, unknown>[] } | null = null;\n private _anomalyMap: Map<string, Anomaly> | null = null;\n private _anomalyMapSource: Anomaly[] | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._scrollEl?.removeEventListener('scroll', this._onScroll);\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n override firstUpdated(): void {\n this._wireVirtualization();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('virtualize')) this._wireVirtualization();\n }\n\n private _wireVirtualization(): void {\n if (!this.virtualize) {\n this._scrollEl?.removeEventListener('scroll', this._onScroll);\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n return;\n }\n const el = this._scrollEl;\n if (!el) return;\n el.addEventListener('scroll', this._onScroll, { passive: true });\n this._viewportHeight = el.clientHeight;\n this._scrollTop = el.scrollTop;\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver?.disconnect();\n this._resizeObserver = new ResizeObserver(() => {\n if (this._scrollEl) this._viewportHeight = this._scrollEl.clientHeight;\n });\n this._resizeObserver.observe(el);\n }\n }\n\n private _getAnomaly(row: number, col: string): Anomaly | undefined {\n if (this._anomalyMapSource !== this.anomalies || !this._anomalyMap) {\n this._anomalyMap = new Map();\n for (const a of this.anomalies) this._anomalyMap.set(`${a.row}::${a.col}`, a);\n this._anomalyMapSource = this.anomalies;\n }\n return this._anomalyMap.get(`${row}::${col}`);\n }\n\n private _handleSort(key: string) {\n if (!this.sortable) return;\n if (this._sortKey === key) {\n this._sortDir = this._sortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this._sortKey = key;\n this._sortDir = 'asc';\n }\n this.dispatchEvent(new CustomEvent('ai-data-sort', {\n detail: { key: this._sortKey, direction: this._sortDir },\n bubbles: true, composed: true,\n }));\n }\n\n private _handleCellClick(row: number, col: string, value: unknown) {\n this.dispatchEvent(new CustomEvent('ai-data-cell-click', {\n detail: { row, col, value },\n bubbles: true, composed: true,\n }));\n }\n\n private _handleAnomalyClick(anomaly: Anomaly) {\n this.dispatchEvent(new CustomEvent('ai-data-anomaly-click', {\n detail: anomaly,\n bubbles: true, composed: true,\n }));\n }\n\n private get _sortedData(): Record<string, unknown>[] {\n if (!this._sortKey) return this.data;\n const cached = this._sortedCache;\n if (cached && cached.source === this.data && cached.key === this._sortKey && cached.dir === this._sortDir) {\n return cached.data;\n }\n const key = this._sortKey;\n const dirMul = this._sortDir === 'desc' ? -1 : 1;\n const sorted = [...this.data].sort((a, b) => {\n const va = a[key];\n const vb = b[key];\n if (va == null && vb == null) return 0;\n if (va == null) return 1 * dirMul;\n if (vb == null) return -1 * dirMul;\n if (typeof va === 'number' && typeof vb === 'number') return (va - vb) * dirMul;\n return String(va).localeCompare(String(vb)) * dirMul;\n });\n this._sortedCache = { data: sorted, key, dir: this._sortDir, source: this.data };\n return sorted;\n }\n\n private _rowKey(row: Record<string, unknown>, fallbackIdx: number): string | number {\n const id = row[this.rowIdKey];\n if (id != null && (typeof id === 'string' || typeof id === 'number')) return id;\n return fallbackIdx;\n }\n\n private _renderRow(row: Record<string, unknown>, ri: number) {\n return html`\n <tr role=\"row\">\n ${this.columns.map(col => {\n const anomaly = this._getAnomaly(ri, col.key);\n const anomalyClass = anomaly ? `anomaly-${anomaly.severity}` : '';\n const cellId = `${ri}-${col.key}`;\n return html`\n <td\n class=\"clickable ${anomalyClass}\"\n data-align=${col.align || 'left'}\n role=\"cell\"\n aria-label=${anomaly ? `Anomaly: ${anomaly.reason}` : nothing}\n @click=${() => { this._handleCellClick(ri, col.key, row[col.key]); if (anomaly) this._handleAnomalyClick(anomaly); }}\n @mouseenter=${() => { if (anomaly) this._hoveredAnomaly = cellId; }}\n @mouseleave=${() => { this._hoveredAnomaly = null; }}\n >\n ${typeof row[col.key] === 'object' ? JSON.stringify(row[col.key]) : String(row[col.key] ?? '')}\n ${anomaly ? html`<span class=\"anomaly-icon\" title=\"${anomaly.reason}\" aria-hidden=\"true\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M12 9v4m0 4h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"/></svg></span>` : nothing}\n ${anomaly && this._hoveredAnomaly === cellId ? html`<span class=\"tooltip\" role=\"tooltip\">${anomaly.reason}</span>` : nothing}\n </td>\n `;\n })}\n </tr>\n `;\n }\n\n private _renderRows() {\n const rows = this._sortedData;\n\n // Fast path: no virtualization — repeat with stable keys so sort/filter only moves nodes.\n if (!this.virtualize) {\n return repeat(\n rows,\n (row, i) => this._rowKey(row, i),\n (row, i) => this._renderRow(row, i),\n );\n }\n\n // Windowed rendering. Before firstUpdated, _viewportHeight is 0 — render an initial chunk\n // so rows exist to measure against and SSR/initial paint isn't empty.\n const rh = Math.max(1, this.rowHeight);\n const vh = this._viewportHeight > 0 ? this._viewportHeight : rh * 10;\n const start = Math.max(0, Math.floor(this._scrollTop / rh) - this.overscan);\n const end = Math.min(rows.length, Math.ceil((this._scrollTop + vh) / rh) + this.overscan);\n const visible = rows.slice(start, end);\n const topPad = start * rh;\n const bottomPad = Math.max(0, (rows.length - end) * rh);\n const colspan = this.columns.length;\n\n return html`\n ${topPad > 0 ? html`<tr class=\"virtual-spacer\" aria-hidden=\"true\"><td colspan=${colspan} style=${styleMap({ height: `${topPad}px` })}></td></tr>` : nothing}\n ${repeat(\n visible,\n (row, i) => this._rowKey(row, start + i),\n (row, i) => this._renderRow(row, start + i),\n )}\n ${bottomPad > 0 ? html`<tr class=\"virtual-spacer\" aria-hidden=\"true\"><td colspan=${colspan} style=${styleMap({ height: `${bottomPad}px` })}></td></tr>` : nothing}\n `;\n }\n\n override render() {\n if (!this.columns.length) {\n return html`<div class=\"wrapper\"><div class=\"empty-state\">No columns defined</div></div>`;\n }\n\n return html`\n <div class=\"wrapper\">\n <div class=\"table-scroll\">\n <table role=\"table\" aria-label=\"Data table\">\n <thead>\n <tr role=\"row\">\n ${this.columns.map(col => {\n const isSorted = this._sortKey === col.key;\n return html`\n <th\n class=\"${this.sortable ? 'sortable' : ''} ${isSorted ? 'sorted' : ''}\"\n data-align=${col.align || 'left'}\n role=\"columnheader\"\n tabindex=${this.sortable ? '0' : '-1'}\n aria-sort=${isSorted ? (this._sortDir === 'asc' ? 'ascending' : 'descending') : 'none'}\n @click=${() => this._handleSort(col.key)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._handleSort(col.key); } }}\n >\n ${col.label}\n ${this.sortable ? html`\n <span class=\"sort-icon\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n ${isSorted && this._sortDir === 'desc'\n ? html`<path d=\"M12 5v14m-7-7l7 7 7-7\"/>`\n : html`<path d=\"M12 19V5m-7 7l7-7 7 7\"/>`}\n </svg>\n </span>\n ` : nothing}\n </th>\n `;\n })}\n </tr>\n </thead>\n <tbody>\n ${this._renderRows()}\n </tbody>\n </table>\n </div>\n ${!this.data.length ? html`<div class=\"empty-state\">No data available</div>` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-data-table': AiDataTable;\n }\n}\n"],"names":["AiDataTable","LitElement","changed","el","row","col","a","key","value","anomaly","cached","dirMul","sorted","b","va","vb","fallbackIdx","id","ri","html","anomalyClass","cellId","nothing","rows","repeat","i","rh","vh","start","end","visible","topPad","bottomPad","colspan","styleMap","isSorted","e","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"ai-data-table.js","sources":["../../../src/components/ai-data-table/ai-data-table.ts"],"sourcesContent":["/**\n * @element ai-data-table\n * Data table with sortable columns, AI-detected anomaly highlighting, striped rows, and compact mode.\n * Aligned with cg-table patterns — same header style, spacing, row hover, focus rings.\n * Adds: anomaly left-border + tooltip, sort arrows, cell click events.\n *\n * @example\n * ```html\n * <ai-data-table\n * .columns=${[{key:'name', label:'Name'}, {key:'score', label:'Score', type:'number'}]}\n * .data=${[{name:'Alice', score:92}, {name:'Bob', score:12}]}\n * .anomalies=${[{row:1, col:'score', severity:'high', reason:'Unusually low'}]}\n * sortable striped\n * ></ai-data-table>\n * ```\n *\n * @fires {CustomEvent<{key, direction}>} ai-data-sort - Column sorted\n * @fires {CustomEvent<{row, col, value}>} ai-data-cell-click - Cell clicked\n * @fires {CustomEvent<{row, col, severity, reason}>} ai-data-anomaly-click - Anomaly clicked\n */\nimport { LitElement, html, css, nothing } from 'lit';\nimport { property, state, customElement, query } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\ninterface Column {\n key: string;\n label: string;\n type?: string;\n align?: 'left' | 'center' | 'right';\n}\n\ninterface Anomaly {\n row: number;\n col: string;\n severity: 'high' | 'medium' | 'low';\n reason: string;\n}\n\n@customElement('ai-data-table')\nexport class AiDataTable extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host([hidden]) { display: none; }\n\n /* ── Wrapper — matches cg-table ── */\n .wrapper {\n overflow: hidden;\n background: var(--cg-color-surface-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider);\n border-radius: var(--cg-component-table-radius);\n padding: var(--cg-spacing-4) 0;\n }\n\n .table-scroll { overflow-x: auto; }\n\n /* ── Virtualized scroll container ── */\n :host([virtualize]) .table-scroll {\n overflow-y: auto;\n max-height: var(--cg-component-table-virtual-max-height);\n }\n :host([virtualize]) table { table-layout: fixed; }\n .virtual-spacer td { padding: 0; border: none; background: transparent; }\n\n table {\n width: calc(100% - var(--cg-spacing-8) * 2);\n margin: 0 var(--cg-spacing-8);\n border-collapse: separate;\n border-spacing: 0;\n font-size: var(--cg-font-size-sm);\n }\n :host([compact]) table { font-size: var(--cg-font-size-xs); }\n\n /* ── Header — matches cg-table: transparent, medium weight, muted ── */\n thead { position: sticky; top: 0; z-index: 1; }\n\n th {\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n text-align: left;\n font-weight: var(--cg-font-weight-medium);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n background: transparent;\n border-bottom: none;\n white-space: nowrap;\n user-select: none;\n }\n :host([compact]) th { padding: var(--cg-spacing-6) var(--cg-spacing-12); }\n th[data-align=\"center\"] { text-align: center; }\n th[data-align=\"right\"] { text-align: right; }\n\n th.sortable { cursor: pointer; }\n th.sortable:hover { color: var(--cg-color-action-primary-background-default); }\n th.sortable:focus-visible {\n outline: none;\n box-shadow: inset 0 0 0 var(--cg-border-width-100) var(--cg-color-action-primary-background-default);\n }\n\n .sort-icon {\n display: inline-flex;\n margin-left: var(--cg-spacing-4);\n opacity: 0.4;\n vertical-align: middle;\n }\n th.sorted .sort-icon {\n opacity: 1;\n color: var(--cg-color-action-primary-background-default);\n }\n\n /* ── Body — inset with inner rounding (matches cg-table) ── */\n tbody { background: var(--cg-overlay-dark-subtle); }\n tbody tr:first-child td { border-top: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody tr:last-child td { border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody td:first-child { border-left: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody td:last-child { border-right: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider); }\n tbody tr:first-child td:first-child { border-top-left-radius: var(--cg-border-radius-150); }\n tbody tr:first-child td:last-child { border-top-right-radius: var(--cg-border-radius-150); }\n tbody tr:last-child td:first-child { border-bottom-left-radius: var(--cg-border-radius-150); }\n tbody tr:last-child td:last-child { border-bottom-right-radius: var(--cg-border-radius-150); }\n\n td {\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n color: var(--cg-color-surface-table-text);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-table-divider);\n vertical-align: middle;\n position: relative;\n }\n :host([compact]) td { padding: var(--cg-spacing-6) var(--cg-spacing-12); }\n td[data-align=\"center\"] { text-align: center; }\n td[data-align=\"right\"] { text-align: right; }\n td.clickable { cursor: pointer; }\n\n /* Row states */\n tbody tr { transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default); }\n tbody tr:hover td { background: var(--cg-color-surface-table-row-hover-background); }\n\n /* Striped */\n :host([striped]) tbody tr:nth-child(even) td {\n background: var(--cg-color-surface-table-row-alt-background);\n }\n\n /* ── Anomaly cells — left accent border ── */\n .anomaly-high {\n border-left: var(--cg-border-width-300) solid var(--cg-color-status-error-text-default);\n }\n .anomaly-medium {\n border-left: var(--cg-border-width-300) solid var(--cg-color-status-warning-text-default);\n }\n .anomaly-low {\n border-left: var(--cg-border-width-300) solid var(--cg-color-status-info-text-default);\n }\n\n .anomaly-icon {\n display: inline-flex;\n margin-left: var(--cg-spacing-6);\n color: var(--cg-color-surface-table-icon);\n vertical-align: middle;\n }\n\n /* Tooltip */\n .tooltip {\n position: absolute;\n bottom: calc(100% + var(--cg-spacing-4));\n left: 50%;\n transform: translateX(-50%);\n background: var(--cg-color-surface-tooltip-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-tooltip-border);\n color: var(--cg-color-surface-tooltip-text);\n font-size: var(--cg-font-size-xs);\n padding: var(--cg-spacing-6) var(--cg-spacing-8);\n border-radius: var(--cg-component-tooltip-radius);\n white-space: nowrap;\n pointer-events: none;\n z-index: 10;\n box-shadow: var(--cg-elevation-2);\n }\n\n .empty-state {\n padding: var(--cg-spacing-24);\n text-align: center;\n color: var(--cg-color-empty-state-text-secondary);\n font-size: var(--cg-font-size-sm);\n }\n\n /* ── Rounded variants — matches cg-table ── */\n :host([rounded=\"none\"]) .wrapper { border-radius: 0; }\n :host([rounded=\"none\"]) tbody tr:first-child td:first-child,\n :host([rounded=\"none\"]) tbody tr:first-child td:last-child,\n :host([rounded=\"none\"]) tbody tr:last-child td:first-child,\n :host([rounded=\"none\"]) tbody tr:last-child td:last-child { border-radius: 0; }\n\n :host([rounded=\"sm\"]) .wrapper { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"sm\"]) tbody tr:first-child td:first-child { border-top-left-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) tbody tr:first-child td:last-child { border-top-right-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) tbody tr:last-child td:first-child { border-bottom-left-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) tbody tr:last-child td:last-child { border-bottom-right-radius: var(--cg-border-radius-50); }\n\n :host([rounded=\"md\"]) .wrapper { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .wrapper { border-radius: var(--cg-component-table-radius); }\n `];\n\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property({ type: Array }) columns: Column[] = [];\n @property({ type: Array }) data: Record<string, unknown>[] = [];\n @property({ type: Array }) anomalies: Anomaly[] = [];\n @property({ type: Boolean, reflect: true }) sortable = false;\n @property({ type: Boolean, reflect: true }) striped = false;\n @property({ type: Boolean, reflect: true }) compact = false;\n\n /** Field name used as stable key for each row (Lit repeat directive). Improves diffing on sort/filter. */\n @property({ type: String }) rowIdKey = 'id';\n /** Opt-in windowed rendering for large datasets (>200 rows recommended). */\n @property({ type: Boolean, reflect: true }) virtualize = false;\n /** Estimated row height in pixels (used to compute the visible window). */\n @property({ type: Number }) rowHeight = 48;\n /** Extra rows rendered above/below the viewport to avoid pop-in during fast scrolls. */\n @property({ type: Number }) overscan = 5;\n\n @state() private _sortKey = '';\n @state() private _sortDir: 'asc' | 'desc' = 'asc';\n @state() private _hoveredAnomaly: string | null = null;\n @state() private _scrollTop = 0;\n @state() private _viewportHeight = 0;\n\n @query('.table-scroll') private _scrollEl?: HTMLElement;\n\n private _resizeObserver: ResizeObserver | null = null;\n private _onScroll = (): void => {\n if (this._scrollEl) this._scrollTop = this._scrollEl.scrollTop;\n };\n\n // Memo cache for sorted data + anomaly lookup\n private _sortedCache: { data: Record<string, unknown>[]; key: string; dir: string; source: Record<string, unknown>[] } | null = null;\n private _anomalyMap: Map<string, Anomaly> | null = null;\n private _anomalyMapSource: Anomaly[] | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._scrollEl?.removeEventListener('scroll', this._onScroll);\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n override firstUpdated(): void {\n this._wireVirtualization();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('virtualize')) this._wireVirtualization();\n }\n\n private _wireVirtualization(): void {\n if (!this.virtualize) {\n this._scrollEl?.removeEventListener('scroll', this._onScroll);\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n return;\n }\n const el = this._scrollEl;\n if (!el) return;\n el.addEventListener('scroll', this._onScroll, { passive: true });\n this._viewportHeight = el.clientHeight;\n this._scrollTop = el.scrollTop;\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver?.disconnect();\n this._resizeObserver = new ResizeObserver(() => {\n if (this._scrollEl) this._viewportHeight = this._scrollEl.clientHeight;\n });\n this._resizeObserver.observe(el);\n }\n }\n\n private _getAnomaly(row: number, col: string): Anomaly | undefined {\n if (this._anomalyMapSource !== this.anomalies || !this._anomalyMap) {\n this._anomalyMap = new Map();\n for (const a of this.anomalies) this._anomalyMap.set(`${a.row}::${a.col}`, a);\n this._anomalyMapSource = this.anomalies;\n }\n return this._anomalyMap.get(`${row}::${col}`);\n }\n\n private _handleSort(key: string) {\n if (!this.sortable) return;\n if (this._sortKey === key) {\n this._sortDir = this._sortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this._sortKey = key;\n this._sortDir = 'asc';\n }\n this.dispatchEvent(new CustomEvent('ai-data-sort', {\n detail: { key: this._sortKey, direction: this._sortDir },\n bubbles: true, composed: true,\n }));\n }\n\n private _handleCellClick(row: number, col: string, value: unknown) {\n this.dispatchEvent(new CustomEvent('ai-data-cell-click', {\n detail: { row, col, value },\n bubbles: true, composed: true,\n }));\n }\n\n private _handleAnomalyClick(anomaly: Anomaly) {\n this.dispatchEvent(new CustomEvent('ai-data-anomaly-click', {\n detail: anomaly,\n bubbles: true, composed: true,\n }));\n }\n\n private get _sortedData(): Record<string, unknown>[] {\n if (!this._sortKey) return this.data;\n const cached = this._sortedCache;\n if (cached && cached.source === this.data && cached.key === this._sortKey && cached.dir === this._sortDir) {\n return cached.data;\n }\n const key = this._sortKey;\n const dirMul = this._sortDir === 'desc' ? -1 : 1;\n const sorted = [...this.data].sort((a, b) => {\n const va = a[key];\n const vb = b[key];\n if (va == null && vb == null) return 0;\n if (va == null) return 1 * dirMul;\n if (vb == null) return -1 * dirMul;\n if (typeof va === 'number' && typeof vb === 'number') return (va - vb) * dirMul;\n return String(va).localeCompare(String(vb)) * dirMul;\n });\n this._sortedCache = { data: sorted, key, dir: this._sortDir, source: this.data };\n return sorted;\n }\n\n private _rowKey(row: Record<string, unknown>, fallbackIdx: number): string | number {\n const id = row[this.rowIdKey];\n if (id != null && (typeof id === 'string' || typeof id === 'number')) return id;\n return fallbackIdx;\n }\n\n private _renderRow(row: Record<string, unknown>, ri: number) {\n return html`\n <tr role=\"row\">\n ${this.columns.map(col => {\n const anomaly = this._getAnomaly(ri, col.key);\n const anomalyClass = anomaly ? `anomaly-${anomaly.severity}` : '';\n const cellId = `${ri}-${col.key}`;\n return html`\n <td\n class=\"clickable ${anomalyClass}\"\n data-align=${col.align || 'left'}\n role=\"cell\"\n aria-label=${anomaly ? `Anomaly: ${anomaly.reason}` : nothing}\n @click=${() => { this._handleCellClick(ri, col.key, row[col.key]); if (anomaly) this._handleAnomalyClick(anomaly); }}\n @mouseenter=${() => { if (anomaly) this._hoveredAnomaly = cellId; }}\n @mouseleave=${() => { this._hoveredAnomaly = null; }}\n >\n ${typeof row[col.key] === 'object' ? JSON.stringify(row[col.key]) : String(row[col.key] ?? '')}\n ${anomaly ? html`<span class=\"anomaly-icon\" title=\"${anomaly.reason}\" aria-hidden=\"true\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M12 9v4m0 4h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"/></svg></span>` : nothing}\n ${anomaly && this._hoveredAnomaly === cellId ? html`<span class=\"tooltip\" role=\"tooltip\">${anomaly.reason}</span>` : nothing}\n </td>\n `;\n })}\n </tr>\n `;\n }\n\n private _renderRows() {\n const rows = this._sortedData;\n\n // Fast path: no virtualization — repeat with stable keys so sort/filter only moves nodes.\n if (!this.virtualize) {\n return repeat(\n rows,\n (row, i) => this._rowKey(row, i),\n (row, i) => this._renderRow(row, i),\n );\n }\n\n // Windowed rendering. Before firstUpdated, _viewportHeight is 0 — render an initial chunk\n // so rows exist to measure against and SSR/initial paint isn't empty.\n const rh = Math.max(1, this.rowHeight);\n const vh = this._viewportHeight > 0 ? this._viewportHeight : rh * 10;\n const start = Math.max(0, Math.floor(this._scrollTop / rh) - this.overscan);\n const end = Math.min(rows.length, Math.ceil((this._scrollTop + vh) / rh) + this.overscan);\n const visible = rows.slice(start, end);\n const topPad = start * rh;\n const bottomPad = Math.max(0, (rows.length - end) * rh);\n const colspan = this.columns.length;\n\n return html`\n ${topPad > 0 ? html`<tr class=\"virtual-spacer\" aria-hidden=\"true\"><td colspan=${colspan} style=${styleMap({ height: `${topPad}px` })}></td></tr>` : nothing}\n ${repeat(\n visible,\n (row, i) => this._rowKey(row, start + i),\n (row, i) => this._renderRow(row, start + i),\n )}\n ${bottomPad > 0 ? html`<tr class=\"virtual-spacer\" aria-hidden=\"true\"><td colspan=${colspan} style=${styleMap({ height: `${bottomPad}px` })}></td></tr>` : nothing}\n `;\n }\n\n override render() {\n if (!this.columns.length) {\n return html`<div class=\"wrapper\"><div class=\"empty-state\">No columns defined</div></div>`;\n }\n\n return html`\n <div class=\"wrapper\">\n <div class=\"table-scroll\">\n <table role=\"table\" aria-label=\"Data table\">\n <thead>\n <tr role=\"row\">\n ${this.columns.map(col => {\n const isSorted = this._sortKey === col.key;\n return html`\n <th\n class=\"${this.sortable ? 'sortable' : ''} ${isSorted ? 'sorted' : ''}\"\n data-align=${col.align || 'left'}\n role=\"columnheader\"\n tabindex=${this.sortable ? '0' : '-1'}\n aria-sort=${isSorted ? (this._sortDir === 'asc' ? 'ascending' : 'descending') : 'none'}\n @click=${() => this._handleSort(col.key)}\n @keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); this._handleSort(col.key); } }}\n >\n ${col.label}\n ${this.sortable ? html`\n <span class=\"sort-icon\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n ${isSorted && this._sortDir === 'desc'\n ? html`<path d=\"M12 5v14m-7-7l7 7 7-7\"/>`\n : html`<path d=\"M12 19V5m-7 7l7-7 7 7\"/>`}\n </svg>\n </span>\n ` : nothing}\n </th>\n `;\n })}\n </tr>\n </thead>\n <tbody>\n ${this._renderRows()}\n </tbody>\n </table>\n </div>\n ${!this.data.length ? html`<div class=\"empty-state\">No data available</div>` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ai-data-table': AiDataTable;\n }\n}\n"],"names":["AiDataTable","LitElement","changed","el","row","col","a","key","value","anomaly","cached","dirMul","sorted","b","va","vb","fallbackIdx","id","ri","html","anomalyClass","cellId","nothing","rows","repeat","i","rh","vh","start","end","visible","topPad","bottomPad","colspan","styleMap","isSorted","e","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
- export type DebugEntryType = 'request' | 'response' | 'error' | 'info' | 'tool';
3
2
  export interface DebugEntry {
4
- type: DebugEntryType;
3
+ type: 'request' | 'response' | 'error' | 'info';
5
4
  timestamp: string;
6
5
  content: string;
7
6
  duration?: number;
@@ -12,22 +11,11 @@ export declare class AiDebugConsole extends LitElement {
12
11
  entries: DebugEntry[];
13
12
  open: boolean;
14
13
  maxEntries: number;
15
- /** Pulsing live dot in the header — set to true while a stream is active. */
16
- streaming: boolean;
17
14
  private _expanded;
18
- private _filter;
19
- private _query;
20
- private _panelEl?;
21
- private _wasAtBottom;
22
- updated(changed: Map<string, unknown>): void;
23
- /** Window onto entries — capped to maxEntries, then filtered + searched. */
24
15
  private get _visibleEntries();
25
- private _countByType;
26
16
  private _onToggle;
27
17
  private _onClear;
28
18
  private _toggleEntry;
29
- private _onPanelScroll;
30
- private _onSearch;
31
19
  private _formatContent;
32
20
  render(): import('lit').TemplateResult<1>;
33
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-debug-console.d.ts","sourceRoot":"","sources":["../../../src/components/ai-debug-console/ai-debug-console.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,2BAA2B,CAAC;AAEnC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAmTnB;IAE0B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACvD,OAAO,EAAE,UAAU,EAAE,CAAM;IACV,IAAI,UAAS;IACH,UAAU,SAAO;IACvE,6EAA6E;IACjC,SAAS,UAAS;IAErD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,MAAM,CAAM;IAEZ,OAAO,CAAC,QAAQ,CAAC,CAAc;IAEhD,OAAO,CAAC,YAAY,CAAQ;IAEnB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQrD,4EAA4E;IAC5E,OAAO,KAAK,eAAe,GAO1B;IAED,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAQb,MAAM;CA0GhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
1
+ {"version":3,"file":"ai-debug-console.d.ts","sourceRoot":"","sources":["../../../src/components/ai-debug-console/ai-debug-console.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAsMnB;IAC0B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IACvD,OAAO,EAAE,UAAU,EAAE,CAAM;IACzB,IAAI,UAAS;IACd,UAAU,SAAO;IAEpC,OAAO,CAAC,SAAS,CAAqB;IAE/C,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc;IASb,MAAM;CAgDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}