@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,16 +1,15 @@
1
- import { css as p, LitElement as u, nothing as g, html as n } from "lit";
2
- import { property as a, state as h, 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, t = (e, i, o, c) => {
5
- for (var s = c > 1 ? void 0 : c ? y(i, o) : i, d = e.length - 1, l; d >= 0; d--)
6
- (l = e[d]) && (s = (c ? l(i, o, s) : l(s)) || s);
7
- return c && s && m(i, o, s), s;
1
+ import { css as p, LitElement as u, nothing as c, html as l } from "lit";
2
+ import { property as s, state as g, customElement as v } from "lit/decorators.js";
3
+ import { h as b, r as f } from "../../chunks/premium.css-DHekUEUt.js";
4
+ import { b as m } from "../../chunks/outside-click-CP1P1fK3.js";
5
+ var _ = Object.defineProperty, y = Object.getOwnPropertyDescriptor, t = (e, i, o, n) => {
6
+ for (var a = n > 1 ? void 0 : n ? y(i, o) : i, d = e.length - 1, h; d >= 0; d--)
7
+ (h = e[d]) && (a = (n ? h(i, o, a) : h(a)) || a);
8
+ return n && a && _(i, o, a), a;
8
9
  };
9
10
  let r = class extends u {
10
11
  constructor() {
11
- super(), this.size = "md", this.rounded = "lg", this.options = [], this.value = "", this.label = "", this.placeholder = "Select...", this.name = "", this.disabled = !1, this.error = !1, this.success = !1, this.loading = !1, this.searchable = !1, this.required = !1, this._open = !1, this._search = "", this._highlighted = -1, this._handleClickOutside = (e) => {
12
- e.composedPath().includes(this) || this._close();
13
- }, typeof this.attachInternals == "function" && (this._internals = this.attachInternals());
12
+ super(), this.size = "md", this.rounded = "md", this.options = [], this.value = "", this.label = "", this.placeholder = "Select...", this.name = "", this.disabled = !1, this.error = !1, this.success = !1, this.loading = !1, this.searchable = !1, this.required = !1, this._open = !1, this._search = "", this._highlighted = -1, this._disposeOutsideClick = null, typeof this.attachInternals == "function" && (this._internals = this.attachInternals());
14
13
  }
15
14
  updated(e) {
16
15
  super.updated(e), e.has("value") && this._internals?.setFormValue(this.value), (e.has("required") || e.has("value")) && (this.required && !this.value ? this._internals?.setValidity({ valueMissing: !0 }, "This field is required") : this._internals?.setValidity({}));
@@ -21,8 +20,17 @@ let r = class extends u {
21
20
  formStateRestoreCallback(e) {
22
21
  this.value = e;
23
22
  }
23
+ _openPanel() {
24
+ this._open = !0, this._search = "", this._highlighted = this.options.findIndex((e) => e.value === this.value);
25
+ }
24
26
  _toggle() {
25
- this.disabled || this.loading || (this._open = !this._open, this._search = "", this._highlighted = -1);
27
+ if (!(this.disabled || this.loading)) {
28
+ if (this._open) {
29
+ this._close();
30
+ return;
31
+ }
32
+ this._openPanel(), this.searchable && this.updateComplete.then(() => this.shadowRoot?.querySelector(".search input")?.focus());
33
+ }
26
34
  }
27
35
  _close() {
28
36
  this._open = !1, this._search = "";
@@ -35,7 +43,13 @@ let r = class extends u {
35
43
  const e = this._search.toLowerCase();
36
44
  return this.options.filter((i) => i.label.toLowerCase().includes(e));
37
45
  }
46
+ _scrollHighlightedIntoView() {
47
+ this.updateComplete.then(
48
+ () => this.shadowRoot?.querySelector(".option.highlighted")?.scrollIntoView({ block: "nearest" })
49
+ );
50
+ }
38
51
  _handleKeydown(e) {
52
+ if (e.key === " " && e.target instanceof HTMLInputElement) return;
39
53
  const i = this._filteredOptions();
40
54
  if (e.key === "Escape") {
41
55
  this._close();
@@ -46,35 +60,53 @@ let r = class extends u {
46
60
  this._toggle(), e.preventDefault();
47
61
  return;
48
62
  }
49
- this._highlighted >= 0 && this._highlighted < i.length && (this._select(i[this._highlighted]), e.preventDefault());
63
+ e.preventDefault(), this._highlighted >= 0 && this._highlighted < i.length && this._select(i[this._highlighted]);
50
64
  return;
51
65
  }
52
66
  if (e.key === "ArrowDown") {
53
67
  if (e.preventDefault(), !this._open) {
54
- this._open = !0;
68
+ this._openPanel();
55
69
  return;
56
70
  }
57
- this._highlighted = Math.min(this._highlighted + 1, i.length - 1);
71
+ this._highlighted = Math.min(this._highlighted + 1, i.length - 1), this._scrollHighlightedIntoView();
72
+ return;
58
73
  }
59
- e.key === "ArrowUp" && (e.preventDefault(), this._highlighted = Math.max(this._highlighted - 1, 0));
74
+ if (e.key === "ArrowUp") {
75
+ if (e.preventDefault(), !this._open) {
76
+ this._openPanel();
77
+ return;
78
+ }
79
+ this._highlighted = Math.max(this._highlighted - 1, 0), this._scrollHighlightedIntoView();
80
+ return;
81
+ }
82
+ if (e.key === "Home" && this._open) {
83
+ e.preventDefault(), this._highlighted = 0, this._scrollHighlightedIntoView();
84
+ return;
85
+ }
86
+ e.key === "End" && this._open && (e.preventDefault(), this._highlighted = i.length - 1, this._scrollHighlightedIntoView());
60
87
  }
61
88
  connectedCallback() {
62
- super.connectedCallback(), document.removeEventListener("click", this._handleClickOutside), document.addEventListener("click", this._handleClickOutside);
89
+ super.connectedCallback(), this._disposeOutsideClick?.(), this._disposeOutsideClick = m(this, () => this._close());
63
90
  }
64
91
  disconnectedCallback() {
65
- super.disconnectedCallback(), document.removeEventListener("click", this._handleClickOutside);
92
+ super.disconnectedCallback(), this._disposeOutsideClick?.(), this._disposeOutsideClick = null;
66
93
  }
67
94
  render() {
68
95
  const e = this.options.find((o) => o.value === this.value), i = this._filteredOptions();
69
- return n`
70
- ${this.label ? n`<span class="label">${this.label}</span>` : g}
96
+ return l`
97
+ ${this.label ? l`<span class="label" id="select-label">${this.label}</span>` : c}
71
98
  <div
72
99
  class="trigger ${this._open ? "open" : ""} ${this.disabled ? "disabled" : ""}"
73
100
  tabindex=${this.disabled ? "-1" : "0"}
74
101
  role="combobox"
75
102
  aria-expanded=${this._open}
76
103
  aria-haspopup="listbox"
104
+ aria-controls="select-listbox"
105
+ aria-labelledby=${this.label ? "select-label" : c}
106
+ aria-label=${this.label ? c : this.placeholder}
107
+ aria-activedescendant=${this._open && this._highlighted >= 0 && this._highlighted < i.length ? `select-option-${this._highlighted}` : c}
77
108
  aria-required=${this.required ? "true" : "false"}
109
+ aria-invalid=${this.error ? "true" : "false"}
78
110
  aria-busy=${this.loading ? "true" : "false"}
79
111
  @click=${this._toggle}
80
112
  @keydown=${this._handleKeydown}
@@ -82,33 +114,37 @@ let r = class extends u {
82
114
  <span class="trigger-text ${e ? "" : "placeholder"}">
83
115
  ${e ? e.label : this.placeholder}
84
116
  </span>
85
- ${this.loading ? n`<span class="loading-spinner" aria-hidden="true"></span>` : n`
117
+ ${this.loading ? l`<span class="loading-spinner" aria-hidden="true"></span>` : l`
86
118
  <svg class="chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
87
119
  <path d="M6 9l6 6 6-6"></path>
88
120
  </svg>`}
89
121
  </div>
90
122
 
91
- <div class="dropdown ${this._open ? "open" : ""}" ?hidden=${!this._open} role="listbox">
92
- ${this.searchable ? n`
123
+ <div class="dropdown ${this._open ? "open" : ""}" ?hidden=${!this._open} role="listbox" id="select-listbox">
124
+ ${this.searchable ? l`
93
125
  <div class="search">
94
126
  <input
95
127
  placeholder="Search..."
128
+ aria-label="Search options"
96
129
  .value=${this._search}
97
130
  @input=${(o) => {
98
131
  this._search = o.target.value, this._highlighted = 0;
99
132
  }}
133
+ @keydown=${this._handleKeydown}
100
134
  @click=${(o) => o.stopPropagation()}
101
135
  />
102
136
  </div>
103
- ` : g}
104
- ${i.length === 0 ? n`<div class="empty-msg">No options</div>` : g}
105
- ${i.map((o, c) => n`
137
+ ` : c}
138
+ ${i.length === 0 ? l`<div class="empty-msg">No options</div>` : c}
139
+ ${i.map((o, n) => l`
106
140
  <div
107
- class="option ${o.value === this.value ? "selected" : ""} ${c === this._highlighted ? "highlighted" : ""} ${o.disabled ? "disabled" : ""}"
141
+ class="option ${o.value === this.value ? "selected" : ""} ${n === this._highlighted ? "highlighted" : ""} ${o.disabled ? "disabled" : ""}"
108
142
  role="option"
143
+ id="select-option-${n}"
109
144
  aria-selected=${o.value === this.value}
110
- @click=${(s) => {
111
- s.stopPropagation(), this._select(o);
145
+ aria-disabled=${o.disabled ? "true" : "false"}
146
+ @click=${(a) => {
147
+ a.stopPropagation(), this._select(o);
112
148
  }}
113
149
  >
114
150
  <span>${o.label}</span>
@@ -120,7 +156,7 @@ let r = class extends u {
120
156
  }
121
157
  };
122
158
  r.formAssociated = !0;
123
- r.styles = [f, b, p`
159
+ r.styles = [b, f, p`
124
160
  :host { position: relative; display: block; }
125
161
 
126
162
  .trigger {
@@ -173,7 +209,7 @@ r.styles = [f, b, p`
173
209
 
174
210
  .trigger-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
175
211
  .placeholder { color: var(--cg-color-input-text-placeholder); }
176
- .chevron { width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0; transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default); color: var(--cg-color-surface-container-outlined); }
212
+ .chevron { width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0; transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default); color: var(--cg-color-input-text-placeholder); }
177
213
  .trigger.open .chevron { transform: rotate(180deg); }
178
214
 
179
215
  .dropdown {
@@ -182,30 +218,32 @@ r.styles = [f, b, p`
182
218
  background: var(--cg-color-modal-container-background);
183
219
  border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);
184
220
  border-radius: var(--cg-component-card-radius);
185
- max-height: 240px; overflow-y: auto;
186
- opacity: 0; transform: translateY(calc(-1 * var(--cg-spacing-4))) scale(0.98); pointer-events: none;
187
- transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
221
+ max-height: var(--cg-component-combobox-listbox-max-height); overflow-y: auto;
188
222
  }
189
223
  .dropdown.open {
190
- opacity: 1; transform: translateY(0) scale(1); pointer-events: auto;
224
+ animation: cg-select-dropdown-in var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
225
+ }
226
+ @keyframes cg-select-dropdown-in {
227
+ from { opacity: 0; transform: scale(0.96) translateY(calc(var(--cg-spacing-4) * -1)); }
228
+ to { opacity: 1; transform: scale(1) translateY(0); }
191
229
  }
192
230
  .dropdown[hidden] { display: none; }
193
231
 
194
232
  .option {
195
- padding: var(--cg-spacing-8) var(--cg-spacing-12); border-radius: var(--cg-border-radius-150); cursor: pointer;
233
+ padding: var(--cg-spacing-8) var(--cg-spacing-12); border-radius: var(--cg-border-radius-100); cursor: pointer;
196
234
  font-size: var(--cg-font-size-sm);
197
235
  color: var(--cg-color-surface-base-text);
198
236
  transition: background var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
199
237
  display: flex; align-items: center; gap: var(--cg-spacing-8);
200
238
  }
201
- .option:hover { background: var(--cg-overlay-dark-subtle); }
202
- .option.highlighted { background: var(--cg-overlay-dark-subtle); }
203
- .option.selected { color: var(--cg-color-action-primary-background-default); font-weight: var(--cg-font-weight-medium); }
239
+ .option:hover { background: var(--cg-color-action-tertiary-background-hover); }
240
+ .option.highlighted { background: var(--cg-color-action-secondary-background-hover); }
241
+ .option.selected { color: var(--cg-color-accent-text); font-weight: var(--cg-font-weight-medium); }
204
242
  .option.disabled { opacity: 0.5; pointer-events: none; }
205
243
  .option .check {
206
244
  width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0;
207
245
  margin-left: auto; opacity: 0;
208
- color: var(--cg-color-action-primary-background-default);
246
+ color: var(--cg-color-accent-text);
209
247
  transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
210
248
  }
211
249
  .option.selected .check { opacity: 1; }
@@ -214,7 +252,7 @@ r.styles = [f, b, p`
214
252
  .search input {
215
253
  width: 100%; box-sizing: border-box;
216
254
  padding: var(--cg-spacing-8) var(--cg-spacing-12);
217
- border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);
255
+ border: var(--cg-border-width-50) solid var(--cg-color-input-border-default);
218
256
  border-radius: var(--cg-border-radius-100);
219
257
  font: inherit; font-size: var(--cg-font-size-sm); outline: none;
220
258
  background: transparent; color: var(--cg-color-input-text-default);
@@ -224,7 +262,7 @@ r.styles = [f, b, p`
224
262
 
225
263
  .empty-msg { padding: var(--cg-spacing-12); text-align: center; color: var(--cg-color-input-text-placeholder); font-size: var(--cg-font-size-sm); }
226
264
 
227
- .label { display: block; font-size: var(--cg-font-size-xs); font-weight: var(--cg-font-weight-medium); color: var(--cg-color-surface-container-outlined); margin-bottom: var(--cg-spacing-4); }
265
+ .label { display: block; font-size: var(--cg-font-size-xs); font-weight: var(--cg-font-weight-medium); color: var(--cg-color-surface-container-text); margin-bottom: var(--cg-spacing-4); }
228
266
 
229
267
  /* Size variants */
230
268
  :host([size="sm"]) .trigger { height: var(--cg-component-input-height-sm); font-size: var(--cg-font-size-xs); padding: 0 var(--cg-spacing-8); border-radius: var(--cg-border-radius-100); }
@@ -243,55 +281,55 @@ r.styles = [f, b, p`
243
281
  :host([rounded="lg"]) .trigger { border-radius: var(--cg-border-radius-150); }
244
282
  :host([rounded="lg"]) .dropdown { border-radius: var(--cg-border-radius-150); }
245
283
  :host([rounded="full"]) .trigger { border-radius: var(--cg-border-radius-full); }
246
- :host([rounded="full"]) .dropdown { border-radius: var(--cg-border-radius-full); }
284
+ :host([rounded="full"]) .dropdown { border-radius: var(--cg-border-radius-150); }
247
285
  `];
248
286
  t([
249
- a({ reflect: !0 })
287
+ s({ reflect: !0 })
250
288
  ], r.prototype, "size", 2);
251
289
  t([
252
- a({ reflect: !0 })
290
+ s({ reflect: !0 })
253
291
  ], r.prototype, "rounded", 2);
254
292
  t([
255
- a({ type: Array })
293
+ s({ type: Array })
256
294
  ], r.prototype, "options", 2);
257
295
  t([
258
- a()
296
+ s()
259
297
  ], r.prototype, "value", 2);
260
298
  t([
261
- a()
299
+ s()
262
300
  ], r.prototype, "label", 2);
263
301
  t([
264
- a()
302
+ s()
265
303
  ], r.prototype, "placeholder", 2);
266
304
  t([
267
- a()
305
+ s()
268
306
  ], r.prototype, "name", 2);
269
307
  t([
270
- a({ type: Boolean })
308
+ s({ type: Boolean })
271
309
  ], r.prototype, "disabled", 2);
272
310
  t([
273
- a({ type: Boolean, reflect: !0 })
311
+ s({ type: Boolean, reflect: !0 })
274
312
  ], r.prototype, "error", 2);
275
313
  t([
276
- a({ type: Boolean, reflect: !0 })
314
+ s({ type: Boolean, reflect: !0 })
277
315
  ], r.prototype, "success", 2);
278
316
  t([
279
- a({ type: Boolean, reflect: !0 })
317
+ s({ type: Boolean, reflect: !0 })
280
318
  ], r.prototype, "loading", 2);
281
319
  t([
282
- a({ type: Boolean })
320
+ s({ type: Boolean })
283
321
  ], r.prototype, "searchable", 2);
284
322
  t([
285
- a({ type: Boolean })
323
+ s({ type: Boolean })
286
324
  ], r.prototype, "required", 2);
287
325
  t([
288
- h()
326
+ g()
289
327
  ], r.prototype, "_open", 2);
290
328
  t([
291
- h()
329
+ g()
292
330
  ], r.prototype, "_search", 2);
293
331
  t([
294
- h()
332
+ g()
295
333
  ], r.prototype, "_highlighted", 2);
296
334
  r = t([
297
335
  v("cg-select")
@@ -1 +1 @@
1
- {"version":3,"file":"cg-select.js","sources":["../../../src/components/cg-select/cg-select.ts"],"sourcesContent":["import { LitElement, html, css, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-select\n * Dropdown select with optional search filtering and keyboard navigation.\n *\n * @example\n * ```html\n * <cg-select\n * placeholder=\"Choose a fruit\"\n * .options=${[{value:'apple',label:'Apple'},{value:'banana',label:'Banana'}]}\n * ></cg-select>\n * <cg-select searchable error .options=${items}></cg-select>\n * ```\n *\n * @fires {CustomEvent<{value: string, label: string}>} cg-change - When a selection is made\n *\n * @cssprop [--cg-color-input-background-default=#18181b] - Trigger background\n * @cssprop [--cg-color-surface-container-background=#18181b] - Dropdown panel background\n * @cssprop [--cg-color-focus-ring] - Focus/hover border accent\n * @cssprop [--cg-border-radius-150=12px] - Border radius for trigger and dropdown\n */\n\n/** Option entry for cg-select, with value, display label, and optional disabled state. */\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n@customElement('cg-select')\nexport class CgSelect 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 { position: relative; display: block; }\n\n .trigger {\n display: flex; align-items: center; justify-content: space-between;\n width: 100%; box-sizing: border-box;\n padding: 0 var(--cg-spacing-12); gap: var(--cg-spacing-8);\n border: var(--cg-border-width-50) solid var(--cg-color-input-border-default);\n border-radius: var(--cg-component-select-radius);\n background: var(--cg-color-input-background-default);\n font: inherit; font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-default);\n cursor: pointer; height: var(--cg-component-select-height-md);\n transition: border-color 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-default);\n outline: none;\n }\n .trigger:hover:not(.disabled) { border-color: var(--cg-color-input-border-hover); }\n .trigger:active:not(.disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .trigger:focus-visible { outline: none; border-color: var(--cg-color-input-border-focus); box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong); }\n\n /* Loading */\n :host([loading]) .trigger { pointer-events: none; opacity: 0.7; }\n .loading-spinner {\n width: var(--cg-spacing-16);\n height: var(--cg-spacing-16);\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-select-spin var(--cg-transition-duration-slow) linear infinite;\n flex-shrink: 0;\n }\n @keyframes cg-select-spin {\n to { transform: rotate(360deg); }\n }\n .trigger.open { border-color: var(--cg-color-input-border-focus); box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong); }\n .trigger.disabled { opacity: 0.5; pointer-events: none; background: var(--cg-color-input-background-disabled); border-color: var(--cg-color-input-border-disabled); }\n :host([error]) .trigger { border-color: var(--cg-color-input-border-error); }\n :host([error]) .trigger:focus-visible,\n :host([error]) .trigger.open {\n border-color: var(--cg-color-status-error-text-default);\n box-shadow: 0 0 0 3px var(--cg-shadow-focus-error);\n }\n :host([success]) .trigger { border-color: var(--cg-color-status-success-border-default); }\n :host([success]) .trigger:focus-visible,\n :host([success]) .trigger.open {\n border-color: var(--cg-color-status-success-text-default);\n box-shadow: 0 0 0 3px var(--cg-shadow-focus-success);\n }\n\n .trigger-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .placeholder { color: var(--cg-color-input-text-placeholder); }\n .chevron { width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0; transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default); color: var(--cg-color-surface-container-outlined); }\n .trigger.open .chevron { transform: rotate(180deg); }\n\n .dropdown {\n position: absolute; top: 100%; left: 0; right: 0; z-index: var(--cg-z-index-200);\n margin-top: var(--cg-spacing-4); padding: var(--cg-spacing-6);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-card-radius);\n max-height: 240px; overflow-y: auto;\n opacity: 0; transform: translateY(calc(-1 * var(--cg-spacing-4))) scale(0.98); pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default), transform var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .dropdown.open {\n opacity: 1; transform: translateY(0) scale(1); pointer-events: auto;\n }\n .dropdown[hidden] { display: none; }\n\n .option {\n padding: var(--cg-spacing-8) var(--cg-spacing-12); border-radius: var(--cg-border-radius-150); 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 display: flex; align-items: center; gap: var(--cg-spacing-8);\n }\n .option:hover { background: var(--cg-overlay-dark-subtle); }\n .option.highlighted { background: var(--cg-overlay-dark-subtle); }\n .option.selected { color: var(--cg-color-action-primary-background-default); font-weight: var(--cg-font-weight-medium); }\n .option.disabled { opacity: 0.5; pointer-events: none; }\n .option .check {\n width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0;\n margin-left: auto; opacity: 0;\n color: var(--cg-color-action-primary-background-default);\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .option.selected .check { opacity: 1; }\n\n .search { padding: 0; margin-bottom: var(--cg-spacing-4); }\n .search input {\n width: 100%; box-sizing: border-box;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-divider);\n border-radius: var(--cg-border-radius-100);\n font: inherit; font-size: var(--cg-font-size-sm); outline: none;\n background: transparent; color: var(--cg-color-input-text-default);\n }\n .search input::placeholder { color: var(--cg-color-input-text-placeholder); }\n .search input:focus { border-color: var(--cg-color-input-border-focus); }\n\n .empty-msg { padding: var(--cg-spacing-12); text-align: center; color: var(--cg-color-input-text-placeholder); font-size: var(--cg-font-size-sm); }\n\n .label { display: block; font-size: var(--cg-font-size-xs); font-weight: var(--cg-font-weight-medium); color: var(--cg-color-surface-container-outlined); margin-bottom: var(--cg-spacing-4); }\n\n /* Size variants */\n :host([size=\"sm\"]) .trigger { height: var(--cg-component-input-height-sm); font-size: var(--cg-font-size-xs); padding: 0 var(--cg-spacing-8); border-radius: var(--cg-border-radius-100); }\n :host([size=\"sm\"]) .option { font-size: var(--cg-font-size-xs); }\n\n :host([size=\"lg\"]) .trigger { height: var(--cg-component-input-height-lg); font-size: var(--cg-font-size-base); padding: 0 var(--cg-spacing-16); border-radius: var(--cg-border-radius-150); }\n :host([size=\"lg\"]) .option { font-size: var(--cg-font-size-base); }\n\n /* ── Rounded overrides ── */\n :host([rounded=\"none\"]) .trigger { border-radius: 0; }\n :host([rounded=\"none\"]) .dropdown { border-radius: 0; }\n :host([rounded=\"sm\"]) .trigger { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) .dropdown { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .trigger { border-radius: var(--cg-component-select-radius); }\n :host([rounded=\"md\"]) .dropdown { border-radius: var(--cg-component-select-radius); }\n :host([rounded=\"lg\"]) .trigger { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .dropdown { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .trigger { border-radius: var(--cg-border-radius-full); }\n :host([rounded=\"full\"]) .dropdown { border-radius: var(--cg-border-radius-full); }\n `];\n\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'lg';\n @property({ type: Array }) options: SelectOption[] = [];\n @property() value = '';\n @property() label = '';\n @property() placeholder = 'Select...';\n @property() name = '';\n @property({ type: Boolean }) 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 }) searchable = false;\n @property({ type: Boolean }) required = false;\n\n override updated(changed: PropertyValues) {\n super.updated(changed);\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n }\n if (changed.has('required') || changed.has('value')) {\n if (this.required && !this.value) {\n this._internals?.setValidity({ valueMissing: true }, 'This field is required');\n } else {\n this._internals?.setValidity({});\n }\n }\n }\n\n formResetCallback() {\n this.value = this.getAttribute('value') ?? '';\n }\n\n formStateRestoreCallback(state: string) {\n this.value = state;\n }\n\n @state() private _open = false;\n @state() private _search = '';\n @state() private _highlighted = -1;\n\n private _toggle() {\n if (this.disabled || this.loading) return;\n this._open = !this._open;\n this._search = '';\n this._highlighted = -1;\n }\n\n private _close() { this._open = false; this._search = ''; }\n\n private _select(opt: SelectOption) {\n if (opt.disabled) return;\n this.value = opt.value;\n this._close();\n this.dispatchEvent(new CustomEvent('cg-change', { detail: { value: opt.value, label: opt.label }, bubbles: true, composed: true }));\n }\n\n private _filteredOptions() {\n if (!this._search) return this.options;\n const q = this._search.toLowerCase();\n return this.options.filter(o => o.label.toLowerCase().includes(q));\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n const filtered = this._filteredOptions();\n if (e.key === 'Escape') { this._close(); return; }\n if (e.key === 'Enter' || e.key === ' ') {\n if (!this._open) { this._toggle(); e.preventDefault(); return; }\n if (this._highlighted >= 0 && this._highlighted < filtered.length) {\n this._select(filtered[this._highlighted]!);\n e.preventDefault();\n }\n return;\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (!this._open) { this._open = true; return; }\n this._highlighted = Math.min(this._highlighted + 1, filtered.length - 1);\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._highlighted = Math.max(this._highlighted - 1, 0);\n }\n }\n\n private _handleClickOutside = (e: Event) => {\n if (!e.composedPath().includes(this)) this._close();\n };\n\n override connectedCallback() { super.connectedCallback(); document.removeEventListener('click', this._handleClickOutside); document.addEventListener('click', this._handleClickOutside); }\n override disconnectedCallback() { super.disconnectedCallback(); document.removeEventListener('click', this._handleClickOutside); }\n\n override render() {\n const selected = this.options.find(o => o.value === this.value);\n const filtered = this._filteredOptions();\n\n return html`\n ${this.label ? html`<span class=\"label\">${this.label}</span>` : nothing}\n <div\n class=\"trigger ${this._open ? 'open' : ''} ${this.disabled ? 'disabled' : ''}\"\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"combobox\"\n aria-expanded=${this._open}\n aria-haspopup=\"listbox\"\n aria-required=${this.required ? 'true' : 'false'}\n aria-busy=${this.loading ? 'true' : 'false'}\n @click=${this._toggle}\n @keydown=${this._handleKeydown}\n >\n <span class=\"trigger-text ${!selected ? 'placeholder' : ''}\">\n ${selected ? selected.label : this.placeholder}\n </span>\n ${this.loading ? html`<span class=\"loading-spinner\" aria-hidden=\"true\"></span>` : html`\n <svg class=\"chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\"></path>\n </svg>`}\n </div>\n\n <div class=\"dropdown ${this._open ? 'open' : ''}\" ?hidden=${!this._open} role=\"listbox\">\n ${this.searchable ? html`\n <div class=\"search\">\n <input\n placeholder=\"Search...\"\n .value=${this._search}\n @input=${(e: Event) => { this._search = (e.target as HTMLInputElement).value; this._highlighted = 0; }}\n @click=${(e: Event) => e.stopPropagation()}\n />\n </div>\n ` : nothing}\n ${filtered.length === 0 ? html`<div class=\"empty-msg\">No options</div>` : nothing}\n ${filtered.map((opt, i) => html`\n <div\n class=\"option ${opt.value === this.value ? 'selected' : ''} ${i === this._highlighted ? 'highlighted' : ''} ${opt.disabled ? 'disabled' : ''}\"\n role=\"option\"\n aria-selected=${opt.value === this.value}\n @click=${(e: Event) => { e.stopPropagation(); this._select(opt); }}\n >\n <span>${opt.label}</span>\n <svg class=\"check\" 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 </div>\n `)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-select': CgSelect; }\n}\n"],"names":["CgSelect","LitElement","changed","state","opt","q","o","filtered","selected","html","nothing","e","i","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-select.js","sources":["../../../src/components/cg-select/cg-select.ts"],"sourcesContent":["import { LitElement, html, css, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { bindOutsideClick } from '../../utils/outside-click.js';\n\n/**\n * @element cg-select\n * Dropdown select with optional search filtering and keyboard navigation.\n *\n * @example\n * ```html\n * <cg-select\n * placeholder=\"Choose a fruit\"\n * .options=${[{value:'apple',label:'Apple'},{value:'banana',label:'Banana'}]}\n * ></cg-select>\n * <cg-select searchable error .options=${items}></cg-select>\n * ```\n *\n * @fires {CustomEvent<{value: string, label: string}>} cg-change - When a selection is made\n *\n * @cssprop [--cg-color-input-background-default=#18181b] - Trigger background\n * @cssprop [--cg-color-surface-container-background=#18181b] - Dropdown panel background\n * @cssprop [--cg-color-focus-ring] - Focus/hover border accent\n * @cssprop [--cg-component-select-radius] - Border radius for trigger and dropdown (default rounded=\"md\")\n */\n\n/** Option entry for cg-select, with value, display label, and optional disabled state. */\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n@customElement('cg-select')\nexport class CgSelect 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 { position: relative; display: block; }\n\n .trigger {\n display: flex; align-items: center; justify-content: space-between;\n width: 100%; box-sizing: border-box;\n padding: 0 var(--cg-spacing-12); gap: var(--cg-spacing-8);\n border: var(--cg-border-width-50) solid var(--cg-color-input-border-default);\n border-radius: var(--cg-component-select-radius);\n background: var(--cg-color-input-background-default);\n font: inherit; font-size: var(--cg-font-size-sm);\n color: var(--cg-color-input-text-default);\n cursor: pointer; height: var(--cg-component-select-height-md);\n transition: border-color 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-default);\n outline: none;\n }\n .trigger:hover:not(.disabled) { border-color: var(--cg-color-input-border-hover); }\n .trigger:active:not(.disabled) {\n transform: scale(var(--cg-interaction-press-scale));\n }\n .trigger:focus-visible { outline: none; border-color: var(--cg-color-input-border-focus); box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong); }\n\n /* Loading */\n :host([loading]) .trigger { pointer-events: none; opacity: 0.7; }\n .loading-spinner {\n width: var(--cg-spacing-16);\n height: var(--cg-spacing-16);\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-select-spin var(--cg-transition-duration-slow) linear infinite;\n flex-shrink: 0;\n }\n @keyframes cg-select-spin {\n to { transform: rotate(360deg); }\n }\n .trigger.open { border-color: var(--cg-color-input-border-focus); box-shadow: 0 0 0 3px var(--cg-overlay-accent-strong); }\n .trigger.disabled { opacity: 0.5; pointer-events: none; background: var(--cg-color-input-background-disabled); border-color: var(--cg-color-input-border-disabled); }\n :host([error]) .trigger { border-color: var(--cg-color-input-border-error); }\n :host([error]) .trigger:focus-visible,\n :host([error]) .trigger.open {\n border-color: var(--cg-color-status-error-text-default);\n box-shadow: 0 0 0 3px var(--cg-shadow-focus-error);\n }\n :host([success]) .trigger { border-color: var(--cg-color-status-success-border-default); }\n :host([success]) .trigger:focus-visible,\n :host([success]) .trigger.open {\n border-color: var(--cg-color-status-success-text-default);\n box-shadow: 0 0 0 3px var(--cg-shadow-focus-success);\n }\n\n .trigger-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .placeholder { color: var(--cg-color-input-text-placeholder); }\n .chevron { width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0; transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-default); color: var(--cg-color-input-text-placeholder); }\n .trigger.open .chevron { transform: rotate(180deg); }\n\n .dropdown {\n position: absolute; top: 100%; left: 0; right: 0; z-index: var(--cg-z-index-200);\n margin-top: var(--cg-spacing-4); padding: var(--cg-spacing-6);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-surface-cards-border);\n border-radius: var(--cg-component-card-radius);\n max-height: var(--cg-component-combobox-listbox-max-height); overflow-y: auto;\n }\n .dropdown.open {\n animation: cg-select-dropdown-in var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n @keyframes cg-select-dropdown-in {\n from { opacity: 0; transform: scale(0.96) translateY(calc(var(--cg-spacing-4) * -1)); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n .dropdown[hidden] { display: none; }\n\n .option {\n padding: var(--cg-spacing-8) var(--cg-spacing-12); border-radius: var(--cg-border-radius-100); 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 display: flex; align-items: center; gap: var(--cg-spacing-8);\n }\n .option:hover { background: var(--cg-color-action-tertiary-background-hover); }\n .option.highlighted { background: var(--cg-color-action-secondary-background-hover); }\n .option.selected { color: var(--cg-color-accent-text); font-weight: var(--cg-font-weight-medium); }\n .option.disabled { opacity: 0.5; pointer-events: none; }\n .option .check {\n width: var(--cg-icon-size-100); height: var(--cg-icon-size-100); flex-shrink: 0;\n margin-left: auto; opacity: 0;\n color: var(--cg-color-accent-text);\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .option.selected .check { opacity: 1; }\n\n .search { padding: 0; margin-bottom: var(--cg-spacing-4); }\n .search input {\n width: 100%; box-sizing: border-box;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border: var(--cg-border-width-50) solid var(--cg-color-input-border-default);\n border-radius: var(--cg-border-radius-100);\n font: inherit; font-size: var(--cg-font-size-sm); outline: none;\n background: transparent; color: var(--cg-color-input-text-default);\n }\n .search input::placeholder { color: var(--cg-color-input-text-placeholder); }\n .search input:focus { border-color: var(--cg-color-input-border-focus); }\n\n .empty-msg { padding: var(--cg-spacing-12); text-align: center; color: var(--cg-color-input-text-placeholder); font-size: var(--cg-font-size-sm); }\n\n .label { display: block; font-size: var(--cg-font-size-xs); font-weight: var(--cg-font-weight-medium); color: var(--cg-color-surface-container-text); margin-bottom: var(--cg-spacing-4); }\n\n /* Size variants */\n :host([size=\"sm\"]) .trigger { height: var(--cg-component-input-height-sm); font-size: var(--cg-font-size-xs); padding: 0 var(--cg-spacing-8); border-radius: var(--cg-border-radius-100); }\n :host([size=\"sm\"]) .option { font-size: var(--cg-font-size-xs); }\n\n :host([size=\"lg\"]) .trigger { height: var(--cg-component-input-height-lg); font-size: var(--cg-font-size-base); padding: 0 var(--cg-spacing-16); border-radius: var(--cg-border-radius-150); }\n :host([size=\"lg\"]) .option { font-size: var(--cg-font-size-base); }\n\n /* ── Rounded overrides ── */\n :host([rounded=\"none\"]) .trigger { border-radius: 0; }\n :host([rounded=\"none\"]) .dropdown { border-radius: 0; }\n :host([rounded=\"sm\"]) .trigger { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"sm\"]) .dropdown { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .trigger { border-radius: var(--cg-component-select-radius); }\n :host([rounded=\"md\"]) .dropdown { border-radius: var(--cg-component-select-radius); }\n :host([rounded=\"lg\"]) .trigger { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"lg\"]) .dropdown { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .trigger { border-radius: var(--cg-border-radius-full); }\n :host([rounded=\"full\"]) .dropdown { border-radius: var(--cg-border-radius-150); }\n `];\n\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md';\n @property({ type: Array }) options: SelectOption[] = [];\n @property() value = '';\n @property() label = '';\n @property() placeholder = 'Select...';\n @property() name = '';\n @property({ type: Boolean }) 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 }) searchable = false;\n @property({ type: Boolean }) required = false;\n\n override updated(changed: PropertyValues) {\n super.updated(changed);\n if (changed.has('value')) {\n this._internals?.setFormValue(this.value);\n }\n if (changed.has('required') || changed.has('value')) {\n if (this.required && !this.value) {\n this._internals?.setValidity({ valueMissing: true }, 'This field is required');\n } else {\n this._internals?.setValidity({});\n }\n }\n }\n\n formResetCallback() {\n this.value = this.getAttribute('value') ?? '';\n }\n\n formStateRestoreCallback(state: string) {\n this.value = state;\n }\n\n @state() private _open = false;\n @state() private _search = '';\n @state() private _highlighted = -1;\n\n private _openPanel() {\n this._open = true;\n this._search = '';\n this._highlighted = this.options.findIndex(o => o.value === this.value);\n }\n\n private _toggle() {\n if (this.disabled || this.loading) return;\n if (this._open) {\n this._close();\n return;\n }\n this._openPanel();\n if (this.searchable) {\n this.updateComplete.then(() => this.shadowRoot?.querySelector<HTMLInputElement>('.search input')?.focus());\n }\n }\n\n private _close() { this._open = false; this._search = ''; }\n\n private _select(opt: SelectOption) {\n if (opt.disabled) return;\n this.value = opt.value;\n this._close();\n this.dispatchEvent(new CustomEvent('cg-change', { detail: { value: opt.value, label: opt.label }, bubbles: true, composed: true }));\n }\n\n private _filteredOptions() {\n if (!this._search) return this.options;\n const q = this._search.toLowerCase();\n return this.options.filter(o => o.label.toLowerCase().includes(q));\n }\n\n private _scrollHighlightedIntoView() {\n this.updateComplete.then(() =>\n this.shadowRoot?.querySelector('.option.highlighted')?.scrollIntoView({ block: 'nearest' })\n );\n }\n\n private _handleKeydown(e: KeyboardEvent) {\n if (e.key === ' ' && e.target instanceof HTMLInputElement) return;\n const filtered = this._filteredOptions();\n if (e.key === 'Escape') { this._close(); return; }\n if (e.key === 'Enter' || e.key === ' ') {\n if (!this._open) { this._toggle(); e.preventDefault(); return; }\n e.preventDefault();\n if (this._highlighted >= 0 && this._highlighted < filtered.length) {\n this._select(filtered[this._highlighted]!);\n }\n return;\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (!this._open) { this._openPanel(); return; }\n this._highlighted = Math.min(this._highlighted + 1, filtered.length - 1);\n this._scrollHighlightedIntoView();\n return;\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n if (!this._open) { this._openPanel(); return; }\n this._highlighted = Math.max(this._highlighted - 1, 0);\n this._scrollHighlightedIntoView();\n return;\n }\n if (e.key === 'Home' && this._open) {\n e.preventDefault();\n this._highlighted = 0;\n this._scrollHighlightedIntoView();\n return;\n }\n if (e.key === 'End' && this._open) {\n e.preventDefault();\n this._highlighted = filtered.length - 1;\n this._scrollHighlightedIntoView();\n }\n }\n\n private _disposeOutsideClick: (() => void) | null = null;\n\n override connectedCallback() {\n super.connectedCallback();\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = bindOutsideClick(this, () => this._close());\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n }\n\n override render() {\n const selected = this.options.find(o => o.value === this.value);\n const filtered = this._filteredOptions();\n\n return html`\n ${this.label ? html`<span class=\"label\" id=\"select-label\">${this.label}</span>` : nothing}\n <div\n class=\"trigger ${this._open ? 'open' : ''} ${this.disabled ? 'disabled' : ''}\"\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"combobox\"\n aria-expanded=${this._open}\n aria-haspopup=\"listbox\"\n aria-controls=\"select-listbox\"\n aria-labelledby=${this.label ? 'select-label' : nothing}\n aria-label=${this.label ? nothing : this.placeholder}\n aria-activedescendant=${this._open && this._highlighted >= 0 && this._highlighted < filtered.length ? `select-option-${this._highlighted}` : nothing}\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=${this._handleKeydown}\n >\n <span class=\"trigger-text ${!selected ? 'placeholder' : ''}\">\n ${selected ? selected.label : this.placeholder}\n </span>\n ${this.loading ? html`<span class=\"loading-spinner\" aria-hidden=\"true\"></span>` : html`\n <svg class=\"chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\"></path>\n </svg>`}\n </div>\n\n <div class=\"dropdown ${this._open ? 'open' : ''}\" ?hidden=${!this._open} role=\"listbox\" id=\"select-listbox\">\n ${this.searchable ? html`\n <div class=\"search\">\n <input\n placeholder=\"Search...\"\n aria-label=\"Search options\"\n .value=${this._search}\n @input=${(e: Event) => { this._search = (e.target as HTMLInputElement).value; this._highlighted = 0; }}\n @keydown=${this._handleKeydown}\n @click=${(e: Event) => e.stopPropagation()}\n />\n </div>\n ` : nothing}\n ${filtered.length === 0 ? html`<div class=\"empty-msg\">No options</div>` : nothing}\n ${filtered.map((opt, i) => html`\n <div\n class=\"option ${opt.value === this.value ? 'selected' : ''} ${i === this._highlighted ? 'highlighted' : ''} ${opt.disabled ? 'disabled' : ''}\"\n role=\"option\"\n id=\"select-option-${i}\"\n aria-selected=${opt.value === this.value}\n aria-disabled=${opt.disabled ? 'true' : 'false'}\n @click=${(e: Event) => { e.stopPropagation(); this._select(opt); }}\n >\n <span>${opt.label}</span>\n <svg class=\"check\" 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 </div>\n `)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap { 'cg-select': CgSelect; }\n}\n"],"names":["CgSelect","LitElement","changed","state","o","opt","q","filtered","bindOutsideClick","selected","html","nothing","e","i","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { LitElement } from 'lit';
3
3
  * <cg-separator> — Visual divider, horizontal or vertical.
4
4
  *
5
5
  * Features beyond OpenUI's Separator:
6
- * - Label slot (text in the middle of the line)
6
+ * - Label attribute (text in the middle of the line)
7
7
  * - Vertical orientation
8
8
  * - Semantic spacing variants
9
9
  */
@@ -14,7 +14,6 @@ export declare class CgSeparator extends LitElement {
14
14
  spacing: 'none' | 'sm' | 'md' | 'lg';
15
15
  label: string;
16
16
  render(): import('lit').TemplateResult<1>;
17
- connectedCallback(): void;
18
17
  updated(changed: Map<string, unknown>): void;
19
18
  }
20
19
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"cg-separator.d.ts","sourceRoot":"","sources":["../../../src/components/cg-separator/cg-separator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;GAOG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BA2DnB;IAE0B,OAAO,EAAE,OAAO,GAAG,UAAU,CAAW;IACxC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IACtD,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAU;IAC/D,KAAK,SAAM;IAEd,MAAM;IAWN,iBAAiB;IAQjB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAW/C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
1
+ {"version":3,"file":"cg-separator.d.ts","sourceRoot":"","sources":["../../../src/components/cg-separator/cg-separator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;GAOG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BA2DnB;IAE0B,OAAO,EAAE,OAAO,GAAG,UAAU,CAAW;IACxC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IACtD,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAU;IAC/D,KAAK,SAAM;IAEd,MAAM;IAWN,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAa/C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { css as p, LitElement as h, html as g } from "lit";
2
- import { property as o, customElement as d } from "lit/decorators.js";
3
- import { h as v, r as u } from "../../chunks/premium.css-9I4kHrsl.js";
2
+ import { property as o, customElement as v } from "lit/decorators.js";
3
+ import { h as d, r as u } from "../../chunks/premium.css-DHekUEUt.js";
4
4
  var m = Object.defineProperty, f = Object.getOwnPropertyDescriptor, i = (e, a, s, n) => {
5
5
  for (var t = n > 1 ? void 0 : n ? f(a, s) : a, c = e.length - 1, l; c >= 0; c--)
6
6
  (l = e[c]) && (t = (n ? l(a, s, t) : l(t)) || t);
@@ -17,14 +17,11 @@ let r = class extends h {
17
17
  <div class="line" role="presentation" aria-hidden="true"></div>
18
18
  ` : g`<div class="line" role="separator" aria-orientation="${this.orientation}"></div>`;
19
19
  }
20
- connectedCallback() {
21
- super.connectedCallback(), this.label && (this.setAttribute("role", "separator"), this.setAttribute("aria-orientation", this.orientation));
22
- }
23
20
  updated(e) {
24
- (e.has("label") || e.has("orientation")) && (this.label ? (this.setAttribute("role", "separator"), this.setAttribute("aria-orientation", this.orientation)) : (this.removeAttribute("role"), this.removeAttribute("aria-orientation")));
21
+ (e.has("label") || e.has("orientation")) && (this.label ? (this.setAttribute("role", "separator"), this.setAttribute("aria-orientation", this.orientation)) : this.getAttribute("role") === "separator" && (this.removeAttribute("role"), this.removeAttribute("aria-orientation")));
25
22
  }
26
23
  };
27
- r.styles = [v, u, p`
24
+ r.styles = [d, u, p`
28
25
  :host {
29
26
  display: flex;
30
27
  align-items: center;
@@ -97,7 +94,7 @@ i([
97
94
  o()
98
95
  ], r.prototype, "label", 2);
99
96
  r = i([
100
- d("cg-separator")
97
+ v("cg-separator")
101
98
  ], r);
102
99
  export {
103
100
  r as CgSeparator
@@ -1 +1 @@
1
- {"version":3,"file":"cg-separator.js","sources":["../../../src/components/cg-separator/cg-separator.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-separator> — Visual divider, horizontal or vertical.\n *\n * Features beyond OpenUI's Separator:\n * - Label slot (text in the middle of the line)\n * - Vertical orientation\n * - Semantic spacing variants\n */\n@customElement('cg-separator')\nexport class CgSeparator extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n }\n\n :host([orientation=\"horizontal\"]) {\n flex-direction: row;\n width: 100%;\n }\n\n :host([orientation=\"vertical\"]) {\n flex-direction: column;\n height: 100%;\n width: auto;\n }\n\n .line {\n flex: 1;\n background: var(--cg-color-surface-base-divider);\n }\n\n /* Gradient variant — fades at edges */\n :host([variant=\"gradient\"]) .line {\n background: linear-gradient(to right, transparent, var(--cg-color-surface-base-divider) 20%, var(--cg-color-surface-base-divider) 80%, transparent);\n }\n\n :host([orientation=\"horizontal\"]) .line {\n height: var(--cg-border-width-50);\n min-width: var(--cg-spacing-16);\n }\n\n :host([orientation=\"vertical\"]) .line {\n width: var(--cg-border-width-50);\n min-height: var(--cg-spacing-16);\n }\n :host([variant=\"gradient\"][orientation=\"vertical\"]) .line {\n background: linear-gradient(to bottom, transparent, var(--cg-color-surface-base-divider) 20%, var(--cg-color-surface-base-divider) 80%, transparent);\n }\n\n /* Spacing variants */\n :host([spacing=\"none\"]) { margin: 0; }\n :host([spacing=\"sm\"]) { margin: var(--cg-spacing-8) 0; }\n :host([spacing=\"md\"]) { margin: var(--cg-spacing-16) 0; }\n :host([spacing=\"lg\"]) { margin: var(--cg-spacing-24) 0; }\n\n :host([orientation=\"vertical\"][spacing=\"sm\"]) { margin: 0 var(--cg-spacing-8); }\n :host([orientation=\"vertical\"][spacing=\"md\"]) { margin: 0 var(--cg-spacing-16); }\n :host([orientation=\"vertical\"][spacing=\"lg\"]) { margin: 0 var(--cg-spacing-24); }\n\n .label {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-outlined);\n white-space: nowrap;\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n `];\n\n @property({ reflect: true }) variant: 'solid' | 'gradient' = 'solid';\n @property({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'horizontal';\n @property({ reflect: true }) spacing: 'none' | 'sm' | 'md' | 'lg' = 'none';\n @property() label = '';\n\n override render() {\n if (this.label) {\n return html`\n <div class=\"line\" role=\"presentation\" aria-hidden=\"true\"></div>\n <span class=\"label\">${this.label}</span>\n <div class=\"line\" role=\"presentation\" aria-hidden=\"true\"></div>\n `;\n }\n return html`<div class=\"line\" role=\"separator\" aria-orientation=\"${this.orientation}\"></div>`;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n if (this.label) {\n this.setAttribute('role', 'separator');\n this.setAttribute('aria-orientation', this.orientation);\n }\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('label') || changed.has('orientation')) {\n if (this.label) {\n this.setAttribute('role', 'separator');\n this.setAttribute('aria-orientation', this.orientation);\n } else {\n this.removeAttribute('role');\n this.removeAttribute('aria-orientation');\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-separator': CgSeparator;\n }\n}\n"],"names":["CgSeparator","LitElement","html","changed","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;AAaO,IAAMA,IAAN,cAA0BC,EAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GA8DwB,KAAA,UAAgC,SAChC,KAAA,cAAyC,cACzC,KAAA,UAAuC,QACxD,KAAA,QAAQ;AAAA,EAAA;AAAA,EAEX,SAAS;AAChB,WAAI,KAAK,QACAC;AAAA;AAAA,8BAEiB,KAAK,KAAK;AAAA;AAAA,UAI7BA,yDAA4D,KAAK,WAAW;AAAA,EACrF;AAAA,EAES,oBAAoB;AAC3B,UAAM,kBAAA,GACF,KAAK,UACP,KAAK,aAAa,QAAQ,WAAW,GACrC,KAAK,aAAa,oBAAoB,KAAK,WAAW;AAAA,EAE1D;AAAA,EAES,QAAQC,GAA+B;AAC9C,KAAIA,EAAQ,IAAI,OAAO,KAAKA,EAAQ,IAAI,aAAa,OAC/C,KAAK,SACP,KAAK,aAAa,QAAQ,WAAW,GACrC,KAAK,aAAa,oBAAoB,KAAK,WAAW,MAEtD,KAAK,gBAAgB,MAAM,GAC3B,KAAK,gBAAgB,kBAAkB;AAAA,EAG7C;AACF;AAjGaH,EACK,SAAS,CAACI,GAAWC,GAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA2DnD;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GA9DhBR,EA8DkB,WAAA,WAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GA/DhBR,EA+DkB,WAAA,eAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAhEhBR,EAgEkB,WAAA,WAAA,CAAA;AACjBO,EAAA;AAAA,EAAXC,EAAA;AAAS,GAjECR,EAiEC,WAAA,SAAA,CAAA;AAjEDA,IAANO,EAAA;AAAA,EADNE,EAAc,cAAc;AAAA,GAChBT,CAAA;"}
1
+ {"version":3,"file":"cg-separator.js","sources":["../../../src/components/cg-separator/cg-separator.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * <cg-separator> — Visual divider, horizontal or vertical.\n *\n * Features beyond OpenUI's Separator:\n * - Label attribute (text in the middle of the line)\n * - Vertical orientation\n * - Semantic spacing variants\n */\n@customElement('cg-separator')\nexport class CgSeparator extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n }\n\n :host([orientation=\"horizontal\"]) {\n flex-direction: row;\n width: 100%;\n }\n\n :host([orientation=\"vertical\"]) {\n flex-direction: column;\n height: 100%;\n width: auto;\n }\n\n .line {\n flex: 1;\n background: var(--cg-color-surface-base-divider);\n }\n\n /* Gradient variant — fades at edges */\n :host([variant=\"gradient\"]) .line {\n background: linear-gradient(to right, transparent, var(--cg-color-surface-base-divider) 20%, var(--cg-color-surface-base-divider) 80%, transparent);\n }\n\n :host([orientation=\"horizontal\"]) .line {\n height: var(--cg-border-width-50);\n min-width: var(--cg-spacing-16);\n }\n\n :host([orientation=\"vertical\"]) .line {\n width: var(--cg-border-width-50);\n min-height: var(--cg-spacing-16);\n }\n :host([variant=\"gradient\"][orientation=\"vertical\"]) .line {\n background: linear-gradient(to bottom, transparent, var(--cg-color-surface-base-divider) 20%, var(--cg-color-surface-base-divider) 80%, transparent);\n }\n\n /* Spacing variants */\n :host([spacing=\"none\"]) { margin: 0; }\n :host([spacing=\"sm\"]) { margin: var(--cg-spacing-8) 0; }\n :host([spacing=\"md\"]) { margin: var(--cg-spacing-16) 0; }\n :host([spacing=\"lg\"]) { margin: var(--cg-spacing-24) 0; }\n\n :host([orientation=\"vertical\"][spacing=\"sm\"]) { margin: 0 var(--cg-spacing-8); }\n :host([orientation=\"vertical\"][spacing=\"md\"]) { margin: 0 var(--cg-spacing-16); }\n :host([orientation=\"vertical\"][spacing=\"lg\"]) { margin: 0 var(--cg-spacing-24); }\n\n .label {\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-surface-container-outlined);\n white-space: nowrap;\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n `];\n\n @property({ reflect: true }) variant: 'solid' | 'gradient' = 'solid';\n @property({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'horizontal';\n @property({ reflect: true }) spacing: 'none' | 'sm' | 'md' | 'lg' = 'none';\n @property() label = '';\n\n override render() {\n if (this.label) {\n return html`\n <div class=\"line\" role=\"presentation\" aria-hidden=\"true\"></div>\n <span class=\"label\">${this.label}</span>\n <div class=\"line\" role=\"presentation\" aria-hidden=\"true\"></div>\n `;\n }\n return html`<div class=\"line\" role=\"separator\" aria-orientation=\"${this.orientation}\"></div>`;\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('label') || changed.has('orientation')) {\n if (this.label) {\n this.setAttribute('role', 'separator');\n this.setAttribute('aria-orientation', this.orientation);\n } else if (this.getAttribute('role') === 'separator') {\n // Only remove what this component set — never clobber a\n // consumer-supplied role on the host.\n this.removeAttribute('role');\n this.removeAttribute('aria-orientation');\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-separator': CgSeparator;\n }\n}\n"],"names":["CgSeparator","LitElement","html","changed","hostBlock","reducedMotion","css","__decorateClass","property","customElement"],"mappings":";;;;;;;;AAaO,IAAMA,IAAN,cAA0BC,EAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GA8DwB,KAAA,UAAgC,SAChC,KAAA,cAAyC,cACzC,KAAA,UAAuC,QACxD,KAAA,QAAQ;AAAA,EAAA;AAAA,EAEX,SAAS;AAChB,WAAI,KAAK,QACAC;AAAA;AAAA,8BAEiB,KAAK,KAAK;AAAA;AAAA,UAI7BA,yDAA4D,KAAK,WAAW;AAAA,EACrF;AAAA,EAES,QAAQC,GAA+B;AAC9C,KAAIA,EAAQ,IAAI,OAAO,KAAKA,EAAQ,IAAI,aAAa,OAC/C,KAAK,SACP,KAAK,aAAa,QAAQ,WAAW,GACrC,KAAK,aAAa,oBAAoB,KAAK,WAAW,KAC7C,KAAK,aAAa,MAAM,MAAM,gBAGvC,KAAK,gBAAgB,MAAM,GAC3B,KAAK,gBAAgB,kBAAkB;AAAA,EAG7C;AACF;AA3FaH,EACK,SAAS,CAACI,GAAWC,GAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA2DnD;AAE4BC,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GA9DhBR,EA8DkB,WAAA,WAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GA/DhBR,EA+DkB,WAAA,eAAA,CAAA;AACAO,EAAA;AAAA,EAA5BC,EAAS,EAAE,SAAS,GAAA,CAAM;AAAA,GAhEhBR,EAgEkB,WAAA,WAAA,CAAA;AACjBO,EAAA;AAAA,EAAXC,EAAA;AAAS,GAjECR,EAiEC,WAAA,SAAA,CAAA;AAjEDA,IAANO,EAAA;AAAA,EADNE,EAAc,cAAc;AAAA,GAChBT,CAAA;"}
@@ -23,12 +23,16 @@ export declare class CgSheet extends LitElement {
23
23
  private _dragging;
24
24
  disconnectedCallback(): void;
25
25
  updated(changed: Map<string, unknown>): void;
26
+ private _previousOverflow;
26
27
  private _onOpen;
27
28
  private _onClose;
28
29
  private _handleBackdrop;
29
30
  private _onDragStart;
30
31
  private _onDragMove;
31
32
  private _onDragEnd;
33
+ private _emitSnap;
34
+ /** SHEET-5: keyboard path for snap resizing (slider pattern on the handle). */
35
+ private _onHandleKeydown;
32
36
  render(): import('lit').TemplateResult<1>;
33
37
  }
34
38
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"cg-sheet.d.ts","sourceRoot":"","sources":["../../../src/components/cg-sheet/cg-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAKrD;;;;;;;;;GASG;AACH,qBACa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,4BA+FnB;IAEyC,IAAI,UAAS;IAC7C,KAAK,SAAW;IACC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAY;IACvD,UAAU,EAAE,MAAM,EAAE,CAAM;IACzB,UAAU,SAAK;IACd,WAAW,UAAQ;IAEvC,OAAO,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAS;IAEjB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOrD,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IAcT,MAAM;CA0ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"cg-sheet.d.ts","sourceRoot":"","sources":["../../../src/components/cg-sheet/cg-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAKrD;;;;;;;;;GASG;AACH,qBACa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,4BAqGnB;IAEyC,IAAI,UAAS;IAC7C,KAAK,SAAW;IACC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAY;IACvD,UAAU,EAAE,MAAM,EAAE,CAAM;IACzB,UAAU,SAAK;IACd,WAAW,UAAQ;IAEvC,OAAO,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAS;IAEjB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUrD,OAAO,CAAC,iBAAiB,CAAM;IAE/B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,SAAS;IAOjB,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB;IAaf,MAAM;CAkDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}