@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,20 +1,20 @@
1
- import { css as n, LitElement as g, html as p } from "lit";
2
- import { property as s, customElement as u } from "lit/decorators.js";
3
- import { a as h, r as v } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, e = (c, o, d, a) => {
5
- for (var r = a > 1 ? void 0 : a ? m(o, d) : o, i = c.length - 1, l; i >= 0; i--)
6
- (l = c[i]) && (r = (a ? l(o, d, r) : l(r)) || r);
7
- return a && r && f(o, d, r), r;
1
+ import { css as c, LitElement as p, nothing as u, html as h } from "lit";
2
+ import { property as r, customElement as g } from "lit/decorators.js";
3
+ import { a as m, r as v } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var f = Object.defineProperty, b = Object.getOwnPropertyDescriptor, o = (l, a, s, i) => {
5
+ for (var e = i > 1 ? void 0 : i ? b(a, s) : a, n = l.length - 1, d; n >= 0; n--)
6
+ (d = l[n]) && (e = (i ? d(a, s, e) : d(e)) || e);
7
+ return i && e && f(a, s, e), e;
8
8
  };
9
- let t = class extends g {
9
+ let t = class extends p {
10
10
  constructor() {
11
11
  super(...arguments), this.direction = "row", this.gap = "sm", this.align = "start", this.attached = !1;
12
12
  }
13
13
  render() {
14
- return p`<div role="group"><slot></slot></div>`;
14
+ return h`<div role="group" aria-label=${this.label ? this.label : u}><slot></slot></div>`;
15
15
  }
16
16
  };
17
- t.styles = [h, v, n`
17
+ t.styles = [m, v, c`
18
18
  div[role="group"] {
19
19
  display: flex;
20
20
  }
@@ -35,53 +35,67 @@ t.styles = [h, v, n`
35
35
  :host([align="end"]) div[role="group"] { justify-content: flex-end; }
36
36
  :host([align="stretch"]) ::slotted(*) { flex: 1; }
37
37
 
38
- /* Attached mode — buttons share borders */
39
- :host([attached]) {
38
+ /* Attached mode — buttons share borders. The gap must be zeroed on the
39
+ flex CONTAINER (the div), not the host (not a flex parent), or the
40
+ gap-attribute rule above keeps an 8px gap and buttons aren't attached. */
41
+ :host([attached]) div[role="group"] {
40
42
  gap: 0;
41
43
  }
42
44
  :host([attached]) ::slotted(*) {
43
45
  border-radius: 0;
44
- margin-left: -1px;
46
+ margin-left: calc(-1 * var(--cg-border-width-50));
47
+ }
48
+ /* Lift the hovered/focused button so its border + focus ring aren't
49
+ clipped under the next sibling (the -1px overlap stacks later siblings
50
+ on top). position:relative is required for z-index on flex children. */
51
+ :host([attached]) ::slotted(*:hover),
52
+ :host([attached]) ::slotted(*:focus),
53
+ :host([attached]) ::slotted(*:focus-within) {
54
+ position: relative;
55
+ z-index: 1;
45
56
  }
46
57
  :host([attached]) ::slotted(*:first-child) {
47
58
  margin-left: 0;
48
- border-radius: var(--cg-border-radius-150) 0 0 var(--cg-border-radius-150);
59
+ border-radius: var(--cg-component-button-radius-md) 0 0 var(--cg-component-button-radius-md);
49
60
  }
50
61
  :host([attached]) ::slotted(*:last-child) {
51
- border-radius: 0 var(--cg-border-radius-150) var(--cg-border-radius-150) 0;
62
+ border-radius: 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0;
52
63
  }
53
64
  :host([attached]) ::slotted(*:only-child) {
54
- border-radius: var(--cg-border-radius-150);
65
+ border-radius: var(--cg-component-button-radius-md);
55
66
  margin-left: 0;
56
67
  }
57
68
 
58
69
  /* Attached vertical */
59
70
  :host([attached][direction="column"]) ::slotted(*) {
60
71
  margin-left: 0;
61
- margin-top: -1px;
72
+ margin-top: calc(-1 * var(--cg-border-width-50));
62
73
  }
63
74
  :host([attached][direction="column"]) ::slotted(*:first-child) {
64
75
  margin-top: 0;
65
- border-radius: var(--cg-border-radius-150) var(--cg-border-radius-150) 0 0;
76
+ border-radius: var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0 0;
66
77
  }
67
78
  :host([attached][direction="column"]) ::slotted(*:last-child) {
68
- border-radius: 0 0 var(--cg-border-radius-150) var(--cg-border-radius-150);
79
+ border-radius: 0 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md);
69
80
  }
70
81
  `];
71
- e([
72
- s({ reflect: !0 })
82
+ o([
83
+ r({ reflect: !0 })
73
84
  ], t.prototype, "direction", 2);
74
- e([
75
- s({ reflect: !0 })
85
+ o([
86
+ r({ reflect: !0 })
76
87
  ], t.prototype, "gap", 2);
77
- e([
78
- s({ reflect: !0 })
88
+ o([
89
+ r({ reflect: !0 })
79
90
  ], t.prototype, "align", 2);
80
- e([
81
- s({ type: Boolean, reflect: !0 })
91
+ o([
92
+ r({ type: Boolean, reflect: !0 })
82
93
  ], t.prototype, "attached", 2);
83
- t = e([
84
- u("cg-button-group")
94
+ o([
95
+ r()
96
+ ], t.prototype, "label", 2);
97
+ t = o([
98
+ g("cg-button-group")
85
99
  ], t);
86
100
  export {
87
101
  t as CgButtonGroup
@@ -1 +1 @@
1
- {"version":3,"file":"cg-button-group.js","sources":["../../../src/components/cg-button-group/cg-button-group.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-button-group> — Groups buttons with optional attached mode.\n *\n * Features:\n * - Row or column direction\n * - Attached mode (no gap, shared border radius)\n * - Gap size control\n * - Alignment (start/center/end/stretch)\n * - ARIA group role\n */\n@customElement('cg-button-group')\nexport class CgButtonGroup extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n div[role=\"group\"] {\n display: flex;\n }\n\n /* Direction */\n :host([direction=\"row\"]) div[role=\"group\"] { flex-direction: row; }\n :host([direction=\"column\"]) div[role=\"group\"] { flex-direction: column; width: 100%; }\n\n /* Gap */\n :host([gap=\"none\"]) div[role=\"group\"] { gap: 0; }\n :host([gap=\"xs\"]) div[role=\"group\"] { gap: var(--cg-spacing-4); }\n :host([gap=\"sm\"]) div[role=\"group\"] { gap: var(--cg-spacing-8); }\n :host([gap=\"md\"]) div[role=\"group\"] { gap: var(--cg-spacing-12); }\n\n /* Alignment */\n :host([align=\"start\"]) div[role=\"group\"] { justify-content: flex-start; }\n :host([align=\"center\"]) div[role=\"group\"] { justify-content: center; }\n :host([align=\"end\"]) div[role=\"group\"] { justify-content: flex-end; }\n :host([align=\"stretch\"]) ::slotted(*) { flex: 1; }\n\n /* Attached mode — buttons share borders */\n :host([attached]) {\n gap: 0;\n }\n :host([attached]) ::slotted(*) {\n border-radius: 0;\n margin-left: -1px;\n }\n :host([attached]) ::slotted(*:first-child) {\n margin-left: 0;\n border-radius: var(--cg-border-radius-150) 0 0 var(--cg-border-radius-150);\n }\n :host([attached]) ::slotted(*:last-child) {\n border-radius: 0 var(--cg-border-radius-150) var(--cg-border-radius-150) 0;\n }\n :host([attached]) ::slotted(*:only-child) {\n border-radius: var(--cg-border-radius-150);\n margin-left: 0;\n }\n\n /* Attached vertical */\n :host([attached][direction=\"column\"]) ::slotted(*) {\n margin-left: 0;\n margin-top: -1px;\n }\n :host([attached][direction=\"column\"]) ::slotted(*:first-child) {\n margin-top: 0;\n border-radius: var(--cg-border-radius-150) var(--cg-border-radius-150) 0 0;\n }\n :host([attached][direction=\"column\"]) ::slotted(*:last-child) {\n border-radius: 0 0 var(--cg-border-radius-150) var(--cg-border-radius-150);\n }\n `];\n\n @property({ reflect: true }) direction: 'row' | 'column' = 'row';\n @property({ reflect: true }) gap: 'none' | 'xs' | 'sm' | 'md' = 'sm';\n @property({ reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' = 'start';\n @property({ type: Boolean, reflect: true }) attached = false;\n\n override render() {\n return html`<div role=\"group\"><slot></slot></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-button-group': CgButtonGroup; }\n}\n"],"names":["CgButtonGroup","LitElement","html","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;AAeO,IAAMA,IAAN,cAA4BC,EAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GAwDwB,KAAA,YAA8B,OAC9B,KAAA,MAAmC,MACnC,KAAA,QAAgD,SACjC,KAAA,WAAW;AAAA,EAAA;AAAA,EAE9C,SAAS;AAChB,WAAOC;AAAA,EACT;AACF;AAhEaF,EACK,SAAS,CAACG,GAAUC,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,GAqDlD;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAxDhBP,EAwDkB,WAAA,aAAA,CAAA;AACAM,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAzDhBP,EAyDkB,WAAA,OAAA,CAAA;AACAM,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GA1DhBP,EA0DkB,WAAA,SAAA,CAAA;AACeM,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA3D/BP,EA2DiC,WAAA,YAAA,CAAA;AA3DjCA,IAANM,EAAA;AAAA,EADNE,EAAc,iBAAiB;AAAA,GACnBR,CAAA;"}
1
+ {"version":3,"file":"cg-button-group.js","sources":["../../../src/components/cg-button-group/cg-button-group.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-button-group> — Groups buttons with optional attached mode.\n *\n * Features:\n * - Row or column direction\n * - Attached mode (no gap, shared border radius)\n * - Gap size control\n * - Alignment (start/center/end/stretch)\n * - ARIA group role\n */\n@customElement('cg-button-group')\nexport class CgButtonGroup extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n div[role=\"group\"] {\n display: flex;\n }\n\n /* Direction */\n :host([direction=\"row\"]) div[role=\"group\"] { flex-direction: row; }\n :host([direction=\"column\"]) div[role=\"group\"] { flex-direction: column; width: 100%; }\n\n /* Gap */\n :host([gap=\"none\"]) div[role=\"group\"] { gap: 0; }\n :host([gap=\"xs\"]) div[role=\"group\"] { gap: var(--cg-spacing-4); }\n :host([gap=\"sm\"]) div[role=\"group\"] { gap: var(--cg-spacing-8); }\n :host([gap=\"md\"]) div[role=\"group\"] { gap: var(--cg-spacing-12); }\n\n /* Alignment */\n :host([align=\"start\"]) div[role=\"group\"] { justify-content: flex-start; }\n :host([align=\"center\"]) div[role=\"group\"] { justify-content: center; }\n :host([align=\"end\"]) div[role=\"group\"] { justify-content: flex-end; }\n :host([align=\"stretch\"]) ::slotted(*) { flex: 1; }\n\n /* Attached mode — buttons share borders. The gap must be zeroed on the\n flex CONTAINER (the div), not the host (not a flex parent), or the\n gap-attribute rule above keeps an 8px gap and buttons aren't attached. */\n :host([attached]) div[role=\"group\"] {\n gap: 0;\n }\n :host([attached]) ::slotted(*) {\n border-radius: 0;\n margin-left: calc(-1 * var(--cg-border-width-50));\n }\n /* Lift the hovered/focused button so its border + focus ring aren't\n clipped under the next sibling (the -1px overlap stacks later siblings\n on top). position:relative is required for z-index on flex children. */\n :host([attached]) ::slotted(*:hover),\n :host([attached]) ::slotted(*:focus),\n :host([attached]) ::slotted(*:focus-within) {\n position: relative;\n z-index: 1;\n }\n :host([attached]) ::slotted(*:first-child) {\n margin-left: 0;\n border-radius: var(--cg-component-button-radius-md) 0 0 var(--cg-component-button-radius-md);\n }\n :host([attached]) ::slotted(*:last-child) {\n border-radius: 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0;\n }\n :host([attached]) ::slotted(*:only-child) {\n border-radius: var(--cg-component-button-radius-md);\n margin-left: 0;\n }\n\n /* Attached vertical */\n :host([attached][direction=\"column\"]) ::slotted(*) {\n margin-left: 0;\n margin-top: calc(-1 * var(--cg-border-width-50));\n }\n :host([attached][direction=\"column\"]) ::slotted(*:first-child) {\n margin-top: 0;\n border-radius: var(--cg-component-button-radius-md) var(--cg-component-button-radius-md) 0 0;\n }\n :host([attached][direction=\"column\"]) ::slotted(*:last-child) {\n border-radius: 0 0 var(--cg-component-button-radius-md) var(--cg-component-button-radius-md);\n }\n `];\n\n @property({ reflect: true }) direction: 'row' | 'column' = 'row';\n @property({ reflect: true }) gap: 'none' | 'xs' | 'sm' | 'md' = 'sm';\n @property({ reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' = 'start';\n @property({ type: Boolean, reflect: true }) attached = false;\n /** Accessible name for the group landmark (e.g. \"Text alignment\"). */\n @property() label?: string;\n\n override render() {\n return html`<div role=\"group\" aria-label=${this.label ? this.label : nothing}><slot></slot></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-button-group': CgButtonGroup; }\n}\n"],"names":["CgButtonGroup","LitElement","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;AAeO,IAAMA,IAAN,cAA4BC,EAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GAmEwB,KAAA,YAA8B,OAC9B,KAAA,MAAmC,MACnC,KAAA,QAAgD,SACjC,KAAA,WAAW;AAAA,EAAA;AAAA,EAI9C,SAAS;AAChB,WAAOC,iCAAoC,KAAK,QAAQ,KAAK,QAAQC,CAAO;AAAA,EAC9E;AACF;AA7EaH,EACK,SAAS,CAACI,GAAUC,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,GAgElD;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAnEhBR,EAmEkB,WAAA,aAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GApEhBR,EAoEkB,WAAA,OAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GArEhBR,EAqEkB,WAAA,SAAA,CAAA;AACeO,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAtE/BR,EAsEiC,WAAA,YAAA,CAAA;AAEhCO,EAAA;AAAA,EAAXC,EAAA;AAAS,GAxECR,EAwEC,WAAA,SAAA,CAAA;AAxEDA,IAANO,EAAA;AAAA,EADNE,EAAc,iBAAiB;AAAA,GACnBT,CAAA;"}
@@ -35,6 +35,10 @@ export declare class CgCalendar extends LitElement {
35
35
  private _isToday;
36
36
  private _isSameDay;
37
37
  private _isDisabled;
38
+ /** True when the entire previous month is before `min` (nothing to show). */
39
+ private _isPrevMonthOutOfBounds;
40
+ /** True when the entire next month is after `max` (nothing to show). */
41
+ private _isNextMonthOutOfBounds;
38
42
  private _prevMonth;
39
43
  private _nextMonth;
40
44
  private _onGridKeydown;
@@ -1 +1 @@
1
- {"version":3,"file":"cg-calendar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;GAYG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAiInB;IAEH,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAmB;;IAS1B,KAAK,SAAM;IACe,QAAQ,SAAM;IACxC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAY;IACjD,GAAG,SAAM;IACT,GAAG,SAAM;IACoC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAK;IACrE,IAAI,SAAM;IAEb,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAyB;IAE9C,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAcrD,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAuBb,MAAM;CA0DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"cg-calendar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;GAYG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAqInB;IAEH,MAAM,CAAC,cAAc,UAAQ;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAmB;;IAS1B,KAAK,SAAM;IACe,QAAQ,SAAM;IACxC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAY;IACjD,GAAG,SAAM;IACT,GAAG,SAAM;IACoC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAK;IACrE,IAAI,SAAM;IAEb,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAyB;IAE9C,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAcrD,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;IAYnB,6EAA6E;IAC7E,OAAO,CAAC,uBAAuB;IAQ/B,wEAAwE;IACxE,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAuBb,MAAM;CA0DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -1,6 +1,6 @@
1
- import { css as h, LitElement as u, html as d } from "lit";
2
- import { property as c, state as g, customElement as p } from "lit/decorators.js";
3
- import { h as f, r as v } from "../../chunks/premium.css-9I4kHrsl.js";
1
+ import { css as g, LitElement as u, html as d } from "lit";
2
+ import { property as c, state as h, customElement as p } from "lit/decorators.js";
3
+ import { h as f, r as v } from "../../chunks/premium.css-DHekUEUt.js";
4
4
  var y = Object.defineProperty, m = Object.getOwnPropertyDescriptor, i = (t, e, s, r) => {
5
5
  for (var a = r > 1 ? void 0 : r ? m(e, s) : e, o = t.length - 1, l; o >= 0; o--)
6
6
  (l = t[o]) && (a = (r ? l(e, s, a) : l(a)) || a);
@@ -57,11 +57,23 @@ let n = class extends u {
57
57
  }
58
58
  return !1;
59
59
  }
60
+ /** True when the entire previous month is before `min` (nothing to show). */
61
+ _isPrevMonthOutOfBounds() {
62
+ if (!this.min) return !1;
63
+ const t = this._parseDate(this.min);
64
+ return t ? new Date(this._displayYear, this._displayMonth, 0) < t : !1;
65
+ }
66
+ /** True when the entire next month is after `max` (nothing to show). */
67
+ _isNextMonthOutOfBounds() {
68
+ if (!this.max) return !1;
69
+ const t = this._parseDate(this.max);
70
+ return t ? new Date(this._displayYear, this._displayMonth + 1, 1) > t : !1;
71
+ }
60
72
  _prevMonth() {
61
- this._displayMonth === 0 ? (this._displayMonth = 11, this._displayYear--) : this._displayMonth--;
73
+ this._isPrevMonthOutOfBounds() || (this._displayMonth === 0 ? (this._displayMonth = 11, this._displayYear--) : this._displayMonth--);
62
74
  }
63
75
  _nextMonth() {
64
- this._displayMonth === 11 ? (this._displayMonth = 0, this._displayYear++) : this._displayMonth++;
76
+ this._isNextMonthOutOfBounds() || (this._displayMonth === 11 ? (this._displayMonth = 0, this._displayYear++) : this._displayMonth++);
65
77
  }
66
78
  _onGridKeydown(t) {
67
79
  const e = t.target;
@@ -149,13 +161,13 @@ let n = class extends u {
149
161
  return d`
150
162
  <div class="calendar" role="grid" aria-label=${`${this._getMonthName()} ${this._displayYear}`}>
151
163
  <div class="header">
152
- <button class="nav-btn" type="button" aria-label="Previous month" @click=${this._prevMonth}>
164
+ <button class="nav-btn" type="button" aria-label="Previous month" ?disabled=${this._isPrevMonthOutOfBounds()} @click=${this._prevMonth}>
153
165
  <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
154
166
  <path d="M9 3L5 7l4 4"/>
155
167
  </svg>
156
168
  </button>
157
169
  <div class="month-year">${this._getMonthName()} ${this._displayYear}</div>
158
- <button class="nav-btn" type="button" aria-label="Next month" @click=${this._nextMonth}>
170
+ <button class="nav-btn" type="button" aria-label="Next month" ?disabled=${this._isNextMonthOutOfBounds()} @click=${this._nextMonth}>
159
171
  <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
160
172
  <path d="M5 3l4 4-4 4"/>
161
173
  </svg>
@@ -179,7 +191,7 @@ let n = class extends u {
179
191
  `;
180
192
  }
181
193
  };
182
- n.styles = [f, v, h`
194
+ n.styles = [f, v, g`
183
195
  :host { display: inline-block; }
184
196
 
185
197
  .calendar {
@@ -211,6 +223,10 @@ n.styles = [f, v, h`
211
223
  transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
212
224
  }
213
225
  .nav-btn:hover { background: var(--cg-color-action-tertiary-background-hover); }
226
+ .nav-btn:disabled {
227
+ opacity: 0.3;
228
+ cursor: not-allowed;
229
+ }
214
230
  .nav-btn:focus-visible {
215
231
  outline: none;
216
232
  box-shadow:
@@ -281,8 +297,8 @@ n.styles = [f, v, h`
281
297
  opacity: 0.5;
282
298
  }
283
299
  .day.today:not(.selected):not(.range-start):not(.range-end) {
284
- box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-background-default);
285
- color: var(--cg-color-action-primary-background-default);
300
+ box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-border-default);
301
+ color: var(--cg-color-action-primary-border-default);
286
302
  font-weight: var(--cg-font-weight-semibold);
287
303
  }
288
304
  .day.selected {
@@ -332,10 +348,10 @@ i([
332
348
  c()
333
349
  ], n.prototype, "name", 2);
334
350
  i([
335
- g()
351
+ h()
336
352
  ], n.prototype, "_displayYear", 2);
337
353
  i([
338
- g()
354
+ h()
339
355
  ], n.prototype, "_displayMonth", 2);
340
356
  n = i([
341
357
  p("cg-calendar")
@@ -1 +1 @@
1
- {"version":3,"file":"cg-calendar.js","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-calendar\n * Full month calendar view with single/range/multiple selection modes,\n * keyboard navigation, and min/max bounds.\n *\n * @example\n * ```html\n * <cg-calendar value=\"2026-04-15\"></cg-calendar>\n * <cg-calendar mode=\"range\" value=\"2026-04-10\" range-end=\"2026-04-20\"></cg-calendar>\n * ```\n *\n * @fires {CustomEvent<{value: string, rangeEnd?: string}>} cg-calendar-change\n */\n@customElement('cg-calendar')\nexport class CgCalendar extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n .calendar {\n padding: var(--cg-spacing-16);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-calendar-radius);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--cg-spacing-12);\n }\n .nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n border-radius: var(--cg-border-radius-100);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .nav-btn:hover { background: var(--cg-color-action-tertiary-background-hover); }\n .nav-btn:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .month-year {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n }\n\n .weekdays {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n margin-bottom: var(--cg-spacing-8);\n }\n .weekday {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--cg-spacing-32);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-outlined);\n }\n\n .days {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n }\n .day {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-component-calendar-cell-size);\n height: var(--cg-component-calendar-cell-size);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n font-size: var(--cg-font-size-sm);\n cursor: pointer;\n border-radius: var(--cg-border-radius-full);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .day:hover:not(:disabled) {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .day:active:not(:disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .nav-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .day:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n .day.outside {\n color: var(--cg-color-surface-container-outlined);\n opacity: 0.5;\n }\n .day.today:not(.selected):not(.range-start):not(.range-end) {\n box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-background-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.selected {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.in-range {\n background: var(--cg-overlay-accent-light);\n border-radius: 0;\n }\n .day.range-start {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: var(--cg-border-radius-100) 0 0 var(--cg-border-radius-100);\n }\n .day.range-end {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: 0 var(--cg-border-radius-100) var(--cg-border-radius-100) 0;\n }\n .day:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n `];\n\n static formAssociated = true;\n private _internals?: ElementInternals;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n @property() value = '';\n @property({ attribute: 'range-end' }) rangeEnd = '';\n @property() mode: 'single' | 'range' | 'multiple' = 'single';\n @property() min = '';\n @property() max = '';\n @property({ type: Number, attribute: 'week-starts-on' }) weekStartsOn: 0 | 1 = 0;\n @property() name = '';\n\n @state() private _displayYear = new Date().getFullYear();\n @state() private _displayMonth = new Date().getMonth();\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n // Jump to the month containing the new value\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n }\n\n private _parseDate(iso: string): Date | null {\n if (!iso) return null;\n const parts = iso.split('-');\n if (parts.length !== 3) return null;\n const year = parseInt(parts[0]!, 10);\n const month = parseInt(parts[1]!, 10) - 1;\n const day = parseInt(parts[2]!, 10);\n if (isNaN(year) || isNaN(month) || isNaN(day)) return null;\n return new Date(year, month, day);\n }\n\n private _formatISO(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n }\n\n private _getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n }\n\n private _getFirstDayOfWeek(year: number, month: number): number {\n const day = new Date(year, month, 1).getDay();\n return (day - this.weekStartsOn + 7) % 7;\n }\n\n private _isToday(date: Date): boolean {\n const today = new Date();\n return date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate();\n }\n\n private _isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n }\n\n private _isDisabled(date: Date): boolean {\n if (this.min) {\n const min = this._parseDate(this.min);\n if (min && date < min) return true;\n }\n if (this.max) {\n const max = this._parseDate(this.max);\n if (max && date > max) return true;\n }\n return false;\n }\n\n private _prevMonth(): void {\n if (this._displayMonth === 0) {\n this._displayMonth = 11;\n this._displayYear--;\n } else {\n this._displayMonth--;\n }\n }\n\n private _nextMonth(): void {\n if (this._displayMonth === 11) {\n this._displayMonth = 0;\n this._displayYear++;\n } else {\n this._displayMonth++;\n }\n }\n\n private _onGridKeydown(e: KeyboardEvent): void {\n const target = e.target as HTMLElement;\n if (!target || !target.classList.contains('day')) return;\n const buttons = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>('.day:not(:disabled)') ?? [],\n );\n const idx = buttons.indexOf(target as HTMLButtonElement);\n if (idx < 0) return;\n let next = idx;\n switch (e.key) {\n case 'ArrowLeft': next = Math.max(0, idx - 1); break;\n case 'ArrowRight': next = Math.min(buttons.length - 1, idx + 1); break;\n case 'ArrowUp': next = Math.max(0, idx - 7); break;\n case 'ArrowDown': next = Math.min(buttons.length - 1, idx + 7); break;\n case 'Home': next = 0; break;\n case 'End': next = buttons.length - 1; break;\n case 'PageUp': e.preventDefault(); this._prevMonth(); return;\n case 'PageDown': e.preventDefault(); this._nextMonth(); return;\n default: return;\n }\n e.preventDefault();\n buttons[next]?.focus();\n }\n\n private _selectDate(date: Date): void {\n if (this._isDisabled(date)) return;\n const iso = this._formatISO(date);\n\n if (this.mode === 'range') {\n if (!this.value || (this.value && this.rangeEnd)) {\n // Start new range\n this.value = iso;\n this.rangeEnd = '';\n } else {\n // Complete range\n const start = this._parseDate(this.value);\n if (start && date < start) {\n this.rangeEnd = this.value;\n this.value = iso;\n } else {\n this.rangeEnd = iso;\n }\n }\n } else {\n this.value = iso;\n }\n\n this.dispatchEvent(new CustomEvent('cg-calendar-change', {\n detail: { value: this.value, rangeEnd: this.rangeEnd },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _getWeekdayNames(): string[] {\n const names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n if (this.weekStartsOn === 1) {\n return [...names.slice(1), names[0]!];\n }\n return names;\n }\n\n private _getMonthName(): string {\n return new Date(this._displayYear, this._displayMonth, 1).toLocaleString('default', { month: 'long' });\n }\n\n private _getDayClasses(date: Date, isOutside: boolean): string {\n const classes = ['day'];\n if (isOutside) classes.push('outside');\n if (this._isToday(date)) classes.push('today');\n\n const selected = this._parseDate(this.value);\n const rangeEnd = this._parseDate(this.rangeEnd);\n\n if (this.mode === 'range') {\n if (selected && this._isSameDay(date, selected)) {\n classes.push(rangeEnd ? 'range-start' : 'selected');\n } else if (rangeEnd && this._isSameDay(date, rangeEnd)) {\n classes.push('range-end');\n } else if (selected && rangeEnd && date > selected && date < rangeEnd) {\n classes.push('in-range');\n }\n } else {\n if (selected && this._isSameDay(date, selected)) classes.push('selected');\n }\n\n return classes.join(' ');\n }\n\n override render() {\n const daysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth);\n const firstDayOffset = this._getFirstDayOfWeek(this._displayYear, this._displayMonth);\n const prevDaysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth - 1);\n\n const cells: Array<{ date: Date; outside: boolean }> = [];\n\n // Previous month outside days\n for (let i = firstDayOffset - 1; i >= 0; i--) {\n const date = new Date(this._displayYear, this._displayMonth - 1, prevDaysInMonth - i);\n cells.push({ date, outside: true });\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(this._displayYear, this._displayMonth, i);\n cells.push({ date, outside: false });\n }\n\n // Next month outside days (fill to 42 cells = 6 rows)\n while (cells.length < 42) {\n const lastDate = cells[cells.length - 1]!.date;\n const date = new Date(lastDate.getFullYear(), lastDate.getMonth(), lastDate.getDate() + 1);\n cells.push({ date, outside: true });\n }\n\n return html`\n <div class=\"calendar\" role=\"grid\" aria-label=${`${this._getMonthName()} ${this._displayYear}`}>\n <div class=\"header\">\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Previous month\" @click=${this._prevMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 3L5 7l4 4\"/>\n </svg>\n </button>\n <div class=\"month-year\">${this._getMonthName()} ${this._displayYear}</div>\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Next month\" @click=${this._nextMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M5 3l4 4-4 4\"/>\n </svg>\n </button>\n </div>\n <div class=\"weekdays\">\n ${this._getWeekdayNames().map(name => html`<div class=\"weekday\">${name}</div>`)}\n </div>\n <div class=\"days\" @keydown=${this._onGridKeydown}>\n ${cells.map(cell => html`\n <button\n class=${this._getDayClasses(cell.date, cell.outside)}\n role=\"gridcell\"\n aria-selected=${this._parseDate(this.value) && this._isSameDay(cell.date, this._parseDate(this.value)!) ? 'true' : 'false'}\n ?disabled=${this._isDisabled(cell.date)}\n @click=${() => this._selectDate(cell.date)}\n >${cell.date.getDate()}</button>\n `)}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-calendar': CgCalendar;\n }\n}\n"],"names":["CgCalendar","LitElement","d","changed","iso","parts","year","month","day","date","y","m","today","a","b","min","max","e","target","buttons","idx","next","start","names","isOutside","classes","selected","rangeEnd","daysInMonth","firstDayOffset","prevDaysInMonth","cells","i","lastDate","html","name","cell","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;AAkBO,IAAMA,IAAN,cAAyBC,EAAW;AAAA,EAuIzC,cAAc;AACZ,UAAA,GAMU,KAAA,QAAQ,IACkB,KAAA,WAAW,IACrC,KAAA,OAAwC,UACxC,KAAA,MAAM,IACN,KAAA,MAAM,IACuC,KAAA,eAAsB,GACnE,KAAA,OAAO,IAEV,KAAQ,gBAAe,oBAAI,KAAA,GAAO,YAAA,GAClC,KAAQ,iBAAgB,oBAAI,KAAA,GAAO,SAAA,GAdtC,OAAO,KAAK,mBAAoB,eAClC,KAAK,aAAa,KAAK,gBAAA;AAAA,EAE3B;AAAA,EAaS,oBAA0B;AAEjC,QADA,MAAM,kBAAA,GACF,KAAK,OAAO;AACd,YAAMC,IAAI,KAAK,WAAW,KAAK,KAAK;AACpC,MAAIA,MACF,KAAK,eAAeA,EAAE,YAAA,GACtB,KAAK,gBAAgBA,EAAE,SAAA;AAAA,IAE3B;AAAA,EACF;AAAA,EAES,QAAQC,GAAqC;AACpD,QAAIA,EAAQ,IAAI,OAAO,MACrB,KAAK,YAAY,aAAa,KAAK,KAAK,GAEpC,KAAK,QAAO;AACd,YAAMD,IAAI,KAAK,WAAW,KAAK,KAAK;AACpC,MAAIA,MACF,KAAK,eAAeA,EAAE,YAAA,GACtB,KAAK,gBAAgBA,EAAE,SAAA;AAAA,IAE3B;AAAA,EAEJ;AAAA,EAEQ,WAAWE,GAA0B;AAC3C,QAAI,CAACA,EAAK,QAAO;AACjB,UAAMC,IAAQD,EAAI,MAAM,GAAG;AAC3B,QAAIC,EAAM,WAAW,EAAG,QAAO;AAC/B,UAAMC,IAAO,SAASD,EAAM,CAAC,GAAI,EAAE,GAC7BE,IAAQ,SAASF,EAAM,CAAC,GAAI,EAAE,IAAI,GAClCG,IAAM,SAASH,EAAM,CAAC,GAAI,EAAE;AAClC,WAAI,MAAMC,CAAI,KAAK,MAAMC,CAAK,KAAK,MAAMC,CAAG,IAAU,OAC/C,IAAI,KAAKF,GAAMC,GAAOC,CAAG;AAAA,EAClC;AAAA,EAEQ,WAAWC,GAAoB;AACrC,UAAMC,IAAID,EAAK,YAAA,GACTE,IAAI,OAAOF,EAAK,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG,GAC/CP,IAAI,OAAOO,EAAK,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG;AAChD,WAAO,GAAGC,CAAC,IAAIC,CAAC,IAAIT,CAAC;AAAA,EACvB;AAAA,EAEQ,gBAAgBI,GAAcC,GAAuB;AAC3D,WAAO,IAAI,KAAKD,GAAMC,IAAQ,GAAG,CAAC,EAAE,QAAA;AAAA,EACtC;AAAA,EAEQ,mBAAmBD,GAAcC,GAAuB;AAE9D,YADY,IAAI,KAAKD,GAAMC,GAAO,CAAC,EAAE,OAAA,IACvB,KAAK,eAAe,KAAK;AAAA,EACzC;AAAA,EAEQ,SAASE,GAAqB;AACpC,UAAMG,wBAAY,KAAA;AAClB,WAAOH,EAAK,YAAA,MAAkBG,EAAM,YAAA,KAC7BH,EAAK,SAAA,MAAeG,EAAM,cAC1BH,EAAK,QAAA,MAAcG,EAAM,QAAA;AAAA,EAClC;AAAA,EAEQ,WAAWC,GAASC,GAAkB;AAC5C,WAAOD,EAAE,YAAA,MAAkBC,EAAE,YAAA,KACtBD,EAAE,SAAA,MAAeC,EAAE,cACnBD,EAAE,QAAA,MAAcC,EAAE,QAAA;AAAA,EAC3B;AAAA,EAEQ,YAAYL,GAAqB;AACvC,QAAI,KAAK,KAAK;AACZ,YAAMM,IAAM,KAAK,WAAW,KAAK,GAAG;AACpC,UAAIA,KAAON,IAAOM,EAAK,QAAO;AAAA,IAChC;AACA,QAAI,KAAK,KAAK;AACZ,YAAMC,IAAM,KAAK,WAAW,KAAK,GAAG;AACpC,UAAIA,KAAOP,IAAOO,EAAK,QAAO;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,aAAmB;AACzB,IAAI,KAAK,kBAAkB,KACzB,KAAK,gBAAgB,IACrB,KAAK,kBAEL,KAAK;AAAA,EAET;AAAA,EAEQ,aAAmB;AACzB,IAAI,KAAK,kBAAkB,MACzB,KAAK,gBAAgB,GACrB,KAAK,kBAEL,KAAK;AAAA,EAET;AAAA,EAEQ,eAAeC,GAAwB;AAC7C,UAAMC,IAASD,EAAE;AACjB,QAAI,CAACC,KAAU,CAACA,EAAO,UAAU,SAAS,KAAK,EAAG;AAClD,UAAMC,IAAU,MAAM;AAAA,MACpB,KAAK,YAAY,iBAAoC,qBAAqB,KAAK,CAAA;AAAA,IAAC,GAE5EC,IAAMD,EAAQ,QAAQD,CAA2B;AACvD,QAAIE,IAAM,EAAG;AACb,QAAIC,IAAOD;AACX,YAAQH,EAAE,KAAA;AAAA,MACR,KAAK;AAAa,QAAAI,IAAO,KAAK,IAAI,GAAGD,IAAM,CAAC;AAAG;AAAA,MAC/C,KAAK;AAAc,QAAAC,IAAO,KAAK,IAAIF,EAAQ,SAAS,GAAGC,IAAM,CAAC;AAAG;AAAA,MACjE,KAAK;AAAW,QAAAC,IAAO,KAAK,IAAI,GAAGD,IAAM,CAAC;AAAG;AAAA,MAC7C,KAAK;AAAa,QAAAC,IAAO,KAAK,IAAIF,EAAQ,SAAS,GAAGC,IAAM,CAAC;AAAG;AAAA,MAChE,KAAK;AAAQ,QAAAC,IAAO;AAAG;AAAA,MACvB,KAAK;AAAO,QAAAA,IAAOF,EAAQ,SAAS;AAAG;AAAA,MACvC,KAAK;AAAU,QAAAF,EAAE,eAAA,GAAkB,KAAK,WAAA;AAAc;AAAA,MACtD,KAAK;AAAY,QAAAA,EAAE,eAAA,GAAkB,KAAK,WAAA;AAAc;AAAA,MACxD;AAAS;AAAA,IAAA;AAEX,IAAAA,EAAE,eAAA,GACFE,EAAQE,CAAI,GAAG,MAAA;AAAA,EACjB;AAAA,EAEQ,YAAYZ,GAAkB;AACpC,QAAI,KAAK,YAAYA,CAAI,EAAG;AAC5B,UAAML,IAAM,KAAK,WAAWK,CAAI;AAEhC,QAAI,KAAK,SAAS;AAChB,UAAI,CAAC,KAAK,SAAU,KAAK,SAAS,KAAK;AAErC,aAAK,QAAQL,GACb,KAAK,WAAW;AAAA,WACX;AAEL,cAAMkB,IAAQ,KAAK,WAAW,KAAK,KAAK;AACxC,QAAIA,KAASb,IAAOa,KAClB,KAAK,WAAW,KAAK,OACrB,KAAK,QAAQlB,KAEb,KAAK,WAAWA;AAAA,MAEpB;AAAA;AAEA,WAAK,QAAQA;AAGf,SAAK,cAAc,IAAI,YAAY,sBAAsB;AAAA,MACvD,QAAQ,EAAE,OAAO,KAAK,OAAO,UAAU,KAAK,SAAA;AAAA,MAC5C,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,CAAC;AAAA,EACJ;AAAA,EAEQ,mBAA6B;AACnC,UAAMmB,IAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAC9D,WAAI,KAAK,iBAAiB,IACjB,CAAC,GAAGA,EAAM,MAAM,CAAC,GAAGA,EAAM,CAAC,CAAE,IAE/BA;AAAA,EACT;AAAA,EAEQ,gBAAwB;AAC9B,WAAO,IAAI,KAAK,KAAK,cAAc,KAAK,eAAe,CAAC,EAAE,eAAe,WAAW,EAAE,OAAO,QAAQ;AAAA,EACvG;AAAA,EAEQ,eAAed,GAAYe,GAA4B;AAC7D,UAAMC,IAAU,CAAC,KAAK;AACtB,IAAID,KAAWC,EAAQ,KAAK,SAAS,GACjC,KAAK,SAAShB,CAAI,KAAGgB,EAAQ,KAAK,OAAO;AAE7C,UAAMC,IAAW,KAAK,WAAW,KAAK,KAAK,GACrCC,IAAW,KAAK,WAAW,KAAK,QAAQ;AAE9C,WAAI,KAAK,SAAS,UACZD,KAAY,KAAK,WAAWjB,GAAMiB,CAAQ,IAC5CD,EAAQ,KAAKE,IAAW,gBAAgB,UAAU,IACzCA,KAAY,KAAK,WAAWlB,GAAMkB,CAAQ,IACnDF,EAAQ,KAAK,WAAW,IACfC,KAAYC,KAAYlB,IAAOiB,KAAYjB,IAAOkB,KAC3DF,EAAQ,KAAK,UAAU,IAGrBC,KAAY,KAAK,WAAWjB,GAAMiB,CAAQ,KAAGD,EAAQ,KAAK,UAAU,GAGnEA,EAAQ,KAAK,GAAG;AAAA,EACzB;AAAA,EAES,SAAS;AAChB,UAAMG,IAAc,KAAK,gBAAgB,KAAK,cAAc,KAAK,aAAa,GACxEC,IAAiB,KAAK,mBAAmB,KAAK,cAAc,KAAK,aAAa,GAC9EC,IAAkB,KAAK,gBAAgB,KAAK,cAAc,KAAK,gBAAgB,CAAC,GAEhFC,IAAiD,CAAA;AAGvD,aAASC,IAAIH,IAAiB,GAAGG,KAAK,GAAGA,KAAK;AAC5C,YAAMvB,IAAO,IAAI,KAAK,KAAK,cAAc,KAAK,gBAAgB,GAAGqB,IAAkBE,CAAC;AACpF,MAAAD,EAAM,KAAK,EAAE,MAAAtB,GAAM,SAAS,IAAM;AAAA,IACpC;AAGA,aAASuB,IAAI,GAAGA,KAAKJ,GAAaI,KAAK;AACrC,YAAMvB,IAAO,IAAI,KAAK,KAAK,cAAc,KAAK,eAAeuB,CAAC;AAC9D,MAAAD,EAAM,KAAK,EAAE,MAAAtB,GAAM,SAAS,IAAO;AAAA,IACrC;AAGA,WAAOsB,EAAM,SAAS,MAAI;AACxB,YAAME,IAAWF,EAAMA,EAAM,SAAS,CAAC,EAAG,MACpCtB,IAAO,IAAI,KAAKwB,EAAS,YAAA,GAAeA,EAAS,YAAYA,EAAS,QAAA,IAAY,CAAC;AACzF,MAAAF,EAAM,KAAK,EAAE,MAAAtB,GAAM,SAAS,IAAM;AAAA,IACpC;AAEA,WAAOyB;AAAA,qDAC0C,GAAG,KAAK,cAAA,CAAe,IAAI,KAAK,YAAY,EAAE;AAAA;AAAA,qFAEd,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,oCAKhE,KAAK,cAAA,CAAe,IAAI,KAAK,YAAY;AAAA,iFACI,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOpF,KAAK,mBAAmB,IAAI,OAAQA,yBAA4BC,CAAI,QAAQ,CAAC;AAAA;AAAA,qCAEpD,KAAK,cAAc;AAAA,YAC5CJ,EAAM,IAAI,CAAAK,MAAQF;AAAA;AAAA,sBAER,KAAK,eAAeE,EAAK,MAAMA,EAAK,OAAO,CAAC;AAAA;AAAA,8BAEpC,KAAK,WAAW,KAAK,KAAK,KAAK,KAAK,WAAWA,EAAK,MAAM,KAAK,WAAW,KAAK,KAAK,CAAE,IAAI,SAAS,OAAO;AAAA,0BAC9G,KAAK,YAAYA,EAAK,IAAI,CAAC;AAAA,uBAC9B,MAAM,KAAK,YAAYA,EAAK,IAAI,CAAC;AAAA,eACzCA,EAAK,KAAK,SAAS;AAAA,WACvB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIV;AACF;AA3YapC,EACK,SAAS,CAACqC,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;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,GAiInD;AAlIUvC,EAoIJ,iBAAiB;AAUZwC,EAAA;AAAA,EAAXC,EAAA;AAAS,GA9ICzC,EA8IC,WAAA,SAAA,CAAA;AAC0BwC,EAAA;AAAA,EAArCC,EAAS,EAAE,WAAW,YAAA,CAAa;AAAA,GA/IzBzC,EA+I2B,WAAA,YAAA,CAAA;AAC1BwC,EAAA;AAAA,EAAXC,EAAA;AAAS,GAhJCzC,EAgJC,WAAA,QAAA,CAAA;AACAwC,EAAA;AAAA,EAAXC,EAAA;AAAS,GAjJCzC,EAiJC,WAAA,OAAA,CAAA;AACAwC,EAAA;AAAA,EAAXC,EAAA;AAAS,GAlJCzC,EAkJC,WAAA,OAAA,CAAA;AAC6CwC,EAAA;AAAA,EAAxDC,EAAS,EAAE,MAAM,QAAQ,WAAW,kBAAkB;AAAA,GAnJ5CzC,EAmJ8C,WAAA,gBAAA,CAAA;AAC7CwC,EAAA;AAAA,EAAXC,EAAA;AAAS,GApJCzC,EAoJC,WAAA,QAAA,CAAA;AAEKwC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAtJI1C,EAsJM,WAAA,gBAAA,CAAA;AACAwC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAvJI1C,EAuJM,WAAA,iBAAA,CAAA;AAvJNA,IAANwC,EAAA;AAAA,EADNG,EAAc,aAAa;AAAA,GACf3C,CAAA;"}
1
+ {"version":3,"file":"cg-calendar.js","sources":["../../../src/components/cg-calendar/cg-calendar.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-calendar\n * Full month calendar view with single/range/multiple selection modes,\n * keyboard navigation, and min/max bounds.\n *\n * @example\n * ```html\n * <cg-calendar value=\"2026-04-15\"></cg-calendar>\n * <cg-calendar mode=\"range\" value=\"2026-04-10\" range-end=\"2026-04-20\"></cg-calendar>\n * ```\n *\n * @fires {CustomEvent<{value: string, rangeEnd?: string}>} cg-calendar-change\n */\n@customElement('cg-calendar')\nexport class CgCalendar extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n .calendar {\n padding: var(--cg-spacing-16);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-calendar-radius);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--cg-spacing-12);\n }\n .nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n border-radius: var(--cg-border-radius-100);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .nav-btn:hover { background: var(--cg-color-action-tertiary-background-hover); }\n .nav-btn:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n .nav-btn:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .month-year {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-base-text);\n }\n\n .weekdays {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n margin-bottom: var(--cg-spacing-8);\n }\n .weekday {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--cg-spacing-32);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-outlined);\n }\n\n .days {\n display: grid;\n grid-template-columns: repeat(7, var(--cg-component-calendar-cell-size));\n gap: var(--cg-spacing-2);\n }\n .day {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-component-calendar-cell-size);\n height: var(--cg-component-calendar-cell-size);\n border: none;\n background: transparent;\n color: var(--cg-color-surface-base-text);\n font-size: var(--cg-font-size-sm);\n cursor: pointer;\n border-radius: var(--cg-border-radius-full);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .day:hover:not(:disabled) {\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .day:active:not(:disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .nav-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .day:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n .day.outside {\n color: var(--cg-color-surface-container-outlined);\n opacity: 0.5;\n }\n .day.today:not(.selected):not(.range-start):not(.range-end) {\n box-shadow: inset 0 0 0 var(--cg-border-width-50) var(--cg-color-action-primary-border-default);\n color: var(--cg-color-action-primary-border-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.selected {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n .day.in-range {\n background: var(--cg-overlay-accent-light);\n border-radius: 0;\n }\n .day.range-start {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: var(--cg-border-radius-100) 0 0 var(--cg-border-radius-100);\n }\n .day.range-end {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-radius: 0 var(--cg-border-radius-100) var(--cg-border-radius-100) 0;\n }\n .day:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n `];\n\n static formAssociated = true;\n private _internals?: ElementInternals;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n @property() value = '';\n @property({ attribute: 'range-end' }) rangeEnd = '';\n @property() mode: 'single' | 'range' | 'multiple' = 'single';\n @property() min = '';\n @property() max = '';\n @property({ type: Number, attribute: 'week-starts-on' }) weekStartsOn: 0 | 1 = 0;\n @property() name = '';\n\n @state() private _displayYear = new Date().getFullYear();\n @state() private _displayMonth = new Date().getMonth();\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n // Jump to the month containing the new value\n if (this.value) {\n const d = this._parseDate(this.value);\n if (d) {\n this._displayYear = d.getFullYear();\n this._displayMonth = d.getMonth();\n }\n }\n }\n }\n\n private _parseDate(iso: string): Date | null {\n if (!iso) return null;\n const parts = iso.split('-');\n if (parts.length !== 3) return null;\n const year = parseInt(parts[0]!, 10);\n const month = parseInt(parts[1]!, 10) - 1;\n const day = parseInt(parts[2]!, 10);\n if (isNaN(year) || isNaN(month) || isNaN(day)) return null;\n return new Date(year, month, day);\n }\n\n private _formatISO(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n }\n\n private _getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n }\n\n private _getFirstDayOfWeek(year: number, month: number): number {\n const day = new Date(year, month, 1).getDay();\n return (day - this.weekStartsOn + 7) % 7;\n }\n\n private _isToday(date: Date): boolean {\n const today = new Date();\n return date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate();\n }\n\n private _isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n }\n\n private _isDisabled(date: Date): boolean {\n if (this.min) {\n const min = this._parseDate(this.min);\n if (min && date < min) return true;\n }\n if (this.max) {\n const max = this._parseDate(this.max);\n if (max && date > max) return true;\n }\n return false;\n }\n\n /** True when the entire previous month is before `min` (nothing to show). */\n private _isPrevMonthOutOfBounds(): boolean {\n if (!this.min) return false;\n const min = this._parseDate(this.min);\n if (!min) return false;\n const lastDayPrev = new Date(this._displayYear, this._displayMonth, 0);\n return lastDayPrev < min;\n }\n\n /** True when the entire next month is after `max` (nothing to show). */\n private _isNextMonthOutOfBounds(): boolean {\n if (!this.max) return false;\n const max = this._parseDate(this.max);\n if (!max) return false;\n const firstDayNext = new Date(this._displayYear, this._displayMonth + 1, 1);\n return firstDayNext > max;\n }\n\n private _prevMonth(): void {\n if (this._isPrevMonthOutOfBounds()) return;\n if (this._displayMonth === 0) {\n this._displayMonth = 11;\n this._displayYear--;\n } else {\n this._displayMonth--;\n }\n }\n\n private _nextMonth(): void {\n if (this._isNextMonthOutOfBounds()) return;\n if (this._displayMonth === 11) {\n this._displayMonth = 0;\n this._displayYear++;\n } else {\n this._displayMonth++;\n }\n }\n\n private _onGridKeydown(e: KeyboardEvent): void {\n const target = e.target as HTMLElement;\n if (!target || !target.classList.contains('day')) return;\n const buttons = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLButtonElement>('.day:not(:disabled)') ?? [],\n );\n const idx = buttons.indexOf(target as HTMLButtonElement);\n if (idx < 0) return;\n let next = idx;\n switch (e.key) {\n case 'ArrowLeft': next = Math.max(0, idx - 1); break;\n case 'ArrowRight': next = Math.min(buttons.length - 1, idx + 1); break;\n case 'ArrowUp': next = Math.max(0, idx - 7); break;\n case 'ArrowDown': next = Math.min(buttons.length - 1, idx + 7); break;\n case 'Home': next = 0; break;\n case 'End': next = buttons.length - 1; break;\n case 'PageUp': e.preventDefault(); this._prevMonth(); return;\n case 'PageDown': e.preventDefault(); this._nextMonth(); return;\n default: return;\n }\n e.preventDefault();\n buttons[next]?.focus();\n }\n\n private _selectDate(date: Date): void {\n if (this._isDisabled(date)) return;\n const iso = this._formatISO(date);\n\n if (this.mode === 'range') {\n if (!this.value || (this.value && this.rangeEnd)) {\n // Start new range\n this.value = iso;\n this.rangeEnd = '';\n } else {\n // Complete range\n const start = this._parseDate(this.value);\n if (start && date < start) {\n this.rangeEnd = this.value;\n this.value = iso;\n } else {\n this.rangeEnd = iso;\n }\n }\n } else {\n this.value = iso;\n }\n\n this.dispatchEvent(new CustomEvent('cg-calendar-change', {\n detail: { value: this.value, rangeEnd: this.rangeEnd },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _getWeekdayNames(): string[] {\n const names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n if (this.weekStartsOn === 1) {\n return [...names.slice(1), names[0]!];\n }\n return names;\n }\n\n private _getMonthName(): string {\n return new Date(this._displayYear, this._displayMonth, 1).toLocaleString('default', { month: 'long' });\n }\n\n private _getDayClasses(date: Date, isOutside: boolean): string {\n const classes = ['day'];\n if (isOutside) classes.push('outside');\n if (this._isToday(date)) classes.push('today');\n\n const selected = this._parseDate(this.value);\n const rangeEnd = this._parseDate(this.rangeEnd);\n\n if (this.mode === 'range') {\n if (selected && this._isSameDay(date, selected)) {\n classes.push(rangeEnd ? 'range-start' : 'selected');\n } else if (rangeEnd && this._isSameDay(date, rangeEnd)) {\n classes.push('range-end');\n } else if (selected && rangeEnd && date > selected && date < rangeEnd) {\n classes.push('in-range');\n }\n } else {\n if (selected && this._isSameDay(date, selected)) classes.push('selected');\n }\n\n return classes.join(' ');\n }\n\n override render() {\n const daysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth);\n const firstDayOffset = this._getFirstDayOfWeek(this._displayYear, this._displayMonth);\n const prevDaysInMonth = this._getDaysInMonth(this._displayYear, this._displayMonth - 1);\n\n const cells: Array<{ date: Date; outside: boolean }> = [];\n\n // Previous month outside days\n for (let i = firstDayOffset - 1; i >= 0; i--) {\n const date = new Date(this._displayYear, this._displayMonth - 1, prevDaysInMonth - i);\n cells.push({ date, outside: true });\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(this._displayYear, this._displayMonth, i);\n cells.push({ date, outside: false });\n }\n\n // Next month outside days (fill to 42 cells = 6 rows)\n while (cells.length < 42) {\n const lastDate = cells[cells.length - 1]!.date;\n const date = new Date(lastDate.getFullYear(), lastDate.getMonth(), lastDate.getDate() + 1);\n cells.push({ date, outside: true });\n }\n\n return html`\n <div class=\"calendar\" role=\"grid\" aria-label=${`${this._getMonthName()} ${this._displayYear}`}>\n <div class=\"header\">\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Previous month\" ?disabled=${this._isPrevMonthOutOfBounds()} @click=${this._prevMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M9 3L5 7l4 4\"/>\n </svg>\n </button>\n <div class=\"month-year\">${this._getMonthName()} ${this._displayYear}</div>\n <button class=\"nav-btn\" type=\"button\" aria-label=\"Next month\" ?disabled=${this._isNextMonthOutOfBounds()} @click=${this._nextMonth}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M5 3l4 4-4 4\"/>\n </svg>\n </button>\n </div>\n <div class=\"weekdays\">\n ${this._getWeekdayNames().map(name => html`<div class=\"weekday\">${name}</div>`)}\n </div>\n <div class=\"days\" @keydown=${this._onGridKeydown}>\n ${cells.map(cell => html`\n <button\n class=${this._getDayClasses(cell.date, cell.outside)}\n role=\"gridcell\"\n aria-selected=${this._parseDate(this.value) && this._isSameDay(cell.date, this._parseDate(this.value)!) ? 'true' : 'false'}\n ?disabled=${this._isDisabled(cell.date)}\n @click=${() => this._selectDate(cell.date)}\n >${cell.date.getDate()}</button>\n `)}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-calendar': CgCalendar;\n }\n}\n"],"names":["CgCalendar","LitElement","d","changed","iso","parts","year","month","day","date","y","m","today","a","b","min","max","e","target","buttons","idx","next","start","names","isOutside","classes","selected","rangeEnd","daysInMonth","firstDayOffset","prevDaysInMonth","cells","i","lastDate","html","name","cell","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-callout.d.ts","sourceRoot":"","sources":["../../../src/components/cg-callout/cg-callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAIrD;;;;;;;;GAQG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BA8GnB;IAE0B,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAU;IACxE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IAC7D,KAAK,SAAM;IACpB,WAAW,SAAM;IACA,WAAW,UAAS;IAExC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,UAAU,CAMhB;IAEO,oBAAoB;IAK7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,QAAQ;IAUP,MAAM;CA8BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"cg-callout.d.ts","sourceRoot":"","sources":["../../../src/components/cg-callout/cg-callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAIrD;;;;;;;;GAQG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BA+GnB;IAE0B,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAU;IACxE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IAC7D,KAAK,SAAM;IACpB,WAAW,SAAM;IACA,WAAW,UAAS;IAExC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,UAAU,CAMhB;IAEO,oBAAoB;IAK7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,QAAQ;IAUP,MAAM;CAkChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
@@ -1,12 +1,12 @@
1
1
  import { css as v, LitElement as h, nothing as n, html as c } from "lit";
2
- import { property as o, state as u, customElement as m } from "lit/decorators.js";
3
- import { h as p, r as f, f as b } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var y = Object.defineProperty, w = Object.getOwnPropertyDescriptor, t = (r, a, l, e) => {
5
- for (var s = e > 1 ? void 0 : e ? w(a, l) : a, d = r.length - 1, g; d >= 0; d--)
6
- (g = r[d]) && (s = (e ? g(a, l, s) : g(s)) || s);
7
- return e && s && y(a, l, s), s;
2
+ import { property as a, state as u, customElement as m } from "lit/decorators.js";
3
+ import { h as f, r as p, f as b } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var w = Object.defineProperty, y = Object.getOwnPropertyDescriptor, i = (s, t, l, e) => {
5
+ for (var o = e > 1 ? void 0 : e ? y(t, l) : t, d = s.length - 1, g; d >= 0; d--)
6
+ (g = s[d]) && (o = (e ? g(t, l, o) : g(o)) || o);
7
+ return e && o && w(t, l, o), o;
8
8
  };
9
- let i = class extends h {
9
+ let r = class extends h {
10
10
  constructor() {
11
11
  super(...arguments), this.variant = "info", this.rounded = "lg", this.title = "", this.description = "", this.dismissible = !1, this._dismissed = !1, this._dismissing = !1, this._dismissTimer = 0, this._iconPaths = {
12
12
  info: "M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z",
@@ -19,8 +19,8 @@ let i = class extends h {
19
19
  disconnectedCallback() {
20
20
  super.disconnectedCallback(), clearTimeout(this._dismissTimer);
21
21
  }
22
- _handleKeydown(r) {
23
- this.dismissible && r.key === "Escape" && (r.preventDefault(), this._dismiss());
22
+ _handleKeydown(s) {
23
+ this.dismissible && s.key === "Escape" && (s.preventDefault(), this._dismiss());
24
24
  }
25
25
  _dismiss() {
26
26
  this._dismissing = !0, this.dispatchEvent(new CustomEvent("cg-callout-dismiss", { bubbles: !0, composed: !0 })), this._dismissTimer = window.setTimeout(() => {
@@ -29,13 +29,13 @@ let i = class extends h {
29
29
  }
30
30
  render() {
31
31
  if (this._dismissed && !this._dismissing) return n;
32
- const r = this._iconPaths[this.variant] ?? this._iconPaths.info;
32
+ const s = this._iconPaths[this.variant] ?? this._iconPaths.info, t = this.variant === "danger" || this.variant === "warning";
33
33
  return c`
34
- <div class="callout ${this._dismissing ? "dismissing" : ""}" role=${this.variant === "danger" || this.variant === "warning" ? "alert" : "note"} aria-live="polite" @keydown=${this._handleKeydown}>
34
+ <div class="callout ${this._dismissing ? "dismissing" : ""}" role=${t ? "alert" : "note"} aria-live=${t ? "assertive" : "polite"} @keydown=${this._handleKeydown}>
35
35
  <div class="icon">
36
36
  <slot name="icon">
37
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
38
- <path d="${r}"></path>
37
+ <svg aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
38
+ <path d="${s}"></path>
39
39
  </svg>
40
40
  </slot>
41
41
  </div>
@@ -56,7 +56,7 @@ let i = class extends h {
56
56
  `;
57
57
  }
58
58
  };
59
- i.styles = [p, f, b, v`
59
+ r.styles = [f, p, b, v`
60
60
  :host {
61
61
  animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
62
62
  }
@@ -71,7 +71,7 @@ i.styles = [p, f, b, v`
71
71
  opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default),
72
72
  transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);
73
73
  display: flex;
74
- align-items: center;
74
+ align-items: flex-start;
75
75
  gap: var(--cg-spacing-12);
76
76
  padding: var(--cg-spacing-12) var(--cg-spacing-16);
77
77
  border-radius: var(--cg-border-radius-100);
@@ -80,22 +80,23 @@ i.styles = [p, f, b, v`
80
80
  line-height: var(--cg-line-height-normal);
81
81
  }
82
82
 
83
- /* Variants — colored border, icon + title colored (softened), description normal */
84
- :host([variant="info"]) .callout { border-color: var(--cg-color-message-border-info); }
83
+ /* Variants — tinted surface + colored border for at-a-glance distinction,
84
+ icon + title at full accent strength (no opacity dampening). */
85
+ :host([variant="info"]) .callout { background: var(--cg-color-message-background-info); border-color: var(--cg-color-message-border-info); }
85
86
  :host([variant="info"]) .icon { color: var(--cg-color-message-icon-info); }
86
- :host([variant="info"]) .title { color: var(--cg-color-message-text-info); opacity: 0.85; }
87
+ :host([variant="info"]) .title { color: var(--cg-color-message-text-info); }
87
88
 
88
- :host([variant="success"]) .callout { border-color: var(--cg-color-message-border-success); }
89
+ :host([variant="success"]) .callout { background: var(--cg-color-message-background-success); border-color: var(--cg-color-message-border-success); }
89
90
  :host([variant="success"]) .icon { color: var(--cg-color-message-icon-success); }
90
- :host([variant="success"]) .title { color: var(--cg-color-message-text-success); opacity: 0.85; }
91
+ :host([variant="success"]) .title { color: var(--cg-color-message-text-success); }
91
92
 
92
- :host([variant="warning"]) .callout { border-color: var(--cg-color-message-border-warning); }
93
+ :host([variant="warning"]) .callout { background: var(--cg-color-message-background-warning); border-color: var(--cg-color-message-border-warning); }
93
94
  :host([variant="warning"]) .icon { color: var(--cg-color-message-icon-warning); }
94
- :host([variant="warning"]) .title { color: var(--cg-color-message-text-warning); opacity: 0.85; }
95
+ :host([variant="warning"]) .title { color: var(--cg-color-message-text-warning); }
95
96
 
96
- :host([variant="danger"]) .callout { border-color: var(--cg-color-message-border-error); }
97
+ :host([variant="danger"]) .callout { background: var(--cg-color-message-background-error); border-color: var(--cg-color-message-border-error); }
97
98
  :host([variant="danger"]) .icon { color: var(--cg-color-message-icon-error); }
98
- :host([variant="danger"]) .title { color: var(--cg-color-message-text-error); opacity: 0.85; }
99
+ :host([variant="danger"]) .title { color: var(--cg-color-message-text-error); }
99
100
 
100
101
  :host([variant="neutral"]) .icon,
101
102
  :host([variant="neutral"]) .title { color: var(--cg-color-surface-container-text); }
@@ -148,13 +149,13 @@ i.styles = [p, f, b, v`
148
149
  .dismiss:hover { opacity: 0.8; }
149
150
  .dismiss:focus-visible {
150
151
  outline: none;
151
- box-shadow: 0 0 0 2px var(--cg-color-surface-base-background), 0 0 0 4px var(--cg-color-focus-ring);
152
+ box-shadow: 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-surface-base-background), 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
152
153
  }
153
154
  .dismiss svg { width: var(--cg-spacing-16); height: var(--cg-spacing-16); }
154
155
 
155
156
  @keyframes calloutExit {
156
157
  from { opacity: 1; transform: translateY(0); }
157
- to { opacity: 0; transform: translateY(-8px); }
158
+ to { opacity: 0; transform: translateY(calc(-1 * var(--cg-spacing-8))); }
158
159
  }
159
160
  .callout.dismissing {
160
161
  animation: calloutExit var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-in) forwards;
@@ -167,31 +168,31 @@ i.styles = [p, f, b, v`
167
168
  :host([rounded="lg"]) .callout { border-radius: var(--cg-border-radius-150); }
168
169
  :host([rounded="full"]) .callout { border-radius: var(--cg-border-radius-full); }
169
170
  `];
170
- t([
171
- o({ reflect: !0 })
172
- ], i.prototype, "variant", 2);
173
- t([
174
- o({ reflect: !0 })
175
- ], i.prototype, "rounded", 2);
176
- t([
177
- o()
178
- ], i.prototype, "title", 2);
179
- t([
180
- o()
181
- ], i.prototype, "description", 2);
182
- t([
183
- o({ type: Boolean })
184
- ], i.prototype, "dismissible", 2);
185
- t([
171
+ i([
172
+ a({ reflect: !0 })
173
+ ], r.prototype, "variant", 2);
174
+ i([
175
+ a({ reflect: !0 })
176
+ ], r.prototype, "rounded", 2);
177
+ i([
178
+ a()
179
+ ], r.prototype, "title", 2);
180
+ i([
181
+ a()
182
+ ], r.prototype, "description", 2);
183
+ i([
184
+ a({ type: Boolean })
185
+ ], r.prototype, "dismissible", 2);
186
+ i([
186
187
  u()
187
- ], i.prototype, "_dismissed", 2);
188
- t([
188
+ ], r.prototype, "_dismissed", 2);
189
+ i([
189
190
  u()
190
- ], i.prototype, "_dismissing", 2);
191
- i = t([
191
+ ], r.prototype, "_dismissing", 2);
192
+ r = i([
192
193
  m("cg-callout")
193
- ], i);
194
+ ], r);
194
195
  export {
195
- i as CgCallout
196
+ r as CgCallout
196
197
  };
197
198
  //# sourceMappingURL=cg-callout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cg-callout.js","sources":["../../../src/components/cg-callout/cg-callout.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\n/**\n * <cg-callout> — Alert/notice with semantic variants.\n *\n * Better than OpenUI's Callout:\n * - Dismissible\n * - Icon auto-selected by variant (or custom via slot)\n * - Action slot (button)\n * - 5 semantic variants\n */\n@customElement('cg-callout')\nexport class CgCallout extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n :host([hidden]) { display: none; }\n\n .callout {\n transition:\n background-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n border-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n line-height: var(--cg-line-height-normal);\n }\n\n /* Variants — colored border, icon + title colored (softened), description normal */\n :host([variant=\"info\"]) .callout { border-color: var(--cg-color-message-border-info); }\n :host([variant=\"info\"]) .icon { color: var(--cg-color-message-icon-info); }\n :host([variant=\"info\"]) .title { color: var(--cg-color-message-text-info); opacity: 0.85; }\n\n :host([variant=\"success\"]) .callout { border-color: var(--cg-color-message-border-success); }\n :host([variant=\"success\"]) .icon { color: var(--cg-color-message-icon-success); }\n :host([variant=\"success\"]) .title { color: var(--cg-color-message-text-success); opacity: 0.85; }\n\n :host([variant=\"warning\"]) .callout { border-color: var(--cg-color-message-border-warning); }\n :host([variant=\"warning\"]) .icon { color: var(--cg-color-message-icon-warning); }\n :host([variant=\"warning\"]) .title { color: var(--cg-color-message-text-warning); opacity: 0.85; }\n\n :host([variant=\"danger\"]) .callout { border-color: var(--cg-color-message-border-error); }\n :host([variant=\"danger\"]) .icon { color: var(--cg-color-message-icon-error); }\n :host([variant=\"danger\"]) .title { color: var(--cg-color-message-text-error); opacity: 0.85; }\n\n :host([variant=\"neutral\"]) .icon,\n :host([variant=\"neutral\"]) .title { color: var(--cg-color-surface-container-text); }\n\n .icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .icon svg {\n width: var(--cg-icon-size-150);\n height: var(--cg-icon-size-150);\n }\n\n .content { flex: 1; min-width: 0; }\n\n .title {\n font-weight: var(--cg-font-weight-medium);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-tight);\n letter-spacing: var(--cg-letter-spacing-tight);\n }\n\n .title + .description {\n margin-top: var(--cg-spacing-2);\n }\n\n .description {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n }\n\n ::slotted([slot=\"action\"]) {\n margin-top: var(--cg-spacing-8);\n }\n\n .dismiss {\n flex-shrink: 0;\n background: none;\n border: none;\n color: currentColor;\n opacity: 0.5;\n cursor: pointer;\n padding: var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n display: flex;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .dismiss:hover { opacity: 0.8; }\n .dismiss:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--cg-color-surface-base-background), 0 0 0 4px var(--cg-color-focus-ring);\n }\n .dismiss svg { width: var(--cg-spacing-16); height: var(--cg-spacing-16); }\n\n @keyframes calloutExit {\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(-8px); }\n }\n .callout.dismissing {\n animation: calloutExit var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-in) forwards;\n }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .callout { border-radius: 0; }\n :host([rounded=\"sm\"]) .callout { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .callout { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .callout { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .callout { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) variant: 'info' | 'success' | 'warning' | 'danger' | 'neutral' = 'info';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property() override title = '';\n @property() description = '';\n @property({ type: Boolean }) dismissible = false;\n\n @state() private _dismissed = false;\n @state() private _dismissing = false;\n\n private _dismissTimer = 0;\n\n private _iconPaths: Record<string, string> = {\n info: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n success: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-2 10l2 2 4-4',\n warning: 'M12 2L2 22h20L12 2zm0 7v4m0 4h.01',\n danger: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-1 5h2v6h-2zm0 8h2v2h-2z',\n neutral: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n };\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n clearTimeout(this._dismissTimer);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.dismissible && e.key === 'Escape') {\n e.preventDefault();\n this._dismiss();\n }\n }\n\n private _dismiss() {\n this._dismissing = true;\n this.dispatchEvent(new CustomEvent('cg-callout-dismiss', { bubbles: true, composed: true }));\n this._dismissTimer = window.setTimeout(() => {\n this._dismissed = true;\n this._dismissing = false;\n this.setAttribute('hidden', '');\n }, 250);\n }\n\n override render() {\n if (this._dismissed && !this._dismissing) return nothing;\n\n const iconPath = this._iconPaths[this.variant] ?? this._iconPaths.info;\n\n return html`\n <div class=\"callout ${this._dismissing ? 'dismissing' : ''}\" role=${this.variant === 'danger' || this.variant === 'warning' ? 'alert' : 'note'} aria-live=\"polite\" @keydown=${this._handleKeydown}>\n <div class=\"icon\">\n <slot name=\"icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"${iconPath}\"></path>\n </svg>\n </slot>\n </div>\n <div class=\"content\">\n ${this.title ? html`<div class=\"title\">${this.title}</div>` : nothing}\n ${this.description ? html`<div class=\"description\">${this.description}</div>` : nothing}\n <slot></slot>\n <slot name=\"action\"></slot>\n </div>\n ${this.dismissible ? html`\n <button class=\"dismiss\" @click=${this._dismiss} aria-label=\"Dismiss\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M18 6L6 18M6 6l12 12\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-callout': CgCallout;\n }\n}\n"],"names":["CgCallout","LitElement","e","nothing","iconPath","html","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-callout.js","sources":["../../../src/components/cg-callout/cg-callout.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, fadeSlideInKeyframes } from '../../styles/index.js';\n\n/**\n * <cg-callout> — Alert/notice with semantic variants.\n *\n * Better than OpenUI's Callout:\n * - Dismissible\n * - Icon auto-selected by variant (or custom via slot)\n * - Action slot (button)\n * - 5 semantic variants\n */\n@customElement('cg-callout')\nexport class CgCallout extends LitElement {\n static override styles = [hostBlock, reducedMotion, fadeSlideInKeyframes, css`\n :host {\n animation: fadeSlideIn var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n :host([hidden]) { display: none; }\n\n .callout {\n transition:\n background-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n border-color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-default) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-default);\n display: flex;\n align-items: flex-start;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n background: var(--cg-color-surface-cards-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n line-height: var(--cg-line-height-normal);\n }\n\n /* Variants — tinted surface + colored border for at-a-glance distinction,\n icon + title at full accent strength (no opacity dampening). */\n :host([variant=\"info\"]) .callout { background: var(--cg-color-message-background-info); border-color: var(--cg-color-message-border-info); }\n :host([variant=\"info\"]) .icon { color: var(--cg-color-message-icon-info); }\n :host([variant=\"info\"]) .title { color: var(--cg-color-message-text-info); }\n\n :host([variant=\"success\"]) .callout { background: var(--cg-color-message-background-success); border-color: var(--cg-color-message-border-success); }\n :host([variant=\"success\"]) .icon { color: var(--cg-color-message-icon-success); }\n :host([variant=\"success\"]) .title { color: var(--cg-color-message-text-success); }\n\n :host([variant=\"warning\"]) .callout { background: var(--cg-color-message-background-warning); border-color: var(--cg-color-message-border-warning); }\n :host([variant=\"warning\"]) .icon { color: var(--cg-color-message-icon-warning); }\n :host([variant=\"warning\"]) .title { color: var(--cg-color-message-text-warning); }\n\n :host([variant=\"danger\"]) .callout { background: var(--cg-color-message-background-error); border-color: var(--cg-color-message-border-error); }\n :host([variant=\"danger\"]) .icon { color: var(--cg-color-message-icon-error); }\n :host([variant=\"danger\"]) .title { color: var(--cg-color-message-text-error); }\n\n :host([variant=\"neutral\"]) .icon,\n :host([variant=\"neutral\"]) .title { color: var(--cg-color-surface-container-text); }\n\n .icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .icon svg {\n width: var(--cg-icon-size-150);\n height: var(--cg-icon-size-150);\n }\n\n .content { flex: 1; min-width: 0; }\n\n .title {\n font-weight: var(--cg-font-weight-medium);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-tight);\n letter-spacing: var(--cg-letter-spacing-tight);\n }\n\n .title + .description {\n margin-top: var(--cg-spacing-2);\n }\n\n .description {\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n }\n\n ::slotted([slot=\"action\"]) {\n margin-top: var(--cg-spacing-8);\n }\n\n .dismiss {\n flex-shrink: 0;\n background: none;\n border: none;\n color: currentColor;\n opacity: 0.5;\n cursor: pointer;\n padding: var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n display: flex;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .dismiss:hover { opacity: 0.8; }\n .dismiss:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-surface-base-background), 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n .dismiss svg { width: var(--cg-spacing-16); height: var(--cg-spacing-16); }\n\n @keyframes calloutExit {\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(calc(-1 * var(--cg-spacing-8))); }\n }\n .callout.dismissing {\n animation: calloutExit var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-in) forwards;\n }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .callout { border-radius: 0; }\n :host([rounded=\"sm\"]) .callout { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .callout { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .callout { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .callout { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) variant: 'info' | 'success' | 'warning' | 'danger' | 'neutral' = 'info';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property() override title = '';\n @property() description = '';\n @property({ type: Boolean }) dismissible = false;\n\n @state() private _dismissed = false;\n @state() private _dismissing = false;\n\n private _dismissTimer = 0;\n\n private _iconPaths: Record<string, string> = {\n info: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n success: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-2 10l2 2 4-4',\n warning: 'M12 2L2 22h20L12 2zm0 7v4m0 4h.01',\n danger: 'M12 2a10 10 0 100 20 10 10 0 000-20zm-1 5h2v6h-2zm0 8h2v2h-2z',\n neutral: 'M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v4a1 1 0 01-2 0V8a1 1 0 011-1zm0 8a1 1 0 110 2 1 1 0 010-2z',\n };\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n clearTimeout(this._dismissTimer);\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (this.dismissible && e.key === 'Escape') {\n e.preventDefault();\n this._dismiss();\n }\n }\n\n private _dismiss() {\n this._dismissing = true;\n this.dispatchEvent(new CustomEvent('cg-callout-dismiss', { bubbles: true, composed: true }));\n this._dismissTimer = window.setTimeout(() => {\n this._dismissed = true;\n this._dismissing = false;\n this.setAttribute('hidden', '');\n }, 250);\n }\n\n override render() {\n if (this._dismissed && !this._dismissing) return nothing;\n\n const iconPath = this._iconPaths[this.variant] ?? this._iconPaths.info;\n // role=\"alert\" carries implicit aria-live=\"assertive\"; setting an explicit\n // \"polite\" on it downgrades urgent callouts. Pair role and aria-live so\n // danger/warning announce assertively and the rest stay polite.\n const isAlert = this.variant === 'danger' || this.variant === 'warning';\n\n return html`\n <div class=\"callout ${this._dismissing ? 'dismissing' : ''}\" role=${isAlert ? 'alert' : 'note'} aria-live=${isAlert ? 'assertive' : 'polite'} @keydown=${this._handleKeydown}>\n <div class=\"icon\">\n <slot name=\"icon\">\n <svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"${iconPath}\"></path>\n </svg>\n </slot>\n </div>\n <div class=\"content\">\n ${this.title ? html`<div class=\"title\">${this.title}</div>` : nothing}\n ${this.description ? html`<div class=\"description\">${this.description}</div>` : nothing}\n <slot></slot>\n <slot name=\"action\"></slot>\n </div>\n ${this.dismissible ? html`\n <button class=\"dismiss\" @click=${this._dismiss} aria-label=\"Dismiss\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M18 6L6 18M6 6l12 12\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-callout': CgCallout;\n }\n}\n"],"names":["CgCallout","LitElement","e","nothing","iconPath","isAlert","html","hostBlock","reducedMotion","fadeSlideInKeyframes","css","__decorateClass","property","state","customElement"],"mappings":"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"}