@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,24 +1,27 @@
1
- import { css as l, LitElement as h, nothing as g, html as p } from "lit";
2
- import { property as i, state as f, customElement as u } from "lit/decorators.js";
3
- import { r as v } from "../../chunks/premium.css-9I4kHrsl.js";
4
- import { F as b } from "../../chunks/focus-trap-BdRNhSPD.js";
5
- var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (t, e, r, n) => {
6
- for (var o = n > 1 ? void 0 : n ? _(e, r) : e, d = t.length - 1, c; d >= 0; d--)
7
- (c = t[d]) && (o = (n ? c(e, r, o) : c(o)) || o);
8
- return n && o && m(e, r, o), o;
1
+ import { css as c, LitElement as g, nothing as n, html as p } from "lit";
2
+ import { property as h, state as f, customElement as u } from "lit/decorators.js";
3
+ import { r as v } from "../../chunks/premium.css-DHekUEUt.js";
4
+ import { F as b } from "../../chunks/focus-trap-vlQwKK-3.js";
5
+ var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (t, e, s, o) => {
6
+ for (var r = o > 1 ? void 0 : o ? _(e, s) : e, d = t.length - 1, l; d >= 0; d--)
7
+ (l = t[d]) && (r = (o ? l(e, s, r) : l(r)) || r);
8
+ return o && r && m(e, s, r), r;
9
9
  };
10
- let s = class extends h {
10
+ let i = class extends g {
11
11
  constructor() {
12
- super(...arguments), this.open = !1, this.label = "Sheet", this.side = "bottom", this.snapPoints = [], this.activeSnap = 0, this.dismissible = !0, this._dragOffset = 0, this._focusTrap = new b(), this._dragStart = 0, this._dragging = !1;
12
+ super(...arguments), this.open = !1, this.label = "Sheet", this.side = "bottom", this.snapPoints = [], this.activeSnap = 0, this.dismissible = !0, this._dragOffset = 0, this._focusTrap = new b(), this._dragStart = 0, this._dragging = !1, this._previousOverflow = "";
13
13
  }
14
14
  disconnectedCallback() {
15
- super.disconnectedCallback(), this._focusTrap.deactivate();
15
+ super.disconnectedCallback(), this.open && (document.body.style.overflow = this._previousOverflow), this._focusTrap.deactivate();
16
16
  }
17
17
  updated(t) {
18
- t.has("open") && (this.open ? this._onOpen() : this._onClose());
18
+ if (t.has("open")) {
19
+ if (t.get("open") === void 0 && !this.open) return;
20
+ this.open ? this._onOpen() : this._onClose();
21
+ }
19
22
  }
20
23
  _onOpen() {
21
- this.dispatchEvent(new CustomEvent("cg-sheet-open", { bubbles: !0, composed: !0 })), requestAnimationFrame(() => {
24
+ this._previousOverflow = document.body.style.overflow, document.body.style.overflow = "hidden", this.dispatchEvent(new CustomEvent("cg-sheet-open", { bubbles: !0, composed: !0 })), requestAnimationFrame(() => {
22
25
  const t = this.shadowRoot?.querySelector(".panel");
23
26
  if (t) {
24
27
  const e = {};
@@ -29,34 +32,55 @@ let s = class extends h {
29
32
  });
30
33
  }
31
34
  _onClose() {
32
- this.dispatchEvent(new CustomEvent("cg-sheet-close", { bubbles: !0, composed: !0 })), this._focusTrap.deactivate(), this._dragOffset = 0;
35
+ document.body.style.overflow = this._previousOverflow, this.dispatchEvent(new CustomEvent("cg-sheet-close", { bubbles: !0, composed: !0 })), this._focusTrap.deactivate(), this._dragOffset = 0;
33
36
  }
34
37
  _handleBackdrop() {
35
38
  this.dismissible && (this.open = !1);
36
39
  }
37
40
  _onDragStart(t) {
38
- this.dismissible && (this._dragging = !0, this._dragStart = this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX, t.currentTarget.setPointerCapture?.(t.pointerId));
41
+ !this.dismissible && !this.snapPoints.length || (this._dragging = !0, this._dragStart = this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX, t.currentTarget.setPointerCapture?.(t.pointerId));
39
42
  }
40
43
  _onDragMove(t) {
41
44
  if (!this._dragging) return;
42
- let r = (this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX) - this._dragStart;
43
- (this.side === "top" || this.side === "left") && (r = -r), this._dragOffset = Math.max(0, r);
45
+ let s = (this.side === "bottom" || this.side === "top" ? t.clientY : t.clientX) - this._dragStart;
46
+ (this.side === "top" || this.side === "left") && (s = -s), this._dragOffset = this.snapPoints.length ? s : Math.max(0, s);
44
47
  }
45
48
  _onDragEnd() {
46
- this._dragging && (this._dragging = !1, this._dragOffset > 80 && this.dismissible ? this.open = !1 : this.snapPoints.length && this.dispatchEvent(new CustomEvent("cg-sheet-snap", {
49
+ if (this._dragging) {
50
+ if (this._dragging = !1, this.snapPoints.length) {
51
+ const t = this.side === "bottom" || this.side === "top" ? window.innerHeight : window.innerWidth, e = (this.snapPoints[this.activeSnap] ?? 0.95) - this._dragOffset / Math.max(1, t);
52
+ let s = 0;
53
+ for (let o = 1; o < this.snapPoints.length; o++)
54
+ Math.abs(this.snapPoints[o] - e) < Math.abs(this.snapPoints[s] - e) && (s = o);
55
+ this.dismissible && e < Math.min(...this.snapPoints) - 0.1 ? this.open = !1 : s !== this.activeSnap && (this.activeSnap = s, this._emitSnap());
56
+ } else this._dragOffset > 80 && this.dismissible && (this.open = !1);
57
+ this._dragOffset = 0;
58
+ }
59
+ }
60
+ _emitSnap() {
61
+ this.dispatchEvent(new CustomEvent("cg-sheet-snap", {
47
62
  bubbles: !0,
48
63
  composed: !0,
49
64
  detail: { index: this.activeSnap, value: this.snapPoints[this.activeSnap] ?? 1 }
50
- })), this._dragOffset = 0);
65
+ }));
66
+ }
67
+ /** SHEET-5: keyboard path for snap resizing (slider pattern on the handle). */
68
+ _onHandleKeydown(t) {
69
+ if (!this.snapPoints.length) return;
70
+ let e = this.activeSnap;
71
+ if (t.key === "ArrowUp" || t.key === "ArrowRight") e = Math.min(this.snapPoints.length - 1, e + 1);
72
+ else if (t.key === "ArrowDown" || t.key === "ArrowLeft") e = Math.max(0, e - 1);
73
+ else return;
74
+ t.preventDefault(), e !== this.activeSnap && (this.activeSnap = e, this._emitSnap());
51
75
  }
52
76
  render() {
53
77
  const t = this.side === "bottom" ? `translateY(${this._dragOffset}px)` : this.side === "top" ? `translateY(${-this._dragOffset}px)` : this.side === "right" ? `translateX(${this._dragOffset}px)` : `translateX(${-this._dragOffset}px)`;
54
78
  let e = "";
55
79
  if ((this.side === "bottom" || this.side === "top") && this.snapPoints.length) {
56
- const r = this.snapPoints[this.activeSnap] ?? 0.95;
57
- e = `height: ${Math.round(r * 100)}vh;`;
80
+ const s = this.snapPoints[this.activeSnap] ?? 0.95;
81
+ e = `height: ${Math.round(s * 100)}vh;`;
58
82
  }
59
- return (this._dragging || this._dragOffset) && (e += `transform: ${t};`), p`
83
+ return (this._dragging || this._dragOffset) && (e += `transform: ${t};`), this._dragging && (e += "transition: none;"), p`
60
84
  <div class="backdrop" aria-hidden="true" @click=${this._handleBackdrop}></div>
61
85
  <div
62
86
  class="panel"
@@ -70,6 +94,13 @@ let s = class extends h {
70
94
  ${this.side === "bottom" || this.side === "top" ? p`
71
95
  <div
72
96
  class="handle"
97
+ role=${this.snapPoints.length ? "slider" : n}
98
+ tabindex=${this.snapPoints.length ? "0" : n}
99
+ aria-label=${this.snapPoints.length ? "Resize sheet" : n}
100
+ aria-valuemin=${this.snapPoints.length ? "0" : n}
101
+ aria-valuemax=${this.snapPoints.length ? String(this.snapPoints.length - 1) : n}
102
+ aria-valuenow=${this.snapPoints.length ? String(this.activeSnap) : n}
103
+ @keydown=${this._onHandleKeydown}
73
104
  @pointerdown=${this._onDragStart}
74
105
  @pointermove=${this._onDragMove}
75
106
  @pointerup=${this._onDragEnd}
@@ -77,7 +108,7 @@ let s = class extends h {
77
108
  >
78
109
  <span class="handle-bar"></span>
79
110
  </div>
80
- ` : g}
111
+ ` : n}
81
112
  <div class="body">
82
113
  <slot></slot>
83
114
  </div>
@@ -85,7 +116,7 @@ let s = class extends h {
85
116
  `;
86
117
  }
87
118
  };
88
- s.styles = [v, l`
119
+ i.styles = [v, c`
89
120
  :host {
90
121
  display: contents;
91
122
  font-family: var(--cg-font-family-primary);
@@ -95,8 +126,8 @@ s.styles = [v, l`
95
126
  inset: 0;
96
127
  z-index: var(--cg-z-index-500);
97
128
  background: var(--cg-color-modal-overlay-background);
98
- backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(140%);
99
- -webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(140%);
129
+ backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);
130
+ -webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);
100
131
  opacity: 0;
101
132
  pointer-events: none;
102
133
  transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
@@ -168,10 +199,16 @@ s.styles = [v, l`
168
199
  width: var(--cg-spacing-40);
169
200
  height: var(--cg-spacing-4);
170
201
  border-radius: var(--cg-border-radius-full);
171
- background: var(--cg-color-surface-container-border);
202
+ background: var(--cg-color-surface-container-divider);
172
203
  transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
173
204
  }
174
205
  .handle:hover .handle-bar { background: var(--cg-color-surface-cards-border-strong); }
206
+ .handle:focus-visible {
207
+ outline: none;
208
+ box-shadow:
209
+ inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),
210
+ inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
211
+ }
175
212
 
176
213
  .body {
177
214
  flex: 1;
@@ -182,30 +219,30 @@ s.styles = [v, l`
182
219
  }
183
220
  `];
184
221
  a([
185
- i({ type: Boolean, reflect: !0 })
186
- ], s.prototype, "open", 2);
222
+ h({ type: Boolean, reflect: !0 })
223
+ ], i.prototype, "open", 2);
187
224
  a([
188
- i()
189
- ], s.prototype, "label", 2);
225
+ h()
226
+ ], i.prototype, "label", 2);
190
227
  a([
191
- i({ reflect: !0 })
192
- ], s.prototype, "side", 2);
228
+ h({ reflect: !0 })
229
+ ], i.prototype, "side", 2);
193
230
  a([
194
- i({ type: Array })
195
- ], s.prototype, "snapPoints", 2);
231
+ h({ type: Array })
232
+ ], i.prototype, "snapPoints", 2);
196
233
  a([
197
- i({ type: Number })
198
- ], s.prototype, "activeSnap", 2);
234
+ h({ type: Number })
235
+ ], i.prototype, "activeSnap", 2);
199
236
  a([
200
- i({ type: Boolean })
201
- ], s.prototype, "dismissible", 2);
237
+ h({ type: Boolean })
238
+ ], i.prototype, "dismissible", 2);
202
239
  a([
203
240
  f()
204
- ], s.prototype, "_dragOffset", 2);
205
- s = a([
241
+ ], i.prototype, "_dragOffset", 2);
242
+ i = a([
206
243
  u("cg-sheet")
207
- ], s);
244
+ ], i);
208
245
  export {
209
- s as CgSheet
246
+ i as CgSheet
210
247
  };
211
248
  //# sourceMappingURL=cg-sheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cg-sheet.js","sources":["../../../src/components/cg-sheet/cg-sheet.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-sheet\n * Mobile-first drawer variant with optional snap points and drag-to-dismiss.\n *\n * @slot - Default slot for sheet body content.\n *\n * @fires {CustomEvent} cg-sheet-open\n * @fires {CustomEvent} cg-sheet-close\n * @fires {CustomEvent<{index:number,value:number}>} cg-sheet-snap\n */\n@customElement('cg-sheet')\nexport class CgSheet extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: contents;\n font-family: var(--cg-font-family-primary);\n }\n .backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--cg-z-index-500);\n background: var(--cg-color-modal-overlay-background);\n backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(140%);\n -webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(140%);\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([open]) .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .panel {\n position: fixed;\n z-index: var(--cg-z-index-top);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n box-shadow: var(--cg-shadow-elevation-xl);\n transition: transform var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n :host([side=\"bottom\"]) .panel {\n left: 0;\n right: 0;\n bottom: 0;\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-top-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(100%);\n max-height: 95vh;\n }\n :host([side=\"bottom\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"top\"]) .panel {\n left: 0; right: 0; top: 0;\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(-100%);\n max-height: 95vh;\n }\n :host([side=\"top\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"right\"]) .panel {\n top: 0; bottom: 0; right: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n transform: translateX(100%);\n }\n :host([side=\"right\"][open]) .panel { transform: translateX(0); }\n\n :host([side=\"left\"]) .panel {\n top: 0; bottom: 0; left: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-right-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateX(-100%);\n }\n :host([side=\"left\"][open]) .panel { transform: translateX(0); }\n\n .handle {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) 0 var(--cg-spacing-6);\n cursor: grab;\n touch-action: none;\n }\n .handle:active { cursor: grabbing; }\n .handle-bar {\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-4);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-border);\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .handle:hover .handle-bar { background: var(--cg-color-surface-cards-border-strong); }\n\n .body {\n flex: 1;\n overflow-y: auto;\n padding: var(--cg-spacing-20) var(--cg-spacing-24) var(--cg-spacing-24);\n color: var(--cg-color-surface-container-text);\n font-size: var(--cg-font-size-sm);\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() label = 'Sheet';\n @property({ reflect: true }) side: 'bottom' | 'right' | 'left' | 'top' = 'bottom';\n @property({ type: Array }) snapPoints: number[] = [];\n @property({ type: Number }) activeSnap = 0;\n @property({ type: Boolean }) dismissible = true;\n\n @state() private _dragOffset = 0;\n\n private _focusTrap = new FocusTrap();\n private _dragStart = 0;\n private _dragging = false;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._focusTrap.deactivate();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _onOpen(): void {\n this.dispatchEvent(new CustomEvent('cg-sheet-open', { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.panel');\n if (panel) {\n const opts: { onEscape?: () => void } = {};\n if (this.dismissible) opts.onEscape = () => { this.open = false; };\n this._focusTrap.activate(panel, opts);\n }\n });\n }\n\n private _onClose(): void {\n this.dispatchEvent(new CustomEvent('cg-sheet-close', { bubbles: true, composed: true }));\n this._focusTrap.deactivate();\n this._dragOffset = 0;\n }\n\n private _handleBackdrop(): void {\n if (this.dismissible) this.open = false;\n }\n\n private _onDragStart(e: PointerEvent): void {\n if (!this.dismissible) return;\n this._dragging = true;\n this._dragStart = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n }\n\n private _onDragMove(e: PointerEvent): void {\n if (!this._dragging) return;\n const pos = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n let delta = pos - this._dragStart;\n if (this.side === 'top' || this.side === 'left') delta = -delta;\n this._dragOffset = Math.max(0, delta);\n }\n\n private _onDragEnd(): void {\n if (!this._dragging) return;\n this._dragging = false;\n if (this._dragOffset > 80 && this.dismissible) {\n this.open = false;\n } else if (this.snapPoints.length) {\n this.dispatchEvent(new CustomEvent('cg-sheet-snap', {\n bubbles: true, composed: true,\n detail: { index: this.activeSnap, value: this.snapPoints[this.activeSnap] ?? 1 },\n }));\n }\n this._dragOffset = 0;\n }\n\n override render() {\n const translateAxis = this.side === 'bottom' ? `translateY(${this._dragOffset}px)`\n : this.side === 'top' ? `translateY(${-this._dragOffset}px)`\n : this.side === 'right' ? `translateX(${this._dragOffset}px)`\n : `translateX(${-this._dragOffset}px)`;\n\n // Apply snap-point height when bottom sheet\n let panelStyle = '';\n if ((this.side === 'bottom' || this.side === 'top') && this.snapPoints.length) {\n const snap = this.snapPoints[this.activeSnap] ?? 0.95;\n panelStyle = `height: ${Math.round(snap * 100)}vh;`;\n }\n if (this._dragging || this._dragOffset) panelStyle += `transform: ${translateAxis};`;\n\n return html`\n <div class=\"backdrop\" aria-hidden=\"true\" @click=${this._handleBackdrop}></div>\n <div\n class=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=${this.label}\n aria-hidden=${this.open ? 'false' : 'true'}\n ?inert=${!this.open}\n style=${panelStyle}\n >\n ${this.side === 'bottom' || this.side === 'top' ? html`\n <div\n class=\"handle\"\n @pointerdown=${this._onDragStart}\n @pointermove=${this._onDragMove}\n @pointerup=${this._onDragEnd}\n @pointercancel=${this._onDragEnd}\n >\n <span class=\"handle-bar\"></span>\n </div>\n ` : nothing}\n <div class=\"body\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sheet': CgSheet;\n }\n}\n"],"names":["CgSheet","LitElement","FocusTrap","changed","panel","opts","e","delta","translateAxis","panelStyle","snap","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-sheet.js","sources":["../../../src/components/cg-sheet/cg-sheet.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-sheet\n * Mobile-first drawer variant with optional snap points and drag-to-dismiss.\n *\n * @slot - Default slot for sheet body content.\n *\n * @fires {CustomEvent} cg-sheet-open\n * @fires {CustomEvent} cg-sheet-close\n * @fires {CustomEvent<{index:number,value:number}>} cg-sheet-snap\n */\n@customElement('cg-sheet')\nexport class CgSheet extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: contents;\n font-family: var(--cg-font-family-primary);\n }\n .backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--cg-z-index-500);\n background: var(--cg-color-modal-overlay-background);\n backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);\n -webkit-backdrop-filter: blur(var(--cg-blur-backdrop)) saturate(150%);\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([open]) .backdrop {\n opacity: 1;\n pointer-events: auto;\n }\n\n .panel {\n position: fixed;\n z-index: var(--cg-z-index-top);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n box-shadow: var(--cg-shadow-elevation-xl);\n transition: transform var(--cg-transition-duration-slow) var(--cg-transition-easing-ease-out);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n :host([side=\"bottom\"]) .panel {\n left: 0;\n right: 0;\n bottom: 0;\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-top-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(100%);\n max-height: 95vh;\n }\n :host([side=\"bottom\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"top\"]) .panel {\n left: 0; right: 0; top: 0;\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateY(-100%);\n max-height: 95vh;\n }\n :host([side=\"top\"][open]) .panel { transform: translateY(0); }\n\n :host([side=\"right\"]) .panel {\n top: 0; bottom: 0; right: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-left-radius: var(--cg-component-sheet-radius);\n border-bottom-left-radius: var(--cg-component-sheet-radius);\n transform: translateX(100%);\n }\n :host([side=\"right\"][open]) .panel { transform: translateX(0); }\n\n :host([side=\"left\"]) .panel {\n top: 0; bottom: 0; left: 0;\n width: min(var(--cg-component-sheet-side-width), 90vw);\n border-top-right-radius: var(--cg-component-sheet-radius);\n border-bottom-right-radius: var(--cg-component-sheet-radius);\n transform: translateX(-100%);\n }\n :host([side=\"left\"][open]) .panel { transform: translateX(0); }\n\n .handle {\n display: flex;\n justify-content: center;\n padding: var(--cg-spacing-16) 0 var(--cg-spacing-6);\n cursor: grab;\n touch-action: none;\n }\n .handle:active { cursor: grabbing; }\n .handle-bar {\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-4);\n border-radius: var(--cg-border-radius-full);\n background: var(--cg-color-surface-container-divider);\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .handle:hover .handle-bar { background: var(--cg-color-surface-cards-border-strong); }\n .handle:focus-visible {\n outline: none;\n box-shadow:\n inset 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n inset 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n\n .body {\n flex: 1;\n overflow-y: auto;\n padding: var(--cg-spacing-20) var(--cg-spacing-24) var(--cg-spacing-24);\n color: var(--cg-color-surface-container-text);\n font-size: var(--cg-font-size-sm);\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() label = 'Sheet';\n @property({ reflect: true }) side: 'bottom' | 'right' | 'left' | 'top' = 'bottom';\n @property({ type: Array }) snapPoints: number[] = [];\n @property({ type: Number }) activeSnap = 0;\n @property({ type: Boolean }) dismissible = true;\n\n @state() private _dragOffset = 0;\n\n private _focusTrap = new FocusTrap();\n private _dragStart = 0;\n private _dragging = false;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // An unmount while open must not leave the page scroll-locked.\n if (this.open) document.body.style.overflow = this._previousOverflow;\n this._focusTrap.deactivate();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n // First render with open=false is not a close — no spurious event,\n // no clobbering document.body.style.overflow on mount.\n if (changed.get('open') === undefined && !this.open) return;\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _previousOverflow = '';\n\n private _onOpen(): void {\n this._previousOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n this.dispatchEvent(new CustomEvent('cg-sheet-open', { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.panel');\n if (panel) {\n const opts: { onEscape?: () => void } = {};\n if (this.dismissible) opts.onEscape = () => { this.open = false; };\n this._focusTrap.activate(panel, opts);\n }\n });\n }\n\n private _onClose(): void {\n document.body.style.overflow = this._previousOverflow;\n this.dispatchEvent(new CustomEvent('cg-sheet-close', { bubbles: true, composed: true }));\n this._focusTrap.deactivate();\n this._dragOffset = 0;\n }\n\n private _handleBackdrop(): void {\n if (this.dismissible) this.open = false;\n }\n\n private _onDragStart(e: PointerEvent): void {\n if (!this.dismissible && !this.snapPoints.length) return;\n this._dragging = true;\n this._dragStart = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n }\n\n private _onDragMove(e: PointerEvent): void {\n if (!this._dragging) return;\n const pos = this.side === 'bottom' || this.side === 'top' ? e.clientY : e.clientX;\n let delta = pos - this._dragStart;\n if (this.side === 'top' || this.side === 'left') delta = -delta;\n // With snap points the user can drag toward LARGER snaps too — keep the\n // signed delta; dismiss-only sheets still clamp to the dismiss direction.\n this._dragOffset = this.snapPoints.length ? delta : Math.max(0, delta);\n }\n\n private _onDragEnd(): void {\n if (!this._dragging) return;\n this._dragging = false;\n if (this.snapPoints.length) {\n // Land on the snap nearest to the released position.\n const viewport = this.side === 'bottom' || this.side === 'top'\n ? window.innerHeight : window.innerWidth;\n const current = (this.snapPoints[this.activeSnap] ?? 0.95) - this._dragOffset / Math.max(1, viewport);\n let nearest = 0;\n for (let i = 1; i < this.snapPoints.length; i++) {\n if (Math.abs(this.snapPoints[i]! - current) < Math.abs(this.snapPoints[nearest]! - current)) nearest = i;\n }\n if (this.dismissible && current < Math.min(...this.snapPoints) - 0.1) {\n this.open = false;\n } else if (nearest !== this.activeSnap) {\n this.activeSnap = nearest;\n this._emitSnap();\n }\n } else if (this._dragOffset > 80 && this.dismissible) {\n this.open = false;\n }\n this._dragOffset = 0;\n }\n\n private _emitSnap(): void {\n this.dispatchEvent(new CustomEvent('cg-sheet-snap', {\n bubbles: true, composed: true,\n detail: { index: this.activeSnap, value: this.snapPoints[this.activeSnap] ?? 1 },\n }));\n }\n\n /** SHEET-5: keyboard path for snap resizing (slider pattern on the handle). */\n private _onHandleKeydown(e: KeyboardEvent): void {\n if (!this.snapPoints.length) return;\n let next = this.activeSnap;\n if (e.key === 'ArrowUp' || e.key === 'ArrowRight') next = Math.min(this.snapPoints.length - 1, next + 1);\n else if (e.key === 'ArrowDown' || e.key === 'ArrowLeft') next = Math.max(0, next - 1);\n else return;\n e.preventDefault();\n if (next !== this.activeSnap) {\n this.activeSnap = next;\n this._emitSnap();\n }\n }\n\n override render() {\n const translateAxis = this.side === 'bottom' ? `translateY(${this._dragOffset}px)`\n : this.side === 'top' ? `translateY(${-this._dragOffset}px)`\n : this.side === 'right' ? `translateX(${this._dragOffset}px)`\n : `translateX(${-this._dragOffset}px)`;\n\n // Apply snap-point height when bottom sheet\n let panelStyle = '';\n if ((this.side === 'bottom' || this.side === 'top') && this.snapPoints.length) {\n const snap = this.snapPoints[this.activeSnap] ?? 0.95;\n panelStyle = `height: ${Math.round(snap * 100)}vh;`;\n }\n if (this._dragging || this._dragOffset) panelStyle += `transform: ${translateAxis};`;\n if (this._dragging) panelStyle += 'transition: none;';\n\n return html`\n <div class=\"backdrop\" aria-hidden=\"true\" @click=${this._handleBackdrop}></div>\n <div\n class=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=${this.label}\n aria-hidden=${this.open ? 'false' : 'true'}\n ?inert=${!this.open}\n style=${panelStyle}\n >\n ${this.side === 'bottom' || this.side === 'top' ? html`\n <div\n class=\"handle\"\n role=${this.snapPoints.length ? 'slider' : nothing}\n tabindex=${this.snapPoints.length ? '0' : nothing}\n aria-label=${this.snapPoints.length ? 'Resize sheet' : nothing}\n aria-valuemin=${this.snapPoints.length ? '0' : nothing}\n aria-valuemax=${this.snapPoints.length ? String(this.snapPoints.length - 1) : nothing}\n aria-valuenow=${this.snapPoints.length ? String(this.activeSnap) : nothing}\n @keydown=${this._onHandleKeydown}\n @pointerdown=${this._onDragStart}\n @pointermove=${this._onDragMove}\n @pointerup=${this._onDragEnd}\n @pointercancel=${this._onDragEnd}\n >\n <span class=\"handle-bar\"></span>\n </div>\n ` : nothing}\n <div class=\"body\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sheet': CgSheet;\n }\n}\n"],"names":["CgSheet","LitElement","FocusTrap","changed","panel","opts","e","delta","viewport","current","nearest","i","next","translateAxis","panelStyle","snap","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cg-sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAgLnB;IAEyC,SAAS,UAAS;IACjC,WAAW,UAAS;IACpB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAU;IACjB,MAAM,UAAS;IAC/C,KAAK,SAAM;IAGd,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAE7B,iBAAiB,IAAI,IAAI;IAOzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY9C,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,mBAAmB,CAGzB;IAEO,MAAM;CA6BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"cg-sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BA+OnB;IAEyC,SAAS,UAAS;IACjC,WAAW,UAAS;IACpB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAU;IACjB,MAAM,UAAS;IAC/C,KAAK,SAAM;IAGd,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAE7B,iBAAiB,IAAI,IAAI;IAOzB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY9C,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,mBAAmB,CAGzB;IAEO,MAAM;CA6BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
@@ -1,12 +1,12 @@
1
- import { css as p, LitElement as h, nothing as v, html as d } from "lit";
1
+ import { css as h, LitElement as p, nothing as u, html as d } from "lit";
2
2
  import { property as i, state as g, customElement as f } from "lit/decorators.js";
3
- import { r as u } from "../../chunks/premium.css-9I4kHrsl.js";
4
- var b = Object.defineProperty, y = Object.getOwnPropertyDescriptor, a = (t, o, n, s) => {
5
- for (var r = s > 1 ? void 0 : s ? y(o, n) : o, c = t.length - 1, l; c >= 0; c--)
6
- (l = t[c]) && (r = (s ? l(o, n, r) : l(r)) || r);
3
+ import { r as v } from "../../chunks/premium.css-DHekUEUt.js";
4
+ var b = Object.defineProperty, m = Object.getOwnPropertyDescriptor, a = (t, o, n, s) => {
5
+ for (var r = s > 1 ? void 0 : s ? m(o, n) : o, l = t.length - 1, c; l >= 0; l--)
6
+ (c = t[l]) && (r = (s ? c(o, n, r) : c(r)) || r);
7
7
  return s && r && b(o, n, r), r;
8
8
  };
9
- let e = class extends h {
9
+ let e = class extends p {
10
10
  constructor() {
11
11
  super(...arguments), this.collapsed = !1, this.collapsible = !1, this.side = "left", this.sticky = !1, this.width = "", this._headerEmpty = !1, this._footerEmpty = !1, this._onHeaderSlotChange = (t) => {
12
12
  const o = t.target;
@@ -47,7 +47,7 @@ let e = class extends h {
47
47
  <path d="M15 18l-6-6 6-6"></path>
48
48
  </svg>
49
49
  </button>
50
- ` : v}
50
+ ` : u}
51
51
  </div>
52
52
  <div class="body" id="sidebar-body">
53
53
  <slot></slot>
@@ -59,7 +59,7 @@ let e = class extends h {
59
59
  `;
60
60
  }
61
61
  };
62
- e.styles = [u, p`
62
+ e.styles = [v, h`
63
63
  :host {
64
64
  display: block;
65
65
  width: var(--cg-component-sidebar-width);
@@ -197,12 +197,47 @@ e.styles = [u, p`
197
197
  background: var(--cg-color-action-tertiary-background-hover);
198
198
  color: var(--cg-color-surface-base-text);
199
199
  }
200
+ /* Icon sizing contract: the leading icon (aria-hidden span or [data-icon])
201
+ gets a fixed square box so every row's label starts at the same x —
202
+ consumers no longer have to hand-fix alignment with inline widths. */
203
+ ::slotted(a) > [aria-hidden="true"],
204
+ ::slotted(button) > [aria-hidden="true"],
205
+ ::slotted(a) > [data-icon],
206
+ ::slotted(button) > [data-icon] {
207
+ display: inline-flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ width: var(--cg-icon-size-100);
211
+ flex-shrink: 0;
212
+ text-align: center;
213
+ }
200
214
  ::slotted(a[aria-current]),
201
215
  ::slotted(button[aria-current]),
202
216
  ::slotted(a.active),
203
217
  ::slotted(button.active) {
204
218
  background: var(--cg-color-surface-cards-active-background);
205
- color: var(--cg-color-surface-base-text);
219
+ /* Accent the active item with the brand: a crisp left bar + accent
220
+ text. The bar is a square-cornered left border (the rounding is
221
+ removed on the left edge so it reads as a clean vertical rule, the
222
+ Linear/Notion convention) — not an inset shadow, which would curve
223
+ along the corner radius. This is the "where am I?" signal the bare
224
+ fill was missing, and the one place the brand should surface in chrome. */
225
+ color: var(--cg-color-accent-text);
226
+ border-left: var(--cg-spacing-2) solid var(--cg-color-action-primary-border-default);
227
+ border-top-left-radius: 0;
228
+ border-bottom-left-radius: 0;
229
+ /* Compensate the left border so the icon doesn't shift vs. inactive rows. */
230
+ padding-left: calc(var(--cg-spacing-12) - var(--cg-spacing-2));
231
+ }
232
+ /* Collapsed rail: a left bar would clip on a centered icon button, so
233
+ signal active with an accent ring instead. */
234
+ :host([collapsed]) ::slotted(a[aria-current]),
235
+ :host([collapsed]) ::slotted(button[aria-current]),
236
+ :host([collapsed]) ::slotted(a.active),
237
+ :host([collapsed]) ::slotted(button.active) {
238
+ border-left: none;
239
+ padding: 0;
240
+ box-shadow: inset 0 0 0 var(--cg-border-width-100) var(--cg-color-action-primary-border-default);
206
241
  }
207
242
  ::slotted(a:focus-visible),
208
243
  ::slotted(button:focus-visible) {
@@ -210,31 +245,59 @@ e.styles = [u, p`
210
245
  outline-offset: calc(-1 * var(--cg-border-width-100));
211
246
  }
212
247
 
213
- /* ── Section labels ── */
248
+ /* ── Section labels ──
249
+ Scaffolding, not content — kept quiet (medium weight, muted color) so
250
+ they group the nav without competing with the items for attention. */
214
251
  ::slotted(.section-title),
215
252
  ::slotted([data-section-title]) {
216
253
  display: block;
217
254
  padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);
218
255
  font-size: var(--cg-font-size-xs);
219
- font-weight: var(--cg-font-weight-semibold);
220
- color: var(--cg-color-surface-container-outlined);
256
+ font-weight: var(--cg-font-weight-medium);
257
+ color: var(--cg-color-input-text-placeholder);
221
258
  text-transform: uppercase;
222
259
  letter-spacing: var(--cg-letter-spacing-wide);
223
260
  }
261
+ /* The first section title shouldn't add a big gap under the header. */
262
+ ::slotted(.section-title:first-child),
263
+ ::slotted([data-section-title]:first-child) {
264
+ padding-top: var(--cg-spacing-4);
265
+ }
224
266
 
225
- /* ── Collapsed: hide labels & section titles, center icons ── */
267
+ /* ── Collapsed: collapse to an icon-only rail ──
268
+ Robust by default: we do NOT depend on the consumer wrapping every
269
+ label in <span data-label>. In collapsed mode the slotted item is
270
+ clipped to icon width and its text is zeroed out, so plain
271
+ <a href>Dashboard</a> markup collapses cleanly instead of bleeding
272
+ half-clipped text into the rail. The icon (first child, or an explicit
273
+ [data-icon] / aria-hidden span) is restored to a fixed size. */
274
+ :host([collapsed]) ::slotted(a),
275
+ :host([collapsed]) ::slotted(button) {
276
+ justify-content: center;
277
+ width: var(--cg-spacing-40);
278
+ height: var(--cg-spacing-40);
279
+ margin: 0 auto;
280
+ padding: 0;
281
+ gap: 0;
282
+ overflow: hidden;
283
+ white-space: nowrap;
284
+ font-size: 0; /* zero out bare text nodes / unwrapped labels */
285
+ }
286
+ /* Restore the icon glyph at a real size, centered in the rail. */
287
+ :host([collapsed]) ::slotted(a) > [aria-hidden="true"],
288
+ :host([collapsed]) ::slotted(button) > [aria-hidden="true"],
289
+ :host([collapsed]) ::slotted(a) > [data-icon],
290
+ :host([collapsed]) ::slotted(button) > [data-icon] {
291
+ font-size: var(--cg-font-size-md);
292
+ width: auto;
293
+ }
294
+ /* Explicit labels and section titles are still hidden outright. */
226
295
  :host([collapsed]) ::slotted([data-label]),
227
296
  :host([collapsed]) ::slotted(.label),
228
297
  :host([collapsed]) ::slotted(.section-title),
229
298
  :host([collapsed]) ::slotted([data-section-title]) {
230
299
  display: none;
231
300
  }
232
- :host([collapsed]) ::slotted(a),
233
- :host([collapsed]) ::slotted(button) {
234
- justify-content: center;
235
- padding: var(--cg-spacing-8);
236
- gap: 0;
237
- }
238
301
  `];
239
302
  a([
240
303
  i({ type: Boolean, reflect: !0 })
@@ -1 +1 @@
1
- {"version":3,"file":"cg-sidebar.js","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-sidebar\n * Modern collapsible side navigation panel. Two states (expanded ↔ icon-only),\n * smooth 200ms width transition, full-row hit targets on slotted `<a>` / `<button>`\n * items, `aria-current` active state, and section headers via `.section-title`.\n *\n * Modeled after the 2024–2025 consensus from shadcn/ui, Linear, Notion, and Cursor:\n * 8px grid, full-row click targets, no hover-peek, native `title` for collapsed\n * tooltips.\n *\n * @example\n * ```html\n * <cg-sidebar collapsible>\n * <div slot=\"header\">Logo</div>\n *\n * <div class=\"section-title\">Workspace</div>\n * <a href=\"/dashboard\" aria-current=\"page\" title=\"Dashboard\">\n * <span aria-hidden=\"true\">◐</span><span data-label>Dashboard</span>\n * </a>\n * <a href=\"/settings\" title=\"Settings\">\n * <span aria-hidden=\"true\">⚙</span><span data-label>Settings</span>\n * </a>\n *\n * <div slot=\"footer\">User</div>\n * </cg-sidebar>\n * ```\n *\n * @slot header - Branding/header area (auto-hides when empty)\n * @slot - Navigation content (`<a>` / `<button>` get modern default styling)\n * @slot footer - Footer area (auto-hides when empty)\n *\n * @fires {CustomEvent<{collapsed: boolean}>} cg-sidebar-toggle\n */\n@customElement('cg-sidebar')\nexport class CgSidebar extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: block;\n width: var(--cg-component-sidebar-width);\n height: 100%;\n font-family: var(--cg-font-family-primary);\n flex-shrink: 0;\n transition: width var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) {\n width: var(--cg-component-sidebar-collapsed-width);\n }\n :host([sticky]) {\n position: sticky;\n top: 0;\n max-height: 100vh;\n }\n\n /* ── Panel ── */\n .nav {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-container-text);\n border-right: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([side=\"right\"]) .nav {\n border-right: none;\n border-left: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n\n /* ── Header ── */\n .header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--cg-spacing-8);\n min-height: var(--cg-spacing-56);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .header {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n justify-content: center;\n }\n :host([data-header-empty]) .header { display: none; }\n\n /* ── Body ── */\n .body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--cg-spacing-8);\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-2);\n }\n :host([collapsed]) .body {\n padding: var(--cg-spacing-8) var(--cg-spacing-6);\n }\n\n /* ── Footer ── */\n .footer {\n flex-shrink: 0;\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .footer {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n }\n :host([data-footer-empty]) .footer { display: none; }\n\n /* ── Toggle button ── */\n .toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n padding: 0;\n border: none;\n border-radius: var(--cg-border-radius-100);\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .toggle:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n .toggle:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-border-width-50);\n }\n .toggle svg {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) .toggle svg {\n transform: rotate(180deg);\n }\n\n /* ── Modern nav-item defaults — applies to slotted <a> and <button> ── */\n ::slotted(a),\n ::slotted(button) {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n width: 100%;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border: none;\n border-radius: var(--cg-border-radius-100);\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n font-family: inherit;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n line-height: var(--cg-line-height-snug);\n text-decoration: none;\n text-align: left;\n cursor: pointer;\n box-sizing: border-box;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n ::slotted(a:hover),\n ::slotted(button:hover) {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n ::slotted(a[aria-current]),\n ::slotted(button[aria-current]),\n ::slotted(a.active),\n ::slotted(button.active) {\n background: var(--cg-color-surface-cards-active-background);\n color: var(--cg-color-surface-base-text);\n }\n ::slotted(a:focus-visible),\n ::slotted(button:focus-visible) {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: calc(-1 * var(--cg-border-width-100));\n }\n\n /* ── Section labels ── */\n ::slotted(.section-title),\n ::slotted([data-section-title]) {\n display: block;\n padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-semibold);\n color: var(--cg-color-surface-container-outlined);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n\n /* ── Collapsed: hide labels & section titles, center icons ── */\n :host([collapsed]) ::slotted([data-label]),\n :host([collapsed]) ::slotted(.label),\n :host([collapsed]) ::slotted(.section-title),\n :host([collapsed]) ::slotted([data-section-title]) {\n display: none;\n }\n :host([collapsed]) ::slotted(a),\n :host([collapsed]) ::slotted(button) {\n justify-content: center;\n padding: var(--cg-spacing-8);\n gap: 0;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) collapsed = false;\n @property({ type: Boolean }) collapsible = false;\n @property({ reflect: true }) side: 'left' | 'right' = 'left';\n @property({ type: Boolean, reflect: true }) sticky = false;\n @property() width = '';\n\n // Default to *visible* — slotchange flips to hidden if empty (avoids first-paint flicker).\n @state() private _headerEmpty = false;\n @state() private _footerEmpty = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('width') && this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n if (changed.has('_headerEmpty')) {\n this.toggleAttribute('data-header-empty', this._headerEmpty);\n }\n if (changed.has('_footerEmpty')) {\n this.toggleAttribute('data-footer-empty', this._footerEmpty);\n }\n }\n\n private _toggle() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent('cg-sidebar-toggle', {\n detail: { collapsed: this.collapsed },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _onHeaderSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n // Header is \"empty\" only when slot has no content AND there's no toggle button.\n this._headerEmpty = slot.assignedNodes({ flatten: true }).length === 0 && !this.collapsible;\n };\n\n private _onFooterSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n this._footerEmpty = slot.assignedNodes({ flatten: true }).length === 0;\n };\n\n override render() {\n return html`\n <nav class=\"nav\" role=\"navigation\" aria-label=\"Primary navigation\">\n <div class=\"header\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n ${this.collapsible ? html`\n <button\n class=\"toggle\"\n type=\"button\"\n aria-label=${this.collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded=${this.collapsed ? 'false' : 'true'}\n aria-controls=\"sidebar-body\"\n @click=${this._toggle}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M15 18l-6-6 6-6\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n <div class=\"body\" id=\"sidebar-body\">\n <slot></slot>\n </div>\n <div class=\"footer\">\n <slot name=\"footer\" @slotchange=${this._onFooterSlotChange}></slot>\n </div>\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sidebar': CgSidebar;\n }\n}\n"],"names":["CgSidebar","LitElement","e","slot","changed","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"cg-sidebar.js","sources":["../../../src/components/cg-sidebar/cg-sidebar.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-sidebar\n * Modern collapsible side navigation panel. Two states (expanded ↔ icon-only),\n * smooth 200ms width transition, full-row hit targets on slotted `<a>` / `<button>`\n * items, `aria-current` active state, and section headers via `.section-title`.\n *\n * Modeled after the 2024–2025 consensus from shadcn/ui, Linear, Notion, and Cursor:\n * 8px grid, full-row click targets, no hover-peek, native `title` for collapsed\n * tooltips.\n *\n * @example\n * ```html\n * <cg-sidebar collapsible>\n * <div slot=\"header\">Logo</div>\n *\n * <div class=\"section-title\">Workspace</div>\n * <a href=\"/dashboard\" aria-current=\"page\" title=\"Dashboard\">\n * <span aria-hidden=\"true\">◐</span><span data-label>Dashboard</span>\n * </a>\n * <a href=\"/settings\" title=\"Settings\">\n * <span aria-hidden=\"true\">⚙</span><span data-label>Settings</span>\n * </a>\n *\n * <div slot=\"footer\">User</div>\n * </cg-sidebar>\n * ```\n *\n * @slot header - Branding/header area (auto-hides when empty)\n * @slot - Navigation content (`<a>` / `<button>` get modern default styling)\n * @slot footer - Footer area (auto-hides when empty)\n *\n * @fires {CustomEvent<{collapsed: boolean}>} cg-sidebar-toggle\n */\n@customElement('cg-sidebar')\nexport class CgSidebar extends LitElement {\n static override styles = [reducedMotion, css`\n :host {\n display: block;\n width: var(--cg-component-sidebar-width);\n height: 100%;\n font-family: var(--cg-font-family-primary);\n flex-shrink: 0;\n transition: width var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) {\n width: var(--cg-component-sidebar-collapsed-width);\n }\n :host([sticky]) {\n position: sticky;\n top: 0;\n max-height: 100vh;\n }\n\n /* ── Panel ── */\n .nav {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--cg-color-surface-container-background);\n color: var(--cg-color-surface-container-text);\n border-right: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([side=\"right\"]) .nav {\n border-right: none;\n border-left: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n\n /* ── Header ── */\n .header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--cg-spacing-8);\n min-height: var(--cg-spacing-56);\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .header {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n justify-content: center;\n }\n :host([data-header-empty]) .header { display: none; }\n\n /* ── Body ── */\n .body {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--cg-spacing-8);\n display: flex;\n flex-direction: column;\n gap: var(--cg-spacing-2);\n }\n :host([collapsed]) .body {\n padding: var(--cg-spacing-8) var(--cg-spacing-6);\n }\n\n /* ── Footer ── */\n .footer {\n flex-shrink: 0;\n padding: var(--cg-spacing-12) var(--cg-spacing-16);\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([collapsed]) .footer {\n padding: var(--cg-spacing-12) var(--cg-spacing-8);\n }\n :host([data-footer-empty]) .footer { display: none; }\n\n /* ── Toggle button ── */\n .toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-spacing-32);\n height: var(--cg-spacing-32);\n padding: 0;\n border: none;\n border-radius: var(--cg-border-radius-100);\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n .toggle:hover {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n .toggle:focus-visible {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: var(--cg-border-width-50);\n }\n .toggle svg {\n width: var(--cg-icon-size-100);\n height: var(--cg-icon-size-100);\n transition: transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n :host([collapsed]) .toggle svg {\n transform: rotate(180deg);\n }\n\n /* ── Modern nav-item defaults — applies to slotted <a> and <button> ── */\n ::slotted(a),\n ::slotted(button) {\n display: flex;\n align-items: center;\n gap: var(--cg-spacing-12);\n width: 100%;\n padding: var(--cg-spacing-8) var(--cg-spacing-12);\n border: none;\n border-radius: var(--cg-border-radius-100);\n background: transparent;\n color: var(--cg-color-surface-container-outlined);\n font-family: inherit;\n font-size: var(--cg-font-size-sm);\n font-weight: var(--cg-font-weight-medium);\n line-height: var(--cg-line-height-snug);\n text-decoration: none;\n text-align: left;\n cursor: pointer;\n box-sizing: border-box;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n ::slotted(a:hover),\n ::slotted(button:hover) {\n background: var(--cg-color-action-tertiary-background-hover);\n color: var(--cg-color-surface-base-text);\n }\n /* Icon sizing contract: the leading icon (aria-hidden span or [data-icon])\n gets a fixed square box so every row's label starts at the same x —\n consumers no longer have to hand-fix alignment with inline widths. */\n ::slotted(a) > [aria-hidden=\"true\"],\n ::slotted(button) > [aria-hidden=\"true\"],\n ::slotted(a) > [data-icon],\n ::slotted(button) > [data-icon] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--cg-icon-size-100);\n flex-shrink: 0;\n text-align: center;\n }\n ::slotted(a[aria-current]),\n ::slotted(button[aria-current]),\n ::slotted(a.active),\n ::slotted(button.active) {\n background: var(--cg-color-surface-cards-active-background);\n /* Accent the active item with the brand: a crisp left bar + accent\n text. The bar is a square-cornered left border (the rounding is\n removed on the left edge so it reads as a clean vertical rule, the\n Linear/Notion convention) — not an inset shadow, which would curve\n along the corner radius. This is the \"where am I?\" signal the bare\n fill was missing, and the one place the brand should surface in chrome. */\n color: var(--cg-color-accent-text);\n border-left: var(--cg-spacing-2) solid var(--cg-color-action-primary-border-default);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n /* Compensate the left border so the icon doesn't shift vs. inactive rows. */\n padding-left: calc(var(--cg-spacing-12) - var(--cg-spacing-2));\n }\n /* Collapsed rail: a left bar would clip on a centered icon button, so\n signal active with an accent ring instead. */\n :host([collapsed]) ::slotted(a[aria-current]),\n :host([collapsed]) ::slotted(button[aria-current]),\n :host([collapsed]) ::slotted(a.active),\n :host([collapsed]) ::slotted(button.active) {\n border-left: none;\n padding: 0;\n box-shadow: inset 0 0 0 var(--cg-border-width-100) var(--cg-color-action-primary-border-default);\n }\n ::slotted(a:focus-visible),\n ::slotted(button:focus-visible) {\n outline: var(--cg-border-width-100) solid var(--cg-color-focus-ring);\n outline-offset: calc(-1 * var(--cg-border-width-100));\n }\n\n /* ── Section labels ──\n Scaffolding, not content — kept quiet (medium weight, muted color) so\n they group the nav without competing with the items for attention. */\n ::slotted(.section-title),\n ::slotted([data-section-title]) {\n display: block;\n padding: var(--cg-spacing-12) var(--cg-spacing-12) var(--cg-spacing-4);\n font-size: var(--cg-font-size-xs);\n font-weight: var(--cg-font-weight-medium);\n color: var(--cg-color-input-text-placeholder);\n text-transform: uppercase;\n letter-spacing: var(--cg-letter-spacing-wide);\n }\n /* The first section title shouldn't add a big gap under the header. */\n ::slotted(.section-title:first-child),\n ::slotted([data-section-title]:first-child) {\n padding-top: var(--cg-spacing-4);\n }\n\n /* ── Collapsed: collapse to an icon-only rail ──\n Robust by default: we do NOT depend on the consumer wrapping every\n label in <span data-label>. In collapsed mode the slotted item is\n clipped to icon width and its text is zeroed out, so plain\n <a href>Dashboard</a> markup collapses cleanly instead of bleeding\n half-clipped text into the rail. The icon (first child, or an explicit\n [data-icon] / aria-hidden span) is restored to a fixed size. */\n :host([collapsed]) ::slotted(a),\n :host([collapsed]) ::slotted(button) {\n justify-content: center;\n width: var(--cg-spacing-40);\n height: var(--cg-spacing-40);\n margin: 0 auto;\n padding: 0;\n gap: 0;\n overflow: hidden;\n white-space: nowrap;\n font-size: 0; /* zero out bare text nodes / unwrapped labels */\n }\n /* Restore the icon glyph at a real size, centered in the rail. */\n :host([collapsed]) ::slotted(a) > [aria-hidden=\"true\"],\n :host([collapsed]) ::slotted(button) > [aria-hidden=\"true\"],\n :host([collapsed]) ::slotted(a) > [data-icon],\n :host([collapsed]) ::slotted(button) > [data-icon] {\n font-size: var(--cg-font-size-md);\n width: auto;\n }\n /* Explicit labels and section titles are still hidden outright. */\n :host([collapsed]) ::slotted([data-label]),\n :host([collapsed]) ::slotted(.label),\n :host([collapsed]) ::slotted(.section-title),\n :host([collapsed]) ::slotted([data-section-title]) {\n display: none;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) collapsed = false;\n @property({ type: Boolean }) collapsible = false;\n @property({ reflect: true }) side: 'left' | 'right' = 'left';\n @property({ type: Boolean, reflect: true }) sticky = false;\n @property() width = '';\n\n // Default to *visible* — slotchange flips to hidden if empty (avoids first-paint flicker).\n @state() private _headerEmpty = false;\n @state() private _footerEmpty = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('width') && this.width) {\n this.style.setProperty('--cg-component-sidebar-width', this.width);\n }\n if (changed.has('_headerEmpty')) {\n this.toggleAttribute('data-header-empty', this._headerEmpty);\n }\n if (changed.has('_footerEmpty')) {\n this.toggleAttribute('data-footer-empty', this._footerEmpty);\n }\n }\n\n private _toggle() {\n this.collapsed = !this.collapsed;\n this.dispatchEvent(new CustomEvent('cg-sidebar-toggle', {\n detail: { collapsed: this.collapsed },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _onHeaderSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n // Header is \"empty\" only when slot has no content AND there's no toggle button.\n this._headerEmpty = slot.assignedNodes({ flatten: true }).length === 0 && !this.collapsible;\n };\n\n private _onFooterSlotChange = (e: Event) => {\n const slot = e.target as HTMLSlotElement;\n this._footerEmpty = slot.assignedNodes({ flatten: true }).length === 0;\n };\n\n override render() {\n return html`\n <nav class=\"nav\" role=\"navigation\" aria-label=\"Primary navigation\">\n <div class=\"header\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n ${this.collapsible ? html`\n <button\n class=\"toggle\"\n type=\"button\"\n aria-label=${this.collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded=${this.collapsed ? 'false' : 'true'}\n aria-controls=\"sidebar-body\"\n @click=${this._toggle}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M15 18l-6-6 6-6\"></path>\n </svg>\n </button>\n ` : nothing}\n </div>\n <div class=\"body\" id=\"sidebar-body\">\n <slot></slot>\n </div>\n <div class=\"footer\">\n <slot name=\"footer\" @slotchange=${this._onFooterSlotChange}></slot>\n </div>\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-sidebar': CgSidebar;\n }\n}\n"],"names":["CgSidebar","LitElement","e","slot","changed","html","nothing","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { LitElement } from 'lit';
7
7
  * <cg-skeleton variant="rectangular" width="100%" height="80px"></cg-skeleton>
8
8
  * <cg-skeleton variant="circular" width="40px" height="40px"></cg-skeleton>
9
9
  * <cg-skeleton variant="text" lines="3"></cg-skeleton>
10
+ * <cg-skeleton no-animation></cg-skeleton>
10
11
  * ```
11
12
  *
12
13
  * @cssprop --cg-color-loading-spinner-secondary - Skeleton background color
@@ -18,7 +19,12 @@ export declare class CgSkeleton extends LitElement {
18
19
  width: string;
19
20
  height: string;
20
21
  lines: number;
21
- animated: boolean;
22
+ noAnimation: boolean;
23
+ /** @deprecated Use `noAnimation` / `no-animation`. Kept as a JS-property
24
+ * alias so adapter wrappers and existing consumers don't break — the old
25
+ * `animated="false"` attribute path never worked (Lit Boolean semantics). */
26
+ get animated(): boolean;
27
+ set animated(v: boolean);
22
28
  rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';
23
29
  private _getDefaultHeight;
24
30
  render(): import('lit').TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"cg-skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/cg-skeleton/cg-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;GAYG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BA2DnB;IAEwC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAAiB;IAC5E,KAAK,SAAU;IACf,MAAM,SAAM;IACZ,KAAK,SAAK;IACM,QAAQ,UAAQ;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IAElF,OAAO,CAAC,iBAAiB;IAUhB,MAAM;CA2BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"cg-skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/cg-skeleton/cg-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;;;;;;;GAaG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BA+CnB;IAEwC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAAiB;IAC5E,KAAK,SAAU;IACf,MAAM,SAAM;IACZ,KAAK,SAAK;IACiC,WAAW,UAAS;IAE3F;;kFAE8E;IAC9E,IAAI,QAAQ,IAAI,OAAO,CAA8B;IACrD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAA4B;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAQ;IAElF,OAAO,CAAC,iBAAiB;IAShB,MAAM;CAqChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}