@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,91 +1,112 @@
1
- import { css as g, LitElement as u, nothing as v, html as c } from "lit";
2
- import { property as s, state as l, query as h, customElement as m } from "lit/decorators.js";
3
- import { h as f, r as b } from "../../chunks/premium.css-9I4kHrsl.js";
4
- import { b as _, a as w } from "../../chunks/floating-DfsaYJnh.js";
1
+ import { css as g, LitElement as v, nothing as c, html as d } from "lit";
2
+ import { property as i, state as h, query as u, customElement as m } from "lit/decorators.js";
3
+ import { h as f, r as _ } from "../../chunks/premium.css-DHekUEUt.js";
4
+ import { b, a as w } from "../../chunks/floating-DfsaYJnh.js";
5
5
  import { b as y } from "../../chunks/outside-click-CP1P1fK3.js";
6
- import { F as E } from "../../chunks/focus-trap-BdRNhSPD.js";
7
- var C = Object.defineProperty, O = Object.getOwnPropertyDescriptor, o = (t, r, n, i) => {
8
- for (var a = i > 1 ? void 0 : i ? O(r, n) : r, p = t.length - 1, d; p >= 0; p--)
9
- (d = t[p]) && (a = (i ? d(r, n, a) : d(a)) || a);
10
- return i && a && C(r, n, a), a;
6
+ import { F as E } from "../../chunks/focus-trap-vlQwKK-3.js";
7
+ var C = Object.defineProperty, O = Object.getOwnPropertyDescriptor, o = (e, r, n, s) => {
8
+ for (var a = s > 1 ? void 0 : s ? O(r, n) : r, p = e.length - 1, l; p >= 0; p--)
9
+ (l = e[p]) && (a = (s ? l(r, n, a) : l(a)) || a);
10
+ return s && a && C(r, n, a), a;
11
11
  };
12
- let e = class extends u {
12
+ let t = class extends v {
13
13
  constructor() {
14
- super(...arguments), this.open = !1, this.placement = "bottom", this.offset = 8, this.arrow = !0, this.trigger = "click", this.closable = !0, this.size = "md", this.rounded = "md", this._actualSide = "bottom", this._arrowOffset = 0, this._focusTrap = new E(), this._cleanupAutoUpdate = null, this._disposeOutsideClick = null;
14
+ super(...arguments), this.open = !1, this.label = "", this.placement = "bottom", this.offset = 8, this.arrow = !0, this.trigger = "click", this.closable = !0, this.size = "md", this.rounded = "md", this._actualSide = "bottom", this._arrowOffset = 0, this._focusTrap = new E(), this._cleanupAutoUpdate = null, this._disposeOutsideClick = null, this._hoverOpenTimer = 0, this._hoverCloseTimer = 0, this._hoverEscListener = null;
15
15
  }
16
16
  disconnectedCallback() {
17
- super.disconnectedCallback(), this._cleanupAutoUpdate?.(), this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate();
17
+ super.disconnectedCallback(), this._cleanupAutoUpdate?.(), this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate(), clearTimeout(this._hoverOpenTimer), clearTimeout(this._hoverCloseTimer), this._disposeHoverEsc();
18
18
  }
19
- updated(t) {
20
- t.has("open") && (this.open ? this._onOpen() : this._onClose());
19
+ _disposeHoverEsc() {
20
+ this._hoverEscListener && (document.removeEventListener("keydown", this._hoverEscListener), this._hoverEscListener = null);
21
+ }
22
+ updated(e) {
23
+ e.has("open") && (this._slottedTrigger()?.setAttribute("aria-expanded", String(this.open)), this.open ? this._onOpen() : e.get("open") === !0 && this._onClose());
24
+ }
25
+ _slottedTrigger() {
26
+ return this.shadowRoot?.querySelector("slot:not([name])")?.assignedElements()[0] ?? null;
27
+ }
28
+ /** ARIA popup state lives on the slotted trigger — a role-less wrapper
29
+ * div is invisible to assistive tech. */
30
+ _onTriggerSlotChange() {
31
+ const e = this._slottedTrigger();
32
+ e && (e.setAttribute("aria-haspopup", "dialog"), e.setAttribute("aria-expanded", String(this.open)));
21
33
  }
22
34
  _onOpen() {
23
35
  this.dispatchEvent(new CustomEvent("cg-popover-open", { bubbles: !0, composed: !0 })), requestAnimationFrame(() => {
24
- !this._triggerEl || !this._popoverEl || (this._cleanupAutoUpdate = _(this._triggerEl, this._popoverEl, () => this._updatePosition()));
36
+ !this._triggerEl || !this._popoverEl || (this._cleanupAutoUpdate = b(this._triggerEl, this._popoverEl, () => this._updatePosition()));
25
37
  }), this.closable && (this._disposeOutsideClick?.(), this._disposeOutsideClick = y(this, () => {
26
38
  this.open = !1;
27
- })), requestAnimationFrame(() => {
39
+ })), this.trigger !== "hover" ? requestAnimationFrame(() => {
28
40
  this._popoverEl && this._focusTrap.activate(this._popoverEl, {
29
41
  onEscape: this.closable ? () => {
30
42
  this.open = !1;
31
43
  } : void 0
32
44
  });
33
- });
45
+ }) : this.closable && (this._disposeHoverEsc(), this._hoverEscListener = (e) => {
46
+ e.key === "Escape" && (this.open = !1);
47
+ }, document.addEventListener("keydown", this._hoverEscListener));
34
48
  }
35
49
  _onClose() {
36
- this.dispatchEvent(new CustomEvent("cg-popover-close", { bubbles: !0, composed: !0 })), this._cleanupAutoUpdate?.(), this._cleanupAutoUpdate = null, this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate();
50
+ this.dispatchEvent(new CustomEvent("cg-popover-close", { bubbles: !0, composed: !0 })), this._cleanupAutoUpdate?.(), this._cleanupAutoUpdate = null, this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate(), this._disposeHoverEsc();
37
51
  }
38
52
  _updatePosition() {
39
53
  if (!this._triggerEl || !this._popoverEl) return;
40
- const t = this._triggerEl.getBoundingClientRect(), r = w(this._triggerEl, this._popoverEl, {
54
+ const e = this._triggerEl.getBoundingClientRect(), r = w(this._triggerEl, this._popoverEl, {
41
55
  placement: this.placement,
42
56
  offset: this.offset,
43
57
  flip: !0,
44
58
  shift: !0
45
59
  });
46
60
  if (this._actualSide = r.placement.split("-")[0], this._actualSide === "top" || this._actualSide === "bottom") {
47
- const i = t.left + t.width / 2;
48
- this._arrowOffset = i - r.x;
61
+ const s = e.left + e.width / 2;
62
+ this._arrowOffset = s - r.x;
49
63
  } else {
50
- const i = t.top + t.height / 2;
51
- this._arrowOffset = i - r.y;
64
+ const s = e.top + e.height / 2;
65
+ this._arrowOffset = s - r.y;
52
66
  }
53
67
  }
54
68
  _handleTriggerClick() {
55
69
  this.trigger === "click" && (this.open = !this.open);
56
70
  }
57
- _handleTriggerMouseEnter() {
58
- this.trigger === "hover" && (this.open = !0);
71
+ _scheduleOpen() {
72
+ this.trigger === "hover" && (clearTimeout(this._hoverCloseTimer), this._hoverOpenTimer = window.setTimeout(() => {
73
+ this.open = !0;
74
+ }, 80));
59
75
  }
60
- _handleTriggerMouseLeave() {
61
- this.trigger === "hover" && (this.open = !1);
76
+ _scheduleClose() {
77
+ this.trigger === "hover" && (clearTimeout(this._hoverOpenTimer), this._hoverCloseTimer = window.setTimeout(() => {
78
+ this.open = !1;
79
+ }, 150));
62
80
  }
63
81
  render() {
64
82
  const r = this._actualSide === "top" || this._actualSide === "bottom" ? `left: ${this._arrowOffset}px; margin-left: calc(var(--cg-component-popover-arrow-size) / -2);` : `top: ${this._arrowOffset}px; margin-top: calc(var(--cg-component-popover-arrow-size) / -2);`;
65
- return c`
83
+ return d`
66
84
  <div
67
85
  class="trigger"
68
86
  @click=${this._handleTriggerClick}
69
- @mouseenter=${this._handleTriggerMouseEnter}
70
- @mouseleave=${this._handleTriggerMouseLeave}
71
- aria-haspopup="dialog"
72
- aria-expanded=${this.open ? "true" : "false"}
87
+ @mouseenter=${this._scheduleOpen}
88
+ @mouseleave=${this._scheduleClose}
89
+ @focusin=${this._scheduleOpen}
90
+ @focusout=${this._scheduleClose}
73
91
  >
74
- <slot></slot>
92
+ <slot @slotchange=${this._onTriggerSlotChange}></slot>
75
93
  </div>
76
94
  <div
77
95
  class="popover"
78
96
  role="dialog"
79
97
  aria-modal="false"
98
+ aria-label=${this.label || c}
80
99
  data-side=${this._actualSide}
100
+ @mouseenter=${this._scheduleOpen}
101
+ @mouseleave=${this._scheduleClose}
81
102
  >
82
- ${this.arrow ? c`<span class="arrow" data-side=${this._actualSide} style=${r}></span>` : v}
103
+ ${this.arrow ? d`<span class="arrow" data-side=${this._actualSide} style=${r}></span>` : c}
83
104
  <slot name="content"></slot>
84
105
  </div>
85
106
  `;
86
107
  }
87
108
  };
88
- e.styles = [f, b, g`
109
+ t.styles = [f, _, g`
89
110
  :host {
90
111
  display: inline-block;
91
112
  position: relative;
@@ -108,15 +129,18 @@ e.styles = [f, b, g`
108
129
  color: var(--cg-color-surface-container-text);
109
130
  box-shadow: var(--cg-elevation-3);
110
131
  opacity: 0;
132
+ visibility: hidden;
111
133
  transform: scale(0.96) translateY(var(--cg-spacing-4));
112
134
  pointer-events: none;
113
135
  transition:
114
136
  opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),
115
- transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);
137
+ transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out),
138
+ visibility var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
116
139
  }
117
140
 
118
141
  :host([open]) .popover {
119
142
  opacity: 1;
143
+ visibility: visible;
120
144
  transform: scale(1) translateY(0);
121
145
  pointer-events: auto;
122
146
  }
@@ -171,45 +195,48 @@ e.styles = [f, b, g`
171
195
  }
172
196
  `];
173
197
  o([
174
- s({ type: Boolean, reflect: !0 })
175
- ], e.prototype, "open", 2);
198
+ i({ type: Boolean, reflect: !0 })
199
+ ], t.prototype, "open", 2);
200
+ o([
201
+ i()
202
+ ], t.prototype, "label", 2);
176
203
  o([
177
- s()
178
- ], e.prototype, "placement", 2);
204
+ i()
205
+ ], t.prototype, "placement", 2);
179
206
  o([
180
- s({ type: Number })
181
- ], e.prototype, "offset", 2);
207
+ i({ type: Number })
208
+ ], t.prototype, "offset", 2);
182
209
  o([
183
- s({ type: Boolean })
184
- ], e.prototype, "arrow", 2);
210
+ i({ type: Boolean })
211
+ ], t.prototype, "arrow", 2);
185
212
  o([
186
- s()
187
- ], e.prototype, "trigger", 2);
213
+ i()
214
+ ], t.prototype, "trigger", 2);
188
215
  o([
189
- s({ type: Boolean })
190
- ], e.prototype, "closable", 2);
216
+ i({ type: Boolean })
217
+ ], t.prototype, "closable", 2);
191
218
  o([
192
- s({ reflect: !0 })
193
- ], e.prototype, "size", 2);
219
+ i({ reflect: !0 })
220
+ ], t.prototype, "size", 2);
194
221
  o([
195
- s({ reflect: !0 })
196
- ], e.prototype, "rounded", 2);
222
+ i({ reflect: !0 })
223
+ ], t.prototype, "rounded", 2);
197
224
  o([
198
- l()
199
- ], e.prototype, "_actualSide", 2);
225
+ h()
226
+ ], t.prototype, "_actualSide", 2);
200
227
  o([
201
- l()
202
- ], e.prototype, "_arrowOffset", 2);
228
+ h()
229
+ ], t.prototype, "_arrowOffset", 2);
203
230
  o([
204
- h(".popover")
205
- ], e.prototype, "_popoverEl", 2);
231
+ u(".popover")
232
+ ], t.prototype, "_popoverEl", 2);
206
233
  o([
207
- h(".trigger")
208
- ], e.prototype, "_triggerEl", 2);
209
- e = o([
234
+ u(".trigger")
235
+ ], t.prototype, "_triggerEl", 2);
236
+ t = o([
210
237
  m("cg-popover")
211
- ], e);
238
+ ], t);
212
239
  export {
213
- e as CgPopover
240
+ t as CgPopover
214
241
  };
215
242
  //# sourceMappingURL=cg-popover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cg-popover.js","sources":["../../../src/components/cg-popover/cg-popover.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { applyFloatingPosition, autoUpdate, type Placement } from '../../utils/floating.js';\nimport { bindOutsideClick } from '../../utils/outside-click.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-popover\n * Floating content container with click/hover triggers, smart placement, and focus management.\n *\n * @example\n * ```html\n * <cg-popover placement=\"bottom-start\" trigger=\"click\">\n * <cg-button>Filters</cg-button>\n * <div slot=\"content\">Filter panel content</div>\n * </cg-popover>\n * ```\n *\n * @slot - Trigger element\n * @slot content - Popover content\n *\n * @fires {CustomEvent} cg-popover-open - When the popover opens\n * @fires {CustomEvent} cg-popover-close - When the popover closes\n */\n@customElement('cg-popover')\nexport class CgPopover extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger {\n display: inline-flex;\n cursor: pointer;\n }\n\n .popover {\n position: fixed;\n z-index: var(--cg-z-index-500);\n min-width: var(--cg-spacing-160);\n max-width: var(--cg-component-popover-max-width);\n padding: var(--cg-component-popover-padding);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-component-popover-radius);\n color: var(--cg-color-surface-container-text);\n box-shadow: var(--cg-elevation-3);\n opacity: 0;\n transform: scale(0.96) translateY(var(--cg-spacing-4));\n pointer-events: none;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n\n :host([open]) .popover {\n opacity: 1;\n transform: scale(1) translateY(0);\n pointer-events: auto;\n }\n\n /* Transform origin based on placement side */\n .popover[data-side=\"top\"] { transform-origin: bottom; }\n .popover[data-side=\"bottom\"] { transform-origin: top; }\n .popover[data-side=\"left\"] { transform-origin: right; }\n .popover[data-side=\"right\"] { transform-origin: left; }\n\n /* Size variants */\n :host([size=\"sm\"]) .popover { max-width: var(--cg-spacing-256); }\n :host([size=\"md\"]) .popover { max-width: var(--cg-component-popover-max-width); }\n :host([size=\"lg\"]) .popover { max-width: var(--cg-spacing-480); }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .popover { border-radius: var(--cg-border-radius-none); }\n :host([rounded=\"sm\"]) .popover { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .popover { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .popover { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .popover { border-radius: var(--cg-border-radius-full); }\n\n /* Arrow */\n .arrow {\n position: absolute;\n width: var(--cg-component-popover-arrow-size);\n height: var(--cg-component-popover-arrow-size);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n transform: rotate(45deg);\n pointer-events: none;\n }\n .arrow[data-side=\"top\"] {\n bottom: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-top: none;\n border-left: none;\n }\n .arrow[data-side=\"bottom\"] {\n top: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-bottom: none;\n border-right: none;\n }\n .arrow[data-side=\"left\"] {\n right: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-left: none;\n border-bottom: none;\n }\n .arrow[data-side=\"right\"] {\n left: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-right: none;\n border-top: none;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() placement: Placement = 'bottom';\n @property({ type: Number }) offset = 8;\n @property({ type: Boolean }) arrow = true;\n @property() trigger: 'click' | 'hover' | 'manual' = 'click';\n @property({ type: Boolean }) closable = true;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n @state() private _actualSide: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n @state() private _arrowOffset = 0;\n\n @query('.popover') private _popoverEl!: HTMLElement;\n @query('.trigger') private _triggerEl!: HTMLElement;\n\n private _focusTrap = new FocusTrap();\n private _cleanupAutoUpdate: (() => void) | null = null;\n private _disposeOutsideClick: (() => void) | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._cleanupAutoUpdate?.();\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _onOpen(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-open', { bubbles: true, composed: true }));\n\n // Start auto-positioning\n requestAnimationFrame(() => {\n if (!this._triggerEl || !this._popoverEl) return;\n this._cleanupAutoUpdate = autoUpdate(this._triggerEl, this._popoverEl, () => this._updatePosition());\n });\n\n // Outside click to close\n if (this.closable) {\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = bindOutsideClick(this, () => { this.open = false; });\n }\n\n // Focus trap\n requestAnimationFrame(() => {\n if (this._popoverEl) {\n this._focusTrap.activate(this._popoverEl, {\n onEscape: this.closable ? () => { this.open = false; } : undefined,\n });\n }\n });\n }\n\n private _onClose(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-close', { bubbles: true, composed: true }));\n this._cleanupAutoUpdate?.();\n this._cleanupAutoUpdate = null;\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n }\n\n private _updatePosition(): void {\n if (!this._triggerEl || !this._popoverEl) return;\n const triggerRect = this._triggerEl.getBoundingClientRect();\n const result = applyFloatingPosition(this._triggerEl, this._popoverEl, {\n placement: this.placement, offset: this.offset, flip: true, shift: true,\n });\n this._actualSide = result.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right';\n\n // Compute arrow offset\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n if (isVertical) {\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\n this._arrowOffset = triggerCenter - result.x;\n } else {\n const triggerCenter = triggerRect.top + triggerRect.height / 2;\n this._arrowOffset = triggerCenter - result.y;\n }\n }\n\n private _handleTriggerClick(): void {\n if (this.trigger !== 'click') return;\n this.open = !this.open;\n }\n\n private _handleTriggerMouseEnter(): void {\n if (this.trigger !== 'hover') return;\n this.open = true;\n }\n\n private _handleTriggerMouseLeave(): void {\n if (this.trigger !== 'hover') return;\n this.open = false;\n }\n\n override render() {\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n const arrowStyle = isVertical\n ? `left: ${this._arrowOffset}px; margin-left: calc(var(--cg-component-popover-arrow-size) / -2);`\n : `top: ${this._arrowOffset}px; margin-top: calc(var(--cg-component-popover-arrow-size) / -2);`;\n\n return html`\n <div\n class=\"trigger\"\n @click=${this._handleTriggerClick}\n @mouseenter=${this._handleTriggerMouseEnter}\n @mouseleave=${this._handleTriggerMouseLeave}\n aria-haspopup=\"dialog\"\n aria-expanded=${this.open ? 'true' : 'false'}\n >\n <slot></slot>\n </div>\n <div\n class=\"popover\"\n role=\"dialog\"\n aria-modal=\"false\"\n data-side=${this._actualSide}\n >\n ${this.arrow ? html`<span class=\"arrow\" data-side=${this._actualSide} style=${arrowStyle}></span>` : nothing}\n <slot name=\"content\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-popover': CgPopover;\n }\n}\n"],"names":["CgPopover","LitElement","FocusTrap","changed","autoUpdate","bindOutsideClick","triggerRect","result","applyFloatingPosition","triggerCenter","arrowStyle","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-popover.js","sources":["../../../src/components/cg-popover/cg-popover.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { applyFloatingPosition, autoUpdate, type Placement } from '../../utils/floating.js';\nimport { bindOutsideClick } from '../../utils/outside-click.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-popover\n * Floating content container with click/hover triggers, smart placement, and focus management.\n *\n * @example\n * ```html\n * <cg-popover placement=\"bottom-start\" trigger=\"click\">\n * <cg-button>Filters</cg-button>\n * <div slot=\"content\">Filter panel content</div>\n * </cg-popover>\n * ```\n *\n * @slot - Trigger element\n * @slot content - Popover content\n *\n * @fires {CustomEvent} cg-popover-open - When the popover opens\n * @fires {CustomEvent} cg-popover-close - When the popover closes\n */\n@customElement('cg-popover')\nexport class CgPopover extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger {\n display: inline-flex;\n cursor: pointer;\n }\n\n .popover {\n position: fixed;\n z-index: var(--cg-z-index-500);\n min-width: var(--cg-spacing-160);\n max-width: var(--cg-component-popover-max-width);\n padding: var(--cg-component-popover-padding);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-component-popover-radius);\n color: var(--cg-color-surface-container-text);\n box-shadow: var(--cg-elevation-3);\n opacity: 0;\n visibility: hidden;\n transform: scale(0.96) translateY(var(--cg-spacing-4));\n pointer-events: none;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out),\n visibility var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n :host([open]) .popover {\n opacity: 1;\n visibility: visible;\n transform: scale(1) translateY(0);\n pointer-events: auto;\n }\n\n /* Transform origin based on placement side */\n .popover[data-side=\"top\"] { transform-origin: bottom; }\n .popover[data-side=\"bottom\"] { transform-origin: top; }\n .popover[data-side=\"left\"] { transform-origin: right; }\n .popover[data-side=\"right\"] { transform-origin: left; }\n\n /* Size variants */\n :host([size=\"sm\"]) .popover { max-width: var(--cg-spacing-256); }\n :host([size=\"md\"]) .popover { max-width: var(--cg-component-popover-max-width); }\n :host([size=\"lg\"]) .popover { max-width: var(--cg-spacing-480); }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .popover { border-radius: var(--cg-border-radius-none); }\n :host([rounded=\"sm\"]) .popover { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .popover { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .popover { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .popover { border-radius: var(--cg-border-radius-full); }\n\n /* Arrow */\n .arrow {\n position: absolute;\n width: var(--cg-component-popover-arrow-size);\n height: var(--cg-component-popover-arrow-size);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n transform: rotate(45deg);\n pointer-events: none;\n }\n .arrow[data-side=\"top\"] {\n bottom: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-top: none;\n border-left: none;\n }\n .arrow[data-side=\"bottom\"] {\n top: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-bottom: none;\n border-right: none;\n }\n .arrow[data-side=\"left\"] {\n right: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-left: none;\n border-bottom: none;\n }\n .arrow[data-side=\"right\"] {\n left: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-right: none;\n border-top: none;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n /** Accessible name for the popover dialog (required for WCAG 4.1.2). */\n @property() label = '';\n @property() placement: Placement = 'bottom';\n @property({ type: Number }) offset = 8;\n @property({ type: Boolean }) arrow = true;\n @property() trigger: 'click' | 'hover' | 'manual' = 'click';\n @property({ type: Boolean }) closable = true;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n @state() private _actualSide: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n @state() private _arrowOffset = 0;\n\n @query('.popover') private _popoverEl!: HTMLElement;\n @query('.trigger') private _triggerEl!: HTMLElement;\n\n private _focusTrap = new FocusTrap();\n private _cleanupAutoUpdate: (() => void) | null = null;\n private _disposeOutsideClick: (() => void) | null = null;\n private _hoverOpenTimer = 0;\n private _hoverCloseTimer = 0;\n private _hoverEscListener: ((e: KeyboardEvent) => void) | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._cleanupAutoUpdate?.();\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n clearTimeout(this._hoverOpenTimer);\n clearTimeout(this._hoverCloseTimer);\n this._disposeHoverEsc();\n }\n\n private _disposeHoverEsc(): void {\n if (this._hoverEscListener) {\n document.removeEventListener('keydown', this._hoverEscListener);\n this._hoverEscListener = null;\n }\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n this._slottedTrigger()?.setAttribute('aria-expanded', String(this.open));\n if (this.open) this._onOpen();\n else if (changed.get('open') === true) this._onClose();\n }\n }\n\n private _slottedTrigger(): Element | null {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n return slot?.assignedElements()[0] ?? null;\n }\n\n /** ARIA popup state lives on the slotted trigger — a role-less wrapper\n * div is invisible to assistive tech. */\n private _onTriggerSlotChange(): void {\n const el = this._slottedTrigger();\n if (el) {\n el.setAttribute('aria-haspopup', 'dialog');\n el.setAttribute('aria-expanded', String(this.open));\n }\n }\n\n private _onOpen(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-open', { bubbles: true, composed: true }));\n\n // Start auto-positioning\n requestAnimationFrame(() => {\n if (!this._triggerEl || !this._popoverEl) return;\n this._cleanupAutoUpdate = autoUpdate(this._triggerEl, this._popoverEl, () => this._updatePosition());\n });\n\n // Outside click to close\n if (this.closable) {\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = bindOutsideClick(this, () => { this.open = false; });\n }\n\n // Focus trap — but never in hover mode: activate() steals keyboard focus\n // on mere mouseover and deactivate() yanks it back on mouseleave.\n if (this.trigger !== 'hover') {\n requestAnimationFrame(() => {\n if (this._popoverEl) {\n this._focusTrap.activate(this._popoverEl, {\n onEscape: this.closable ? () => { this.open = false; } : undefined,\n });\n }\n });\n } else if (this.closable) {\n // WCAG 1.4.13: hover content must be dismissable without pointer moves.\n this._disposeHoverEsc();\n this._hoverEscListener = (e: KeyboardEvent) => { if (e.key === 'Escape') this.open = false; };\n document.addEventListener('keydown', this._hoverEscListener);\n }\n }\n\n private _onClose(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-close', { bubbles: true, composed: true }));\n this._cleanupAutoUpdate?.();\n this._cleanupAutoUpdate = null;\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n this._disposeHoverEsc();\n }\n\n private _updatePosition(): void {\n if (!this._triggerEl || !this._popoverEl) return;\n const triggerRect = this._triggerEl.getBoundingClientRect();\n const result = applyFloatingPosition(this._triggerEl, this._popoverEl, {\n placement: this.placement, offset: this.offset, flip: true, shift: true,\n });\n this._actualSide = result.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right';\n\n // Compute arrow offset\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n if (isVertical) {\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\n this._arrowOffset = triggerCenter - result.x;\n } else {\n const triggerCenter = triggerRect.top + triggerRect.height / 2;\n this._arrowOffset = triggerCenter - result.y;\n }\n }\n\n private _handleTriggerClick(): void {\n if (this.trigger !== 'click') return;\n this.open = !this.open;\n }\n\n private _scheduleOpen(): void {\n if (this.trigger !== 'hover') return;\n clearTimeout(this._hoverCloseTimer);\n this._hoverOpenTimer = window.setTimeout(() => { this.open = true; }, 80);\n }\n\n private _scheduleClose(): void {\n if (this.trigger !== 'hover') return;\n clearTimeout(this._hoverOpenTimer);\n // Delay so the pointer can cross the gap into the popover (WCAG 1.4.13)\n this._hoverCloseTimer = window.setTimeout(() => { this.open = false; }, 150);\n }\n\n override render() {\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n const arrowStyle = isVertical\n ? `left: ${this._arrowOffset}px; margin-left: calc(var(--cg-component-popover-arrow-size) / -2);`\n : `top: ${this._arrowOffset}px; margin-top: calc(var(--cg-component-popover-arrow-size) / -2);`;\n\n return html`\n <div\n class=\"trigger\"\n @click=${this._handleTriggerClick}\n @mouseenter=${this._scheduleOpen}\n @mouseleave=${this._scheduleClose}\n @focusin=${this._scheduleOpen}\n @focusout=${this._scheduleClose}\n >\n <slot @slotchange=${this._onTriggerSlotChange}></slot>\n </div>\n <div\n class=\"popover\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=${this.label || nothing}\n data-side=${this._actualSide}\n @mouseenter=${this._scheduleOpen}\n @mouseleave=${this._scheduleClose}\n >\n ${this.arrow ? html`<span class=\"arrow\" data-side=${this._actualSide} style=${arrowStyle}></span>` : nothing}\n <slot name=\"content\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-popover': CgPopover;\n }\n}\n"],"names":["CgPopover","LitElement","FocusTrap","changed","el","autoUpdate","bindOutsideClick","triggerRect","result","applyFloatingPosition","triggerCenter","arrowStyle","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":";;;;;;;;;;;AA0BO,IAAMA,IAAN,cAAwBC,EAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA,GA0FuC,KAAA,OAAO,IAEvC,KAAA,QAAQ,IACR,KAAA,YAAuB,UACP,KAAA,SAAS,GACR,KAAA,QAAQ,IACzB,KAAA,UAAwC,SACvB,KAAA,WAAW,IACX,KAAA,OAA2B,MAC3B,KAAA,UAAgD,MAEpE,KAAQ,cAAmD,UAC3D,KAAQ,eAAe,GAKhC,KAAQ,aAAa,IAAIC,EAAA,GACzB,KAAQ,qBAA0C,MAClD,KAAQ,uBAA4C,MACpD,KAAQ,kBAAkB,GAC1B,KAAQ,mBAAmB,GAC3B,KAAQ,oBAAyD;AAAA,EAAA;AAAA,EAExD,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,qBAAA,GACL,KAAK,uBAAA,GACL,KAAK,uBAAuB,MAC5B,KAAK,WAAW,WAAA,GAChB,aAAa,KAAK,eAAe,GACjC,aAAa,KAAK,gBAAgB,GAClC,KAAK,iBAAA;AAAA,EACP;AAAA,EAEQ,mBAAyB;AAC/B,IAAI,KAAK,sBACP,SAAS,oBAAoB,WAAW,KAAK,iBAAiB,GAC9D,KAAK,oBAAoB;AAAA,EAE7B;AAAA,EAES,QAAQC,GAAqC;AACpD,IAAIA,EAAQ,IAAI,MAAM,MACpB,KAAK,mBAAmB,aAAa,iBAAiB,OAAO,KAAK,IAAI,CAAC,GACnE,KAAK,OAAM,KAAK,QAAA,IACXA,EAAQ,IAAI,MAAM,MAAM,WAAW,SAAA;AAAA,EAEhD;AAAA,EAEQ,kBAAkC;AAExC,WADa,KAAK,YAAY,cAA+B,kBAAkB,GAClE,mBAAmB,CAAC,KAAK;AAAA,EACxC;AAAA;AAAA;AAAA,EAIQ,uBAA6B;AACnC,UAAMC,IAAK,KAAK,gBAAA;AAChB,IAAIA,MACFA,EAAG,aAAa,iBAAiB,QAAQ,GACzCA,EAAG,aAAa,iBAAiB,OAAO,KAAK,IAAI,CAAC;AAAA,EAEtD;AAAA,EAEQ,UAAgB;AACtB,SAAK,cAAc,IAAI,YAAY,mBAAmB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GAGxF,sBAAsB,MAAM;AAC1B,MAAI,CAAC,KAAK,cAAc,CAAC,KAAK,eAC9B,KAAK,qBAAqBC,EAAW,KAAK,YAAY,KAAK,YAAY,MAAM,KAAK,iBAAiB;AAAA,IACrG,CAAC,GAGG,KAAK,aACP,KAAK,uBAAA,GACL,KAAK,uBAAuBC,EAAiB,MAAM,MAAM;AAAE,WAAK,OAAO;AAAA,IAAO,CAAC,IAK7E,KAAK,YAAY,UACnB,sBAAsB,MAAM;AAC1B,MAAI,KAAK,cACP,KAAK,WAAW,SAAS,KAAK,YAAY;AAAA,QACxC,UAAU,KAAK,WAAW,MAAM;AAAE,eAAK,OAAO;AAAA,QAAO,IAAI;AAAA,MAAA,CAC1D;AAAA,IAEL,CAAC,IACQ,KAAK,aAEd,KAAK,iBAAA,GACL,KAAK,oBAAoB,CAAC,MAAqB;AAAE,MAAI,EAAE,QAAQ,aAAU,KAAK,OAAO;AAAA,IAAO,GAC5F,SAAS,iBAAiB,WAAW,KAAK,iBAAiB;AAAA,EAE/D;AAAA,EAEQ,WAAiB;AACvB,SAAK,cAAc,IAAI,YAAY,oBAAoB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GACzF,KAAK,qBAAA,GACL,KAAK,qBAAqB,MAC1B,KAAK,uBAAA,GACL,KAAK,uBAAuB,MAC5B,KAAK,WAAW,WAAA,GAChB,KAAK,iBAAA;AAAA,EACP;AAAA,EAEQ,kBAAwB;AAC9B,QAAI,CAAC,KAAK,cAAc,CAAC,KAAK,WAAY;AAC1C,UAAMC,IAAc,KAAK,WAAW,sBAAA,GAC9BC,IAASC,EAAsB,KAAK,YAAY,KAAK,YAAY;AAAA,MACrE,WAAW,KAAK;AAAA,MAAW,QAAQ,KAAK;AAAA,MAAQ,MAAM;AAAA,MAAM,OAAO;AAAA,IAAA,CACpE;AAKD,QAJA,KAAK,cAAcD,EAAO,UAAU,MAAM,GAAG,EAAE,CAAC,GAG7B,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,UACtD;AACd,YAAME,IAAgBH,EAAY,OAAOA,EAAY,QAAQ;AAC7D,WAAK,eAAeG,IAAgBF,EAAO;AAAA,IAC7C,OAAO;AACL,YAAME,IAAgBH,EAAY,MAAMA,EAAY,SAAS;AAC7D,WAAK,eAAeG,IAAgBF,EAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EAEQ,sBAA4B;AAClC,IAAI,KAAK,YAAY,YACrB,KAAK,OAAO,CAAC,KAAK;AAAA,EACpB;AAAA,EAEQ,gBAAsB;AAC5B,IAAI,KAAK,YAAY,YACrB,aAAa,KAAK,gBAAgB,GAClC,KAAK,kBAAkB,OAAO,WAAW,MAAM;AAAE,WAAK,OAAO;AAAA,IAAM,GAAG,EAAE;AAAA,EAC1E;AAAA,EAEQ,iBAAuB;AAC7B,IAAI,KAAK,YAAY,YACrB,aAAa,KAAK,eAAe,GAEjC,KAAK,mBAAmB,OAAO,WAAW,MAAM;AAAE,WAAK,OAAO;AAAA,IAAO,GAAG,GAAG;AAAA,EAC7E;AAAA,EAES,SAAS;AAEhB,UAAMG,IADa,KAAK,gBAAgB,SAAS,KAAK,gBAAgB,WAElE,SAAS,KAAK,YAAY,wEAC1B,QAAQ,KAAK,YAAY;AAE7B,WAAOC;AAAA;AAAA;AAAA,iBAGM,KAAK,mBAAmB;AAAA,sBACnB,KAAK,aAAa;AAAA,sBAClB,KAAK,cAAc;AAAA,mBACtB,KAAK,aAAa;AAAA,oBACjB,KAAK,cAAc;AAAA;AAAA,4BAEX,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAMhC,KAAK,SAASC,CAAO;AAAA,oBACtB,KAAK,WAAW;AAAA,sBACd,KAAK,aAAa;AAAA,sBAClB,KAAK,cAAc;AAAA;AAAA,UAE/B,KAAK,QAAQD,kCAAqC,KAAK,WAAW,UAAUD,CAAU,aAAaE,CAAO;AAAA;AAAA;AAAA;AAAA,EAIlH;AACF;AA1Qab,EACK,SAAS,CAACc,GAAWC,GAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAuFnD;AAE2CC,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA1F/BlB,EA0FiC,WAAA,QAAA,CAAA;AAEhCiB,EAAA;AAAA,EAAXC,EAAA;AAAS,GA5FClB,EA4FC,WAAA,SAAA,CAAA;AACAiB,EAAA;AAAA,EAAXC,EAAA;AAAS,GA7FClB,EA6FC,WAAA,aAAA,CAAA;AACgBiB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA9FflB,EA8FiB,WAAA,UAAA,CAAA;AACCiB,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA/FhBlB,EA+FkB,WAAA,SAAA,CAAA;AACjBiB,EAAA;AAAA,EAAXC,EAAA;AAAS,GAhGClB,EAgGC,WAAA,WAAA,CAAA;AACiBiB,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAjGhBlB,EAiGkB,WAAA,YAAA,CAAA;AACAiB,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAlGhBlB,EAkGkB,WAAA,QAAA,CAAA;AACAiB,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAnGhBlB,EAmGkB,WAAA,WAAA,CAAA;AAEZiB,EAAA;AAAA,EAAhBE,EAAA;AAAM,GArGInB,EAqGM,WAAA,eAAA,CAAA;AACAiB,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAtGInB,EAsGM,WAAA,gBAAA,CAAA;AAEUiB,EAAA;AAAA,EAA1BG,EAAM,UAAU;AAAA,GAxGNpB,EAwGgB,WAAA,cAAA,CAAA;AACAiB,EAAA;AAAA,EAA1BG,EAAM,UAAU;AAAA,GAzGNpB,EAyGgB,WAAA,cAAA,CAAA;AAzGhBA,IAANiB,EAAA;AAAA,EADNI,EAAc,YAAY;AAAA,GACdrB,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-portal.d.ts","sourceRoot":"","sources":["../../../src/components/cg-portal/cg-portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,0BAEpB;IAEU,MAAM,EAAE,MAAM,GAAG,WAAW,CAAM;IACjB,QAAQ,UAAS;IAE9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAiC;IAEzC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUrD,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,QAAQ;IAoBP,MAAM;CAGhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"cg-portal.d.ts","sourceRoot":"","sources":["../../../src/components/cg-portal/cg-portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,0BAEpB;IAEU,MAAM,EAAE,MAAM,GAAG,WAAW,CAAM;IACjB,QAAQ,UAAS;IAE9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAiC;IAEzC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUrD,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,MAAM;IAwCd,OAAO,CAAC,QAAQ;IA2BP,MAAM;CAGhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
@@ -1,11 +1,11 @@
1
- import { css as d, LitElement as h, html as u } from "lit";
1
+ import { css as h, LitElement as d, html as u } from "lit";
2
2
  import { property as l, customElement as p } from "lit/decorators.js";
3
- var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, c = (e, t, n, r) => {
4
- for (var o = r > 1 ? void 0 : r ? _(t, n) : t, i = e.length - 1, a; i >= 0; i--)
5
- (a = e[i]) && (o = (r ? a(t, n, o) : a(o)) || o);
6
- return r && o && m(t, n, o), o;
3
+ var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (t, e, o, n) => {
4
+ for (var s = n > 1 ? void 0 : n ? _(e, o) : e, i = t.length - 1, c; i >= 0; i--)
5
+ (c = t[i]) && (s = (n ? c(e, o, s) : c(s)) || s);
6
+ return n && s && m(e, o, s), s;
7
7
  };
8
- let s = class extends h {
8
+ let r = class extends d {
9
9
  constructor() {
10
10
  super(...arguments), this.target = "", this.disabled = !1, this._container = null, this._moved = [], this._observer = null;
11
11
  }
@@ -15,45 +15,46 @@ let s = class extends h {
15
15
  disconnectedCallback() {
16
16
  super.disconnectedCallback(), this._unmount();
17
17
  }
18
- updated(e) {
19
- !e.has("target") && !e.has("disabled") || this._resolveTarget() === this._container || (this._unmount(), this._mount());
18
+ updated(t) {
19
+ !t.has("target") && !t.has("disabled") || this._resolveTarget() === this._container || (this._unmount(), this._mount());
20
20
  }
21
21
  _resolveTarget() {
22
22
  if (this.disabled) return this;
23
- const e = this.target;
24
- if (e instanceof HTMLElement) return e;
25
- if (typeof e == "string" && e) {
26
- const t = document.querySelector(e);
27
- if (t instanceof HTMLElement) return t;
23
+ const t = this.target;
24
+ if (t instanceof HTMLElement) return t;
25
+ if (typeof t == "string" && t) {
26
+ const e = document.querySelector(t);
27
+ if (e instanceof HTMLElement) return e;
28
28
  (typeof process > "u" || process.env.NODE_ENV !== "production") && console.warn(
29
- `[cg-portal] target selector "${e}" did not match any element. Falling back to document.body. (querySelector can't pierce shadow roots — pass an HTMLElement reference via the property if needed.)`
29
+ `[cg-portal] target selector "${t}" did not match any element. Falling back to document.body. (querySelector can't pierce shadow roots — pass an HTMLElement reference via the property if needed.)`
30
30
  );
31
31
  }
32
32
  return document.body;
33
33
  }
34
34
  _mount() {
35
- if (this.isConnected && (this._container = this._resolveTarget(), this._container !== this)) {
36
- this._moved = Array.from(this.childNodes);
37
- for (const e of this._moved)
38
- this._container.appendChild(e);
39
- this._observer = new MutationObserver((e) => {
40
- for (const t of e)
41
- t.addedNodes.forEach((n) => {
42
- this._container && n.parentNode === this && (this._container.appendChild(n), this._moved.push(n));
43
- });
44
- }), this._observer.observe(this, { childList: !0 }), this.dispatchEvent(new CustomEvent("cg-portal-mount", {
45
- bubbles: !0,
46
- composed: !0,
47
- detail: { container: this._container }
48
- }));
49
- }
35
+ if (this._observer || !this.isConnected || (this._container = this._resolveTarget(), this._container === this)) return;
36
+ this._moved = Array.from(this.childNodes);
37
+ const t = document.activeElement, e = t !== null && this._moved.some((o) => o === t || o.contains(t));
38
+ for (const o of this._moved)
39
+ this._container.appendChild(o);
40
+ e && t.focus(), this._observer = new MutationObserver((o) => {
41
+ for (const n of o)
42
+ n.addedNodes.forEach((s) => {
43
+ this._container && s.parentNode === this && (this._container.appendChild(s), this._moved.push(s));
44
+ });
45
+ }), this._observer.observe(this, { childList: !0 }), this.dispatchEvent(new CustomEvent("cg-portal-mount", {
46
+ bubbles: !0,
47
+ composed: !0,
48
+ detail: { container: this._container }
49
+ }));
50
50
  }
51
51
  _unmount() {
52
- const e = this._container && this._container !== this;
52
+ const t = this._container && this._container !== this;
53
53
  this._observer?.disconnect(), this._observer = null;
54
- for (const t of this._moved)
55
- t.parentNode && t.parentNode.removeChild(t), this.isConnected && this.appendChild(t);
56
- this._moved = [], this._container = null, e && this.dispatchEvent(new CustomEvent("cg-portal-unmount", {
54
+ const e = document.activeElement, o = e !== null && this._moved.some((n) => n === e || n.contains(e));
55
+ for (const n of this._moved)
56
+ n.parentNode === this._container && this.appendChild(n);
57
+ o && e.focus(), this._moved = [], this._container = null, t && this.dispatchEvent(new CustomEvent("cg-portal-unmount", {
57
58
  bubbles: !0,
58
59
  composed: !0
59
60
  }));
@@ -62,19 +63,19 @@ let s = class extends h {
62
63
  return u`<slot></slot>`;
63
64
  }
64
65
  };
65
- s.styles = d`
66
+ r.styles = h`
66
67
  :host { display: contents; }
67
68
  `;
68
- c([
69
+ a([
69
70
  l()
70
- ], s.prototype, "target", 2);
71
- c([
71
+ ], r.prototype, "target", 2);
72
+ a([
72
73
  l({ type: Boolean })
73
- ], s.prototype, "disabled", 2);
74
- s = c([
74
+ ], r.prototype, "disabled", 2);
75
+ r = a([
75
76
  p("cg-portal")
76
- ], s);
77
+ ], r);
77
78
  export {
78
- s as CgPortal
79
+ r as CgPortal
79
80
  };
80
81
  //# sourceMappingURL=cg-portal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cg-portal.js","sources":["../../../src/components/cg-portal/cg-portal.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n/**\n * @element cg-portal\n * Teleports its slotted children into a different DOM location (default:\n * `document.body`). Useful for popovers, modals, tooltips, or anything that\n * needs to escape a clipping ancestor / stacking context.\n *\n * **Style scope caveat:** teleported children leave the consumer's scoped-CSS\n * context. They inherit only global styles + any styles applied at the new\n * location. Wrap them in your own design-token surface (`cg-card`, etc.) if\n * you need consistent chrome.\n *\n * **Shadow-root target limitation:** when `target` is a CSS selector string,\n * resolution uses `document.querySelector` — which cannot pierce shadow\n * roots. To target an element inside a shadow root, pass it directly via the\n * property: `el.target = shadowRootEl.querySelector('#mount')`.\n *\n * **Missing-target behavior:** if a string `target` doesn't match any element\n * at mount time, the component falls back to `document.body` and emits a\n * `console.warn` in development (Vite/Astro `import.meta.env.DEV`). It does\n * NOT retry. If you need late-resolving targets, render a `<cg-portal>`\n * conditionally once the target element is mounted.\n *\n * **SSR-safe:** all DOM access happens inside `connectedCallback` and\n * `updated()`. No browser globals are touched at module load or in field\n * initializers, so server rendering won't crash on it.\n *\n * @example\n * ```html\n * <!-- Default: teleports to document.body -->\n * <cg-portal>\n * <my-modal></my-modal>\n * </cg-portal>\n *\n * <!-- Custom target by selector -->\n * <cg-portal target=\"#modal-root\">\n * <div>Teleported content</div>\n * </cg-portal>\n *\n * <!-- Conditionally render in place (SSR / no-portal mode) -->\n * <cg-portal disabled>\n * <my-modal></my-modal>\n * </cg-portal>\n * ```\n *\n * @slot - Children to be moved into the target element.\n *\n * @fires {CustomEvent<{ container: HTMLElement }>} cg-portal-mount - Children\n * have been teleported. `detail.container` is the destination element.\n * @fires {CustomEvent} cg-portal-unmount - Children have been returned to the\n * host (target change, disabled toggle, or component disconnect).\n */\n@customElement('cg-portal')\nexport class CgPortal extends LitElement {\n static override styles = css`\n :host { display: contents; }\n `;\n\n @property() target: string | HTMLElement = '';\n @property({ type: Boolean }) disabled = false;\n\n private _container: HTMLElement | null = null;\n private _moved: Node[] = [];\n private _observer: MutationObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Wait a microtask so that slotted light-DOM children are parsed.\n queueMicrotask(() => this._mount());\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._unmount();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (!changed.has('target') && !changed.has('disabled')) return;\n // Avoid the unmount/remount cycle when the resolved target hasn't\n // actually changed — same selector string, same disabled flag, etc.\n const next = this._resolveTarget();\n if (next === this._container) return;\n this._unmount();\n this._mount();\n }\n\n private _resolveTarget(): HTMLElement {\n if (this.disabled) return this;\n const t = this.target;\n if (t instanceof HTMLElement) return t;\n if (typeof t === 'string' && t) {\n const el = document.querySelector(t);\n if (el instanceof HTMLElement) return el;\n // Selector didn't match — fall back to document.body and warn in dev.\n // Note: querySelector can't pierce shadow roots; pass an element via the\n // property if your target lives inside one.\n if (typeof process === 'undefined' || process.env.NODE_ENV !== 'production') {\n console.warn(\n `[cg-portal] target selector \"${t}\" did not match any element. ` +\n `Falling back to document.body. (querySelector can't pierce shadow ` +\n `roots — pass an HTMLElement reference via the property if needed.)`\n );\n }\n }\n return document.body;\n }\n\n private _mount(): void {\n if (!this.isConnected) return;\n this._container = this._resolveTarget();\n if (this._container === this) return;\n\n this._moved = Array.from(this.childNodes);\n for (const node of this._moved) {\n this._container.appendChild(node);\n }\n\n // Watch for new children added to this host and forward them.\n this._observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n m.addedNodes.forEach((node) => {\n if (this._container && node.parentNode === this) {\n this._container.appendChild(node);\n this._moved.push(node);\n }\n });\n }\n });\n this._observer.observe(this, { childList: true });\n\n this.dispatchEvent(new CustomEvent('cg-portal-mount', {\n bubbles: true,\n composed: true,\n detail: { container: this._container },\n }));\n }\n\n private _unmount(): void {\n const hadContainer = this._container && this._container !== this;\n this._observer?.disconnect();\n this._observer = null;\n // Return moved children back to host so they are not lost on re-mount,\n // target change, or disable toggle.\n for (const node of this._moved) {\n if (node.parentNode) node.parentNode.removeChild(node);\n if (this.isConnected) this.appendChild(node);\n }\n this._moved = [];\n this._container = null;\n if (hadContainer) {\n this.dispatchEvent(new CustomEvent('cg-portal-unmount', {\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-portal': CgPortal;\n }\n}\n"],"names":["CgPortal","LitElement","changed","t","el","node","mutations","m","hadContainer","html","css","__decorateClass","property","customElement"],"mappings":";;;;;;;AAuDO,IAAMA,IAAN,cAAuBC,EAAW;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA,GAKO,KAAA,SAA+B,IACd,KAAA,WAAW,IAExC,KAAQ,aAAiC,MACzC,KAAQ,SAAiB,CAAA,GACzB,KAAQ,YAAqC;AAAA,EAAA;AAAA,EAEpC,oBAA0B;AACjC,UAAM,kBAAA,GAEN,eAAe,MAAM,KAAK,QAAQ;AAAA,EACpC;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,SAAA;AAAA,EACP;AAAA,EAES,QAAQC,GAAqC;AAKpD,IAJI,CAACA,EAAQ,IAAI,QAAQ,KAAK,CAACA,EAAQ,IAAI,UAAU,KAGxC,KAAK,eAAA,MACL,KAAK,eAClB,KAAK,SAAA,GACL,KAAK,OAAA;AAAA,EACP;AAAA,EAEQ,iBAA8B;AACpC,QAAI,KAAK,SAAU,QAAO;AAC1B,UAAMC,IAAI,KAAK;AACf,QAAIA,aAAa,YAAa,QAAOA;AACrC,QAAI,OAAOA,KAAM,YAAYA,GAAG;AAC9B,YAAMC,IAAK,SAAS,cAAcD,CAAC;AACnC,UAAIC,aAAc,YAAa,QAAOA;AAItC,OAAI,OAAO,UAAY,OAAe,QAAQ,IAAI,aAAa,iBAC7D,QAAQ;AAAA,QACN,gCAAgCD,CAAC;AAAA,MAAA;AAAA,IAKvC;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEQ,SAAe;AACrB,QAAK,KAAK,gBACV,KAAK,aAAa,KAAK,eAAA,GACnB,KAAK,eAAe,OAExB;AAAA,WAAK,SAAS,MAAM,KAAK,KAAK,UAAU;AACxC,iBAAWE,KAAQ,KAAK;AACtB,aAAK,WAAW,YAAYA,CAAI;AAIlC,WAAK,YAAY,IAAI,iBAAiB,CAACC,MAAc;AACnD,mBAAWC,KAAKD;AACd,UAAAC,EAAE,WAAW,QAAQ,CAACF,MAAS;AAC7B,YAAI,KAAK,cAAcA,EAAK,eAAe,SACzC,KAAK,WAAW,YAAYA,CAAI,GAChC,KAAK,OAAO,KAAKA,CAAI;AAAA,UAEzB,CAAC;AAAA,MAEL,CAAC,GACD,KAAK,UAAU,QAAQ,MAAM,EAAE,WAAW,IAAM,GAEhD,KAAK,cAAc,IAAI,YAAY,mBAAmB;AAAA,QACpD,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,EAAE,WAAW,KAAK,WAAA;AAAA,MAAW,CACtC,CAAC;AAAA;AAAA,EACJ;AAAA,EAEQ,WAAiB;AACvB,UAAMG,IAAe,KAAK,cAAc,KAAK,eAAe;AAC5D,SAAK,WAAW,WAAA,GAChB,KAAK,YAAY;AAGjB,eAAWH,KAAQ,KAAK;AACtB,MAAIA,EAAK,cAAYA,EAAK,WAAW,YAAYA,CAAI,GACjD,KAAK,eAAa,KAAK,YAAYA,CAAI;AAE7C,SAAK,SAAS,CAAA,GACd,KAAK,aAAa,MACdG,KACF,KAAK,cAAc,IAAI,YAAY,qBAAqB;AAAA,MACtD,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,CAAC;AAAA,EAEN;AAAA,EAES,SAAS;AAChB,WAAOC;AAAA,EACT;AACF;AA3GaT,EACK,SAASU;AAAA;AAAA;AAIbC,EAAA;AAAA,EAAXC,EAAA;AAAS,GALCZ,EAKC,WAAA,UAAA,CAAA;AACiBW,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GANhBZ,EAMkB,WAAA,YAAA,CAAA;AANlBA,IAANW,EAAA;AAAA,EADNE,EAAc,WAAW;AAAA,GACbb,CAAA;"}
1
+ {"version":3,"file":"cg-portal.js","sources":["../../../src/components/cg-portal/cg-portal.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n/**\n * @element cg-portal\n * Teleports its slotted children into a different DOM location (default:\n * `document.body`). Useful for popovers, modals, tooltips, or anything that\n * needs to escape a clipping ancestor / stacking context.\n *\n * **Style scope caveat:** teleported children leave the consumer's scoped-CSS\n * context. They inherit only global styles + any styles applied at the new\n * location. Wrap them in your own design-token surface (`cg-card`, etc.) if\n * you need consistent chrome.\n *\n * **Shadow-root target limitation:** when `target` is a CSS selector string,\n * resolution uses `document.querySelector` — which cannot pierce shadow\n * roots. To target an element inside a shadow root, pass it directly via the\n * property: `el.target = shadowRootEl.querySelector('#mount')`.\n *\n * **Missing-target behavior:** if a string `target` doesn't match any element\n * at mount time, the component falls back to `document.body` and emits a\n * `console.warn` in development (Vite/Astro `import.meta.env.DEV`). It does\n * NOT retry. If you need late-resolving targets, render a `<cg-portal>`\n * conditionally once the target element is mounted.\n *\n * **SSR-safe:** all DOM access happens inside `connectedCallback` and\n * `updated()`. No browser globals are touched at module load or in field\n * initializers, so server rendering won't crash on it.\n *\n * @example\n * ```html\n * <!-- Default: teleports to document.body -->\n * <cg-portal>\n * <my-modal></my-modal>\n * </cg-portal>\n *\n * <!-- Custom target by selector -->\n * <cg-portal target=\"#modal-root\">\n * <div>Teleported content</div>\n * </cg-portal>\n *\n * <!-- Conditionally render in place (SSR / no-portal mode) -->\n * <cg-portal disabled>\n * <my-modal></my-modal>\n * </cg-portal>\n * ```\n *\n * @slot - Children to be moved into the target element.\n *\n * @fires {CustomEvent<{ container: HTMLElement }>} cg-portal-mount - Children\n * have been teleported. `detail.container` is the destination element.\n * @fires {CustomEvent} cg-portal-unmount - Children have been returned to the\n * host (target change, disabled toggle, or component disconnect).\n */\n@customElement('cg-portal')\nexport class CgPortal extends LitElement {\n static override styles = css`\n :host { display: contents; }\n `;\n\n @property() target: string | HTMLElement = '';\n @property({ type: Boolean }) disabled = false;\n\n private _container: HTMLElement | null = null;\n private _moved: Node[] = [];\n private _observer: MutationObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Wait a microtask so that slotted light-DOM children are parsed.\n queueMicrotask(() => this._mount());\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._unmount();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (!changed.has('target') && !changed.has('disabled')) return;\n // Avoid the unmount/remount cycle when the resolved target hasn't\n // actually changed — same selector string, same disabled flag, etc.\n const next = this._resolveTarget();\n if (next === this._container) return;\n this._unmount();\n this._mount();\n }\n\n private _resolveTarget(): HTMLElement {\n if (this.disabled) return this;\n const t = this.target;\n if (t instanceof HTMLElement) return t;\n if (typeof t === 'string' && t) {\n const el = document.querySelector(t);\n if (el instanceof HTMLElement) return el;\n // Selector didn't match — fall back to document.body and warn in dev.\n // Note: querySelector can't pierce shadow roots; pass an element via the\n // property if your target lives inside one.\n if (typeof process === 'undefined' || process.env.NODE_ENV !== 'production') {\n console.warn(\n `[cg-portal] target selector \"${t}\" did not match any element. ` +\n `Falling back to document.body. (querySelector can't pierce shadow ` +\n `roots — pass an HTMLElement reference via the property if needed.)`\n );\n }\n }\n return document.body;\n }\n\n private _mount(): void {\n // Re-entrancy guard: _observer is non-null iff we are currently mounted\n // to an external container (the disabled path never sets it, and\n // _unmount() nulls it). Prevents the queued connectedCallback mount from\n // double-firing after the first updated()-driven mount.\n if (this._observer) return;\n if (!this.isConnected) return;\n this._container = this._resolveTarget();\n if (this._container === this) return;\n\n this._moved = Array.from(this.childNodes);\n const active = document.activeElement as HTMLElement | null;\n const hadFocus =\n active !== null &&\n this._moved.some((n) => n === active || n.contains(active));\n for (const node of this._moved) {\n this._container.appendChild(node);\n }\n if (hadFocus) active!.focus();\n\n // Watch for new children added to this host and forward them.\n this._observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n m.addedNodes.forEach((node) => {\n if (this._container && node.parentNode === this) {\n this._container.appendChild(node);\n this._moved.push(node);\n }\n });\n }\n });\n this._observer.observe(this, { childList: true });\n\n this.dispatchEvent(new CustomEvent('cg-portal-mount', {\n bubbles: true,\n composed: true,\n detail: { container: this._container },\n }));\n }\n\n private _unmount(): void {\n const hadContainer = this._container && this._container !== this;\n this._observer?.disconnect();\n this._observer = null;\n // Return moved children back to host so they are not lost on re-mount,\n // target change, or disable toggle. appendChild atomically detaches from\n // the container and works even while the host is disconnected, so\n // children survive framework reparenting (disconnect + reconnect).\n // Nodes the consumer already removed or reparented are left alone.\n const active = document.activeElement as HTMLElement | null;\n const hadFocus =\n active !== null &&\n this._moved.some((n) => n === active || n.contains(active));\n for (const node of this._moved) {\n if (node.parentNode === this._container) this.appendChild(node);\n }\n if (hadFocus) active!.focus();\n this._moved = [];\n this._container = null;\n if (hadContainer) {\n this.dispatchEvent(new CustomEvent('cg-portal-unmount', {\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-portal': CgPortal;\n }\n}\n"],"names":["CgPortal","LitElement","changed","el","active","hadFocus","n","node","mutations","m","hadContainer","html","css","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-progress-bar/cg-progress-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BA+JnB;IAEH,2BAA2B;IACC,KAAK,SAAK;IAEtC,+BAA+B;IACH,KAAK,SAAM;IAEvC,uCAAuC;IACX,WAAW,SAAM;IAE7C,4BAA4B;IACC,SAAS,UAAS;IAE/C,iFAAiF;IACrD,WAAW,SAAM;IAE7C,gEAAgE;IACpC,MAAM,SAAK;IAEvC,sCAAsC;IACV,QAAQ,SAAM;IAE1C,sCAAsC;IACV,QAAQ,SAAM;IAEC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAa;IACjE,aAAa,UAAS;IACvB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC/B,OAAO,UAAS;IAChB,QAAQ,UAAS;IAE7D,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAGxB;IAEQ,MAAM;CA0ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"cg-progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-progress-bar/cg-progress-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BA8JnB;IAEH,2BAA2B;IACC,KAAK,SAAK;IAEtC,+BAA+B;IACH,KAAK,SAAM;IAEvC,uCAAuC;IACX,WAAW,SAAM;IAE7C,4BAA4B;IACC,SAAS,UAAS;IAE/C,iFAAiF;IACrD,WAAW,SAAM;IAE7C,gEAAgE;IACpC,MAAM,SAAK;IAEvC,sCAAsC;IACV,QAAQ,SAAM;IAE1C,sCAAsC;IACV,QAAQ,SAAM;IAEC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAa;IACjE,aAAa,UAAS;IACvB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC/B,OAAO,UAAS;IAChB,QAAQ,UAAS;IAE7D,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAGxB;IAEQ,MAAM;CA2ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
@@ -1,12 +1,12 @@
1
- import { css as h, LitElement as g, nothing as r, html as n } from "lit";
2
- import { property as a, customElement as m } from "lit/decorators.js";
3
- import { h as u, r as f } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var v = Object.defineProperty, b = Object.getOwnPropertyDescriptor, e = (l, s, o, c) => {
5
- for (var i = c > 1 ? void 0 : c ? b(s, o) : s, p = l.length - 1, d; p >= 0; p--)
6
- (d = l[p]) && (i = (c ? d(s, o, i) : d(i)) || i);
7
- return c && i && v(s, o, i), i;
1
+ import { css as g, LitElement as u, nothing as r, html as s } from "lit";
2
+ import { property as a, customElement as h } from "lit/decorators.js";
3
+ import { h as f, r as m } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var v = Object.defineProperty, b = Object.getOwnPropertyDescriptor, e = (l, n, o, c) => {
5
+ for (var i = c > 1 ? void 0 : c ? b(n, o) : n, p = l.length - 1, d; p >= 0; p--)
6
+ (d = l[p]) && (i = (c ? d(n, o, i) : d(i)) || i);
7
+ return c && i && v(n, o, i), i;
8
8
  };
9
- let t = class extends g {
9
+ let t = class extends u {
10
10
  constructor() {
11
11
  super(...arguments), this.value = 0, this.label = "", this.description = "", this.showValue = !1, this.formatValue = "", this.buffer = 0, this.minLabel = "", this.maxLabel = "", this.variant = "default", this.indeterminate = !1, this.size = "md", this.striped = !1, this.animated = !1;
12
12
  }
@@ -20,15 +20,15 @@ let t = class extends g {
20
20
  return this.formatValue ? this.formatValue : `${this._clampedValue}%`;
21
21
  }
22
22
  render() {
23
- const l = this.label || this.description || (this.showValue || this.formatValue) && !this.indeterminate, s = this.minLabel || this.maxLabel, o = this.buffer > 0 && !this.indeterminate;
24
- return n`
25
- ${l ? n`
23
+ const l = this.label || this.description || (this.showValue || this.formatValue) && !this.indeterminate, n = this.minLabel || this.maxLabel, o = this.buffer > 0 && !this.indeterminate;
24
+ return s`
25
+ ${l ? s`
26
26
  <div class="header">
27
27
  <div class="header-left">
28
- ${this.label ? n`<span class="label">${this.label}</span>` : r}
29
- ${this.description ? n`<span class="description">${this.description}</span>` : r}
28
+ ${this.label ? s`<span class="label">${this.label}</span>` : r}
29
+ ${this.description ? s`<span class="description">${this.description}</span>` : r}
30
30
  </div>
31
- ${(this.showValue || this.formatValue) && !this.indeterminate ? n`
31
+ ${(this.showValue || this.formatValue) && !this.indeterminate ? s`
32
32
  <span class="value-text">${this._displayValue}</span>
33
33
  ` : r}
34
34
  </div>
@@ -40,9 +40,10 @@ let t = class extends g {
40
40
  aria-valuemin="0"
41
41
  aria-valuemax="100"
42
42
  aria-label="${this.label || "Progress"}"
43
+ aria-valuetext=${this.formatValue && !this.indeterminate ? this.formatValue : r}
43
44
  aria-busy="${this.indeterminate}"
44
45
  >
45
- ${o ? n`
46
+ ${o ? s`
46
47
  <div class="buffer" style="width: ${this._clampedBuffer}%"></div>
47
48
  ` : r}
48
49
  <div
@@ -50,7 +51,7 @@ let t = class extends g {
50
51
  style="${this.indeterminate ? "" : `width: ${this._clampedValue}%`}"
51
52
  ></div>
52
53
  </div>
53
- ${s ? n`
54
+ ${n ? s`
54
55
  <div class="range-labels">
55
56
  <span>${this.minLabel}</span>
56
57
  <span>${this.maxLabel}</span>
@@ -59,7 +60,7 @@ let t = class extends g {
59
60
  `;
60
61
  }
61
62
  };
62
- t.styles = [u, f, h`
63
+ t.styles = [f, m, g`
63
64
  :host {
64
65
  width: 100%;
65
66
  }
@@ -120,9 +121,12 @@ t.styles = [u, f, h`
120
121
  height: 100%;
121
122
  border-radius: var(--cg-component-progress-radius);
122
123
  background: var(--cg-color-loading-spinner-primary);
123
- opacity: 0.25;
124
+ opacity: var(--cg-opacity-25);
124
125
  transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-default);
125
126
  }
127
+ :host([variant="success"]) .buffer { background: var(--cg-color-status-success-text-default); }
128
+ :host([variant="warning"]) .buffer { background: var(--cg-color-status-warning-text-default); }
129
+ :host([variant="danger"]) .buffer { background: var(--cg-color-status-error-text-default); }
126
130
 
127
131
  /* ── Fill bar ── */
128
132
  .fill {
@@ -162,7 +166,7 @@ t.styles = [u, f, h`
162
166
  transparent 75%,
163
167
  transparent
164
168
  );
165
- background-size: 20px 20px;
169
+ background-size: var(--cg-spacing-20) var(--cg-spacing-20);
166
170
  }
167
171
 
168
172
  /* ── Animated stripes ── */
@@ -172,7 +176,7 @@ t.styles = [u, f, h`
172
176
 
173
177
  @keyframes stripe-move {
174
178
  from { background-position: 0 0; }
175
- to { background-position: 20px 0; }
179
+ to { background-position: var(--cg-spacing-20) 0; }
176
180
  }
177
181
 
178
182
  /* ── Indeterminate ── */
@@ -204,10 +208,6 @@ t.styles = [u, f, h`
204
208
 
205
209
  /* Reduced motion */
206
210
  @media (prefers-reduced-motion: reduce) {
207
- .fill::before {
208
- animation: none !important;
209
- background: none !important;
210
- }
211
211
  :host([animated]) .fill::after {
212
212
  animation: none !important;
213
213
  }
@@ -259,7 +259,7 @@ e([
259
259
  a({ type: Boolean, reflect: !0 })
260
260
  ], t.prototype, "animated", 2);
261
261
  t = e([
262
- m("cg-progress-bar")
262
+ h("cg-progress-bar")
263
263
  ], t);
264
264
  export {
265
265
  t as CgProgressBar