@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,12 +1,12 @@
1
- import { css as v, LitElement as h, html as i, nothing as o } from "lit";
1
+ import { css as h, LitElement as v, html as i, nothing as o } from "lit";
2
2
  import { property as c, customElement as u } from "lit/decorators.js";
3
- import { h as p, r as f } from "../../chunks/premium.css-9I4kHrsl.js";
3
+ import { h as p, r as f } from "../../chunks/premium.css-DHekUEUt.js";
4
4
  var b = Object.defineProperty, m = Object.getOwnPropertyDescriptor, s = (e, t, r, l) => {
5
5
  for (var n = l > 1 ? void 0 : l ? m(t, r) : t, d = e.length - 1, g; d >= 0; d--)
6
6
  (g = e[d]) && (n = (l ? g(t, r, n) : g(n)) || n);
7
7
  return l && n && b(t, r, n), n;
8
8
  };
9
- let a = class extends h {
9
+ let a = class extends v {
10
10
  constructor() {
11
11
  super(...arguments), this.items = [], this.variant = "plain", this.dividers = !1, this.hoverable = !0, this.clickable = !1, this.contained = !1, this.emptyText = "No items";
12
12
  }
@@ -55,13 +55,13 @@ let a = class extends h {
55
55
  <div class="right">
56
56
  ${e.meta ? i`<span class="meta">${e.meta}</span>` : o}
57
57
  ${e.actionLabel ? i`<button class="action-btn" @click=${(r) => this._handleAction(r, e, t)}>${e.actionLabel}</button>` : o}
58
- ${this.clickable ? i`<svg class="chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18l6-6-6-6"></path></svg>` : o}
58
+ ${this.clickable ? i`<svg class="chevron" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18l6-6-6-6"></path></svg>` : o}
59
59
  </div>
60
60
  </div>
61
61
  `)}</div>`;
62
62
  }
63
63
  };
64
- a.styles = [p, f, v`
64
+ a.styles = [p, f, h`
65
65
 
66
66
  /* ── Empty state ── */
67
67
  .empty {
@@ -1 +1 @@
1
- {"version":3,"file":"cg-list.js","sources":["../../../src/components/cg-list/cg-list.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/** Item definition for cg-list. */\nexport interface ListItem {\n title: string;\n subtitle?: string;\n image?: string;\n icon?: string;\n action?: string;\n actionLabel?: string;\n meta?: string;\n}\n\n/**\n * @element cg-list\n * Data list with bullet, number, image, or plain variants.\n *\n * @fires {CustomEvent<{item: ListItem, index: number}>} cg-list-click - When a clickable item is clicked\n * @fires {CustomEvent<{item: ListItem, index: number, action: string}>} cg-list-action - When an action button is clicked\n */\n@customElement('cg-list')\nexport class CgList extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n\n /* ── Empty state ── */\n .empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-48) var(--cg-spacing-24);\n color: var(--cg-color-surface-container-outlined);\n }\n .empty-icon {\n width: var(--cg-spacing-48);\n height: var(--cg-spacing-48);\n opacity: 0.3;\n }\n .empty-text {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n }\n\n /* ── Item ── */\n .item {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n border: var(--cg-border-width-50) solid transparent;\n transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default), border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n min-height: var(--cg-spacing-48);\n }\n\n /* ── Contained variant — list shell.\n Concentric corners: outer radius = inner item radius + padding\n (20 = 12 + 8). Card-radius (28) was too big for a list shell;\n radius-150 fits items snugly without visible corner offset. */\n :host([contained]) {\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-150);\n padding: var(--cg-spacing-8);\n background: var(--cg-color-surface-cards-background);\n }\n\n /* role=list wrapper — flush by default. Only [contained] mode adds\n a small gap so items read as separated pills inside the shell\n (which makes the container padding visible). [dividers] mode\n collapses the gap so the lines themselves are the separator. */\n [role=\"list\"] {\n display: flex;\n flex-direction: column;\n }\n :host([contained]) [role=\"list\"] { gap: var(--cg-spacing-2); }\n :host([contained][dividers]) [role=\"list\"] { gap: 0; }\n\n /* ── Dividers — items keep their own horizontal padding; the divider\n is absolutely positioned so it spans the item's full width\n regardless of item padding. */\n :host([dividers]) .item {\n border-radius: 0;\n position: relative;\n }\n :host([dividers]) .item::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--cg-border-width-50);\n background: var(--cg-color-surface-base-divider);\n }\n :host([dividers]) .item:last-child::after { display: none; }\n\n /* Inside a [contained] shell, the divider's base-divider colour\n (gray-800 in dark) sits too close to the card-bg (gray-900) to be\n visible. surface-cards-border is the high-contrast option meant\n for hairlines on card surfaces. */\n :host([contained][dividers]) .item::after {\n background: var(--cg-color-surface-cards-border);\n }\n\n /* Inset dividers when leading element present */\n :host([dividers][variant=\"image\"]) .item::after,\n :host([dividers][variant=\"number\"]) .item::after,\n :host([dividers][variant=\"bullet\"]) .item::after {\n left: var(--cg-spacing-48);\n }\n\n /* ── Contained without dividers — items get a visible thin border\n so they read as separate tiles inside the shell. Bg can't help\n here: surface-cards-background and surface-container-background\n resolve to the same color, so a bg change is invisible. The\n border + the role=list gap (2px) make the shell padding obvious. */\n :host([contained]:not([dividers])) .item {\n border-color: var(--cg-color-surface-cards-border);\n }\n\n /* ── Hover — uses theme-aware tertiary hover token (lightens in dark,\n darkens in light). overlay-dark-subtle was wrong in dark mode where\n a darken-overlay on already-dark surfaces makes hover less visible. */\n :host([hoverable]) .item:hover,\n :host([clickable]) .item:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n border-color: var(--cg-color-surface-cards-border);\n }\n\n :host([clickable]) .item {\n cursor: pointer;\n }\n :host([clickable]) .item:active {\n background: var(--cg-overlay-accent-subtle);\n }\n :host([clickable]) .item:focus-visible {\n outline: none;\n box-shadow:\n inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n border-radius: var(--cg-border-radius-100);\n }\n\n /* ── Number indicator — subtle, not heavy ── */\n .num {\n width: var(--cg-spacing-24);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-container-outlined);\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n }\n\n /* ── Bullet ── */\n .bullet {\n width: var(--cg-spacing-6);\n height: var(--cg-spacing-6);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-outlined);\n flex-shrink: 0;\n margin: 0 var(--cg-spacing-4);\n }\n\n /* ── Avatar ── */\n .avatar {\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-40);\n border-radius: var(--cg-border-radius-full);\n object-fit: cover;\n flex-shrink: 0;\n background: var(--cg-color-surface-container-background);\n }\n\n /* ── Body ── */\n .body {\n flex: 1;\n min-width: 0;\n }\n .title {\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 .subtitle {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n margin-top: var(--cg-spacing-2);\n line-height: var(--cg-line-height-snug);\n }\n\n /* ── Right side — actions appear on hover ── */\n .right {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-shrink: 0;\n }\n .meta {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n white-space: nowrap;\n }\n\n .action-btn {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-accent-text);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n white-space: nowrap;\n background: none;\n border: none;\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n font-family: inherit;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n /* Reveal-on-hover only on devices that support hover. Touch devices\n always show the action button — without this guard the action would\n be invisible on phones/tablets (no hover event fires). */\n @media (hover: hover) {\n .action-btn { opacity: 0; }\n .item:hover .action-btn { opacity: 1; }\n }\n .action-btn:hover { background: var(--cg-overlay-accent-light); }\n .action-btn:focus-visible {\n opacity: 1;\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .chevron {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n color: var(--cg-color-surface-container-outlined);\n flex-shrink: 0;\n opacity: 0.5;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .item:hover .chevron { opacity: 1; }\n `];\n\n @property({ type: Array }) items: ListItem[] = [];\n @property({ reflect: true }) variant: 'number' | 'bullet' | 'image' | 'plain' = 'plain';\n @property({ type: Boolean, reflect: true }) dividers = false;\n @property({ type: Boolean, reflect: true }) hoverable = true;\n @property({ type: Boolean, reflect: true }) clickable = false;\n @property({ type: Boolean, reflect: true }) contained = false;\n @property() emptyText = 'No items';\n\n private _handleItemClick(item: ListItem, index: number) {\n if (!this.clickable) return;\n this.dispatchEvent(new CustomEvent('cg-list-click', {\n detail: { item, index },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleAction(e: Event, item: ListItem, index: number) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('cg-list-action', {\n detail: { item, index, action: item.action },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n if (this.items.length === 0) {\n return html`\n <div class=\"empty\">\n <svg class=\"empty-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"></rect>\n <path d=\"M8 8h8M8 12h5M8 16h3\"></path>\n </svg>\n <span class=\"empty-text\">${this.emptyText}</span>\n </div>\n `;\n }\n\n return html`<div role=\"list\">${this.items.map((item, i) => html`\n <div\n class=\"item\"\n role=\"listitem\"\n tabindex=${this.clickable ? '0' : nothing}\n @click=${() => this._handleItemClick(item, i)}\n @keydown=${(e: KeyboardEvent) => { if (this.clickable && (e.key === 'Enter' || e.key === ' ')) { e.preventDefault(); this._handleItemClick(item, i); } }}\n >\n ${this.variant === 'number' ? html`<span class=\"num\">${i + 1}</span>` : nothing}\n ${this.variant === 'bullet' ? html`<span class=\"bullet\"></span>` : nothing}\n ${this.variant === 'image' && item.image ? html`<img class=\"avatar\" src=${item.image} alt=\"\" loading=\"lazy\" />` : nothing}\n\n <div class=\"body\">\n <div class=\"title\">${item.title}</div>\n ${item.subtitle ? html`<div class=\"subtitle\">${item.subtitle}</div>` : nothing}\n </div>\n\n <div class=\"right\">\n ${item.meta ? html`<span class=\"meta\">${item.meta}</span>` : nothing}\n ${item.actionLabel ? html`<button class=\"action-btn\" @click=${(e: Event) => this._handleAction(e, item, i)}>${item.actionLabel}</button>` : nothing}\n ${this.clickable ? html`<svg class=\"chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 18l6-6-6-6\"></path></svg>` : nothing}\n </div>\n </div>\n `)}</div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-list': CgList; }\n}\n"],"names":["CgList","LitElement","item","index","html","i","nothing","e","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-list.js","sources":["../../../src/components/cg-list/cg-list.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/** Item definition for cg-list. */\nexport interface ListItem {\n title: string;\n subtitle?: string;\n image?: string;\n icon?: string;\n action?: string;\n actionLabel?: string;\n meta?: string;\n}\n\n/**\n * @element cg-list\n * Data list with bullet, number, image, or plain variants.\n *\n * @fires {CustomEvent<{item: ListItem, index: number}>} cg-list-click - When a clickable item is clicked\n * @fires {CustomEvent<{item: ListItem, index: number, action: string}>} cg-list-action - When an action button is clicked\n */\n@customElement('cg-list')\nexport class CgList extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n\n /* ── Empty state ── */\n .empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--cg-spacing-8);\n padding: var(--cg-spacing-48) var(--cg-spacing-24);\n color: var(--cg-color-surface-container-outlined);\n }\n .empty-icon {\n width: var(--cg-spacing-48);\n height: var(--cg-spacing-48);\n opacity: 0.3;\n }\n .empty-text {\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n }\n\n /* ── Item ── */\n .item {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-radius: var(--cg-border-radius-100);\n border: var(--cg-border-width-50) solid transparent;\n transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default), border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n min-height: var(--cg-spacing-48);\n }\n\n /* ── Contained variant — list shell.\n Concentric corners: outer radius = inner item radius + padding\n (20 = 12 + 8). Card-radius (28) was too big for a list shell;\n radius-150 fits items snugly without visible corner offset. */\n :host([contained]) {\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-border-radius-150);\n padding: var(--cg-spacing-8);\n background: var(--cg-color-surface-cards-background);\n }\n\n /* role=list wrapper — flush by default. Only [contained] mode adds\n a small gap so items read as separated pills inside the shell\n (which makes the container padding visible). [dividers] mode\n collapses the gap so the lines themselves are the separator. */\n [role=\"list\"] {\n display: flex;\n flex-direction: column;\n }\n :host([contained]) [role=\"list\"] { gap: var(--cg-spacing-2); }\n :host([contained][dividers]) [role=\"list\"] { gap: 0; }\n\n /* ── Dividers — items keep their own horizontal padding; the divider\n is absolutely positioned so it spans the item's full width\n regardless of item padding. */\n :host([dividers]) .item {\n border-radius: 0;\n position: relative;\n }\n :host([dividers]) .item::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--cg-border-width-50);\n background: var(--cg-color-surface-base-divider);\n }\n :host([dividers]) .item:last-child::after { display: none; }\n\n /* Inside a [contained] shell, the divider's base-divider colour\n (gray-800 in dark) sits too close to the card-bg (gray-900) to be\n visible. surface-cards-border is the high-contrast option meant\n for hairlines on card surfaces. */\n :host([contained][dividers]) .item::after {\n background: var(--cg-color-surface-cards-border);\n }\n\n /* Inset dividers when leading element present */\n :host([dividers][variant=\"image\"]) .item::after,\n :host([dividers][variant=\"number\"]) .item::after,\n :host([dividers][variant=\"bullet\"]) .item::after {\n left: var(--cg-spacing-48);\n }\n\n /* ── Contained without dividers — items get a visible thin border\n so they read as separate tiles inside the shell. Bg can't help\n here: surface-cards-background and surface-container-background\n resolve to the same color, so a bg change is invisible. The\n border + the role=list gap (2px) make the shell padding obvious. */\n :host([contained]:not([dividers])) .item {\n border-color: var(--cg-color-surface-cards-border);\n }\n\n /* ── Hover — uses theme-aware tertiary hover token (lightens in dark,\n darkens in light). overlay-dark-subtle was wrong in dark mode where\n a darken-overlay on already-dark surfaces makes hover less visible. */\n :host([hoverable]) .item:hover,\n :host([clickable]) .item:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n border-color: var(--cg-color-surface-cards-border);\n }\n\n :host([clickable]) .item {\n cursor: pointer;\n }\n :host([clickable]) .item:active {\n background: var(--cg-overlay-accent-subtle);\n }\n :host([clickable]) .item:focus-visible {\n outline: none;\n box-shadow:\n inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n border-radius: var(--cg-border-radius-100);\n }\n\n /* ── Number indicator — subtle, not heavy ── */\n .num {\n width: var(--cg-spacing-24);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-container-outlined);\n flex-shrink: 0;\n font-variant-numeric: tabular-nums;\n }\n\n /* ── Bullet ── */\n .bullet {\n width: var(--cg-spacing-6);\n height: var(--cg-spacing-6);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-outlined);\n flex-shrink: 0;\n margin: 0 var(--cg-spacing-4);\n }\n\n /* ── Avatar ── */\n .avatar {\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-40);\n border-radius: var(--cg-border-radius-full);\n object-fit: cover;\n flex-shrink: 0;\n background: var(--cg-color-surface-container-background);\n }\n\n /* ── Body ── */\n .body {\n flex: 1;\n min-width: 0;\n }\n .title {\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 .subtitle {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n margin-top: var(--cg-spacing-2);\n line-height: var(--cg-line-height-snug);\n }\n\n /* ── Right side — actions appear on hover ── */\n .right {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-8);\n flex-shrink: 0;\n }\n .meta {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-surface-container-outlined);\n white-space: nowrap;\n }\n\n .action-btn {\n font-size: var(--cg-font-size-xs);\n color: var(--cg-color-accent-text);\n font-weight: var(--cg-font-weight-medium);\n cursor: pointer;\n white-space: nowrap;\n background: none;\n border: none;\n padding: var(--cg-spacing-4) var(--cg-spacing-8);\n border-radius: var(--cg-border-radius-50);\n font-family: inherit;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default), background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n /* Reveal-on-hover only on devices that support hover. Touch devices\n always show the action button — without this guard the action would\n be invisible on phones/tablets (no hover event fires). */\n @media (hover: hover) {\n .action-btn { opacity: 0; }\n .item:hover .action-btn { opacity: 1; }\n }\n .action-btn:hover { background: var(--cg-overlay-accent-light); }\n .action-btn:focus-visible {\n opacity: 1;\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .chevron {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n color: var(--cg-color-surface-container-outlined);\n flex-shrink: 0;\n opacity: 0.5;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .item:hover .chevron { opacity: 1; }\n `];\n\n @property({ type: Array }) items: ListItem[] = [];\n @property({ reflect: true }) variant: 'number' | 'bullet' | 'image' | 'plain' = 'plain';\n @property({ type: Boolean, reflect: true }) dividers = false;\n @property({ type: Boolean, reflect: true }) hoverable = true;\n @property({ type: Boolean, reflect: true }) clickable = false;\n @property({ type: Boolean, reflect: true }) contained = false;\n @property() emptyText = 'No items';\n\n private _handleItemClick(item: ListItem, index: number) {\n if (!this.clickable) return;\n this.dispatchEvent(new CustomEvent('cg-list-click', {\n detail: { item, index },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleAction(e: Event, item: ListItem, index: number) {\n e.stopPropagation();\n this.dispatchEvent(new CustomEvent('cg-list-action', {\n detail: { item, index, action: item.action },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n if (this.items.length === 0) {\n return html`\n <div class=\"empty\">\n <svg class=\"empty-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"></rect>\n <path d=\"M8 8h8M8 12h5M8 16h3\"></path>\n </svg>\n <span class=\"empty-text\">${this.emptyText}</span>\n </div>\n `;\n }\n\n return html`<div role=\"list\">${this.items.map((item, i) => html`\n <div\n class=\"item\"\n role=\"listitem\"\n tabindex=${this.clickable ? '0' : nothing}\n @click=${() => this._handleItemClick(item, i)}\n @keydown=${(e: KeyboardEvent) => { if (this.clickable && (e.key === 'Enter' || e.key === ' ')) { e.preventDefault(); this._handleItemClick(item, i); } }}\n >\n ${this.variant === 'number' ? html`<span class=\"num\">${i + 1}</span>` : nothing}\n ${this.variant === 'bullet' ? html`<span class=\"bullet\"></span>` : nothing}\n ${this.variant === 'image' && item.image ? html`<img class=\"avatar\" src=${item.image} alt=\"\" loading=\"lazy\" />` : nothing}\n\n <div class=\"body\">\n <div class=\"title\">${item.title}</div>\n ${item.subtitle ? html`<div class=\"subtitle\">${item.subtitle}</div>` : nothing}\n </div>\n\n <div class=\"right\">\n ${item.meta ? html`<span class=\"meta\">${item.meta}</span>` : nothing}\n ${item.actionLabel ? html`<button class=\"action-btn\" @click=${(e: Event) => this._handleAction(e, item, i)}>${item.actionLabel}</button>` : nothing}\n ${this.clickable ? html`<svg class=\"chevron\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 18l6-6-6-6\"></path></svg>` : nothing}\n </div>\n </div>\n `)}</div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-list': CgList; }\n}\n"],"names":["CgList","LitElement","item","index","html","i","nothing","e","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-listbox.d.ts","sourceRoot":"","sources":["../../../src/components/cg-listbox/cg-listbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAgHnB;IAEwB,OAAO,EAAE,aAAa,EAAE,CAAM;IAC7C,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM;IACE,QAAQ,UAAS;IAChC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAW;IAC3D,KAAK,SAAM;IACX,SAAS,SAAgB;IAE5B,OAAO,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,oBAAoB;IAOnB,MAAM;CAgDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,YAAY,EAAE,SAAS,CAAC;KAAE;CAC7D"}
1
+ {"version":3,"file":"cg-listbox.d.ts","sourceRoot":"","sources":["../../../src/components/cg-listbox/cg-listbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAqHnB;IAEwB,OAAO,EAAE,aAAa,EAAE,CAAM;IAC7C,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM;IACE,QAAQ,UAAS;IAChC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAW;IAC3D,KAAK,SAAM;IACX,SAAS,SAAgB;IAE5B,OAAO,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,oBAAoB;IAOnB,MAAM;CAiDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,YAAY,EAAE,SAAS,CAAC;KAAE;CAC7D"}
@@ -1,12 +1,12 @@
1
- import { css as g, LitElement as p, html as d, nothing as h } from "lit";
2
- import { property as c, state as u, customElement as v } from "lit/decorators.js";
3
- import { h as f, r as b } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var m = Object.defineProperty, y = Object.getOwnPropertyDescriptor, n = (e, i, t, o) => {
5
- for (var r = o > 1 ? void 0 : o ? y(i, t) : i, a = e.length - 1, l; a >= 0; a--)
6
- (l = e[a]) && (r = (o ? l(i, t, r) : l(r)) || r);
7
- return o && r && m(i, t, r), r;
1
+ import { css as g, LitElement as p, html as h, nothing as c } from "lit";
2
+ import { property as d, state as u, customElement as v } from "lit/decorators.js";
3
+ import { h as f, r as b, g as m } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var y = Object.defineProperty, x = Object.getOwnPropertyDescriptor, n = (e, i, t, o) => {
5
+ for (var r = o > 1 ? void 0 : o ? x(i, t) : i, s = e.length - 1, l; s >= 0; s--)
6
+ (l = e[s]) && (r = (o ? l(i, t, r) : l(r)) || r);
7
+ return o && r && y(i, t, r), r;
8
8
  };
9
- let s = class extends p {
9
+ let a = class extends p {
10
10
  constructor() {
11
11
  super(...arguments), this.options = [], this.value = "", this.multiple = !1, this.checkPosition = "right", this.label = "", this.emptyText = "No options", this._highlightedIndex = -1, this._typeBuffer = "", this._typeTimer = 0;
12
12
  }
@@ -31,8 +31,8 @@ let s = class extends p {
31
31
  const t = this.options;
32
32
  let o = -1;
33
33
  if (this._highlightedIndex >= 0) {
34
- const a = t[this._highlightedIndex];
35
- a && (o = i.indexOf(a));
34
+ const s = t[this._highlightedIndex];
35
+ s && (o = i.indexOf(s));
36
36
  }
37
37
  let r = o;
38
38
  switch (e.key) {
@@ -57,14 +57,14 @@ let s = class extends p {
57
57
  this._typeBuffer += e.key.toLowerCase(), clearTimeout(this._typeTimer), this._typeTimer = window.setTimeout(() => {
58
58
  this._typeBuffer = "";
59
59
  }, 500);
60
- const a = i.findIndex((l) => l.label.toLowerCase().startsWith(this._typeBuffer));
61
- a >= 0 && (r = a);
60
+ const s = i.findIndex((l) => l.label.toLowerCase().startsWith(this._typeBuffer));
61
+ s >= 0 && (r = s);
62
62
  }
63
63
  return;
64
64
  }
65
65
  if (r >= 0 && r < i.length) {
66
- const a = i[r];
67
- this._highlightedIndex = t.indexOf(a), this._scrollToHighlighted();
66
+ const s = i[r];
67
+ this._highlightedIndex = t.indexOf(s), this._scrollToHighlighted();
68
68
  }
69
69
  }
70
70
  _scrollToHighlighted() {
@@ -74,28 +74,29 @@ let s = class extends p {
74
74
  }
75
75
  render() {
76
76
  if (this.options.length === 0)
77
- return d`<div class="empty">${this.emptyText}</div>`;
77
+ return h`<div class="empty">${this.emptyText}</div>`;
78
78
  const e = this._getSelected();
79
79
  let i = "";
80
- return d`
80
+ return h`
81
81
  <div
82
82
  class="listbox"
83
83
  role="listbox"
84
- aria-label=${this.label || h}
85
- aria-multiselectable=${this.multiple ? "true" : h}
84
+ aria-label=${this.label || c}
85
+ aria-multiselectable=${this.multiple ? "true" : c}
86
+ aria-activedescendant=${this._highlightedIndex >= 0 && this.options[this._highlightedIndex] ? `opt-${this.options[this._highlightedIndex].value}` : c}
86
87
  tabindex="0"
87
88
  @keydown=${this._handleKeydown}
88
89
  >
89
90
  ${this.options.map((t, o) => {
90
- const r = e.has(t.value), a = o === this._highlightedIndex, l = t.group && t.group !== i ? d`<div class="group-header" role="presentation">${i = t.group, t.group}</div>` : (t.group && (i = t.group), h);
91
- return d`
91
+ const r = e.has(t.value), s = o === this._highlightedIndex, l = t.group && t.group !== i ? h`<div class="group-header" role="presentation">${i = t.group, t.group}</div>` : (t.group && (i = t.group), c);
92
+ return h`
92
93
  ${l}
93
94
  <div
94
- class="option ${r ? "selected" : ""} ${a ? "highlighted" : ""} ${t.disabled ? "disabled" : ""}"
95
+ class="option ${r ? "selected" : ""} ${s ? "highlighted" : ""} ${t.disabled ? "disabled" : ""}"
95
96
  role="option"
96
97
  id="opt-${t.value}"
97
98
  aria-selected=${r}
98
- aria-disabled=${t.disabled ? "true" : h}
99
+ aria-disabled=${t.disabled ? "true" : c}
99
100
  @click=${() => this._select(t)}
100
101
  @mouseenter=${() => {
101
102
  this._highlightedIndex = o;
@@ -103,7 +104,7 @@ let s = class extends p {
103
104
  >
104
105
  <span class="option-body">
105
106
  <span class="option-label">${t.label}</span>
106
- ${t.description ? d`<span class="option-desc">${t.description}</span>` : h}
107
+ ${t.description ? h`<span class="option-desc">${t.description}</span>` : c}
107
108
  </span>
108
109
  <span class="check" aria-hidden="true">
109
110
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"></path></svg>
@@ -115,7 +116,7 @@ let s = class extends p {
115
116
  `;
116
117
  }
117
118
  };
118
- s.styles = [f, b, g`
119
+ a.styles = [f, b, g`
119
120
  :host {
120
121
  display: block;
121
122
  width: 100%;
@@ -131,6 +132,11 @@ s.styles = [f, b, g`
131
132
  overflow-y: auto;
132
133
  max-height: 320px;
133
134
  }
135
+ /* The listbox itself is the focusable element (tabindex=0); without this
136
+ a keyboard user tabbing in got no visible focus indicator (WCAG 2.4.7). */
137
+ .listbox:focus-visible {
138
+ ${m}
139
+ }
134
140
 
135
141
  .option {
136
142
  display: flex;
@@ -229,30 +235,30 @@ s.styles = [f, b, g`
229
235
  }
230
236
  `];
231
237
  n([
232
- c({ type: Array })
233
- ], s.prototype, "options", 2);
238
+ d({ type: Array })
239
+ ], a.prototype, "options", 2);
234
240
  n([
235
- c()
236
- ], s.prototype, "value", 2);
241
+ d()
242
+ ], a.prototype, "value", 2);
237
243
  n([
238
- c({ type: Boolean, reflect: !0 })
239
- ], s.prototype, "multiple", 2);
244
+ d({ type: Boolean, reflect: !0 })
245
+ ], a.prototype, "multiple", 2);
240
246
  n([
241
- c({ reflect: !0 })
242
- ], s.prototype, "checkPosition", 2);
247
+ d({ reflect: !0 })
248
+ ], a.prototype, "checkPosition", 2);
243
249
  n([
244
- c()
245
- ], s.prototype, "label", 2);
250
+ d()
251
+ ], a.prototype, "label", 2);
246
252
  n([
247
- c()
248
- ], s.prototype, "emptyText", 2);
253
+ d()
254
+ ], a.prototype, "emptyText", 2);
249
255
  n([
250
256
  u()
251
- ], s.prototype, "_highlightedIndex", 2);
252
- s = n([
257
+ ], a.prototype, "_highlightedIndex", 2);
258
+ a = n([
253
259
  v("cg-listbox")
254
- ], s);
260
+ ], a);
255
261
  export {
256
- s as CgListbox
262
+ a as CgListbox
257
263
  };
258
264
  //# sourceMappingURL=cg-listbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cg-listbox.js","sources":["../../../src/components/cg-listbox/cg-listbox.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/** Option for cg-listbox. */\nexport interface ListboxOption {\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n group?: string;\n}\n\n/**\n * <cg-listbox> — Selectable option list with single or multi-select, keyboard nav, and type-ahead.\n *\n * @fires {CustomEvent<{value: string | string[]}>} cg-change - When selection changes\n */\n@customElement('cg-listbox')\nexport class CgListbox extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: block;\n width: 100%;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-card-radius);\n background: var(--cg-color-surface-cards-background);\n overflow: hidden;\n box-sizing: border-box;\n }\n\n .listbox {\n padding: var(--cg-spacing-6);\n overflow-y: auto;\n max-height: 320px;\n }\n\n .option {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-150);\n cursor: pointer;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n border: var(--cg-border-width-50) solid transparent;\n min-height: 44px;\n }\n\n .option.highlighted {\n background: var(--cg-overlay-dark-subtle);\n border-color: var(--cg-color-surface-cards-border);\n }\n\n .option.selected {\n color: var(--cg-color-action-primary-background-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n\n .option.disabled {\n opacity: 0.45;\n pointer-events: none;\n cursor: not-allowed;\n }\n\n .option:active:not(.disabled) {\n background: var(--cg-overlay-accent-subtle);\n }\n\n /* Checkmark tick */\n .check {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n flex-shrink: 0;\n color: var(--cg-color-action-primary-background-default);\n opacity: 0;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .option.selected .check {\n opacity: 1;\n }\n\n /* Right-aligned by default */\n :host(:not([checkPosition=\"left\"])) .check {\n margin-left: auto;\n }\n\n /* Left position */\n :host([checkPosition=\"left\"]) .check {\n order: -1;\n margin-left: 0;\n }\n\n .option-body {\n flex: 1;\n min-width: 0;\n }\n .option-label {\n line-height: var(--cg-line-height-snug);\n }\n .option-desc {\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 margin-top: var(--cg-spacing-2);\n }\n\n /* Group header */\n .group-header {\n padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-container-outlined);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n pointer-events: none;\n }\n .group-header:not(:first-child) {\n margin-top: var(--cg-spacing-4);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n padding-top: var(--cg-spacing-12);\n }\n\n /* Empty */\n .empty {\n padding: var(--cg-spacing-24);\n text-align: center;\n color: var(--cg-color-surface-container-outlined);\n font-size: var(--cg-font-size-sm);\n }\n `];\n\n @property({ type: Array }) options: ListboxOption[] = [];\n @property() value: string | string[] = '';\n @property({ type: Boolean, reflect: true }) multiple = false;\n @property({ reflect: true }) checkPosition: 'left' | 'right' = 'right';\n @property() label = '';\n @property() emptyText = 'No options';\n\n @state() private _highlightedIndex = -1;\n private _typeBuffer = '';\n private _typeTimer = 0;\n\n private _getSelected(): Set<string> {\n if (Array.isArray(this.value)) return new Set(this.value);\n return this.value ? new Set([this.value]) : new Set();\n }\n\n private _enabledOptions(): ListboxOption[] {\n return this.options.filter(o => !o.disabled);\n }\n\n private _select(opt: ListboxOption) {\n if (opt.disabled) return;\n const selected = this._getSelected();\n\n if (this.multiple) {\n if (selected.has(opt.value)) {\n selected.delete(opt.value);\n } else {\n selected.add(opt.value);\n }\n this.value = [...selected];\n } else {\n this.value = opt.value;\n }\n\n this.dispatchEvent(new CustomEvent('cg-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n const enabled = this._enabledOptions();\n if (enabled.length === 0) return;\n\n const allOptions = this.options;\n let currentEnabledIdx = -1;\n if (this._highlightedIndex >= 0) {\n const highlightedOpt = allOptions[this._highlightedIndex];\n if (highlightedOpt) currentEnabledIdx = enabled.indexOf(highlightedOpt);\n }\n\n let nextEnabledIdx = currentEnabledIdx;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextEnabledIdx = Math.min(currentEnabledIdx + 1, enabled.length - 1);\n if (currentEnabledIdx === -1) nextEnabledIdx = 0;\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextEnabledIdx = Math.max(currentEnabledIdx - 1, 0);\n break;\n case 'Home':\n e.preventDefault();\n nextEnabledIdx = 0;\n break;\n case 'End':\n e.preventDefault();\n nextEnabledIdx = enabled.length - 1;\n break;\n case ' ':\n case 'Enter':\n e.preventDefault();\n if (this._highlightedIndex >= 0 && allOptions[this._highlightedIndex]) {\n this._select(allOptions[this._highlightedIndex]!);\n }\n return;\n default:\n // Type-ahead\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey) {\n this._typeBuffer += e.key.toLowerCase();\n clearTimeout(this._typeTimer);\n this._typeTimer = window.setTimeout(() => { this._typeBuffer = ''; }, 500);\n const match = enabled.findIndex(o => o.label.toLowerCase().startsWith(this._typeBuffer));\n if (match >= 0) nextEnabledIdx = match;\n }\n return;\n }\n\n if (nextEnabledIdx >= 0 && nextEnabledIdx < enabled.length) {\n const nextOpt = enabled[nextEnabledIdx]!;\n this._highlightedIndex = allOptions.indexOf(nextOpt);\n this._scrollToHighlighted();\n }\n }\n\n private _scrollToHighlighted() {\n requestAnimationFrame(() => {\n const el = this.shadowRoot?.querySelector('.option.highlighted') as HTMLElement | null;\n el?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n override render() {\n if (this.options.length === 0) {\n return html`<div class=\"empty\">${this.emptyText}</div>`;\n }\n\n const selected = this._getSelected();\n let lastGroup = '';\n\n return html`\n <div\n class=\"listbox\"\n role=\"listbox\"\n aria-label=${this.label || nothing}\n aria-multiselectable=${this.multiple ? 'true' : nothing}\n tabindex=\"0\"\n @keydown=${this._handleKeydown}\n >\n ${this.options.map((opt, i) => {\n const isSelected = selected.has(opt.value);\n const isHighlighted = i === this._highlightedIndex;\n const groupHeader = opt.group && opt.group !== lastGroup\n ? html`<div class=\"group-header\" role=\"presentation\">${(lastGroup = opt.group, opt.group)}</div>`\n : (opt.group && (lastGroup = opt.group), nothing);\n\n return html`\n ${groupHeader}\n <div\n class=\"option ${isSelected ? 'selected' : ''} ${isHighlighted ? 'highlighted' : ''} ${opt.disabled ? 'disabled' : ''}\"\n role=\"option\"\n id=\"opt-${opt.value}\"\n aria-selected=${isSelected}\n aria-disabled=${opt.disabled ? 'true' : nothing}\n @click=${() => this._select(opt)}\n @mouseenter=${() => { this._highlightedIndex = i; }}\n >\n <span class=\"option-body\">\n <span class=\"option-label\">${opt.label}</span>\n ${opt.description ? html`<span class=\"option-desc\">${opt.description}</span>` : nothing}\n </span>\n <span class=\"check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6L9 17l-5-5\"></path></svg>\n </span>\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-listbox': CgListbox; }\n}\n"],"names":["CgListbox","LitElement","o","opt","selected","enabled","allOptions","currentEnabledIdx","highlightedOpt","nextEnabledIdx","match","nextOpt","html","lastGroup","nothing","i","isSelected","isHighlighted","groupHeader","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-listbox.js","sources":["../../../src/components/cg-listbox/cg-listbox.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion, focusRingSingle } from '../../styles/index.js';\n\n/** Option for cg-listbox. */\nexport interface ListboxOption {\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n group?: string;\n}\n\n/**\n * <cg-listbox> — Selectable option list with single or multi-select, keyboard nav, and type-ahead.\n *\n * @fires {CustomEvent<{value: string | string[]}>} cg-change - When selection changes\n */\n@customElement('cg-listbox')\nexport class CgListbox extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: block;\n width: 100%;\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-card-radius);\n background: var(--cg-color-surface-cards-background);\n overflow: hidden;\n box-sizing: border-box;\n }\n\n .listbox {\n padding: var(--cg-spacing-6);\n overflow-y: auto;\n max-height: 320px;\n }\n /* The listbox itself is the focusable element (tabindex=0); without this\n a keyboard user tabbing in got no visible focus indicator (WCAG 2.4.7). */\n .listbox:focus-visible {\n ${focusRingSingle}\n }\n\n .option {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n padding: var(--cg-spacing-12) var(--cg-spacing-12);\n border-radius: var(--cg-border-radius-150);\n cursor: pointer;\n font-size: var(--cg-font-size-sm);\n color: var(--cg-color-surface-base-text);\n transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n border: var(--cg-border-width-50) solid transparent;\n min-height: 44px;\n }\n\n .option.highlighted {\n background: var(--cg-overlay-dark-subtle);\n border-color: var(--cg-color-surface-cards-border);\n }\n\n .option.selected {\n color: var(--cg-color-action-primary-background-default);\n font-weight: var(--cg-font-weight-semibold);\n }\n\n .option.disabled {\n opacity: 0.45;\n pointer-events: none;\n cursor: not-allowed;\n }\n\n .option:active:not(.disabled) {\n background: var(--cg-overlay-accent-subtle);\n }\n\n /* Checkmark tick */\n .check {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n flex-shrink: 0;\n color: var(--cg-color-action-primary-background-default);\n opacity: 0;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .option.selected .check {\n opacity: 1;\n }\n\n /* Right-aligned by default */\n :host(:not([checkPosition=\"left\"])) .check {\n margin-left: auto;\n }\n\n /* Left position */\n :host([checkPosition=\"left\"]) .check {\n order: -1;\n margin-left: 0;\n }\n\n .option-body {\n flex: 1;\n min-width: 0;\n }\n .option-label {\n line-height: var(--cg-line-height-snug);\n }\n .option-desc {\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 margin-top: var(--cg-spacing-2);\n }\n\n /* Group header */\n .group-header {\n padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-container-outlined);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n pointer-events: none;\n }\n .group-header:not(:first-child) {\n margin-top: var(--cg-spacing-4);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n padding-top: var(--cg-spacing-12);\n }\n\n /* Empty */\n .empty {\n padding: var(--cg-spacing-24);\n text-align: center;\n color: var(--cg-color-surface-container-outlined);\n font-size: var(--cg-font-size-sm);\n }\n `];\n\n @property({ type: Array }) options: ListboxOption[] = [];\n @property() value: string | string[] = '';\n @property({ type: Boolean, reflect: true }) multiple = false;\n @property({ reflect: true }) checkPosition: 'left' | 'right' = 'right';\n @property() label = '';\n @property() emptyText = 'No options';\n\n @state() private _highlightedIndex = -1;\n private _typeBuffer = '';\n private _typeTimer = 0;\n\n private _getSelected(): Set<string> {\n if (Array.isArray(this.value)) return new Set(this.value);\n return this.value ? new Set([this.value]) : new Set();\n }\n\n private _enabledOptions(): ListboxOption[] {\n return this.options.filter(o => !o.disabled);\n }\n\n private _select(opt: ListboxOption) {\n if (opt.disabled) return;\n const selected = this._getSelected();\n\n if (this.multiple) {\n if (selected.has(opt.value)) {\n selected.delete(opt.value);\n } else {\n selected.add(opt.value);\n }\n this.value = [...selected];\n } else {\n this.value = opt.value;\n }\n\n this.dispatchEvent(new CustomEvent('cg-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n const enabled = this._enabledOptions();\n if (enabled.length === 0) return;\n\n const allOptions = this.options;\n let currentEnabledIdx = -1;\n if (this._highlightedIndex >= 0) {\n const highlightedOpt = allOptions[this._highlightedIndex];\n if (highlightedOpt) currentEnabledIdx = enabled.indexOf(highlightedOpt);\n }\n\n let nextEnabledIdx = currentEnabledIdx;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextEnabledIdx = Math.min(currentEnabledIdx + 1, enabled.length - 1);\n if (currentEnabledIdx === -1) nextEnabledIdx = 0;\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextEnabledIdx = Math.max(currentEnabledIdx - 1, 0);\n break;\n case 'Home':\n e.preventDefault();\n nextEnabledIdx = 0;\n break;\n case 'End':\n e.preventDefault();\n nextEnabledIdx = enabled.length - 1;\n break;\n case ' ':\n case 'Enter':\n e.preventDefault();\n if (this._highlightedIndex >= 0 && allOptions[this._highlightedIndex]) {\n this._select(allOptions[this._highlightedIndex]!);\n }\n return;\n default:\n // Type-ahead\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey) {\n this._typeBuffer += e.key.toLowerCase();\n clearTimeout(this._typeTimer);\n this._typeTimer = window.setTimeout(() => { this._typeBuffer = ''; }, 500);\n const match = enabled.findIndex(o => o.label.toLowerCase().startsWith(this._typeBuffer));\n if (match >= 0) nextEnabledIdx = match;\n }\n return;\n }\n\n if (nextEnabledIdx >= 0 && nextEnabledIdx < enabled.length) {\n const nextOpt = enabled[nextEnabledIdx]!;\n this._highlightedIndex = allOptions.indexOf(nextOpt);\n this._scrollToHighlighted();\n }\n }\n\n private _scrollToHighlighted() {\n requestAnimationFrame(() => {\n const el = this.shadowRoot?.querySelector('.option.highlighted') as HTMLElement | null;\n el?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n override render() {\n if (this.options.length === 0) {\n return html`<div class=\"empty\">${this.emptyText}</div>`;\n }\n\n const selected = this._getSelected();\n let lastGroup = '';\n\n return html`\n <div\n class=\"listbox\"\n role=\"listbox\"\n aria-label=${this.label || nothing}\n aria-multiselectable=${this.multiple ? 'true' : nothing}\n aria-activedescendant=${this._highlightedIndex >= 0 && this.options[this._highlightedIndex] ? `opt-${this.options[this._highlightedIndex]!.value}` : nothing}\n tabindex=\"0\"\n @keydown=${this._handleKeydown}\n >\n ${this.options.map((opt, i) => {\n const isSelected = selected.has(opt.value);\n const isHighlighted = i === this._highlightedIndex;\n const groupHeader = opt.group && opt.group !== lastGroup\n ? html`<div class=\"group-header\" role=\"presentation\">${(lastGroup = opt.group, opt.group)}</div>`\n : (opt.group && (lastGroup = opt.group), nothing);\n\n return html`\n ${groupHeader}\n <div\n class=\"option ${isSelected ? 'selected' : ''} ${isHighlighted ? 'highlighted' : ''} ${opt.disabled ? 'disabled' : ''}\"\n role=\"option\"\n id=\"opt-${opt.value}\"\n aria-selected=${isSelected}\n aria-disabled=${opt.disabled ? 'true' : nothing}\n @click=${() => this._select(opt)}\n @mouseenter=${() => { this._highlightedIndex = i; }}\n >\n <span class=\"option-body\">\n <span class=\"option-label\">${opt.label}</span>\n ${opt.description ? html`<span class=\"option-desc\">${opt.description}</span>` : nothing}\n </span>\n <span class=\"check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6L9 17l-5-5\"></path></svg>\n </span>\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-listbox': CgListbox; }\n}\n"],"names":["CgListbox","LitElement","o","opt","selected","enabled","allOptions","currentEnabledIdx","highlightedOpt","nextEnabledIdx","match","nextOpt","html","lastGroup","nothing","i","isSelected","isHighlighted","groupHeader","hostBlock","reducedMotion","css","focusRingSingle","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -30,6 +30,8 @@ export declare class CgMarkdown extends LitElement {
30
30
  */
31
31
  private _inline;
32
32
  updated(changed: Map<string, unknown>): void;
33
+ firstUpdated(): void;
34
+ private _bindAnchor;
33
35
  private _bindCopyButton;
34
36
  render(): import('lit').TemplateResult<1>;
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cg-markdown.d.ts","sourceRoot":"","sources":["../../../src/components/cg-markdown/cg-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAsH5C;;;;;;;;;;GAUG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAuSnB;IAES,IAAI,SAAM;IAEtB;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAyIf;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAkCN,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWrD,OAAO,CAAC,eAAe;IAqBd,MAAM;CAGhB;AAED,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,aAAa,EAAE,UAAU,CAAC;KAAE;CAAE"}
1
+ {"version":3,"file":"cg-markdown.d.ts","sourceRoot":"","sources":["../../../src/components/cg-markdown/cg-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAuH5C;;;;;;;;;;GAUG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BA2TnB;IAES,IAAI,SAAM;IAEtB;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAmKf;;;;OAIG;IACH,OAAO,CAAC,OAAO;IA6CN,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAY5C,YAAY,IAAI,IAAI;IAU7B,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;IAwBd,MAAM;CAQhB;AAED,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,aAAa,EAAE,UAAU,CAAC;KAAE;CAAE"}