@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,341 +0,0 @@
1
- import { css as f, LitElement as m, nothing as h, html as c } from "lit";
2
- import { property as d, state as g, customElement as y } from "lit/decorators.js";
3
- import { h as _, r as w } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var x = Object.defineProperty, k = Object.getOwnPropertyDescriptor, n = (e, r, a, t) => {
5
- for (var o = t > 1 ? void 0 : t ? k(r, a) : r, s = e.length - 1, l; s >= 0; s--)
6
- (l = e[s]) && (o = (t ? l(r, a, o) : l(o)) || o);
7
- return t && o && x(r, a, o), o;
8
- };
9
- let i = class extends m {
10
- constructor() {
11
- super(...arguments), this.anchor = "bottom-right", this.collapsed = !1, this.editableTokens = [
12
- { name: "--cg-color-action-primary-background-default", label: "Primary", type: "color" },
13
- { name: "--cg-color-action-primary-text-default", label: "Primary text", type: "color" },
14
- { name: "--cg-color-action-secondary-background-default", label: "Secondary", type: "color" },
15
- { name: "--cg-color-accent-text", label: "Accent", type: "color" },
16
- { name: "--cg-color-surface-base-background", label: "Surface bg", type: "color" },
17
- { name: "--cg-color-surface-base-text", label: "Surface text", type: "color" },
18
- { name: "--cg-color-surface-cards-background", label: "Card bg", type: "color" },
19
- { name: "--cg-color-surface-cards-border", label: "Border", type: "color" }
20
- ], this.themeFromImage = null, this._values = {}, this._showCopied = !1, this._dragover = !1, this._onImagePicked = (e) => {
21
- if (!this.themeFromImage) return;
22
- const r = new Image(), a = URL.createObjectURL(e);
23
- r.onload = () => {
24
- const t = document.createElement("canvas");
25
- t.width = r.naturalWidth, t.height = r.naturalHeight;
26
- const o = t.getContext("2d");
27
- if (!o) return;
28
- o.drawImage(r, 0, 0);
29
- const s = o.getImageData(0, 0, t.width, t.height), l = this.themeFromImage(s), p = { ...this._values };
30
- for (const [v, b] of Object.entries(l)) {
31
- const u = this._normalizeColor(b);
32
- u && (p[v] = u);
33
- }
34
- this._values = p, this._applyToTheme(), URL.revokeObjectURL(a);
35
- }, r.src = a;
36
- }, this._onImageInputChange = (e) => {
37
- const a = e.target.files?.[0];
38
- a && this._onImagePicked(a);
39
- }, this._onDragEnter = (e) => {
40
- e.preventDefault(), this._dragover = !0;
41
- }, this._onDragLeave = () => {
42
- this._dragover = !1;
43
- }, this._onDrop = (e) => {
44
- e.preventDefault(), this._dragover = !1;
45
- const r = e.dataTransfer?.files?.[0];
46
- r && this._onImagePicked(r);
47
- }, this._onReset = () => {
48
- const e = this._findThemeTarget();
49
- e && (e.tokens = null), this._readInitialValues(), this.dispatchEvent(new CustomEvent("cg-theme-change", {
50
- detail: { tokens: {} },
51
- bubbles: !0,
52
- composed: !0
53
- }));
54
- }, this._onCopy = () => {
55
- const e = JSON.stringify(this._values, null, 2);
56
- navigator.clipboard?.writeText && navigator.clipboard.writeText(e), this._showCopied = !0, setTimeout(() => {
57
- this._showCopied = !1;
58
- }, 1200);
59
- }, this._onToggle = () => {
60
- this.collapsed = !this.collapsed;
61
- };
62
- }
63
- connectedCallback() {
64
- super.connectedCallback(), this._readInitialValues();
65
- }
66
- /**
67
- * Read the current resolved value of each editable token from the page
68
- * so the color inputs start populated. Falls back to "#000000" for
69
- * unresolvable values; the input still works once the user picks.
70
- */
71
- _readInitialValues() {
72
- const r = this._findThemeTarget() ?? this, a = window.getComputedStyle(r), t = {};
73
- for (const o of this.editableTokens) {
74
- const s = a.getPropertyValue(o.name).trim();
75
- t[o.name] = this._normalizeColor(s) ?? "#000000";
76
- }
77
- this._values = t;
78
- }
79
- /**
80
- * Convert any CSS color value into a 6-digit hex form that color inputs
81
- * accept. Returns null if the value can't be parsed.
82
- */
83
- _normalizeColor(e) {
84
- if (!e) return null;
85
- const r = e.trim().toLowerCase();
86
- if (/^#[0-9a-f]{6}$/.test(r)) return r;
87
- if (/^#[0-9a-f]{3}$/.test(r)) {
88
- const [t, o, s] = r.slice(1);
89
- return `#${t}${t}${o}${o}${s}${s}`;
90
- }
91
- const a = r.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);
92
- if (a) {
93
- const t = (o) => parseInt(o, 10).toString(16).padStart(2, "0");
94
- return `#${t(a[1])}${t(a[2])}${t(a[3])}`;
95
- }
96
- return null;
97
- }
98
- /** Walk up from the host to find a sibling/ancestor `<cg-theme>`. */
99
- _findThemeTarget() {
100
- let e = this.parentNode;
101
- for (; e; ) {
102
- if (e instanceof HTMLElement && e.tagName.toLowerCase() === "cg-theme")
103
- return e;
104
- e = e instanceof ShadowRoot ? e.host : e.parentNode;
105
- }
106
- return null;
107
- }
108
- _applyToTheme() {
109
- const e = this._findThemeTarget();
110
- e && (e.tokens = { ...this._values });
111
- }
112
- _onColorChange(e, r) {
113
- this._values = { ...this._values, [e]: r }, this._applyToTheme(), this.dispatchEvent(new CustomEvent("cg-theme-change", {
114
- detail: { tokens: this._values },
115
- bubbles: !0,
116
- composed: !0
117
- }));
118
- }
119
- render() {
120
- return c`
121
- <div class="panel">
122
- <header class=${this.collapsed ? "collapsed" : ""} @click=${this._onToggle}>
123
- <span class="title">Theme</span>
124
- <button class="toggle" type="button" aria-label=${this.collapsed ? "Expand" : "Collapse"}>
125
- ${this.collapsed ? "+" : "–"}
126
- </button>
127
- </header>
128
- ${this.collapsed ? h : c`
129
- <div class="panel-body">
130
- ${this.editableTokens.map((e) => c`
131
- <div class="row">
132
- <label for=${`tok-${e.name}`}>${e.label}</label>
133
- <input
134
- id=${`tok-${e.name}`}
135
- type="color"
136
- .value=${this._values[e.name] ?? "#000000"}
137
- @input=${(r) => this._onColorChange(e.name, r.target.value)}
138
- />
139
- </div>
140
- `)}
141
-
142
- <label
143
- class="image-drop ${this._dragover ? "dragover" : ""} ${this.themeFromImage ? "" : "disabled"}"
144
- @dragenter=${this._onDragEnter}
145
- @dragover=${(e) => e.preventDefault()}
146
- @dragleave=${this._onDragLeave}
147
- @drop=${this._onDrop}
148
- >
149
- ${this.themeFromImage ? c`Drop a logo or <strong>browse</strong> to extract a palette.` : c`Image extraction not configured.`}
150
- <input
151
- type="file"
152
- accept="image/*"
153
- ?disabled=${!this.themeFromImage}
154
- @change=${this._onImageInputChange}
155
- />
156
- </label>
157
-
158
- <div class="footer">
159
- <button type="button" @click=${this._onCopy}>Copy JSON</button>
160
- <button type="button" @click=${this._onReset}>Reset</button>
161
- </div>
162
-
163
- ${this._showCopied ? c`<span class="copied">Copied</span>` : h}
164
- </div>
165
- `}
166
- </div>
167
- `;
168
- }
169
- };
170
- i.styles = [_, w, f`
171
- :host {
172
- position: fixed;
173
- bottom: var(--cg-spacing-16);
174
- right: var(--cg-spacing-16);
175
- z-index: var(--cg-z-index-top, 1000);
176
- font-family: var(--cg-font-family-primary, system-ui, sans-serif);
177
- color: var(--cg-color-surface-base-text);
178
- }
179
-
180
- :host([anchor="bottom-left"]) { right: auto; left: var(--cg-spacing-16); }
181
- :host([anchor="top-right"]) { bottom: auto; top: var(--cg-spacing-16); }
182
- :host([anchor="top-left"]) { right: auto; left: var(--cg-spacing-16); bottom: auto; top: var(--cg-spacing-16); }
183
-
184
- .panel {
185
- width: var(--cg-component-theme-editor-width, 280px);
186
- background: var(--cg-color-surface-container-background);
187
- border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
188
- border-radius: var(--cg-border-radius-150);
189
- box-shadow: var(--cg-shadow-elevation-md, 0 8px 24px rgba(0, 0, 0, 0.18));
190
- overflow: hidden;
191
- transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);
192
- }
193
-
194
- :host([collapsed]) .panel-body { display: none; }
195
-
196
- header {
197
- display: flex;
198
- align-items: center;
199
- gap: var(--cg-spacing-8);
200
- padding: var(--cg-spacing-8) var(--cg-spacing-12);
201
- background: var(--cg-color-action-tertiary-background-hover);
202
- cursor: grab;
203
- user-select: none;
204
- border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
205
- }
206
- header.collapsed { border-bottom: 0; }
207
- .title {
208
- flex: 1 1 auto;
209
- font-size: var(--cg-font-size-xs);
210
- font-weight: var(--cg-font-weight-medium);
211
- letter-spacing: 0.04em;
212
- text-transform: uppercase;
213
- color: var(--cg-color-surface-container-outlined);
214
- }
215
- .toggle {
216
- background: transparent;
217
- border: 0;
218
- color: var(--cg-color-surface-container-outlined);
219
- cursor: pointer;
220
- padding: var(--cg-spacing-2) var(--cg-spacing-4);
221
- font-size: var(--cg-font-size-xs);
222
- border-radius: var(--cg-border-radius-50);
223
- }
224
- .toggle:hover { color: var(--cg-color-surface-base-text); background: var(--cg-color-action-tertiary-background-hover); }
225
-
226
- .panel-body {
227
- padding: var(--cg-spacing-12);
228
- display: flex;
229
- flex-direction: column;
230
- gap: var(--cg-spacing-12);
231
- max-height: 60vh;
232
- overflow-y: auto;
233
- }
234
-
235
- .row {
236
- display: grid;
237
- grid-template-columns: 1fr auto;
238
- align-items: center;
239
- gap: var(--cg-spacing-8);
240
- }
241
- .row label {
242
- font-size: var(--cg-font-size-xs);
243
- color: var(--cg-color-surface-container-outlined);
244
- min-width: 0;
245
- overflow: hidden;
246
- text-overflow: ellipsis;
247
- white-space: nowrap;
248
- }
249
- .row input[type="color"] {
250
- width: var(--cg-spacing-32);
251
- height: var(--cg-spacing-24);
252
- padding: 0;
253
- border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
254
- border-radius: var(--cg-border-radius-50);
255
- background: transparent;
256
- cursor: pointer;
257
- }
258
-
259
- .image-drop {
260
- display: flex;
261
- flex-direction: column;
262
- align-items: center;
263
- justify-content: center;
264
- padding: var(--cg-spacing-16);
265
- border: var(--cg-border-width-50) dashed var(--cg-color-surface-cards-border);
266
- border-radius: var(--cg-border-radius-100);
267
- font-size: var(--cg-font-size-xs);
268
- color: var(--cg-color-surface-container-outlined);
269
- cursor: pointer;
270
- text-align: center;
271
- transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
272
- }
273
- .image-drop:hover, .image-drop.dragover {
274
- border-color: var(--cg-color-action-primary-border-default);
275
- background: var(--cg-color-action-tertiary-background-hover);
276
- }
277
- .image-drop input { display: none; }
278
- .image-drop.disabled {
279
- opacity: 0.5;
280
- cursor: not-allowed;
281
- }
282
-
283
- .footer {
284
- display: flex;
285
- gap: var(--cg-spacing-8);
286
- padding-top: var(--cg-spacing-8);
287
- border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
288
- }
289
- .footer button {
290
- flex: 1 1 0;
291
- padding: var(--cg-spacing-6) var(--cg-spacing-8);
292
- background: transparent;
293
- border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
294
- border-radius: var(--cg-border-radius-50);
295
- font: inherit;
296
- font-size: var(--cg-font-size-xs);
297
- color: var(--cg-color-surface-base-text);
298
- cursor: pointer;
299
- }
300
- .footer button:hover { background: var(--cg-color-action-tertiary-background-hover); }
301
-
302
- .copied {
303
- position: absolute;
304
- bottom: calc(100% + var(--cg-spacing-4));
305
- right: 0;
306
- padding: var(--cg-spacing-4) var(--cg-spacing-8);
307
- background: var(--cg-color-action-primary-background-default);
308
- color: var(--cg-color-action-primary-text-default);
309
- border-radius: var(--cg-border-radius-50);
310
- font-size: var(--cg-font-size-xs);
311
- pointer-events: none;
312
- }
313
- `];
314
- n([
315
- d({ reflect: !0 })
316
- ], i.prototype, "anchor", 2);
317
- n([
318
- d({ type: Boolean, reflect: !0 })
319
- ], i.prototype, "collapsed", 2);
320
- n([
321
- d({ attribute: !1 })
322
- ], i.prototype, "editableTokens", 2);
323
- n([
324
- d({ attribute: !1 })
325
- ], i.prototype, "themeFromImage", 2);
326
- n([
327
- g()
328
- ], i.prototype, "_values", 2);
329
- n([
330
- g()
331
- ], i.prototype, "_showCopied", 2);
332
- n([
333
- g()
334
- ], i.prototype, "_dragover", 2);
335
- i = n([
336
- y("cg-theme-editor")
337
- ], i);
338
- export {
339
- i as CgThemeEditor
340
- };
341
- //# sourceMappingURL=cg-theme-editor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cg-theme-editor.js","sources":["../../../src/components/cg-theme-editor/cg-theme-editor.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-theme-editor\n * Live, in-app token editor that drives the closest ancestor\n * `<cg-theme>` element. Drop into your dev/staging build to retune tier-2\n * tokens without rebuilding — color pickers, sliders, and an image-drop\n * zone that runs `themeFromImage()` to extract a palette from a logo.\n *\n * The editor walks up from the host to find a `<cg-theme>` ancestor and\n * mutates its `tokens` prop on every change. There is no global side\n * effect — clearing the editor (or removing it) leaves the theme as it\n * was on the cg-theme element.\n *\n * Pair with the `themeFromImage()` API exported from\n * `@cognivo/theme-generator` for image-driven palette extraction. The\n * editor accepts a `themeFromImage` callback prop; consumers wire it\n * once at mount time so this package stays free of a workspace-wide\n * dependency on theme-generator.\n *\n * @example\n * ```html\n * <cg-theme>\n * <App />\n * <cg-theme-editor></cg-theme-editor>\n * </cg-theme>\n * ```\n *\n * @example With image extraction wired up\n * ```ts\n * import { themeFromImage, paletteToCssVars } from '@cognivo/theme-generator';\n * editor.themeFromImage = (data) => paletteToCssVars(themeFromImage(data));\n * ```\n *\n * @fires {CustomEvent<{tokens: Record<string,string>}>} cg-theme-change - On every token change.\n *\n * @cssprop --cg-component-theme-editor-width - Panel width (default 280px)\n */\n@customElement('cg-theme-editor')\nexport class CgThemeEditor extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n position: fixed;\n bottom: var(--cg-spacing-16);\n right: var(--cg-spacing-16);\n z-index: var(--cg-z-index-top, 1000);\n font-family: var(--cg-font-family-primary, system-ui, sans-serif);\n color: var(--cg-color-surface-base-text);\n }\n\n :host([anchor=\"bottom-left\"]) { right: auto; left: var(--cg-spacing-16); }\n :host([anchor=\"top-right\"]) { bottom: auto; top: var(--cg-spacing-16); }\n :host([anchor=\"top-left\"]) { right: auto; left: var(--cg-spacing-16); bottom: auto; top: var(--cg-spacing-16); }\n\n .panel {\n width: var(--cg-component-theme-editor-width, 280px);\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-150);\n box-shadow: var(--cg-shadow-elevation-md, 0 8px 24px rgba(0, 0, 0, 0.18));\n overflow: hidden;\n transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n }\n\n :host([collapsed]) .panel-body { display: none; }\n\n header {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n background: var(--cg-color-action-tertiary-background-hover);\n cursor: grab;\n user-select: none;\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n header.collapsed { border-bottom: 0; }\n .title {\n flex: 1 1 auto;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--cg-color-surface-container-outlined);\n }\n .toggle {\n background: transparent;\n border: 0;\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n padding: var(--cg-spacing-2) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n border-radius: var(--cg-border-radius-50);\n }\n .toggle:hover { color: var(--cg-color-surface-base-text); background: var(--cg-color-action-tertiary-background-hover); }\n\n .panel-body {\n padding: var(--cg-spacing-12);\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-12);\n max-height: 60vh;\n overflow-y: auto;\n }\n\n .row {\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n gap: var(--cg-spacing-8);\n }\n .row label {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .row input[type=\"color\"] {\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-24);\n padding: 0;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n cursor: pointer;\n }\n\n .image-drop {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--cg-spacing-16);\n border: var(--cg-border-width-50) dashed var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-100);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n text-align: center;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .image-drop:hover, .image-drop.dragover {\n border-color: var(--cg-color-action-primary-border-default);\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .image-drop input { display: none; }\n .image-drop.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .footer {\n display: flex;\n gap: var(--cg-spacing-8);\n padding-top: var(--cg-spacing-8);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n }\n .footer button {\n flex: 1 1 0;\n padding: var(--cg-spacing-6) var(--cg-spacing-8);\n background: transparent;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-50);\n font: inherit;\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n }\n .footer button:hover { background: var(--cg-color-action-tertiary-background-hover); }\n\n .copied {\n position: absolute;\n bottom: calc(100% + var(--cg-spacing-4));\n right: 0;\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: var(--cg-border-radius-50);\n font-size: var(--cg-font-size-xs);\n pointer-events: none;\n }\n `];\n\n /** Where the panel docks. */\n @property({ reflect: true }) anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right';\n\n /** Start collapsed. */\n @property({ type: Boolean, reflect: true }) collapsed = false;\n\n /**\n * The set of tokens the editor exposes. Each entry: { name, label, type }.\n * Type \"color\" renders an `<input type=\"color\">`. Default is the small\n * brand-defining set that maps cleanly to most designs.\n */\n @property({ attribute: false }) editableTokens: Array<{ name: string; label: string; type: 'color' }> = [\n { name: '--cg-color-action-primary-background-default', label: 'Primary', type: 'color' },\n { name: '--cg-color-action-primary-text-default', label: 'Primary text', type: 'color' },\n { name: '--cg-color-action-secondary-background-default', label: 'Secondary', type: 'color' },\n { name: '--cg-color-accent-text', label: 'Accent', type: 'color' },\n { name: '--cg-color-surface-base-background', label: 'Surface bg', type: 'color' },\n { name: '--cg-color-surface-base-text', label: 'Surface text', type: 'color' },\n { name: '--cg-color-surface-cards-background', label: 'Card bg', type: 'color' },\n { name: '--cg-color-surface-cards-border', label: 'Border', type: 'color' },\n ];\n\n /**\n * Optional callback that converts an RGBAImageData into a token override.\n * Wire `themeFromImage` + `paletteToCssVars` here. When unset, the\n * image-drop zone is disabled.\n */\n @property({ attribute: false })\n themeFromImage:\n | ((image: { data: Uint8ClampedArray | Uint8Array | number[]; width: number; height: number }) => Record<string, string>)\n | null = null;\n\n @state() private _values: Record<string, string> = {};\n @state() private _showCopied = false;\n @state() private _dragover = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._readInitialValues();\n }\n\n /**\n * Read the current resolved value of each editable token from the page\n * so the color inputs start populated. Falls back to \"#000000\" for\n * unresolvable values; the input still works once the user picks.\n */\n private _readInitialValues(): void {\n const target = this._findThemeTarget();\n const probe = target ?? this;\n const cs = window.getComputedStyle(probe);\n const next: Record<string, string> = {};\n for (const t of this.editableTokens) {\n const v = cs.getPropertyValue(t.name).trim();\n next[t.name] = this._normalizeColor(v) ?? '#000000';\n }\n this._values = next;\n }\n\n /**\n * Convert any CSS color value into a 6-digit hex form that color inputs\n * accept. Returns null if the value can't be parsed.\n */\n private _normalizeColor(value: string): string | null {\n if (!value) return null;\n const v = value.trim().toLowerCase();\n if (/^#[0-9a-f]{6}$/.test(v)) return v;\n if (/^#[0-9a-f]{3}$/.test(v)) {\n const [r, g, b] = v.slice(1);\n return `#${r}${r}${g}${g}${b}${b}`;\n }\n const rgb = v.match(/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n if (rgb) {\n const to2 = (n: string) => parseInt(n, 10).toString(16).padStart(2, '0');\n return `#${to2(rgb[1]!)}${to2(rgb[2]!)}${to2(rgb[3]!)}`;\n }\n return null;\n }\n\n /** Walk up from the host to find a sibling/ancestor `<cg-theme>`. */\n private _findThemeTarget(): HTMLElement | null {\n let cursor: Node | null = this.parentNode;\n while (cursor) {\n if (cursor instanceof HTMLElement && cursor.tagName.toLowerCase() === 'cg-theme') {\n return cursor;\n }\n cursor = cursor instanceof ShadowRoot ? cursor.host : (cursor as Node).parentNode;\n }\n return null;\n }\n\n private _applyToTheme(): void {\n const target = this._findThemeTarget();\n if (!target) return;\n // Assign a NEW object reference so cg-theme's @property re-renders.\n (target as unknown as { tokens: Record<string, string> | null }).tokens = { ...this._values };\n }\n\n private _onColorChange(name: string, value: string): void {\n this._values = { ...this._values, [name]: value };\n this._applyToTheme();\n this.dispatchEvent(new CustomEvent('cg-theme-change', {\n detail: { tokens: this._values },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _onImagePicked = (file: File): void => {\n if (!this.themeFromImage) return;\n const img = new Image();\n const url = URL.createObjectURL(file);\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n ctx.drawImage(img, 0, 0);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const tokens = this.themeFromImage!(imageData);\n // Merge the extracted tokens into the editor's known values where\n // there's overlap; for non-overlapping tokens, push them through\n // directly so the cg-theme picks them up too.\n const merged = { ...this._values };\n for (const [k, v] of Object.entries(tokens)) {\n const norm = this._normalizeColor(v);\n if (norm) merged[k] = norm;\n }\n this._values = merged;\n this._applyToTheme();\n URL.revokeObjectURL(url);\n };\n img.src = url;\n };\n\n private _onImageInputChange = (e: Event): void => {\n const input = e.target as HTMLInputElement;\n const file = input.files?.[0];\n if (file) this._onImagePicked(file);\n };\n\n private _onDragEnter = (e: DragEvent): void => {\n e.preventDefault();\n this._dragover = true;\n };\n\n private _onDragLeave = (): void => {\n this._dragover = false;\n };\n\n private _onDrop = (e: DragEvent): void => {\n e.preventDefault();\n this._dragover = false;\n const file = e.dataTransfer?.files?.[0];\n if (file) this._onImagePicked(file);\n };\n\n private _onReset = (): void => {\n const target = this._findThemeTarget();\n if (target) (target as unknown as { tokens: Record<string, string> | null }).tokens = null;\n this._readInitialValues();\n this.dispatchEvent(new CustomEvent('cg-theme-change', {\n detail: { tokens: {} },\n bubbles: true,\n composed: true,\n }));\n };\n\n private _onCopy = (): void => {\n const json = JSON.stringify(this._values, null, 2);\n if (navigator.clipboard?.writeText) {\n void navigator.clipboard.writeText(json);\n }\n this._showCopied = true;\n setTimeout(() => { this._showCopied = false; }, 1200);\n };\n\n private _onToggle = (): void => {\n this.collapsed = !this.collapsed;\n };\n\n override render() {\n return html`\n <div class=\"panel\">\n <header class=${this.collapsed ? 'collapsed' : ''} @click=${this._onToggle}>\n <span class=\"title\">Theme</span>\n <button class=\"toggle\" type=\"button\" aria-label=${this.collapsed ? 'Expand' : 'Collapse'}>\n ${this.collapsed ? '+' : '–'}\n </button>\n </header>\n ${this.collapsed ? nothing : html`\n <div class=\"panel-body\">\n ${this.editableTokens.map(t => html`\n <div class=\"row\">\n <label for=${`tok-${t.name}`}>${t.label}</label>\n <input\n id=${`tok-${t.name}`}\n type=\"color\"\n .value=${this._values[t.name] ?? '#000000'}\n @input=${(e: Event) => this._onColorChange(t.name, (e.target as HTMLInputElement).value)}\n />\n </div>\n `)}\n\n <label\n class=\"image-drop ${this._dragover ? 'dragover' : ''} ${this.themeFromImage ? '' : 'disabled'}\"\n @dragenter=${this._onDragEnter}\n @dragover=${(e: Event) => e.preventDefault()}\n @dragleave=${this._onDragLeave}\n @drop=${this._onDrop}\n >\n ${this.themeFromImage\n ? html`Drop a logo or <strong>browse</strong> to extract a palette.`\n : html`Image extraction not configured.`}\n <input\n type=\"file\"\n accept=\"image/*\"\n ?disabled=${!this.themeFromImage}\n @change=${this._onImageInputChange}\n />\n </label>\n\n <div class=\"footer\">\n <button type=\"button\" @click=${this._onCopy}>Copy JSON</button>\n <button type=\"button\" @click=${this._onReset}>Reset</button>\n </div>\n\n ${this._showCopied ? html`<span class=\"copied\">Copied</span>` : nothing}\n </div>\n `}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-theme-editor': CgThemeEditor;\n }\n}\n"],"names":["CgThemeEditor","LitElement","file","img","url","canvas","ctx","imageData","tokens","merged","k","v","norm","target","json","probe","cs","next","t","value","r","g","b","rgb","to2","n","cursor","name","html","nothing","e","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import { LitElement } from 'lit';
2
- type GroupBy = 'none' | 'day' | 'week' | 'month' | 'year';
3
- /**
4
- * @element cg-timeline
5
- * Vertical (default) or horizontal sequence of `<cg-timeline-event>`
6
- * children. The container handles three things automatically as events
7
- * are added/removed:
8
- *
9
- * 1. Marks the final event with `last` so the trailing connector hides.
10
- * 2. Propagates `direction` so children flip layout for horizontal mode.
11
- * 3. Groups events by day / week / month / year — when `group-by` is set,
12
- * the container reads each child's `date` prop, computes a bucket key,
13
- * and stamps the first event of each bucket with a `group-header=`
14
- * attribute (e.g. "Today", "Yesterday", "Mar 5", "March", "2024").
15
- * The child then renders that label as a sticky-feel section header
16
- * above its dot/body. Headers use Intl, so they respect `locale`.
17
- *
18
- * Vertical layout only supports group headers — horizontal timelines are
19
- * a different UX problem (cluster headers above runs of same-day events
20
- * would compete with the time-axis); set `group-by="none"` (default) for
21
- * horizontal.
22
- *
23
- * @example
24
- * ```html
25
- * <cg-timeline group-by="day" label="Patient activity">
26
- * <cg-timeline-event date="2026-05-04T09:14" timestamp="09:14">Checked in</cg-timeline-event>
27
- * <cg-timeline-event date="2026-05-04T09:30" timestamp="09:30" variant="success">Consultation</cg-timeline-event>
28
- * <cg-timeline-event date="2026-05-03T16:20" timestamp="16:20">Lab results uploaded</cg-timeline-event>
29
- * <cg-timeline-event date="2026-04-28T11:00" timestamp="Apr 28">Initial visit</cg-timeline-event>
30
- * </cg-timeline>
31
- * <!-- renders headers: Today / Yesterday / Apr 28 -->
32
- * ```
33
- *
34
- * @slot - cg-timeline-event children.
35
- *
36
- * @cssprop --cg-component-timeline-event-gap - Gap between events (default 0)
37
- */
38
- export declare class CgTimeline extends LitElement {
39
- static styles: import('lit').CSSResult[];
40
- /** Layout direction. */
41
- direction: 'vertical' | 'horizontal';
42
- /** Accessible label for the timeline as a whole. */
43
- label: string;
44
- /**
45
- * Auto-grouping mode. When set, events with a `date` prop are bucketed
46
- * and the first event in each bucket gets a `group-header` attribute
47
- * with a localized label (Today / Yesterday / weekday / "Mar 5" / etc).
48
- * Vertical layout only.
49
- */
50
- groupBy: GroupBy;
51
- /** BCP 47 locale for group header formatting. Defaults to the document language. */
52
- locale: string | undefined;
53
- updated(changed: Map<string, unknown>): void;
54
- private _syncChildren;
55
- /** Stable bucket key for a date under a given grouping unit. */
56
- private _groupKey;
57
- /** Localized header label using Intl. */
58
- private _formatLabel;
59
- private _stripTime;
60
- private _mondayOf;
61
- private _onSlotChange;
62
- render(): import('lit').TemplateResult<1>;
63
- }
64
- declare global {
65
- interface HTMLElementTagNameMap {
66
- 'cg-timeline': CgTimeline;
67
- }
68
- }
69
- export {};
70
- //# sourceMappingURL=cg-timeline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cg-timeline.d.ts","sourceRoot":"","sources":["../../../src/components/cg-timeline/cg-timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,2CAA2C,CAAC;AAEnD,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAiBnB;IAEH,wBAAwB;IACK,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE/E,oDAAoD;IACxC,KAAK,SAAc;IAE/B;;;;;OAKG;IACiD,OAAO,EAAE,OAAO,CAAU;IAE9E,oFAAoF;IACxE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM9C,OAAO,CAAC,aAAa;IAwCrB,gEAAgE;IAChE,OAAO,CAAC,SAAS;IAejB,yCAAyC;IACzC,OAAO,CAAC,YAAY;IA+CpB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa,CAEnB;IAEO,MAAM;CAOhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -1,131 +0,0 @@
1
- import { css as g, LitElement as f, html as p } from "lit";
2
- import { property as h, customElement as y } from "lit/decorators.js";
3
- import { h as d, r as w } from "../../chunks/premium.css-9I4kHrsl.js";
4
- import "../cg-timeline-event/cg-timeline-event.js";
5
- var v = Object.defineProperty, D = Object.getOwnPropertyDescriptor, u = (t, e, r, n) => {
6
- for (var i = n > 1 ? void 0 : n ? D(e, r) : e, o = t.length - 1, s; o >= 0; o--)
7
- (s = t[o]) && (i = (n ? s(e, r, i) : s(i)) || i);
8
- return n && i && v(e, r, i), i;
9
- };
10
- let l = class extends f {
11
- constructor() {
12
- super(...arguments), this.direction = "vertical", this.label = "Timeline", this.groupBy = "none", this._onSlotChange = (t) => {
13
- this._syncChildren(t.target);
14
- };
15
- }
16
- updated(t) {
17
- (t.has("direction") || t.has("groupBy") || t.has("locale")) && this._syncChildren();
18
- }
19
- _syncChildren(t) {
20
- const e = t ?? this.shadowRoot?.querySelector("slot");
21
- if (!e) return;
22
- const r = e.assignedElements({ flatten: !0 }).filter((o) => o.tagName.toLowerCase() === "cg-timeline-event"), n = this.direction === "vertical" ? this.groupBy : "none";
23
- let i = "";
24
- r.forEach((o, s) => {
25
- if (s === r.length - 1 ? o.setAttribute("last", "") : o.removeAttribute("last"), o.setAttribute("direction", this.direction), n === "none") {
26
- o.removeAttribute("group-header");
27
- return;
28
- }
29
- const a = o.date || o.getAttribute("date") || "";
30
- if (!a) {
31
- o.removeAttribute("group-header");
32
- return;
33
- }
34
- const m = new Date(a);
35
- if (Number.isNaN(m.valueOf())) {
36
- o.removeAttribute("group-header");
37
- return;
38
- }
39
- const c = this._groupKey(m, n);
40
- c !== i ? (o.setAttribute("group-header", this._formatLabel(m, n)), i = c) : o.removeAttribute("group-header");
41
- });
42
- }
43
- /** Stable bucket key for a date under a given grouping unit. */
44
- _groupKey(t, e) {
45
- if (e === "year") return `Y:${t.getFullYear()}`;
46
- if (e === "month") return `M:${t.getFullYear()}-${t.getMonth()}`;
47
- if (e === "week") {
48
- const r = new Date(t);
49
- r.setHours(0, 0, 0, 0);
50
- const n = r.getDay() || 7;
51
- return r.setDate(r.getDate() - n + 1), `W:${r.getFullYear()}-${r.getMonth()}-${r.getDate()}`;
52
- }
53
- return `D:${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`;
54
- }
55
- /** Localized header label using Intl. */
56
- _formatLabel(t, e) {
57
- const r = this.locale ?? (typeof document < "u" && document.documentElement.lang || void 0), n = /* @__PURE__ */ new Date(), i = t.getFullYear() === n.getFullYear();
58
- if (e === "day") {
59
- const o = this._stripTime(n), s = this._stripTime(t), a = Math.round((o.getTime() - s.getTime()) / 864e5);
60
- return a === 0 ? "Today" : a === 1 ? "Yesterday" : a === -1 ? "Tomorrow" : a > 1 && a < 7 ? new Intl.DateTimeFormat(r, { weekday: "long" }).format(t) : new Intl.DateTimeFormat(
61
- r,
62
- i ? { month: "short", day: "numeric" } : { month: "short", day: "numeric", year: "numeric" }
63
- ).format(t);
64
- }
65
- if (e === "week") {
66
- const o = this._mondayOf(t), s = this._mondayOf(n), a = Math.round((s.getTime() - o.getTime()) / (7 * 864e5));
67
- return a === 0 ? "This week" : a === 1 ? "Last week" : a === -1 ? "Next week" : `Week of ${new Intl.DateTimeFormat(
68
- r,
69
- i ? { month: "short", day: "numeric" } : { month: "short", day: "numeric", year: "numeric" }
70
- ).format(o)}`;
71
- }
72
- if (e === "month") {
73
- if (i && t.getMonth() === n.getMonth()) return "This month";
74
- const s = new Date(n.getFullYear(), n.getMonth() - 1, 1);
75
- return t.getFullYear() === s.getFullYear() && t.getMonth() === s.getMonth() ? "Last month" : new Intl.DateTimeFormat(r, i ? { month: "long" } : { month: "long", year: "numeric" }).format(t);
76
- }
77
- return i ? "This year" : t.getFullYear() === n.getFullYear() - 1 ? "Last year" : new Intl.DateTimeFormat(r, { year: "numeric" }).format(t);
78
- }
79
- _stripTime(t) {
80
- const e = new Date(t);
81
- return e.setHours(0, 0, 0, 0), e;
82
- }
83
- _mondayOf(t) {
84
- const e = this._stripTime(t), r = e.getDay() || 7;
85
- return e.setDate(e.getDate() - r + 1), e;
86
- }
87
- render() {
88
- return p`
89
- <ol class="list" role="list" aria-label=${this.label}>
90
- <slot @slotchange=${this._onSlotChange}></slot>
91
- </ol>
92
- `;
93
- }
94
- };
95
- l.styles = [d, w, g`
96
- :host {
97
- display: block;
98
- }
99
- .list {
100
- display: flex;
101
- flex-direction: column;
102
- gap: var(--cg-component-timeline-event-gap, 0);
103
- list-style: none;
104
- margin: 0;
105
- padding: 0;
106
- }
107
- :host([direction="horizontal"]) .list {
108
- flex-direction: row;
109
- align-items: flex-start;
110
- overflow-x: auto;
111
- }
112
- `];
113
- u([
114
- h({ reflect: !0 })
115
- ], l.prototype, "direction", 2);
116
- u([
117
- h()
118
- ], l.prototype, "label", 2);
119
- u([
120
- h({ attribute: "group-by", reflect: !0 })
121
- ], l.prototype, "groupBy", 2);
122
- u([
123
- h()
124
- ], l.prototype, "locale", 2);
125
- l = u([
126
- y("cg-timeline")
127
- ], l);
128
- export {
129
- l as CgTimeline
130
- };
131
- //# sourceMappingURL=cg-timeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cg-timeline.js","sources":["../../../src/components/cg-timeline/cg-timeline.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport '../cg-timeline-event/cg-timeline-event.js';\n\ntype GroupBy = 'none' | 'day' | 'week' | 'month' | 'year';\n\n/**\n * @element cg-timeline\n * Vertical (default) or horizontal sequence of `<cg-timeline-event>`\n * children. The container handles three things automatically as events\n * are added/removed:\n *\n * 1. Marks the final event with `last` so the trailing connector hides.\n * 2. Propagates `direction` so children flip layout for horizontal mode.\n * 3. Groups events by day / week / month / year — when `group-by` is set,\n * the container reads each child's `date` prop, computes a bucket key,\n * and stamps the first event of each bucket with a `group-header=`\n * attribute (e.g. \"Today\", \"Yesterday\", \"Mar 5\", \"March\", \"2024\").\n * The child then renders that label as a sticky-feel section header\n * above its dot/body. Headers use Intl, so they respect `locale`.\n *\n * Vertical layout only supports group headers — horizontal timelines are\n * a different UX problem (cluster headers above runs of same-day events\n * would compete with the time-axis); set `group-by=\"none\"` (default) for\n * horizontal.\n *\n * @example\n * ```html\n * <cg-timeline group-by=\"day\" label=\"Patient activity\">\n * <cg-timeline-event date=\"2026-05-04T09:14\" timestamp=\"09:14\">Checked in</cg-timeline-event>\n * <cg-timeline-event date=\"2026-05-04T09:30\" timestamp=\"09:30\" variant=\"success\">Consultation</cg-timeline-event>\n * <cg-timeline-event date=\"2026-05-03T16:20\" timestamp=\"16:20\">Lab results uploaded</cg-timeline-event>\n * <cg-timeline-event date=\"2026-04-28T11:00\" timestamp=\"Apr 28\">Initial visit</cg-timeline-event>\n * </cg-timeline>\n * <!-- renders headers: Today / Yesterday / Apr 28 -->\n * ```\n *\n * @slot - cg-timeline-event children.\n *\n * @cssprop --cg-component-timeline-event-gap - Gap between events (default 0)\n */\n@customElement('cg-timeline')\nexport class CgTimeline extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: block;\n }\n .list {\n display: flex;\n flex-direction: column;\n gap: var(--cg-component-timeline-event-gap, 0);\n list-style: none;\n margin: 0;\n padding: 0;\n }\n :host([direction=\"horizontal\"]) .list {\n flex-direction: row;\n align-items: flex-start;\n overflow-x: auto;\n }\n `];\n\n /** Layout direction. */\n @property({ reflect: true }) direction: 'vertical' | 'horizontal' = 'vertical';\n\n /** Accessible label for the timeline as a whole. */\n @property() label = 'Timeline';\n\n /**\n * Auto-grouping mode. When set, events with a `date` prop are bucketed\n * and the first event in each bucket gets a `group-header` attribute\n * with a localized label (Today / Yesterday / weekday / \"Mar 5\" / etc).\n * Vertical layout only.\n */\n @property({ attribute: 'group-by', reflect: true }) groupBy: GroupBy = 'none';\n\n /** BCP 47 locale for group header formatting. Defaults to the document language. */\n @property() locale: string | undefined;\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('direction') || changed.has('groupBy') || changed.has('locale')) {\n this._syncChildren();\n }\n }\n\n private _syncChildren(slot?: HTMLSlotElement) {\n const root = slot ?? this.shadowRoot?.querySelector('slot');\n if (!root) return;\n const events = (root as HTMLSlotElement).assignedElements({ flatten: true })\n .filter(el => el.tagName.toLowerCase() === 'cg-timeline-event');\n\n const grouping = this.direction === 'vertical' ? this.groupBy : 'none';\n let prevKey = '';\n\n events.forEach((el, i) => {\n // Last + direction always run.\n if (i === events.length - 1) el.setAttribute('last', '');\n else el.removeAttribute('last');\n el.setAttribute('direction', this.direction);\n\n // Grouping (vertical only).\n if (grouping === 'none') {\n el.removeAttribute('group-header');\n return;\n }\n const dateAttr = (el as any).date || el.getAttribute('date') || '';\n if (!dateAttr) {\n el.removeAttribute('group-header');\n return;\n }\n const date = new Date(dateAttr);\n if (Number.isNaN(date.valueOf())) {\n el.removeAttribute('group-header');\n return;\n }\n const key = this._groupKey(date, grouping);\n if (key !== prevKey) {\n el.setAttribute('group-header', this._formatLabel(date, grouping));\n prevKey = key;\n } else {\n el.removeAttribute('group-header');\n }\n });\n }\n\n /** Stable bucket key for a date under a given grouping unit. */\n private _groupKey(date: Date, by: Exclude<GroupBy, 'none'>): string {\n if (by === 'year') return `Y:${date.getFullYear()}`;\n if (by === 'month') return `M:${date.getFullYear()}-${date.getMonth()}`;\n if (by === 'week') {\n // ISO week: Monday-start. Anchor to the Monday of the date's week.\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n const day = d.getDay() || 7;\n d.setDate(d.getDate() - day + 1);\n return `W:${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n }\n // day\n return `D:${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n }\n\n /** Localized header label using Intl. */\n private _formatLabel(date: Date, by: Exclude<GroupBy, 'none'>): string {\n const locale = this.locale ?? (typeof document !== 'undefined' ? document.documentElement.lang || undefined : undefined);\n const now = new Date();\n const sameYear = date.getFullYear() === now.getFullYear();\n\n if (by === 'day') {\n const today = this._stripTime(now);\n const target = this._stripTime(date);\n const diffDays = Math.round((today.getTime() - target.getTime()) / 86_400_000);\n if (diffDays === 0) return 'Today';\n if (diffDays === 1) return 'Yesterday';\n if (diffDays === -1) return 'Tomorrow';\n if (diffDays > 1 && diffDays < 7) return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n return new Intl.DateTimeFormat(locale, sameYear\n ? { month: 'short', day: 'numeric' }\n : { month: 'short', day: 'numeric', year: 'numeric' }\n ).format(date);\n }\n\n if (by === 'week') {\n const monday = this._mondayOf(date);\n const thisMonday = this._mondayOf(now);\n const diffWeeks = Math.round((thisMonday.getTime() - monday.getTime()) / (7 * 86_400_000));\n if (diffWeeks === 0) return 'This week';\n if (diffWeeks === 1) return 'Last week';\n if (diffWeeks === -1) return 'Next week';\n const wkLabel = new Intl.DateTimeFormat(locale, sameYear\n ? { month: 'short', day: 'numeric' }\n : { month: 'short', day: 'numeric', year: 'numeric' }\n ).format(monday);\n return `Week of ${wkLabel}`;\n }\n\n if (by === 'month') {\n const sameMonth = sameYear && date.getMonth() === now.getMonth();\n if (sameMonth) return 'This month';\n const prev = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n if (date.getFullYear() === prev.getFullYear() && date.getMonth() === prev.getMonth()) return 'Last month';\n return new Intl.DateTimeFormat(locale, sameYear ? { month: 'long' } : { month: 'long', year: 'numeric' }).format(date);\n }\n\n // year\n if (sameYear) return 'This year';\n if (date.getFullYear() === now.getFullYear() - 1) return 'Last year';\n return new Intl.DateTimeFormat(locale, { year: 'numeric' }).format(date);\n }\n\n private _stripTime(d: Date): Date {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n }\n\n private _mondayOf(d: Date): Date {\n const x = this._stripTime(d);\n const day = x.getDay() || 7;\n x.setDate(x.getDate() - day + 1);\n return x;\n }\n\n private _onSlotChange = (e: Event): void => {\n this._syncChildren(e.target as HTMLSlotElement);\n };\n\n override render() {\n return html`\n <ol class=\"list\" role=\"list\" aria-label=${this.label}>\n <slot @slotchange=${this._onSlotChange}></slot>\n </ol>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-timeline': CgTimeline;\n }\n}\n"],"names":["CgTimeline","LitElement","e","changed","slot","root","events","el","grouping","prevKey","i","dateAttr","date","key","by","d","day","locale","now","sameYear","today","target","diffDays","monday","thisMonday","diffWeeks","prev","x","html","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}