@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.11

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 (598) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/action-bar.json +4 -4
  4. package/docs/action-bar.md +3 -3
  5. package/docs/alert.json +7 -1
  6. package/docs/alert.md +3 -3
  7. package/docs/app-shell.examples.md +1 -1
  8. package/docs/app-shell.json +5 -5
  9. package/docs/app-shell.md +2 -2
  10. package/docs/avatar.json +22 -1
  11. package/docs/avatar.md +5 -3
  12. package/docs/badge.json +7 -1
  13. package/docs/badge.md +3 -3
  14. package/docs/button-group.json +2 -0
  15. package/docs/button-group.md +1 -1
  16. package/docs/button.json +51 -11
  17. package/docs/button.md +10 -6
  18. package/docs/calendar.json +8 -1
  19. package/docs/calendar.md +3 -2
  20. package/docs/cascader.json +1 -0
  21. package/docs/cascader.md +1 -1
  22. package/docs/chart.examples.md +1 -1
  23. package/docs/chart.json +10 -1
  24. package/docs/chart.md +3 -2
  25. package/docs/checkbox.json +7 -0
  26. package/docs/checkbox.md +1 -0
  27. package/docs/code-block.json +92 -92
  28. package/docs/code-block.md +69 -69
  29. package/docs/combobox.json +1 -0
  30. package/docs/combobox.md +1 -1
  31. package/docs/command-palette.json +1 -0
  32. package/docs/command-palette.md +1 -1
  33. package/docs/currency-field.json +40 -1
  34. package/docs/currency-field.md +5 -1
  35. package/docs/data-grid.examples.md +2 -2
  36. package/docs/data-grid.json +45 -7
  37. package/docs/data-grid.md +3 -1
  38. package/docs/data-grid.props.md +7 -4
  39. package/docs/data-list.json +2 -1
  40. package/docs/data-list.md +1 -1
  41. package/docs/date-field.json +9 -1
  42. package/docs/date-field.md +3 -2
  43. package/docs/date-picker.examples.md +36 -0
  44. package/docs/date-picker.json +20 -5
  45. package/docs/date-picker.md +5 -4
  46. package/docs/datetime-field.json +1 -0
  47. package/docs/datetime-field.md +1 -1
  48. package/docs/detail-panel.json +4 -2
  49. package/docs/detail-panel.md +8 -3
  50. package/docs/dialog.examples.md +158 -136
  51. package/docs/dialog.json +36 -11
  52. package/docs/dialog.md +4 -2
  53. package/docs/dialog.props.md +1 -1
  54. package/docs/drawer.json +11 -4
  55. package/docs/drawer.md +4 -3
  56. package/docs/entity-picker.json +19 -4
  57. package/docs/entity-picker.md +8 -6
  58. package/docs/event-calendar.json +7 -0
  59. package/docs/event-calendar.md +3 -2
  60. package/docs/filter-bar.json +118 -118
  61. package/docs/filter-bar.md +79 -79
  62. package/docs/form.json +2 -1
  63. package/docs/form.md +1 -1
  64. package/docs/guidelines/README.md +27 -0
  65. package/docs/guidelines/async-feedback.md +129 -0
  66. package/docs/guidelines/browsing.md +74 -0
  67. package/docs/guidelines/builders.md +97 -0
  68. package/docs/guidelines/composition.md +143 -0
  69. package/docs/guidelines/conversations.md +59 -0
  70. package/docs/guidelines/errors-and-conflicts.md +71 -0
  71. package/docs/guidelines/forms.md +202 -0
  72. package/docs/guidelines/index.md +130 -0
  73. package/docs/guidelines/layout-alignment.md +105 -0
  74. package/docs/guidelines/ledgers.md +45 -0
  75. package/docs/guidelines/list-pages.md +206 -0
  76. package/docs/guidelines/overviews.md +76 -0
  77. package/docs/guidelines/own-elements.md +115 -0
  78. package/docs/guidelines/reading-permissions.md +55 -0
  79. package/docs/guidelines/record-pages.md +178 -0
  80. package/docs/guidelines/reports.md +123 -0
  81. package/docs/guidelines/shell-composition.md +94 -0
  82. package/docs/guidelines/workspaces.md +46 -0
  83. package/docs/icon.json +3 -1
  84. package/docs/icon.md +3 -3
  85. package/docs/index.md +12 -0
  86. package/docs/inline-message.json +14 -2
  87. package/docs/inline-message.md +4 -3
  88. package/docs/list-item.json +9 -1
  89. package/docs/list-item.md +3 -3
  90. package/docs/list.json +19 -1
  91. package/docs/list.md +3 -1
  92. package/docs/markdown.json +79 -79
  93. package/docs/markdown.md +65 -65
  94. package/docs/menu.json +12 -0
  95. package/docs/menu.md +2 -0
  96. package/docs/message.json +7 -1
  97. package/docs/message.md +3 -3
  98. package/docs/multi-select.json +1 -0
  99. package/docs/multi-select.md +1 -1
  100. package/docs/notification-center.json +4 -0
  101. package/docs/notification-center.md +2 -2
  102. package/docs/number-field.json +1 -0
  103. package/docs/number-field.md +1 -1
  104. package/docs/otp-input.json +1 -0
  105. package/docs/otp-input.md +1 -1
  106. package/docs/page-header.json +22 -5
  107. package/docs/page-header.md +6 -4
  108. package/docs/page.json +2 -0
  109. package/docs/page.md +2 -1
  110. package/docs/popover.json +1 -1
  111. package/docs/progress-indicator.json +4 -3
  112. package/docs/progress-indicator.md +4 -4
  113. package/docs/prompt-composer.json +41 -1
  114. package/docs/prompt-composer.md +5 -1
  115. package/docs/rating.json +5 -3
  116. package/docs/rating.md +6 -6
  117. package/docs/section.json +28 -16
  118. package/docs/section.md +12 -10
  119. package/docs/segmented-control.json +36 -12
  120. package/docs/segmented-control.md +17 -1
  121. package/docs/select.json +1 -0
  122. package/docs/select.md +1 -1
  123. package/docs/side-navigation.json +1 -0
  124. package/docs/side-navigation.md +1 -1
  125. package/docs/skills/build-own-element/SKILL.md +90 -0
  126. package/docs/skills/compose-screen/SKILL.md +103 -0
  127. package/docs/skills/index.md +9 -0
  128. package/docs/skills/review-screen/SKILL.md +79 -0
  129. package/docs/skills/theme-app/SKILL.md +98 -0
  130. package/docs/skills/waiting-states/SKILL.md +143 -0
  131. package/docs/sparkline.json +5 -2
  132. package/docs/sparkline.md +4 -4
  133. package/docs/split-button.json +4 -1
  134. package/docs/split-button.md +3 -3
  135. package/docs/stat-card.json +5 -1
  136. package/docs/stat-card.md +3 -3
  137. package/docs/table.examples.md +3 -3
  138. package/docs/table.json +85 -3
  139. package/docs/table.md +12 -1
  140. package/docs/tabs.json +17 -7
  141. package/docs/tabs.md +3 -2
  142. package/docs/tag.json +14 -4
  143. package/docs/tag.md +6 -6
  144. package/docs/tags-input.json +29 -2
  145. package/docs/tags-input.md +4 -1
  146. package/docs/text-field.json +2 -1
  147. package/docs/text-field.md +2 -2
  148. package/docs/textarea.json +1 -0
  149. package/docs/textarea.md +1 -1
  150. package/docs/time-field.json +1 -0
  151. package/docs/time-field.md +1 -1
  152. package/docs/timeline.json +138 -132
  153. package/docs/timeline.md +125 -125
  154. package/docs/toast.json +8 -1
  155. package/docs/toast.md +3 -3
  156. package/docs/toggle-group.json +14 -3
  157. package/docs/toggle-group.md +3 -3
  158. package/docs/toggle.json +12 -3
  159. package/docs/toggle.md +3 -3
  160. package/docs/tokens.md +467 -0
  161. package/docs/toolbar.json +1 -1
  162. package/docs/toolbar.md +1 -1
  163. package/docs/tour.json +1 -1
  164. package/docs/typography.json +4 -2
  165. package/docs/typography.md +5 -5
  166. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  167. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-action-bar.mjs +27 -12
  169. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-action-sheet.mjs +48 -29
  171. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-alert.mjs +18 -11
  173. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  175. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  177. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  179. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  181. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  183. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-badge.mjs +14 -10
  185. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  187. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  189. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-button.mjs +120 -29
  191. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  193. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-card.mjs +18 -16
  195. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  197. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-cascader.mjs +180 -66
  199. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-chart.mjs +53 -20
  201. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  203. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  205. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  207. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  209. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  211. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  213. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-combobox.mjs +118 -39
  215. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-command-palette.mjs +162 -54
  217. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-container.mjs +6 -4
  219. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  221. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  223. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  225. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-data-grid.mjs +480 -129
  227. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  229. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  231. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  233. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  235. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  237. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  239. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  241. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  243. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-detail-panel.mjs +48 -30
  245. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  247. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-divider.mjs +7 -5
  249. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-drawer.mjs +91 -37
  251. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-entity-picker.mjs +474 -75
  253. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  255. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  257. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-field.mjs +35 -15
  259. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-filter-bar.mjs +118 -51
  261. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-form.mjs +18 -10
  263. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  265. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-grid.mjs +4 -2
  267. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  269. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  271. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-icon.mjs +6 -3
  273. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-image.mjs +13 -10
  275. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-import-export-center.mjs +175 -99
  277. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  279. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-inline.mjs +4 -2
  281. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  283. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-link.mjs +5 -3
  285. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  287. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-list.mjs +37 -22
  289. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  291. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  293. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  295. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-menu.mjs +51 -29
  297. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  299. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-message-scroller.mjs +34 -15
  301. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-message.mjs +119 -51
  303. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-multi-select.mjs +195 -87
  305. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  307. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  309. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  311. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  313. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-page-header.mjs +90 -48
  315. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-page.mjs +38 -10
  317. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  319. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-popover.mjs +32 -19
  321. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  323. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-prompt-composer.mjs +57 -20
  325. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-prose.mjs +14 -11
  327. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  329. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-rating.mjs +138 -82
  331. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  333. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  335. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  337. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-section.mjs +53 -18
  339. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  341. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-select.mjs +190 -94
  343. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  345. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  347. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-slider.mjs +31 -11
  349. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  351. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-split-button.mjs +37 -11
  353. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  355. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-stack.mjs +4 -2
  357. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  359. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  361. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  363. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-switch.mjs +15 -10
  365. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  367. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-table.mjs +243 -73
  369. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  371. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-tag.mjs +19 -12
  373. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  375. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-text-field.mjs +55 -15
  377. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  379. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  381. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  383. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  385. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-timeline.mjs +147 -64
  387. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-toast.mjs +43 -31
  389. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  391. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  393. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-toolbar.mjs +27 -12
  395. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  397. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  399. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-tour.mjs +47 -22
  401. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  403. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-tree.mjs +80 -26
  405. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  406. package/fesm2022/slotted-angular-typography.mjs +8 -4
  407. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  408. package/fesm2022/slotted-angular-upload.mjs +125 -57
  409. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  410. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  411. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  412. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  413. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  414. package/package.json +3 -3
  415. package/types/slotted-angular-accordion.d.ts.map +1 -1
  416. package/types/slotted-angular-action-bar.d.ts +2 -0
  417. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  418. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  419. package/types/slotted-angular-alert.d.ts +2 -2
  420. package/types/slotted-angular-alert.d.ts.map +1 -1
  421. package/types/slotted-angular-app-shell.d.ts +11 -3
  422. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  423. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  424. package/types/slotted-angular-attachment.d.ts +1 -1
  425. package/types/slotted-angular-attachment.d.ts.map +1 -1
  426. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  427. package/types/slotted-angular-avatar.d.ts +11 -3
  428. package/types/slotted-angular-avatar.d.ts.map +1 -1
  429. package/types/slotted-angular-badge.d.ts +1 -1
  430. package/types/slotted-angular-badge.d.ts.map +1 -1
  431. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  432. package/types/slotted-angular-button-group.d.ts +1 -1
  433. package/types/slotted-angular-button-group.d.ts.map +1 -1
  434. package/types/slotted-angular-button.d.ts +33 -13
  435. package/types/slotted-angular-button.d.ts.map +1 -1
  436. package/types/slotted-angular-calendar.d.ts +30 -2
  437. package/types/slotted-angular-calendar.d.ts.map +1 -1
  438. package/types/slotted-angular-card.d.ts.map +1 -1
  439. package/types/slotted-angular-carousel.d.ts.map +1 -1
  440. package/types/slotted-angular-cascader.d.ts.map +1 -1
  441. package/types/slotted-angular-chart.d.ts +10 -0
  442. package/types/slotted-angular-chart.d.ts.map +1 -1
  443. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  444. package/types/slotted-angular-checkbox.d.ts +7 -1
  445. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  446. package/types/slotted-angular-code-block.d.ts +1 -1
  447. package/types/slotted-angular-code-block.d.ts.map +1 -1
  448. package/types/slotted-angular-collapsible.d.ts +1 -1
  449. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  450. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  451. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  452. package/types/slotted-angular-combobox.d.ts +5 -1
  453. package/types/slotted-angular-combobox.d.ts.map +1 -1
  454. package/types/slotted-angular-command-palette.d.ts +10 -1
  455. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  456. package/types/slotted-angular-container.d.ts.map +1 -1
  457. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  458. package/types/slotted-angular-currency-field.d.ts +63 -15
  459. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  460. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  461. package/types/slotted-angular-data-grid.d.ts +72 -4
  462. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  463. package/types/slotted-angular-data-list.d.ts.map +1 -1
  464. package/types/slotted-angular-date-field.d.ts +11 -1
  465. package/types/slotted-angular-date-field.d.ts.map +1 -1
  466. package/types/slotted-angular-date-picker.d.ts +38 -12
  467. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  468. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  469. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  470. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  471. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  472. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  473. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  474. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-description-list.d.ts.map +1 -1
  476. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  477. package/types/slotted-angular-dialog.d.ts +10 -3
  478. package/types/slotted-angular-dialog.d.ts.map +1 -1
  479. package/types/slotted-angular-divider.d.ts.map +1 -1
  480. package/types/slotted-angular-drawer.d.ts +12 -1
  481. package/types/slotted-angular-drawer.d.ts.map +1 -1
  482. package/types/slotted-angular-entity-picker.d.ts +63 -15
  483. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  484. package/types/slotted-angular-event-calendar.d.ts +9 -2
  485. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  486. package/types/slotted-angular-field-group.d.ts.map +1 -1
  487. package/types/slotted-angular-field.d.ts.map +1 -1
  488. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  489. package/types/slotted-angular-form.d.ts.map +1 -1
  490. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  491. package/types/slotted-angular-grid.d.ts.map +1 -1
  492. package/types/slotted-angular-highlight.d.ts.map +1 -1
  493. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  494. package/types/slotted-angular-icon.d.ts +2 -2
  495. package/types/slotted-angular-icon.d.ts.map +1 -1
  496. package/types/slotted-angular-image.d.ts.map +1 -1
  497. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  498. package/types/slotted-angular-inline-message.d.ts +25 -25
  499. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  500. package/types/slotted-angular-inline.d.ts.map +1 -1
  501. package/types/slotted-angular-kbd.d.ts.map +1 -1
  502. package/types/slotted-angular-link.d.ts.map +1 -1
  503. package/types/slotted-angular-list-item.d.ts +1 -1
  504. package/types/slotted-angular-list-item.d.ts.map +1 -1
  505. package/types/slotted-angular-list.d.ts +42 -27
  506. package/types/slotted-angular-list.d.ts.map +1 -1
  507. package/types/slotted-angular-listbox.d.ts.map +1 -1
  508. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  509. package/types/slotted-angular-markdown.d.ts.map +1 -1
  510. package/types/slotted-angular-menu.d.ts +11 -2
  511. package/types/slotted-angular-menu.d.ts.map +1 -1
  512. package/types/slotted-angular-menubar.d.ts.map +1 -1
  513. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  514. package/types/slotted-angular-message.d.ts +1 -1
  515. package/types/slotted-angular-message.d.ts.map +1 -1
  516. package/types/slotted-angular-multi-select.d.ts +15 -1
  517. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  518. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  519. package/types/slotted-angular-notification-center.d.ts +1 -1
  520. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  521. package/types/slotted-angular-number-field.d.ts.map +1 -1
  522. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  523. package/types/slotted-angular-page-header.d.ts +15 -6
  524. package/types/slotted-angular-page-header.d.ts.map +1 -1
  525. package/types/slotted-angular-page.d.ts.map +1 -1
  526. package/types/slotted-angular-pagination.d.ts.map +1 -1
  527. package/types/slotted-angular-popover.d.ts.map +1 -1
  528. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  529. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  530. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  531. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  532. package/types/slotted-angular-prose.d.ts.map +1 -1
  533. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  534. package/types/slotted-angular-rating.d.ts +1 -1
  535. package/types/slotted-angular-rating.d.ts.map +1 -1
  536. package/types/slotted-angular-result-state.d.ts.map +1 -1
  537. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  538. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  539. package/types/slotted-angular-section.d.ts +11 -3
  540. package/types/slotted-angular-section.d.ts.map +1 -1
  541. package/types/slotted-angular-segmented-control.d.ts +15 -2
  542. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  543. package/types/slotted-angular-select.d.ts +12 -2
  544. package/types/slotted-angular-select.d.ts.map +1 -1
  545. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  546. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  547. package/types/slotted-angular-slider.d.ts.map +1 -1
  548. package/types/slotted-angular-sparkline.d.ts +7 -1
  549. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  550. package/types/slotted-angular-split-button.d.ts +2 -2
  551. package/types/slotted-angular-split-button.d.ts.map +1 -1
  552. package/types/slotted-angular-splitter.d.ts.map +1 -1
  553. package/types/slotted-angular-stack.d.ts.map +1 -1
  554. package/types/slotted-angular-stat-card.d.ts +1 -1
  555. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  556. package/types/slotted-angular-status-indicator.d.ts +1 -1
  557. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  558. package/types/slotted-angular-stepper.d.ts +1 -1
  559. package/types/slotted-angular-stepper.d.ts.map +1 -1
  560. package/types/slotted-angular-switch.d.ts.map +1 -1
  561. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  562. package/types/slotted-angular-table.d.ts +63 -6
  563. package/types/slotted-angular-table.d.ts.map +1 -1
  564. package/types/slotted-angular-tabs.d.ts +3 -4
  565. package/types/slotted-angular-tabs.d.ts.map +1 -1
  566. package/types/slotted-angular-tag.d.ts +1 -1
  567. package/types/slotted-angular-tag.d.ts.map +1 -1
  568. package/types/slotted-angular-tags-input.d.ts +33 -1
  569. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  570. package/types/slotted-angular-text-field.d.ts.map +1 -1
  571. package/types/slotted-angular-textarea.d.ts.map +1 -1
  572. package/types/slotted-angular-theme.d.ts +1 -1
  573. package/types/slotted-angular-time-field.d.ts.map +1 -1
  574. package/types/slotted-angular-time-picker.d.ts +0 -1
  575. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  576. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  577. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  578. package/types/slotted-angular-timeline.d.ts +1 -1
  579. package/types/slotted-angular-timeline.d.ts.map +1 -1
  580. package/types/slotted-angular-toast.d.ts +3 -3
  581. package/types/slotted-angular-toast.d.ts.map +1 -1
  582. package/types/slotted-angular-toggle-group.d.ts +8 -2
  583. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  584. package/types/slotted-angular-toggle.d.ts +1 -1
  585. package/types/slotted-angular-toggle.d.ts.map +1 -1
  586. package/types/slotted-angular-toolbar.d.ts +2 -0
  587. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  588. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  589. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  590. package/types/slotted-angular-tour.d.ts.map +1 -1
  591. package/types/slotted-angular-transfer.d.ts.map +1 -1
  592. package/types/slotted-angular-tree.d.ts.map +1 -1
  593. package/types/slotted-angular-typography.d.ts +1 -1
  594. package/types/slotted-angular-typography.d.ts.map +1 -1
  595. package/types/slotted-angular-upload.d.ts +2 -2
  596. package/types/slotted-angular-upload.d.ts.map +1 -1
  597. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  598. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-toggle-group.mjs","sources":["../../toggle-group/src/toggle-group-defaults.ts","../../toggle-group/src/toggle-group.ts","../../toggle-group/src/toggle-group-parts.ts","../../toggle-group/src/slotted-angular-toggle-group.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the group and every item inside it sit at. */\nexport type ToggleGroupSize = 'sm' | 'md' | 'lg';\n\n/**\n * Whether the items are framed or bare. `ghost` is the bar that sits inside\n * something already framed — a toolbar, a card header. There is no tone axis:\n * \"on\" is one colour across the system, and a bar that wants the whole palette\n * is `button-group` around toggle buttons.\n */\nexport type ToggleGroupVariant = 'outline' | 'ghost';\n\n/** How the items flow. The arrows follow the same axis. */\nexport type ToggleGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ToggleGroupDefaults {\n attached: boolean;\n deselectable: boolean;\n loop: boolean;\n orientation: ToggleGroupOrientation;\n size: ToggleGroupSize;\n variant: ToggleGroupVariant;\n}\n\nconst FALLBACK: ToggleGroupDefaults = {\n attached: true,\n deselectable: true,\n loop: true,\n orientation: 'horizontal',\n size: 'md',\n variant: 'outline',\n};\n\nexport const TOGGLE_GROUP_DEFAULTS = new InjectionToken<ToggleGroupDefaults>(\n 'slotted toggle group defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its toggle bars are drawn and how they\n * behave, rather than repeating the same inputs on every one of them. A group\n * that states any of them itself still wins.\n */\nexport function provideToggleGroupDefaults(defaults: Partial<ToggleGroupDefaults>) {\n return {\n provide: TOGGLE_GROUP_DEFAULTS,\n useFactory: (): ToggleGroupDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a toggle group renders as here, before it states anything of its own. */\nexport function injectToggleGroupDefaults(): ToggleGroupDefaults {\n return inject(TOGGLE_GROUP_DEFAULTS);\n}\n","import { createRovingTabindex } from '@slotted/core/focus';\nimport type { RovingTabindexHandle } from '@slotted/core/focus';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\n\nimport { injectToggleGroupDefaults } from './toggle-group-defaults';\nimport type {\n ToggleGroupOrientation,\n ToggleGroupSize,\n ToggleGroupVariant,\n} from './toggle-group-defaults';\n\nexport type {\n ToggleGroupDefaults,\n ToggleGroupOrientation,\n ToggleGroupSize,\n ToggleGroupVariant,\n} from './toggle-group-defaults';\n\n/** Why the value moved. A toggle group can produce exactly these two. */\nexport type ToggleGroupSelectionReason = 'pointer' | 'keyboard';\n\n/** The items the arrows move between. */\nconst ITEM_SELECTOR = '[data-part=\"item\"]';\n\n/**\n * A set of two-state buttons that share one value.\n *\n * **The arrows move focus and never toggle.** Each item is the APG Button\n * pattern's toggle button, activated by `Space` and `Enter` alone; the\n * movement between them is the Toolbar pattern's roving tabindex. The family\n * whose arrows move the value is `segmented-control`, and it is a radio group\n * because that is the pattern describing that interaction.\n *\n * **Inside a `toolbar` the group stands down.** A bar is one tab stop with\n * arrow navigation across every control it holds, so a group running a second\n * ring inside it would put two tab stops where the APG asks for one. The bar is\n * found in the DOM by its public identifier rather than by injecting the other\n * family, so neither depends on the other; `rovingFocus` states it outright\n * for a bar this library did not write.\n *\n * **The value is always an array.** `multiple` caps it at one entry rather\n * than changing its type, so both bindings hold one shape and a `model()` can\n * hold it. A single-select consumer writes an array of one, which is the price.\n */\n@Component({\n selector: '[slToggleGroup]',\n standalone: true,\n exportAs: 'slToggleGroup',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/toggle-group/toggle-group.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'toggle-group',\n 'data-part': 'root',\n '[attr.role]': 'resolvedRole',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-attached]': \"resolvedAttached() ? '' : null\",\n '[attr.data-full-width]': \"fullWidth() ? '' : null\",\n '[attr.aria-orientation]': 'ariaOrientation()',\n },\n})\nexport class SlToggleGroup implements OnInit {\n /** Present means the consumer owns the set. */\n readonly value = input<readonly string[] | undefined>(undefined);\n /** The value an uncontrolled group starts from, read once. */\n readonly defaultValue = input<readonly string[] | undefined>(undefined);\n /** Whether more than one item may be on at a time. */\n readonly multiple = input(false, { transform: booleanAttribute });\n /**\n * Whether the last item on may be turned off. Ignored while `multiple` is\n * true, where a set may always empty.\n */\n readonly deselectable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly size = input<ToggleGroupSize | undefined>(undefined);\n readonly variant = input<ToggleGroupVariant | undefined>(undefined);\n readonly orientation = input<ToggleGroupOrientation | undefined>(undefined);\n readonly attached = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n readonly loop = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`, so an item may state its own. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Whether the group holds one tab stop of its own. Unstated, it is inferred\n * from the bar it is in.\n */\n readonly rovingFocus = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** One output for one transition, carrying the reason and the event. */\n readonly valueChange = output<ChangeRequest<readonly string[]>>();\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly defaults = injectToggleGroupDefaults();\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n private readonly writtenOrientation = inject(new HostAttributeToken('aria-orientation'), {\n optional: true,\n });\n\n private readonly own = signal<readonly string[]>([]);\n private readonly insideToolbar = signal(false);\n private handle: RovingTabindexHandle | undefined;\n\n readonly selection = computed(() => this.value() ?? this.own());\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedOrientation = computed(() => this.orientation() ?? this.defaults.orientation);\n readonly resolvedAttached = computed(() => this.attached() ?? this.defaults.attached);\n readonly resolvedDeselectable = computed(() => this.deselectable() ?? this.defaults.deselectable);\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedDisabled = computed(() => this.disabled());\n readonly resolvedRovingFocus = computed(() => this.rovingFocus() ?? !this.insideToolbar());\n\n /** A consumer's own wins. The family writes `group` and never `toolbar`. */\n protected readonly resolvedRole = this.writtenRole ?? 'group';\n /**\n * Written only when the group flows the other way: `group` carries no\n * implied orientation, so the attribute says something exactly when the\n * arrows have moved to the block axis.\n */\n protected readonly ariaOrientation = computed(\n () =>\n this.writtenOrientation ?? (this.resolvedOrientation() === 'vertical' ? 'vertical' : null),\n );\n\n constructor() {\n /**\n * The bar is found in the DOM rather than injected, so neither family\n * depends on the other and `data-ui` — which is public contract — is what\n * answers. It runs after the first render, so a server-rendered group\n * carries its own tab stop for one frame and the bar takes it over on\n * hydration, before a reader can reach it with `Tab`.\n */\n afterNextRender(() => {\n this.insideToolbar.set(\n (this.host.nativeElement as HTMLElement).closest('[data-ui=\"toolbar\"]') !== null,\n );\n });\n\n effect((onCleanup) => {\n if (!this.resolvedRovingFocus()) return;\n const loop = this.resolvedLoop();\n const orientation = this.resolvedOrientation();\n\n this.handle = createRovingTabindex(this.host.nativeElement as HTMLElement, {\n itemSelector: ITEM_SELECTOR,\n loop: () => loop,\n orientation: () => orientation,\n });\n onCleanup(() => {\n this.handle?.destroy();\n this.handle = undefined;\n });\n });\n\n inject(DestroyRef).onDestroy(() => this.handle?.destroy());\n }\n\n ngOnInit() {\n if (this.value() === undefined) this.own.set(this.defaultValue() ?? []);\n }\n\n /** An item joined or left the set, so the ring re-reads what it moves between. */\n refresh() {\n this.handle?.refresh();\n }\n\n /** Whether one value is on. Read by every item in the set. */\n holds(value: string): boolean {\n return this.selection().includes(value);\n }\n\n /** Asks the group to turn one value on or off. */\n toggle(value: string, reason: ToggleGroupSelectionReason, source: Event) {\n const current = this.selection();\n const on = current.includes(value);\n let next: readonly string[];\n\n if (this.multiple()) {\n next = on ? current.filter((entry) => entry !== value) : [...current, value];\n } else if (on) {\n /* The last one on stays on unless the group was told it may empty. */\n if (!this.resolvedDeselectable()) return;\n next = [];\n } else {\n next = [value];\n }\n\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n controlled: this.value(),\n equals: (a, b) => a.length === b.length && a.every((entry, at) => entry === b[at]),\n initial: current,\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (!cancelled && moved) this.own.set(next);\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlToggleGroup } from './toggle-group';\nimport type { ToggleGroupSelectionReason } from './toggle-group';\n\n/**\n * The mark an item is drawn with, on the consumer's own element.\n *\n * A directive rather than a slot, so an `ng-icon`, an inline `svg` or a `span`\n * all work and none of them loses its own semantics. It is hidden from the\n * reading order, because the words beside it — or the `aria-label` on the\n * button — are what a reader hears.\n */\n@Directive({\n selector: '[slToggleGroupIcon]',\n standalone: true,\n exportAs: 'slToggleGroupIcon',\n host: {\n 'data-part': 'icon',\n 'aria-hidden': 'true',\n },\n})\nexport class SlToggleGroupIcon {}\n\n/**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count. It is why `Space`, `Enter` and a pointer are told apart\n * without a key listener existing anywhere in the family.\n */\nfunction activationReason(event: Event): ToggleGroupSelectionReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * One two-state button of the set.\n *\n * `aria-pressed` is written in both states, so the item is announced as a\n * toggle rather than as a button that happens to be pressed — and its label\n * never changes with its state, which the APG Button pattern calls critical.\n *\n * It is a part of `toggle-group` and not an entry point of its own:\n * `SlToggleGroup` is injected without `optional`, so an item written outside a\n * group fails at construction rather than rendering a button that toggles\n * nothing.\n */\n@Component({\n selector: 'button[slToggleGroupItem]',\n standalone: true,\n exportAs: 'slToggleGroupItem',\n template: `<ng-content select=\"[slToggleGroupIcon]\" />\n <span data-part=\"label\"><ng-content /></span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n type: 'button',\n 'data-part': 'item',\n '[attr.aria-pressed]': 'pressed()',\n '[attr.data-pressed]': \"pressed() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.disabled]': 'disabledAttribute()',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlToggleGroupItem {\n /** What this item turns on. It is what the group's value holds. */\n readonly value = input.required<string>();\n /** Unstated rather than `false`, so the item defers to the group. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /**\n * The group the item belongs to. Public, because a consumer reaching the\n * item through `exportAs` may want the group's resolved step.\n */\n readonly group = inject(SlToggleGroup);\n\n readonly pressed = computed(() => this.group.holds(this.value()));\n readonly resolvedDisabled = computed(() => this.disabled() ?? this.group.resolvedDisabled());\n\n protected readonly disabledAttribute = computed(() =>\n this.resolvedDisabled() === true ? '' : null,\n );\n\n constructor() {\n this.group.refresh();\n inject(DestroyRef).onDestroy(() => this.group.refresh());\n }\n\n protected onClick(event: Event) {\n this.group.toggle(this.value(), activationReason(event), event);\n }\n}\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-toggle-group.mjs","sources":["../../toggle-group/src/toggle-group-defaults.ts","../../toggle-group/src/toggle-group.ts","../../toggle-group/src/toggle-group-parts.ts","../../toggle-group/src/slotted-angular-toggle-group.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the group and every item inside it sit at. */\nexport type ToggleGroupSize = 'sm' | 'md' | 'lg';\n\n/**\n * Whether the items are framed or bare. `ghost` is the bar that sits inside\n * something already framed — a toolbar, a card header. `chips` are separate\n * rounded items that wrap, the pressed one in the neutral tone's ink, and\n * never join. There is no tone axis:\n * \"on\" is one colour across the system, and a bar that wants the whole palette\n * is `button-group` around toggle buttons.\n */\nexport type ToggleGroupVariant = 'outline' | 'ghost' | 'chips';\n\n/** How the items flow. The arrows follow the same axis. */\nexport type ToggleGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ToggleGroupDefaults {\n attached: boolean;\n deselectable: boolean;\n loop: boolean;\n orientation: ToggleGroupOrientation;\n size: ToggleGroupSize;\n variant: ToggleGroupVariant;\n}\n\nconst FALLBACK: ToggleGroupDefaults = {\n attached: true,\n deselectable: true,\n loop: true,\n orientation: 'horizontal',\n size: 'md',\n variant: 'outline',\n};\n\nexport const TOGGLE_GROUP_DEFAULTS = new InjectionToken<ToggleGroupDefaults>(\n 'slotted toggle group defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how its toggle bars are drawn and how they\n * behave, rather than repeating the same inputs on every one of them. A group\n * that states any of them itself still wins.\n */\nexport function provideToggleGroupDefaults(defaults: Partial<ToggleGroupDefaults>) {\n return {\n provide: TOGGLE_GROUP_DEFAULTS,\n useFactory: (): ToggleGroupDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a toggle group renders as here, before it states anything of its own. */\nexport function injectToggleGroupDefaults(): ToggleGroupDefaults {\n return inject(TOGGLE_GROUP_DEFAULTS);\n}\n","import { createRovingTabindex } from '@slotted/core/focus';\nimport type { RovingTabindexHandle } from '@slotted/core/focus';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\n\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectToggleGroupDefaults } from './toggle-group-defaults';\nimport type {\n ToggleGroupOrientation,\n ToggleGroupSize,\n ToggleGroupVariant,\n} from './toggle-group-defaults';\n\nexport type {\n ToggleGroupDefaults,\n ToggleGroupOrientation,\n ToggleGroupSize,\n ToggleGroupVariant,\n} from './toggle-group-defaults';\n\n/** Why the value moved. A toggle group can produce exactly these two. */\nexport type ToggleGroupSelectionReason = 'pointer' | 'keyboard';\n\n/** The items the arrows move between. */\nconst ITEM_SELECTOR = '[data-part=\"item\"]';\n\n/**\n * A set of two-state buttons that share one value.\n *\n * **The arrows move focus and never toggle.** Each item is the APG Button\n * pattern's toggle button, activated by `Space` and `Enter` alone; the\n * movement between them is the Toolbar pattern's roving tabindex. The family\n * whose arrows move the value is `segmented-control`, and it is a radio group\n * because that is the pattern describing that interaction.\n *\n * **Inside a `toolbar` the group stands down.** A bar is one tab stop with\n * arrow navigation across every control it holds, so a group running a second\n * ring inside it would put two tab stops where the APG asks for one. The bar is\n * found in the DOM by its public identifier rather than by injecting the other\n * family, so neither depends on the other; `rovingFocus` states it outright\n * for a bar this library did not write.\n *\n * **The value is always an array.** `multiple` caps it at one entry rather\n * than changing its type, so both bindings hold one shape and a `model()` can\n * hold it. A single-select consumer writes an array of one, which is the price.\n */\n@Component({\n selector: '[slToggleGroup]',\n standalone: true,\n exportAs: 'slToggleGroup',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/toggle-group/toggle-group.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'toggle-group',\n 'data-ui-toggle-group': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.role]': 'resolvedRole',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-attached]': \"resolvedAttached() ? '' : null\",\n '[attr.data-full-width]': \"fullWidth() ? '' : null\",\n '[attr.aria-orientation]': 'ariaOrientation()',\n '[attr.aria-labelledby]': 'labelledBy()',\n },\n})\nexport class SlToggleGroup implements OnInit {\n /** Present means the consumer owns the set. */\n readonly value = input<readonly string[] | undefined>(undefined);\n /** The value an uncontrolled group starts from, read once. */\n readonly defaultValue = input<readonly string[] | undefined>(undefined);\n /** Whether more than one item may be on at a time. */\n readonly multiple = input(false, { transform: booleanAttribute });\n /**\n * Whether the last item on may be turned off. Ignored while `multiple` is\n * true, where a set may always empty.\n */\n readonly deselectable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly size = input<ToggleGroupSize | undefined>(undefined);\n readonly variant = input<ToggleGroupVariant | undefined>(undefined);\n readonly orientation = input<ToggleGroupOrientation | undefined>(undefined);\n readonly attached = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n readonly fullWidth = input(false, { transform: booleanAttribute });\n readonly loop = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`, so an item may state its own. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Whether the group holds one tab stop of its own. Unstated, it is inferred\n * from the bar it is in.\n */\n readonly rovingFocus = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /** One output for one transition, carrying the reason and the event. */\n readonly valueChange = output<ChangeRequest<readonly string[]>>();\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly defaults = injectToggleGroupDefaults();\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n private readonly field = inject(SlField, { optional: true });\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n /* A group has no element a label's for can reach, so inside a field the\n field's label names it, unless the consumer named it themselves. */\n protected readonly labelledBy = computed(\n () =>\n this.writtenLabelledBy ??\n (this.writtenLabel === null ? (this.field?.ids().label ?? null) : null),\n );\n private readonly writtenOrientation = inject(new HostAttributeToken('aria-orientation'), {\n optional: true,\n });\n\n private readonly own = signal<readonly string[]>([]);\n private readonly insideToolbar = signal(false);\n private handle: RovingTabindexHandle | undefined;\n\n readonly selection = computed(() => this.value() ?? this.own());\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedOrientation = computed(() => this.orientation() ?? this.defaults.orientation);\n /* Chips stand apart by definition: a joined row of them is a bar. */\n readonly resolvedAttached = computed(\n () => this.resolvedVariant() !== 'chips' && (this.attached() ?? this.defaults.attached),\n );\n readonly resolvedDeselectable = computed(() => this.deselectable() ?? this.defaults.deselectable);\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedDisabled = computed(() => this.disabled());\n readonly resolvedRovingFocus = computed(() => this.rovingFocus() ?? !this.insideToolbar());\n\n /** A consumer's own wins. The family writes `group` and never `toolbar`. */\n protected readonly resolvedRole = this.writtenRole ?? 'group';\n /**\n * Written only when the group flows the other way: `group` carries no\n * implied orientation, so the attribute says something exactly when the\n * arrows have moved to the block axis.\n */\n protected readonly ariaOrientation = computed(\n () =>\n this.writtenOrientation ?? (this.resolvedOrientation() === 'vertical' ? 'vertical' : null),\n );\n\n constructor() {\n /**\n * The bar is found in the DOM rather than injected, so neither family\n * depends on the other and `data-ui` — which is public contract — is what\n * answers. It runs after the first render, so a server-rendered group\n * carries its own tab stop for one frame and the bar takes it over on\n * hydration, before a reader can reach it with `Tab`.\n */\n afterNextRender(() => {\n this.insideToolbar.set(\n (this.host.nativeElement as HTMLElement).closest('[data-ui=\"toolbar\"]') !== null,\n );\n });\n\n effect((onCleanup) => {\n if (!this.resolvedRovingFocus()) return;\n const loop = this.resolvedLoop();\n const orientation = this.resolvedOrientation();\n\n this.handle = createRovingTabindex(this.host.nativeElement as HTMLElement, {\n itemSelector: ITEM_SELECTOR,\n loop: () => loop,\n orientation: () => orientation,\n });\n onCleanup(() => {\n this.handle?.destroy();\n this.handle = undefined;\n });\n });\n\n inject(DestroyRef).onDestroy(() => this.handle?.destroy());\n }\n\n ngOnInit() {\n if (this.value() === undefined) this.own.set(this.defaultValue() ?? []);\n }\n\n /** An item joined or left the set, so the ring re-reads what it moves between. */\n refresh() {\n this.handle?.refresh();\n }\n\n /** Whether one value is on. Read by every item in the set. */\n holds(value: string): boolean {\n return this.selection().includes(value);\n }\n\n /** Asks the group to turn one value on or off. */\n toggle(value: string, reason: ToggleGroupSelectionReason, source: Event) {\n const current = this.selection();\n const on = current.includes(value);\n let next: readonly string[];\n\n if (this.multiple()) {\n next = on ? current.filter((entry) => entry !== value) : [...current, value];\n } else if (on) {\n /* The last one on stays on unless the group was told it may empty. */\n if (!this.resolvedDeselectable()) return;\n next = [];\n } else {\n next = [value];\n }\n\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n controlled: this.value(),\n equals: (a, b) => a.length === b.length && a.every((entry, at) => entry === b[at]),\n initial: current,\n onRequest: (request) => {\n this.valueChange.emit(request);\n cancelled = request.cancelled;\n },\n });\n const moved = state.request(next, reason, source);\n if (!cancelled && moved) this.own.set(next);\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlToggleGroup } from './toggle-group';\nimport type { ToggleGroupSelectionReason } from './toggle-group';\n\n/**\n * The mark an item is drawn with, on the consumer's own element.\n *\n * A directive rather than a slot, so an `ng-icon`, an inline `svg` or a `span`\n * all work and none of them loses its own semantics. It is hidden from the\n * reading order, because the words beside it — or the `aria-label` on the\n * button — are what a reader hears.\n */\n@Directive({\n selector: '[slToggleGroupIcon]',\n standalone: true,\n exportAs: 'slToggleGroupIcon',\n host: {\n 'data-part': 'icon',\n 'data-part-icon': '',\n 'aria-hidden': 'true',\n },\n})\nexport class SlToggleGroupIcon {}\n\n/**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count. It is why `Space`, `Enter` and a pointer are told apart\n * without a key listener existing anywhere in the family.\n */\nfunction activationReason(event: Event): ToggleGroupSelectionReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * One two-state button of the set.\n *\n * `aria-pressed` is written in both states, so the item is announced as a\n * toggle rather than as a button that happens to be pressed — and its label\n * never changes with its state, which the APG Button pattern calls critical.\n *\n * It is a part of `toggle-group` and not an entry point of its own:\n * `SlToggleGroup` is injected without `optional`, so an item written outside a\n * group fails at construction rather than rendering a button that toggles\n * nothing.\n */\n@Component({\n selector: 'button[slToggleGroupItem]',\n standalone: true,\n exportAs: 'slToggleGroupItem',\n template: `<ng-content select=\"[slToggleGroupIcon]\" />\n <span data-part=\"label\" data-part-label=\"\"><ng-content /></span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n type: 'button',\n 'data-part': 'item',\n 'data-part-item': '',\n '[attr.aria-pressed]': 'pressed()',\n '[attr.data-pressed]': \"pressed() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.disabled]': 'disabledAttribute()',\n '(click)': 'onClick($event)',\n },\n})\nexport class SlToggleGroupItem {\n /** What this item turns on. It is what the group's value holds. */\n readonly value = input.required<string>();\n /** Unstated rather than `false`, so the item defers to the group. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /**\n * The group the item belongs to. Public, because a consumer reaching the\n * item through `exportAs` may want the group's resolved step.\n */\n readonly group = inject(SlToggleGroup);\n\n readonly pressed = computed(() => this.group.holds(this.value()));\n readonly resolvedDisabled = computed(() => this.disabled() ?? this.group.resolvedDisabled());\n\n protected readonly disabledAttribute = computed(() =>\n this.resolvedDisabled() === true ? '' : null,\n );\n\n constructor() {\n this.group.refresh();\n inject(DestroyRef).onDestroy(() => this.group.refresh());\n }\n\n protected onClick(event: Event) {\n this.group.toggle(this.value(), activationReason(event), event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ function injectToggleDefaults() {
35
35
  */
36
36
  class SlToggleIcon {
37
37
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
38
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToggleIcon, isStandalone: true, selector: "[slToggleIcon]", host: { attributes: { "data-part": "icon", "aria-hidden": "true" } }, exportAs: ["slToggleIcon"], ngImport: i0 });
38
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToggleIcon, isStandalone: true, selector: "[slToggleIcon]", host: { attributes: { "data-part": "icon", "data-part-icon": "", "aria-hidden": "true" } }, exportAs: ["slToggleIcon"], ngImport: i0 });
39
39
  }
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggleIcon, decorators: [{
41
41
  type: Directive,
@@ -45,6 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
45
45
  exportAs: 'slToggleIcon',
46
46
  host: {
47
47
  'data-part': 'icon',
48
+ 'data-part-icon': '',
48
49
  'aria-hidden': 'true',
49
50
  },
50
51
  }]
@@ -137,13 +138,17 @@ class SlToggle {
137
138
  this.own.set(next);
138
139
  }
139
140
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToggle, isStandalone: true, selector: "button[slToggle]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", 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 }, pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, defaultPressed: { classPropertyName: "defaultPressed", publicName: "defaultPressed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressedChange: "pressedChange" }, host: { attributes: { "data-ui": "toggle", "data-part": "root" }, properties: { "attr.type": "type", "attr.aria-pressed": "isPressed()", "attr.data-pressed": "isPressed() ? '' : null", "attr.data-disabled": "disabled() ? '' : null", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "disabled": "disabled()" } }, exportAs: ["slToggle"], ngImport: i0, template: `<ng-content select="[slToggleIcon]" /> <span data-part="label"><ng-content /></span>`, isInline: true, styles: ["@layer slotted.components{[data-ui=toggle][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-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_border-color: var( --slotted-toggle-border-color, var(--slotted-control-border-color, ButtonBorder) );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-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;font-family:var(--slotted-control-font-family, ui-sans-serif, system-ui, sans-serif);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;max-inline-size:100%;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;touch-action:manipulation;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);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-tap-highlight-color:transparent}[data-ui=toggle][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][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][data-part=root]:not(:has([data-part=label]:not(:empty))){inline-size:var(--_height);padding-inline:0}[data-ui=toggle] [data-part=label]:empty{display:none}[data-ui=toggle] [data-part=icon]{--slotted-icon-size: var(--_icon-size);block-size:var(--_icon-size);display:inline-flex;flex:none;font-size:var(--_icon-size);inline-size:var(--_icon-size)}[data-ui=toggle] [data-part=icon]>*{block-size:100%;display:block;inline-size:100%}[data-ui=toggle] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=toggle][data-part=root][data-variant=outline]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-shadow, var(--slotted-control-shadow, none))}[data-ui=toggle][data-part=root][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var(--slotted-toggle-pressed-color, var(--slotted-tone-accent-text, HighlightText))}[data-ui=toggle][data-part=root]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=toggle][data-part=root]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle][data-part=root][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui=toggle][data-part=root][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle][data-part=root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=toggle][data-part=root]:disabled,[data-ui=toggle][data-part=root][data-disabled]{background:transparent;color:var(--slotted-toggle-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:not-allowed}[data-ui=toggle][data-part=root][data-variant=outline]:disabled,[data-ui=toggle][data-part=root][data-variant=outline][data-disabled]{border-color:var( --slotted-toggle-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui=toggle][data-part=root][data-pressed]:disabled,[data-ui=toggle][data-part=root][data-pressed][data-disabled]{background:var( --slotted-toggle-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) )}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
141
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToggle, isStandalone: true, selector: "button[slToggle]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", 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 }, pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, defaultPressed: { classPropertyName: "defaultPressed", publicName: "defaultPressed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressedChange: "pressedChange" }, host: { attributes: { "data-ui": "toggle", "data-ui-toggle": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.type": "type", "attr.aria-pressed": "isPressed()", "attr.data-pressed": "isPressed() ? '' : null", "attr.data-disabled": "disabled() ? '' : null", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "disabled": "disabled()" } }, exportAs: ["slToggle"], ngImport: i0, template: `<ng-content select="[slToggleIcon]" />
142
+ <span data-part="label" data-part-label=""><ng-content /></span>`, isInline: true, styles: ["@layer slotted.components{[data-ui-toggle][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-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_border-color: var( --slotted-toggle-border-color, var(--slotted-control-border-color, ButtonBorder) );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-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;font-family:var(--slotted-control-font-family, ui-sans-serif, system-ui, sans-serif);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;max-inline-size:100%;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;touch-action:manipulation;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);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-tap-highlight-color:transparent}[data-ui-toggle][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][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][data-part-root]:not(:has([data-part-label]:not(:empty))){inline-size:var(--_height);padding-inline:0}[data-ui-toggle] [data-part-label]:empty{display:none}[data-ui-toggle] [data-part-icon]{--slotted-icon-size: var(--_icon-size);block-size:var(--_icon-size);display:inline-flex;flex:none;font-size:var(--_icon-size);inline-size:var(--_icon-size)}[data-ui-toggle] [data-part-icon]>*{block-size:100%;display:block;inline-size:100%}[data-ui-toggle] [data-part-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui-toggle][data-part-root][data-variant=outline]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-shadow, var(--slotted-control-shadow, none))}[data-ui-toggle][data-part-root][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var(--slotted-toggle-pressed-color, var(--slotted-tone-accent-text, HighlightText))}[data-ui-toggle][data-part-root]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui-toggle][data-part-root]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle][data-part-root][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui-toggle][data-part-root][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle][data-part-root][data-variant=chips]{border-color:var(--_border-color);border-radius:var(--slotted-toggle-chips-radius, var(--slotted-radius-full, 9999px));font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-toggle][data-part-root][data-variant=chips][data-pressed]:not(:disabled):not([data-disabled]),[data-ui-toggle][data-part-root][data-variant=chips][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );border-color:var( --slotted-toggle-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );color:var(--slotted-toggle-chips-pressed-color, var(--slotted-tone-neutral-on-solid, Canvas))}[data-ui-toggle][data-part-root][data-variant=chips][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][data-part-root][data-variant=chips]:disabled,[data-ui-toggle][data-part-root][data-variant=chips][data-disabled]{border-color:var(--slotted-disabled-border, GrayText)}[data-ui-toggle][data-part-root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui-toggle][data-part-root]:disabled,[data-ui-toggle][data-part-root][data-disabled]{background:transparent;color:var(--slotted-toggle-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:not-allowed}[data-ui-toggle][data-part-root][data-variant=outline]:disabled,[data-ui-toggle][data-part-root][data-variant=outline][data-disabled]{border-color:var( --slotted-toggle-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui-toggle][data-part-root][data-pressed]:disabled,[data-ui-toggle][data-part-root][data-pressed][data-disabled]{background:var( --slotted-toggle-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) )}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
141
143
  }
142
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToggle, decorators: [{
143
145
  type: Component,
144
- args: [{ selector: 'button[slToggle]', standalone: true, exportAs: 'slToggle', template: `<ng-content select="[slToggleIcon]" /> <span data-part="label"><ng-content /></span>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
146
+ args: [{ selector: 'button[slToggle]', standalone: true, exportAs: 'slToggle', template: `<ng-content select="[slToggleIcon]" />
147
+ <span data-part="label" data-part-label=""><ng-content /></span>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
145
148
  'data-ui': 'toggle',
149
+ 'data-ui-toggle': '',
146
150
  'data-part': 'root',
151
+ 'data-part-root': '',
147
152
  '[attr.type]': 'type',
148
153
  '[attr.aria-pressed]': 'isPressed()',
149
154
  '[attr.data-pressed]': "isPressed() ? '' : null",
@@ -151,7 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
151
156
  '[attr.data-size]': 'resolvedSize()',
152
157
  '[attr.data-variant]': 'resolvedVariant()',
153
158
  '[disabled]': 'disabled()',
154
- }, styles: ["@layer slotted.components{[data-ui=toggle][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-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_border-color: var( --slotted-toggle-border-color, var(--slotted-control-border-color, ButtonBorder) );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-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;font-family:var(--slotted-control-font-family, ui-sans-serif, system-ui, sans-serif);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;max-inline-size:100%;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;touch-action:manipulation;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);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-tap-highlight-color:transparent}[data-ui=toggle][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][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][data-part=root]:not(:has([data-part=label]:not(:empty))){inline-size:var(--_height);padding-inline:0}[data-ui=toggle] [data-part=label]:empty{display:none}[data-ui=toggle] [data-part=icon]{--slotted-icon-size: var(--_icon-size);block-size:var(--_icon-size);display:inline-flex;flex:none;font-size:var(--_icon-size);inline-size:var(--_icon-size)}[data-ui=toggle] [data-part=icon]>*{block-size:100%;display:block;inline-size:100%}[data-ui=toggle] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=toggle][data-part=root][data-variant=outline]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-shadow, var(--slotted-control-shadow, none))}[data-ui=toggle][data-part=root][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var(--slotted-toggle-pressed-color, var(--slotted-tone-accent-text, HighlightText))}[data-ui=toggle][data-part=root]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=toggle][data-part=root]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle][data-part=root][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui=toggle][data-part=root][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui=toggle][data-part=root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=toggle][data-part=root]:disabled,[data-ui=toggle][data-part=root][data-disabled]{background:transparent;color:var(--slotted-toggle-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:not-allowed}[data-ui=toggle][data-part=root][data-variant=outline]:disabled,[data-ui=toggle][data-part=root][data-variant=outline][data-disabled]{border-color:var( --slotted-toggle-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui=toggle][data-part=root][data-pressed]:disabled,[data-ui=toggle][data-part=root][data-pressed][data-disabled]{background:var( --slotted-toggle-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) )}}\n"] }]
159
+ }, styles: ["@layer slotted.components{[data-ui-toggle][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-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_border-color: var( --slotted-toggle-border-color, var(--slotted-control-border-color, ButtonBorder) );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-color, var(--slotted-text, ButtonText));cursor:pointer;display:inline-flex;font-family:var(--slotted-control-font-family, ui-sans-serif, system-ui, sans-serif);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;max-inline-size:100%;min-inline-size:var(--_height);padding-block:0;padding-inline:var(--_padding-inline);position:relative;touch-action:manipulation;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);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-tap-highlight-color:transparent}[data-ui-toggle][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][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][data-part-root]:not(:has([data-part-label]:not(:empty))){inline-size:var(--_height);padding-inline:0}[data-ui-toggle] [data-part-label]:empty{display:none}[data-ui-toggle] [data-part-icon]{--slotted-icon-size: var(--_icon-size);block-size:var(--_icon-size);display:inline-flex;flex:none;font-size:var(--_icon-size);inline-size:var(--_icon-size)}[data-ui-toggle] [data-part-icon]>*{block-size:100%;display:block;inline-size:100%}[data-ui-toggle] [data-part-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui-toggle][data-part-root][data-variant=outline]{border-color:var(--_border-color);box-shadow:var(--slotted-toggle-shadow, var(--slotted-control-shadow, none))}[data-ui-toggle][data-part-root][data-pressed]:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) );color:var(--slotted-toggle-pressed-color, var(--slotted-tone-accent-text, HighlightText))}[data-ui-toggle][data-part-root]:hover:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui-toggle][data-part-root]:active:not(:disabled):not([data-disabled]):not([data-pressed]){background:var( --slotted-toggle-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle][data-part-root][data-pressed]:hover:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-hover-background, var(--slotted-tone-accent-subtle-hover, Highlight) )}[data-ui-toggle][data-part-root][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-pressed-background, var(--slotted-tone-accent-subtle-active, Highlight) );transition-duration:var(--slotted-duration-instant)}[data-ui-toggle][data-part-root][data-variant=chips]{border-color:var(--_border-color);border-radius:var(--slotted-toggle-chips-radius, var(--slotted-radius-full, 9999px));font-weight:var(--slotted-font-weight-medium, 500)}[data-ui-toggle][data-part-root][data-variant=chips][data-pressed]:not(:disabled):not([data-disabled]),[data-ui-toggle][data-part-root][data-variant=chips][data-pressed]:active:not(:disabled):not([data-disabled]){background:var( --slotted-toggle-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );border-color:var( --slotted-toggle-chips-pressed-background, var(--slotted-tone-neutral-solid, CanvasText) );color:var(--slotted-toggle-chips-pressed-color, var(--slotted-tone-neutral-on-solid, Canvas))}[data-ui-toggle][data-part-root][data-variant=chips][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][data-part-root][data-variant=chips]:disabled,[data-ui-toggle][data-part-root][data-variant=chips][data-disabled]{border-color:var(--slotted-disabled-border, GrayText)}[data-ui-toggle][data-part-root]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui-toggle][data-part-root]:disabled,[data-ui-toggle][data-part-root][data-disabled]{background:transparent;color:var(--slotted-toggle-disabled-color, var(--slotted-disabled-foreground, GrayText));cursor:not-allowed}[data-ui-toggle][data-part-root][data-variant=outline]:disabled,[data-ui-toggle][data-part-root][data-variant=outline][data-disabled]{border-color:var( --slotted-toggle-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui-toggle][data-part-root][data-pressed]:disabled,[data-ui-toggle][data-part-root][data-pressed][data-disabled]{background:var( --slotted-toggle-disabled-pressed-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-toggle-pressed-border-color, var(--slotted-tone-accent-border, Highlight) )}}\n"] }]
155
160
  }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], pressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "pressed", required: false }] }], defaultPressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPressed", required: false }] }], pressedChange: [{ type: i0.Output, args: ["pressedChange"] }] } });
156
161
 
157
162
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-toggle.mjs","sources":["../../toggle/src/toggle-defaults.ts","../../toggle/src/toggle.ts","../../toggle/src/slotted-angular-toggle.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the control sits at. */\nexport type ToggleSize = 'sm' | 'md' | 'lg';\n\n/**\n * Whether the control is framed or bare. `ghost` is the toggle that sits\n * inside something already framed — a toolbar, a card header. There is no\n * tone axis: a mode is one colour when it is on, and an action that persists\n * in one of five tones is `SlToggleButton`.\n */\nexport type ToggleVariant = 'outline' | 'ghost';\n\nexport interface ToggleDefaults {\n size: ToggleSize;\n variant: ToggleVariant;\n}\n\nconst FALLBACK: ToggleDefaults = {\n size: 'md',\n variant: 'outline',\n};\n\nexport const TOGGLE_DEFAULTS = new InjectionToken<ToggleDefaults>('slotted toggle defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its toggles are drawn — a toolbar of ghost\n * modes, a form of framed ones — rather than repeating the two inputs on\n * every control. A toggle that states either itself still wins.\n */\nexport function provideToggleDefaults(defaults: Partial<ToggleDefaults>) {\n return {\n provide: TOGGLE_DEFAULTS,\n useFactory: (): ToggleDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a toggle renders as here, before it states anything of its own. */\nexport function injectToggleDefaults(): ToggleDefaults {\n return inject(TOGGLE_DEFAULTS);\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectToggleDefaults } from './toggle-defaults';\nimport type { ToggleSize, ToggleVariant } from './toggle-defaults';\n\n/** Why the state moved. A toggle can produce exactly these two. */\nexport type TogglePressedReason = 'pointer' | 'keyboard';\n\n/**\n * The mark beside the words, or the whole content of an icon-only toggle. A\n * marker on the consumer's own element rather than a wrapper, so an `svg`, an\n * `sl-icon` and a masked `span` all work and none loses its own semantics. It\n * is hidden from the reading order, because the words beside it — or the\n * `aria-label` on the button — are what a reader hears.\n */\n@Directive({\n selector: '[slToggleIcon]',\n standalone: true,\n exportAs: 'slToggleIcon',\n host: {\n 'data-part': 'icon',\n 'aria-hidden': 'true',\n },\n})\nexport class SlToggleIcon {}\n\n/**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count. It is why `Space`, `Enter` and a pointer are told apart\n * without a key listener existing anywhere in the family.\n */\nfunction activationReason(event: Event): TogglePressedReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * A two-state button standing on its own: a mode — Bold, Wrap, Pin — that is\n * true the moment it is pressed. `aria-pressed` is written in both states, so\n * the control is announced as a toggle rather than as a button that happens\n * to be pressed, and its label never changes with its state, which the APG\n * Button pattern calls critical.\n *\n * `SlToggleButton` is the other member: an action that persists — Follow,\n * Subscribe — which reaches a server and waits, in one of five tones. The two\n * hold one state model and one output shape, so a consumer moving between\n * them changes no handler. Inside `slToolbar` the bar owns the tab stop and\n * the arrows, and this control writes no listener of its own.\n *\n * The component is a directive on the element the consumer wrote, so\n * substituting the element is writing a different one — and it has to stay a\n * `button`: `aria-pressed` on a link is a link announcing a state a link does\n * not hold.\n */\n@Component({\n selector: 'button[slToggle]',\n standalone: true,\n exportAs: 'slToggle',\n template: `<ng-content select=\"[slToggleIcon]\" /> <span data-part=\"label\"><ng-content /></span>`,\n styleUrl: '../../../styles/src/toggle/toggle.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'toggle',\n 'data-part': 'root',\n '[attr.type]': 'type',\n '[attr.aria-pressed]': 'isPressed()',\n '[attr.data-pressed]': \"isPressed() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[disabled]': 'disabled()',\n },\n})\nexport class SlToggle implements AfterViewInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly size = input<ToggleSize | undefined>(undefined);\n readonly variant = input<ToggleVariant | undefined>(undefined);\n\n /** Present means controlled, for the life of the component. */\n readonly pressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** The value an uncontrolled toggle starts from, read once. */\n readonly defaultPressed = input(false, { transform: booleanAttribute });\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\n * `[(pressed)]` because a two-way binding has one slot and cannot carry any\n * of those — the reason `SlToggleButton` records for the same choice.\n */\n readonly pressedChange = output<ChangeRequest<boolean>>();\n\n private readonly defaults = injectToggleDefaults();\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n /**\n * A `type` the consumer wrote survives: a toggle inside a form is a\n * `button` unless the consumer says `submit`, and the attribute is read\n * before the host binding writes it.\n */\n private readonly writtenType = inject(new HostAttributeToken('type'), { optional: true });\n protected readonly type = this.writtenType ?? 'button';\n\n private readonly own: WritableSignal<boolean | undefined> = signal(undefined);\n\n readonly isPressed = computed(() => this.pressed() ?? this.own() ?? this.defaultPressed());\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n\n /**\n * After the view, not in the constructor. A `(click)` written on the same\n * element is bound when the view is created, so a listener registered any\n * earlier runs first and reads `defaultPrevented` before the consumer has\n * had the chance to set it — and a refused activation would move the state\n * anyway.\n */\n ngAfterViewInit() {\n const listener = (event: Event) => {\n if (this.disabled() || event.defaultPrevented) return;\n this.request(event);\n };\n this.element.addEventListener('click', listener);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', listener));\n }\n\n private request(event: Event) {\n const next = !this.isPressed();\n const state = createControllable<boolean>({\n controlled: this.pressed(),\n initial: this.isPressed(),\n onRequest: (request) => this.pressedChange.emit(request),\n });\n if (state.request(next, activationReason(event), event)) this.own.set(next);\n }\n}\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-toggle.mjs","sources":["../../toggle/src/toggle-defaults.ts","../../toggle/src/toggle.ts","../../toggle/src/slotted-angular-toggle.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\n/** The type step the control sits at. */\nexport type ToggleSize = 'sm' | 'md' | 'lg';\n\n/**\n * Whether the control is framed or bare. `ghost` is the toggle that sits\n * inside something already framed — a toolbar, a card header. There is no\n * tone axis: a mode is one colour when it is on, and an action that persists\n * in one of five tones is `SlToggleButton`.\n */\nexport type ToggleVariant = 'outline' | 'ghost' | 'chips';\n\nexport interface ToggleDefaults {\n size: ToggleSize;\n variant: ToggleVariant;\n}\n\nconst FALLBACK: ToggleDefaults = {\n size: 'md',\n variant: 'outline',\n};\n\nexport const TOGGLE_DEFAULTS = new InjectionToken<ToggleDefaults>('slotted toggle defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its toggles are drawn — a toolbar of ghost\n * modes, a form of framed ones — rather than repeating the two inputs on\n * every control. A toggle that states either itself still wins.\n */\nexport function provideToggleDefaults(defaults: Partial<ToggleDefaults>) {\n return {\n provide: TOGGLE_DEFAULTS,\n useFactory: (): ToggleDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a toggle renders as here, before it states anything of its own. */\nexport function injectToggleDefaults(): ToggleDefaults {\n return inject(TOGGLE_DEFAULTS);\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectToggleDefaults } from './toggle-defaults';\nimport type { ToggleSize, ToggleVariant } from './toggle-defaults';\n\n/** Why the state moved. A toggle can produce exactly these two. */\nexport type TogglePressedReason = 'pointer' | 'keyboard';\n\n/**\n * The mark beside the words, or the whole content of an icon-only toggle. A\n * marker on the consumer's own element rather than a wrapper, so an `svg`, an\n * `sl-icon` and a masked `span` all work and none loses its own semantics. It\n * is hidden from the reading order, because the words beside it — or the\n * `aria-label` on the button — are what a reader hears.\n */\n@Directive({\n selector: '[slToggleIcon]',\n standalone: true,\n exportAs: 'slToggleIcon',\n host: {\n 'data-part': 'icon',\n 'data-part-icon': '',\n 'aria-hidden': 'true',\n },\n})\nexport class SlToggleIcon {}\n\n/**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count. It is why `Space`, `Enter` and a pointer are told apart\n * without a key listener existing anywhere in the family.\n */\nfunction activationReason(event: Event): TogglePressedReason {\n return event instanceof MouseEvent && event.detail === 0 ? 'keyboard' : 'pointer';\n}\n\n/**\n * A two-state button standing on its own: a mode — Bold, Wrap, Pin — that is\n * true the moment it is pressed. `aria-pressed` is written in both states, so\n * the control is announced as a toggle rather than as a button that happens\n * to be pressed, and its label never changes with its state, which the APG\n * Button pattern calls critical.\n *\n * `SlToggleButton` is the other member: an action that persists — Follow,\n * Subscribe — which reaches a server and waits, in one of five tones. The two\n * hold one state model and one output shape, so a consumer moving between\n * them changes no handler. Inside `slToolbar` the bar owns the tab stop and\n * the arrows, and this control writes no listener of its own.\n *\n * The component is a directive on the element the consumer wrote, so\n * substituting the element is writing a different one — and it has to stay a\n * `button`: `aria-pressed` on a link is a link announcing a state a link does\n * not hold.\n */\n@Component({\n selector: 'button[slToggle]',\n standalone: true,\n exportAs: 'slToggle',\n template: `<ng-content select=\"[slToggleIcon]\" />\n <span data-part=\"label\" data-part-label=\"\"><ng-content /></span>`,\n styleUrl: '../../../styles/src/toggle/toggle.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'toggle',\n 'data-ui-toggle': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.type]': 'type',\n '[attr.aria-pressed]': 'isPressed()',\n '[attr.data-pressed]': \"isPressed() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[disabled]': 'disabled()',\n },\n})\nexport class SlToggle implements AfterViewInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly size = input<ToggleSize | undefined>(undefined);\n readonly variant = input<ToggleVariant | undefined>(undefined);\n\n /** Present means controlled, for the life of the component. */\n readonly pressed = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** The value an uncontrolled toggle starts from, read once. */\n readonly defaultPressed = input(false, { transform: booleanAttribute });\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\n * `[(pressed)]` because a two-way binding has one slot and cannot carry any\n * of those — the reason `SlToggleButton` records for the same choice.\n */\n readonly pressedChange = output<ChangeRequest<boolean>>();\n\n private readonly defaults = injectToggleDefaults();\n private readonly element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n /**\n * A `type` the consumer wrote survives: a toggle inside a form is a\n * `button` unless the consumer says `submit`, and the attribute is read\n * before the host binding writes it.\n */\n private readonly writtenType = inject(new HostAttributeToken('type'), { optional: true });\n protected readonly type = this.writtenType ?? 'button';\n\n private readonly own: WritableSignal<boolean | undefined> = signal(undefined);\n\n readonly isPressed = computed(() => this.pressed() ?? this.own() ?? this.defaultPressed());\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n\n /**\n * After the view, not in the constructor. A `(click)` written on the same\n * element is bound when the view is created, so a listener registered any\n * earlier runs first and reads `defaultPrevented` before the consumer has\n * had the chance to set it — and a refused activation would move the state\n * anyway.\n */\n ngAfterViewInit() {\n const listener = (event: Event) => {\n if (this.disabled() || event.defaultPrevented) return;\n this.request(event);\n };\n this.element.addEventListener('click', listener);\n this.destroyRef.onDestroy(() => this.element.removeEventListener('click', listener));\n }\n\n private request(event: Event) {\n const next = !this.isPressed();\n const state = createControllable<boolean>({\n controlled: this.pressed(),\n initial: this.isPressed(),\n onRequest: (request) => this.pressedChange.emit(request),\n });\n if (state.request(next, activationReason(event), event)) this.own.set(next);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,10 @@ import { createRovingTabindex, toolbarOwnedKeys, TOOLBAR_ITEM_SELECTOR } from '@
2
2
  import { createCollapse } from '@slotted/core/overflow';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, inject, input, booleanAttribute, output, ElementRef, signal, computed, DestroyRef, afterNextRender, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive, HostAttributeToken, viewChild, Injector } from '@angular/core';
5
+ import { toolbarMessages } from '@slotted/core/i18n';
6
+ import { writeSelectorKey } from '@slotted/core/selector-key';
5
7
  import { NgTemplateOutlet } from '@angular/common';
8
+ import { injectMessages } from '@slotted/angular/i18n';
6
9
  import { SlGlyph, SlIcon } from '@slotted/angular/icon';
7
10
  import { SlMenu, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';
8
11
 
@@ -214,13 +217,15 @@ class SlToolbar {
214
217
  }
215
218
  collapse = null;
216
219
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
217
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToolbar, isStandalone: true, selector: "[slToolbar]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", 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 }, overflow: { classPropertyName: "overflow", publicName: "overflow", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowChange: "overflowChange" }, host: { attributes: { "data-ui": "toolbar", "data-part": "root", "role": "toolbar" }, properties: { "attr.data-orientation": "resolvedOrientation()", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-overflow": "resolvedOverflow()", "attr.data-collapsed": "collapsedCount()", "attr.aria-orientation": "ariaOrientation()" } }, exportAs: ["slToolbar"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=toolbar]{--_gap: var(--slotted-control-gap-md, .375rem);--_inset: var(--slotted-space-2, .25rem);--_height: var(--slotted-control-height-md, 34px);--_separator-inset: var(--slotted-space-2, .25rem);--_font-size: var(--slotted-control-font-size-md, .875rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_inner-size: var(--slotted-control-inner-size-md, 24px);--_pad: var(--_inset);align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-toolbar-gap, var(--_gap));min-inline-size:0;padding:var(--slotted-toolbar-inset, var(--_pad))}[data-ui=toolbar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .25rem);--_inset: var(--slotted-space-1, .125rem);--_height: var(--slotted-control-height-sm, 30px);--_separator-inset: var(--slotted-space-1, .125rem);--_font-size: var(--slotted-control-font-size-sm, .8125rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_inner-size: var(--slotted-control-inner-size-sm, 22px)}[data-ui=toolbar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset: var(--slotted-space-3, .375rem);--_height: var(--slotted-control-height-lg, 40px);--_separator-inset: var(--slotted-space-3, .375rem);--_font-size: var(--slotted-control-font-size-lg, .9375rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_inner-size: var(--slotted-control-inner-size-lg, 28px)}[data-ui=toolbar]:empty{display:none}[data-ui=toolbar][data-orientation=vertical]{align-items:stretch;flex-direction:column;inline-size:fit-content}[data-ui=toolbar][data-variant=outline]{--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );background-color:var(--slotted-toolbar-background, var(--slotted-surface-raised));border:var(--slotted-border-width-thin, 1px) solid var(--slotted-toolbar-border-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-radius-md, 6px)}[data-ui=toolbar]:is([data-overflow=scroll],[data-overflow=menu]){--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}[data-ui=toolbar]:is([data-overflow=scroll],[data-overflow=menu])[data-orientation=vertical]{inline-size:auto;overflow-x:hidden;overflow-y:auto}[data-ui=toolbar]:is([data-overflow=scroll],[data-overflow=menu])>*{flex:none}[data-ui=toolbar] [data-part=item]{align-items:center;display:inline-flex;min-inline-size:0}[data-ui=toolbar][data-orientation=vertical] [data-part=item]{align-items:stretch;flex-direction:column}[data-ui=toolbar] :is([data-part=item],[data-part=group],[data-part=separator],[data-part=overflow])[hidden]{display:none}[data-ui=toolbar] [data-part=overflow]{--slotted-icon-size: var(--_icon-size);align-items:center;appearance:none;background-color:transparent;border:0;border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-toolbar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)),var(--_inner-size)));padding:0;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=toolbar] [data-part=overflow]:not(:disabled):hover{background-color:var( --slotted-toolbar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=toolbar] [data-part=overflow]:not(:disabled):active{background-color:var( --slotted-toolbar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=toolbar] [data-part=overflow][data-open]{background-color:var( --slotted-toolbar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-toolbar-overflow-hover-color, var(--slotted-text, CanvasText))}@media(pointer:coarse){[data-ui=toolbar] [data-part=overflow]{min-block-size:max(var(--slotted-target-comfortable, 44px),var(--_height));min-inline-size:max(var(--slotted-target-comfortable, 44px),var(--_height))}}[data-ui=toolbar] [data-part=overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui=toolbar] [data-part=overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui=toolbar] [data-part=group]{align-items:center;display:flex;flex-wrap:inherit;gap:calc(var(--_gap) / 2);min-inline-size:0}[data-ui=toolbar][data-orientation=vertical] [data-part=group]{align-items:stretch;flex-direction:column}[data-ui=toolbar] [data-part=group]:not(:first-child){margin-inline-start:calc(var(--_gap) / 2)}[data-ui=toolbar] [data-part=group]:not(:last-child){margin-inline-end:calc(var(--_gap) / 2)}[data-ui=toolbar][data-orientation=vertical] [data-part=group]:not(:first-child){margin-block-start:calc(var(--_gap) / 2);margin-inline-start:0}[data-ui=toolbar][data-orientation=vertical] [data-part=group]:not(:last-child){margin-block-end:calc(var(--_gap) / 2);margin-inline-end:0}[data-ui=toolbar] [data-part=separator]{align-self:stretch;background-color:var( --slotted-toolbar-separator-color, var(--slotted-control-border-color, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui=toolbar][data-orientation=vertical] [data-part=separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}@media(forced-colors:active){[data-ui=toolbar] [data-part=separator]{background-color:CanvasText;forced-color-adjust:none}}[data-ui=toolbar] [data-part=spacer]{flex:1 1 0;min-block-size:0;min-inline-size:0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlToolbar, isStandalone: true, selector: "[slToolbar]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", 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 }, overflow: { classPropertyName: "overflow", publicName: "overflow", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overflowChange: "overflowChange" }, host: { attributes: { "data-ui": "toolbar", "data-ui-toolbar": "", "data-part": "root", "data-part-root": "", "role": "toolbar" }, properties: { "attr.data-orientation": "resolvedOrientation()", "attr.data-size": "resolvedSize()", "attr.data-variant": "resolvedVariant()", "attr.data-overflow": "resolvedOverflow()", "attr.data-collapsed": "collapsedCount()", "attr.aria-orientation": "ariaOrientation()" } }, exportAs: ["slToolbar"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui-toolbar]{--_gap: var(--slotted-control-gap-md, .375rem);--_inset: var(--slotted-space-2, .25rem);--_height: var(--slotted-control-height-md, 34px);--_separator-inset: var(--slotted-space-2, .25rem);--_font-size: var(--slotted-control-font-size-md, .875rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_inner-size: var(--slotted-control-inner-size-md, 24px);--_pad: var(--_inset);align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-toolbar-gap, var(--_gap));min-inline-size:0;padding:var(--slotted-toolbar-inset, var(--_pad))}[data-ui-toolbar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .25rem);--_inset: var(--slotted-space-1, .125rem);--_height: var(--slotted-control-height-sm, 30px);--_separator-inset: var(--slotted-space-1, .125rem);--_font-size: var(--slotted-control-font-size-sm, .8125rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_inner-size: var(--slotted-control-inner-size-sm, 22px)}[data-ui-toolbar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset: var(--slotted-space-3, .375rem);--_height: var(--slotted-control-height-lg, 40px);--_separator-inset: var(--slotted-space-3, .375rem);--_font-size: var(--slotted-control-font-size-lg, .9375rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_inner-size: var(--slotted-control-inner-size-lg, 28px)}[data-ui-toolbar]:empty{display:none}[data-ui-toolbar][data-orientation=vertical]{align-items:stretch;flex-direction:column;inline-size:fit-content}[data-ui-toolbar][data-variant=outline]{--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );background-color:var(--slotted-toolbar-background, var(--slotted-surface-raised));border:var(--slotted-border-width-thin, 1px) solid var(--slotted-toolbar-border-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-radius-md, 6px)}[data-ui-toolbar]:is([data-overflow=scroll],[data-overflow=menu]){--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}[data-ui-toolbar]:is([data-overflow=scroll],[data-overflow=menu])[data-orientation=vertical]{inline-size:auto;overflow-x:hidden;overflow-y:auto}[data-ui-toolbar]:is([data-overflow=scroll],[data-overflow=menu])>*{flex:none}[data-ui-toolbar] [data-part-item]{align-items:center;display:inline-flex;min-inline-size:0}[data-ui-toolbar][data-orientation=vertical] [data-part-item]{align-items:stretch;flex-direction:column}[data-ui-toolbar] :is([data-part-item],[data-part-group],[data-part-separator],[data-part-overflow])[hidden]{display:none}[data-ui-toolbar] [data-part-overflow]{--slotted-icon-size: var(--_icon-size);align-items:center;appearance:none;background-color:transparent;border:0;border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-toolbar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)),var(--_inner-size)));padding:0;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui-toolbar] [data-part-overflow]:not(:disabled):hover{background-color:var( --slotted-toolbar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui-toolbar] [data-part-overflow]:not(:disabled):active{background-color:var( --slotted-toolbar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui-toolbar] [data-part-overflow][data-open]{background-color:var( --slotted-toolbar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-toolbar-overflow-hover-color, var(--slotted-text, CanvasText))}@media(pointer:coarse){[data-ui-toolbar] [data-part-overflow]{min-block-size:max(var(--slotted-target-comfortable, 44px),var(--_height));min-inline-size:max(var(--slotted-target-comfortable, 44px),var(--_height))}}[data-ui-toolbar] [data-part-overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui-toolbar] [data-part-overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui-toolbar] [data-part-group]{align-items:center;display:flex;flex-wrap:inherit;gap:calc(var(--_gap) / 2);min-inline-size:0}[data-ui-toolbar][data-orientation=vertical] [data-part-group]{align-items:stretch;flex-direction:column}[data-ui-toolbar] [data-part-group]:not(:first-child){margin-inline-start:calc(var(--_gap) / 2)}[data-ui-toolbar] [data-part-group]:not(:last-child){margin-inline-end:calc(var(--_gap) / 2)}[data-ui-toolbar][data-orientation=vertical] [data-part-group]:not(:first-child){margin-block-start:calc(var(--_gap) / 2);margin-inline-start:0}[data-ui-toolbar][data-orientation=vertical] [data-part-group]:not(:last-child){margin-block-end:calc(var(--_gap) / 2);margin-inline-end:0}[data-ui-toolbar] [data-part-separator]{align-self:stretch;background-color:var( --slotted-toolbar-separator-color, var(--slotted-control-border-color, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui-toolbar][data-orientation=vertical] [data-part-separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}@media(forced-colors:active){[data-ui-toolbar] [data-part-separator]{background-color:CanvasText;forced-color-adjust:none}}[data-ui-toolbar] [data-part-spacer]{flex:1 1 0;min-block-size:0;min-inline-size:0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
218
221
  }
219
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbar, decorators: [{
220
223
  type: Component,
221
224
  args: [{ selector: '[slToolbar]', standalone: true, exportAs: 'slToolbar', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
222
225
  'data-ui': 'toolbar',
226
+ 'data-ui-toolbar': '',
223
227
  'data-part': 'root',
228
+ 'data-part-root': '',
224
229
  role: 'toolbar',
225
230
  '[attr.data-orientation]': 'resolvedOrientation()',
226
231
  '[attr.data-size]': 'resolvedSize()',
@@ -228,7 +233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
228
233
  '[attr.data-overflow]': 'resolvedOverflow()',
229
234
  '[attr.data-collapsed]': 'collapsedCount()',
230
235
  '[attr.aria-orientation]': 'ariaOrientation()',
231
- }, styles: ["@layer slotted.components{[data-ui=toolbar]{--_gap: var(--slotted-control-gap-md, .375rem);--_inset: var(--slotted-space-2, .25rem);--_height: var(--slotted-control-height-md, 34px);--_separator-inset: var(--slotted-space-2, .25rem);--_font-size: var(--slotted-control-font-size-md, .875rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_inner-size: var(--slotted-control-inner-size-md, 24px);--_pad: var(--_inset);align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-toolbar-gap, var(--_gap));min-inline-size:0;padding:var(--slotted-toolbar-inset, var(--_pad))}[data-ui=toolbar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .25rem);--_inset: var(--slotted-space-1, .125rem);--_height: var(--slotted-control-height-sm, 30px);--_separator-inset: var(--slotted-space-1, .125rem);--_font-size: var(--slotted-control-font-size-sm, .8125rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_inner-size: var(--slotted-control-inner-size-sm, 22px)}[data-ui=toolbar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset: var(--slotted-space-3, .375rem);--_height: var(--slotted-control-height-lg, 40px);--_separator-inset: var(--slotted-space-3, .375rem);--_font-size: var(--slotted-control-font-size-lg, .9375rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_inner-size: var(--slotted-control-inner-size-lg, 28px)}[data-ui=toolbar]:empty{display:none}[data-ui=toolbar][data-orientation=vertical]{align-items:stretch;flex-direction:column;inline-size:fit-content}[data-ui=toolbar][data-variant=outline]{--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );background-color:var(--slotted-toolbar-background, var(--slotted-surface-raised));border:var(--slotted-border-width-thin, 1px) solid var(--slotted-toolbar-border-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-radius-md, 6px)}[data-ui=toolbar]:is([data-overflow=scroll],[data-overflow=menu]){--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}[data-ui=toolbar]:is([data-overflow=scroll],[data-overflow=menu])[data-orientation=vertical]{inline-size:auto;overflow-x:hidden;overflow-y:auto}[data-ui=toolbar]:is([data-overflow=scroll],[data-overflow=menu])>*{flex:none}[data-ui=toolbar] [data-part=item]{align-items:center;display:inline-flex;min-inline-size:0}[data-ui=toolbar][data-orientation=vertical] [data-part=item]{align-items:stretch;flex-direction:column}[data-ui=toolbar] :is([data-part=item],[data-part=group],[data-part=separator],[data-part=overflow])[hidden]{display:none}[data-ui=toolbar] [data-part=overflow]{--slotted-icon-size: var(--_icon-size);align-items:center;appearance:none;background-color:transparent;border:0;border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-toolbar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)),var(--_inner-size)));padding:0;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=toolbar] [data-part=overflow]:not(:disabled):hover{background-color:var( --slotted-toolbar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=toolbar] [data-part=overflow]:not(:disabled):active{background-color:var( --slotted-toolbar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=toolbar] [data-part=overflow][data-open]{background-color:var( --slotted-toolbar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-toolbar-overflow-hover-color, var(--slotted-text, CanvasText))}@media(pointer:coarse){[data-ui=toolbar] [data-part=overflow]{min-block-size:max(var(--slotted-target-comfortable, 44px),var(--_height));min-inline-size:max(var(--slotted-target-comfortable, 44px),var(--_height))}}[data-ui=toolbar] [data-part=overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui=toolbar] [data-part=overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui=toolbar] [data-part=group]{align-items:center;display:flex;flex-wrap:inherit;gap:calc(var(--_gap) / 2);min-inline-size:0}[data-ui=toolbar][data-orientation=vertical] [data-part=group]{align-items:stretch;flex-direction:column}[data-ui=toolbar] [data-part=group]:not(:first-child){margin-inline-start:calc(var(--_gap) / 2)}[data-ui=toolbar] [data-part=group]:not(:last-child){margin-inline-end:calc(var(--_gap) / 2)}[data-ui=toolbar][data-orientation=vertical] [data-part=group]:not(:first-child){margin-block-start:calc(var(--_gap) / 2);margin-inline-start:0}[data-ui=toolbar][data-orientation=vertical] [data-part=group]:not(:last-child){margin-block-end:calc(var(--_gap) / 2);margin-inline-end:0}[data-ui=toolbar] [data-part=separator]{align-self:stretch;background-color:var( --slotted-toolbar-separator-color, var(--slotted-control-border-color, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui=toolbar][data-orientation=vertical] [data-part=separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}@media(forced-colors:active){[data-ui=toolbar] [data-part=separator]{background-color:CanvasText;forced-color-adjust:none}}[data-ui=toolbar] [data-part=spacer]{flex:1 1 0;min-block-size:0;min-inline-size:0}}\n"] }]
236
+ }, styles: ["@layer slotted.components{[data-ui-toolbar]{--_gap: var(--slotted-control-gap-md, .375rem);--_inset: var(--slotted-space-2, .25rem);--_height: var(--slotted-control-height-md, 34px);--_separator-inset: var(--slotted-space-2, .25rem);--_font-size: var(--slotted-control-font-size-md, .875rem);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_inner-size: var(--slotted-control-inner-size-md, 24px);--_pad: var(--_inset);align-items:center;display:flex;flex-wrap:wrap;gap:var(--slotted-toolbar-gap, var(--_gap));min-inline-size:0;padding:var(--slotted-toolbar-inset, var(--_pad))}[data-ui-toolbar][data-size=sm]{--_gap: var(--slotted-control-gap-sm, .25rem);--_inset: var(--slotted-space-1, .125rem);--_height: var(--slotted-control-height-sm, 30px);--_separator-inset: var(--slotted-space-1, .125rem);--_font-size: var(--slotted-control-font-size-sm, .8125rem);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_inner-size: var(--slotted-control-inner-size-sm, 22px)}[data-ui-toolbar][data-size=lg]{--_gap: var(--slotted-control-gap-lg, .5rem);--_inset: var(--slotted-space-3, .375rem);--_height: var(--slotted-control-height-lg, 40px);--_separator-inset: var(--slotted-space-3, .375rem);--_font-size: var(--slotted-control-font-size-lg, .9375rem);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_inner-size: var(--slotted-control-inner-size-lg, 28px)}[data-ui-toolbar]:empty{display:none}[data-ui-toolbar][data-orientation=vertical]{align-items:stretch;flex-direction:column;inline-size:fit-content}[data-ui-toolbar][data-variant=outline]{--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );background-color:var(--slotted-toolbar-background, var(--slotted-surface-raised));border:var(--slotted-border-width-thin, 1px) solid var(--slotted-toolbar-border-color, var(--slotted-border-subtle, ButtonBorder));border-radius:var(--slotted-radius-md, 6px)}[data-ui-toolbar]:is([data-overflow=scroll],[data-overflow=menu]){--_pad: max( var(--_inset), calc(var(--slotted-focus-ring-offset, 2px) + var(--slotted-focus-ring-width, 2px)) );flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}[data-ui-toolbar]:is([data-overflow=scroll],[data-overflow=menu])[data-orientation=vertical]{inline-size:auto;overflow-x:hidden;overflow-y:auto}[data-ui-toolbar]:is([data-overflow=scroll],[data-overflow=menu])>*{flex:none}[data-ui-toolbar] [data-part-item]{align-items:center;display:inline-flex;min-inline-size:0}[data-ui-toolbar][data-orientation=vertical] [data-part-item]{align-items:stretch;flex-direction:column}[data-ui-toolbar] :is([data-part-item],[data-part-group],[data-part-separator],[data-part-overflow])[hidden]{display:none}[data-ui-toolbar] [data-part-overflow]{--slotted-icon-size: var(--_icon-size);align-items:center;appearance:none;background-color:transparent;border:0;border-radius:var(--slotted-control-radius, 4px);color:var(--slotted-toolbar-overflow-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:none;font-family:var(--slotted-control-font-family, inherit);justify-content:center;line-height:1;min-block-size:var(--_height);min-inline-size:max(var(--slotted-target-min, 24px),min(calc(var(--_icon-size) + 2 * var(--slotted-space-2, .25rem)),var(--_inner-size)));padding:0;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui-toolbar] [data-part-overflow]:not(:disabled):hover{background-color:var( --slotted-toolbar-overflow-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui-toolbar] [data-part-overflow]:not(:disabled):active{background-color:var( --slotted-toolbar-overflow-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui-toolbar] [data-part-overflow][data-open]{background-color:var( --slotted-toolbar-overflow-open-background, var(--slotted-tone-secondary-subtle-active) );color:var(--slotted-toolbar-overflow-hover-color, var(--slotted-text, CanvasText))}@media(pointer:coarse){[data-ui-toolbar] [data-part-overflow]{min-block-size:max(var(--slotted-target-comfortable, 44px),var(--_height));min-inline-size:max(var(--slotted-target-comfortable, 44px),var(--_height))}}[data-ui-toolbar] [data-part-overflow]:disabled{color:var(--slotted-disabled-foreground, GrayText);cursor:default}[data-ui-toolbar] [data-part-overflow]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px))}[data-ui-toolbar] [data-part-group]{align-items:center;display:flex;flex-wrap:inherit;gap:calc(var(--_gap) / 2);min-inline-size:0}[data-ui-toolbar][data-orientation=vertical] [data-part-group]{align-items:stretch;flex-direction:column}[data-ui-toolbar] [data-part-group]:not(:first-child){margin-inline-start:calc(var(--_gap) / 2)}[data-ui-toolbar] [data-part-group]:not(:last-child){margin-inline-end:calc(var(--_gap) / 2)}[data-ui-toolbar][data-orientation=vertical] [data-part-group]:not(:first-child){margin-block-start:calc(var(--_gap) / 2);margin-inline-start:0}[data-ui-toolbar][data-orientation=vertical] [data-part-group]:not(:last-child){margin-block-end:calc(var(--_gap) / 2);margin-inline-end:0}[data-ui-toolbar] [data-part-separator]{align-self:stretch;background-color:var( --slotted-toolbar-separator-color, var(--slotted-control-border-color, ButtonBorder) );border:0;flex:none;inline-size:var(--slotted-border-width-thin, 1px);margin-block:var(--_separator-inset);margin-inline:calc(var(--_gap) / 2);min-block-size:calc(var(--_height) - 2 * var(--_separator-inset))}[data-ui-toolbar][data-orientation=vertical] [data-part-separator]{block-size:var(--slotted-border-width-thin, 1px);inline-size:auto;margin-block:calc(var(--_gap) / 2);margin-inline:var(--_separator-inset);min-block-size:0}@media(forced-colors:active){[data-ui-toolbar] [data-part-separator]{background-color:CanvasText;forced-color-adjust:none}}[data-ui-toolbar] [data-part-spacer]{flex:1 1 0;min-block-size:0;min-inline-size:0}}\n"] }]
232
237
  }], ctorParameters: () => [], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], overflow: [{ type: i0.Input, args: [{ isSignal: true, alias: "overflow", required: false }] }], loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], overflowChange: [{ type: i0.Output, args: ["overflowChange"] }] } });
233
238
  /**
234
239
  * A run of related controls, announced as a group.
@@ -249,7 +254,7 @@ class SlToolbarGroup {
249
254
  counterpart = input(undefined, { ...(ngDevMode ? { debugName: "counterpart" } : /* istanbul ignore next */ {}), alias: 'slToolbarGroupCounterpart' });
250
255
  unit = declareUnit(() => this.counterpart());
251
256
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
252
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlToolbarGroup, isStandalone: true, selector: "[slToolbarGroup]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slToolbarGroupCounterpart", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "group", "role": "group" }, properties: { "attr.data-unit": "unit.id()" } }, exportAs: ["slToolbarGroup"], ngImport: i0 });
257
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlToolbarGroup, isStandalone: true, selector: "[slToolbarGroup]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slToolbarGroupCounterpart", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "group", "data-part-group": "", "role": "group" }, properties: { "attr.data-unit": "unit.id()" } }, exportAs: ["slToolbarGroup"], ngImport: i0 });
253
258
  }
254
259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarGroup, decorators: [{
255
260
  type: Directive,
@@ -257,7 +262,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
257
262
  selector: '[slToolbarGroup]',
258
263
  standalone: true,
259
264
  exportAs: 'slToolbarGroup',
260
- host: { 'data-part': 'group', role: 'group', '[attr.data-unit]': 'unit.id()' },
265
+ host: {
266
+ 'data-part': 'group',
267
+ 'data-part-group': '',
268
+ role: 'group',
269
+ '[attr.data-unit]': 'unit.id()',
270
+ },
261
271
  }]
262
272
  }], propDecorators: { counterpart: [{ type: i0.Input, args: [{ isSignal: true, alias: "slToolbarGroupCounterpart", required: false }] }] } });
263
273
  /**
@@ -281,7 +291,7 @@ class SlToolbarItem {
281
291
  counterpart = input(undefined, { ...(ngDevMode ? { debugName: "counterpart" } : /* istanbul ignore next */ {}), alias: 'slToolbarItemCounterpart' });
282
292
  unit = declareUnit(() => this.counterpart());
283
293
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
284
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlToolbarItem, isStandalone: true, selector: "[slToolbarItem]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slToolbarItemCounterpart", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "item" }, properties: { "attr.data-unit": "unit.id()" } }, exportAs: ["slToolbarItem"], ngImport: i0 });
294
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlToolbarItem, isStandalone: true, selector: "[slToolbarItem]", inputs: { counterpart: { classPropertyName: "counterpart", publicName: "slToolbarItemCounterpart", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "item", "data-part-item": "" }, properties: { "attr.data-unit": "unit.id()" } }, exportAs: ["slToolbarItem"], ngImport: i0 });
285
295
  }
286
296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarItem, decorators: [{
287
297
  type: Directive,
@@ -289,7 +299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
289
299
  selector: '[slToolbarItem]',
290
300
  standalone: true,
291
301
  exportAs: 'slToolbarItem',
292
- host: { 'data-part': 'item', '[attr.data-unit]': 'unit.id()' },
302
+ host: { 'data-part': 'item', 'data-part-item': '', '[attr.data-unit]': 'unit.id()' },
293
303
  }]
294
304
  }], propDecorators: { counterpart: [{ type: i0.Input, args: [{ isSignal: true, alias: "slToolbarItemCounterpart", required: false }] }] } });
295
305
  /**
@@ -332,7 +342,7 @@ class SlToolbarSeparator {
332
342
  ariaOrientation = computed(() => this.toolbar.resolvedOrientation() === 'vertical' ? 'horizontal' : 'vertical', /* @ts-ignore */
333
343
  ...(ngDevMode ? [{ debugName: "ariaOrientation" }] : /* istanbul ignore next */ []));
334
344
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
335
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToolbarSeparator, isStandalone: true, selector: "[slToolbarSeparator]", host: { attributes: { "data-part": "separator", "role": "separator" }, properties: { "attr.aria-orientation": "ariaOrientation()" } }, exportAs: ["slToolbarSeparator"], ngImport: i0 });
345
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToolbarSeparator, isStandalone: true, selector: "[slToolbarSeparator]", host: { attributes: { "data-part": "separator", "data-part-separator": "", "role": "separator" }, properties: { "attr.aria-orientation": "ariaOrientation()" } }, exportAs: ["slToolbarSeparator"], ngImport: i0 });
336
346
  }
337
347
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarSeparator, decorators: [{
338
348
  type: Directive,
@@ -342,6 +352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
342
352
  exportAs: 'slToolbarSeparator',
343
353
  host: {
344
354
  'data-part': 'separator',
355
+ 'data-part-separator': '',
345
356
  role: 'separator',
346
357
  '[attr.aria-orientation]': 'ariaOrientation()',
347
358
  },
@@ -356,7 +367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
356
367
  */
357
368
  class SlToolbarSpacer {
358
369
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarSpacer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
359
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToolbarSpacer, isStandalone: true, selector: "[slToolbarSpacer]", host: { attributes: { "data-part": "spacer", "aria-hidden": "true" } }, exportAs: ["slToolbarSpacer"], ngImport: i0 });
370
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlToolbarSpacer, isStandalone: true, selector: "[slToolbarSpacer]", host: { attributes: { "data-part": "spacer", "data-part-spacer": "", "aria-hidden": "true" } }, exportAs: ["slToolbarSpacer"], ngImport: i0 });
360
371
  }
361
372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarSpacer, decorators: [{
362
373
  type: Directive,
@@ -364,7 +375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
364
375
  selector: '[slToolbarSpacer]',
365
376
  standalone: true,
366
377
  exportAs: 'slToolbarSpacer',
367
- host: { 'data-part': 'spacer', 'aria-hidden': 'true' },
378
+ host: { 'data-part': 'spacer', 'data-part-spacer': '', 'aria-hidden': 'true' },
368
379
  }]
369
380
  }] });
370
381
 
@@ -416,6 +427,8 @@ class SlToolbarOverflow {
416
427
  label = input(undefined, /* @ts-ignore */
417
428
  ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
418
429
  toolbar = inject(SlToolbar);
430
+ /** The counted default, in the language in force. */
431
+ t = injectMessages(toolbarMessages);
419
432
  /** A name the consumer wrote on the host survives the counted default. */
420
433
  stated = inject(new HostAttributeToken('aria-label'), { optional: true });
421
434
  name = computed(() => {
@@ -427,7 +440,7 @@ class SlToolbarOverflow {
427
440
  return given(hidden);
428
441
  if (given !== undefined)
429
442
  return given;
430
- return `${hidden} more ${hidden === 1 ? 'action' : 'actions'}`;
443
+ return this.t('more', { count: hidden });
431
444
  }, /* @ts-ignore */
432
445
  ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
433
446
  trigger = viewChild.required('trigger', /* @ts-ignore */
@@ -465,7 +478,7 @@ class SlToolbarOverflow {
465
478
  * spread after the menu's; here the two writers are directives on one
466
479
  * element and the last one wins.
467
480
  */
468
- element.setAttribute('data-part', 'overflow');
481
+ writeSelectorKey(element, 'part', 'overflow');
469
482
  /* The bar measures the control, so it has to hold it. */
470
483
  this.toolbar.registerTrigger(element);
471
484
  });
@@ -476,6 +489,7 @@ class SlToolbarOverflow {
476
489
  <button
477
490
  #trigger
478
491
  data-part="overflow"
492
+ data-part-overflow=""
479
493
  type="button"
480
494
  [slMenuTriggerFor]="surface"
481
495
  [attr.aria-label]="name()"
@@ -492,7 +506,7 @@ class SlToolbarOverflow {
492
506
  />
493
507
  }
494
508
  </sl-menu>
495
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "directive", type: SlMenuSeparator, selector: "hr[slMenuSeparator]" }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
509
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "width", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "directive", type: SlMenuSeparator, selector: "hr[slMenuSeparator]" }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
496
510
  }
497
511
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlToolbarOverflow, decorators: [{
498
512
  type: Component,
@@ -508,6 +522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
508
522
  <button
509
523
  #trigger
510
524
  data-part="overflow"
525
+ data-part-overflow=""
511
526
  type="button"
512
527
  [slMenuTriggerFor]="surface"
513
528
  [attr.aria-label]="name()"