@slotted/angular 0.1.0-beta.0 → 0.1.0-beta.10

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 (588) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/alert.json +7 -1
  4. package/docs/alert.md +3 -3
  5. package/docs/app-shell.examples.md +1 -1
  6. package/docs/app-shell.json +5 -5
  7. package/docs/app-shell.md +2 -2
  8. package/docs/avatar.json +22 -1
  9. package/docs/avatar.md +5 -3
  10. package/docs/badge.json +7 -1
  11. package/docs/badge.md +3 -3
  12. package/docs/button-group.json +2 -0
  13. package/docs/button-group.md +1 -1
  14. package/docs/button.json +51 -11
  15. package/docs/button.md +10 -6
  16. package/docs/calendar.json +8 -1
  17. package/docs/calendar.md +1 -0
  18. package/docs/cascader.json +1 -0
  19. package/docs/cascader.md +1 -1
  20. package/docs/chart.examples.md +1 -1
  21. package/docs/chart.json +10 -1
  22. package/docs/chart.md +3 -2
  23. package/docs/checkbox.json +7 -0
  24. package/docs/checkbox.md +1 -0
  25. package/docs/code-block.json +92 -92
  26. package/docs/code-block.md +69 -69
  27. package/docs/combobox.json +1 -0
  28. package/docs/combobox.md +1 -1
  29. package/docs/currency-field.json +40 -1
  30. package/docs/currency-field.md +5 -1
  31. package/docs/data-grid.examples.md +2 -2
  32. package/docs/data-grid.json +24 -7
  33. package/docs/data-grid.md +1 -1
  34. package/docs/data-grid.props.md +6 -4
  35. package/docs/data-list.json +2 -1
  36. package/docs/data-list.md +1 -1
  37. package/docs/date-field.json +9 -1
  38. package/docs/date-field.md +3 -2
  39. package/docs/date-picker.examples.md +36 -0
  40. package/docs/date-picker.json +20 -5
  41. package/docs/date-picker.md +5 -4
  42. package/docs/datetime-field.json +1 -0
  43. package/docs/datetime-field.md +1 -1
  44. package/docs/dialog.examples.md +158 -136
  45. package/docs/dialog.json +35 -11
  46. package/docs/dialog.md +4 -2
  47. package/docs/dialog.props.md +1 -1
  48. package/docs/drawer.json +5 -0
  49. package/docs/drawer.md +1 -0
  50. package/docs/entity-picker.json +19 -4
  51. package/docs/entity-picker.md +8 -6
  52. package/docs/event-calendar.json +7 -0
  53. package/docs/event-calendar.md +1 -0
  54. package/docs/filter-bar.json +118 -118
  55. package/docs/filter-bar.md +79 -79
  56. package/docs/form.json +2 -1
  57. package/docs/form.md +1 -1
  58. package/docs/guidelines/README.md +27 -0
  59. package/docs/guidelines/async-feedback.md +129 -0
  60. package/docs/guidelines/browsing.md +74 -0
  61. package/docs/guidelines/builders.md +97 -0
  62. package/docs/guidelines/composition.md +143 -0
  63. package/docs/guidelines/conversations.md +59 -0
  64. package/docs/guidelines/errors-and-conflicts.md +71 -0
  65. package/docs/guidelines/forms.md +202 -0
  66. package/docs/guidelines/index.md +129 -0
  67. package/docs/guidelines/layout-alignment.md +95 -0
  68. package/docs/guidelines/ledgers.md +45 -0
  69. package/docs/guidelines/list-pages.md +206 -0
  70. package/docs/guidelines/overviews.md +76 -0
  71. package/docs/guidelines/own-elements.md +115 -0
  72. package/docs/guidelines/reading-permissions.md +55 -0
  73. package/docs/guidelines/record-pages.md +178 -0
  74. package/docs/guidelines/reports.md +123 -0
  75. package/docs/guidelines/shell-composition.md +94 -0
  76. package/docs/guidelines/workspaces.md +46 -0
  77. package/docs/icon.json +3 -1
  78. package/docs/icon.md +3 -3
  79. package/docs/index.md +12 -0
  80. package/docs/inline-message.json +14 -2
  81. package/docs/inline-message.md +4 -3
  82. package/docs/list-item.json +9 -1
  83. package/docs/list-item.md +3 -3
  84. package/docs/list.json +19 -1
  85. package/docs/list.md +3 -1
  86. package/docs/markdown.json +79 -79
  87. package/docs/markdown.md +65 -65
  88. package/docs/menu.json +12 -0
  89. package/docs/menu.md +2 -0
  90. package/docs/message.json +7 -1
  91. package/docs/message.md +3 -3
  92. package/docs/multi-select.json +1 -0
  93. package/docs/multi-select.md +1 -1
  94. package/docs/notification-center.json +4 -0
  95. package/docs/notification-center.md +2 -2
  96. package/docs/number-field.json +1 -0
  97. package/docs/number-field.md +1 -1
  98. package/docs/otp-input.json +1 -0
  99. package/docs/otp-input.md +1 -1
  100. package/docs/page-header.json +4 -3
  101. package/docs/page-header.md +2 -2
  102. package/docs/page.json +1 -0
  103. package/docs/page.md +1 -0
  104. package/docs/popover.json +1 -1
  105. package/docs/progress-indicator.json +4 -3
  106. package/docs/progress-indicator.md +4 -4
  107. package/docs/prompt-composer.json +41 -1
  108. package/docs/prompt-composer.md +5 -1
  109. package/docs/rating.json +5 -3
  110. package/docs/rating.md +5 -5
  111. package/docs/section.json +27 -15
  112. package/docs/section.md +11 -9
  113. package/docs/segmented-control.json +36 -12
  114. package/docs/segmented-control.md +17 -1
  115. package/docs/select.json +1 -0
  116. package/docs/select.md +1 -1
  117. package/docs/side-navigation.json +1 -0
  118. package/docs/side-navigation.md +1 -1
  119. package/docs/skills/build-own-element/SKILL.md +90 -0
  120. package/docs/skills/compose-screen/SKILL.md +95 -0
  121. package/docs/skills/index.md +9 -0
  122. package/docs/skills/review-screen/SKILL.md +77 -0
  123. package/docs/skills/theme-app/SKILL.md +87 -0
  124. package/docs/skills/waiting-states/SKILL.md +143 -0
  125. package/docs/sparkline.json +5 -2
  126. package/docs/sparkline.md +4 -4
  127. package/docs/split-button.json +4 -1
  128. package/docs/split-button.md +3 -3
  129. package/docs/stat-card.json +5 -1
  130. package/docs/stat-card.md +3 -3
  131. package/docs/table.examples.md +3 -3
  132. package/docs/table.json +85 -3
  133. package/docs/table.md +12 -1
  134. package/docs/tabs.json +17 -7
  135. package/docs/tabs.md +3 -2
  136. package/docs/tag.json +14 -4
  137. package/docs/tag.md +6 -6
  138. package/docs/tags-input.json +29 -2
  139. package/docs/tags-input.md +4 -1
  140. package/docs/text-field.json +2 -1
  141. package/docs/text-field.md +2 -2
  142. package/docs/textarea.json +1 -0
  143. package/docs/textarea.md +1 -1
  144. package/docs/time-field.json +1 -0
  145. package/docs/time-field.md +1 -1
  146. package/docs/timeline.json +138 -132
  147. package/docs/timeline.md +125 -125
  148. package/docs/toast.json +7 -1
  149. package/docs/toast.md +3 -3
  150. package/docs/toggle-group.json +14 -3
  151. package/docs/toggle-group.md +3 -3
  152. package/docs/toggle.json +12 -3
  153. package/docs/toggle.md +3 -3
  154. package/docs/tokens.md +467 -0
  155. package/docs/tour.json +1 -1
  156. package/docs/typography.json +4 -2
  157. package/docs/typography.md +4 -4
  158. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  159. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-action-bar.mjs +22 -11
  161. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  163. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-alert.mjs +18 -11
  165. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  167. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  169. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  171. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  173. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  175. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-badge.mjs +14 -10
  177. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  179. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  181. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-button.mjs +90 -29
  183. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  185. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-card.mjs +18 -16
  187. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  189. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-cascader.mjs +166 -66
  191. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-chart.mjs +53 -20
  193. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  195. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  197. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  199. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  201. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  203. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  205. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-combobox.mjs +112 -39
  207. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  209. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-container.mjs +6 -4
  211. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  213. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  215. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  217. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-data-grid.mjs +354 -113
  219. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  221. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  223. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  225. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  227. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  229. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  231. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  233. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  235. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  237. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  239. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-divider.mjs +7 -5
  241. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-drawer.mjs +53 -29
  243. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
  245. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  247. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  249. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-field.mjs +35 -15
  251. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
  253. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-form.mjs +18 -10
  255. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  257. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-grid.mjs +4 -2
  259. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  261. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  263. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-icon.mjs +6 -3
  265. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-image.mjs +13 -10
  267. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  269. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  271. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-inline.mjs +4 -2
  273. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  275. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-link.mjs +5 -3
  277. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  279. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-list.mjs +37 -22
  281. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  283. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  285. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  287. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-menu.mjs +51 -29
  289. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  291. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  293. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-message.mjs +113 -51
  295. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-multi-select.mjs +189 -87
  297. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  299. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  301. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  303. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  305. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-page-header.mjs +75 -45
  307. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-page.mjs +38 -10
  309. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  311. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-popover.mjs +32 -19
  313. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  315. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
  317. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-prose.mjs +14 -11
  319. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  321. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-rating.mjs +138 -82
  323. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  325. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  327. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  329. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-section.mjs +53 -18
  331. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  333. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-select.mjs +184 -94
  335. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  337. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  339. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-slider.mjs +31 -11
  341. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  343. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  345. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  347. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-stack.mjs +4 -2
  349. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  351. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  353. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  355. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-switch.mjs +15 -10
  357. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  359. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-table.mjs +243 -73
  361. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  363. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-tag.mjs +19 -12
  365. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  367. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  369. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  371. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  373. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  375. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  377. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  379. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-toast.mjs +43 -31
  381. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  383. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  385. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-toolbar.mjs +22 -11
  387. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  389. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  391. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-tour.mjs +47 -22
  393. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  395. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tree.mjs +74 -26
  397. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-typography.mjs +8 -4
  399. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-upload.mjs +125 -57
  401. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  403. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  405. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  406. package/package.json +3 -3
  407. package/types/slotted-angular-accordion.d.ts.map +1 -1
  408. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  409. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  410. package/types/slotted-angular-alert.d.ts +2 -2
  411. package/types/slotted-angular-alert.d.ts.map +1 -1
  412. package/types/slotted-angular-app-shell.d.ts +11 -3
  413. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  414. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  415. package/types/slotted-angular-attachment.d.ts +1 -1
  416. package/types/slotted-angular-attachment.d.ts.map +1 -1
  417. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  418. package/types/slotted-angular-avatar.d.ts +11 -3
  419. package/types/slotted-angular-avatar.d.ts.map +1 -1
  420. package/types/slotted-angular-badge.d.ts +1 -1
  421. package/types/slotted-angular-badge.d.ts.map +1 -1
  422. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  423. package/types/slotted-angular-button-group.d.ts +1 -1
  424. package/types/slotted-angular-button-group.d.ts.map +1 -1
  425. package/types/slotted-angular-button.d.ts +33 -13
  426. package/types/slotted-angular-button.d.ts.map +1 -1
  427. package/types/slotted-angular-calendar.d.ts +30 -2
  428. package/types/slotted-angular-calendar.d.ts.map +1 -1
  429. package/types/slotted-angular-card.d.ts.map +1 -1
  430. package/types/slotted-angular-carousel.d.ts.map +1 -1
  431. package/types/slotted-angular-cascader.d.ts.map +1 -1
  432. package/types/slotted-angular-chart.d.ts +10 -0
  433. package/types/slotted-angular-chart.d.ts.map +1 -1
  434. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  435. package/types/slotted-angular-checkbox.d.ts +7 -1
  436. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  437. package/types/slotted-angular-code-block.d.ts +1 -1
  438. package/types/slotted-angular-code-block.d.ts.map +1 -1
  439. package/types/slotted-angular-collapsible.d.ts +1 -1
  440. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  441. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  442. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  443. package/types/slotted-angular-combobox.d.ts +5 -1
  444. package/types/slotted-angular-combobox.d.ts.map +1 -1
  445. package/types/slotted-angular-command-palette.d.ts +10 -1
  446. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  447. package/types/slotted-angular-container.d.ts.map +1 -1
  448. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  449. package/types/slotted-angular-currency-field.d.ts +63 -15
  450. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  451. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  452. package/types/slotted-angular-data-grid.d.ts +49 -4
  453. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  454. package/types/slotted-angular-data-list.d.ts.map +1 -1
  455. package/types/slotted-angular-date-field.d.ts +11 -1
  456. package/types/slotted-angular-date-field.d.ts.map +1 -1
  457. package/types/slotted-angular-date-picker.d.ts +38 -12
  458. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  459. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  460. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  461. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  462. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  463. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  464. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  465. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  466. package/types/slotted-angular-description-list.d.ts.map +1 -1
  467. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  468. package/types/slotted-angular-dialog.d.ts +10 -3
  469. package/types/slotted-angular-dialog.d.ts.map +1 -1
  470. package/types/slotted-angular-divider.d.ts.map +1 -1
  471. package/types/slotted-angular-drawer.d.ts +7 -1
  472. package/types/slotted-angular-drawer.d.ts.map +1 -1
  473. package/types/slotted-angular-entity-picker.d.ts +63 -15
  474. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-event-calendar.d.ts +9 -2
  476. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  477. package/types/slotted-angular-field-group.d.ts.map +1 -1
  478. package/types/slotted-angular-field.d.ts.map +1 -1
  479. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  480. package/types/slotted-angular-form.d.ts.map +1 -1
  481. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  482. package/types/slotted-angular-grid.d.ts.map +1 -1
  483. package/types/slotted-angular-highlight.d.ts.map +1 -1
  484. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  485. package/types/slotted-angular-icon.d.ts +2 -2
  486. package/types/slotted-angular-icon.d.ts.map +1 -1
  487. package/types/slotted-angular-image.d.ts.map +1 -1
  488. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  489. package/types/slotted-angular-inline-message.d.ts +25 -25
  490. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  491. package/types/slotted-angular-inline.d.ts.map +1 -1
  492. package/types/slotted-angular-kbd.d.ts.map +1 -1
  493. package/types/slotted-angular-link.d.ts.map +1 -1
  494. package/types/slotted-angular-list-item.d.ts +1 -1
  495. package/types/slotted-angular-list-item.d.ts.map +1 -1
  496. package/types/slotted-angular-list.d.ts +42 -27
  497. package/types/slotted-angular-list.d.ts.map +1 -1
  498. package/types/slotted-angular-listbox.d.ts.map +1 -1
  499. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  500. package/types/slotted-angular-markdown.d.ts.map +1 -1
  501. package/types/slotted-angular-menu.d.ts +11 -2
  502. package/types/slotted-angular-menu.d.ts.map +1 -1
  503. package/types/slotted-angular-menubar.d.ts.map +1 -1
  504. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  505. package/types/slotted-angular-message.d.ts +1 -1
  506. package/types/slotted-angular-message.d.ts.map +1 -1
  507. package/types/slotted-angular-multi-select.d.ts +15 -1
  508. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  509. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  510. package/types/slotted-angular-notification-center.d.ts +1 -1
  511. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  512. package/types/slotted-angular-number-field.d.ts.map +1 -1
  513. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  514. package/types/slotted-angular-page-header.d.ts +4 -4
  515. package/types/slotted-angular-page-header.d.ts.map +1 -1
  516. package/types/slotted-angular-page.d.ts.map +1 -1
  517. package/types/slotted-angular-pagination.d.ts.map +1 -1
  518. package/types/slotted-angular-popover.d.ts.map +1 -1
  519. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  520. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  521. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  522. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  523. package/types/slotted-angular-prose.d.ts.map +1 -1
  524. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  525. package/types/slotted-angular-rating.d.ts +1 -1
  526. package/types/slotted-angular-rating.d.ts.map +1 -1
  527. package/types/slotted-angular-result-state.d.ts.map +1 -1
  528. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  529. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  530. package/types/slotted-angular-section.d.ts +11 -3
  531. package/types/slotted-angular-section.d.ts.map +1 -1
  532. package/types/slotted-angular-segmented-control.d.ts +15 -2
  533. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  534. package/types/slotted-angular-select.d.ts +12 -2
  535. package/types/slotted-angular-select.d.ts.map +1 -1
  536. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  537. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  538. package/types/slotted-angular-slider.d.ts.map +1 -1
  539. package/types/slotted-angular-sparkline.d.ts +7 -1
  540. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  541. package/types/slotted-angular-split-button.d.ts +2 -2
  542. package/types/slotted-angular-split-button.d.ts.map +1 -1
  543. package/types/slotted-angular-splitter.d.ts.map +1 -1
  544. package/types/slotted-angular-stack.d.ts.map +1 -1
  545. package/types/slotted-angular-stat-card.d.ts +1 -1
  546. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  547. package/types/slotted-angular-status-indicator.d.ts +1 -1
  548. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  549. package/types/slotted-angular-stepper.d.ts +1 -1
  550. package/types/slotted-angular-stepper.d.ts.map +1 -1
  551. package/types/slotted-angular-switch.d.ts.map +1 -1
  552. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  553. package/types/slotted-angular-table.d.ts +63 -6
  554. package/types/slotted-angular-table.d.ts.map +1 -1
  555. package/types/slotted-angular-tabs.d.ts +3 -4
  556. package/types/slotted-angular-tabs.d.ts.map +1 -1
  557. package/types/slotted-angular-tag.d.ts +1 -1
  558. package/types/slotted-angular-tag.d.ts.map +1 -1
  559. package/types/slotted-angular-tags-input.d.ts +33 -1
  560. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  561. package/types/slotted-angular-text-field.d.ts.map +1 -1
  562. package/types/slotted-angular-textarea.d.ts.map +1 -1
  563. package/types/slotted-angular-theme.d.ts +1 -1
  564. package/types/slotted-angular-time-field.d.ts.map +1 -1
  565. package/types/slotted-angular-time-picker.d.ts +0 -1
  566. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  567. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  568. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  569. package/types/slotted-angular-timeline.d.ts +1 -1
  570. package/types/slotted-angular-timeline.d.ts.map +1 -1
  571. package/types/slotted-angular-toast.d.ts +3 -3
  572. package/types/slotted-angular-toast.d.ts.map +1 -1
  573. package/types/slotted-angular-toggle-group.d.ts +8 -2
  574. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  575. package/types/slotted-angular-toggle.d.ts +1 -1
  576. package/types/slotted-angular-toggle.d.ts.map +1 -1
  577. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  578. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  579. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  580. package/types/slotted-angular-tour.d.ts.map +1 -1
  581. package/types/slotted-angular-transfer.d.ts.map +1 -1
  582. package/types/slotted-angular-tree.d.ts.map +1 -1
  583. package/types/slotted-angular-typography.d.ts +1 -1
  584. package/types/slotted-angular-typography.d.ts.map +1 -1
  585. package/types/slotted-angular-upload.d.ts +2 -2
  586. package/types/slotted-angular-upload.d.ts.map +1 -1
  587. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  588. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-toast.mjs","sources":["../../toast/src/toast-defaults.ts","../../toast/src/toast.ts","../../toast/src/toast-parts.ts","../../toast/src/slotted-angular-toast.ts"],"sourcesContent":["import { createToastStore } from '@slotted/core/toast';\nimport type {\n ToastMessage,\n ToastPriority,\n ToastReason,\n ToastStatus,\n ToastStore,\n} from '@slotted/core/toast';\nimport { computed, DestroyRef, inject, Injectable, InjectionToken, signal } from '@angular/core';\nimport type { Signal, TemplateRef } from '@angular/core';\n\n/** Which of the five semantic colours the message speaks in. */\nexport type ToastTone = 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\n\n/**\n * How that colour is painted. `raised` is the neutral surface with the tone in\n * the mark, and it is the default: a message floats over content this family\n * does not own, and tinting that content's corner is not its decision.\n */\nexport type ToastVariant = 'raised' | 'soft' | 'solid';\n\n/** Which edge of the screen — or of the panel — the region sits at. */\nexport type ToastPlacement =\n 'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end';\n\n/**\n * Where the region is rendered. One axis with three values rather than two\n * booleans that admit a meaningless combination.\n */\nexport type ToastAttach = 'portal' | 'viewport' | 'inline';\n\n/** Whether the messages stand in a column or in a pile that opens. */\nexport type ToastStacking = 'list' | 'stack';\n\nexport type { ToastMessage, ToastPriority, ToastReason, ToastStatus, ToastStore };\n\n/**\n * What a message carries for rendering. Opaque to `@slotted/core/toast`, which\n * reads four fields out of the call and never looks in here.\n */\nexport interface ToastContent {\n title?: string;\n description?: string;\n tone?: ToastTone;\n variant?: ToastVariant;\n hideIcon?: boolean;\n dismissible?: boolean;\n progress?: boolean;\n /**\n * The controls that act on the message, and the whole body when a message\n * needs one. A `TemplateRef` rather than a string, because Angular's answer\n * to \"content the consumer writes\" is a template it renders per message —\n * lazily, and with the message in its context, which is what\n * `MAT_SNACK_BAR_DATA` gives a Material consumer by another route.\n */\n actions?: TemplateRef<{ $implicit: ToastMessage<ToastContent> }>;\n body?: TemplateRef<{ $implicit: ToastMessage<ToastContent> }>;\n /** Anything the consumer's own template reads. */\n data?: unknown;\n}\n\n/** Everything one call can say about a message. */\nexport interface ToastInput extends ToastContent {\n id?: string;\n /** Milliseconds on screen. `0` never expires. */\n duration?: number;\n /** How loudly the announcer says it. Never inferred from the tone. */\n priority?: ToastPriority;\n /** What a reader hears. Built from the title and the description when unstated. */\n announcement?: string;\n /** Waiting on a promise: it does not expire and it draws no countdown. */\n loading?: boolean;\n onStatusChange?: (status: ToastStatus | 'removed', message: ToastMessage<ToastContent>) => void;\n}\n\nexport interface ToastPromiseInput<Value> {\n loading: ToastInput;\n success: ToastInput | ((value: Value) => ToastInput);\n error: ToastInput | ((reason: unknown) => ToastInput);\n}\n\nexport interface ToastDefaults {\n placement: ToastPlacement;\n attach: ToastAttach;\n stacking: ToastStacking;\n tone: ToastTone;\n variant: ToastVariant;\n priority: ToastPriority;\n dismissible: boolean;\n swipe: boolean;\n progress: boolean;\n pauseOnHover: boolean;\n pauseWhenHidden: boolean;\n limit: number;\n duration: number;\n swipeThreshold: number;\n hotkey: string;\n}\n\n/**\n * The key that moves focus into the region. Five surveyed implementations ship\n * a shortcut and no two chose the same key; `F6` is the one two of them chose\n * for the reason that generalises — it is the landmark-navigation key.\n */\nexport const TOAST_HOTKEY = 'F6';\n\nconst FALLBACK: ToastDefaults = {\n placement: 'bottom-end',\n attach: 'portal',\n stacking: 'list',\n tone: 'accent',\n variant: 'raised',\n priority: 'polite',\n dismissible: true,\n swipe: true,\n progress: false,\n pauseOnHover: true,\n pauseWhenHidden: true,\n limit: 3,\n duration: 5000,\n swipeThreshold: 48,\n hotkey: TOAST_HOTKEY,\n};\n\nexport const TOAST_DEFAULTS = new InjectionToken<ToastDefaults>('slotted toast defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once where its messages appear and how long they\n * stay. A region or a message that states any of them still wins: an explicit\n * value is never overridden by the token. The region's name and the close\n * control's come from the language in force (`provideSlotted`).\n */\nexport function provideToastDefaults(defaults: Partial<ToastDefaults>) {\n return {\n provide: TOAST_DEFAULTS,\n useFactory: (): ToastDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a region renders as here, before it states anything of its own. */\nexport function injectToastDefaults(): ToastDefaults {\n return inject(TOAST_DEFAULTS);\n}\n\n/** What a reader hears when the call did not say. */\nfunction spokenFrom(input: ToastInput): string {\n if (input.announcement !== undefined) return input.announcement;\n return [input.title, input.description].filter(Boolean).join('. ');\n}\n\n/** The store's own fields, and the rest carried whole as the message's payload. */\nfunction split(input: ToastInput) {\n const { id, duration, priority, announcement, loading, onStatusChange, ...content } = input;\n void announcement;\n\n return {\n ...(id === undefined ? {} : { id }),\n ...(duration === undefined ? {} : { duration }),\n ...(priority === undefined ? {} : { priority }),\n ...(loading === undefined ? {} : { loading }),\n ...(onStatusChange === undefined ? {} : { onStatusChange }),\n announcement: spokenFrom(input),\n /* The one field the store reads out of the content: a message a reader is\n meant to act on is a message no clock may end. */\n action: content.actions !== undefined,\n data: content as ToastContent,\n };\n}\n\n/**\n * The imperative facade, and the observable model, which\n * `docs/component-features.md` §14 asks for in one sentence.\n *\n * It is `providedIn: 'root'` because that is the surface Angular Material's\n * consumers already know: a message is shown from an interceptor, a resolver or\n * an effect, none of which is anywhere near a component. The reads are signals,\n * so a zoneless application renders on them without a `markForCheck` anywhere.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlToastService {\n private readonly defaults = inject(TOAST_DEFAULTS);\n\n /** The model a region renders. Also the escape hatch for a page's own host. */\n readonly store: ToastStore<ToastContent> = createToastStore<ToastContent>({\n limit: this.defaults.limit,\n duration: this.defaults.duration,\n });\n\n private readonly snapshot = signal(this.store.snapshot);\n\n /** The messages on screen, newest first. */\n readonly visible: Signal<readonly ToastMessage<ToastContent>[]> = computed(\n () => this.snapshot().visible,\n );\n /** The messages waiting behind the limit. A page may say how many. */\n readonly queued: Signal<readonly ToastMessage<ToastContent>[]> = computed(\n () => this.snapshot().queued,\n );\n /** Whether every clock is held. */\n readonly paused: Signal<boolean> = computed(() => this.snapshot().paused);\n\n constructor() {\n const stop = this.store.subscribe(() => this.snapshot.set(this.store.snapshot));\n inject(DestroyRef).onDestroy(() => {\n stop();\n this.store.destroy();\n });\n }\n\n /** Adds a message, or updates the one that already carries this id. */\n show(input: ToastInput = {}): string {\n return this.store.show(split(input));\n }\n\n /** Changes a message already in the queue, keeping its place. */\n update(id: string, input: ToastInput): void {\n this.store.update(id, split(input));\n }\n\n /** Asks for a message to leave, carrying the reason. */\n dismiss(id: string, reason: ToastReason = 'programmatic'): void {\n this.store.dismiss(id, reason);\n }\n\n /** Asks for every message to leave at once — a route change, a sign-out. */\n clear(reason: ToastReason = 'clear'): void {\n this.store.clear(reason);\n }\n\n pauseAll(): void {\n this.store.pauseAll();\n }\n\n resumeAll(): void {\n this.store.resumeAll();\n }\n\n /** A message that follows a promise: loading, then success or failure. */\n promise<Value>(promise: Promise<Value>, input: ToastPromiseInput<Value>): Promise<Value> {\n return this.store.promise(promise, {\n loading: split(input.loading),\n success:\n typeof input.success === 'function'\n ? (value: Value) => split((input.success as (value: Value) => ToastInput)(value))\n : split(input.success),\n error:\n typeof input.error === 'function'\n ? (reason: unknown) => split((input.error as (reason: unknown) => ToastInput)(reason))\n : split(input.error),\n });\n }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n output,\n PLATFORM_ID,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlLoader } from '@slotted/angular/progress-indicator';\nimport type { GlyphName } from '@slotted/angular/icon';\nimport { createRemovalFocus } from '@slotted/core/focus';\nimport { type PartialMessages, toastMessages, type ToastMessages } from '@slotted/core/i18n';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport { createPresence } from '@slotted/core/presence';\nimport { createToastStore } from '@slotted/core/toast';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport type { ToastMessage, ToastStore } from '@slotted/core/toast';\n\nimport { injectToastDefaults, SlToastService } from './toast-defaults';\nimport type {\n ToastAttach,\n ToastContent,\n ToastPlacement,\n ToastStacking,\n ToastTone,\n} from './toast-defaults';\n\n/**\n * The glyph each tone draws: `specs/components/toast/contract.json` holds the\n * map, and the binding draws it because a stylesheet paints no icon.\n */\nconst TONE_GLYPH: Record<ToastTone, GlyphName | null> = {\n accent: 'circle-info',\n secondary: null,\n success: 'circle-check',\n warning: 'circle-alert',\n danger: 'circle-x',\n};\n\n/** Which way a message is dragged away, given the edge its region sits at. */\nfunction swipeAxis(placement: ToastPlacement, direction: string) {\n const block = placement.startsWith('top') ? -1 : 1;\n const rtl = direction === 'rtl';\n const inline = placement.endsWith('-start')\n ? rtl\n ? 1\n : -1\n : placement.endsWith('-end')\n ? rtl\n ? -1\n : 1\n : 0;\n return { block, inline };\n}\n\n/**\n * A message's own height, which is not the height it is drawn at: a closed\n * pile draws every message at the front one's height, and an opening one\n * animates it. The override is lifted for the one read, and not at all while\n * the height is moving, because lifting it then cancels the movement — the\n * last measurement stands until the transition ends and the observer fires\n * again. Chrome names the logical property's transition by its physical one.\n */\nfunction naturalHeight(item: HTMLElement): number {\n const moving =\n typeof item.getAnimations === 'function' &&\n item\n .getAnimations()\n .some((animation) =>\n ['block-size', 'height', 'width'].includes(\n (animation as Animation & { transitionProperty?: string }).transitionProperty ?? '',\n ),\n );\n if (moving) {\n const last = Number.parseFloat(item.style.getPropertyValue('--slotted-toast-height'));\n if (!Number.isNaN(last)) return last;\n }\n const inline = item.style.blockSize;\n item.style.blockSize = 'auto';\n const height = item.getBoundingClientRect().height;\n item.style.blockSize = inline;\n return height;\n}\n\n/**\n * One message: everything about it that is behaviour rather than markup.\n *\n * It is a directive rather than a component so a page that writes its own list\n * — from `SlToastService.visible()` and nothing else — gets the timer, the\n * exit, the swipe and the keyboard by putting one attribute on its own `li`.\n */\n@Directive({\n selector: 'li[slToastItem]',\n standalone: true,\n exportAs: 'slToastItem',\n host: {\n 'data-part': 'item',\n tabindex: '-1',\n '[attr.data-tone]': 'tone()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-loading]': \"message().loading ? '' : null\",\n '[attr.data-dragging]': \"dragging() ? '' : null\",\n '[style.--slotted-toast-index]': 'index()',\n '[style.--slotted-toast-duration]': 'durationValue()',\n '[style.--slotted-toast-swipe-x]': 'swipeX()',\n '[style.--slotted-toast-swipe-y]': 'swipeY()',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'onPointerUp($event)',\n '(pointercancel)': 'onPointerUp($event)',\n },\n})\nexport class SlToastItem {\n readonly message = input.required<ToastMessage<ToastContent>>({ alias: 'slToastItem' });\n /** How far this message is from the front of the pile. The stylesheet reads it. */\n readonly index = input(0, { alias: 'slToastItemIndex' });\n\n private readonly region = inject(SlToastRegion);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * The message's own injector, handed to a page's body template so the parts\n * inside it — the mark's glyph above all — read this message and not the\n * place the template was declared.\n */\n readonly injector = inject(Injector);\n\n private readonly status = signal<'entering' | 'open' | 'exiting' | 'unmounted'>('entering');\n protected readonly dragging = signal(false);\n private readonly offset = signal<{ x: number; y: number } | null>(null);\n private drag: { id: number; x: number; y: number } | null = null;\n\n readonly tone = computed(() => this.message().data.tone ?? this.region.defaults.tone);\n /**\n * The glyph the tone's mark draws: none while a promise is in flight, when\n * the mark is `progress-indicator`'s contained loader, and none for\n * `secondary`, a neutral message with no severity to state.\n */\n readonly mark = computed<GlyphName | null>(() =>\n this.message().loading ? null : TONE_GLYPH[this.tone()],\n );\n protected readonly variant = computed(\n () => this.message().data.variant ?? this.region.defaults.variant,\n );\n protected readonly isOpen = computed(() => this.status() === 'open');\n protected readonly durationValue = computed(() => {\n const duration = this.message().duration;\n return duration > 0 ? `${duration}ms` : null;\n });\n protected readonly swipeX = computed(() => {\n const value = this.offset();\n return value === null ? null : `${value.x}px`;\n });\n protected readonly swipeY = computed(() => {\n const value = this.offset();\n return value === null ? null : `${value.y}px`;\n });\n\n /**\n * `packages/core/src/presence` reads the exit the stylesheet declares and\n * completes it on a timer when the browser never reports one — a backgrounded\n * tab, a `display: none` ancestor. Ark guesses two hundred milliseconds\n * instead, and a message caught by any of those cases never leaves.\n */\n private readonly presence = createPresence({\n initialPresent: true,\n skipInitialAnimation: false,\n onStatusChange: (next) => this.status.set(next),\n onExitComplete: () => this.region.store.remove(this.message().id),\n });\n\n constructor() {\n this.presence.setNode(this.host.nativeElement);\n effect(() => {\n this.presence.request(this.message().status !== 'closing', 'programmatic');\n });\n inject(DestroyRef).onDestroy(() => this.presence.destroy());\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape') return;\n /* Only the message the keyboard is in: a page whose dialog is open keeps\n its own Escape. */\n event.stopPropagation();\n this.region.store.dismiss(this.message().id, 'escape');\n }\n\n protected onPointerDown(event: PointerEvent) {\n if (!this.region.resolvedSwipe() || event.button !== 0) return;\n /* A control inside the message is what the pointer came for. */\n if ((event.target as HTMLElement).closest('button, a, input, select, textarea')) return;\n this.drag = { id: event.pointerId, x: event.clientX, y: event.clientY };\n this.host.nativeElement.setPointerCapture(event.pointerId);\n }\n\n protected onPointerMove(event: PointerEvent) {\n const start = this.drag;\n if (!start || start.id !== event.pointerId) return;\n\n const element = this.host.nativeElement;\n const view = element.ownerDocument.defaultView;\n const axis = swipeAxis(\n this.region.resolvedPlacement(),\n view?.getComputedStyle(element).direction ?? 'ltr',\n );\n /* Only movement toward the edge the region sits at counts. Dragging a\n message into the page is not a gesture, it is a slip. */\n const x = axis.inline === 0 ? 0 : Math.max(0, (event.clientX - start.x) * axis.inline);\n const y = Math.max(0, (event.clientY - start.y) * axis.block);\n if (!this.dragging() && Math.max(x, y) < 2) return;\n\n this.dragging.set(true);\n this.offset.set({ x: x * axis.inline, y: y * axis.block });\n }\n\n protected onPointerUp(event: PointerEvent) {\n if (!this.drag || this.drag.id !== event.pointerId) return;\n const moved = this.offset();\n const distance = moved === null ? 0 : Math.max(Math.abs(moved.x), Math.abs(moved.y));\n\n this.drag = null;\n this.dragging.set(false);\n this.offset.set(null);\n const element = this.host.nativeElement;\n if (element.hasPointerCapture(event.pointerId)) element.releasePointerCapture(event.pointerId);\n\n /* Past the threshold the gesture was a dismissal; short of it the message\n springs back, which is the only way a reader can change their mind. */\n if (event.type !== 'pointercancel' && distance >= this.region.defaults.swipeThreshold) {\n this.region.store.dismiss(this.message().id, 'pointer');\n }\n }\n}\n\n/**\n * The place transient messages appear, and the only part of this family a page\n * renders directly.\n *\n * **It is a landmark, not a live region.** A live role on a box holding a Close\n * and an Undo is read with both buttons inside the sentence, and a region\n * created in the same task as its text is silent under ARIA 1.2 §6.4. The words\n * are spoken by `packages/core/src/live-announcer`; this element is what a\n * reader navigates to, with the hotkey or with their own landmark list.\n *\n * **It never takes focus.** The APG's Alert pattern is explicit that an\n * arriving message must not affect the keyboard, and the whole of this family's\n * claim on it is one key the reader presses.\n */\n@Component({\n selector: 'sl-toast-region',\n standalone: true,\n exportAs: 'slToastRegion',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlLoader, SlToastItem],\n template: `<section\n #layer\n data-part=\"root\"\n data-ui=\"toast\"\n role=\"region\"\n tabindex=\"-1\"\n [attr.aria-label]=\"t('label')\"\n [attr.data-attach]=\"resolvedAttach()\"\n [attr.data-expanded]=\"paused() ? '' : null\"\n [attr.data-placement]=\"resolvedPlacement()\"\n [attr.data-stacking]=\"resolvedStacking()\"\n [attr.data-swipe]=\"resolvedSwipe()\"\n [style.--slotted-toast-count]=\"visible().length\"\n [style.--slotted-toast-play-state]=\"paused() ? 'paused' : 'running'\"\n (focusin)=\"onFocus(true)\"\n (focusout)=\"onFocusOut($event)\"\n (pointerenter)=\"onPointer(true)\"\n (pointerleave)=\"onPointer(false)\"\n >\n <ol data-part=\"list\">\n @for (message of visible(); track message.id; let index = $index) {\n <li [slToastItem]=\"message\" [slToastItemIndex]=\"index\" #item=\"slToastItem\">\n @if (message.data.body; as body) {\n <ng-container\n [ngTemplateOutlet]=\"body\"\n [ngTemplateOutletContext]=\"{ $implicit: message }\"\n [ngTemplateOutletInjector]=\"item.injector\"\n />\n } @else {\n @if (!message.data.hideIcon && (message.loading || item.mark())) {\n <span aria-hidden=\"true\" data-part=\"icon\">\n @if (message.loading) {\n <div\n slLoader\n contained\n decorative\n [delay]=\"0\"\n [minDuration]=\"0\"\n [tone]=\"item.tone()\"\n ></div>\n } @else if (item.mark(); as glyph) {\n <span slIcon><svg slGlyph [name]=\"glyph\" solid></svg></span>\n }\n </span>\n }\n <div data-part=\"content\">\n @if (message.data.title) {\n <div data-part=\"title\">{{ message.data.title }}</div>\n }\n @if (message.data.description) {\n <p data-part=\"description\">{{ message.data.description }}</p>\n }\n </div>\n @if (message.data.dismissible ?? defaults.dismissible) {\n <button\n type=\"button\"\n data-part=\"close\"\n [attr.aria-label]=\"t('close')\"\n (click)=\"store.dismiss(message.id, 'dismiss')\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n @if (message.data.actions; as actions) {\n <div data-part=\"actions\">\n <ng-container\n [ngTemplateOutlet]=\"actions\"\n [ngTemplateOutletContext]=\"{ $implicit: message }\"\n />\n </div>\n }\n @if ((message.data.progress ?? defaults.progress) && message.duration > 0) {\n <div aria-hidden=\"true\" data-part=\"progress\"></div>\n }\n }\n </li>\n }\n </ol>\n </section>`,\n styleUrl: '../../../styles/src/toast/toast.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n})\nexport class SlToastRegion {\n /** Defaults to the token, then to `bottom-end`. */\n readonly placement = input<ToastPlacement | undefined>(undefined);\n /** Defaults to the token, then to `portal`. */\n readonly attach = input<ToastAttach | undefined>(undefined);\n /** Defaults to the token, then to `list`. */\n readonly stacking = input<ToastStacking | undefined>(undefined);\n readonly swipe = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly limit = input<number | undefined>(undefined);\n readonly duration = input<number | undefined>(undefined);\n readonly pauseOnHover = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly pauseWhenHidden = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** The key that moves focus into the region. Defaults to the token. */\n readonly hotkey = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the name\n * a reader finds the region by (`label`) and what each close control\n * announces (`close`).\n */\n readonly messages = input<PartialMessages<ToastMessages> | undefined>(undefined);\n /** The element a portalled region is placed inside. */\n readonly container = input<Element | null | undefined>(undefined);\n /** The queue the page owns. Present at all decides the mode for good. */\n readonly toasts = input<readonly ToastMessage<ToastContent>[] | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no `[(toasts)]`\n * because a two-way binding has one slot and cannot carry any of those — the\n * shape `alert` settled.\n */\n readonly toastsChange = output<ChangeRequest<readonly ToastMessage<ToastContent>[]>>();\n\n readonly defaults = injectToastDefaults();\n /** The family's words in the language in force, with this region's `messages` laid over them. */\n readonly t = injectMessages(toastMessages, this.messages);\n private readonly service = inject(SlToastService);\n private readonly layer = viewChild.required<ElementRef<HTMLElement>>('layer');\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /**\n * A region the page's own array feeds cannot share the injected service: the\n * mode is decided once, for the life of the store, and the service's store is\n * uncontrolled by construction.\n */\n private readonly ownStore: ToastStore<ToastContent> | null =\n this.toasts() === undefined\n ? null\n : createToastStore<ToastContent>({ toasts: this.toasts() ?? [] });\n\n readonly store: ToastStore<ToastContent> = this.ownStore ?? this.service.store;\n\n private readonly snapshot = signal(this.store.snapshot);\n\n readonly visible = computed(() => this.snapshot().visible);\n readonly queued = computed(() => this.snapshot().queued);\n readonly paused = computed(() => this.snapshot().paused);\n\n readonly resolvedPlacement = computed(() => this.placement() ?? this.defaults.placement);\n readonly resolvedAttach = computed(() => this.attach() ?? this.defaults.attach);\n readonly resolvedStacking = computed(() => this.stacking() ?? this.defaults.stacking);\n readonly resolvedSwipe = computed(() => this.swipe() ?? this.defaults.swipe);\n readonly resolvedHotkey = computed(() => this.hotkey() ?? this.defaults.hotkey);\n\n private readonly interacting = { pointer: false, focus: false };\n /** Where the keyboard was before the hotkey moved it into the region. */\n private cameFrom: HTMLElement | null = null;\n\n constructor() {\n const stop = this.store.subscribe(() => this.snapshot.set(this.store.snapshot));\n this.store.onRequest((request) => this.toastsChange.emit(request));\n\n effect(() => {\n this.store.configure({\n limit: this.limit() ?? this.defaults.limit,\n duration: this.duration() ?? this.defaults.duration,\n pauseOnHover: this.pauseOnHover() ?? this.defaults.pauseOnHover,\n pauseWhenHidden: this.pauseWhenHidden() ?? this.defaults.pauseWhenHidden,\n });\n });\n\n effect(() => {\n const owned = this.toasts();\n if (owned !== undefined) this.store.sync(owned);\n });\n\n /**\n * A portalled region inherits nothing from where it was written, so the\n * layer carries the theme, the scheme, the density and the direction of the\n * host it came from. Every surveyed implementation loses them.\n *\n * Only in the browser, as the focus effects below: the server's document is\n * not the page. The region is drawn in its host there, where hydration\n * expects the view's nodes, and nothing on the server holds focus.\n */\n effect((onCleanup) => {\n const section = this.layer().nativeElement;\n if (this.resolvedAttach() !== 'portal' || !this.browser) return;\n\n const handle = createPortalRoot({\n origin: this.host.nativeElement,\n container: this.container() ?? null,\n });\n handle.container?.append(section);\n onCleanup(() => {\n /* Back where Angular expects it before the layer goes, so the view's\n own teardown removes a node whose parent it still knows. */\n this.host.nativeElement.append(section);\n handle.release();\n });\n });\n\n /**\n * Where the keyboard goes when the message it was in is taken away — the\n * next message, then the element focus came from. Only React Aria answers\n * it at all, and only for its own close button.\n */\n effect((onCleanup) => {\n const section = this.layer().nativeElement;\n if (!this.browser) return;\n const handle = createRemovalFocus(section, {\n itemSelector: '[data-part=\"item\"]',\n fallback: () => this.cameFrom,\n });\n onCleanup(() => handle.destroy());\n });\n\n /** The one key this family binds, and the only thing that moves focus here. */\n effect((onCleanup) => {\n const section = this.layer().nativeElement;\n const doc = section.ownerDocument;\n const hotkey = this.resolvedHotkey();\n if (!this.browser) return;\n\n const onKeyDown = (event: KeyboardEvent) => {\n const parts = hotkey.toLowerCase().split('+');\n const key = parts.at(-1) ?? '';\n const wants = (name: string) => parts.includes(name);\n if (\n event.key.toLowerCase() !== key ||\n event.altKey !== wants('alt') ||\n event.ctrlKey !== wants('ctrl') ||\n event.shiftKey !== wants('shift') ||\n event.metaKey !== wants('meta')\n ) {\n return;\n }\n\n const first = section.querySelector<HTMLElement>('[data-part=\"item\"]');\n if (!first) return;\n event.preventDefault();\n const active = doc.activeElement;\n this.cameFrom = active instanceof HTMLElement && !section.contains(active) ? active : null;\n first.focus();\n };\n\n doc.addEventListener('keydown', onKeyDown);\n onCleanup(() => doc.removeEventListener('keydown', onKeyDown));\n });\n\n /**\n * Measured, and only for the pile. A column of messages that are not all\n * the same height cannot be opened from arithmetic alone.\n *\n * After render rather than as an `effect`: a component's effect runs\n * before its view is refreshed, so the messages that just arrived were not\n * in the list yet and the pile was never measured.\n */\n afterRenderEffect((onCleanup) => {\n const section = this.layer().nativeElement;\n if (this.resolvedStacking() !== 'stack') return;\n void this.visible();\n\n const list = section.querySelector<HTMLElement>('[data-part=\"list\"]');\n const view = section.ownerDocument.defaultView;\n if (!list || !view || typeof view.ResizeObserver !== 'function') return;\n\n const measure = () => {\n const items = [...list.querySelectorAll<HTMLElement>('[data-part=\"item\"]')];\n const gap = Number.parseFloat(view.getComputedStyle(list).rowGap) || 0;\n let offset = 0;\n items.forEach((item, index) => {\n const height = naturalHeight(item);\n item.style.setProperty('--slotted-toast-height', `${height}px`);\n item.style.setProperty('--slotted-toast-stack-offset', `${offset}px`);\n if (index === 0) section.style.setProperty('--slotted-toast-front-height', `${height}px`);\n offset += height + gap;\n });\n /* The open pile's whole height, so its gaps are the region's. */\n section.style.setProperty('--slotted-toast-stack-height', `${Math.max(0, offset - gap)}px`);\n };\n\n const observer = new view.ResizeObserver(measure);\n for (const item of list.querySelectorAll('[data-part=\"item\"]')) observer.observe(item);\n measure();\n onCleanup(() => observer.disconnect());\n });\n\n inject(DestroyRef).onDestroy(() => {\n stop();\n this.ownStore?.destroy();\n });\n }\n\n /** Sends the keyboard to the newest message. The family never does it alone. */\n focus() {\n this.layer().nativeElement.querySelector<HTMLElement>('[data-part=\"item\"]')?.focus();\n }\n\n protected onPointer(inside: boolean) {\n this.interacting.pointer = inside;\n this.report();\n }\n\n protected onFocus(inside: boolean) {\n this.interacting.focus = inside;\n this.report();\n }\n\n protected onFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.layer().nativeElement.contains(next)) return;\n this.interacting.focus = false;\n this.report();\n }\n\n private report() {\n this.store.setInteracting(this.interacting.pointer || this.interacting.focus);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, Directive, inject } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlLoader } from '@slotted/angular/progress-indicator';\n\nimport { SlToastItem } from './toast';\n\n/**\n * The parts, for a page that writes its own message body inside\n * `<ng-template slToastBody>` rather than taking the family's.\n *\n * They carry the part name and nothing else: the geometry, the tone and the\n * states are the item's and the region's, and a directive that repeated any of\n * them would be a second place to change them. The two that draw a glyph read\n * it from the item they sit in.\n */\n\n/**\n * The tone's mark, or the page's own. Content the page writes replaces it;\n * with none, the item's glyph is drawn, `progress-indicator`'s contained\n * loader while the message waits, and nothing for `secondary`.\n */\n@Component({\n selector: '[slToastIcon]',\n standalone: true,\n exportAs: 'slToastIcon',\n imports: [SlGlyph, SlIcon, SlLoader],\n template: `<ng-content>\n @if (loading()) {\n <div slLoader contained decorative [delay]=\"0\" [minDuration]=\"0\" [tone]=\"tone()\"></div>\n } @else if (mark(); as glyph) {\n <span slIcon><svg slGlyph [name]=\"glyph\" solid></svg></span>\n }\n </ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'data-part': 'icon', 'aria-hidden': 'true' },\n})\nexport class SlToastIcon {\n private readonly item = inject(SlToastItem, { optional: true });\n\n /* Outside an item there is no tone, and the default tone's glyph stands. */\n protected readonly mark = computed(() => (this.item === null ? 'circle-info' : this.item.mark()));\n protected readonly loading = computed(() => this.item?.message().loading ?? false);\n protected readonly tone = computed(() => this.item?.tone() ?? 'accent');\n}\n\n/** The words, and the one column that is allowed to shrink. */\n@Directive({\n selector: '[slToastContent]',\n standalone: true,\n exportAs: 'slToastContent',\n host: { 'data-part': 'content' },\n})\nexport class SlToastContent {}\n\n/**\n * The message's name. Written on the page's own element, and not a heading: a\n * message that is gone in five seconds is not a section of the document.\n */\n@Directive({\n selector: '[slToastTitle]',\n standalone: true,\n exportAs: 'slToastTitle',\n host: { 'data-part': 'title' },\n})\nexport class SlToastTitle {}\n\n/** The message. Written on a `p`, which is what a sentence of prose is. */\n@Directive({\n selector: '[slToastDescription]',\n standalone: true,\n exportAs: 'slToastDescription',\n host: { 'data-part': 'description' },\n})\nexport class SlToastDescription {}\n\n/**\n * The controls that act on the message. What goes in is the page's own\n * buttons: `button` already owns what a button is.\n */\n@Directive({\n selector: '[slToastActions]',\n standalone: true,\n exportAs: 'slToastActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlToastActions {}\n\n/** The control that puts the message away. A real button with a real name. */\n@Component({\n selector: 'button[slToastClose]',\n standalone: true,\n exportAs: 'slToastClose',\n imports: [SlGlyph, SlIcon],\n /* The cross is drawn unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"x\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'data-part': 'close', type: 'button' },\n})\nexport class SlToastClose {}\n\n/** How much of the duration is left, drawn from the number the timer reads. */\n@Directive({\n selector: '[slToastProgress]',\n standalone: true,\n exportAs: 'slToastProgress',\n host: { 'data-part': 'progress', 'aria-hidden': 'true' },\n})\nexport class SlToastProgress {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-toast.mjs","sources":["../../toast/src/toast-defaults.ts","../../toast/src/toast.ts","../../toast/src/toast-parts.ts","../../toast/src/slotted-angular-toast.ts"],"sourcesContent":["import { createToastStore } from '@slotted/core/toast';\nimport type {\n ToastMessage,\n ToastPriority,\n ToastReason,\n ToastStatus,\n ToastStore,\n} from '@slotted/core/toast';\nimport { computed, DestroyRef, inject, Injectable, InjectionToken, signal } from '@angular/core';\nimport type { Signal, TemplateRef } from '@angular/core';\n\n/** Which of the five semantic colours the message speaks in. */\nexport type ToastTone = 'accent' | 'secondary' | 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * How that colour is painted. `raised` is the neutral surface with the tone in\n * the mark, and it is the default: a message floats over content this family\n * does not own, and tinting that content's corner is not its decision.\n */\nexport type ToastVariant = 'raised' | 'soft' | 'solid';\n\n/** Which edge of the screen — or of the panel — the region sits at. */\nexport type ToastPlacement =\n 'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end';\n\n/**\n * Where the region is rendered. One axis with three values rather than two\n * booleans that admit a meaningless combination.\n */\nexport type ToastAttach = 'portal' | 'viewport' | 'inline';\n\n/** Whether the messages stand in a column or in a pile that opens. */\nexport type ToastStacking = 'list' | 'stack';\n\nexport type { ToastMessage, ToastPriority, ToastReason, ToastStatus, ToastStore };\n\n/**\n * What a message carries for rendering. Opaque to `@slotted/core/toast`, which\n * reads four fields out of the call and never looks in here.\n */\nexport interface ToastContent {\n title?: string;\n description?: string;\n tone?: ToastTone;\n variant?: ToastVariant;\n hideIcon?: boolean;\n dismissible?: boolean;\n progress?: boolean;\n /**\n * The controls that act on the message, and the whole body when a message\n * needs one. A `TemplateRef` rather than a string, because Angular's answer\n * to \"content the consumer writes\" is a template it renders per message —\n * lazily, and with the message in its context, which is what\n * `MAT_SNACK_BAR_DATA` gives a Material consumer by another route.\n */\n actions?: TemplateRef<{ $implicit: ToastMessage<ToastContent> }>;\n body?: TemplateRef<{ $implicit: ToastMessage<ToastContent> }>;\n /** Anything the consumer's own template reads. */\n data?: unknown;\n}\n\n/** Everything one call can say about a message. */\nexport interface ToastInput extends ToastContent {\n id?: string;\n /** Milliseconds on screen. `0` never expires. */\n duration?: number;\n /** How loudly the announcer says it. Never inferred from the tone. */\n priority?: ToastPriority;\n /** What a reader hears. Built from the title and the description when unstated. */\n announcement?: string;\n /** Waiting on a promise: it does not expire and it draws no countdown. */\n loading?: boolean;\n onStatusChange?: (status: ToastStatus | 'removed', message: ToastMessage<ToastContent>) => void;\n}\n\nexport interface ToastPromiseInput<Value> {\n loading: ToastInput;\n success: ToastInput | ((value: Value) => ToastInput);\n error: ToastInput | ((reason: unknown) => ToastInput);\n}\n\nexport interface ToastDefaults {\n placement: ToastPlacement;\n attach: ToastAttach;\n stacking: ToastStacking;\n tone: ToastTone;\n variant: ToastVariant;\n priority: ToastPriority;\n dismissible: boolean;\n swipe: boolean;\n progress: boolean;\n pauseOnHover: boolean;\n pauseWhenHidden: boolean;\n limit: number;\n duration: number;\n swipeThreshold: number;\n hotkey: string;\n}\n\n/**\n * The key that moves focus into the region. Five surveyed implementations ship\n * a shortcut and no two chose the same key; `F6` is the one two of them chose\n * for the reason that generalises — it is the landmark-navigation key.\n */\nexport const TOAST_HOTKEY = 'F6';\n\nconst FALLBACK: ToastDefaults = {\n placement: 'bottom-end',\n attach: 'portal',\n stacking: 'list',\n tone: 'accent',\n variant: 'raised',\n priority: 'polite',\n dismissible: true,\n swipe: true,\n progress: false,\n pauseOnHover: true,\n pauseWhenHidden: true,\n limit: 3,\n duration: 5000,\n swipeThreshold: 48,\n hotkey: TOAST_HOTKEY,\n};\n\nexport const TOAST_DEFAULTS = new InjectionToken<ToastDefaults>('slotted toast defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once where its messages appear and how long they\n * stay. A region or a message that states any of them still wins: an explicit\n * value is never overridden by the token. The region's name and the close\n * control's come from the language in force (`provideSlotted`).\n */\nexport function provideToastDefaults(defaults: Partial<ToastDefaults>) {\n return {\n provide: TOAST_DEFAULTS,\n useFactory: (): ToastDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a region renders as here, before it states anything of its own. */\nexport function injectToastDefaults(): ToastDefaults {\n return inject(TOAST_DEFAULTS);\n}\n\n/** What a reader hears when the call did not say. */\nfunction spokenFrom(input: ToastInput): string {\n if (input.announcement !== undefined) return input.announcement;\n return [input.title, input.description].filter(Boolean).join('. ');\n}\n\n/** The store's own fields, and the rest carried whole as the message's payload. */\nfunction split(input: ToastInput) {\n const { id, duration, priority, announcement, loading, onStatusChange, ...content } = input;\n void announcement;\n\n return {\n ...(id === undefined ? {} : { id }),\n ...(duration === undefined ? {} : { duration }),\n ...(priority === undefined ? {} : { priority }),\n ...(loading === undefined ? {} : { loading }),\n ...(onStatusChange === undefined ? {} : { onStatusChange }),\n announcement: spokenFrom(input),\n /* The one field the store reads out of the content: a message a reader is\n meant to act on is a message no clock may end. */\n action: content.actions !== undefined,\n data: content as ToastContent,\n };\n}\n\n/**\n * The imperative facade, and the observable model, which\n * `docs/component-features.md` §14 asks for in one sentence.\n *\n * It is `providedIn: 'root'` because that is the surface Angular Material's\n * consumers already know: a message is shown from an interceptor, a resolver or\n * an effect, none of which is anywhere near a component. The reads are signals,\n * so a zoneless application renders on them without a `markForCheck` anywhere.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlToastService {\n private readonly defaults = inject(TOAST_DEFAULTS);\n\n /** The model a region renders. Also the escape hatch for a page's own host. */\n readonly store: ToastStore<ToastContent> = createToastStore<ToastContent>({\n limit: this.defaults.limit,\n duration: this.defaults.duration,\n });\n\n private readonly snapshot = signal(this.store.snapshot);\n\n /** The messages on screen, newest first. */\n readonly visible: Signal<readonly ToastMessage<ToastContent>[]> = computed(\n () => this.snapshot().visible,\n );\n /** The messages waiting behind the limit. A page may say how many. */\n readonly queued: Signal<readonly ToastMessage<ToastContent>[]> = computed(\n () => this.snapshot().queued,\n );\n /** Whether every clock is held. */\n readonly paused: Signal<boolean> = computed(() => this.snapshot().paused);\n\n constructor() {\n const stop = this.store.subscribe(() => this.snapshot.set(this.store.snapshot));\n inject(DestroyRef).onDestroy(() => {\n stop();\n this.store.destroy();\n });\n }\n\n /** Adds a message, or updates the one that already carries this id. */\n show(input: ToastInput = {}): string {\n return this.store.show(split(input));\n }\n\n /** Changes a message already in the queue, keeping its place. */\n update(id: string, input: ToastInput): void {\n this.store.update(id, split(input));\n }\n\n /** Asks for a message to leave, carrying the reason. */\n dismiss(id: string, reason: ToastReason = 'programmatic'): void {\n this.store.dismiss(id, reason);\n }\n\n /** Asks for every message to leave at once — a route change, a sign-out. */\n clear(reason: ToastReason = 'clear'): void {\n this.store.clear(reason);\n }\n\n pauseAll(): void {\n this.store.pauseAll();\n }\n\n resumeAll(): void {\n this.store.resumeAll();\n }\n\n /** A message that follows a promise: loading, then success or failure. */\n promise<Value>(promise: Promise<Value>, input: ToastPromiseInput<Value>): Promise<Value> {\n return this.store.promise(promise, {\n loading: split(input.loading),\n success:\n typeof input.success === 'function'\n ? (value: Value) => split((input.success as (value: Value) => ToastInput)(value))\n : split(input.success),\n error:\n typeof input.error === 'function'\n ? (reason: unknown) => split((input.error as (reason: unknown) => ToastInput)(reason))\n : split(input.error),\n });\n }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n output,\n PLATFORM_ID,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlLoader } from '@slotted/angular/progress-indicator';\nimport type { GlyphName } from '@slotted/angular/icon';\nimport { createRemovalFocus } from '@slotted/core/focus';\nimport { type PartialMessages, toastMessages, type ToastMessages } from '@slotted/core/i18n';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport { createPresence } from '@slotted/core/presence';\nimport { createToastStore } from '@slotted/core/toast';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport type { ToastMessage, ToastStore } from '@slotted/core/toast';\n\nimport { injectToastDefaults, SlToastService } from './toast-defaults';\nimport type {\n ToastAttach,\n ToastContent,\n ToastPlacement,\n ToastStacking,\n ToastTone,\n} from './toast-defaults';\n\n/**\n * The glyph each tone draws: `specs/components/toast/contract.json` holds the\n * map, and the binding draws it because a stylesheet paints no icon.\n */\nconst TONE_GLYPH: Record<ToastTone, GlyphName | null> = {\n accent: 'circle-info',\n secondary: null,\n info: 'circle-info',\n success: 'circle-check',\n warning: 'circle-alert',\n danger: 'circle-x',\n};\n\n/** Which way a message is dragged away, given the edge its region sits at. */\nfunction swipeAxis(placement: ToastPlacement, direction: string) {\n const block = placement.startsWith('top') ? -1 : 1;\n const rtl = direction === 'rtl';\n const inline = placement.endsWith('-start')\n ? rtl\n ? 1\n : -1\n : placement.endsWith('-end')\n ? rtl\n ? -1\n : 1\n : 0;\n return { block, inline };\n}\n\n/**\n * A message's own height, which is not the height it is drawn at: a closed\n * pile draws every message at the front one's height, and an opening one\n * animates it. The override is lifted for the one read, and not at all while\n * the height is moving, because lifting it then cancels the movement — the\n * last measurement stands until the transition ends and the observer fires\n * again. Chrome names the logical property's transition by its physical one.\n */\nfunction naturalHeight(item: HTMLElement): number {\n const moving =\n typeof item.getAnimations === 'function' &&\n item\n .getAnimations()\n .some((animation) =>\n ['block-size', 'height', 'width'].includes(\n (animation as Animation & { transitionProperty?: string }).transitionProperty ?? '',\n ),\n );\n if (moving) {\n const last = Number.parseFloat(item.style.getPropertyValue('--slotted-toast-height'));\n if (!Number.isNaN(last)) return last;\n }\n const inline = item.style.blockSize;\n item.style.blockSize = 'auto';\n const height = item.getBoundingClientRect().height;\n item.style.blockSize = inline;\n return height;\n}\n\n/**\n * One message: everything about it that is behaviour rather than markup.\n *\n * It is a directive rather than a component so a page that writes its own list\n * — from `SlToastService.visible()` and nothing else — gets the timer, the\n * exit, the swipe and the keyboard by putting one attribute on its own `li`.\n */\n@Directive({\n selector: 'li[slToastItem]',\n standalone: true,\n exportAs: 'slToastItem',\n host: {\n 'data-part': 'item',\n 'data-part-item': '',\n tabindex: '-1',\n '[attr.data-tone]': 'tone()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-loading]': \"message().loading ? '' : null\",\n '[attr.data-dragging]': \"dragging() ? '' : null\",\n '[style.--slotted-toast-index]': 'index()',\n '[style.--slotted-toast-duration]': 'durationValue()',\n '[style.--slotted-toast-swipe-x]': 'swipeX()',\n '[style.--slotted-toast-swipe-y]': 'swipeY()',\n '(keydown)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(pointerup)': 'onPointerUp($event)',\n '(pointercancel)': 'onPointerUp($event)',\n },\n})\nexport class SlToastItem {\n readonly message = input.required<ToastMessage<ToastContent>>({ alias: 'slToastItem' });\n /** How far this message is from the front of the pile. The stylesheet reads it. */\n readonly index = input(0, { alias: 'slToastItemIndex' });\n\n private readonly region = inject(SlToastRegion);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * The message's own injector, handed to a page's body template so the parts\n * inside it — the mark's glyph above all — read this message and not the\n * place the template was declared.\n */\n readonly injector = inject(Injector);\n\n private readonly status = signal<'entering' | 'open' | 'exiting' | 'unmounted'>('entering');\n protected readonly dragging = signal(false);\n private readonly offset = signal<{ x: number; y: number } | null>(null);\n private drag: { id: number; x: number; y: number } | null = null;\n\n readonly tone = computed(() => this.message().data.tone ?? this.region.defaults.tone);\n /**\n * The glyph the tone's mark draws: none while a promise is in flight, when\n * the mark is `progress-indicator`'s contained loader, and none for\n * `secondary`, a neutral message with no severity to state.\n */\n readonly mark = computed<GlyphName | null>(() =>\n this.message().loading ? null : TONE_GLYPH[this.tone()],\n );\n protected readonly variant = computed(\n () => this.message().data.variant ?? this.region.defaults.variant,\n );\n protected readonly isOpen = computed(() => this.status() === 'open');\n protected readonly durationValue = computed(() => {\n const duration = this.message().duration;\n return duration > 0 ? `${duration}ms` : null;\n });\n protected readonly swipeX = computed(() => {\n const value = this.offset();\n return value === null ? null : `${value.x}px`;\n });\n protected readonly swipeY = computed(() => {\n const value = this.offset();\n return value === null ? null : `${value.y}px`;\n });\n\n /**\n * `packages/core/src/presence` reads the exit the stylesheet declares and\n * completes it on a timer when the browser never reports one — a backgrounded\n * tab, a `display: none` ancestor. Ark guesses two hundred milliseconds\n * instead, and a message caught by any of those cases never leaves.\n */\n private readonly presence = createPresence({\n initialPresent: true,\n skipInitialAnimation: false,\n onStatusChange: (next) => this.status.set(next),\n onExitComplete: () => this.region.store.remove(this.message().id),\n });\n\n constructor() {\n this.presence.setNode(this.host.nativeElement);\n effect(() => {\n this.presence.request(this.message().status !== 'closing', 'programmatic');\n });\n inject(DestroyRef).onDestroy(() => this.presence.destroy());\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape') return;\n /* Only the message the keyboard is in: a page whose dialog is open keeps\n its own Escape. */\n event.stopPropagation();\n this.region.store.dismiss(this.message().id, 'escape');\n }\n\n protected onPointerDown(event: PointerEvent) {\n if (!this.region.resolvedSwipe() || event.button !== 0) return;\n /* A control inside the message is what the pointer came for. */\n if ((event.target as HTMLElement).closest('button, a, input, select, textarea')) return;\n this.drag = { id: event.pointerId, x: event.clientX, y: event.clientY };\n this.host.nativeElement.setPointerCapture(event.pointerId);\n }\n\n protected onPointerMove(event: PointerEvent) {\n const start = this.drag;\n if (!start || start.id !== event.pointerId) return;\n\n const element = this.host.nativeElement;\n const view = element.ownerDocument.defaultView;\n const axis = swipeAxis(\n this.region.resolvedPlacement(),\n view?.getComputedStyle(element).direction ?? 'ltr',\n );\n /* Only movement toward the edge the region sits at counts. Dragging a\n message into the page is not a gesture, it is a slip. */\n const x = axis.inline === 0 ? 0 : Math.max(0, (event.clientX - start.x) * axis.inline);\n const y = Math.max(0, (event.clientY - start.y) * axis.block);\n if (!this.dragging() && Math.max(x, y) < 2) return;\n\n this.dragging.set(true);\n this.offset.set({ x: x * axis.inline, y: y * axis.block });\n }\n\n protected onPointerUp(event: PointerEvent) {\n if (!this.drag || this.drag.id !== event.pointerId) return;\n const moved = this.offset();\n const distance = moved === null ? 0 : Math.max(Math.abs(moved.x), Math.abs(moved.y));\n\n this.drag = null;\n this.dragging.set(false);\n this.offset.set(null);\n const element = this.host.nativeElement;\n if (element.hasPointerCapture(event.pointerId)) element.releasePointerCapture(event.pointerId);\n\n /* Past the threshold the gesture was a dismissal; short of it the message\n springs back, which is the only way a reader can change their mind. */\n if (event.type !== 'pointercancel' && distance >= this.region.defaults.swipeThreshold) {\n this.region.store.dismiss(this.message().id, 'pointer');\n }\n }\n}\n\n/**\n * The place transient messages appear, and the only part of this family a page\n * renders directly.\n *\n * **It is a landmark, not a live region.** A live role on a box holding a Close\n * and an Undo is read with both buttons inside the sentence, and a region\n * created in the same task as its text is silent under ARIA 1.2 §6.4. The words\n * are spoken by `packages/core/src/live-announcer`; this element is what a\n * reader navigates to, with the hotkey or with their own landmark list.\n *\n * **It never takes focus.** The APG's Alert pattern is explicit that an\n * arriving message must not affect the keyboard, and the whole of this family's\n * claim on it is one key the reader presses.\n */\n@Component({\n selector: 'sl-toast-region',\n standalone: true,\n exportAs: 'slToastRegion',\n imports: [NgTemplateOutlet, SlGlyph, SlIcon, SlLoader, SlToastItem],\n template: `<section\n #layer\n data-part=\"root\"\n data-part-root=\"\"\n data-ui=\"toast\"\n data-ui-toast=\"\"\n role=\"region\"\n tabindex=\"-1\"\n [attr.aria-label]=\"t('label')\"\n [attr.data-attach]=\"resolvedAttach()\"\n [attr.data-expanded]=\"paused() ? '' : null\"\n [attr.data-placement]=\"resolvedPlacement()\"\n [attr.data-stacking]=\"resolvedStacking()\"\n [attr.data-swipe]=\"resolvedSwipe()\"\n [style.--slotted-toast-count]=\"visible().length\"\n [style.--slotted-toast-play-state]=\"paused() ? 'paused' : 'running'\"\n (focusin)=\"onFocus(true)\"\n (focusout)=\"onFocusOut($event)\"\n (pointerenter)=\"onPointer(true)\"\n (pointerleave)=\"onPointer(false)\"\n >\n <ol data-part=\"list\" data-part-list=\"\">\n @for (message of visible(); track message.id; let index = $index) {\n <li [slToastItem]=\"message\" [slToastItemIndex]=\"index\" #item=\"slToastItem\">\n @if (message.data.body; as body) {\n <ng-container\n [ngTemplateOutlet]=\"body\"\n [ngTemplateOutletContext]=\"{ $implicit: message }\"\n [ngTemplateOutletInjector]=\"item.injector\"\n />\n } @else {\n @if (!message.data.hideIcon && (message.loading || item.mark())) {\n <span aria-hidden=\"true\" data-part=\"icon\" data-part-icon=\"\">\n @if (message.loading) {\n <div\n slLoader\n contained\n decorative\n [delay]=\"0\"\n [minDuration]=\"0\"\n [tone]=\"item.tone()\"\n ></div>\n } @else if (item.mark(); as glyph) {\n <span slIcon><svg slGlyph [name]=\"glyph\" solid></svg></span>\n }\n </span>\n }\n <div data-part=\"content\" data-part-content=\"\">\n @if (message.data.title) {\n <div data-part=\"title\" data-part-title=\"\">{{ message.data.title }}</div>\n }\n @if (message.data.description) {\n <p data-part=\"description\" data-part-description=\"\">\n {{ message.data.description }}\n </p>\n }\n </div>\n @if (message.data.dismissible ?? defaults.dismissible) {\n <button\n type=\"button\"\n data-part=\"close\"\n data-part-close=\"\"\n [attr.aria-label]=\"t('close')\"\n (click)=\"store.dismiss(message.id, 'dismiss')\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n @if (message.data.actions; as actions) {\n <div data-part=\"actions\" data-part-actions=\"\">\n <ng-container\n [ngTemplateOutlet]=\"actions\"\n [ngTemplateOutletContext]=\"{ $implicit: message }\"\n />\n </div>\n }\n @if ((message.data.progress ?? defaults.progress) && message.duration > 0) {\n <div aria-hidden=\"true\" data-part=\"progress\" data-part-progress=\"\"></div>\n }\n }\n </li>\n }\n </ol>\n </section>`,\n styleUrl: '../../../styles/src/toast/toast.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n})\nexport class SlToastRegion {\n /** Defaults to the token, then to `bottom-end`. */\n readonly placement = input<ToastPlacement | undefined>(undefined);\n /** Defaults to the token, then to `portal`. */\n readonly attach = input<ToastAttach | undefined>(undefined);\n /** Defaults to the token, then to `list`. */\n readonly stacking = input<ToastStacking | undefined>(undefined);\n readonly swipe = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly limit = input<number | undefined>(undefined);\n readonly duration = input<number | undefined>(undefined);\n readonly pauseOnHover = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly pauseWhenHidden = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** The key that moves focus into the region. Defaults to the token. */\n readonly hotkey = input<string | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the name\n * a reader finds the region by (`label`) and what each close control\n * announces (`close`).\n */\n readonly messages = input<PartialMessages<ToastMessages> | undefined>(undefined);\n /** The element a portalled region is placed inside. */\n readonly container = input<Element | null | undefined>(undefined);\n /** The queue the page owns. Present at all decides the mode for good. */\n readonly toasts = input<readonly ToastMessage<ToastContent>[] | undefined>(undefined);\n\n /**\n * One output for one transition, carrying the value, the value it replaces,\n * the reason, the originating event and `cancel()`. There is no `[(toasts)]`\n * because a two-way binding has one slot and cannot carry any of those — the\n * shape `alert` settled.\n */\n readonly toastsChange = output<ChangeRequest<readonly ToastMessage<ToastContent>[]>>();\n\n readonly defaults = injectToastDefaults();\n /** The family's words in the language in force, with this region's `messages` laid over them. */\n readonly t = injectMessages(toastMessages, this.messages);\n private readonly service = inject(SlToastService);\n private readonly layer = viewChild.required<ElementRef<HTMLElement>>('layer');\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /**\n * A region the page's own array feeds cannot share the injected service: the\n * mode is decided once, for the life of the store, and the service's store is\n * uncontrolled by construction.\n */\n private readonly ownStore: ToastStore<ToastContent> | null =\n this.toasts() === undefined\n ? null\n : createToastStore<ToastContent>({ toasts: this.toasts() ?? [] });\n\n readonly store: ToastStore<ToastContent> = this.ownStore ?? this.service.store;\n\n private readonly snapshot = signal(this.store.snapshot);\n\n readonly visible = computed(() => this.snapshot().visible);\n readonly queued = computed(() => this.snapshot().queued);\n readonly paused = computed(() => this.snapshot().paused);\n\n readonly resolvedPlacement = computed(() => this.placement() ?? this.defaults.placement);\n readonly resolvedAttach = computed(() => this.attach() ?? this.defaults.attach);\n readonly resolvedStacking = computed(() => this.stacking() ?? this.defaults.stacking);\n readonly resolvedSwipe = computed(() => this.swipe() ?? this.defaults.swipe);\n readonly resolvedHotkey = computed(() => this.hotkey() ?? this.defaults.hotkey);\n\n private readonly interacting = { pointer: false, focus: false };\n /** Where the keyboard was before the hotkey moved it into the region. */\n private cameFrom: HTMLElement | null = null;\n\n constructor() {\n const stop = this.store.subscribe(() => this.snapshot.set(this.store.snapshot));\n this.store.onRequest((request) => this.toastsChange.emit(request));\n\n effect(() => {\n this.store.configure({\n limit: this.limit() ?? this.defaults.limit,\n duration: this.duration() ?? this.defaults.duration,\n pauseOnHover: this.pauseOnHover() ?? this.defaults.pauseOnHover,\n pauseWhenHidden: this.pauseWhenHidden() ?? this.defaults.pauseWhenHidden,\n });\n });\n\n effect(() => {\n const owned = this.toasts();\n if (owned !== undefined) this.store.sync(owned);\n });\n\n /**\n * A portalled region inherits nothing from where it was written, so the\n * layer carries the theme, the scheme, the density and the direction of the\n * host it came from. Every surveyed implementation loses them.\n *\n * Only in the browser, as the focus effects below: the server's document is\n * not the page. The region is drawn in its host there, where hydration\n * expects the view's nodes, and nothing on the server holds focus.\n */\n effect((onCleanup) => {\n const section = this.layer().nativeElement;\n if (this.resolvedAttach() !== 'portal' || !this.browser) return;\n\n const handle = createPortalRoot({\n origin: this.host.nativeElement,\n container: this.container() ?? null,\n });\n handle.container?.append(section);\n onCleanup(() => {\n /* Back where Angular expects it before the layer goes, so the view's\n own teardown removes a node whose parent it still knows. */\n this.host.nativeElement.append(section);\n handle.release();\n });\n });\n\n /**\n * Where the keyboard goes when the message it was in is taken away — the\n * next message, then the element focus came from. Only React Aria answers\n * it at all, and only for its own close button.\n */\n effect((onCleanup) => {\n const section = this.layer().nativeElement;\n if (!this.browser) return;\n const handle = createRemovalFocus(section, {\n itemSelector: '[data-part=\"item\"]',\n fallback: () => this.cameFrom,\n });\n onCleanup(() => handle.destroy());\n });\n\n /** The one key this family binds, and the only thing that moves focus here. */\n effect((onCleanup) => {\n const section = this.layer().nativeElement;\n const doc = section.ownerDocument;\n const hotkey = this.resolvedHotkey();\n if (!this.browser) return;\n\n const onKeyDown = (event: KeyboardEvent) => {\n const parts = hotkey.toLowerCase().split('+');\n const key = parts.at(-1) ?? '';\n const wants = (name: string) => parts.includes(name);\n if (\n event.key.toLowerCase() !== key ||\n event.altKey !== wants('alt') ||\n event.ctrlKey !== wants('ctrl') ||\n event.shiftKey !== wants('shift') ||\n event.metaKey !== wants('meta')\n ) {\n return;\n }\n\n const first = section.querySelector<HTMLElement>('[data-part=\"item\"]');\n if (!first) return;\n event.preventDefault();\n const active = doc.activeElement;\n this.cameFrom = active instanceof HTMLElement && !section.contains(active) ? active : null;\n first.focus();\n };\n\n doc.addEventListener('keydown', onKeyDown);\n onCleanup(() => doc.removeEventListener('keydown', onKeyDown));\n });\n\n /**\n * Measured, and only for the pile. A column of messages that are not all\n * the same height cannot be opened from arithmetic alone.\n *\n * After render rather than as an `effect`: a component's effect runs\n * before its view is refreshed, so the messages that just arrived were not\n * in the list yet and the pile was never measured.\n */\n afterRenderEffect((onCleanup) => {\n const section = this.layer().nativeElement;\n if (this.resolvedStacking() !== 'stack') return;\n void this.visible();\n\n const list = section.querySelector<HTMLElement>('[data-part=\"list\"]');\n const view = section.ownerDocument.defaultView;\n if (!list || !view || typeof view.ResizeObserver !== 'function') return;\n\n const measure = () => {\n const items = [...list.querySelectorAll<HTMLElement>('[data-part=\"item\"]')];\n const gap = Number.parseFloat(view.getComputedStyle(list).rowGap) || 0;\n let offset = 0;\n items.forEach((item, index) => {\n const height = naturalHeight(item);\n item.style.setProperty('--slotted-toast-height', `${height}px`);\n item.style.setProperty('--slotted-toast-stack-offset', `${offset}px`);\n if (index === 0) section.style.setProperty('--slotted-toast-front-height', `${height}px`);\n offset += height + gap;\n });\n /* The open pile's whole height, so its gaps are the region's. */\n section.style.setProperty('--slotted-toast-stack-height', `${Math.max(0, offset - gap)}px`);\n };\n\n const observer = new view.ResizeObserver(measure);\n for (const item of list.querySelectorAll('[data-part=\"item\"]')) observer.observe(item);\n measure();\n onCleanup(() => observer.disconnect());\n });\n\n inject(DestroyRef).onDestroy(() => {\n stop();\n this.ownStore?.destroy();\n });\n }\n\n /** Sends the keyboard to the newest message. The family never does it alone. */\n focus() {\n this.layer().nativeElement.querySelector<HTMLElement>('[data-part=\"item\"]')?.focus();\n }\n\n protected onPointer(inside: boolean) {\n this.interacting.pointer = inside;\n this.report();\n }\n\n protected onFocus(inside: boolean) {\n this.interacting.focus = inside;\n this.report();\n }\n\n protected onFocusOut(event: FocusEvent) {\n const next = event.relatedTarget;\n if (next instanceof Node && this.layer().nativeElement.contains(next)) return;\n this.interacting.focus = false;\n this.report();\n }\n\n private report() {\n this.store.setInteracting(this.interacting.pointer || this.interacting.focus);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, Directive, inject } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlLoader } from '@slotted/angular/progress-indicator';\n\nimport { SlToastItem } from './toast';\n\n/**\n * The parts, for a page that writes its own message body inside\n * `<ng-template slToastBody>` rather than taking the family's.\n *\n * They carry the part name and nothing else: the geometry, the tone and the\n * states are the item's and the region's, and a directive that repeated any of\n * them would be a second place to change them. The two that draw a glyph read\n * it from the item they sit in.\n */\n\n/**\n * The tone's mark, or the page's own. Content the page writes replaces it;\n * with none, the item's glyph is drawn, `progress-indicator`'s contained\n * loader while the message waits, and nothing for `secondary`.\n */\n@Component({\n selector: '[slToastIcon]',\n standalone: true,\n exportAs: 'slToastIcon',\n imports: [SlGlyph, SlIcon, SlLoader],\n template: `<ng-content>\n @if (loading()) {\n <div slLoader contained decorative [delay]=\"0\" [minDuration]=\"0\" [tone]=\"tone()\"></div>\n } @else if (mark(); as glyph) {\n <span slIcon><svg slGlyph [name]=\"glyph\" solid></svg></span>\n }\n </ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'data-part': 'icon', 'data-part-icon': '', 'aria-hidden': 'true' },\n})\nexport class SlToastIcon {\n private readonly item = inject(SlToastItem, { optional: true });\n\n /* Outside an item there is no tone, and the default tone's glyph stands. */\n protected readonly mark = computed(() => (this.item === null ? 'circle-info' : this.item.mark()));\n protected readonly loading = computed(() => this.item?.message().loading ?? false);\n protected readonly tone = computed(() => this.item?.tone() ?? 'accent');\n}\n\n/** The words, and the one column that is allowed to shrink. */\n@Directive({\n selector: '[slToastContent]',\n standalone: true,\n exportAs: 'slToastContent',\n host: { 'data-part': 'content', 'data-part-content': '' },\n})\nexport class SlToastContent {}\n\n/**\n * The message's name. Written on the page's own element, and not a heading: a\n * message that is gone in five seconds is not a section of the document.\n */\n@Directive({\n selector: '[slToastTitle]',\n standalone: true,\n exportAs: 'slToastTitle',\n host: { 'data-part': 'title', 'data-part-title': '' },\n})\nexport class SlToastTitle {}\n\n/** The message. Written on a `p`, which is what a sentence of prose is. */\n@Directive({\n selector: '[slToastDescription]',\n standalone: true,\n exportAs: 'slToastDescription',\n host: { 'data-part': 'description', 'data-part-description': '' },\n})\nexport class SlToastDescription {}\n\n/**\n * The controls that act on the message. What goes in is the page's own\n * buttons: `button` already owns what a button is.\n */\n@Directive({\n selector: '[slToastActions]',\n standalone: true,\n exportAs: 'slToastActions',\n host: { 'data-part': 'actions', 'data-part-actions': '' },\n})\nexport class SlToastActions {}\n\n/** The control that puts the message away. A real button with a real name. */\n@Component({\n selector: 'button[slToastClose]',\n standalone: true,\n exportAs: 'slToastClose',\n imports: [SlGlyph, SlIcon],\n /* The cross is drawn unless the consumer wrote content of their own. */\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"x\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'data-part': 'close', 'data-part-close': '', type: 'button' },\n})\nexport class SlToastClose {}\n\n/** How much of the duration is left, drawn from the number the timer reads. */\n@Directive({\n selector: '[slToastProgress]',\n standalone: true,\n exportAs: 'slToastProgress',\n host: { 'data-part': 'progress', 'data-part-progress': '', 'aria-hidden': 'true' },\n})\nexport class SlToastProgress {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { createRovingTabindex } from '@slotted/core/focus';
2
2
  import { createControllable } from '@slotted/core/state';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, inject, input, booleanAttribute, output, ElementRef, HostAttributeToken, signal, computed, afterNextRender, effect, DestroyRef, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive } from '@angular/core';
4
+ import { InjectionToken, inject, input, booleanAttribute, output, ElementRef, HostAttributeToken, computed, signal, afterNextRender, effect, DestroyRef, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive } from '@angular/core';
5
+ import { SlField } from '@slotted/angular/field';
5
6
 
6
7
  const FALLBACK = {
7
8
  attached: true,
@@ -85,6 +86,16 @@ class SlToggleGroup {
85
86
  host = inject((ElementRef));
86
87
  defaults = injectToggleGroupDefaults();
87
88
  writtenRole = inject(new HostAttributeToken('role'), { optional: true });
89
+ field = inject(SlField, { optional: true });
90
+ writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });
91
+ writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {
92
+ optional: true,
93
+ });
94
+ /* A group has no element a label's for can reach, so inside a field the
95
+ field's label names it, unless the consumer named it themselves. */
96
+ labelledBy = computed(() => this.writtenLabelledBy ??
97
+ (this.writtenLabel === null ? (this.field?.ids().label ?? null) : null), /* @ts-ignore */
98
+ ...(ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []));
88
99
  writtenOrientation = inject(new HostAttributeToken('aria-orientation'), {
89
100
  optional: true,
90
101
  });
@@ -101,7 +112,8 @@ class SlToggleGroup {
101
112
  ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
102
113
  resolvedOrientation = computed(() => this.orientation() ?? this.defaults.orientation, /* @ts-ignore */
103
114
  ...(ngDevMode ? [{ debugName: "resolvedOrientation" }] : /* istanbul ignore next */ []));
104
- resolvedAttached = computed(() => this.attached() ?? this.defaults.attached, /* @ts-ignore */
115
+ /* Chips stand apart by definition: a joined row of them is a bar. */
116
+ resolvedAttached = computed(() => this.resolvedVariant() !== 'chips' && (this.attached() ?? this.defaults.attached), /* @ts-ignore */
105
117
  ...(ngDevMode ? [{ debugName: "resolvedAttached" }] : /* istanbul ignore next */ []));
106
118
  resolvedDeselectable = computed(() => this.deselectable() ?? this.defaults.deselectable, /* @ts-ignore */
107
119
  ...(ngDevMode ? [{ debugName: "resolvedDeselectable" }] : /* istanbul ignore next */ []));
@@ -192,13 +204,15 @@ class SlToggleGroup {
192
204
  this.own.set(next);
193
205
  }
194
206
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
195
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToggleGroup, isStandalone: true, selector: "[slToggleGroup]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, deselectable: { classPropertyName: "deselectable", publicName: "deselectable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, attached: { classPropertyName: "attached", publicName: "attached", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, rovingFocus: { classPropertyName: "rovingFocus", publicName: "rovingFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "toggle-group", "data-part": "root" }, properties: { "attr.role": "resolvedRole", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-orientation": "resolvedOrientation()", "attr.data-attached": "resolvedAttached() ? '' : null", "attr.data-full-width": "fullWidth() ? '' : null", "attr.aria-orientation": "ariaOrientation()" } }, exportAs: ["slToggleGroup"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=toggle-group][data-part=root]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-toggle-group-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_overlap: calc(-1 * var(--_border-width));--_separation: calc(var(--_gap) * 2);--_border-color: var( --slotted-toggle-group-border-color, var(--slotted-control-border-color, ButtonBorder) );align-items:stretch;display:inline-flex;flex-direction:row;flex-wrap:nowrap;font-family:var(--slotted-control-font-family, system-ui, sans-serif);isolation:isolate;min-inline-size:0}[data-ui=toggle-group][data-part=root]:empty{display:none}[data-ui=toggle-group][data-part=root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui=toggle-group][data-part=root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui=toggle-group][data-part=root][data-orientation=vertical]{flex-direction:column}[data-ui=toggle-group][data-part=root][data-full-width]{display:flex;inline-size:100%}[data-ui=toggle-group][data-part=root][data-full-width] [data-part=item]{flex:1 1 0}[data-ui=toggle-group] [data-part=item]{align-items:center;appearance:none;background:transparent;block-size:var(--_height);border:var(--_border-width) solid transparent;border-radius:var(--_radius);box-sizing:border-box;color:var(--slotted-toggle-group-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;flex:0 1 auto;font:inherit;font-size:var(--_font-size);font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);margin:0;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),border-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=toggle-group] [data-part=item]:not(:has([data-part=label])){padding-inline:0}[data-ui=toggle-group] [data-part=icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui=toggle-group] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=toggle-group][data-part=root][data-variant=outline] [data-part=item]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-group-shadow, var(--slotted-control-shadow, none))}[data-ui=toggle-group][data-part=root]:not([data-attached]){gap:var(--_separation)}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]+[data-part=item]{margin-inline-start:var(--_overlap)}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]+[data-part=item]{margin-block-start:var(--_overlap)}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]:first-child{border-end-start-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]:last-child{border-end-end-radius:var(--_radius);border-start-end-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]:first-child{border-start-end-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]:last-child{border-end-end-radius:var(--_radius);border-end-start-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part=item]:not(:last-child):not([data-pressed]){border-inline-end-color:transparent}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached][data-orientation=vertical] [data-part=item]:not(:last-child):not([data-pressed]){border-block-end-color:transparent}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part=item][data-pressed]+[data-part=item]{border-inline-start-color:transparent}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached][data-orientation=vertical] [data-part=item][data-pressed]+[data-part=item]{border-block-start-color:transparent}[data-ui=toggle-group] [data-part=item][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-group-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var( --slotted-toggle-group-pressed-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui=toggle-group] [data-part=item][data-pressed]{z-index:1}[data-ui=toggle-group] [data-part=item]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=toggle-group] [data-part=item]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle-group] [data-part=item][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui=toggle-group] [data-part=item][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle-group] [data-part=item]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px);z-index:2}[data-ui=toggle-group][data-part=root][data-attached] [data-part=item]:focus-visible{outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui=toggle-group] [data-part=item]:disabled,[data-ui=toggle-group] [data-part=item][data-disabled]{background:transparent;color:var(--slotted-toggle-group-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:default}[data-ui=toggle-group][data-part=root][data-variant=outline] [data-part=item]:disabled,[data-ui=toggle-group][data-part=root][data-variant=outline] [data-part=item][data-disabled]{border-color:var( --slotted-toggle-group-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui=toggle-group] [data-part=item][data-pressed]:disabled,[data-ui=toggle-group] [data-part=item][data-pressed][data-disabled]{background:var( --slotted-toggle-group-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) )}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
207
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToggleGroup, isStandalone: true, selector: "[slToggleGroup]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, deselectable: { classPropertyName: "deselectable", publicName: "deselectable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, attached: { classPropertyName: "attached", publicName: "attached", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, rovingFocus: { classPropertyName: "rovingFocus", publicName: "rovingFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "toggle-group", "data-ui-toggle-group": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.role": "resolvedRole", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-orientation": "resolvedOrientation()", "attr.data-attached": "resolvedAttached() ? '' : null", "attr.data-full-width": "fullWidth() ? '' : null", "attr.aria-orientation": "ariaOrientation()", "attr.aria-labelledby": "labelledBy()" } }, exportAs: ["slToggleGroup"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-toggle-group][data-part-root]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-toggle-group-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_overlap: calc(-1 * var(--_border-width));--_separation: calc(var(--_gap) * 2);--_border-color: var( --slotted-toggle-group-border-color, var(--slotted-control-border-color, ButtonBorder) );align-items:stretch;display:inline-flex;flex-direction:row;flex-wrap:nowrap;font-family:var(--slotted-control-font-family, system-ui, sans-serif);isolation:isolate;min-inline-size:0}[data-ui-toggle-group][data-part-root]:empty{display:none}[data-ui-toggle-group][data-part-root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui-toggle-group][data-part-root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui-toggle-group][data-part-root][data-orientation=vertical]{flex-direction:column}[data-ui-toggle-group][data-part-root][data-full-width]{display:flex;inline-size:100%}[data-ui-toggle-group][data-part-root][data-full-width] [data-part-item]{flex:1 1 0}[data-ui-toggle-group] [data-part-item]{align-items:center;appearance:none;background:transparent;block-size:var(--_height);border:var(--_border-width) solid transparent;border-radius:var(--_radius);box-sizing:border-box;color:var(--slotted-toggle-group-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;flex:0 1 auto;font:inherit;font-size:var(--_font-size);font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);margin:0;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),border-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui-toggle-group] [data-part-item]:not(:has([data-part-label])){padding-inline:0}[data-ui-toggle-group] [data-part-icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui-toggle-group] [data-part-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui-toggle-group][data-part-root][data-variant=outline] [data-part-item]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-group-shadow, var(--slotted-control-shadow, none))}[data-ui-toggle-group][data-part-root]:not([data-attached]){gap:var(--_separation)}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]+[data-part-item]{margin-inline-start:var(--_overlap)}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]+[data-part-item]{margin-block-start:var(--_overlap)}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]:first-child{border-end-start-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]:last-child{border-end-end-radius:var(--_radius);border-start-end-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]:first-child{border-start-end-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]:last-child{border-end-end-radius:var(--_radius);border-end-start-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part-item]:not(:last-child):not([data-pressed]){border-inline-end-color:transparent}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached][data-orientation=vertical] [data-part-item]:not(:last-child):not([data-pressed]){border-block-end-color:transparent}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part-item][data-pressed]+[data-part-item]{border-inline-start-color:transparent}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached][data-orientation=vertical] [data-part-item][data-pressed]+[data-part-item]{border-block-start-color:transparent}[data-ui-toggle-group] [data-part-item][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-group-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var( --slotted-toggle-group-pressed-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui-toggle-group] [data-part-item][data-pressed]{z-index:1}[data-ui-toggle-group] [data-part-item]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui-toggle-group] [data-part-item]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle-group] [data-part-item][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui-toggle-group] [data-part-item][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle-group][data-part-root][data-variant=chips]{flex-wrap:wrap;gap:var(--slotted-toggle-group-chips-gap, var(--slotted-space-3, .375rem))}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item]{border-color:var(--_border-color);border-radius:var(--slotted-toggle-group-chips-radius, var(--slotted-radius-full, 9999px));font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-pressed]:not(:disabled):not([data-disabled]),[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );border-color:var( --slotted-toggle-group-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );color:var( --slotted-toggle-group-chips-pressed-color, var(--slotted-tone-neutral-on-solid, Canvas) )}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var(--slotted-tone-neutral-solid-hover, CanvasText);border-color:var(--slotted-tone-neutral-solid-hover, CanvasText)}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item]:disabled,[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-disabled]{border-color:var(--slotted-disabled-border, GrayText)}[data-ui-toggle-group] [data-part-item]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px);z-index:2}[data-ui-toggle-group][data-part-root][data-attached] [data-part-item]:focus-visible{outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui-toggle-group] [data-part-item]:disabled,[data-ui-toggle-group] [data-part-item][data-disabled]{background:transparent;color:var(--slotted-toggle-group-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:default}[data-ui-toggle-group][data-part-root][data-variant=outline] [data-part-item]:disabled,[data-ui-toggle-group][data-part-root][data-variant=outline] [data-part-item][data-disabled]{border-color:var( --slotted-toggle-group-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui-toggle-group] [data-part-item][data-pressed]:disabled,[data-ui-toggle-group] [data-part-item][data-pressed][data-disabled]{background:var( --slotted-toggle-group-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) )}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
196
208
  }
197
209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleGroup, decorators: [{
198
210
  type: Component,
199
211
  args: [{ selector: '[slToggleGroup]', standalone: true, exportAs: 'slToggleGroup', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
200
212
  'data-ui': 'toggle-group',
213
+ 'data-ui-toggle-group': '',
201
214
  'data-part': 'root',
215
+ 'data-part-root': '',
202
216
  '[attr.role]': 'resolvedRole',
203
217
  '[attr.data-size]': 'resolvedSize()',
204
218
  '[attr.data-variant]': 'resolvedVariant()',
@@ -206,7 +220,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
206
220
  '[attr.data-attached]': "resolvedAttached() ? '' : null",
207
221
  '[attr.data-full-width]': "fullWidth() ? '' : null",
208
222
  '[attr.aria-orientation]': 'ariaOrientation()',
209
- }, styles: ["@layer slotted.components{[data-ui=toggle-group][data-part=root]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-toggle-group-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_overlap: calc(-1 * var(--_border-width));--_separation: calc(var(--_gap) * 2);--_border-color: var( --slotted-toggle-group-border-color, var(--slotted-control-border-color, ButtonBorder) );align-items:stretch;display:inline-flex;flex-direction:row;flex-wrap:nowrap;font-family:var(--slotted-control-font-family, system-ui, sans-serif);isolation:isolate;min-inline-size:0}[data-ui=toggle-group][data-part=root]:empty{display:none}[data-ui=toggle-group][data-part=root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui=toggle-group][data-part=root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui=toggle-group][data-part=root][data-orientation=vertical]{flex-direction:column}[data-ui=toggle-group][data-part=root][data-full-width]{display:flex;inline-size:100%}[data-ui=toggle-group][data-part=root][data-full-width] [data-part=item]{flex:1 1 0}[data-ui=toggle-group] [data-part=item]{align-items:center;appearance:none;background:transparent;block-size:var(--_height);border:var(--_border-width) solid transparent;border-radius:var(--_radius);box-sizing:border-box;color:var(--slotted-toggle-group-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;flex:0 1 auto;font:inherit;font-size:var(--_font-size);font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);margin:0;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),border-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=toggle-group] [data-part=item]:not(:has([data-part=label])){padding-inline:0}[data-ui=toggle-group] [data-part=icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui=toggle-group] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=toggle-group][data-part=root][data-variant=outline] [data-part=item]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-group-shadow, var(--slotted-control-shadow, none))}[data-ui=toggle-group][data-part=root]:not([data-attached]){gap:var(--_separation)}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]+[data-part=item]{margin-inline-start:var(--_overlap)}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]+[data-part=item]{margin-block-start:var(--_overlap)}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]:first-child{border-end-start-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-attached]:not([data-orientation=vertical]) [data-part=item]:last-child{border-end-end-radius:var(--_radius);border-start-end-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]:first-child{border-start-end-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-attached][data-orientation=vertical] [data-part=item]:last-child{border-end-end-radius:var(--_radius);border-end-start-radius:var(--_radius)}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part=item]:not(:last-child):not([data-pressed]){border-inline-end-color:transparent}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached][data-orientation=vertical] [data-part=item]:not(:last-child):not([data-pressed]){border-block-end-color:transparent}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part=item][data-pressed]+[data-part=item]{border-inline-start-color:transparent}[data-ui=toggle-group][data-part=root][data-variant=outline][data-attached][data-orientation=vertical] [data-part=item][data-pressed]+[data-part=item]{border-block-start-color:transparent}[data-ui=toggle-group] [data-part=item][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-group-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var( --slotted-toggle-group-pressed-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui=toggle-group] [data-part=item][data-pressed]{z-index:1}[data-ui=toggle-group] [data-part=item]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=toggle-group] [data-part=item]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle-group] [data-part=item][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui=toggle-group] [data-part=item][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle-group] [data-part=item]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px);z-index:2}[data-ui=toggle-group][data-part=root][data-attached] [data-part=item]:focus-visible{outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui=toggle-group] [data-part=item]:disabled,[data-ui=toggle-group] [data-part=item][data-disabled]{background:transparent;color:var(--slotted-toggle-group-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:default}[data-ui=toggle-group][data-part=root][data-variant=outline] [data-part=item]:disabled,[data-ui=toggle-group][data-part=root][data-variant=outline] [data-part=item][data-disabled]{border-color:var( --slotted-toggle-group-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui=toggle-group] [data-part=item][data-pressed]:disabled,[data-ui=toggle-group] [data-part=item][data-pressed][data-disabled]{background:var( --slotted-toggle-group-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) )}}\n"] }]
223
+ '[attr.aria-labelledby]': 'labelledBy()',
224
+ }, styles: ["@layer slotted.components{[data-ui-toggle-group][data-part-root]{--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-toggle-group-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_overlap: calc(-1 * var(--_border-width));--_separation: calc(var(--_gap) * 2);--_border-color: var( --slotted-toggle-group-border-color, var(--slotted-control-border-color, ButtonBorder) );align-items:stretch;display:inline-flex;flex-direction:row;flex-wrap:nowrap;font-family:var(--slotted-control-font-family, system-ui, sans-serif);isolation:isolate;min-inline-size:0}[data-ui-toggle-group][data-part-root]:empty{display:none}[data-ui-toggle-group][data-part-root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui-toggle-group][data-part-root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui-toggle-group][data-part-root][data-orientation=vertical]{flex-direction:column}[data-ui-toggle-group][data-part-root][data-full-width]{display:flex;inline-size:100%}[data-ui-toggle-group][data-part-root][data-full-width] [data-part-item]{flex:1 1 0}[data-ui-toggle-group] [data-part-item]{align-items:center;appearance:none;background:transparent;block-size:var(--_height);border:var(--_border-width) solid transparent;border-radius:var(--_radius);box-sizing:border-box;color:var(--slotted-toggle-group-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;flex:0 1 auto;font:inherit;font-size:var(--_font-size);font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);margin:0;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),border-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui-toggle-group] [data-part-item]:not(:has([data-part-label])){padding-inline:0}[data-ui-toggle-group] [data-part-icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui-toggle-group] [data-part-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui-toggle-group][data-part-root][data-variant=outline] [data-part-item]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-group-shadow, var(--slotted-control-shadow, none))}[data-ui-toggle-group][data-part-root]:not([data-attached]){gap:var(--_separation)}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]+[data-part-item]{margin-inline-start:var(--_overlap)}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]+[data-part-item]{margin-block-start:var(--_overlap)}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]:first-child{border-end-start-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation=vertical]) [data-part-item]:last-child{border-end-end-radius:var(--_radius);border-start-end-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]{border-end-start-radius:0;border-end-end-radius:0;border-start-start-radius:0;border-start-end-radius:0}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]:first-child{border-start-end-radius:var(--_radius);border-start-start-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-attached][data-orientation=vertical] [data-part-item]:last-child{border-end-end-radius:var(--_radius);border-end-start-radius:var(--_radius)}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part-item]:not(:last-child):not([data-pressed]){border-inline-end-color:transparent}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached][data-orientation=vertical] [data-part-item]:not(:last-child):not([data-pressed]){border-block-end-color:transparent}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached]:not([data-orientation=vertical]) [data-part-item][data-pressed]+[data-part-item]{border-inline-start-color:transparent}[data-ui-toggle-group][data-part-root][data-variant=outline][data-attached][data-orientation=vertical] [data-part-item][data-pressed]+[data-part-item]{border-block-start-color:transparent}[data-ui-toggle-group] [data-part-item][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-group-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var( --slotted-toggle-group-pressed-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui-toggle-group] [data-part-item][data-pressed]{z-index:1}[data-ui-toggle-group] [data-part-item]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui-toggle-group] [data-part-item]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-group-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle-group] [data-part-item][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui-toggle-group] [data-part-item][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle-group][data-part-root][data-variant=chips]{flex-wrap:wrap;gap:var(--slotted-toggle-group-chips-gap, var(--slotted-space-3, .375rem))}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item]{border-color:var(--_border-color);border-radius:var(--slotted-toggle-group-chips-radius, var(--slotted-radius-full, 9999px));font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-pressed]:not(:disabled):not([data-disabled]),[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-group-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );border-color:var( --slotted-toggle-group-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );color:var( --slotted-toggle-group-chips-pressed-color, var(--slotted-tone-neutral-on-solid, Canvas) )}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var(--slotted-tone-neutral-solid-hover, CanvasText);border-color:var(--slotted-tone-neutral-solid-hover, CanvasText)}[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item]:disabled,[data-ui-toggle-group][data-part-root][data-variant=chips] [data-part-item][data-disabled]{border-color:var(--slotted-disabled-border, GrayText)}[data-ui-toggle-group] [data-part-item]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px);z-index:2}[data-ui-toggle-group][data-part-root][data-attached] [data-part-item]:focus-visible{outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui-toggle-group] [data-part-item]:disabled,[data-ui-toggle-group] [data-part-item][data-disabled]{background:transparent;color:var(--slotted-toggle-group-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:default}[data-ui-toggle-group][data-part-root][data-variant=outline] [data-part-item]:disabled,[data-ui-toggle-group][data-part-root][data-variant=outline] [data-part-item][data-disabled]{border-color:var( --slotted-toggle-group-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui-toggle-group] [data-part-item][data-pressed]:disabled,[data-ui-toggle-group] [data-part-item][data-pressed][data-disabled]{background:var( --slotted-toggle-group-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) )}}\n"] }]
210
225
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], deselectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "deselectable", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], attached: [{ type: i0.Input, args: [{ isSignal: true, alias: "attached", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], rovingFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "rovingFocus", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
211
226
 
212
227
  /**
@@ -219,7 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
219
234
  */
220
235
  class SlToggleGroupIcon {
221
236
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleGroupIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
222
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToggleGroupIcon, isStandalone: true, selector: "[slToggleGroupIcon]", host: { attributes: { "data-part": "icon", "aria-hidden": "true" } }, exportAs: ["slToggleGroupIcon"], ngImport: i0 });
237
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToggleGroupIcon, isStandalone: true, selector: "[slToggleGroupIcon]", host: { attributes: { "data-part": "icon", "data-part-icon": "", "aria-hidden": "true" } }, exportAs: ["slToggleGroupIcon"], ngImport: i0 });
223
238
  }
224
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleGroupIcon, decorators: [{
225
240
  type: Directive,
@@ -229,6 +244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
229
244
  exportAs: 'slToggleGroupIcon',
230
245
  host: {
231
246
  'data-part': 'icon',
247
+ 'data-part-icon': '',
232
248
  'aria-hidden': 'true',
233
249
  },
234
250
  }]
@@ -278,8 +294,8 @@ class SlToggleGroupItem {
278
294
  this.group.toggle(this.value(), activationReason(event), event);
279
295
  }
280
296
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
281
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToggleGroupItem, isStandalone: true, selector: "button[slToggleGroupItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "data-part": "item" }, listeners: { "click": "onClick($event)" }, properties: { "attr.aria-pressed": "pressed()", "attr.data-pressed": "pressed() ? '' : null", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.disabled": "disabledAttribute()" } }, exportAs: ["slToggleGroupItem"], ngImport: i0, template: `<ng-content select="[slToggleGroupIcon]" />
282
- <span data-part="label"><ng-content /></span>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
297
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToggleGroupItem, isStandalone: true, selector: "button[slToggleGroupItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "data-part": "item", "data-part-item": "" }, listeners: { "click": "onClick($event)" }, properties: { "attr.aria-pressed": "pressed()", "attr.data-pressed": "pressed() ? '' : null", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.disabled": "disabledAttribute()" } }, exportAs: ["slToggleGroupItem"], ngImport: i0, template: `<ng-content select="[slToggleGroupIcon]" />
298
+ <span data-part="label" data-part-label=""><ng-content /></span>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
283
299
  }
284
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleGroupItem, decorators: [{
285
301
  type: Component,
@@ -288,12 +304,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
288
304
  standalone: true,
289
305
  exportAs: 'slToggleGroupItem',
290
306
  template: `<ng-content select="[slToggleGroupIcon]" />
291
- <span data-part="label"><ng-content /></span>`,
307
+ <span data-part="label" data-part-label=""><ng-content /></span>`,
292
308
  changeDetection: ChangeDetectionStrategy.OnPush,
293
309
  encapsulation: ViewEncapsulation.None,
294
310
  host: {
295
311
  type: 'button',
296
312
  'data-part': 'item',
313
+ 'data-part-item': '',
297
314
  '[attr.aria-pressed]': 'pressed()',
298
315
  '[attr.data-pressed]': "pressed() ? '' : null",
299
316
  '[attr.data-disabled]': "resolvedDisabled() === true ? '' : null",