@aceshooting/lyra-ui 9.1.1 → 11.0.0

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 (585) hide show
  1. package/CHANGELOG.md +785 -0
  2. package/custom-elements.json +1 -1
  3. package/design-tokens.json +13 -0
  4. package/dist/cli/migrate-wa.mjs +216 -1
  5. package/dist/cli/migration-contract.json +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
  8. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  9. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
  10. package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
  11. package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
  12. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
  13. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
  14. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
  15. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
  16. package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
  17. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
  18. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
  19. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
  20. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
  21. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
  22. package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
  23. package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
  24. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
  25. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
  26. package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
  27. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  28. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
  29. package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
  30. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
  31. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  32. package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
  33. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  34. package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
  35. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
  36. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
  37. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
  38. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
  39. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
  40. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
  41. package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
  42. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
  43. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
  44. package/dist/components/charts/chart/box-plot.class.d.ts +27 -0
  45. package/dist/components/charts/chart/box-plot.class.js +14 -4
  46. package/dist/components/charts/chart/box-plot.styles.js +28 -20
  47. package/dist/components/charts/chart/chart-colors.d.ts +1 -1
  48. package/dist/components/charts/chart/chart-colors.js +1 -1
  49. package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
  50. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  51. package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
  52. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  53. package/dist/components/charts/chart/chart.class.d.ts +120 -0
  54. package/dist/components/charts/chart/chart.class.js +16 -6
  55. package/dist/components/charts/chart/chart.styles.js +28 -27
  56. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
  57. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  58. package/dist/components/charts/chart/lite-chart.styles.js +0 -27
  59. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
  60. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
  61. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
  62. package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
  63. package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
  64. package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
  65. package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
  66. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  67. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
  68. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  69. package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
  70. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
  71. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  72. package/dist/components/conversation/code-block/code-block.styles.js +4 -95
  73. package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
  74. package/dist/components/conversation/code-block/code-loader.js +1 -1
  75. package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
  76. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  77. package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
  78. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  79. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
  80. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  81. package/dist/components/conversation/markdown/markdown.styles.js +0 -41
  82. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
  83. package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
  84. package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
  85. package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
  86. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  87. package/dist/components/conversation/model-select/model-select.styles.js +12 -47
  88. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
  89. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
  90. package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
  91. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
  92. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
  93. package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
  94. package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
  95. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
  96. package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
  97. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
  98. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  99. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
  100. package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
  101. package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
  102. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  103. package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
  104. package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
  105. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  106. package/dist/components/data/calendar/calendar.class.d.ts +15 -2
  107. package/dist/components/data/calendar/calendar.class.js +2 -2
  108. package/dist/components/data/calendar/calendar.styles.js +2 -28
  109. package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
  110. package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
  111. package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
  112. package/dist/components/data/context-meter/context-meter.styles.js +0 -24
  113. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  114. package/dist/components/data/data-grid/data-grid.styles.js +0 -22
  115. package/dist/components/data/document-library/document-library.class.js +2 -2
  116. package/dist/components/data/document-library/document-library.styles.js +0 -4
  117. package/dist/components/data/env-list/env-list.class.js +1 -1
  118. package/dist/components/data/env-list/env-list.styles.js +7 -4
  119. package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
  120. package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
  121. package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
  122. package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
  123. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  124. package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
  125. package/dist/components/data/flow-node/flow-node.styles.js +0 -23
  126. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  127. package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
  128. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
  129. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  130. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
  131. package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
  132. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  133. package/dist/components/data/heatmap/heatmap.class.d.ts +117 -1
  134. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  135. package/dist/components/data/heatmap/heatmap.styles.js +0 -54
  136. package/dist/components/data/pagination/pagination.styles.js +23 -46
  137. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
  138. package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
  139. package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
  140. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  141. package/dist/components/data/stat/stat.styles.js +0 -67
  142. package/dist/components/data/table/table.class.d.ts +42 -3
  143. package/dist/components/data/table/table.class.js +4 -4
  144. package/dist/components/data/table/table.styles.js +20 -91
  145. package/dist/components/data/timeline/timeline-item.styles.js +0 -30
  146. package/dist/components/data/timeline/timeline.class.d.ts +89 -1
  147. package/dist/components/data/timeline/timeline.class.js +2 -2
  148. package/dist/components/data/timeline/timeline.styles.js +111 -31
  149. package/dist/components/data/tree/tree-item.styles.js +1 -28
  150. package/dist/components/data/tree/tree.class.js +2 -2
  151. package/dist/components/data/tree/tree.styles.js +0 -6
  152. package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
  153. package/dist/components/forms/button/button.class.js +1 -1
  154. package/dist/components/forms/button/button.styles.js +0 -105
  155. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  156. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  157. package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
  158. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
  159. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  160. package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
  161. package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
  162. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  163. package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
  164. package/dist/components/forms/combobox/combobox.class.d.ts +71 -3
  165. package/dist/components/forms/combobox/combobox.class.js +5 -3
  166. package/dist/components/forms/combobox/combobox.styles.js +31 -111
  167. package/dist/components/forms/combobox/option.styles.js +7 -1
  168. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  169. package/dist/components/forms/date-picker/date-input.styles.js +12 -67
  170. package/dist/components/forms/date-picker/date-picker.class.d.ts +47 -0
  171. package/dist/components/forms/date-picker/date-picker.class.js +36 -22
  172. package/dist/components/forms/date-picker/date-picker.styles.js +82 -29
  173. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
  174. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  175. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
  176. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  177. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
  178. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  179. package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
  180. package/dist/components/forms/input/input.styles.js +0 -54
  181. package/dist/components/forms/input/number-input.styles.d.ts +4 -5
  182. package/dist/components/forms/input/number-input.styles.js +0 -11
  183. package/dist/components/forms/input/time-input-shared.d.ts +11 -0
  184. package/dist/components/forms/input/time-input-shared.js +1 -1
  185. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  186. package/dist/components/forms/input/time-input.class.js +1 -1
  187. package/dist/components/forms/input/time-input.styles.js +0 -6
  188. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  189. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
  190. package/dist/components/forms/otp-input/otp-input.class.js +3 -3
  191. package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
  192. package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
  193. package/dist/components/forms/phone-input/phone-input.class.js +2 -2
  194. package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
  195. package/dist/components/forms/radio/radio-button.styles.js +1 -30
  196. package/dist/components/forms/radio/radio-group.styles.js +0 -4
  197. package/dist/components/forms/radio/radio.styles.js +0 -44
  198. package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
  199. package/dist/components/forms/select/select.class.js +1 -1
  200. package/dist/components/forms/select/select.styles.js +14 -114
  201. package/dist/components/forms/slider/slider.styles.js +0 -55
  202. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
  203. package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
  204. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
  205. package/dist/components/forms/switch/switch.class.d.ts +3 -0
  206. package/dist/components/forms/switch/switch.class.js +1 -1
  207. package/dist/components/forms/switch/switch.styles.js +0 -37
  208. package/dist/components/forms/textarea/textarea.styles.js +0 -28
  209. package/dist/components/forms/time-range/time-range.styles.js +12 -84
  210. package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
  211. package/dist/components/forms/token-input/token-input.class.js +1 -1
  212. package/dist/components/forms/token-input/token-input.styles.js +1 -54
  213. package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
  214. package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
  215. package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
  216. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  217. package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
  218. package/dist/components/layout/button-group/button-group.styles.js +0 -6
  219. package/dist/components/layout/card/card.class.d.ts +12 -0
  220. package/dist/components/layout/card/card.styles.js +3 -11
  221. package/dist/components/layout/carousel/carousel.styles.js +0 -1
  222. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
  223. package/dist/components/layout/command-palette/command-palette.class.js +3 -1
  224. package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
  225. package/dist/components/layout/control-group/control-group.styles.js +0 -7
  226. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
  227. package/dist/components/layout/details/accordion.class.d.ts +13 -0
  228. package/dist/components/layout/details/accordion.class.js +1 -1
  229. package/dist/components/layout/details/details.class.js +1 -1
  230. package/dist/components/layout/details/details.styles.js +0 -12
  231. package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
  232. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
  233. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  234. package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
  235. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  236. package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
  237. package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
  238. package/dist/components/layout/menu/menu-item.class.js +1 -1
  239. package/dist/components/layout/menu/menu-item.styles.js +0 -49
  240. package/dist/components/layout/menu/menu-label.styles.js +0 -2
  241. package/dist/components/layout/menu/menu.styles.js +0 -18
  242. package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
  243. package/dist/components/layout/page/page.class.d.ts +4 -0
  244. package/dist/components/layout/page/page.class.js +1 -1
  245. package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
  246. package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
  247. package/dist/components/layout/scroller/scroller.styles.js +0 -20
  248. package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
  249. package/dist/components/layout/segmented/segmented.class.js +1 -1
  250. package/dist/components/layout/segmented/segmented.styles.js +69 -37
  251. package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
  252. package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
  253. package/dist/components/layout/stepper/stepper.class.js +1 -1
  254. package/dist/components/layout/stepper/stepper.styles.js +140 -41
  255. package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
  256. package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
  257. package/dist/components/layout/tab-group/tab.styles.js +0 -2
  258. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
  259. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  260. package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
  261. package/dist/components/layout/widget/widget.class.d.ts +5 -1
  262. package/dist/components/layout/widget/widget.class.js +1 -1
  263. package/dist/components/layout/widget/widget.styles.js +97 -40
  264. package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
  265. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  266. package/dist/components/media/animated-image/animated-image.styles.js +0 -28
  267. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
  268. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  269. package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
  270. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
  271. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
  272. package/dist/components/media/av-player/av-player.class.d.ts +5 -6
  273. package/dist/components/media/av-player/av-player.class.js +1 -1
  274. package/dist/components/media/av-player/av-player.styles.js +0 -45
  275. package/dist/components/media/avatar/avatar.styles.js +3 -16
  276. package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
  277. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  278. package/dist/components/media/file-input/file-input.class.d.ts +12 -0
  279. package/dist/components/media/file-input/file-input.styles.js +3 -24
  280. package/dist/components/media/flag/flag.class.d.ts +23 -1
  281. package/dist/components/media/flag/flag.class.js +4 -2
  282. package/dist/components/media/flag/flag.styles.js +7 -1
  283. package/dist/components/media/flag/language-map.d.ts +10 -0
  284. package/dist/components/media/flag/language-map.js +1 -1
  285. package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
  286. package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
  287. package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
  288. package/dist/components/media/lightbox/lightbox.class.js +0 -2
  289. package/dist/components/media/lightbox/lightbox.styles.js +0 -21
  290. package/dist/components/media/map/map-loader.d.ts +19 -1
  291. package/dist/components/media/map/map-loader.js +1 -1
  292. package/dist/components/media/map/map.class.d.ts +178 -1
  293. package/dist/components/media/map/map.class.js +15 -3
  294. package/dist/components/media/map/map.styles.js +20 -17
  295. package/dist/components/media/media-card/media-card.class.d.ts +14 -3
  296. package/dist/components/media/media-card/media-card.class.js +1 -1
  297. package/dist/components/media/media-card/media-card.styles.js +2 -28
  298. package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
  299. package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
  300. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  301. package/dist/components/media/qr-code/qr-code.styles.js +0 -3
  302. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
  303. package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
  304. package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
  305. package/dist/components/media/video/video.class.d.ts +23 -2
  306. package/dist/components/media/video/video.class.js +3 -3
  307. package/dist/components/media/video/video.styles.js +4 -2
  308. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  309. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  310. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
  311. package/dist/components/overlays/alert/alert.styles.js +4 -2
  312. package/dist/components/overlays/badge/badge.styles.js +4 -48
  313. package/dist/components/overlays/badge/tag.styles.js +0 -14
  314. package/dist/components/overlays/callout/callout.styles.js +0 -11
  315. package/dist/components/overlays/chip/chip-group.styles.js +0 -18
  316. package/dist/components/overlays/chip/chip.styles.js +6 -69
  317. package/dist/components/overlays/dialog/confirm.d.ts +1 -4
  318. package/dist/components/overlays/dialog/confirm.js +1 -1
  319. package/dist/components/overlays/dialog/dialog.class.d.ts +32 -9
  320. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  321. package/dist/components/overlays/dialog/dialog.styles.js +0 -43
  322. package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
  323. package/dist/components/overlays/drawer/drawer.styles.js +0 -9
  324. package/dist/components/overlays/empty/empty.styles.js +0 -12
  325. package/dist/components/overlays/kbd/kbd.styles.js +0 -8
  326. package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
  327. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  328. package/dist/components/overlays/overlay/overlay.styles.js +0 -28
  329. package/dist/components/overlays/overlay/popover.class.d.ts +28 -4
  330. package/dist/components/overlays/overlay/popover.class.js +2 -2
  331. package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
  332. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  333. package/dist/components/overlays/popup/popup.class.d.ts +1 -0
  334. package/dist/components/overlays/popup/popup.class.js +1 -1
  335. package/dist/components/overlays/popup/popup.styles.js +0 -15
  336. package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
  337. package/dist/components/overlays/progress/progress-ring.class.js +3 -3
  338. package/dist/components/overlays/progress/progress.styles.js +0 -21
  339. package/dist/components/overlays/rating/rating.styles.js +0 -25
  340. package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
  341. package/dist/components/overlays/spinner/spinner.styles.js +0 -3
  342. package/dist/components/overlays/toast/toast-item.styles.js +3 -45
  343. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
  344. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
  345. package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
  346. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
  347. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
  348. package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
  349. package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
  350. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
  351. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
  352. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  353. package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
  354. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
  355. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
  356. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
  357. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
  358. package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
  359. package/dist/components/retrieval/graph/graph.class.js +1 -1
  360. package/dist/components/retrieval/graph/graph.styles.js +0 -30
  361. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
  362. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
  363. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
  364. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
  365. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
  366. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
  367. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
  368. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
  369. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  370. package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
  371. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
  372. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  373. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
  374. package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
  375. package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
  376. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
  377. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
  378. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
  379. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
  380. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
  381. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
  382. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
  383. package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
  384. package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
  385. package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
  386. package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
  387. package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
  388. package/dist/components/utility/export-button/export-button.styles.js +0 -22
  389. package/dist/components/utility/icon/icon.styles.js +0 -6
  390. package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
  391. package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
  392. package/dist/components/utility/known-date/known-date.styles.js +10 -51
  393. package/dist/components/utility/live-region/live-region.styles.js +0 -4
  394. package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
  395. package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
  396. package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
  397. package/dist/components/utility/random-content/random-content.class.js +3 -2
  398. package/dist/components/utility/random-content/random-content.styles.js +6 -13
  399. package/dist/components/utility/tour/tour.class.d.ts +4 -2
  400. package/dist/components/utility/tour/tour.class.js +3 -3
  401. package/dist/components/utility/tour/tour.styles.js +0 -13
  402. package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
  403. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  404. package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
  405. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
  406. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
  407. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
  408. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
  409. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
  410. package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
  411. package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
  412. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
  413. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  414. package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
  415. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
  416. package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
  417. package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
  418. package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
  419. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
  420. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  421. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
  422. package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
  423. package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
  424. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
  425. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  426. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
  427. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  428. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
  429. package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
  430. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
  431. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
  432. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
  433. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
  434. package/dist/custom-elements-jsx.d.ts +72 -40
  435. package/dist/events.d.ts +43 -33
  436. package/dist/internal/agent-status-variants.d.ts +18 -0
  437. package/dist/internal/agent-status-variants.js +1 -0
  438. package/dist/internal/announcer.d.ts +8 -3
  439. package/dist/internal/announcer.js +1 -1
  440. package/dist/internal/autoloader-manifest.js +1 -1
  441. package/dist/internal/canvas-color.d.ts +16 -0
  442. package/dist/internal/canvas-color.js +1 -1
  443. package/dist/internal/catalog-picker.d.ts +0 -1
  444. package/dist/internal/catalog-picker.js +1 -1
  445. package/dist/internal/default-strings.generated.d.ts +1 -0
  446. package/dist/internal/default-strings.generated.js +1 -1
  447. package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
  448. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  449. package/dist/internal/localization-runtime.js +1 -1
  450. package/dist/internal/localization-types.d.ts +1 -1
  451. package/dist/internal/localization.js +1 -1
  452. package/dist/internal/lyra-element.d.ts +13 -0
  453. package/dist/internal/lyra-element.js +1 -1
  454. package/dist/internal/media-controller.js +1 -1
  455. package/dist/internal/package-metadata.d.ts +1 -1
  456. package/dist/internal/package-metadata.js +1 -1
  457. package/dist/internal/scroll-overflow.d.ts +35 -13
  458. package/dist/internal/scroll-overflow.js +1 -1
  459. package/dist/internal/sizes.styles.js +0 -2
  460. package/dist/internal/specialist-tokens.styles.js +6 -11
  461. package/dist/internal/text-highlights.d.ts +4 -1
  462. package/dist/internal/text-highlights.js +1 -1
  463. package/dist/internal/tokens/palette.styles.js +0 -15
  464. package/dist/internal/tokens.styles.js +20 -113
  465. package/dist/lyra.d.ts +9 -6
  466. package/dist/styles/reservations.css +82 -0
  467. package/dist/svelte.d.ts +72 -40
  468. package/dist/translations/ar.js +1 -1
  469. package/dist/translations/de.js +1 -1
  470. package/dist/translations/es.js +1 -1
  471. package/dist/translations/fa.js +1 -1
  472. package/dist/translations/fr.js +1 -1
  473. package/dist/translations/he.js +1 -1
  474. package/dist/translations/ja.js +1 -1
  475. package/dist/translations/pt-BR.js +1 -1
  476. package/dist/translations/ru.js +1 -1
  477. package/dist/translations/zh-CN.js +1 -1
  478. package/dist/vue.d.ts +72 -40
  479. package/llms/components/lr-accordion-item.md +12 -3
  480. package/llms/components/lr-accordion.md +11 -2
  481. package/llms/components/lr-agent-eval-dashboard.md +1 -1
  482. package/llms/components/lr-agent-trace.md +3 -1
  483. package/llms/components/lr-agent-workspace.md +20 -0
  484. package/llms/components/lr-artifact-panel.md +10 -4
  485. package/llms/components/lr-attachment-chip.md +7 -4
  486. package/llms/components/lr-attachment-trigger.md +7 -4
  487. package/llms/components/lr-av-player.md +3 -1
  488. package/llms/components/lr-avatar.md +6 -6
  489. package/llms/components/lr-bar-chart.md +8 -6
  490. package/llms/components/lr-box-plot.md +15 -4
  491. package/llms/components/lr-browser-frame.md +7 -3
  492. package/llms/components/lr-bubble-chart.md +8 -6
  493. package/llms/components/lr-calendar.md +9 -2
  494. package/llms/components/lr-card.md +24 -0
  495. package/llms/components/lr-chart.md +45 -11
  496. package/llms/components/lr-chat-viewport.md +7 -2
  497. package/llms/components/lr-checkbox-group.md +13 -5
  498. package/llms/components/lr-checkbox.md +5 -2
  499. package/llms/components/lr-checkpoint.md +6 -2
  500. package/llms/components/lr-combobox.md +47 -8
  501. package/llms/components/lr-command-palette.md +4 -1
  502. package/llms/components/lr-confirm-bar.md +7 -3
  503. package/llms/components/lr-context-meter.md +12 -11
  504. package/llms/components/lr-conversation-item.md +7 -4
  505. package/llms/components/lr-date-input.md +22 -2
  506. package/llms/components/lr-date-picker.md +23 -3
  507. package/llms/components/lr-details.md +11 -2
  508. package/llms/components/lr-dialog.md +16 -10
  509. package/llms/components/lr-dock-panel.md +7 -10
  510. package/llms/components/lr-document-preview.md +6 -1
  511. package/llms/components/lr-document-viewer.md +3 -2
  512. package/llms/components/lr-doughnut-chart.md +8 -6
  513. package/llms/components/lr-drawer.md +3 -3
  514. package/llms/components/lr-entity-card.md +3 -3
  515. package/llms/components/lr-entity-chip.md +1 -1
  516. package/llms/components/lr-entity-dossier.md +4 -1
  517. package/llms/components/lr-file-input.md +2 -2
  518. package/llms/components/lr-flag.md +30 -8
  519. package/llms/components/lr-heatmap.md +46 -0
  520. package/llms/components/lr-histogram.md +7 -4
  521. package/llms/components/lr-icon.md +1 -1
  522. package/llms/components/lr-json-schema-viewer.md +2 -1
  523. package/llms/components/lr-knowledge-graph-explorer.md +8 -3
  524. package/llms/components/lr-known-date.md +4 -2
  525. package/llms/components/lr-line-chart.md +8 -6
  526. package/llms/components/lr-lite-chart.md +16 -6
  527. package/llms/components/lr-map.md +91 -10
  528. package/llms/components/lr-markdown-core.md +3 -2
  529. package/llms/components/lr-media-card.md +28 -12
  530. package/llms/components/lr-message-parts.md +2 -1
  531. package/llms/components/lr-model-select.md +9 -10
  532. package/llms/components/lr-model-settings-panel.md +9 -9
  533. package/llms/components/lr-neighbor-list.md +1 -1
  534. package/llms/components/lr-notebook-viewer.md +6 -3
  535. package/llms/components/lr-option.md +46 -7
  536. package/llms/components/lr-pdf-viewer.md +62 -2
  537. package/llms/components/lr-pie-chart.md +8 -6
  538. package/llms/components/lr-polar-area-chart.md +8 -6
  539. package/llms/components/lr-popover.md +25 -1
  540. package/llms/components/lr-progress-ring.md +8 -1
  541. package/llms/components/lr-prompt-studio.md +1 -1
  542. package/llms/components/lr-provenance-panel.md +4 -2
  543. package/llms/components/lr-qr-code.md +1 -1
  544. package/llms/components/lr-radar-chart.md +8 -6
  545. package/llms/components/lr-rag-eval-dashboard.md +2 -2
  546. package/llms/components/lr-random-content.md +13 -0
  547. package/llms/components/lr-reorder-item.md +6 -1
  548. package/llms/components/lr-reorder-list.md +6 -1
  549. package/llms/components/lr-responsive-panel.md +11 -7
  550. package/llms/components/lr-scatter-chart.md +8 -6
  551. package/llms/components/lr-sequence-strip.md +16 -2
  552. package/llms/components/lr-slider.md +12 -5
  553. package/llms/components/lr-sparkline.md +1 -1
  554. package/llms/components/lr-suggestion-chips.md +7 -2
  555. package/llms/components/lr-swatch-picker.md +5 -5
  556. package/llms/components/lr-switch.md +5 -2
  557. package/llms/components/lr-table.md +30 -4
  558. package/llms/components/lr-terminal.md +3 -1
  559. package/llms/components/lr-thread-list.md +8 -8
  560. package/llms/components/lr-time-input.md +6 -1
  561. package/llms/components/lr-timeline-item.md +24 -0
  562. package/llms/components/lr-timeline.md +25 -1
  563. package/llms/components/lr-token-input.md +7 -2
  564. package/llms/components/lr-tool-approval-dialog.md +7 -8
  565. package/llms/components/lr-tool-call-chip.md +5 -1
  566. package/llms/components/lr-tool-param-form.md +14 -12
  567. package/llms/components/lr-tool-result-dialog.md +11 -9
  568. package/llms/components/lr-tool-result-view.md +7 -6
  569. package/llms/components/lr-tool-select-dialog.md +18 -16
  570. package/llms/components/lr-trace-tree.md +3 -1
  571. package/llms/components/lr-usage-badge.md +4 -1
  572. package/llms/components/lr-video-playlist.md +1 -1
  573. package/llms/components/lr-virtual-list.md +22 -14
  574. package/llms/components/lr-voice-picker.md +8 -5
  575. package/llms/components/lr-widget-renderer.md +3 -3
  576. package/llms/components/lr-widget.md +1 -1
  577. package/llms/components/lr-word-cloud.md +6 -2
  578. package/llms/peers.md +12 -2
  579. package/llms/shared.md +70 -2
  580. package/llms/tokens.md +15 -1
  581. package/llms-full.txt +1335 -306
  582. package/package.json +17 -5
  583. package/vscode-css-data.json +93 -2
  584. package/vscode-html-data.json +513 -59
  585. package/web-types.json +457 -72
@@ -21,11 +21,8 @@ import{css}from"lit";const styles=css`
21
21
  [part='iframe'] {
22
22
  position: absolute;
23
23
  top: 0;
24
- /* policy-allow(physical-css): the scaled iframe is a physical pixel canvas, so its origin
25
- must stay at physical top-left under both text directions. */
26
24
  right: auto;
27
25
  bottom: auto;
28
- /* policy-allow(physical-css): paired physical edge of the fixed transform canvas origin. */
29
26
  left: 0;
30
27
  display: block;
31
28
  inline-size: calc(100% / var(--lr-zoomable-frame-zoom, 1));
@@ -33,8 +30,6 @@ import{css}from"lit";const styles=css`
33
30
  border: 0;
34
31
  background: var(--lr-color-surface);
35
32
  transform: scale(var(--lr-zoomable-frame-zoom, 1));
36
- /* Iframe pixels are a physical canvas; scaling must stay pinned to its physical top-left
37
- corner under both LTR and RTL rather than mirroring the embedded document. */
38
33
  transform-origin: top left;
39
34
  }
40
35
 
@@ -11,8 +11,6 @@ import{css}from"lit";const styles=css`
11
11
  display: block;
12
12
  }
13
13
 
14
- /* Shoelace calls its brand/default tone "primary". Re-point the shared semantic slots instead
15
- of introducing a second colour vocabulary for this compatibility component. */
16
14
  :host([variant='primary']) {
17
15
  --lr-color-fill-quiet: var(--lr-color-brand-fill-quiet);
18
16
  --lr-color-fill-normal: var(--lr-color-brand-fill-normal);
@@ -49,6 +47,10 @@ import{css}from"lit";const styles=css`
49
47
  transform var(--lr-duration-fast) var(--lr-easing-standard);
50
48
  }
51
49
 
50
+ [part='base'][hidden] {
51
+ display: none;
52
+ }
53
+
52
54
  :host([data-alert-showing]) [part='base'],
53
55
  :host([data-alert-hiding]) [part='base'] {
54
56
  opacity: 0;
@@ -2,48 +2,22 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: inline-block;
4
4
  max-inline-size: 100%;
5
- /* The 'm' defaults exactly reproduce the original fixed badge treatment -- mirrors
6
- <lr-chip>'s identical --lr-chip-font-size/-padding-inline/-min-height trio so a consumer
7
- moving between the two sibling components finds the same size vocabulary. */
8
5
  --_lr-badge-font-size: var(--lr-font-size-sm);
9
6
  --_lr-badge-padding-inline: var(--lr-space-s);
10
7
  --_lr-badge-min-height: var(--lr-size-1-25rem);
11
- /* Space between the start slot, the label and the end slot. Collapses to nothing on its own
12
- when a wrapper is empty, because the empty wrapper is display:none rather than zero-width. */
13
8
  --_lr-badge-gap: var(--lr-space-2xs);
14
- /* Rounded rectangle by default; the pill treatment is opt-in through the 'pill' attribute
15
- below, matching the badge/tag shape vocabulary. Doesn't vary by size tier, so it's declared
16
- once here rather than re-assigned per effective-size block -- mirrors lr-button's
17
- identical --lr-button-radius. */
18
9
  --_lr-badge-radius: var(--lr-radius);
19
10
 
20
- /* --- Palette: what the 'variant' axis chooses. -------------------------------------------
21
- Five semantic slots per variant, so the 'appearance' axis below can route them onto the
22
- surface without every (variant, appearance) pair needing its own rule. Neutral is the
23
- default set declared here: it is the only variant whose border color and text color differ
24
- (a plain bordered surface reading as "no signal"), which is why -edge and -ink are separate
25
- slots rather than one loud color.
26
- -solid and -on-solid read the shared variants sheet's generic slots unconditionally, because
27
- neutral's own values there already ARE the grid's neutral row; only -tint, -edge and -ink
28
- need the non-neutral rule below. */
29
11
  --_lr-badge-tint: var(--lr-color-surface);
30
12
  --_lr-badge-solid: var(--lr-color-fill-loud);
31
13
  --_lr-badge-edge: var(--lr-color-border);
32
14
  --_lr-badge-ink: var(--lr-color-text);
33
15
  --_lr-badge-on-solid: var(--lr-color-on-loud);
34
16
 
35
- /* --- Surface: what the 'appearance' axis chooses from that palette. ----------------------
36
- Kept separate from the public --lr-badge-background/-border/-color trio so those three stay
37
- *undeclared* and therefore still inherit from a consumer's ancestor rule; they are consumed
38
- as the first arm of the var() fallbacks on [part~='base'] below. The values here are the
39
- 'filled-outlined' default, restated per appearance further down. */
40
17
  --_lr-badge-fill: var(--lr-badge-tint, var(--_lr-badge-tint));
41
18
  --_lr-badge-stroke: var(--lr-badge-edge, var(--_lr-badge-edge));
42
19
  --_lr-badge-text: var(--lr-badge-ink, var(--_lr-badge-ink));
43
20
 
44
- /* --- Attention: the opt-in attention-seeking animation. ----------------------------------
45
- Duration and easing are separate custom properties (not one compound transition token) so
46
- the 'animation' shorthand below expands to exactly one timing function. */
47
21
  --_lr-badge-attention-duration: var(--lr-duration-ambient, 1.8s);
48
22
  --_lr-badge-attention-easing: var(--lr-easing-emphasized, ease-in-out);
49
23
  --_lr-badge-pulse-color: var(
@@ -84,8 +58,6 @@ import{css}from"lit";const styles=css`
84
58
  overflow: hidden;
85
59
  align-items: center;
86
60
  }
87
- /* Defeats the display:inline-flex above -- the native [hidden] UA rule alone would lose to it at
88
- equal specificity. Same fix <lr-chip>'s identical [part='icon'][hidden] override applies. */
89
61
  [part='start'][hidden],
90
62
  [part='end'][hidden] {
91
63
  display: none;
@@ -96,9 +68,11 @@ import{css}from"lit";const styles=css`
96
68
  min-inline-size: 0;
97
69
  max-inline-size: 100%;
98
70
  }
71
+ [part='start'] ::slotted([hidden]:not([hidden='until-found' i])),
72
+ [part='end'] ::slotted([hidden]:not([hidden='until-found' i])) {
73
+ display: none;
74
+ }
99
75
 
100
- /* The label truncates, not the whole surface: keeping overflow off [part~='base'] lets the
101
- removable tag's oversized hit target overhang the compact pill without being clipped. */
102
76
  [part='content'] {
103
77
  flex: 0 1 auto;
104
78
  min-inline-size: 0;
@@ -107,23 +81,12 @@ import{css}from"lit";const styles=css`
107
81
  white-space: nowrap;
108
82
  }
109
83
 
110
- /* --- variant: the palette ----------------------------------------------------------------
111
- One rule for all four non-neutral variants, in place of the four near-identical blocks that
112
- stood here: the shared variants sheet has already re-pointed --lr-color-fill-* at the active
113
- variant's row of the semantic grid, so the badge reads generic slots and never names a
114
- variant. Neutral is excluded rather than mapped, because it keeps the ambient
115
- surface/border/text "no signal" treatment declared on :host above instead of the grid's grey
116
- neutral row. Matching [variant] as well as :not([variant='neutral']) keeps a host that has not
117
- yet reflected its default attribute on the same neutral values. */
118
84
  :host([data-effective-variant]:not([data-effective-variant='neutral'])) {
119
85
  --_lr-badge-tint: var(--lr-color-fill-quiet);
120
86
  --_lr-badge-edge: var(--lr-color-fill-loud);
121
87
  --_lr-badge-ink: var(--lr-color-fill-loud);
122
88
  }
123
89
 
124
- /* --- appearance: palette to surface ------------------------------------------------------
125
- 'transparent' rather than 'none' for the border-less appearances, so switching appearance
126
- never changes the badge's own layout box. */
127
90
  :host([appearance='filled-outlined']) {
128
91
  --_lr-badge-fill: var(--lr-badge-tint, var(--_lr-badge-tint));
129
92
  --_lr-badge-stroke: var(--lr-badge-edge, var(--_lr-badge-edge));
@@ -150,7 +113,6 @@ import{css}from"lit";const styles=css`
150
113
  --_lr-badge-text: var(--lr-badge-ink, var(--_lr-badge-ink));
151
114
  }
152
115
 
153
- /* --- size --------------------------------------------------------------------------------- */
154
116
  :host([data-effective-size='2xs']) {
155
117
  --_lr-badge-font-size: var(--lr-font-size-2xs);
156
118
  --_lr-badge-padding-inline: var(--lr-space-2xs);
@@ -177,7 +139,6 @@ import{css}from"lit";const styles=css`
177
139
  --_lr-badge-min-height: var(--lr-size-1-75rem);
178
140
  }
179
141
 
180
- /* --- attention ---------------------------------------------------------------------------- */
181
142
  :host([pulse]:not([attention])) [part~='base'],
182
143
  :host([attention='pulse']) [part~='base'] {
183
144
  animation: lr-badge-pulse var(--lr-badge-attention-duration, var(--_lr-badge-attention-duration)) var(--lr-badge-attention-easing, var(--_lr-badge-attention-easing))
@@ -200,8 +161,6 @@ import{css}from"lit";const styles=css`
200
161
  }
201
162
  }
202
163
 
203
- /* Vertical, so it needs no logical-property mirroring: block-direction motion means the same
204
- thing under dir="rtl". */
205
164
  @keyframes lr-badge-bounce {
206
165
  0%,
207
166
  25%,
@@ -214,9 +173,6 @@ import{css}from"lit";const styles=css`
214
173
  }
215
174
  }
216
175
 
217
- /* The attention animations are decorative and infinite, so they stop outright rather than
218
- merely shortening. The shared token layer already clamps every animation's duration and
219
- iteration count under this query; naming animation itself keeps the badge provably still. */
220
176
  @media (prefers-reduced-motion: reduce) {
221
177
  [part~='base'] {
222
178
  animation: none !important;
@@ -1,7 +1,5 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
- /* Matched to the pill's own corner so retuning one retunes both -- mirrors <lr-chip>'s
4
- identical --lr-chip-radius reuse on its remove button. */
5
3
  --_lr-tag-remove-radius: var(--lr-badge-radius, var(--_lr-badge-radius));
6
4
  --_lr-tag-remove-hover-background: color-mix(in srgb, currentColor 16%, transparent);
7
5
  }
@@ -10,15 +8,12 @@ import{css}from"lit";const styles=css`
10
8
  min-block-size: max(var(--lr-badge-min-height, var(--_lr-badge-min-height)), var(--lr-icon-button-size));
11
9
  }
12
10
 
13
- /* Shoelace's variant="text" is a surface treatment rather than a semantic palette. The public
14
- token remains verbatim while the badge base derives neutral as its private tone. */
15
11
  :host([variant='text']) {
16
12
  --_lr-badge-fill: transparent;
17
13
  --_lr-badge-stroke: transparent;
18
14
  --_lr-badge-text: var(--lr-badge-ink, var(--_lr-badge-ink));
19
15
  }
20
16
 
21
- /* The full hit target participates in layout so compact tags cannot overlap an adjacent target. */
22
17
  [part~='remove-button'] {
23
18
  flex: 0 0 auto;
24
19
  display: inline-flex;
@@ -40,15 +35,6 @@ import{css}from"lit";const styles=css`
40
35
  [part~='remove-button']:hover {
41
36
  background: var(--lr-tag-remove-hover-background, var(--_lr-tag-remove-hover-background));
42
37
  }
43
- /* Pressed deepens the hover's own scrim -- currentColor mixed in again at the shared
44
- --lr-color-mix-active share, landing the button at roughly double the hover's tint so the
45
- press reads as a step past the hover rather than a repeat of it. Mixed toward currentColor
46
- rather than --lr-color-mix-partner deliberately: this button sits INSIDE the badge, whose
47
- variant may have painted a loud fill beneath it, and currentColor is then the pill's own ink,
48
- the one colour guaranteed to contrast with that fill. --lr-color-mix-partner follows the PAGE
49
- text, which on a solid-appearance badge (light ink on a loud fill) points the opposite way
50
- from the hover -- hovering would lighten while pressing darkened. Layering on top of the hover
51
- custom property also means a consumer who retints the hover gets a matching press for free. */
52
38
  [part~='remove-button']:active {
53
39
  background: color-mix(in srgb, currentColor var(--lr-color-mix-active), var(--lr-tag-remove-hover-background, var(--_lr-tag-remove-hover-background)));
54
40
  }
@@ -3,18 +3,12 @@ import{css}from"lit";const styles=css`
3
3
  display: block;
4
4
  box-sizing: border-box;
5
5
  max-inline-size: 100%;
6
- /* The close hover is independently themeable so retinting it never changes the host surface. */
7
6
  --_lr-callout-close-hover-bg: var(--lr-color-brand-quiet);
8
- /* Unset nested callouts inherit the generic semantic and size slots. The second arms are the
9
- standalone brand/m defaults; explicit attributes re-point the generic slots in the
10
- contextual vocabulary sheets. */
11
7
  --_lr-callout-background: var(--lr-color-fill-quiet, var(--lr-color-brand-fill-quiet));
12
8
  --_lr-callout-border: var(--lr-color-fill-loud, var(--lr-color-brand-fill-loud));
13
9
  --_lr-callout-color: var(--lr-color-fill-loud, var(--lr-color-brand-fill-loud));
14
10
  --_lr-callout-font-size: var(--lr-form-control-font-size, var(--lr-font-size-m));
15
11
  --_lr-callout-padding: var(--lr-form-control-padding-inline, var(--lr-space-m));
16
- /* Separates three adjacent boxes rather than setting the panel's density, so it deliberately
17
- does not vary by tier -- shrinking it at 2xs only crowds the close control. */
18
12
  --_lr-callout-gap: var(--lr-space-s);
19
13
 
20
14
  padding: var(--lr-callout-padding, var(--_lr-callout-padding));
@@ -69,11 +63,6 @@ import{css}from"lit";const styles=css`
69
63
  [part='heading'] { margin-block-end: var(--lr-space-xs); font-weight: var(--lr-font-weight-semibold); }
70
64
  [part='content'] { grid-column: 2; min-inline-size: 0; overflow-wrap: break-word; }
71
65
  [part='message'] { min-inline-size: 0; overflow-wrap: break-word; }
72
- /* The interactive hit target meets the shared minimum tappable size (--lr-icon-button-size)
73
- in both the default panel and the compact [inline] variant below -- the *visible* "×" glyph
74
- is what shrinks for [inline] instead, rendered on the separate [part='close-icon'] child and
75
- centered via this button's own flex layout, not by resizing the button itself. Mirrors
76
- lr-swatch-picker's [part='swatch']/[part='swatch-fill'] split. */
77
66
  [part='close-button'] { display: inline-flex; grid-column: 3; align-items: center; justify-content: center; min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); border: 0; border-radius: var(--lr-radius-pill); background: transparent; color: inherit; cursor: pointer; }
78
67
  [part='close-button']:where(:hover) { background: var(--lr-callout-close-hover-bg, var(--_lr-callout-close-hover-bg)); }
79
68
  [part='close-button']:where(:active) { background: color-mix(in oklab, var(--lr-callout-close-hover-bg, var(--_lr-callout-close-hover-bg)), var(--lr-color-mix-partner) var(--lr-color-mix-active)); }
@@ -8,11 +8,6 @@ import{css}from"lit";const styles=css`
8
8
  align-items: center;
9
9
  gap: var(--lr-space-xs);
10
10
  }
11
- /* Deliberately its own local pill styling rather than instantiating a
12
- real <lr-chip> in the shadow DOM for this -- keeps the group's
13
- rendering self-contained instead of depending on chip.ts's internal
14
- shape, the same way this family's overlay-shaped components duplicate
15
- rather than nest one another. */
16
11
  [part='overflow-indicator'] {
17
12
  display: inline-flex;
18
13
  align-items: center;
@@ -36,18 +31,10 @@ import{css}from"lit";const styles=css`
36
31
  border-color var(--lr-transition-fast),
37
32
  color var(--lr-transition-fast);
38
33
  }
39
- /* Dashed border marks it as a structural "more" affordance, distinct at a
40
- glance from the solid-bordered real chips it sits alongside. */
41
34
  [part='overflow-indicator']:hover {
42
35
  border-color: var(--lr-color-brand);
43
36
  color: var(--lr-color-text);
44
37
  }
45
- /* Pressed adds what the hover deliberately leaves alone -- a fill -- so the press is a visible
46
- step further in, not a restatement. The surface is mixed toward --lr-color-mix-partner (which
47
- follows the text colour), so the tint darkens on a light theme and lightens on a dark one
48
- without this rule knowing which is in force. The border and text treatments are restated
49
- rather than inherited from the hover rule because keyboard activation (Space/Enter on the
50
- focused indicator) raises :active with no :hover at all. */
51
38
  [part='overflow-indicator']:active {
52
39
  border-color: var(--lr-color-brand);
53
40
  color: var(--lr-color-text);
@@ -57,11 +44,6 @@ import{css}from"lit";const styles=css`
57
44
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
58
45
  outline-offset: var(--lr-focus-ring-offset);
59
46
  }
60
- /* :where() zeroes the [aria-expanded='true'] qualifier's specificity contribution -- otherwise
61
- this (0,2,0) rule would beat a consumer's own ::part(overflow-indicator) color override
62
- whenever the picker is open. Color and border style route through scoped cssprops (mirroring
63
- lr-widget's [aria-pressed='true'] treatment) so a consumer can retint or reshape just the
64
- expanded state without hijacking the shared tokens used everywhere else. */
65
47
  [part='overflow-indicator']:where([aria-expanded='true']) {
66
48
  border-style: var(--lr-chip-group-overflow-expanded-border-style, solid);
67
49
  color: var(--lr-chip-group-overflow-expanded-color, var(--lr-color-text));
@@ -3,38 +3,16 @@ import{css}from"lit";const styles=css`
3
3
  display: inline-flex;
4
4
  max-inline-size: 100%;
5
5
  vertical-align: middle;
6
- /* One custom-property trio swapped by the single non-neutral rule below,
7
- rather than repeating background/color/border per part per variant —
8
- mirrors lr-tool-call-chip's/lr-attachment-chip's identical
9
- -accent/-bg/-border trio so a chip's colour vocabulary reads the same
10
- everywhere in the library. These are the 'neutral' values: neutral
11
- deliberately opts out of the semantic grid's own neutral row (see the
12
- class doc) and reads as a plain bordered surface instead. */
13
6
  --_lr-chip-accent: var(--lr-color-text);
14
7
  --_lr-chip-bg: var(--lr-color-surface);
15
8
  --_lr-chip-border: var(--lr-color-border);
16
- /* The medium defaults exactly reproduce the original fixed chip treatment. */
17
9
  --_lr-chip-font-size: var(--lr-font-size-sm);
18
10
  --_lr-chip-padding-block: var(--lr-size-0-25rem);
19
11
  --_lr-chip-padding-inline: var(--lr-space-s);
20
12
  --_lr-chip-gap: var(--lr-space-xs);
21
13
  --_lr-chip-icon-size: var(--lr-font-size-sm);
22
- /* Doesn't vary by size tier, so it's declared once here rather than re-assigned per
23
- :host([size='…']) block -- same precedent as lr-button's --lr-button-radius. Consumed on
24
- both [part='base'] and [part='remove-button'] below so a consumer retuning the chip's
25
- corner shape gets a consistent remove-button corner too, not a mismatched one.
26
- The rounded rectangle is the default and the pill is opt-in via [pill] below, matching
27
- lr-badge/lr-tag: while this was unconditionally --lr-radius-pill, a 'pill' attribute would
28
- have been indistinguishable from its own absence. */
29
14
  --_lr-chip-radius: var(--lr-radius);
30
- /* Component density floor. Interactive controls also enforce the shared
31
- --lr-icon-button-size hit target; non-interactive display chips get no floor. */
32
15
  --_lr-chip-min-height: var(--lr-size-1-5rem);
33
- /* --lr-chip-height is intentionally NOT declared here. It is a consumer-facing exact-height
34
- escape hatch consumed only through the var() fallbacks on [part='base'] below; declaring
35
- any value for it (even 'auto') would make those fallback arms unreachable and turn
36
- --lr-chip-min-height into dead code. Left undeclared, both arms stay live: the per-tier
37
- floor falls out of the fallback, and setting the property pins an exact height. */
38
16
  }
39
17
 
40
18
  :host([pill]) {
@@ -48,9 +26,6 @@ import{css}from"lit";const styles=css`
48
26
  :host([size='3xs']) {
49
27
  --_lr-chip-font-size: var(--lr-font-size-3xs);
50
28
  --_lr-chip-padding-block: 0;
51
- /* Below --lr-space-2xs (the space scale's own floor, still used by the 2xs tier) --
52
- same precedent as 2xs's own padding-block above, which already bottoms out below
53
- the space scale via a raw --lr-size-* token rather than reusing --lr-space-2xs. */
54
29
  --_lr-chip-padding-inline: var(--lr-size-0-0625rem);
55
30
  --_lr-chip-gap: var(--lr-space-2xs);
56
31
  --_lr-chip-icon-size: var(--lr-font-size-3xs);
@@ -69,10 +44,6 @@ import{css}from"lit";const styles=css`
69
44
  --_lr-chip-gap: var(--lr-space-2xs);
70
45
  --_lr-chip-icon-size: var(--lr-font-size-xs);
71
46
  }
72
- /* 'small'/'large' are the Web Awesome/Shoelace spellings of these same two tiers -- accepted
73
- verbatim by CHIP_SIZE (chip.class.ts) rather than normalised away, same precedent as
74
- sizes.styles.ts/contextual-vocabulary.styles.ts. 'medium' needs no rule of its own: it is
75
- the default tier already declared on :host above, exactly like the unaliased 'm'. */
76
47
  :host([size='s']),
77
48
  :host([size='small']) {
78
49
  --_lr-chip-font-size: var(--lr-font-size-xs);
@@ -99,13 +70,6 @@ import{css}from"lit";const styles=css`
99
70
  --_lr-chip-min-height: var(--lr-size-2rem);
100
71
  }
101
72
 
102
- /* One rule for all four non-neutral variants, in place of the four near-identical blocks that
103
- stood here: the shared variants sheet has already re-pointed --lr-color-fill-* at the active
104
- variant's row of the semantic grid, so the chip reads generic slots and never names a variant.
105
- Neutral is excluded rather than mapped, because it keeps the plain bordered-surface "no
106
- signal" treatment declared on :host above instead of the grid's grey neutral row. Matching
107
- [variant] as well as :not([variant='neutral']) keeps a host that has not yet reflected its
108
- default attribute on the same neutral values. */
109
73
  :host([variant]:not([variant='neutral'])) {
110
74
  --_lr-chip-accent: var(--lr-color-fill-loud);
111
75
  --_lr-chip-bg: var(--lr-color-fill-quiet);
@@ -128,9 +92,6 @@ import{css}from"lit";const styles=css`
128
92
  font-size: var(--lr-chip-font-size, var(--_lr-chip-font-size));
129
93
  font-weight: var(--lr-font-weight-medium);
130
94
  line-height: var(--lr-line-height-snug);
131
- /* Pinned only when --lr-chip-height is set; 'auto' otherwise, so a display chip keeps growing
132
- to fit its own content. Applies to interactive and non-interactive chips alike -- the
133
- interactive floor lives on the toggleable-host rule below. */
134
95
  block-size: var(--lr-chip-height, auto);
135
96
  }
136
97
 
@@ -145,13 +106,6 @@ import{css}from"lit";const styles=css`
145
106
  :host([toggleable]:not([removable]):not([disabled])) [part='base']:hover {
146
107
  background: color-mix(in srgb, var(--lr-chip-accent, var(--_lr-chip-accent)) 8%, var(--lr-chip-bg, var(--_lr-chip-bg)));
147
108
  }
148
- /* Pressed deepens the hover's own accent wash to the shared --lr-color-mix-active share --
149
- roughly triple the hover's 8%, so the press is unmistakably a step past it. The accent, not
150
- --lr-color-mix-partner, is the partner here: on every non-neutral variant the chip is a loud
151
- accent on a quiet fill, so the accent already IS this surface's contrast partner, while the
152
- shared partner follows the page text and would wash the variant's hue out at the exact moment
153
- of the click. :active matches here even though the actual button is [part='toggle-button']
154
- stretched over the base, because :active applies to the activated element's ancestors too. */
155
109
  :host([toggleable]:not([removable]):not([disabled])) [part='base']:active {
156
110
  background: color-mix(in srgb, var(--lr-chip-accent, var(--_lr-chip-accent)) var(--lr-color-mix-active), var(--lr-chip-bg, var(--_lr-chip-bg)));
157
111
  }
@@ -160,15 +114,7 @@ import{css}from"lit";const styles=css`
160
114
  outline-offset: var(--lr-focus-ring-offset);
161
115
  }
162
116
  :host([toggleable][selected]:not([removable])) [part='base'] {
163
- /* Falls back to --lr-chip-bg (today's exact value) so every existing consumer renders
164
- byte-identical when unset. A consumer wanting a distinct "active" tint independent of the
165
- resting background sets --lr-chip-pressed-bg directly. */
166
117
  background: var(--lr-chip-pressed-bg, var(--lr-chip-bg, var(--_lr-chip-bg)));
167
- /* Falls back to --lr-chip-accent (today's exact value) so every
168
- existing consumer, including all four non-neutral variants, renders
169
- byte-identical when unset. A consumer with a per-item arbitrary
170
- color sets --lr-chip-pressed-border directly, leaving
171
- --lr-chip-accent (and therefore the label text color) untouched. */
172
118
  border-color: var(--lr-chip-pressed-border, var(--lr-chip-accent, var(--_lr-chip-accent)));
173
119
  }
174
120
 
@@ -187,9 +133,9 @@ import{css}from"lit";const styles=css`
187
133
  min-inline-size: 0;
188
134
  max-inline-size: 100%;
189
135
  }
190
- /* Defeats [part='start']'s own 'display: inline-flex' above -- the native
191
- [hidden] UA rule alone would lose to it at equal specificity. Same fix
192
- lr-stat's identical slotted-adornment hidden override already applies. */
136
+ [part='start'] ::slotted([hidden]:not([hidden='until-found' i])) {
137
+ display: none;
138
+ }
193
139
  [part='start'][hidden] {
194
140
  display: none;
195
141
  }
@@ -217,8 +163,9 @@ import{css}from"lit";const styles=css`
217
163
  min-inline-size: 0;
218
164
  max-inline-size: 100%;
219
165
  }
220
- /* Defeats [part='end']'s own 'display: inline-flex' above -- the native [hidden] UA rule alone
221
- would lose to it at equal specificity. Same fix [part='start'][hidden] above already applies. */
166
+ [part='end'] ::slotted([hidden]:not([hidden='until-found' i])) {
167
+ display: none;
168
+ }
222
169
  [part='end'][hidden] {
223
170
  display: none;
224
171
  }
@@ -240,8 +187,6 @@ import{css}from"lit";const styles=css`
240
187
  cursor: not-allowed;
241
188
  }
242
189
 
243
- /* Keep the full target inside the chip's layout box. Negative margins made compact/custom-height
244
- chips overlap adjacent controls and could let the target escape its painted owner. */
245
190
  [part='remove-button'] {
246
191
  flex: 0 0 auto;
247
192
  display: inline-flex;
@@ -263,14 +208,6 @@ import{css}from"lit";const styles=css`
263
208
  [part='remove-button']:not(:disabled):hover {
264
209
  background: color-mix(in srgb, currentColor 16%, transparent);
265
210
  }
266
- /* Pressed lays the shared --lr-color-mix-active share of currentColor over the hover's own
267
- scrim, which more than doubles the tint the hover produced -- a step past it, not a repeat.
268
- currentColor rather than --lr-color-mix-partner: this button sits INSIDE the pill, whose
269
- variant may have painted a loud fill beneath it, so the pill's own ink is the only colour
270
- guaranteed to contrast there, while --lr-color-mix-partner follows the PAGE text and would
271
- point the opposite way from the hover on a non-neutral chip. The hover value is restated
272
- rather than referenced because it is a literal here, not a public custom property (unlike
273
- <lr-tag>'s --lr-tag-remove-hover-background). */
274
211
  [part='remove-button']:not(:disabled):active {
275
212
  background: color-mix(in srgb, currentColor var(--lr-color-mix-active), color-mix(in srgb, currentColor 16%, transparent));
276
213
  }
@@ -9,9 +9,6 @@ export interface ConfirmOptions {
9
9
  cancelLabel?: string;
10
10
  /** `'danger'` fills the confirm button with `--lr-color-danger` instead of `--lr-color-brand` -- for destructive actions. */
11
11
  variant?: 'neutral' | 'danger';
12
- /** @deprecated Use `variant` instead. Kept as a one-major back-compat alias; `variant` wins when
13
- * both are set. */
14
- tone?: 'neutral' | 'danger';
15
12
  }
16
13
  /**
17
14
  * Show a confirmation modal, resolving `true` only when the confirm button
@@ -25,7 +22,7 @@ export interface ConfirmOptions {
25
22
  * mounted after that request settles.
26
23
  *
27
24
  * Every dismissal path (confirm button, cancel button, Escape, backdrop
28
- * click) funnels through `<lr-dialog>`'s own `close()`/`lr-dialog-close`
25
+ * click) funnels through `<lr-dialog>`'s own `close()`/`lr-close`
29
26
  * event, so there is exactly one place that resolves the promise and tears
30
27
  * the dialog down. Because that event is cancelable, a veto leaves this
31
28
  * promise pending and the transient dialog mounted until a later accepted
@@ -9,4 +9,4 @@ import{LyraDialog}from"./dialog.class.js";import{defineElement,tag}from"../../..
9
9
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
10
10
  outline-offset: var(--lr-focus-ring-offset);
11
11
  }
12
- `;function createButton(label,style,onClick){const button=document.createElement("button");return button.type="button",button.textContent=label,button.setAttribute(CONFIRM_BUTTON_ATTRIBUTE,""),button.style.cssText=`${BUTTON_BASE_STYLE} ${style}`,button.addEventListener("click",onClick),button}function confirm(options){defineElement("dialog",LyraDialog);const{title,description,confirmLabel,cancelLabel,variant,tone}=options,resolvedVariant=variant??tone??"neutral";return new Promise(resolve=>{const dialog=document.createElement(tag("dialog"));dialog.lightDismiss=!0;let settled=!1;const buttonStates=document.createElement("style");buttonStates.textContent=BUTTON_STATE_STYLE,dialog.appendChild(buttonStates);const heading=document.createElement("h2");if(heading.textContent=title,heading.style.cssText="margin: 0 0 var(--lr-space-s) 0; font-size: var(--lr-size-1-0625rem); font-weight: var(--lr-font-weight-semibold);",dialog.appendChild(heading),description){const desc=document.createElement("p");desc.textContent=description,desc.style.cssText="margin: var(--lr-space-xs) 0 0 0; color: var(--lr-color-text-quiet);",dialog.appendChild(desc)}dialog.addEventListener("lr-dialog-close",event=>{queueMicrotask(()=>{if(settled||event.defaultPrevented)return;settled=!0;const reason=event.detail;resolve(reason==="confirm"),dialog.remove()})});const cancelButton=createButton(resolveLyraString(dialog,"cancel",void 0,cancelLabel,void 0,CONFIRM_DEFAULT_STRINGS),CANCEL_STYLE,()=>dialog.close("cancel"));cancelButton.slot="footer";const confirmButton=createButton(resolveLyraString(dialog,"confirm",void 0,confirmLabel,void 0,CONFIRM_DEFAULT_STRINGS),CONFIRM_VARIANT_STYLE[resolvedVariant],()=>dialog.close("confirm"));confirmButton.slot="footer",dialog.appendChild(cancelButton),dialog.appendChild(confirmButton),dialog.open=!0,document.body.appendChild(dialog)})}export{confirm};
12
+ `;function createButton(label,style,onClick){const button=document.createElement("button");return button.type="button",button.textContent=label,button.setAttribute(CONFIRM_BUTTON_ATTRIBUTE,""),button.style.cssText=`${BUTTON_BASE_STYLE} ${style}`,button.addEventListener("click",onClick),button}function confirm(options){defineElement("dialog",LyraDialog);const{title,description,confirmLabel,cancelLabel,variant}=options,resolvedVariant=variant??"neutral";return new Promise(resolve=>{const dialog=document.createElement(tag("dialog"));dialog.lightDismiss=!0;let settled=!1;const buttonStates=document.createElement("style");buttonStates.textContent=BUTTON_STATE_STYLE,dialog.appendChild(buttonStates);const heading=document.createElement("h2");if(heading.textContent=title,heading.style.cssText="margin: 0 0 var(--lr-space-s) 0; font-size: var(--lr-size-1-0625rem); font-weight: var(--lr-font-weight-semibold);",dialog.appendChild(heading),description){const desc=document.createElement("p");desc.textContent=description,desc.style.cssText="margin: var(--lr-space-xs) 0 0 0; color: var(--lr-color-text-quiet);",dialog.appendChild(desc)}dialog.addEventListener("lr-close",event=>{queueMicrotask(()=>{if(settled||event.defaultPrevented)return;settled=!0;const reason=event.detail;resolve(reason==="confirm"),dialog.remove()})});const cancelButton=createButton(resolveLyraString(dialog,"cancel",void 0,cancelLabel,void 0,CONFIRM_DEFAULT_STRINGS),CANCEL_STYLE,()=>dialog.close("cancel"));cancelButton.slot="footer";const confirmButton=createButton(resolveLyraString(dialog,"confirm",void 0,confirmLabel,void 0,CONFIRM_DEFAULT_STRINGS),CONFIRM_VARIANT_STYLE[resolvedVariant],()=>dialog.close("confirm"));confirmButton.slot="footer",dialog.appendChild(cancelButton),dialog.appendChild(confirmButton),dialog.open=!0,document.body.appendChild(dialog)})}export{confirm};
@@ -4,7 +4,7 @@ import { type LyraHeadingLevel } from '../../../internal/heading-level.js';
4
4
  import { type OverlayDeactivateOptions } from '../../../internal/overlay-manager.js';
5
5
  import { type RegisteredAnimationSpec } from '../../../internal/registered-animation.js';
6
6
  /**
7
- * Reason a dialog was dismissed, forwarded as the `lr-dialog-close` event
7
+ * Reason a dialog was dismissed, forwarded as the `lr-close` event
8
8
  * detail. `'escape'` and `'backdrop'` are emitted by the dialog's own built-in
9
9
  * dismiss triggers; `'close-button'` by the built-in header close button
10
10
  * (rendered when `closable` is set); `'unmount'` is emitted when the dialog is
@@ -36,7 +36,7 @@ export interface LyraDialogEventMap {
36
36
  'lr-after-hide': CustomEvent<null>;
37
37
  'lr-initial-focus': CustomEvent<null>;
38
38
  'lr-request-close': CustomEvent<LyraDialogRequestCloseDetail>;
39
- 'lr-dialog-close': CustomEvent<DialogCloseReason>;
39
+ 'lr-close': CustomEvent<DialogCloseReason>;
40
40
  }
41
41
  /**
42
42
  * `<lr-dialog>` — a general-purpose modal/overlay. `role="dialog"`,
@@ -50,7 +50,7 @@ export interface LyraDialogEventMap {
50
50
  *
51
51
  * Lifecycle: `show()` emits `lr-show` (cancelable) and then, once the enter animation has
52
52
  * finished, `lr-after-show`. `hide()`/`close()` emit `lr-hide` (cancelable), then
53
- * `lr-dialog-close` (cancelable, carrying the dismissal reason), then — once the exit animation
53
+ * `lr-close` (cancelable, carrying the dismissal reason), then — once the exit animation
54
54
  * has finished — `lr-after-hide`. Assigning `open` runs the same lifecycle, so the property, the
55
55
  * reflected attribute, and the two method calls can never disagree. Markup that renders open
56
56
  * from the start emits nothing, matching `<lr-menu>`.
@@ -102,7 +102,7 @@ export interface LyraDialogEventMap {
102
102
  * @event lr-show - The dialog is about to open. Cancelable — `preventDefault()` keeps it closed.
103
103
  * @event lr-after-show - The dialog is open and its enter animation has finished.
104
104
  * @event lr-hide - The dialog is about to close, for every dismissal path. Cancelable —
105
- * `preventDefault()` keeps it open and stops `lr-dialog-close` from firing at all. Detail is
105
+ * `preventDefault()` keeps it open and stops `lr-close` from firing at all. Detail is
106
106
  * `{ source: Element }`, the affordance or host that requested the transition. The single
107
107
  * exception is an open dialog being removed from the document: the close has already happened
108
108
  * and cannot be undone, so that one is announced non-cancelable.
@@ -112,12 +112,35 @@ export interface LyraDialogEventMap {
112
112
  * dialogs defer it until rendered, and reconnecting the same open dialog does not repeat it.
113
113
  * @event lr-request-close - A built-in affordance requested dismissal. Cancelable; detail is
114
114
  * `{ source: 'close-button' | 'keyboard' | 'overlay' }`.
115
- * @event lr-dialog-close - `detail: DialogCloseReason`. Cancelable — a listener calling
115
+ * @event lr-close - `detail: DialogCloseReason`. Cancelable — a listener calling
116
116
  * `preventDefault()` stops the dialog from closing, for every dismissal path (Escape, backdrop,
117
117
  * the built-in close button, `hide()`, `open = false`, or a consumer's own `close()` call).
118
118
  * Fires after `lr-hide` and carries the one thing `lr-hide` does not: which affordance asked
119
- * for the close. Also fired (with reason `'unmount'`, non-cancelable there since the element is
120
- * already being removed) when the dialog is removed from the DOM while still open.
119
+ * for the close. The plain `lr-close` spelling matches `<lr-tool-select-dialog>`,
120
+ * `<lr-tool-result-dialog>`, and `<lr-tool-approval-dialog>`, whose own docs already describe
121
+ * their close-reason detail as mirroring this shape. Also fired (with reason `'unmount'`,
122
+ * non-cancelable there since the element is already being removed) when the dialog is removed
123
+ * from the DOM while still open.
124
+ *
125
+ * **The name is not dialog-scoped, so filter by target.** `lr-close` is emitted by nine
126
+ * components in this library, several of which are commonly nested *inside* a dialog:
127
+ * `<lr-callout>` (an inline notice above a form), `<lr-tab>`/`<lr-tab-group>`,
128
+ * `<lr-command-palette>`, `<lr-document-viewer>`, `<lr-responsive-panel>`, and the three
129
+ * tool dialogs. Library events bubble and are composed, so a listener bound directly on
130
+ * `<lr-dialog>` also receives a descendant's close — and a closable callout inside a dialog would
131
+ * otherwise dismiss the whole dialog. Their details differ too (`<lr-callout>` and `<lr-tab>`
132
+ * carry none, where this event carries a `DialogCloseReason`), so a handler reading
133
+ * `event.detail.reason` would throw on a foreign one. This is latent rather than
134
+ * broken-on-arrival, because a callout or tab only emits once given a close affordance — which
135
+ * is what makes it a bad failure mode: it appears later and presents as the dialog dismissing
136
+ * itself. Guard on the target, the way `<lr-document-viewer>` already does internally:
137
+ *
138
+ * ```js
139
+ * dialog.addEventListener('lr-close', (event) => {
140
+ * if (event.target !== event.currentTarget) return; // a descendant's close, not this dialog's
141
+ * // ...
142
+ * });
143
+ * ```
121
144
  * @csspart base - Shoelace wrapper alias.
122
145
  * @csspart backdrop - The full-viewport scrim behind the panel; also carries `overlay`.
123
146
  * @csspart overlay - Shoelace alias on the backdrop.
@@ -275,13 +298,13 @@ export declare class LyraDialog extends LyraElement<LyraDialogEventMap> {
275
298
  hide(): Promise<void>;
276
299
  /**
277
300
  * Close the dialog and return focus to whatever had it before the dialog
278
- * opened. `reason` is forwarded as the `lr-dialog-close` detail --
301
+ * opened. `reason` is forwarded as the `lr-close` detail --
279
302
  * built-in triggers pass `'escape'`/`'backdrop'`/`'close-button'`; a
280
303
  * consumer's own close affordance (e.g. a footer Cancel button) should
281
304
  * call this directly with its own reason string, so every dismissal path
282
305
  * funnels through the same event instead of the consumer having to also
283
306
  * toggle `open` itself. `lr-hide` is emitted first and vetoing it stops
284
- * `lr-dialog-close` from being emitted at all.
307
+ * `lr-close` from being emitted at all.
285
308
  */
286
309
  close(reason?: DialogCloseReason): Promise<void>;
287
310
  private closeFrom;
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{activateOverlay,collectFocusableElements}from"../../../internal/overlay-manager.js";import{nextId}from"../../../internal/a11y.js";import{closeIcon}from"../../../internal/icons.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{animateRegistered}from"../../../internal/registered-animation.js";import{styles}from"./dialog.styles.js";import{LYRA_DEFAULT_close}from"../../../internal/default-strings.generated.js";const HEADING_SELECTOR='h1, h2, h3, h4, h5, h6, [role="heading"]';class LyraDialog extends LyraElement{constructor(){super(...arguments),this._open=!1,this.label="",this.headingLevel="3",this.closable=!0,this.withoutHeader=!1,this.noHeader=!1,this.withFooter=!1,this.accessibleLabel="",this.hostAriaLabel=null,this.lightDismiss=!1,this.hasFooterSlot=!1,this.hasLabelSlot=!1,this.hasHeaderActionsSlot=!1,this.headingObserverGeneration=0,this.transitionToken=0,this.transitionAnimations=[],this.headingId=nextId("dialog-heading"),this.externalModalDepth=0,this.modal={activateExternal:()=>{this.externalModalDepth++,this.externalModalDepth===1&&this.overlay?.suspend()},deactivateExternal:()=>{this.externalModalDepth!==0&&(this.externalModalDepth--,this.externalModalDepth===0&&this.open&&this.modalSurface&&(this.overlay?.resume(),queueMicrotask(()=>this.focusInitial())))}},this.onDefaultSlotChange=()=>{this.detectLightDomChrome()},this.onFooterSlotChange=e=>{this.hasFooterSlot=e.target.assignedElements({flatten:!0}).length>0},this.onBackdropClick=()=>{this.lightDismiss&&this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{const button=this.renderRoot.querySelector('[part~="close-button"]')??this;this.requestClose("close-button","close-button",button)}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close}}static{this.styles=[LyraElement.styles,styles]}get open(){return this._open}set open(next){const normalized=!!next;if(!this.coalesceOpenRequest(normalized)&&normalized!==this._open){if(!this.hasUpdated){this.applyOpenState(normalized);return}normalized?this.show():this.close("api")}}get modalSurface(){return!0}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer"),this.detectLightDomChrome()),changed.has("open")&&(this.flushPendingScrollLockRelease(),this.open?this.isConnected&&this.modalSurface&&this.activateOverlay():this.pendingScrollLockRelease=this.deactivateOverlay({deferScrollLockRelease:!0}))}flushPendingScrollLockRelease(){const release=this.pendingScrollLockRelease;this.pendingScrollLockRelease=void 0,release?.()}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.isConnected&&this.modalSurface&&(this.enterTopLayer(),this.focusInitial())}connectedCallback(){super.connectedCallback(),this.armHeadingObserver(),this.hasUpdated&&this.open&&this.modalSurface&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),this.enterTopLayer(),queueMicrotask(()=>this.focusInitial()))}disconnectedCallback(){this.resetHeadingObserver(),super.disconnectedCallback(),this.overlay?.suspend(),this.transitionToken++,this.flushPendingScrollLockRelease(),this.cancelTransitionAnimations(),this.removeAttribute("data-closing"),this.open&&queueMicrotask(()=>{if(!this.isConnected&&this.open){if(this.emit("lr-hide",{source:this},{cancelable:this.disconnectHideCancelable}).defaultPrevented){this.syncOpenAttribute();return}this.applyOpenState(!1),this.emit("lr-dialog-close","unmount"),this.emit("lr-after-hide")}})}adoptedCallback(){super.adoptedCallback(),this.resetHeadingObserver()}armHeadingObserver(){const ownerDocument=this.ownerDocument;if(!this.isConnected||this.headingObserver&&this.headingObserverDocument===ownerDocument)return;this.resetHeadingObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.headingObserverGeneration,observer=new MutationObserverCtor(()=>{this.headingObserver!==observer||this.headingObserverDocument!==ownerDocument||this.headingObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.detectLightDomChrome()});this.headingObserver=observer,this.headingObserverDocument=ownerDocument,observer.observe(this,{childList:!0,characterData:!0,subtree:!0})}resetHeadingObserver(){this.headingObserverGeneration+=1,this.headingObserver?.disconnect(),this.headingObserver=void 0,this.headingObserverDocument=void 0}get disconnectHideCancelable(){return!1}detectLightDomChrome(){const children=Array.from(this.children),heading=children.find(el=>el.getAttribute("slot")===null&&el.matches(HEADING_SELECTOR));this.headingText=heading?.textContent?.trim()||void 0,this.hasLabelSlot=children.some(el=>el.getAttribute("slot")==="label"),this.hasHeaderActionsSlot=children.some(el=>el.getAttribute("slot")==="header-actions")}show(){if(this.coalesceOpenRequest(!0)||this._open)return Promise.resolve();this.beginOpenRequest(!0);const prevented=this.emit("lr-show",null,{cancelable:!0}).defaultPrevented,superseded=this.openRequestWasSuperseded(!0);return this.finishOpenRequest(),prevented||superseded?(this.syncOpenAttribute(),Promise.resolve()):(this.cancelTransitionAnimations(),this.removeAttribute("data-closing"),this.applyOpenState(!0),this.settleTransition("lr-after-show"))}hide(){return this.close("api")}close(reason="api"){return this.closeFrom(reason,this)}closeFrom(reason,source){return this.coalesceOpenRequest(!1)||!this._open?Promise.resolve():(this.beginOpenRequest(!1),this.emit("lr-hide",{source},{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)?(this.finishOpenRequest(),this.syncOpenAttribute(),Promise.resolve()):this.emit("lr-dialog-close",reason,{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)?(this.finishOpenRequest(),this.syncOpenAttribute(),Promise.resolve()):(this.finishOpenRequest(),this.cancelTransitionAnimations(),this.isConnected&&this.setAttribute("data-closing",""),this.applyOpenState(!1),this.settleTransition("lr-after-hide")))}coalesceOpenRequest(next){return this.openRequestTarget===void 0?!1:(this.openRequestDuringPreflight=next,!0)}beginOpenRequest(next){this.openRequestTarget=next,this.openRequestDuringPreflight=void 0}openRequestWasSuperseded(next){return this.openRequestDuringPreflight!==void 0&&this.openRequestDuringPreflight!==next}finishOpenRequest(){this.openRequestTarget=void 0,this.openRequestDuringPreflight=void 0}applyOpenState(next){const old=this._open;this._open=next,next&&(this.initialFocusDecision=void 0),this.requestUpdate("open",old)}syncOpenAttribute(){this.toggleAttribute("open",this._open)}panelAnimationName(showing){return showing?"dialog.show":"dialog.hide"}overlayAnimationName(showing){return showing?"dialog.overlay.show":"dialog.overlay.hide"}panelAnimationSpec(showing){const offset="translateY(calc(-1 * var(--lr-size-0-5rem)))";return{keyframes:showing?[{opacity:0,transform:offset},{opacity:1,transform:"translateY(0)"}]:[{opacity:1,transform:"translateY(0)"},{opacity:0,transform:offset}],durationProperties:[showing?"--show-duration":"--hide-duration","--lr-dialog-panel-duration","--lr-duration-base"],easingProperties:["--lr-easing-standard"]}}overlayAnimationSpec(showing){return{keyframes:showing?[{opacity:0},{opacity:1}]:[{opacity:1},{opacity:0}],durationProperties:[showing?"--show-duration":"--hide-duration","--lr-dialog-backdrop-duration","--lr-duration-fast"],easingProperties:["--lr-easing-standard"]}}cancelTransitionAnimations(){for(const animation of this.transitionAnimations)animation.cancel();this.transitionAnimations=[]}async settleTransition(event){const token=++this.transitionToken;if(await this.updateComplete,this.transitionToken===token){if(this.isConnected){const root=this.renderRoot,panel=root.querySelector('[part~="panel"]'),backdrop=root.querySelector('[part~="backdrop"]'),showing=event==="lr-after-show",animations=[panel?animateRegistered(this,panel,this.panelAnimationName(showing),this.effectiveDirection,this.panelAnimationSpec(showing)):void 0,this.modalSurface&&backdrop?animateRegistered(this,backdrop,this.overlayAnimationName(showing),this.effectiveDirection,this.overlayAnimationSpec(showing)):void 0].filter(animation=>animation!==void 0);if(this.transitionAnimations=animations,await Promise.all(animations.map(animation=>animation.finished.catch(()=>{}))),this.transitionToken!==token)return;this.cancelTransitionAnimations()}event==="lr-after-hide"&&(this.removeAttribute("data-closing"),this.leaveTopLayer(),this.flushPendingScrollLockRelease()),this.emit(event)}}enterTopLayer(){if(!(!this.isConnected||typeof this.showPopover!="function")){this.getAttribute("popover")!=="manual"&&this.setAttribute("popover","manual");try{this.isTopLayer()||this.showPopover()}catch{}}}leaveTopLayer(){if(typeof this.hidePopover=="function")try{this.isTopLayer()&&this.hidePopover()}catch{}}isTopLayer(){try{return this.matches(":popover-open")}catch{return!1}}requestClose(source,reason,sourceElement){this.emit("lr-request-close",{source},{cancelable:!0}).defaultPrevented||this.closeFrom(reason,sourceElement)}focusInitial(){this.overlay?.focusInitial()}activateOverlay(){!this.isConnected||this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part~="panel"]')??null,onEscape:()=>{const panel=this.renderRoot.querySelector('[part~="panel"]')??this;this.requestClose("keyboard","escape",panel)},onBackdrop:()=>{const backdrop=this.renderRoot.querySelector('[part~="backdrop"]')??this;this.requestClose("overlay","backdrop",backdrop)},preferredInitialFocus:()=>{const panel=this.renderRoot.querySelector('[part~="panel"]'),body=this.renderRoot.querySelector('[part="body"]'),stops=body?collectFocusableElements(body):[];return stops.find(stop=>stop!==body)??stops[0]??panel},beforeInitialFocus:()=>(this.initialFocusDecision===void 0&&(this.initialFocusDecision=!this.emit("lr-initial-focus",null,{cancelable:!0}).defaultPrevented),this.initialFocusDecision),lockScroll:!0,suspendWhenUnrendered:!0}),this.externalModalDepth>0&&this.overlay.suspend())}deactivateOverlay(options){const overlay=this.overlay;return this.overlay=void 0,overlay?.deactivate(options)}render(){const suppressHeader=this.withoutHeader||this.noHeader,renderHeading=!suppressHeader&&!this.headingText&&(this.hasLabelSlot||this.label.length>0||!!this.heading),hasHostName=this.hostAriaLabel!==null,explicitName=hasHostName?this.hostAriaLabel:this.accessibleLabel||this.headingText,hasExplicitName=hasHostName||!!explicitName,useHeadingForName=!hasExplicitName&&renderHeading,showHeader=!suppressHeader&&(renderHeading||this.hasHeaderActionsSlot||this.closable),headingLevel=resolveHeadingLevel(this.headingLevel);return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{activateOverlay,collectFocusableElements}from"../../../internal/overlay-manager.js";import{nextId}from"../../../internal/a11y.js";import{closeIcon}from"../../../internal/icons.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{animateRegistered}from"../../../internal/registered-animation.js";import{styles}from"./dialog.styles.js";import{LYRA_DEFAULT_close}from"../../../internal/default-strings.generated.js";const HEADING_SELECTOR='h1, h2, h3, h4, h5, h6, [role="heading"]';class LyraDialog extends LyraElement{constructor(){super(...arguments),this._open=!1,this.label="",this.headingLevel="3",this.closable=!0,this.withoutHeader=!1,this.noHeader=!1,this.withFooter=!1,this.accessibleLabel="",this.hostAriaLabel=null,this.lightDismiss=!1,this.hasFooterSlot=!1,this.hasLabelSlot=!1,this.hasHeaderActionsSlot=!1,this.headingObserverGeneration=0,this.transitionToken=0,this.transitionAnimations=[],this.headingId=nextId("dialog-heading"),this.externalModalDepth=0,this.modal={activateExternal:()=>{this.externalModalDepth++,this.externalModalDepth===1&&this.overlay?.suspend()},deactivateExternal:()=>{this.externalModalDepth!==0&&(this.externalModalDepth--,this.externalModalDepth===0&&this.open&&this.modalSurface&&(this.overlay?.resume(),queueMicrotask(()=>this.focusInitial())))}},this.onDefaultSlotChange=()=>{this.detectLightDomChrome()},this.onFooterSlotChange=e=>{this.hasFooterSlot=e.target.assignedElements({flatten:!0}).length>0},this.onBackdropClick=()=>{this.lightDismiss&&this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{const button=this.renderRoot.querySelector('[part~="close-button"]')??this;this.requestClose("close-button","close-button",button)}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close}}static{this.styles=[LyraElement.styles,styles]}get open(){return this._open}set open(next){const normalized=!!next;if(!this.coalesceOpenRequest(normalized)&&normalized!==this._open){if(!this.hasUpdated){this.applyOpenState(normalized);return}normalized?this.show():this.close("api")}}get modalSurface(){return!0}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer"),this.detectLightDomChrome()),changed.has("open")&&(this.flushPendingScrollLockRelease(),this.open?this.isConnected&&this.modalSurface&&this.activateOverlay():this.pendingScrollLockRelease=this.deactivateOverlay({deferScrollLockRelease:!0}))}flushPendingScrollLockRelease(){const release=this.pendingScrollLockRelease;this.pendingScrollLockRelease=void 0,release?.()}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.isConnected&&this.modalSurface&&(this.enterTopLayer(),this.focusInitial())}connectedCallback(){super.connectedCallback(),this.armHeadingObserver(),this.hasUpdated&&this.open&&this.modalSurface&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),this.enterTopLayer(),queueMicrotask(()=>this.focusInitial()))}disconnectedCallback(){this.resetHeadingObserver(),super.disconnectedCallback(),this.overlay?.suspend(),this.transitionToken++,this.flushPendingScrollLockRelease(),this.cancelTransitionAnimations(),this.removeAttribute("data-closing"),this.open&&queueMicrotask(()=>{if(!this.isConnected&&this.open){if(this.emit("lr-hide",{source:this},{cancelable:this.disconnectHideCancelable}).defaultPrevented){this.syncOpenAttribute();return}this.applyOpenState(!1),this.emit("lr-close","unmount"),this.emit("lr-after-hide")}})}adoptedCallback(){super.adoptedCallback(),this.resetHeadingObserver()}armHeadingObserver(){const ownerDocument=this.ownerDocument;if(!this.isConnected||this.headingObserver&&this.headingObserverDocument===ownerDocument)return;this.resetHeadingObserver();const MutationObserverCtor=ownerDocument.defaultView?.MutationObserver;if(!MutationObserverCtor)return;const generation=this.headingObserverGeneration,observer=new MutationObserverCtor(()=>{this.headingObserver!==observer||this.headingObserverDocument!==ownerDocument||this.headingObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.detectLightDomChrome()});this.headingObserver=observer,this.headingObserverDocument=ownerDocument,observer.observe(this,{childList:!0,characterData:!0,subtree:!0})}resetHeadingObserver(){this.headingObserverGeneration+=1,this.headingObserver?.disconnect(),this.headingObserver=void 0,this.headingObserverDocument=void 0}get disconnectHideCancelable(){return!1}detectLightDomChrome(){const children=Array.from(this.children),heading=children.find(el=>el.getAttribute("slot")===null&&el.matches(HEADING_SELECTOR));this.headingText=heading?.textContent?.trim()||void 0,this.hasLabelSlot=children.some(el=>el.getAttribute("slot")==="label"),this.hasHeaderActionsSlot=children.some(el=>el.getAttribute("slot")==="header-actions")}show(){if(this.coalesceOpenRequest(!0)||this._open)return Promise.resolve();this.beginOpenRequest(!0);const prevented=this.emit("lr-show",null,{cancelable:!0}).defaultPrevented,superseded=this.openRequestWasSuperseded(!0);return this.finishOpenRequest(),prevented||superseded?(this.syncOpenAttribute(),Promise.resolve()):(this.cancelTransitionAnimations(),this.removeAttribute("data-closing"),this.applyOpenState(!0),this.settleTransition("lr-after-show"))}hide(){return this.close("api")}close(reason="api"){return this.closeFrom(reason,this)}closeFrom(reason,source){return this.coalesceOpenRequest(!1)||!this._open?Promise.resolve():(this.beginOpenRequest(!1),this.emit("lr-hide",{source},{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)?(this.finishOpenRequest(),this.syncOpenAttribute(),Promise.resolve()):this.emit("lr-close",reason,{cancelable:!0}).defaultPrevented||this.openRequestWasSuperseded(!1)?(this.finishOpenRequest(),this.syncOpenAttribute(),Promise.resolve()):(this.finishOpenRequest(),this.cancelTransitionAnimations(),this.isConnected&&this.setAttribute("data-closing",""),this.applyOpenState(!1),this.settleTransition("lr-after-hide")))}coalesceOpenRequest(next){return this.openRequestTarget===void 0?!1:(this.openRequestDuringPreflight=next,!0)}beginOpenRequest(next){this.openRequestTarget=next,this.openRequestDuringPreflight=void 0}openRequestWasSuperseded(next){return this.openRequestDuringPreflight!==void 0&&this.openRequestDuringPreflight!==next}finishOpenRequest(){this.openRequestTarget=void 0,this.openRequestDuringPreflight=void 0}applyOpenState(next){const old=this._open;this._open=next,next&&(this.initialFocusDecision=void 0),this.requestUpdate("open",old)}syncOpenAttribute(){this.toggleAttribute("open",this._open)}panelAnimationName(showing){return showing?"dialog.show":"dialog.hide"}overlayAnimationName(showing){return showing?"dialog.overlay.show":"dialog.overlay.hide"}panelAnimationSpec(showing){const offset="translateY(calc(-1 * var(--lr-size-0-5rem)))";return{keyframes:showing?[{opacity:0,transform:offset},{opacity:1,transform:"translateY(0)"}]:[{opacity:1,transform:"translateY(0)"},{opacity:0,transform:offset}],durationProperties:[showing?"--show-duration":"--hide-duration","--lr-dialog-panel-duration","--lr-duration-base"],easingProperties:["--lr-easing-standard"]}}overlayAnimationSpec(showing){return{keyframes:showing?[{opacity:0},{opacity:1}]:[{opacity:1},{opacity:0}],durationProperties:[showing?"--show-duration":"--hide-duration","--lr-dialog-backdrop-duration","--lr-duration-fast"],easingProperties:["--lr-easing-standard"]}}cancelTransitionAnimations(){for(const animation of this.transitionAnimations)animation.cancel();this.transitionAnimations=[]}async settleTransition(event){const token=++this.transitionToken;if(await this.updateComplete,this.transitionToken===token){if(this.isConnected){const root=this.renderRoot,panel=root.querySelector('[part~="panel"]'),backdrop=root.querySelector('[part~="backdrop"]'),showing=event==="lr-after-show",animations=[panel?animateRegistered(this,panel,this.panelAnimationName(showing),this.effectiveDirection,this.panelAnimationSpec(showing)):void 0,this.modalSurface&&backdrop?animateRegistered(this,backdrop,this.overlayAnimationName(showing),this.effectiveDirection,this.overlayAnimationSpec(showing)):void 0].filter(animation=>animation!==void 0);if(this.transitionAnimations=animations,await Promise.all(animations.map(animation=>animation.finished.catch(()=>{}))),this.transitionToken!==token)return;this.cancelTransitionAnimations()}event==="lr-after-hide"&&(this.removeAttribute("data-closing"),this.leaveTopLayer(),this.flushPendingScrollLockRelease()),this.emit(event)}}enterTopLayer(){if(!(!this.isConnected||typeof this.showPopover!="function")){this.getAttribute("popover")!=="manual"&&this.setAttribute("popover","manual");try{this.isTopLayer()||this.showPopover()}catch{}}}leaveTopLayer(){if(typeof this.hidePopover=="function")try{this.isTopLayer()&&this.hidePopover()}catch{}}isTopLayer(){try{return this.matches(":popover-open")}catch{return!1}}requestClose(source,reason,sourceElement){this.emit("lr-request-close",{source},{cancelable:!0}).defaultPrevented||this.closeFrom(reason,sourceElement)}focusInitial(){this.overlay?.focusInitial()}activateOverlay(){!this.isConnected||this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part~="panel"]')??null,onEscape:()=>{const panel=this.renderRoot.querySelector('[part~="panel"]')??this;this.requestClose("keyboard","escape",panel)},onBackdrop:()=>{const backdrop=this.renderRoot.querySelector('[part~="backdrop"]')??this;this.requestClose("overlay","backdrop",backdrop)},preferredInitialFocus:()=>{const panel=this.renderRoot.querySelector('[part~="panel"]'),body=this.renderRoot.querySelector('[part="body"]'),stops=body?collectFocusableElements(body):[];return stops.find(stop=>stop!==body)??stops[0]??panel},beforeInitialFocus:()=>(this.initialFocusDecision===void 0&&(this.initialFocusDecision=!this.emit("lr-initial-focus",null,{cancelable:!0}).defaultPrevented),this.initialFocusDecision),lockScroll:!0,suspendWhenUnrendered:!0}),this.externalModalDepth>0&&this.overlay.suspend())}deactivateOverlay(options){const overlay=this.overlay;return this.overlay=void 0,overlay?.deactivate(options)}render(){const suppressHeader=this.withoutHeader||this.noHeader,renderHeading=!suppressHeader&&!this.headingText&&(this.hasLabelSlot||this.label.length>0||!!this.heading),hasHostName=this.hostAriaLabel!==null,explicitName=hasHostName?this.hostAriaLabel:this.accessibleLabel||this.headingText,hasExplicitName=hasHostName||!!explicitName,useHeadingForName=!hasExplicitName&&renderHeading,showHeader=!suppressHeader&&(renderHeading||this.hasHeaderActionsSlot||this.closable),headingLevel=resolveHeadingLevel(this.headingLevel);return html`
2
2
  <div part="base">
3
3
  <div part="backdrop overlay" @click=${this.onBackdropClick}></div>
4
4
  <div