@cognivo/components 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/dist/chunks/focus-trap-vlQwKK-3.js +82 -0
  2. package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
  3. package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
  4. package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
  5. package/dist/cognivo.min.js +3375 -5270
  6. package/dist/cognivo.min.js.map +1 -1
  7. package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
  8. package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
  9. package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
  10. package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
  11. package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
  12. package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
  13. package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
  14. package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
  15. package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
  16. package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
  17. package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
  18. package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
  19. package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
  20. package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
  21. package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
  22. package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
  23. package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
  24. package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
  25. package/dist/components/ai-annotation/ai-annotation.js +2 -2
  26. package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
  27. package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
  28. package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
  29. package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
  30. package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
  31. package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
  32. package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
  33. package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
  34. package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
  35. package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
  36. package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
  37. package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
  38. package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
  39. package/dist/components/ai-avatar/ai-avatar.js +1 -1
  40. package/dist/components/ai-badge/ai-badge.js +1 -1
  41. package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
  42. package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
  43. package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
  44. package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
  45. package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
  46. package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
  47. package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
  48. package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
  49. package/dist/components/ai-changelog/ai-changelog.js +26 -26
  50. package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
  51. package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
  52. package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
  53. package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
  54. package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
  55. package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
  56. package/dist/components/ai-chat/ai-chat.js +9 -3
  57. package/dist/components/ai-chat/ai-chat.js.map +1 -1
  58. package/dist/components/ai-citation/ai-citation.d.ts +0 -6
  59. package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
  60. package/dist/components/ai-citation/ai-citation.js +64 -90
  61. package/dist/components/ai-citation/ai-citation.js.map +1 -1
  62. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
  63. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
  64. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
  65. package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
  66. package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
  67. package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
  68. package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
  69. package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
  70. package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
  71. package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
  72. package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
  73. package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
  74. package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
  75. package/dist/components/ai-context-window/ai-context-window.js +19 -19
  76. package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
  77. package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
  78. package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
  79. package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
  80. package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
  81. package/dist/components/ai-data-card/ai-data-card.js +2 -2
  82. package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
  83. package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
  84. package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
  85. package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
  86. package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
  87. package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
  88. package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
  89. package/dist/components/ai-data-table/ai-data-table.js +9 -9
  90. package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
  91. package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
  92. package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
  93. package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
  94. package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
  95. package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
  96. package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
  97. package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
  98. package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
  99. package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
  100. package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
  101. package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
  102. package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
  103. package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
  104. package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
  105. package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
  106. package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
  107. package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
  108. package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
  109. package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
  110. package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
  111. package/dist/components/ai-feedback/ai-feedback.js +10 -5
  112. package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
  113. package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
  114. package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
  115. package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
  116. package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
  117. package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
  118. package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
  119. package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
  120. package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
  121. package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
  122. package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
  123. package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
  124. package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
  125. package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
  126. package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
  127. package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
  128. package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
  129. package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
  130. package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
  131. package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
  132. package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
  133. package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
  134. package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
  135. package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
  136. package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
  137. package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
  138. package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
  139. package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
  140. package/dist/components/ai-presence/ai-presence.js +25 -25
  141. package/dist/components/ai-presence/ai-presence.js.map +1 -1
  142. package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
  143. package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
  144. package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
  145. package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
  146. package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
  147. package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
  148. package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
  149. package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
  150. package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
  151. package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
  152. package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
  153. package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
  154. package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
  155. package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
  156. package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
  157. package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
  158. package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
  159. package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
  160. package/dist/components/ai-search/ai-search.js +1 -1
  161. package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
  162. package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
  163. package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
  164. package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
  165. package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
  166. package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
  167. package/dist/components/ai-status-page/ai-status-page.js +15 -15
  168. package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
  169. package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
  170. package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
  171. package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
  172. package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
  173. package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
  174. package/dist/components/ai-thinking/ai-thinking.js +1 -1
  175. package/dist/components/ai-timeline/ai-timeline.js +2 -2
  176. package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
  177. package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
  178. package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
  179. package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
  180. package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
  181. package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
  182. package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
  183. package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
  184. package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
  185. package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
  186. package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
  187. package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
  188. package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
  189. package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
  190. package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
  191. package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
  192. package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
  193. package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
  194. package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
  195. package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
  196. package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
  197. package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
  198. package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
  199. package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
  200. package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
  201. package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
  202. package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
  203. package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
  204. package/dist/components/bias-authority/bias-authority.js +1 -1
  205. package/dist/components/bias-commitment/bias-commitment.js +1 -1
  206. package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
  207. package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
  208. package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
  209. package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
  210. package/dist/components/cg-accordion/cg-accordion.js +51 -43
  211. package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
  212. package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
  213. package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
  214. package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
  215. package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
  216. package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
  217. package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
  218. package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
  219. package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
  220. package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
  221. package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
  222. package/dist/components/cg-avatar/cg-avatar.js +24 -24
  223. package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
  224. package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
  225. package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
  226. package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
  227. package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
  228. package/dist/components/cg-badge/cg-badge.js +26 -20
  229. package/dist/components/cg-badge/cg-badge.js.map +1 -1
  230. package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
  231. package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
  232. package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
  233. package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
  234. package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
  235. package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
  236. package/dist/components/cg-button/cg-button.d.ts +5 -71
  237. package/dist/components/cg-button/cg-button.d.ts.map +1 -1
  238. package/dist/components/cg-button/cg-button.js +63 -172
  239. package/dist/components/cg-button/cg-button.js.map +1 -1
  240. package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
  241. package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
  242. package/dist/components/cg-button-group/cg-button-group.js +43 -29
  243. package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
  244. package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
  245. package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
  246. package/dist/components/cg-calendar/cg-calendar.js +28 -12
  247. package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
  248. package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
  249. package/dist/components/cg-callout/cg-callout.js +49 -48
  250. package/dist/components/cg-callout/cg-callout.js.map +1 -1
  251. package/dist/components/cg-card/cg-card.d.ts +9 -22
  252. package/dist/components/cg-card/cg-card.d.ts.map +1 -1
  253. package/dist/components/cg-card/cg-card.js +28 -56
  254. package/dist/components/cg-card/cg-card.js.map +1 -1
  255. package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
  256. package/dist/components/cg-carousel/cg-carousel.js +19 -13
  257. package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
  258. package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
  259. package/dist/components/cg-chart/cg-chart.js +63 -58
  260. package/dist/components/cg-chart/cg-chart.js.map +1 -1
  261. package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
  262. package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
  263. package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
  264. package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
  265. package/dist/components/cg-chip/cg-chip.js +31 -31
  266. package/dist/components/cg-chip/cg-chip.js.map +1 -1
  267. package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
  268. package/dist/components/cg-code-block/cg-code-block.js +36 -34
  269. package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
  270. package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
  271. package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
  272. package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
  273. package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
  274. package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
  275. package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
  276. package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
  277. package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
  278. package/dist/components/cg-combobox/cg-combobox.js +13 -6
  279. package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
  280. package/dist/components/cg-command/cg-command.d.ts.map +1 -1
  281. package/dist/components/cg-command/cg-command.js +52 -45
  282. package/dist/components/cg-command/cg-command.js.map +1 -1
  283. package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
  284. package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
  285. package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
  286. package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
  287. package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
  288. package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
  289. package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
  290. package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
  291. package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
  292. package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
  293. package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
  294. package/dist/components/cg-drawer/cg-drawer.js +3 -3
  295. package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
  296. package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
  297. package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
  298. package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
  299. package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
  300. package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
  301. package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
  302. package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
  303. package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
  304. package/dist/components/cg-file-input/cg-file-input.js +9 -10
  305. package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
  306. package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
  307. package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
  308. package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
  309. package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
  310. package/dist/components/cg-form/cg-form.js +17 -17
  311. package/dist/components/cg-form/cg-form.js.map +1 -1
  312. package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
  313. package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
  314. package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
  315. package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
  316. package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
  317. package/dist/components/cg-icon/cg-icon.js +44 -37
  318. package/dist/components/cg-icon/cg-icon.js.map +1 -1
  319. package/dist/components/cg-image/cg-image.js +2 -2
  320. package/dist/components/cg-image/cg-image.js.map +1 -1
  321. package/dist/components/cg-image-block/cg-image-block.js +3 -3
  322. package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
  323. package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
  324. package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
  325. package/dist/components/cg-input/cg-input.js +3 -3
  326. package/dist/components/cg-input/cg-input.js.map +1 -1
  327. package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
  328. package/dist/components/cg-kbd/cg-kbd.js +26 -24
  329. package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
  330. package/dist/components/cg-label/cg-label.d.ts +4 -1
  331. package/dist/components/cg-label/cg-label.d.ts.map +1 -1
  332. package/dist/components/cg-label/cg-label.js +44 -41
  333. package/dist/components/cg-label/cg-label.js.map +1 -1
  334. package/dist/components/cg-link/cg-link.js +23 -23
  335. package/dist/components/cg-link/cg-link.js.map +1 -1
  336. package/dist/components/cg-list/cg-list.js +5 -5
  337. package/dist/components/cg-list/cg-list.js.map +1 -1
  338. package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
  339. package/dist/components/cg-listbox/cg-listbox.js +46 -40
  340. package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
  341. package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
  342. package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
  343. package/dist/components/cg-markdown/cg-markdown.js +171 -121
  344. package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
  345. package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
  346. package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
  347. package/dist/components/cg-menubar/cg-menubar.js +59 -47
  348. package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
  349. package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
  350. package/dist/components/cg-meter/cg-meter.js +76 -76
  351. package/dist/components/cg-meter/cg-meter.js.map +1 -1
  352. package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
  353. package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
  354. package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
  355. package/dist/components/cg-modal/cg-modal.d.ts +3 -0
  356. package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
  357. package/dist/components/cg-modal/cg-modal.js +82 -83
  358. package/dist/components/cg-modal/cg-modal.js.map +1 -1
  359. package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
  360. package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
  361. package/dist/components/cg-navbar/cg-navbar.js +64 -55
  362. package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
  363. package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
  364. package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
  365. package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
  366. package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
  367. package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
  368. package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
  369. package/dist/components/cg-number-input/cg-number-input.js +90 -77
  370. package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
  371. package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
  372. package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
  373. package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
  374. package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
  375. package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
  376. package/dist/components/cg-pagination/cg-pagination.js +50 -49
  377. package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
  378. package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
  379. package/dist/components/cg-password-input/cg-password-input.js +42 -34
  380. package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
  381. package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
  382. package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
  383. package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
  384. package/dist/components/cg-popover/cg-popover.d.ts +12 -2
  385. package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
  386. package/dist/components/cg-popover/cg-popover.js +90 -63
  387. package/dist/components/cg-popover/cg-popover.js.map +1 -1
  388. package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
  389. package/dist/components/cg-portal/cg-portal.js +42 -41
  390. package/dist/components/cg-portal/cg-portal.js.map +1 -1
  391. package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
  392. package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
  393. package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
  394. package/dist/components/cg-radio/cg-radio.d.ts +10 -0
  395. package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
  396. package/dist/components/cg-radio/cg-radio.js +59 -48
  397. package/dist/components/cg-radio/cg-radio.js.map +1 -1
  398. package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
  399. package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
  400. package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
  401. package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
  402. package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
  403. package/dist/components/cg-rating/cg-rating.js +56 -54
  404. package/dist/components/cg-rating/cg-rating.js.map +1 -1
  405. package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
  406. package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
  407. package/dist/components/cg-resizable/cg-resizable.js +45 -35
  408. package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
  409. package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
  410. package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
  411. package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
  412. package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
  413. package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
  414. package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
  415. package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
  416. package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
  417. package/dist/components/cg-select/cg-select.d.ts +4 -2
  418. package/dist/components/cg-select/cg-select.d.ts.map +1 -1
  419. package/dist/components/cg-select/cg-select.js +96 -58
  420. package/dist/components/cg-select/cg-select.js.map +1 -1
  421. package/dist/components/cg-separator/cg-separator.d.ts +1 -2
  422. package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
  423. package/dist/components/cg-separator/cg-separator.js +5 -8
  424. package/dist/components/cg-separator/cg-separator.js.map +1 -1
  425. package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
  426. package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
  427. package/dist/components/cg-sheet/cg-sheet.js +80 -43
  428. package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
  429. package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
  430. package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
  431. package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
  432. package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
  433. package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
  434. package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
  435. package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
  436. package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
  437. package/dist/components/cg-slider/cg-slider.js +80 -73
  438. package/dist/components/cg-slider/cg-slider.js.map +1 -1
  439. package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
  440. package/dist/components/cg-spinner/cg-spinner.js +10 -19
  441. package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
  442. package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
  443. package/dist/components/cg-split-button/cg-split-button.js +64 -50
  444. package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
  445. package/dist/components/cg-stack/cg-stack.js +1 -1
  446. package/dist/components/cg-steps/cg-steps.js +1 -1
  447. package/dist/components/cg-switch/cg-switch.d.ts +3 -0
  448. package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
  449. package/dist/components/cg-switch/cg-switch.js +39 -47
  450. package/dist/components/cg-switch/cg-switch.js.map +1 -1
  451. package/dist/components/cg-table/cg-table.d.ts +0 -7
  452. package/dist/components/cg-table/cg-table.d.ts.map +1 -1
  453. package/dist/components/cg-table/cg-table.js +50 -47
  454. package/dist/components/cg-table/cg-table.js.map +1 -1
  455. package/dist/components/cg-tabs/cg-tabs.js +1 -1
  456. package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
  457. package/dist/components/cg-text/cg-text.js +1 -1
  458. package/dist/components/cg-textarea/cg-textarea.js +1 -1
  459. package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
  460. package/dist/components/cg-toaster/cg-toaster.js +3 -3
  461. package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
  462. package/dist/components/cg-toggle/cg-toggle.js +1 -1
  463. package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
  464. package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
  465. package/dist/foundation.d.ts +0 -16
  466. package/dist/foundation.d.ts.map +1 -1
  467. package/dist/foundation.js +174 -206
  468. package/dist/foundation.js.map +1 -1
  469. package/dist/index.d.ts +1 -17
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +100 -132
  472. package/dist/index.js.map +1 -1
  473. package/dist/utils/focus-trap.d.ts +19 -2
  474. package/dist/utils/focus-trap.d.ts.map +1 -1
  475. package/package.json +6 -810
  476. package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
  477. package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
  478. package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
  479. package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
  480. package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
  481. package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
  482. package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
  483. package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
  484. package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
  485. package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
  486. package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
  487. package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
  488. package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
  489. package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
  490. package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
  491. package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
  492. package/dist/components/cg-draggable/cg-draggable.js +0 -136
  493. package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
  494. package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
  495. package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
  496. package/dist/components/cg-droppable/cg-droppable.js +0 -114
  497. package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
  498. package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
  499. package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
  500. package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
  501. package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
  502. package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
  503. package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
  504. package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
  505. package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
  506. package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
  507. package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
  508. package/dist/components/cg-kanban/cg-kanban.js +0 -86
  509. package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
  510. package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
  511. package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
  512. package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
  513. package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
  514. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
  515. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
  516. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
  517. package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
  518. package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
  519. package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
  520. package/dist/components/cg-search-input/cg-search-input.js +0 -106
  521. package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
  522. package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
  523. package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
  524. package/dist/components/cg-sortable/cg-sortable.js +0 -177
  525. package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
  526. package/dist/components/cg-theme/cg-theme.d.ts +0 -82
  527. package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
  528. package/dist/components/cg-theme/cg-theme.js +0 -91
  529. package/dist/components/cg-theme/cg-theme.js.map +0 -1
  530. package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
  531. package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
  532. package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
  533. package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
  534. package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
  535. package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
  536. package/dist/components/cg-timeline/cg-timeline.js +0 -131
  537. package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
  538. package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
  539. package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
  540. package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
  541. package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
  542. package/dist/utils/drag-manager.d.ts +0 -40
  543. package/dist/utils/drag-manager.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cg-checkbox.js","sources":["../../../src/components/cg-checkbox/cg-checkbox.ts"],"sourcesContent":["import { LitElement, html, css, nothing, type PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-checkbox\n * Checkbox with animated tick draw, spring bounce, and indeterminate state.\n * Supports rich label content via the default slot — links and other\n * interactive elements inside the label do not toggle the checkbox.\n *\n * @example\n * ```html\n * <cg-checkbox label=\"Accept terms\" description=\"Required to continue\"></cg-checkbox>\n * <cg-checkbox checked label=\"Notifications\"></cg-checkbox>\n * <cg-checkbox indeterminate label=\"Select all\"></cg-checkbox>\n * <cg-checkbox rounded=\"full\" checked label=\"Round checkbox\"></cg-checkbox>\n * <cg-checkbox>I agree to the <a href=\"/terms\">terms</a></cg-checkbox>\n * ```\n *\n * @slot - Default slot for label content (overrides `label` prop)\n * @slot description - Description content (overrides `description` prop)\n *\n * @fires {CustomEvent<{checked: boolean, value: string}>} cg-change - When toggled\n */\n@customElement('cg-checkbox')\nexport class CgCheckbox extends LitElement {\n static formAssociated = true;\n private _internals: ElementInternals | undefined;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n label {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n cursor: pointer;\n padding: var(--cg-spacing-6) 0;\n min-height: 44px;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n }\n :host([disabled]) label {\n pointer-events: none;\n }\n :host([disabled]) .box {\n background: var(--cg-color-checkbox-background-disabled);\n border-color: var(--cg-color-checkbox-border-disabled);\n }\n :host([disabled]) .check-icon {\n color: var(--cg-color-checkbox-checkmark-disabled);\n }\n\n /* ── Box ── */\n .box {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n border: var(--cg-border-width-100) solid var(--cg-color-checkbox-border-default);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default), box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .box { border-radius: 0; }\n :host([rounded=\"sm\"]) .box { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .box { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .box { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .box { border-radius: var(--cg-border-radius-full); }\n\n /* Hover */\n :host(:not([disabled])) label:hover .box {\n border-color: var(--cg-color-checkbox-background-hover);\n }\n\n /* Pressed */\n :host(:not([disabled])) label:active .box {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* Focus ring */\n label:focus-visible .box {\n border-color: var(--cg-color-checkbox-border-focus);\n box-shadow: 0 0 0 2px var(--cg-color-focus-ring-offset), 0 0 0 4px var(--cg-color-focus-ring);\n }\n\n /* ── Checked state ── */\n .box.checked {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n animation: boxPop var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* Indeterminate */\n .box.indeterminate {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n }\n\n /* ── Animated tick — stroke reveal ── */\n .check-icon {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n color: var(--cg-color-checkbox-checkmark-default);\n overflow: visible;\n }\n\n .check-icon .tick {\n stroke-dasharray: 24;\n stroke-dashoffset: 24;\n animation: drawTick var(--cg-transition-duration-slow) 60ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n .check-icon .dash {\n stroke-dasharray: 14;\n stroke-dashoffset: 14;\n animation: drawDash var(--cg-transition-duration-default) 40ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n @keyframes drawTick {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes drawDash {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes boxPop {\n 0% { transform: scale(1); }\n 30% { transform: scale(0.85); }\n 60% { transform: scale(1.08); }\n 80% { transform: scale(0.97); }\n 100% { transform: scale(1); }\n }\n\n /* Hidden native input */\n input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n /* ── Error state ── */\n :host([error]) .box {\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .box.checked,\n :host([error]) .box.indeterminate {\n background: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .label-text {\n color: var(--cg-color-status-error-text-default);\n }\n\n /* ── Success state ── */\n :host([success]) .box {\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .box.checked,\n :host([success]) .box.indeterminate {\n background: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .label-text {\n color: var(--cg-color-status-success-text-default);\n }\n\n /* ── Loading state ── */\n :host([loading]) label { pointer-events: none; opacity: 0.5; }\n .loading-spinner {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n margin-top: var(--cg-spacing-2);\n border: var(--cg-border-width-100) solid var(--cg-color-loading-spinner-secondary);\n border-top-color: var(--cg-color-loading-spinner-primary);\n border-radius: var(--cg-border-radius-full);\n animation: cg-checkbox-spin var(--cg-transition-duration-slow) linear infinite;\n }\n @keyframes cg-checkbox-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Text */\n .text-group { display: flex; flex-direction: column; gap: var(--cg-spacing-2); }\n .label-text {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-base-text);\n line-height: var(--cg-line-height-snug);\n }\n .description {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n line-height: var(--cg-line-height-snug);\n }\n `];\n\n @property() label = '';\n @property() description = '';\n @property() name = '';\n @property() value = '';\n @property({ type: Boolean }) checked = false;\n @property({ type: Boolean }) indeterminate = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) error = false;\n @property({ type: Boolean, reflect: true }) success = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) required = false;\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'sm';\n\n override updated(changed: PropertyValues) {\n super.updated(changed);\n if (changed.has('checked') || changed.has('value')) {\n this._internals?.setFormValue(this.checked ? (this.value || 'on') : null);\n }\n if (changed.has('required') || changed.has('checked')) {\n if (this.required && !this.checked) {\n this._internals?.setValidity({ valueMissing: true }, 'This field is required');\n } else {\n this._internals?.setValidity({});\n }\n }\n }\n\n formResetCallback() {\n this.checked = this.hasAttribute('checked');\n }\n\n formStateRestoreCallback(state: string) {\n this.checked = state === (this.value || 'on');\n }\n\n private _toggle(e: Event) {\n e.preventDefault();\n if (this.disabled || this.loading) return;\n const target = e.target as HTMLElement | null;\n if (target && target !== this) {\n const interactive = target.closest(\n 'a, button, [role=\"button\"], [role=\"link\"], input:not([type=\"checkbox\"]), select, textarea'\n );\n if (interactive) return;\n }\n this.checked = !this.checked;\n this.indeterminate = false;\n this.dispatchEvent(new CustomEvent('cg-change', {\n detail: { checked: this.checked, value: this.value },\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n const state = this.indeterminate ? 'indeterminate' : this.checked ? 'checked' : '';\n\n return html`\n <label\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"checkbox\"\n aria-checked=${this.indeterminate ? 'mixed' : String(this.checked)}\n aria-disabled=${String(this.disabled)}\n aria-required=${this.required ? 'true' : 'false'}\n aria-invalid=${this.error ? 'true' : 'false'}\n aria-busy=${this.loading ? 'true' : 'false'}\n @click=${this._toggle}\n @keydown=${(e: KeyboardEvent) => { if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); this._toggle(e); } }}\n >\n <input type=\"checkbox\" .checked=${this.checked} .indeterminate=${this.indeterminate}\n ?disabled=${this.disabled} name=${this.name} value=${this.value}\n tabindex=\"-1\" aria-hidden=\"true\"\n @click=${(e: Event) => e.stopPropagation()} />\n\n ${this.loading ? html`<span class=\"loading-spinner\" aria-hidden=\"true\"></span>` : html`<span class=\"box ${state}\">\n ${this.checked ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path class=\"tick\" d=\"M4 12L9 17L20 6\"></path>\n </svg>\n ` : nothing}\n ${this.indeterminate ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\">\n <path class=\"dash\" d=\"M5 12h14\"></path>\n </svg>\n ` : nothing}\n </span>`}\n\n <span class=\"text-group\">\n <span class=\"label-text\"><slot>${this.label}</slot></span>\n <span class=\"description\"><slot name=\"description\">${this.description}</slot></span>\n </span>\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-checkbox': CgCheckbox; }\n}\n"],"names":["CgCheckbox","LitElement","changed","state","e","target","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-checkbox.js","sources":["../../../src/components/cg-checkbox/cg-checkbox.ts"],"sourcesContent":["import { LitElement, html, css, nothing, type PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-checkbox\n * Checkbox with animated tick draw, spring bounce, and indeterminate state.\n *\n * @example\n * ```html\n * <cg-checkbox label=\"Accept terms\" description=\"Required to continue\"></cg-checkbox>\n * <cg-checkbox checked label=\"Notifications\"></cg-checkbox>\n * <cg-checkbox indeterminate label=\"Select all\"></cg-checkbox>\n * <cg-checkbox rounded=\"full\" checked label=\"Round checkbox\"></cg-checkbox>\n * ```\n *\n * @fires {CustomEvent<{checked: boolean, value: string}>} cg-change - When toggled\n */\n@customElement('cg-checkbox')\nexport class CgCheckbox extends LitElement {\n static formAssociated = true;\n private _internals: ElementInternals | undefined;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n static override styles = [hostBlock, reducedMotion, css`\n :host { display: inline-block; }\n\n label {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n cursor: pointer;\n padding: var(--cg-spacing-6) 0;\n min-height: 44px;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n }\n :host([disabled]) label {\n pointer-events: none;\n }\n :host([disabled]) .box {\n background: var(--cg-color-checkbox-background-disabled);\n border-color: var(--cg-color-checkbox-border-disabled);\n }\n :host([disabled]) .check-icon {\n color: var(--cg-color-checkbox-checkmark-disabled);\n }\n\n /* ── Box ── */\n .box {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n border: var(--cg-border-width-100) solid var(--cg-color-checkbox-border-default);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n transition: border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default), box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .box { border-radius: 0; }\n :host([rounded=\"sm\"]) .box { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .box { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .box { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .box { border-radius: var(--cg-border-radius-full); }\n\n /* Hover — scoped so it doesn't override the error/success border, and\n uses the accent BORDER token (not a -background- fill) for the edge. */\n :host(:not([disabled]):not([error]):not([success])) label:hover .box {\n border-color: var(--cg-color-checkbox-border-checked);\n }\n\n /* Pressed */\n :host(:not([disabled])) label:active .box {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* Focus ring */\n label:focus-visible .box {\n border-color: var(--cg-color-checkbox-border-focus);\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring-offset), 0 0 0 calc(var(--cg-border-width-100) * 2) var(--cg-color-focus-ring);\n }\n\n /* ── Checked state ── */\n .box.checked {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n animation: boxPop var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* Indeterminate — same spring entry as checked for consistent feedback. */\n .box.indeterminate {\n background: var(--cg-color-checkbox-background-checked);\n border-color: var(--cg-color-checkbox-border-checked);\n animation: boxPop var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n }\n\n /* ── Animated tick — stroke reveal ── */\n .check-icon {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n color: var(--cg-color-checkbox-checkmark-default);\n overflow: visible;\n }\n\n .check-icon .tick {\n stroke-dasharray: 24;\n stroke-dashoffset: 24;\n animation: drawTick var(--cg-transition-duration-slow) 60ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n .check-icon .dash {\n stroke-dasharray: 14;\n stroke-dashoffset: 14;\n animation: drawDash var(--cg-transition-duration-default) 40ms var(--cg-transition-easing-ease-out) forwards;\n }\n\n @keyframes drawTick {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes drawDash {\n to { stroke-dashoffset: 0; }\n }\n\n @keyframes boxPop {\n 0% { transform: scale(1); }\n 30% { transform: scale(0.85); }\n 60% { transform: scale(1.08); }\n 80% { transform: scale(0.97); }\n 100% { transform: scale(1); }\n }\n\n /* Hidden native input */\n input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n /* ── Error state ── */\n :host([error]) .box {\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .box.checked,\n :host([error]) .box.indeterminate {\n background: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-text-default);\n }\n :host([error]) .label-text {\n color: var(--cg-color-status-error-text-default);\n }\n\n /* ── Success state ── */\n :host([success]) .box {\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .box.checked,\n :host([success]) .box.indeterminate {\n background: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-text-default);\n }\n :host([success]) .label-text {\n color: var(--cg-color-status-success-text-default);\n }\n\n /* ── Loading state ── */\n :host([loading]) label { pointer-events: none; opacity: 0.5; }\n .loading-spinner {\n width: var(--cg-spacing-20);\n height: var(--cg-spacing-20);\n flex-shrink: 0;\n margin-top: var(--cg-spacing-2);\n border: var(--cg-border-width-100) solid var(--cg-color-loading-spinner-secondary);\n border-top-color: var(--cg-color-loading-spinner-primary);\n border-radius: var(--cg-border-radius-full);\n animation: cg-checkbox-spin var(--cg-transition-duration-slow) linear infinite;\n }\n @keyframes cg-checkbox-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Text */\n .text-group { display: flex; flex-direction: column; gap: var(--cg-spacing-2); }\n .label-text {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-base-text);\n line-height: var(--cg-line-height-snug);\n }\n .description {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n line-height: var(--cg-line-height-snug);\n }\n `];\n\n @property() label = '';\n @property() description = '';\n @property() name = '';\n @property() value = '';\n @property({ type: Boolean }) checked = false;\n @property({ type: Boolean }) indeterminate = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) error = false;\n @property({ type: Boolean, reflect: true }) success = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean }) required = false;\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'sm';\n\n override updated(changed: PropertyValues) {\n super.updated(changed);\n if (changed.has('checked') || changed.has('value')) {\n this._internals?.setFormValue(this.checked ? (this.value || 'on') : null);\n }\n if (changed.has('required') || changed.has('checked')) {\n if (this.required && !this.checked) {\n this._internals?.setValidity({ valueMissing: true }, 'This field is required');\n } else {\n this._internals?.setValidity({});\n }\n }\n }\n\n formResetCallback() {\n this.checked = this.hasAttribute('checked');\n }\n\n formStateRestoreCallback(state: string) {\n this.checked = state === (this.value || 'on');\n }\n\n private _toggle(e: Event) {\n e.preventDefault();\n if (this.disabled || this.loading) return;\n this.checked = !this.checked;\n this.indeterminate = false;\n this.dispatchEvent(new CustomEvent('cg-change', {\n detail: { checked: this.checked, value: this.value },\n bubbles: true, composed: true,\n }));\n }\n\n override render() {\n const state = this.indeterminate ? 'indeterminate' : this.checked ? 'checked' : '';\n\n return html`\n <label\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"checkbox\"\n aria-checked=${this.indeterminate ? 'mixed' : String(this.checked)}\n aria-disabled=${String(this.disabled)}\n aria-required=${this.required ? 'true' : 'false'}\n aria-invalid=${this.error ? 'true' : 'false'}\n aria-busy=${this.loading ? 'true' : 'false'}\n @click=${this._toggle}\n @keydown=${(e: KeyboardEvent) => { if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); this._toggle(e); } }}\n >\n <input type=\"checkbox\" .checked=${this.checked} .indeterminate=${this.indeterminate}\n ?disabled=${this.disabled} name=${this.name} value=${this.value}\n tabindex=\"-1\" aria-hidden=\"true\"\n @click=${(e: Event) => e.stopPropagation()} />\n\n ${this.loading ? html`<span class=\"loading-spinner\" aria-hidden=\"true\"></span>` : html`<span class=\"box ${state}\">\n ${this.checked ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path class=\"tick\" d=\"M4 12L9 17L20 6\"></path>\n </svg>\n ` : nothing}\n ${this.indeterminate ? html`\n <svg class=\"check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\">\n <path class=\"dash\" d=\"M5 12h14\"></path>\n </svg>\n ` : nothing}\n </span>`}\n\n ${this.label ? html`\n <span class=\"text-group\">\n <span class=\"label-text\">${this.label}</span>\n ${this.description ? html`<span class=\"description\">${this.description}</span>` : nothing}\n </span>\n ` : nothing}\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-checkbox': CgCheckbox; }\n}\n"],"names":["CgCheckbox","LitElement","changed","state","e","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { css as u, LitElement as h, nothing as g, html as d } from "lit";
2
- import { property as a, customElement as v } from "lit/decorators.js";
3
- import { a as p, r as b } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, t = (r, i, n, s) => {
5
- for (var o = s > 1 ? void 0 : s ? m(i, n) : i, c = r.length - 1, l; c >= 0; c--)
6
- (l = r[c]) && (o = (s ? l(i, n, o) : l(o)) || o);
7
- return s && o && f(i, n, o), o;
1
+ import { css as u, LitElement as h, nothing as n, html as g } from "lit";
2
+ import { property as t, customElement as v } from "lit/decorators.js";
3
+ import { a as p, r as b } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, a = (r, i, c, s) => {
5
+ for (var o = s > 1 ? void 0 : s ? m(i, c) : i, l = r.length - 1, d; l >= 0; l--)
6
+ (d = r[l]) && (o = (s ? d(i, c, o) : d(o)) || o);
7
+ return s && o && f(i, c, o), o;
8
8
  };
9
9
  let e = class extends h {
10
10
  constructor() {
@@ -25,22 +25,22 @@ let e = class extends h {
25
25
  }));
26
26
  }
27
27
  render() {
28
- return d`
28
+ return g`
29
29
  <span
30
30
  class="chip ${this.disabled ? "disabled" : ""}"
31
31
  role="button"
32
32
  tabindex="${this.disabled ? "-1" : "0"}"
33
33
  aria-disabled="${this.disabled}"
34
34
  aria-pressed="${this.selected}"
35
- aria-label="${this.label}"
35
+ aria-label="${this.label ? n : this.icon || n}"
36
36
  @click="${this._handleClick}"
37
37
  @keydown="${(r) => {
38
38
  (r.key === "Enter" || r.key === " ") && (r.preventDefault(), this._handleClick()), (r.key === "Delete" || r.key === "Backspace") && this.removable && (r.preventDefault(), this._handleRemove(r));
39
39
  }}"
40
40
  >
41
- ${this.icon ? d`<span class="chip-icon">${this.icon}</span>` : g}
41
+ ${this.icon ? g`<span class="chip-icon">${this.icon}</span>` : n}
42
42
  <span class="chip-label">${this.label}</span>
43
- ${this.removable && !this.disabled ? d`
43
+ ${this.removable && !this.disabled ? g`
44
44
  <button
45
45
  class="remove-btn"
46
46
  aria-label="Remove ${this.label}"
@@ -51,7 +51,7 @@ let e = class extends h {
51
51
  <path d="M7.5 2.5L2.5 7.5M2.5 2.5l5 5" stroke="currentColor" stroke-width="1.25" stroke-linecap="round"/>
52
52
  </svg>
53
53
  </button>
54
- ` : g}
54
+ ` : n}
55
55
  </span>
56
56
  `;
57
57
  }
@@ -191,7 +191,7 @@ e.styles = [p, b, u`
191
191
  .chip-label {
192
192
  overflow: hidden;
193
193
  text-overflow: ellipsis;
194
- max-width: 200px;
194
+ max-width: var(--cg-spacing-192);
195
195
  }
196
196
 
197
197
  /* ── Remove button ── */
@@ -217,37 +217,37 @@ e.styles = [p, b, u`
217
217
  transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
218
218
  }
219
219
  .remove-btn:hover { opacity: 1; }
220
- .remove-btn:active { transform: scale(0.9); }
220
+ .remove-btn:active { transform: scale(var(--cg-interaction-press-scale)); }
221
221
  .remove-btn:focus-visible {
222
222
  box-shadow: 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);
223
223
  outline: none;
224
224
  }
225
225
  `];
226
- t([
227
- a({ type: String })
226
+ a([
227
+ t({ type: String })
228
228
  ], e.prototype, "label", 2);
229
- t([
230
- a({ type: String, reflect: !0 })
229
+ a([
230
+ t({ type: String, reflect: !0 })
231
231
  ], e.prototype, "variant", 2);
232
- t([
233
- a({ type: Boolean })
232
+ a([
233
+ t({ type: Boolean })
234
234
  ], e.prototype, "removable", 2);
235
- t([
236
- a({ type: String, reflect: !0 })
235
+ a([
236
+ t({ type: String, reflect: !0 })
237
237
  ], e.prototype, "size", 2);
238
- t([
239
- a({ reflect: !0 })
238
+ a([
239
+ t({ reflect: !0 })
240
240
  ], e.prototype, "rounded", 2);
241
- t([
242
- a({ type: String })
241
+ a([
242
+ t({ type: String })
243
243
  ], e.prototype, "icon", 2);
244
- t([
245
- a({ type: Boolean })
244
+ a([
245
+ t({ type: Boolean })
246
246
  ], e.prototype, "disabled", 2);
247
- t([
248
- a({ type: Boolean, reflect: !0 })
247
+ a([
248
+ t({ type: Boolean, reflect: !0 })
249
249
  ], e.prototype, "selected", 2);
250
- e = t([
250
+ e = a([
251
251
  v("cg-chip")
252
252
  ], e);
253
253
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"cg-chip.js","sources":["../../../src/components/cg-chip/cg-chip.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 * @element cg-chip\n * Pill-shaped tag/chip with neutral default, color variants, optional icon,\n * removable X button, and toggleable selected state.\n *\n * @example\n * ```html\n * <cg-chip label=\"TypeScript\"></cg-chip>\n * <cg-chip label=\"Bug\" variant=\"error\" removable></cg-chip>\n * <cg-chip label=\"Active\" selected></cg-chip>\n * ```\n *\n * @fires {CustomEvent<{label: string, selected: boolean}>} cg-chip-click - When the chip is clicked\n * @fires {CustomEvent<{label: string}>} cg-chip-remove - When the remove button is clicked\n */\n@customElement('cg-chip')\nexport class CgChip extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n .chip {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-4);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-cards-background);\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n line-height: 1;\n white-space: nowrap;\n user-select: none;\n -webkit-font-smoothing: antialiased;\n transition:\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n /* ── Sizes ── */\n :host([size=\"sm\"]) .chip {\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n height: var(--cg-spacing-24);\n }\n :host([size=\"md\"]) .chip {\n padding: var(--cg-spacing-4) var(--cg-spacing-12);\n font-size: var(--cg-font-size-sm);\n height: var(--cg-spacing-32);\n }\n\n /* ── Hover ── */\n .chip:hover:not(.disabled) {\n border-color: var(--cg-color-input-border-hover);\n transform: scale(1.02);\n }\n\n /* ── Press ── */\n .chip:active:not(.disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* ── Focus ring ── */\n .chip:focus-visible {\n box-shadow:\n 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n outline-offset: var(--cg-outline-offset-default);\n }\n\n /* ── Disabled ── */\n .chip.disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* ── Variant: success ── */\n :host([variant=\"success\"]) .chip {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-border-default);\n }\n :host([variant=\"success\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-success-background-hover);\n }\n\n /* ── Variant: warning ── */\n :host([variant=\"warning\"]) .chip {\n background: var(--cg-color-status-warning-background-default);\n color: var(--cg-color-status-warning-text-default);\n border-color: var(--cg-color-status-warning-border-default);\n }\n :host([variant=\"warning\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-warning-background-hover);\n }\n\n /* ── Variant: error ── */\n :host([variant=\"error\"]) .chip {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-border-default);\n }\n :host([variant=\"error\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-error-background-hover);\n }\n\n /* ── Variant: info ── */\n :host([variant=\"info\"]) .chip {\n background: var(--cg-color-status-info-background-default);\n color: var(--cg-color-status-info-text-default);\n border-color: var(--cg-color-status-info-border-default);\n }\n :host([variant=\"info\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-info-background-hover);\n }\n\n /* ── Selected state ── */\n :host([selected]) .chip {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-color: var(--cg-color-action-primary-background-default);\n }\n :host([selected]) .chip:hover:not(.disabled) {\n background: var(--cg-color-action-primary-background-hover);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .chip { border-radius: 0; }\n :host([rounded=\"sm\"]) .chip { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .chip { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .chip { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .chip { border-radius: var(--cg-border-radius-full); }\n\n /* ── Icon ── */\n .chip-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n font-size: var(--cg-font-size-xs);\n }\n\n /* ── Label ── */\n .chip-label {\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n }\n\n /* ── Remove button ── */\n .remove-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n margin-left: var(--cg-spacing-2);\n margin-right: calc(-1 * var(--cg-spacing-4));\n border: none;\n border-radius: 50%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n opacity: 0.6;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 .remove-btn:hover { opacity: 1; }\n .remove-btn:active { transform: scale(0.9); }\n .remove-btn:focus-visible {\n box-shadow: 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n }\n `];\n\n @property({ type: String }) label = '';\n @property({ type: String, reflect: true }) variant: 'default' | 'success' | 'warning' | 'error' | 'info' = 'default';\n @property({ type: Boolean }) removable = false;\n @property({ type: String, reflect: true }) size: 'sm' | 'md' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'full';\n @property({ type: String }) icon = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean, reflect: true }) selected = false;\n\n private _handleClick() {\n if (this.disabled) return;\n this.selected = !this.selected;\n this.dispatchEvent(new CustomEvent('cg-chip-click', {\n bubbles: true,\n composed: true,\n detail: { label: this.label, selected: this.selected },\n }));\n }\n\n private _handleRemove(e: Event) {\n e.stopPropagation();\n if (this.disabled) return;\n this.dispatchEvent(new CustomEvent('cg-chip-remove', {\n bubbles: true,\n composed: true,\n detail: { label: this.label },\n }));\n }\n\n override render() {\n return html`\n <span\n class=\"chip ${this.disabled ? 'disabled' : ''}\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-disabled=\"${this.disabled}\"\n aria-pressed=\"${this.selected}\"\n aria-label=\"${this.label}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._handleClick();\n }\n if ((e.key === 'Delete' || e.key === 'Backspace') && this.removable) {\n e.preventDefault();\n this._handleRemove(e);\n }\n }}\"\n >\n ${this.icon ? html`<span class=\"chip-icon\">${this.icon}</span>` : nothing}\n <span class=\"chip-label\">${this.label}</span>\n ${this.removable && !this.disabled ? html`\n <button\n class=\"remove-btn\"\n aria-label=\"Remove ${this.label}\"\n tabindex=\"-1\"\n @click=\"${this._handleRemove}\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7.5 2.5L2.5 7.5M2.5 2.5l5 5\" stroke=\"currentColor\" stroke-width=\"1.25\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n ` : nothing}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-chip': CgChip;\n }\n}\n"],"names":["CgChip","LitElement","e","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-chip.js","sources":["../../../src/components/cg-chip/cg-chip.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 * @element cg-chip\n * Pill-shaped tag/chip with neutral default, color variants, optional icon,\n * removable X button, and toggleable selected state.\n *\n * @example\n * ```html\n * <cg-chip label=\"TypeScript\"></cg-chip>\n * <cg-chip label=\"Bug\" variant=\"error\" removable></cg-chip>\n * <cg-chip label=\"Active\" selected></cg-chip>\n * ```\n *\n * @fires {CustomEvent<{label: string, selected: boolean}>} cg-chip-click - When the chip is clicked\n * @fires {CustomEvent<{label: string}>} cg-chip-remove - When the remove button is clicked\n */\n@customElement('cg-chip')\nexport class CgChip extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n .chip {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-4);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-cards-background);\n color: var(--cg-color-surface-base-text);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n line-height: 1;\n white-space: nowrap;\n user-select: none;\n -webkit-font-smoothing: antialiased;\n transition:\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n /* ── Sizes ── */\n :host([size=\"sm\"]) .chip {\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n font-size: var(--cg-font-size-xs);\n height: var(--cg-spacing-24);\n }\n :host([size=\"md\"]) .chip {\n padding: var(--cg-spacing-4) var(--cg-spacing-12);\n font-size: var(--cg-font-size-sm);\n height: var(--cg-spacing-32);\n }\n\n /* ── Hover ── */\n .chip:hover:not(.disabled) {\n border-color: var(--cg-color-input-border-hover);\n transform: scale(1.02);\n }\n\n /* ── Press ── */\n .chip:active:not(.disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n\n /* ── Focus ring ── */\n .chip:focus-visible {\n box-shadow:\n 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n outline-offset: var(--cg-outline-offset-default);\n }\n\n /* ── Disabled ── */\n .chip.disabled {\n opacity: 0.45;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* ── Variant: success ── */\n :host([variant=\"success\"]) .chip {\n background: var(--cg-color-status-success-background-default);\n color: var(--cg-color-status-success-text-default);\n border-color: var(--cg-color-status-success-border-default);\n }\n :host([variant=\"success\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-success-background-hover);\n }\n\n /* ── Variant: warning ── */\n :host([variant=\"warning\"]) .chip {\n background: var(--cg-color-status-warning-background-default);\n color: var(--cg-color-status-warning-text-default);\n border-color: var(--cg-color-status-warning-border-default);\n }\n :host([variant=\"warning\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-warning-background-hover);\n }\n\n /* ── Variant: error ── */\n :host([variant=\"error\"]) .chip {\n background: var(--cg-color-status-error-background-default);\n color: var(--cg-color-status-error-text-default);\n border-color: var(--cg-color-status-error-border-default);\n }\n :host([variant=\"error\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-error-background-hover);\n }\n\n /* ── Variant: info ── */\n :host([variant=\"info\"]) .chip {\n background: var(--cg-color-status-info-background-default);\n color: var(--cg-color-status-info-text-default);\n border-color: var(--cg-color-status-info-border-default);\n }\n :host([variant=\"info\"]) .chip:hover:not(.disabled) {\n background: var(--cg-color-status-info-background-hover);\n }\n\n /* ── Selected state ── */\n :host([selected]) .chip {\n background: var(--cg-color-action-primary-background-default);\n color: var(--cg-color-action-primary-text-default);\n border-color: var(--cg-color-action-primary-background-default);\n }\n :host([selected]) .chip:hover:not(.disabled) {\n background: var(--cg-color-action-primary-background-hover);\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .chip { border-radius: 0; }\n :host([rounded=\"sm\"]) .chip { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .chip { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .chip { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .chip { border-radius: var(--cg-border-radius-full); }\n\n /* ── Icon ── */\n .chip-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n font-size: var(--cg-font-size-xs);\n }\n\n /* ── Label ── */\n .chip-label {\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: var(--cg-spacing-192);\n }\n\n /* ── Remove button ── */\n .remove-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n margin-left: var(--cg-spacing-2);\n margin-right: calc(-1 * var(--cg-spacing-4));\n border: none;\n border-radius: 50%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n opacity: 0.6;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 .remove-btn:hover { opacity: 1; }\n .remove-btn:active { transform: scale(var(--cg-interaction-press-scale)); }\n .remove-btn:focus-visible {\n box-shadow: 0 0 0 var(--cg-spacing-2) var(--cg-overlay-accent-strong);\n outline: none;\n }\n `];\n\n @property({ type: String }) label = '';\n @property({ type: String, reflect: true }) variant: 'default' | 'success' | 'warning' | 'error' | 'info' = 'default';\n @property({ type: Boolean }) removable = false;\n @property({ type: String, reflect: true }) size: 'sm' | 'md' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'full';\n @property({ type: String }) icon = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean, reflect: true }) selected = false;\n\n private _handleClick() {\n if (this.disabled) return;\n this.selected = !this.selected;\n this.dispatchEvent(new CustomEvent('cg-chip-click', {\n bubbles: true,\n composed: true,\n detail: { label: this.label, selected: this.selected },\n }));\n }\n\n private _handleRemove(e: Event) {\n e.stopPropagation();\n if (this.disabled) return;\n this.dispatchEvent(new CustomEvent('cg-chip-remove', {\n bubbles: true,\n composed: true,\n detail: { label: this.label },\n }));\n }\n\n override render() {\n return html`\n <span\n class=\"chip ${this.disabled ? 'disabled' : ''}\"\n role=\"button\"\n tabindex=\"${this.disabled ? '-1' : '0'}\"\n aria-disabled=\"${this.disabled}\"\n aria-pressed=\"${this.selected}\"\n aria-label=\"${this.label ? nothing : (this.icon || nothing)}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._handleClick();\n }\n if ((e.key === 'Delete' || e.key === 'Backspace') && this.removable) {\n e.preventDefault();\n this._handleRemove(e);\n }\n }}\"\n >\n ${this.icon ? html`<span class=\"chip-icon\">${this.icon}</span>` : nothing}\n <span class=\"chip-label\">${this.label}</span>\n ${this.removable && !this.disabled ? html`\n <button\n class=\"remove-btn\"\n aria-label=\"Remove ${this.label}\"\n tabindex=\"-1\"\n @click=\"${this._handleRemove}\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7.5 2.5L2.5 7.5M2.5 2.5l5 5\" stroke=\"currentColor\" stroke-width=\"1.25\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n ` : nothing}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-chip': CgChip;\n }\n}\n"],"names":["CgChip","LitElement","e","html","nothing","hostBase","reducedMotion","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;AAoBO,IAAMA,IAAN,cAAqBC,EAAW;AAAA,EAAhC,cAAA;AAAA,UAAA,GAAA,SAAA,GAyKuB,KAAA,QAAQ,IACO,KAAA,UAAgE,WAC9E,KAAA,YAAY,IACE,KAAA,OAAoB,MAClC,KAAA,UAAgD,QACjD,KAAA,OAAO,IACN,KAAA,WAAW,IACI,KAAA,WAAW;AAAA,EAAA;AAAA,EAE/C,eAAe;AACrB,IAAI,KAAK,aACT,KAAK,WAAW,CAAC,KAAK,UACtB,KAAK,cAAc,IAAI,YAAY,iBAAiB;AAAA,MAClD,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ,EAAE,OAAO,KAAK,OAAO,UAAU,KAAK,SAAA;AAAA,IAAS,CACtD,CAAC;AAAA,EACJ;AAAA,EAEQ,cAAcC,GAAU;AAE9B,IADAA,EAAE,gBAAA,GACE,MAAK,YACT,KAAK,cAAc,IAAI,YAAY,kBAAkB;AAAA,MACnD,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ,EAAE,OAAO,KAAK,MAAA;AAAA,IAAM,CAC7B,CAAC;AAAA,EACJ;AAAA,EAES,SAAS;AAChB,WAAOC;AAAA;AAAA,sBAEW,KAAK,WAAW,aAAa,EAAE;AAAA;AAAA,oBAEjC,KAAK,WAAW,OAAO,GAAG;AAAA,yBACrB,KAAK,QAAQ;AAAA,wBACd,KAAK,QAAQ;AAAA,sBACf,KAAK,QAAQC,IAAW,KAAK,QAAQA,CAAQ;AAAA,kBACjD,KAAK,YAAY;AAAA,oBACf,CAACF,MAAqB;AAChC,OAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACF,KAAK,aAAA,KAEFA,EAAE,QAAQ,YAAYA,EAAE,QAAQ,gBAAgB,KAAK,cACxDA,EAAE,eAAA,GACF,KAAK,cAAcA,CAAC;AAAA,IAExB,CAAC;AAAA;AAAA,UAEC,KAAK,OAAOC,4BAA+B,KAAK,IAAI,YAAYC,CAAO;AAAA,mCAC9C,KAAK,KAAK;AAAA,UACnC,KAAK,aAAa,CAAC,KAAK,WAAWD;AAAA;AAAA;AAAA,iCAGZ,KAAK,KAAK;AAAA;AAAA,sBAErB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAM5BC,CAAO;AAAA;AAAA;AAAA,EAGjB;AACF;AA5OaJ,EACK,SAAS,CAACK,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAsKlD;AAE2BC,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAzKfT,EAyKiB,WAAA,SAAA,CAAA;AACeQ,EAAA;AAAA,EAA1CC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA1K9BT,EA0KgC,WAAA,WAAA,CAAA;AACdQ,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA3KhBT,EA2KkB,WAAA,aAAA,CAAA;AACcQ,EAAA;AAAA,EAA1CC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA5K9BT,EA4KgC,WAAA,QAAA,CAAA;AACdQ,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GA7KhBT,EA6KkB,WAAA,WAAA,CAAA;AACDQ,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA9KfT,EA8KiB,WAAA,QAAA,CAAA;AACCQ,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA/KhBT,EA+KkB,WAAA,YAAA,CAAA;AACeQ,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAhL/BT,EAgLiC,WAAA,YAAA,CAAA;AAhLjCA,IAANQ,EAAA;AAAA,EADNE,EAAc,SAAS;AAAA,GACXV,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-code-block.d.ts","sourceRoot":"","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAgDrD,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BAoNnB;IAES,IAAI,SAAM;IACO,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC7D,QAAQ,SAAM;IACd,QAAQ,SAAM;IAC6C,WAAW,UAAS;IAC/C,IAAI,UAAS;IAC5B,WAAW,UAAS;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAQ;YAErB,KAAK;IAQV,MAAM;IA+Cf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;CAKpB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,eAAe,EAAE,WAAW,CAAC;KAAE;CAClE"}
1
+ {"version":3,"file":"cg-code-block.d.ts","sourceRoot":"","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AA6CrD,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BAkNnB;IAES,IAAI,SAAM;IACO,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC7D,QAAQ,SAAM;IACd,QAAQ,SAAM;IAC6C,WAAW,UAAS;IAC/C,IAAI,UAAS;IAC5B,WAAW,UAAS;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAQ;YAErB,KAAK;IAQV,MAAM;IAmDf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;CAKpB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,eAAe,EAAE,WAAW,CAAC;KAAE;CAClE"}
@@ -1,10 +1,10 @@
1
- import { css as v, LitElement as f, nothing as p, html as s } from "lit";
1
+ import { css as v, LitElement as f, nothing as p, html as c } from "lit";
2
2
  import { property as l, state as h, customElement as b } from "lit/decorators.js";
3
- import { h as m, r as y } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var w = Object.defineProperty, x = Object.getOwnPropertyDescriptor, c = (o, e, n, a) => {
5
- for (var r = a > 1 ? void 0 : a ? x(e, n) : e, i = o.length - 1, g; i >= 0; i--)
6
- (g = o[i]) && (r = (a ? g(e, n, r) : g(r)) || r);
7
- return a && r && w(e, n, r), r;
3
+ import { h as m, r as y } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var w = Object.defineProperty, x = Object.getOwnPropertyDescriptor, n = (o, e, i, a) => {
5
+ for (var r = a > 1 ? void 0 : a ? x(e, i) : e, s = o.length - 1, g; s >= 0; s--)
6
+ (g = o[s]) && (r = (a ? g(e, i, r) : g(r)) || r);
7
+ return a && r && w(e, i, r), r;
8
8
  };
9
9
  const d = {
10
10
  keyword: /\b(const|let|var|function|return|if|else|for|while|import|export|from|class|extends|new|this|async|await|try|catch|throw|switch|case|break|default|typeof|instanceof|interface|type|enum|public|private|protected|static|override|readonly|abstract|implements|def|lambda|print|self|True|False|None|SELECT|FROM|WHERE|JOIN|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|AND|OR|NOT|IN|IS|NULL|GROUP|ORDER|BY|HAVING|LIMIT|AS|ON|SET|INTO|VALUES)\b/g,
@@ -15,8 +15,8 @@ const d = {
15
15
  };
16
16
  function u(o) {
17
17
  let e = o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
18
- const n = [], a = (r, i) => (n.push(`<span class="hl-${r}">${i}</span>`), `\0${n.length - 1}\0`);
19
- return e = e.replace(d.comment, (r) => a("comment", r)), e = e.replace(d.string, (r) => a("string", r)), e = e.replace(d.keyword, (r) => a("keyword", r)), e = e.replace(d.function, (r, i) => a("function", i)), e = e.replace(d.number, (r) => a("number", r)), e = e.replace(/\x00(\d+)\x00/g, (r, i) => n[Number(i)]), e;
18
+ const i = [], a = (r, s) => (i.push(`<span class="hl-${r}">${s}</span>`), `\0${i.length - 1}\0`);
19
+ return e = e.replace(d.comment, (r) => a("comment", r)), e = e.replace(d.string, (r) => a("string", r)), e = e.replace(d.keyword, (r) => a("keyword", r)), e = e.replace(d.function, (r, s) => a("function", s)), e = e.replace(d.number, (r) => a("number", r)), e = e.replace(/\x00(\d+)\x00/g, (r, s) => i[Number(s)]), e;
20
20
  }
21
21
  let t = class extends f {
22
22
  constructor() {
@@ -32,8 +32,8 @@ let t = class extends f {
32
32
  }
33
33
  render() {
34
34
  const o = this.code.split(`
35
- `), e = this.collapsible && o.length > 15, n = u(this.code);
36
- return s`
35
+ `), e = this.collapsible && o.length > 15, i = u(this.code);
36
+ return c`
37
37
  <div class="wrapper">
38
38
  <div class="header">
39
39
  <div class="header-left">
@@ -42,28 +42,32 @@ let t = class extends f {
42
42
  <span class="dot dot-yellow"></span>
43
43
  <span class="dot dot-green"></span>
44
44
  </div>
45
- ${this.filename ? s`<span class="filename">${this.filename}</span>` : p}
45
+ ${this.filename ? c`<span class="filename">${this.filename}</span>` : p}
46
46
  </div>
47
47
  <div class="actions">
48
- ${this.language ? s`<span class="language">${this.language}</span>` : p}
49
- <button class="copy-btn ${this._copied ? "copied" : ""}" @click=${this._copy} aria-label="Copy code">
50
- ${this._copied ? s`<cg-icon name="check" size="xs"></cg-icon> Copied` : s`<cg-icon name="copy" size="xs"></cg-icon> Copy`}
48
+ ${this.language ? c`<span class="language">${this.language}</span>` : p}
49
+ <button class="copy-btn ${this._copied ? "copied" : ""}" @click=${this._copy} aria-label=${this._copied ? "Code copied" : "Copy code"}>
50
+ ${this._copied ? c`<cg-icon name="check" size="xs"></cg-icon> Copied` : c`<cg-icon name="copy" size="xs"></cg-icon> Copy`}
51
51
  </button>
52
52
  <span class="sr-only" role="status" aria-live="polite">${this._copied ? "Copied!" : ""}</span>
53
53
  </div>
54
54
  </div>
55
55
 
56
- <div class="code-area ${e && this._collapsed ? "collapsed" : ""}">
57
- <pre>${this.lineNumbers ? o.map((a) => s`<span class="line">${this._highlightLine(a)}\n</span>`) : s`${this._unsafeHTML(n)}`}</pre>
56
+ <div id="code-area" class="code-area ${e && this._collapsed ? "collapsed" : ""}">
57
+ <pre>${this.lineNumbers ? o.map((a) => c`<span class="line">${this._highlightLine(a)}\n</span>`) : c`${this._unsafeHTML(i)}`}</pre>
58
58
  </div>
59
59
 
60
- ${e && this._collapsed ? s`
60
+ ${e ? c`
61
61
  <div class="expand-bar">
62
- <button class="expand-btn" aria-expanded="false" @click=${() => {
63
- this._collapsed = !1;
62
+ <button
63
+ class="expand-btn"
64
+ aria-expanded=${this._collapsed ? "false" : "true"}
65
+ aria-controls="code-area"
66
+ @click=${() => {
67
+ this._collapsed = !this._collapsed;
64
68
  }}>
65
- <cg-icon name="chevron-down" size="xs"></cg-icon>
66
- Show all ${o.length} lines
69
+ <cg-icon name=${this._collapsed ? "chevron-down" : "chevron-up"} size="xs"></cg-icon>
70
+ ${this._collapsed ? c`Show all ${o.length} lines` : c`Show less`}
67
71
  </button>
68
72
  </div>
69
73
  ` : p}
@@ -148,7 +152,7 @@ t.styles = [m, y, v`
148
152
  font-size: var(--cg-font-size-xs);
149
153
  font-weight: var(--cg-font-weight-medium);
150
154
  text-transform: uppercase;
151
- letter-spacing: 0.04em;
155
+ letter-spacing: var(--cg-letter-spacing-wider);
152
156
  }
153
157
 
154
158
  .copy-btn {
@@ -230,8 +234,6 @@ t.styles = [m, y, v`
230
234
  .hl-comment { color: var(--cg-color-code-comment); font-style: italic; }
231
235
  .hl-number { color: var(--cg-color-code-number); }
232
236
  .hl-function { color: var(--cg-color-code-function); }
233
- .hl-tag { color: var(--cg-color-code-keyword); }
234
- .hl-attr { color: var(--cg-color-code-number); }
235
237
 
236
238
  /* ── Expand button ── */
237
239
  .expand-bar {
@@ -291,34 +293,34 @@ t.styles = [m, y, v`
291
293
  :host([rounded="md"]) .wrapper { border-radius: var(--cg-border-radius-150); }
292
294
  :host([rounded="lg"]) .wrapper { border-radius: var(--cg-border-radius-200); }
293
295
  `];
294
- c([
296
+ n([
295
297
  l()
296
298
  ], t.prototype, "code", 2);
297
- c([
299
+ n([
298
300
  l({ reflect: !0 })
299
301
  ], t.prototype, "rounded", 2);
300
- c([
302
+ n([
301
303
  l()
302
304
  ], t.prototype, "language", 2);
303
- c([
305
+ n([
304
306
  l()
305
307
  ], t.prototype, "filename", 2);
306
- c([
308
+ n([
307
309
  l({ type: Boolean, attribute: "line-numbers", reflect: !0 })
308
310
  ], t.prototype, "lineNumbers", 2);
309
- c([
311
+ n([
310
312
  l({ type: Boolean, reflect: !0 })
311
313
  ], t.prototype, "wrap", 2);
312
- c([
314
+ n([
313
315
  l({ type: Boolean })
314
316
  ], t.prototype, "collapsible", 2);
315
- c([
317
+ n([
316
318
  h()
317
319
  ], t.prototype, "_copied", 2);
318
- c([
320
+ n([
319
321
  h()
320
322
  ], t.prototype, "_collapsed", 2);
321
- t = c([
323
+ t = n([
322
324
  b("cg-code-block")
323
325
  ], t);
324
326
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"cg-code-block.js","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-code-block> — Code display with syntax highlighting, copy button, and line numbers.\n *\n * @example\n * ```html\n * <cg-code-block code=\"const x = 1;\" language=\"javascript\" line-numbers></cg-code-block>\n * ```\n *\n * @cssprop --cg-color-code-background - Block background\n * @cssprop --cg-color-code-text - Text color\n * @cssprop --cg-color-code-keyword - Keyword highlight color\n */\n\nconst KEYWORD_PATTERNS: Record<string, RegExp> = {\n keyword: /\\b(const|let|var|function|return|if|else|for|while|import|export|from|class|extends|new|this|async|await|try|catch|throw|switch|case|break|default|typeof|instanceof|interface|type|enum|public|private|protected|static|override|readonly|abstract|implements|def|lambda|print|self|True|False|None|SELECT|FROM|WHERE|JOIN|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|AND|OR|NOT|IN|IS|NULL|GROUP|ORDER|BY|HAVING|LIMIT|AS|ON|SET|INTO|VALUES)\\b/g,\n string: /([\"'`])(?:(?!\\1|\\\\).|\\\\.)*?\\1/g,\n comment: /\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/|#.*$/gm,\n number: /\\b\\d+\\.?\\d*\\b/g,\n function: /\\b([a-zA-Z_]\\w*)\\s*(?=\\()/g,\n tag: /(&lt;\\/?[a-zA-Z][a-zA-Z0-9-]*)/g,\n attr: /\\b([a-zA-Z-]+)(?==)/g,\n punctuation: /[{}()\\[\\];,.:]/g,\n};\n\nfunction highlight(code: string): string {\n let escaped = code.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\n const tokens: string[] = [];\n const placeholder = (cls: string, text: string) => {\n tokens.push(`<span class=\"hl-${cls}\">${text}</span>`);\n return `\\x00${tokens.length - 1}\\x00`;\n };\n\n escaped = escaped.replace(KEYWORD_PATTERNS.comment!, m => placeholder('comment', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.string!, m => placeholder('string', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.keyword!, m => placeholder('keyword', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.function!, (_, name) => placeholder('function', name));\n escaped = escaped.replace(KEYWORD_PATTERNS.number!, m => placeholder('number', m));\n\n escaped = escaped.replace(/\\x00(\\d+)\\x00/g, (_, idx) => tokens[Number(idx)]!);\n\n return escaped;\n}\n\n@customElement('cg-code-block')\nexport class CgCodeBlock extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n .wrapper {\n background: var(--cg-color-code-background);\n border-radius: var(--cg-border-radius-200);\n overflow: hidden;\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cg-spacing-16);\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n min-height: var(--cg-spacing-48);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-16);\n min-width: 0;\n flex: 1;\n }\n\n .dots {\n display: flex;\n gap: var(--cg-spacing-6);\n flex-shrink: 0;\n }\n .dot {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-full);\n }\n .dot-red { background: var(--cg-color-chart-8-background); }\n .dot-yellow { background: var(--cg-color-chart-7-background); }\n .dot-green { background: var(--cg-color-chart-3-background); }\n\n .filename {\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-code-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n\n .actions {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-shrink: 0;\n }\n\n .language {\n display: inline-flex;\n align-items: center;\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-muted);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .copy-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n border: none;\n color: var(--cg-color-code-muted);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n font-family: inherit;\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 }\n .copy-btn:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-text);\n }\n .copy-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .copy-btn.copied {\n color: var(--cg-color-status-success-text-default);\n }\n .copy-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n /* ── Code area ── */\n .code-area {\n overflow-x: auto;\n overflow-y: auto;\n }\n .code-area.collapsed { max-height: var(--cg-spacing-256); }\n\n pre {\n margin: 0;\n padding: var(--cg-spacing-20) var(--cg-spacing-24);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-relaxed);\n color: var(--cg-color-code-text);\n tab-size: 2;\n counter-reset: line;\n font-variant-numeric: tabular-nums;\n }\n\n :host([wrap]) pre { white-space: pre-wrap; word-break: break-all; }\n\n /* ── Line numbers ── */\n .line {\n display: block;\n }\n :host([line-numbers]) .line::before {\n counter-increment: line;\n content: counter(line);\n display: inline-block;\n width: 3ch;\n padding-right: var(--cg-spacing-16);\n margin-right: var(--cg-spacing-16);\n border-right: var(--cg-border-width-50) solid var(--cg-color-code-border);\n color: var(--cg-color-code-muted);\n text-align: right;\n user-select: none;\n opacity: 0.6;\n }\n\n /* ── Syntax highlighting ── */\n .hl-keyword { color: var(--cg-color-code-keyword); font-weight: var(--cg-font-weight-medium); }\n .hl-string { color: var(--cg-color-code-string); }\n .hl-comment { color: var(--cg-color-code-comment); font-style: italic; }\n .hl-number { color: var(--cg-color-code-number); }\n .hl-function { color: var(--cg-color-code-function); }\n .hl-tag { color: var(--cg-color-code-keyword); }\n .hl-attr { color: var(--cg-color-code-number); }\n\n /* ── Expand button ── */\n .expand-bar {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) var(--cg-spacing-12) var(--cg-spacing-12);\n background: linear-gradient(transparent, var(--cg-color-code-background) 60%);\n margin-top: calc(var(--cg-spacing-48) * -1);\n position: relative;\n }\n .expand-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-16);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-code-muted);\n background: var(--cg-color-code-surface);\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n transition:\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 .expand-btn:hover {\n color: var(--cg-color-code-text);\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .expand-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .expand-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .wrapper { border-radius: 0; }\n :host([rounded=\"sm\"]) .wrapper { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"md\"]) .wrapper { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .wrapper { border-radius: var(--cg-border-radius-200); }\n `];\n\n @property() code = '';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property() language = '';\n @property() filename = '';\n @property({ type: Boolean, attribute: 'line-numbers', reflect: true }) lineNumbers = false;\n @property({ type: Boolean, reflect: true }) wrap = false;\n @property({ type: Boolean }) collapsible = false;\n\n @state() private _copied = false;\n @state() private _collapsed = true;\n\n private async _copy() {\n try {\n await navigator.clipboard.writeText(this.code);\n this._copied = true;\n setTimeout(() => { this._copied = false; }, 2000);\n } catch { /* noop */ }\n }\n\n override render() {\n const lines = this.code.split('\\n');\n const isLong = this.collapsible && lines.length > 15;\n const highlighted = highlight(this.code);\n\n return html`\n <div class=\"wrapper\">\n <div class=\"header\">\n <div class=\"header-left\">\n <div class=\"dots\">\n <span class=\"dot dot-red\"></span>\n <span class=\"dot dot-yellow\"></span>\n <span class=\"dot dot-green\"></span>\n </div>\n ${this.filename ? html`<span class=\"filename\">${this.filename}</span>` : nothing}\n </div>\n <div class=\"actions\">\n ${this.language ? html`<span class=\"language\">${this.language}</span>` : nothing}\n <button class=\"copy-btn ${this._copied ? 'copied' : ''}\" @click=${this._copy} aria-label=\"Copy code\">\n ${this._copied\n ? html`<cg-icon name=\"check\" size=\"xs\"></cg-icon> Copied`\n : html`<cg-icon name=\"copy\" size=\"xs\"></cg-icon> Copy`\n }\n </button>\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\">${this._copied ? 'Copied!' : ''}</span>\n </div>\n </div>\n\n <div class=\"code-area ${isLong && this._collapsed ? 'collapsed' : ''}\">\n <pre>${this.lineNumbers\n ? lines.map(l => html`<span class=\"line\">${this._highlightLine(l)}\\n</span>`)\n : html`${this._unsafeHTML(highlighted)}`\n }</pre>\n </div>\n\n ${isLong && this._collapsed ? html`\n <div class=\"expand-bar\">\n <button class=\"expand-btn\" aria-expanded=\"false\" @click=${() => { this._collapsed = false; }}>\n <cg-icon name=\"chevron-down\" size=\"xs\"></cg-icon>\n Show all ${lines.length} lines\n </button>\n </div>\n ` : nothing}\n </div>\n `;\n }\n\n private _highlightLine(line: string): unknown {\n return this._unsafeHTML(highlight(line));\n }\n\n private _unsafeHTML(html: string): unknown {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template.content.cloneNode(true);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-code-block': CgCodeBlock; }\n}\n"],"names":["KEYWORD_PATTERNS","highlight","code","escaped","tokens","placeholder","cls","text","m","_","name","idx","CgCodeBlock","LitElement","lines","isLong","highlighted","html","nothing","l","line","template","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-code-block.js","sources":["../../../src/components/cg-code-block/cg-code-block.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-code-block> — Code display with syntax highlighting, copy button, and line numbers.\n *\n * @example\n * ```html\n * <cg-code-block code=\"const x = 1;\" language=\"javascript\" line-numbers></cg-code-block>\n * ```\n *\n * @cssprop --cg-color-code-background - Block background\n * @cssprop --cg-color-code-text - Text color\n * @cssprop --cg-color-code-keyword - Keyword highlight color\n */\n\nconst KEYWORD_PATTERNS: Record<string, RegExp> = {\n keyword: /\\b(const|let|var|function|return|if|else|for|while|import|export|from|class|extends|new|this|async|await|try|catch|throw|switch|case|break|default|typeof|instanceof|interface|type|enum|public|private|protected|static|override|readonly|abstract|implements|def|lambda|print|self|True|False|None|SELECT|FROM|WHERE|JOIN|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|AND|OR|NOT|IN|IS|NULL|GROUP|ORDER|BY|HAVING|LIMIT|AS|ON|SET|INTO|VALUES)\\b/g,\n string: /([\"'`])(?:(?!\\1|\\\\).|\\\\.)*?\\1/g,\n comment: /\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\/|#.*$/gm,\n number: /\\b\\d+\\.?\\d*\\b/g,\n function: /\\b([a-zA-Z_]\\w*)\\s*(?=\\()/g,\n};\n\nfunction highlight(code: string): string {\n let escaped = code.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\n const tokens: string[] = [];\n const placeholder = (cls: string, text: string) => {\n tokens.push(`<span class=\"hl-${cls}\">${text}</span>`);\n return `\\x00${tokens.length - 1}\\x00`;\n };\n\n escaped = escaped.replace(KEYWORD_PATTERNS.comment!, m => placeholder('comment', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.string!, m => placeholder('string', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.keyword!, m => placeholder('keyword', m));\n escaped = escaped.replace(KEYWORD_PATTERNS.function!, (_, name) => placeholder('function', name));\n escaped = escaped.replace(KEYWORD_PATTERNS.number!, m => placeholder('number', m));\n\n escaped = escaped.replace(/\\x00(\\d+)\\x00/g, (_, idx) => tokens[Number(idx)]!);\n\n return escaped;\n}\n\n@customElement('cg-code-block')\nexport class CgCodeBlock extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n .wrapper {\n background: var(--cg-color-code-background);\n border-radius: var(--cg-border-radius-200);\n overflow: hidden;\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n /* ── Header ── */\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--cg-spacing-16);\n padding: var(--cg-spacing-8) var(--cg-spacing-16);\n min-height: var(--cg-spacing-48);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-code-border);\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-16);\n min-width: 0;\n flex: 1;\n }\n\n .dots {\n display: flex;\n gap: var(--cg-spacing-6);\n flex-shrink: 0;\n }\n .dot {\n width: var(--cg-spacing-12);\n height: var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-full);\n }\n .dot-red { background: var(--cg-color-chart-8-background); }\n .dot-yellow { background: var(--cg-color-chart-7-background); }\n .dot-green { background: var(--cg-color-chart-3-background); }\n\n .filename {\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-code-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n\n .actions {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-shrink: 0;\n }\n\n .language {\n display: inline-flex;\n align-items: center;\n padding: var(--cg-spacing-2) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-muted);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wider);\n }\n\n .copy-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-50);\n background: transparent;\n border: none;\n color: var(--cg-color-code-muted);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n font-family: inherit;\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 }\n .copy-btn:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-code-text);\n }\n .copy-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .copy-btn.copied {\n color: var(--cg-color-status-success-text-default);\n }\n .copy-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n /* ── Code area ── */\n .code-area {\n overflow-x: auto;\n overflow-y: auto;\n }\n .code-area.collapsed { max-height: var(--cg-spacing-256); }\n\n pre {\n margin: 0;\n padding: var(--cg-spacing-20) var(--cg-spacing-24);\n font-family: var(--cg-font-family-mono);\n font-size: var(--cg-font-size-sm);\n line-height: var(--cg-line-height-relaxed);\n color: var(--cg-color-code-text);\n tab-size: 2;\n counter-reset: line;\n font-variant-numeric: tabular-nums;\n }\n\n :host([wrap]) pre { white-space: pre-wrap; word-break: break-all; }\n\n /* ── Line numbers ── */\n .line {\n display: block;\n }\n :host([line-numbers]) .line::before {\n counter-increment: line;\n content: counter(line);\n display: inline-block;\n width: 3ch;\n padding-right: var(--cg-spacing-16);\n margin-right: var(--cg-spacing-16);\n border-right: var(--cg-border-width-50) solid var(--cg-color-code-border);\n color: var(--cg-color-code-muted);\n text-align: right;\n user-select: none;\n opacity: 0.6;\n }\n\n /* ── Syntax highlighting ── */\n .hl-keyword { color: var(--cg-color-code-keyword); font-weight: var(--cg-font-weight-medium); }\n .hl-string { color: var(--cg-color-code-string); }\n .hl-comment { color: var(--cg-color-code-comment); font-style: italic; }\n .hl-number { color: var(--cg-color-code-number); }\n .hl-function { color: var(--cg-color-code-function); }\n\n /* ── Expand button ── */\n .expand-bar {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) var(--cg-spacing-12) var(--cg-spacing-12);\n background: linear-gradient(transparent, var(--cg-color-code-background) 60%);\n margin-top: calc(var(--cg-spacing-48) * -1);\n position: relative;\n }\n .expand-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-spacing-6);\n height: var(--cg-spacing-32);\n padding: 0 var(--cg-spacing-16);\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-code-muted);\n background: var(--cg-color-code-surface);\n border: var(--cg-border-width-50) solid var(--cg-color-code-border);\n border-radius: var(--cg-border-radius-full);\n cursor: pointer;\n font-family: inherit;\n font-weight: var(--cg-font-weight-medium);\n transition:\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\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 .expand-btn:hover {\n color: var(--cg-color-code-text);\n background: var(--cg-color-action-tertiary-background-hover);\n }\n .expand-btn:active {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .expand-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--cg-border-width-100) var(--cg-color-focus-ring);\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ── Rounded variants ── */\n :host([rounded=\"none\"]) .wrapper { border-radius: 0; }\n :host([rounded=\"sm\"]) .wrapper { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"md\"]) .wrapper { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .wrapper { border-radius: var(--cg-border-radius-200); }\n `];\n\n @property() code = '';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' = 'lg';\n @property() language = '';\n @property() filename = '';\n @property({ type: Boolean, attribute: 'line-numbers', reflect: true }) lineNumbers = false;\n @property({ type: Boolean, reflect: true }) wrap = false;\n @property({ type: Boolean }) collapsible = false;\n\n @state() private _copied = false;\n @state() private _collapsed = true;\n\n private async _copy() {\n try {\n await navigator.clipboard.writeText(this.code);\n this._copied = true;\n setTimeout(() => { this._copied = false; }, 2000);\n } catch { /* noop */ }\n }\n\n override render() {\n const lines = this.code.split('\\n');\n const isLong = this.collapsible && lines.length > 15;\n const highlighted = highlight(this.code);\n\n return html`\n <div class=\"wrapper\">\n <div class=\"header\">\n <div class=\"header-left\">\n <div class=\"dots\">\n <span class=\"dot dot-red\"></span>\n <span class=\"dot dot-yellow\"></span>\n <span class=\"dot dot-green\"></span>\n </div>\n ${this.filename ? html`<span class=\"filename\">${this.filename}</span>` : nothing}\n </div>\n <div class=\"actions\">\n ${this.language ? html`<span class=\"language\">${this.language}</span>` : nothing}\n <button class=\"copy-btn ${this._copied ? 'copied' : ''}\" @click=${this._copy} aria-label=${this._copied ? 'Code copied' : 'Copy code'}>\n ${this._copied\n ? html`<cg-icon name=\"check\" size=\"xs\"></cg-icon> Copied`\n : html`<cg-icon name=\"copy\" size=\"xs\"></cg-icon> Copy`\n }\n </button>\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\">${this._copied ? 'Copied!' : ''}</span>\n </div>\n </div>\n\n <div id=\"code-area\" class=\"code-area ${isLong && this._collapsed ? 'collapsed' : ''}\">\n <pre>${this.lineNumbers\n ? lines.map(l => html`<span class=\"line\">${this._highlightLine(l)}\\n</span>`)\n : html`${this._unsafeHTML(highlighted)}`\n }</pre>\n </div>\n\n ${isLong ? html`\n <div class=\"expand-bar\">\n <button\n class=\"expand-btn\"\n aria-expanded=${this._collapsed ? 'false' : 'true'}\n aria-controls=\"code-area\"\n @click=${() => { this._collapsed = !this._collapsed; }}>\n <cg-icon name=${this._collapsed ? 'chevron-down' : 'chevron-up'} size=\"xs\"></cg-icon>\n ${this._collapsed ? html`Show all ${lines.length} lines` : html`Show less`}\n </button>\n </div>\n ` : nothing}\n </div>\n `;\n }\n\n private _highlightLine(line: string): unknown {\n return this._unsafeHTML(highlight(line));\n }\n\n private _unsafeHTML(html: string): unknown {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template.content.cloneNode(true);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-code-block': CgCodeBlock; }\n}\n"],"names":["KEYWORD_PATTERNS","highlight","code","escaped","tokens","placeholder","cls","text","m","_","name","idx","CgCodeBlock","LitElement","lines","isLong","highlighted","html","nothing","l","line","template","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/cg-collapsible/cg-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAkGnB;IAEyC,IAAI,UAAS;IACb,QAAQ,UAAS;IAChC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAU;IAEhE,OAAO,CAAC,OAAO;IAUN,MAAM;CAsBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,aAAa,CAAC;KACjC;CACF"}
1
+ {"version":3,"file":"cg-collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/cg-collapsible/cg-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAuGnB;IAEyC,IAAI,UAAS;IACb,QAAQ,UAAS;IAChC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAU;IAEhE,OAAO,CAAC,OAAO;IAUN,MAAM;CAsBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,aAAa,CAAC;KACjC;CACF"}
@@ -1,12 +1,12 @@
1
- import { css as c, LitElement as g, html as p } from "lit";
2
- import { property as i, customElement as b } from "lit/decorators.js";
3
- import { h as v, r as u } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var f = Object.defineProperty, m = Object.getOwnPropertyDescriptor, e = (l, t, n, a) => {
5
- for (var o = a > 1 ? void 0 : a ? m(t, n) : t, s = l.length - 1, d; s >= 0; s--)
6
- (d = l[s]) && (o = (a ? d(t, n, o) : d(o)) || o);
7
- return a && o && f(t, n, o), o;
1
+ import { css as l, LitElement as g, html as p } from "lit";
2
+ import { property as i, customElement as v } from "lit/decorators.js";
3
+ import { h as b, r as u } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var f = Object.defineProperty, h = Object.getOwnPropertyDescriptor, e = (c, t, n, a) => {
5
+ for (var r = a > 1 ? void 0 : a ? h(t, n) : t, s = c.length - 1, d; s >= 0; s--)
6
+ (d = c[s]) && (r = (a ? d(t, n, r) : d(r)) || r);
7
+ return a && r && f(t, n, r), r;
8
8
  };
9
- let r = class extends g {
9
+ let o = class extends g {
10
10
  constructor() {
11
11
  super(...arguments), this.open = !1, this.disabled = !1, this.size = "md", this.variant = "card";
12
12
  }
@@ -40,7 +40,7 @@ let r = class extends g {
40
40
  `;
41
41
  }
42
42
  };
43
- r.styles = [v, u, c`
43
+ o.styles = [b, u, l`
44
44
  :host {
45
45
  display: block;
46
46
  overflow: hidden;
@@ -52,6 +52,11 @@ r.styles = [v, u, c`
52
52
  border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
53
53
  border-radius: var(--cg-component-collapsible-radius);
54
54
  }
55
+ /* Open card: structural divider under the trigger so the expanded state
56
+ reads beyond the chevron alone (card is the default variant). */
57
+ :host([variant="card"][open]) .trigger {
58
+ border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);
59
+ }
55
60
 
56
61
  /* ── Variant: flush — no chrome, just hover affordance ── */
57
62
  :host([variant="flush"]) .trigger {
@@ -76,7 +81,7 @@ r.styles = [v, u, c`
76
81
  font-weight: var(--cg-font-weight-medium);
77
82
  text-align: left;
78
83
  cursor: pointer;
79
- transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
84
+ transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
80
85
  }
81
86
 
82
87
  /* ── Sizes ── */
@@ -141,20 +146,20 @@ r.styles = [v, u, c`
141
146
  `];
142
147
  e([
143
148
  i({ type: Boolean, reflect: !0 })
144
- ], r.prototype, "open", 2);
149
+ ], o.prototype, "open", 2);
145
150
  e([
146
151
  i({ type: Boolean, reflect: !0 })
147
- ], r.prototype, "disabled", 2);
152
+ ], o.prototype, "disabled", 2);
148
153
  e([
149
154
  i({ reflect: !0 })
150
- ], r.prototype, "size", 2);
155
+ ], o.prototype, "size", 2);
151
156
  e([
152
157
  i({ reflect: !0 })
153
- ], r.prototype, "variant", 2);
154
- r = e([
155
- b("cg-collapsible")
156
- ], r);
158
+ ], o.prototype, "variant", 2);
159
+ o = e([
160
+ v("cg-collapsible")
161
+ ], o);
157
162
  export {
158
- r as CgCollapsible
163
+ o as CgCollapsible
159
164
  };
160
165
  //# sourceMappingURL=cg-collapsible.js.map