@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-attachment.mjs","sources":["../../attachment/src/attachment-defaults.ts","../../attachment/src/attachment.ts","../../attachment/src/attachment-parts.ts","../../attachment/src/slotted-angular-attachment.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { GlyphName } from '@slotted/core/glyph';\nimport type { ChangeReason } from '@slotted/core/state';\nimport type { FileKind } from '@slotted/core/upload';\n\nexport type AttachmentSize = 'sm' | 'md' | 'lg';\nexport type AttachmentOrientation = 'horizontal' | 'vertical';\nexport type AttachmentLayout = 'list' | 'grid' | 'strip';\n\n/**\n * What the family needs to know about a file, and a `File` already is one. A\n * record from a server needs only the name: the kind is read from the media\n * type when there is one and from the extension when there is not.\n */\nexport interface AttachmentFile {\n readonly name: string;\n readonly type?: string | undefined;\n readonly size?: number | undefined;\n}\n\n/** How the removal was asked for: the remove control, or `Backspace` / `Delete`. */\nexport type AttachmentRemoveReason = Extract<ChangeReason, 'remove' | 'keyboard'>;\n\n/** A request to leave the consumer's list. It carries no value; nothing is committed. */\nexport interface AttachmentRemoveRequest {\n readonly reason: AttachmentRemoveReason;\n readonly file: AttachmentFile;\n readonly source: Event;\n}\n\nexport interface AttachmentDefaults {\n layout: AttachmentLayout;\n orientation: AttachmentOrientation;\n size: AttachmentSize;\n}\n\nconst FALLBACK: AttachmentDefaults = {\n layout: 'list',\n orientation: 'horizontal',\n size: 'md',\n};\n\nexport const ATTACHMENT_DEFAULTS = new InjectionToken<AttachmentDefaults>(\n 'slotted attachment defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how large its attachments are and how a set of\n * them is arranged. A group or an attachment that states either still wins.\n * Their words and the locale that writes their sizes come from the language\n * in force (`provideSlotted`).\n */\nexport function provideAttachmentDefaults(defaults: Partial<AttachmentDefaults>) {\n return {\n provide: ATTACHMENT_DEFAULTS,\n useFactory: (): AttachmentDefaults => ({\n layout: defaults.layout ?? FALLBACK.layout,\n orientation: defaults.orientation ?? FALLBACK.orientation,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\nexport function injectAttachmentDefaults(): AttachmentDefaults {\n return inject(ATTACHMENT_DEFAULTS);\n}\n\n/**\n * The mark knocked out of each kind's tile — `upload`'s map, restated because\n * that one is private to `upload`. The contract test reads both contracts'\n * `kinds` and refuses a drift.\n */\nexport const ATTACHMENT_KIND_GLYPH: Readonly<Record<FileKind, GlyphName>> = {\n archive: 'file-archive',\n audio: 'file-audio',\n document: 'file-type',\n image: 'file-image',\n other: 'file',\n pdf: 'file-text',\n presentation: 'presentation',\n spreadsheet: 'file-spreadsheet',\n video: 'file-video',\n};\n\n/**\n * The controls `removal-focus` counts. An attachment in a set holds the same\n * controls as its neighbours, so the position focus had among them is the\n * position of the same control on the attachment that took its place. A\n * remove control of an attachment that is not removable is hidden, and is not\n * counted.\n */\nexport const ATTACHMENT_CONTROL_SELECTOR =\n '[data-part=\"trigger\"], [data-part=\"action\"], [data-part=\"remove\"]:not([hidden])';\n","import {\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 { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { createRemovalFocus } from '@slotted/core/focus';\nimport {\n attachmentMessages,\n type AttachmentMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { fileKind, splitName } from '@slotted/core/upload';\n\nimport { ATTACHMENT_CONTROL_SELECTOR, injectAttachmentDefaults } from './attachment-defaults';\nimport type {\n AttachmentFile,\n AttachmentLayout,\n AttachmentOrientation,\n AttachmentRemoveReason,\n AttachmentRemoveRequest,\n AttachmentSize,\n} from './attachment-defaults';\n\nlet nextId = 0;\n\n/**\n * A set of attachments on the `ul` the page wrote: a column, a wrapping grid\n * or one line that scrolls. It hands its size and orientation to every\n * attachment that does not state its own.\n *\n * It keeps the keyboard where it was when an attachment leaves: focus goes to\n * the control that took the removed one's place, then to the last one, then\n * to the list itself — which is why the list takes `tabindex=\"-1\"`.\n * `removal-focus` observes the DOM, so it is right however the consumer\n * removed the file.\n */\n@Directive({\n selector: '[slAttachmentGroup]',\n standalone: true,\n exportAs: 'slAttachmentGroup',\n host: {\n 'data-ui': 'attachment',\n 'data-part': 'group',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.tabindex]': 'tabindex',\n },\n})\nexport class SlAttachmentGroup {\n /** A column, a wrapping grid, or one line that scrolls. Falls back to the token. */\n readonly layout = input<AttachmentLayout | undefined>(undefined);\n /** Handed to every attachment that does not state its own. */\n readonly size = input<AttachmentSize | undefined>(undefined);\n /** Handed to every attachment that does not state its own. */\n readonly orientation = input<AttachmentOrientation | undefined>(undefined);\n\n private readonly defaults = injectAttachmentDefaults();\n /** A `tabindex` the page wrote is kept; otherwise the list takes focus only by script. */\n protected readonly tabindex =\n inject(new HostAttributeToken('tabindex'), { optional: true }) ?? '-1';\n\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedOrientation = computed(() => this.orientation() ?? this.defaults.orientation);\n\n constructor() {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n const removal = createRemovalFocus(host, { itemSelector: ATTACHMENT_CONTROL_SELECTOR });\n inject(DestroyRef).onDestroy(() => removal.destroy());\n }\n}\n\n/**\n * One file that already belongs to something — a message, a record, a tray —\n * on the `li` (inside `slAttachmentGroup`) or `div` (alone) the page wrote.\n * The parts inside read the file from here: the tile its kind, the trigger its\n * name, the detail its size.\n *\n * **Removal is a request.** `removable` draws `slAttachmentRemove` and makes\n * `Backspace` and `Delete` answer anywhere inside the attachment; `(remove)`\n * carries the reason and the file, and the list stays the page's. A held key\n * does not repeat the request.\n *\n * **The refusal runs first.** A click inside the trigger, or on a family\n * action written on an `a`, is refused here in the capture phase while the\n * attachment is loading or disabled: a directive's host listener and a\n * `(click)` the page wrote on the same element run in registration order, and\n * the page's was registered first — the ordering `list-item` found.\n */\n@Component({\n selector: '[slAttachment]',\n standalone: true,\n exportAs: 'slAttachment',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/attachment/attachment.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'attachment',\n 'data-part': 'root',\n '[attr.data-kind]': 'kind()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-invalid]': \"invalid() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class SlAttachment {\n /** The file: its name, and its media type and size when they are known. */\n readonly file = input.required<AttachmentFile>();\n /** The room the attachment gets. Falls back to the group, then the token, then `md`. */\n readonly size = input<AttachmentSize | undefined>(undefined);\n /** A row, or a card stood on end. Falls back to the group, then the token. */\n readonly orientation = input<AttachmentOrientation | undefined>(undefined);\n /** The file failed; painted from `data-invalid`, never `aria-invalid` on a list item. */\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Still on its way: `aria-busy`, the trigger refused, remove still operable. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** Cannot be reached: the trigger, every action and remove are refused. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Draws `slAttachmentRemove` and lets `Backspace` and `Delete` ask for removal. */\n readonly removable = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * remove control's name (`remove`, with the file's `{name}`) and the tile's\n * word for a file without an extension.\n */\n readonly messages = input<PartialMessages<AttachmentMessages> | undefined>(undefined);\n\n /** Asks to be taken out of the list. Not emitted while disabled, nor for a repeated key. */\n readonly remove = output<AttachmentRemoveRequest>();\n\n private readonly defaults = injectAttachmentDefaults();\n private readonly group = inject(SlAttachmentGroup, { optional: true });\n\n readonly id = `sl-attachment-${nextId++}`;\n readonly ids = { detail: `${this.id}-detail`, message: `${this.id}-message` };\n /** The language in force, which writes the size the detail line shows. */\n readonly locale = injectLocale();\n /** The family's words in the language in force, with this attachment's `messages` laid over them. */\n readonly t = injectMessages(attachmentMessages, this.messages);\n\n readonly resolvedSize = computed(() => this.size() ?? this.group?.size() ?? this.defaults.size);\n readonly resolvedOrientation = computed(\n () => this.orientation() ?? this.group?.orientation() ?? this.defaults.orientation,\n );\n readonly kind = computed(() => {\n const file = this.file();\n return fileKind({ name: file.name, type: file.type ?? '' });\n });\n readonly split = computed(() => splitName(this.file().name));\n readonly blocked = computed(() => this.disabled() || this.loading());\n\n /**\n * The ids of the describing parts on the page, so the trigger names only\n * what exists — and the id each part actually carries, which is the page's\n * own when it wrote one.\n */\n readonly described = signal<{ detail: string | null; message: string | null }>({\n detail: null,\n message: null,\n });\n\n constructor() {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n const refuse = (event: Event) => {\n const target = event.target as Element | null;\n const trigger = target?.closest('[data-part=\"trigger\"]') != null;\n const link = target?.closest('a[data-part=\"action\"]') != null;\n if (!(trigger && this.blocked()) && !(link && this.disabled())) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n };\n host.addEventListener('click', refuse, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n host.removeEventListener('click', refuse, { capture: true }),\n );\n }\n\n describe(part: 'detail' | 'message', id: string | null) {\n this.described.update((current) =>\n current[part] === id ? current : { ...current, [part]: id },\n );\n }\n\n request(reason: AttachmentRemoveReason, source: Event) {\n if (!this.removable() || this.disabled()) return;\n this.remove.emit({ reason, file: this.file(), source });\n }\n\n protected handleKeydown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.repeat) return;\n if (event.key !== 'Backspace' && event.key !== 'Delete') return;\n if (!this.removable() || this.disabled()) return;\n /* A field the page put inside an attachment keeps its own editing keys. */\n const target = event.target as HTMLElement;\n if (target.isContentEditable || target.closest('input, textarea, select') !== null) return;\n event.preventDefault();\n this.request('keyboard', event);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlProgressBar } from '@slotted/angular/progress-indicator';\nimport { formatBytes } from '@slotted/core/upload';\n\nimport { SlAttachment } from './attachment';\nimport { ATTACHMENT_KIND_GLYPH } from './attachment-defaults';\n\nfunction attachment(): SlAttachment {\n const owner = inject(SlAttachment, { optional: true });\n if (owner === null) throw new Error('An attachment part is rendered outside slAttachment.');\n return owner;\n}\n\n/**\n * Registers a describing part with its attachment for as long as it exists,\n * under the id it carries: the page's own when it wrote one.\n */\nfunction describes(part: 'detail' | 'message') {\n const owner = attachment();\n const id = inject(new HostAttributeToken('id'), { optional: true }) ?? owner.ids[part];\n owner.describe(part, id);\n inject(DestroyRef).onDestroy(() => owner.describe(part, null));\n return { owner, id };\n}\n\n/**\n * The kind's tile with the kind's mark knocked out of it, or the thumbnail the\n * page gives. A thumbnail that fails to load returns to the tile: the failure\n * is this part's own state, not a state of the file. Hidden from assistive\n * technology, because the name already says what the file is.\n */\n@Component({\n selector: '[slAttachmentPreview]',\n standalone: true,\n exportAs: 'slAttachmentPreview',\n imports: [SlGlyph, SlIcon],\n template: `@if (picture()) {\n <img alt=\"\" [src]=\"src()\" (error)=\"failed.set(src())\" />\n } @else {\n <span slIcon><svg slGlyph [name]=\"glyph()\"></svg></span>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'aria-hidden': 'true',\n 'data-part': 'preview',\n '[attr.data-kind]': 'owner.kind()',\n '[attr.data-extension]': 'extension()',\n },\n})\nexport class SlAttachmentPreview {\n /** A thumbnail. Absent, or failing to load, the kind's tile is drawn instead. */\n readonly src = input<string | undefined>(undefined);\n\n protected readonly owner = attachment();\n protected readonly failed = signal<string | undefined>(undefined);\n protected readonly picture = computed(() => {\n const src = this.src();\n return src !== undefined && src !== this.failed();\n });\n protected readonly glyph = computed(() => ATTACHMENT_KIND_GLYPH[this.owner.kind()]);\n protected readonly extension = computed(() => {\n const extension = this.owner.split().extension;\n return extension === '' ? this.owner.t('noExtension') : extension.slice(1).toUpperCase();\n });\n}\n\n/** The text column, and the one box in the attachment that may shrink. */\n@Directive({\n selector: '[slAttachmentBody]',\n standalone: true,\n exportAs: 'slAttachmentBody',\n host: { 'data-part': 'body' },\n})\nexport class SlAttachmentBody {}\n\n/**\n * The file name as two runs — the stem, which shrinks to an ellipsis, and the\n * extension, which does not — in the name's own direction. Content the page\n * projects replaces the two runs.\n */\n@Component({\n selector: '[slAttachmentFilename]',\n standalone: true,\n exportAs: 'slAttachmentFilename',\n template: `<ng-content\n ><span data-part=\"name\">{{ owner.split().stem }}</span>\n @if (owner.split().extension) {\n <span data-part=\"extension\">{{ owner.split().extension }}</span>\n }\n </ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'filename',\n '[attr.dir]': 'dir',\n },\n})\nexport class SlAttachmentFilename {\n protected readonly owner = attachment();\n protected readonly dir = inject(new HostAttributeToken('dir'), { optional: true }) ?? 'auto';\n}\n\n/**\n * The file's target: `<a slAttachmentTrigger [href]>` for a file with an\n * address, so `href`, `download` and a modified click stay the platform's;\n * `<button slAttachmentTrigger>` for a viewer the page opens. Named by the\n * file, described by the detail and the message, and stretched over the whole\n * attachment. A `button` takes the native `disabled` while the file is loading\n * or unavailable; an `a` takes `aria-disabled` and keeps its destination, and\n * `slAttachment` refuses the activation.\n */\n@Component({\n selector: 'a[slAttachmentTrigger], button[slAttachmentTrigger]',\n standalone: true,\n exportAs: 'slAttachmentTrigger',\n imports: [SlAttachmentFilename],\n template: `<ng-content><span slAttachmentFilename></span></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'trigger',\n '[attr.title]': 'title ?? owner.file().name',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.disabled]': \"isButton && owner.blocked() ? '' : null\",\n '[attr.aria-disabled]': \"!isButton && owner.blocked() ? 'true' : null\",\n '[attr.type]': \"isButton ? (type ?? 'button') : null\",\n },\n})\nexport class SlAttachmentTrigger {\n protected readonly owner = attachment();\n protected readonly isButton =\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.tagName === 'BUTTON';\n protected readonly title = inject(new HostAttributeToken('title'), { optional: true });\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true });\n /** A description the page wrote comes first; the family's ids are joined to it. */\n private readonly written = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n\n protected readonly describedBy = computed(() => {\n const described = this.owner.described();\n const ids = [\n ...(this.written === null ? [] : [this.written]),\n ...(described.detail === null ? [] : [described.detail]),\n ...(described.message === null ? [] : [described.message]),\n ];\n return ids.length === 0 ? null : ids.join(' ');\n });\n}\n\n/**\n * The line under the name. With nothing projected it writes the size with\n * `formatBytes` in the language in force; anything the page writes replaces it.\n */\n@Component({\n selector: '[slAttachmentDetail]',\n standalone: true,\n exportAs: 'slAttachmentDetail',\n template: `<ng-content>{{ bytes() }}</ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'detail',\n '[attr.id]': 'wiring.id',\n },\n})\nexport class SlAttachmentDetail {\n protected readonly wiring = describes('detail');\n protected readonly owner = this.wiring.owner;\n protected readonly bytes = computed(() => {\n const size = this.owner.file().size;\n return size === undefined ? '' : formatBytes(size, this.owner.locale());\n });\n}\n\n/** Why the file failed, or anything longer than a line the page must say about it. */\n@Directive({\n selector: '[slAttachmentMessage]',\n standalone: true,\n exportAs: 'slAttachmentMessage',\n host: {\n 'data-part': 'message',\n '[attr.id]': 'wiring.id',\n },\n})\nexport class SlAttachmentMessage {\n protected readonly wiring = describes('message');\n}\n\n/**\n * The transfer, as the attachment's bottom edge: `slProgressBar`, named by the\n * file so a reader hears the name and the percentage together. Without a\n * `value` the bar is indeterminate.\n */\n@Component({\n selector: '[slAttachmentProgress]',\n standalone: true,\n exportAs: 'slAttachmentProgress',\n imports: [SlProgressBar],\n template: `<div\n slProgressBar\n hideLabel\n size=\"sm\"\n [label]=\"owner.file().name\"\n [tone]=\"owner.invalid() ? 'danger' : 'accent'\"\n [value]=\"value() ?? null\"\n ></div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'progress' },\n})\nexport class SlAttachmentProgress {\n /** Per cent, 0 to 100. Absent, the bar is indeterminate. */\n readonly value = input<number | null | undefined>(undefined);\n\n protected readonly owner = attachment();\n}\n\n/**\n * The controls the application offers on the file, beside the trigger and\n * above its stretched target: interactive content may not nest inside `a` or\n * `button`.\n */\n@Directive({\n selector: '[slAttachmentActions]',\n standalone: true,\n exportAs: 'slAttachmentActions',\n host: { 'data-part': 'actions' },\n})\nexport class SlAttachmentActions {}\n\n/**\n * One icon control of the application's own, on the `button` or the `a` the\n * page wrote — an `a` with `download` is a download. It needs an\n * `aria-label`. An unavailable attachment disables it: the native `disabled`\n * on a button, `aria-disabled` on a link, whose activation `slAttachment`\n * refuses.\n */\n@Directive({\n selector: 'button[slAttachmentAction], a[slAttachmentAction]',\n standalone: true,\n exportAs: 'slAttachmentAction',\n host: {\n 'data-part': 'action',\n '[attr.disabled]': \"isButton && owner.disabled() ? '' : null\",\n '[attr.aria-disabled]': \"!isButton && owner.disabled() ? 'true' : null\",\n '[attr.type]': \"isButton ? (type ?? 'button') : null\",\n },\n})\nexport class SlAttachmentAction {\n protected readonly owner = attachment();\n protected readonly isButton =\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.tagName === 'BUTTON';\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true });\n}\n\n/**\n * Asks to take the attachment out of its list, on the `button` the page\n * wrote. Hidden unless the attachment is `removable`, so a read-only thread\n * shows no control that does nothing. Its name is the word and the file,\n * `Remove claim-form.pdf`, unless the page wrote its own `aria-label`.\n */\n@Component({\n selector: 'button[slAttachmentRemove]',\n standalone: true,\n exportAs: 'slAttachmentRemove',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"x\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'remove',\n type: 'button',\n '[attr.hidden]': \"owner.removable() ? null : ''\",\n '[attr.aria-label]': 'label()',\n '[attr.disabled]': \"owner.disabled() ? '' : null\",\n '(click)': 'owner.request(\"remove\", $event)',\n },\n})\nexport class SlAttachmentRemove {\n protected readonly owner = attachment();\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n protected readonly label = computed(\n () => this.written ?? this.owner.t('remove', { name: this.owner.file().name }),\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-attachment.mjs","sources":["../../attachment/src/attachment-defaults.ts","../../attachment/src/attachment.ts","../../attachment/src/attachment-parts.ts","../../attachment/src/slotted-angular-attachment.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { GlyphName } from '@slotted/core/glyph';\nimport type { ChangeReason } from '@slotted/core/state';\nimport type { FileKind } from '@slotted/core/upload';\n\nexport type AttachmentSize = 'sm' | 'md' | 'lg';\nexport type AttachmentOrientation = 'horizontal' | 'vertical';\nexport type AttachmentLayout = 'list' | 'grid' | 'strip';\n\n/**\n * What the family needs to know about a file, and a `File` already is one. A\n * record from a server needs only the name: the kind is read from the media\n * type when there is one and from the extension when there is not.\n */\nexport interface AttachmentFile {\n readonly name: string;\n readonly type?: string | undefined;\n readonly size?: number | undefined;\n}\n\n/** How the removal was asked for: the remove control, or `Backspace` / `Delete`. */\nexport type AttachmentRemoveReason = Extract<ChangeReason, 'remove' | 'keyboard'>;\n\n/** A request to leave the consumer's list. It carries no value; nothing is committed. */\nexport interface AttachmentRemoveRequest {\n readonly reason: AttachmentRemoveReason;\n readonly file: AttachmentFile;\n readonly source: Event;\n}\n\nexport interface AttachmentDefaults {\n layout: AttachmentLayout;\n orientation: AttachmentOrientation;\n size: AttachmentSize;\n}\n\nconst FALLBACK: AttachmentDefaults = {\n layout: 'list',\n orientation: 'horizontal',\n size: 'md',\n};\n\nexport const ATTACHMENT_DEFAULTS = new InjectionToken<AttachmentDefaults>(\n 'slotted attachment defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once how large its attachments are and how a set of\n * them is arranged. A group or an attachment that states either still wins.\n * Their words and the locale that writes their sizes come from the language\n * in force (`provideSlotted`).\n */\nexport function provideAttachmentDefaults(defaults: Partial<AttachmentDefaults>) {\n return {\n provide: ATTACHMENT_DEFAULTS,\n useFactory: (): AttachmentDefaults => ({\n layout: defaults.layout ?? FALLBACK.layout,\n orientation: defaults.orientation ?? FALLBACK.orientation,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\nexport function injectAttachmentDefaults(): AttachmentDefaults {\n return inject(ATTACHMENT_DEFAULTS);\n}\n\n/**\n * The mark knocked out of each kind's tile — `upload`'s map, restated because\n * that one is private to `upload`. The contract test reads both contracts'\n * `kinds` and refuses a drift.\n */\nexport const ATTACHMENT_KIND_GLYPH: Readonly<Record<FileKind, GlyphName>> = {\n archive: 'file-archive',\n audio: 'file-audio',\n document: 'file-type',\n image: 'file-image',\n other: 'file',\n pdf: 'file-text',\n presentation: 'presentation',\n spreadsheet: 'file-spreadsheet',\n video: 'file-video',\n};\n\n/**\n * The controls `removal-focus` counts. An attachment in a set holds the same\n * controls as its neighbours, so the position focus had among them is the\n * position of the same control on the attachment that took its place. A\n * remove control of an attachment that is not removable is hidden, and is not\n * counted.\n */\nexport const ATTACHMENT_CONTROL_SELECTOR =\n '[data-part=\"trigger\"], [data-part=\"action\"], [data-part=\"remove\"]:not([hidden])';\n","import {\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 { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { createRemovalFocus } from '@slotted/core/focus';\nimport {\n attachmentMessages,\n type AttachmentMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { fileKind, splitName } from '@slotted/core/upload';\n\nimport { ATTACHMENT_CONTROL_SELECTOR, injectAttachmentDefaults } from './attachment-defaults';\nimport type {\n AttachmentFile,\n AttachmentLayout,\n AttachmentOrientation,\n AttachmentRemoveReason,\n AttachmentRemoveRequest,\n AttachmentSize,\n} from './attachment-defaults';\n\nlet nextId = 0;\n\n/**\n * A set of attachments on the `ul` the page wrote: a column, a wrapping grid\n * or one line that scrolls. It hands its size and orientation to every\n * attachment that does not state its own.\n *\n * It keeps the keyboard where it was when an attachment leaves: focus goes to\n * the control that took the removed one's place, then to the last one, then\n * to the list itself — which is why the list takes `tabindex=\"-1\"`.\n * `removal-focus` observes the DOM, so it is right however the consumer\n * removed the file.\n */\n@Directive({\n selector: '[slAttachmentGroup]',\n standalone: true,\n exportAs: 'slAttachmentGroup',\n host: {\n 'data-ui': 'attachment',\n 'data-ui-attachment': '',\n 'data-part': 'group',\n 'data-part-group': '',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.tabindex]': 'tabindex',\n },\n})\nexport class SlAttachmentGroup {\n /** A column, a wrapping grid, or one line that scrolls. Falls back to the token. */\n readonly layout = input<AttachmentLayout | undefined>(undefined);\n /** Handed to every attachment that does not state its own. */\n readonly size = input<AttachmentSize | undefined>(undefined);\n /** Handed to every attachment that does not state its own. */\n readonly orientation = input<AttachmentOrientation | undefined>(undefined);\n\n private readonly defaults = injectAttachmentDefaults();\n /** A `tabindex` the page wrote is kept; otherwise the list takes focus only by script. */\n protected readonly tabindex =\n inject(new HostAttributeToken('tabindex'), { optional: true }) ?? '-1';\n\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout);\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n readonly resolvedOrientation = computed(() => this.orientation() ?? this.defaults.orientation);\n\n constructor() {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n const removal = createRemovalFocus(host, { itemSelector: ATTACHMENT_CONTROL_SELECTOR });\n inject(DestroyRef).onDestroy(() => removal.destroy());\n }\n}\n\n/**\n * One file that already belongs to something — a message, a record, a tray —\n * on the `li` (inside `slAttachmentGroup`) or `div` (alone) the page wrote.\n * The parts inside read the file from here: the tile its kind, the trigger its\n * name, the detail its size.\n *\n * **Removal is a request.** `removable` draws `slAttachmentRemove` and makes\n * `Backspace` and `Delete` answer anywhere inside the attachment; `(remove)`\n * carries the reason and the file, and the list stays the page's. A held key\n * does not repeat the request.\n *\n * **The refusal runs first.** A click inside the trigger, or on a family\n * action written on an `a`, is refused here in the capture phase while the\n * attachment is loading or disabled: a directive's host listener and a\n * `(click)` the page wrote on the same element run in registration order, and\n * the page's was registered first — the ordering `list-item` found.\n */\n@Component({\n selector: '[slAttachment]',\n standalone: true,\n exportAs: 'slAttachment',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/attachment/attachment.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'attachment',\n 'data-ui-attachment': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-kind]': 'kind()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-invalid]': \"invalid() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class SlAttachment {\n /** The file: its name, and its media type and size when they are known. */\n readonly file = input.required<AttachmentFile>();\n /** The room the attachment gets. Falls back to the group, then the token, then `md`. */\n readonly size = input<AttachmentSize | undefined>(undefined);\n /** A row, or a card stood on end. Falls back to the group, then the token. */\n readonly orientation = input<AttachmentOrientation | undefined>(undefined);\n /** The file failed; painted from `data-invalid`, never `aria-invalid` on a list item. */\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Still on its way: `aria-busy`, the trigger refused, remove still operable. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** Cannot be reached: the trigger, every action and remove are refused. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Draws `slAttachmentRemove` and lets `Backspace` and `Delete` ask for removal. */\n readonly removable = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * remove control's name (`remove`, with the file's `{name}`) and the tile's\n * word for a file without an extension.\n */\n readonly messages = input<PartialMessages<AttachmentMessages> | undefined>(undefined);\n\n /** Asks to be taken out of the list. Not emitted while disabled, nor for a repeated key. */\n readonly remove = output<AttachmentRemoveRequest>();\n\n private readonly defaults = injectAttachmentDefaults();\n private readonly group = inject(SlAttachmentGroup, { optional: true });\n\n readonly id = `sl-attachment-${nextId++}`;\n readonly ids = { detail: `${this.id}-detail`, message: `${this.id}-message` };\n /** The language in force, which writes the size the detail line shows. */\n readonly locale = injectLocale();\n /** The family's words in the language in force, with this attachment's `messages` laid over them. */\n readonly t = injectMessages(attachmentMessages, this.messages);\n\n readonly resolvedSize = computed(() => this.size() ?? this.group?.size() ?? this.defaults.size);\n readonly resolvedOrientation = computed(\n () => this.orientation() ?? this.group?.orientation() ?? this.defaults.orientation,\n );\n readonly kind = computed(() => {\n const file = this.file();\n return fileKind({ name: file.name, type: file.type ?? '' });\n });\n readonly split = computed(() => splitName(this.file().name));\n readonly blocked = computed(() => this.disabled() || this.loading());\n\n /**\n * The ids of the describing parts on the page, so the trigger names only\n * what exists — and the id each part actually carries, which is the page's\n * own when it wrote one.\n */\n readonly described = signal<{ detail: string | null; message: string | null }>({\n detail: null,\n message: null,\n });\n\n constructor() {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n const refuse = (event: Event) => {\n const target = event.target as Element | null;\n const trigger = target?.closest('[data-part=\"trigger\"]') != null;\n const link = target?.closest('a[data-part=\"action\"]') != null;\n if (!(trigger && this.blocked()) && !(link && this.disabled())) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n };\n host.addEventListener('click', refuse, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n host.removeEventListener('click', refuse, { capture: true }),\n );\n }\n\n describe(part: 'detail' | 'message', id: string | null) {\n this.described.update((current) =>\n current[part] === id ? current : { ...current, [part]: id },\n );\n }\n\n request(reason: AttachmentRemoveReason, source: Event) {\n if (!this.removable() || this.disabled()) return;\n this.remove.emit({ reason, file: this.file(), source });\n }\n\n protected handleKeydown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.repeat) return;\n if (event.key !== 'Backspace' && event.key !== 'Delete') return;\n if (!this.removable() || this.disabled()) return;\n /* A field the page put inside an attachment keeps its own editing keys. */\n const target = event.target as HTMLElement;\n if (target.isContentEditable || target.closest('input, textarea, select') !== null) return;\n event.preventDefault();\n this.request('keyboard', event);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlProgressBar } from '@slotted/angular/progress-indicator';\nimport { formatBytes } from '@slotted/core/upload';\n\nimport { SlAttachment } from './attachment';\nimport { ATTACHMENT_KIND_GLYPH } from './attachment-defaults';\n\nfunction attachment(): SlAttachment {\n const owner = inject(SlAttachment, { optional: true });\n if (owner === null) throw new Error('An attachment part is rendered outside slAttachment.');\n return owner;\n}\n\n/**\n * Registers a describing part with its attachment for as long as it exists,\n * under the id it carries: the page's own when it wrote one.\n */\nfunction describes(part: 'detail' | 'message') {\n const owner = attachment();\n const id = inject(new HostAttributeToken('id'), { optional: true }) ?? owner.ids[part];\n owner.describe(part, id);\n inject(DestroyRef).onDestroy(() => owner.describe(part, null));\n return { owner, id };\n}\n\n/**\n * The kind's tile with the kind's mark knocked out of it, or the thumbnail the\n * page gives. A thumbnail that fails to load returns to the tile: the failure\n * is this part's own state, not a state of the file. Hidden from assistive\n * technology, because the name already says what the file is.\n */\n@Component({\n selector: '[slAttachmentPreview]',\n standalone: true,\n exportAs: 'slAttachmentPreview',\n imports: [SlGlyph, SlIcon],\n template: `@if (picture()) {\n <img alt=\"\" [src]=\"src()\" (error)=\"failed.set(src())\" />\n } @else {\n <span slIcon><svg slGlyph [name]=\"glyph()\"></svg></span>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'aria-hidden': 'true',\n 'data-part': 'preview',\n 'data-part-preview': '',\n '[attr.data-kind]': 'owner.kind()',\n '[attr.data-extension]': 'extension()',\n },\n})\nexport class SlAttachmentPreview {\n /** A thumbnail. Absent, or failing to load, the kind's tile is drawn instead. */\n readonly src = input<string | undefined>(undefined);\n\n protected readonly owner = attachment();\n protected readonly failed = signal<string | undefined>(undefined);\n protected readonly picture = computed(() => {\n const src = this.src();\n return src !== undefined && src !== this.failed();\n });\n protected readonly glyph = computed(() => ATTACHMENT_KIND_GLYPH[this.owner.kind()]);\n protected readonly extension = computed(() => {\n const extension = this.owner.split().extension;\n return extension === '' ? this.owner.t('noExtension') : extension.slice(1).toUpperCase();\n });\n}\n\n/** The text column, and the one box in the attachment that may shrink. */\n@Directive({\n selector: '[slAttachmentBody]',\n standalone: true,\n exportAs: 'slAttachmentBody',\n host: { 'data-part': 'body', 'data-part-body': '' },\n})\nexport class SlAttachmentBody {}\n\n/**\n * The file name as two runs — the stem, which shrinks to an ellipsis, and the\n * extension, which does not — in the name's own direction. Content the page\n * projects replaces the two runs.\n */\n@Component({\n selector: '[slAttachmentFilename]',\n standalone: true,\n exportAs: 'slAttachmentFilename',\n template: `<ng-content\n ><span data-part=\"name\" data-part-name=\"\">{{ owner.split().stem }}</span>\n @if (owner.split().extension) {\n <span data-part=\"extension\" data-part-extension=\"\">{{ owner.split().extension }}</span>\n }\n </ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'filename',\n 'data-part-filename': '',\n '[attr.dir]': 'dir',\n },\n})\nexport class SlAttachmentFilename {\n protected readonly owner = attachment();\n protected readonly dir = inject(new HostAttributeToken('dir'), { optional: true }) ?? 'auto';\n}\n\n/**\n * The file's target: `<a slAttachmentTrigger [href]>` for a file with an\n * address, so `href`, `download` and a modified click stay the platform's;\n * `<button slAttachmentTrigger>` for a viewer the page opens. Named by the\n * file, described by the detail and the message, and stretched over the whole\n * attachment. A `button` takes the native `disabled` while the file is loading\n * or unavailable; an `a` takes `aria-disabled` and keeps its destination, and\n * `slAttachment` refuses the activation.\n */\n@Component({\n selector: 'a[slAttachmentTrigger], button[slAttachmentTrigger]',\n standalone: true,\n exportAs: 'slAttachmentTrigger',\n imports: [SlAttachmentFilename],\n template: `<ng-content><span slAttachmentFilename></span></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'trigger',\n 'data-part-trigger': '',\n '[attr.title]': 'title ?? owner.file().name',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.disabled]': \"isButton && owner.blocked() ? '' : null\",\n '[attr.aria-disabled]': \"!isButton && owner.blocked() ? 'true' : null\",\n '[attr.type]': \"isButton ? (type ?? 'button') : null\",\n },\n})\nexport class SlAttachmentTrigger {\n protected readonly owner = attachment();\n protected readonly isButton =\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.tagName === 'BUTTON';\n protected readonly title = inject(new HostAttributeToken('title'), { optional: true });\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true });\n /** A description the page wrote comes first; the family's ids are joined to it. */\n private readonly written = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n\n protected readonly describedBy = computed(() => {\n const described = this.owner.described();\n const ids = [\n ...(this.written === null ? [] : [this.written]),\n ...(described.detail === null ? [] : [described.detail]),\n ...(described.message === null ? [] : [described.message]),\n ];\n return ids.length === 0 ? null : ids.join(' ');\n });\n}\n\n/**\n * The line under the name. With nothing projected it writes the size with\n * `formatBytes` in the language in force; anything the page writes replaces it.\n */\n@Component({\n selector: '[slAttachmentDetail]',\n standalone: true,\n exportAs: 'slAttachmentDetail',\n template: `<ng-content>{{ bytes() }}</ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'detail',\n 'data-part-detail': '',\n '[attr.id]': 'wiring.id',\n },\n})\nexport class SlAttachmentDetail {\n protected readonly wiring = describes('detail');\n protected readonly owner = this.wiring.owner;\n protected readonly bytes = computed(() => {\n const size = this.owner.file().size;\n return size === undefined ? '' : formatBytes(size, this.owner.locale());\n });\n}\n\n/** Why the file failed, or anything longer than a line the page must say about it. */\n@Directive({\n selector: '[slAttachmentMessage]',\n standalone: true,\n exportAs: 'slAttachmentMessage',\n host: {\n 'data-part': 'message',\n 'data-part-message': '',\n '[attr.id]': 'wiring.id',\n },\n})\nexport class SlAttachmentMessage {\n protected readonly wiring = describes('message');\n}\n\n/**\n * The transfer, as the attachment's bottom edge: `slProgressBar`, named by the\n * file so a reader hears the name and the percentage together. Without a\n * `value` the bar is indeterminate.\n */\n@Component({\n selector: '[slAttachmentProgress]',\n standalone: true,\n exportAs: 'slAttachmentProgress',\n imports: [SlProgressBar],\n template: `<div\n slProgressBar\n hideLabel\n size=\"sm\"\n [label]=\"owner.file().name\"\n [tone]=\"owner.invalid() ? 'danger' : 'accent'\"\n [value]=\"value() ?? null\"\n ></div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'progress', 'data-part-progress': '' },\n})\nexport class SlAttachmentProgress {\n /** Per cent, 0 to 100. Absent, the bar is indeterminate. */\n readonly value = input<number | null | undefined>(undefined);\n\n protected readonly owner = attachment();\n}\n\n/**\n * The controls the application offers on the file, beside the trigger and\n * above its stretched target: interactive content may not nest inside `a` or\n * `button`.\n */\n@Directive({\n selector: '[slAttachmentActions]',\n standalone: true,\n exportAs: 'slAttachmentActions',\n host: { 'data-part': 'actions', 'data-part-actions': '' },\n})\nexport class SlAttachmentActions {}\n\n/**\n * One icon control of the application's own, on the `button` or the `a` the\n * page wrote — an `a` with `download` is a download. It needs an\n * `aria-label`. An unavailable attachment disables it: the native `disabled`\n * on a button, `aria-disabled` on a link, whose activation `slAttachment`\n * refuses.\n */\n@Directive({\n selector: 'button[slAttachmentAction], a[slAttachmentAction]',\n standalone: true,\n exportAs: 'slAttachmentAction',\n host: {\n 'data-part': 'action',\n 'data-part-action': '',\n '[attr.disabled]': \"isButton && owner.disabled() ? '' : null\",\n '[attr.aria-disabled]': \"!isButton && owner.disabled() ? 'true' : null\",\n '[attr.type]': \"isButton ? (type ?? 'button') : null\",\n },\n})\nexport class SlAttachmentAction {\n protected readonly owner = attachment();\n protected readonly isButton =\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.tagName === 'BUTTON';\n protected readonly type = inject(new HostAttributeToken('type'), { optional: true });\n}\n\n/**\n * Asks to take the attachment out of its list, on the `button` the page\n * wrote. Hidden unless the attachment is `removable`, so a read-only thread\n * shows no control that does nothing. Its name is the word and the file,\n * `Remove claim-form.pdf`, unless the page wrote its own `aria-label`.\n */\n@Component({\n selector: 'button[slAttachmentRemove]',\n standalone: true,\n exportAs: 'slAttachmentRemove',\n imports: [SlGlyph, SlIcon],\n template: `<ng-content\n ><span slIcon><svg slGlyph name=\"x\"></svg></span\n ></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'remove',\n 'data-part-remove': '',\n type: 'button',\n '[attr.hidden]': \"owner.removable() ? null : ''\",\n '[attr.aria-label]': 'label()',\n '[attr.disabled]': \"owner.disabled() ? '' : null\",\n '(click)': 'owner.request(\"remove\", $event)',\n },\n})\nexport class SlAttachmentRemove {\n protected readonly owner = attachment();\n private readonly written = inject(new HostAttributeToken('aria-label'), { optional: true });\n protected readonly label = computed(\n () => this.written ?? this.owner.t('remove', { name: this.owner.file().name }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ class SlAvatarGroupItem {
28
28
  hidden = computed(() => this.group.isHiddenMember(this), /* @ts-ignore */
29
29
  ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
30
30
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
31
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.1.7", type: SlAvatarGroupItem, isStandalone: true, selector: "li[slAvatarGroupItem]", host: { attributes: { "data-part": "item" }, properties: { "attr.hidden": "hidden() ? '' : null" } }, queries: [{ propertyName: "avatar", first: true, predicate: SlAvatar, descendants: true, isSignal: true }], exportAs: ["slAvatarGroupItem"], ngImport: i0 });
31
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.1.7", type: SlAvatarGroupItem, isStandalone: true, selector: "li[slAvatarGroupItem]", host: { attributes: { "data-part": "item", "data-part-item": "" }, properties: { "attr.hidden": "hidden() ? '' : null" } }, queries: [{ propertyName: "avatar", first: true, predicate: SlAvatar, descendants: true, isSignal: true }], exportAs: ["slAvatarGroupItem"], ngImport: i0 });
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarGroupItem, decorators: [{
34
34
  type: Directive,
@@ -38,6 +38,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
38
38
  exportAs: 'slAvatarGroupItem',
39
39
  host: {
40
40
  'data-part': 'item',
41
+ 'data-part-item': '',
41
42
  '[attr.hidden]': "hidden() ? '' : null",
42
43
  },
43
44
  }]
@@ -191,16 +192,16 @@ class SlAvatarGroup {
191
192
  return this.items().indexOf(member) >= this.shownCount();
192
193
  }
193
194
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
194
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlAvatarGroup, isStandalone: true, selector: "ul[slAvatarGroup]", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, overflowLabel: { classPropertyName: "overflowLabel", publicName: "overflowLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "avatar-group", "data-part": "root" }, properties: { "attr.data-layout": "layout()", "attr.data-size": "resolvedSize()", "attr.data-shape": "resolvedShape()" } }, providers: [
195
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlAvatarGroup, isStandalone: true, selector: "ul[slAvatarGroup]", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, overflowLabel: { classPropertyName: "overflowLabel", publicName: "overflowLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "avatar-group", "data-ui-avatar-group": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-layout": "layout()", "attr.data-size": "resolvedSize()", "attr.data-shape": "resolvedShape()" } }, providers: [
195
196
  /* A decorator is evaluated before the class it decorates exists. */
196
197
  { provide: AVATAR_GROUP, useExisting: forwardRef(() => SlAvatarGroup) },
197
198
  provideGroupPaint(),
198
199
  ], queries: [{ propertyName: "items", predicate: SlAvatarGroupItem, isSignal: true }], exportAs: ["slAvatarGroup"], ngImport: i0, template: `<ng-content></ng-content>
199
200
  @if (surplus() > 0 && summary() !== undefined) {
200
- <li data-part="overflow">
201
+ <li data-part="overflow" data-part-overflow="">
201
202
  <span slAvatar tone="secondary" [name]="overflowName()" [initials]="'+' + summary()"></span>
202
203
  </li>
203
- }`, isInline: true, styles: ["@layer slotted.components{[data-ui=avatar-group][data-part=root]{--_overlap: var(--slotted-avatar-group-overlap, .28);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_raise-lift: calc( var(--slotted-avatar-group-raise-lift, var(--slotted-space-2, .25rem)) * -1 );--_raise-ring: var(--slotted-border-width-thick, 2px);--_raise-shadow: var(--slotted-shadow-sm);align-items:center;display:flex;list-style:none;margin:0;padding:0}[data-ui=avatar-group][data-part=root]:empty{display:none}[data-ui=avatar-group] [data-part=item],[data-ui=avatar-group] [data-part=overflow]{display:flex;position:relative}[data-ui=avatar-group][data-part=root][data-layout=stack] [data-ui=avatar][data-part=root]{transition-timing-function:var(--slotted-easing-exit)}[data-ui=avatar-group][data-part=root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui=avatar-group][data-part=root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui=avatar-group][data-part=root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui=avatar-group][data-part=root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui=avatar-group][data-part=root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui=avatar-group][data-part=root][data-layout=stack]{flex-wrap:nowrap}[data-ui=avatar-group][data-part=root][data-layout=stack]>*+*{margin-inline-start:calc(round(nearest,calc(var(--_size) * var(--_overlap)),1px)*-1)}[data-ui=avatar-group][data-part=root][data-layout=spread]{flex-wrap:wrap;gap:var(--slotted-space-4, .5rem)}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]:not([data-disabled]):hover{--slotted-avatar-ring-width: var(--_raise-ring);--slotted-avatar-elevation: var(--_raise-shadow);z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]:focus-visible{z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]:not([data-disabled]):active{transform:translateY(calc(var(--_raise-lift) / 2))}@media(prefers-reduced-motion:reduce){[data-ui=avatar-group][data-part=root][data-layout=stack]{--_raise-lift: 0px;--_raise-shadow: 0 0 transparent}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]{transition:none}}[data-ui=avatar-group] [data-part=overflow] [data-ui=avatar][data-part=root]{--slotted-avatar-initials-size: round(nearest, calc(var(--_size) * .36), 1px);font-variant-numeric:tabular-nums}}\n"], dependencies: [{ kind: "component", type: SlAvatar, selector: "[slAvatar]", inputs: ["name", "src", "initials", "idFor", "locale", "size", "shape", "tone", "variant", "disabled", "decorative", "status"], outputs: ["statusChange"], exportAs: ["slAvatar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
204
+ }`, isInline: true, styles: ["@layer slotted.components{[data-ui-avatar-group][data-part-root]{--_overlap: var(--slotted-avatar-group-overlap, .28);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_raise-lift: calc( var(--slotted-avatar-group-raise-lift, var(--slotted-space-2, .25rem)) * -1 );--_raise-ring: var(--slotted-border-width-thick, 2px);--_raise-shadow: var(--slotted-shadow-sm);align-items:center;display:flex;list-style:none;margin:0;padding:0}[data-ui-avatar-group][data-part-root]:empty{display:none}[data-ui-avatar-group] [data-part-item],[data-ui-avatar-group] [data-part-overflow]{display:flex;position:relative}[data-ui-avatar-group][data-part-root][data-layout=stack] [data-ui-avatar][data-part-root]{transition-timing-function:var(--slotted-easing-exit)}[data-ui-avatar-group][data-part-root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui-avatar-group][data-part-root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui-avatar-group][data-part-root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui-avatar-group][data-part-root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui-avatar-group][data-part-root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui-avatar-group][data-part-root][data-layout=stack]{flex-wrap:nowrap}[data-ui-avatar-group][data-part-root][data-layout=stack]>*+*{margin-inline-start:calc(round(nearest,calc(var(--_size) * var(--_overlap)),1px)*-1)}[data-ui-avatar-group][data-part-root][data-layout=spread]{flex-wrap:wrap;gap:var(--slotted-space-4, .5rem)}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]:not([data-disabled]):hover{--slotted-avatar-ring-width: var(--_raise-ring);--slotted-avatar-elevation: var(--_raise-shadow);z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]:focus-visible{z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]:not([data-disabled]):active{transform:translateY(calc(var(--_raise-lift) / 2))}@media(prefers-reduced-motion:reduce){[data-ui-avatar-group][data-part-root][data-layout=stack]{--_raise-lift: 0px;--_raise-shadow: 0 0 transparent}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]{transition:none}}[data-ui-avatar-group] [data-part-overflow] [data-ui-avatar][data-part-root]{--slotted-avatar-initials-size: round(nearest, calc(var(--_size) * .36), 1px);font-variant-numeric:tabular-nums}}\n"], dependencies: [{ kind: "component", type: SlAvatar, selector: "[slAvatar]", inputs: ["name", "src", "initials", "idFor", "locale", "size", "shape", "tone", "variant", "surface", "disabled", "decorative", "status"], outputs: ["statusChange"], exportAs: ["slAvatar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
204
205
  }
205
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarGroup, decorators: [{
206
207
  type: Component,
@@ -210,16 +211,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
210
211
  provideGroupPaint(),
211
212
  ], template: `<ng-content></ng-content>
212
213
  @if (surplus() > 0 && summary() !== undefined) {
213
- <li data-part="overflow">
214
+ <li data-part="overflow" data-part-overflow="">
214
215
  <span slAvatar tone="secondary" [name]="overflowName()" [initials]="'+' + summary()"></span>
215
216
  </li>
216
217
  }`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
217
218
  'data-ui': 'avatar-group',
219
+ 'data-ui-avatar-group': '',
218
220
  'data-part': 'root',
221
+ 'data-part-root': '',
219
222
  '[attr.data-layout]': 'layout()',
220
223
  '[attr.data-size]': 'resolvedSize()',
221
224
  '[attr.data-shape]': 'resolvedShape()',
222
- }, styles: ["@layer slotted.components{[data-ui=avatar-group][data-part=root]{--_overlap: var(--slotted-avatar-group-overlap, .28);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_raise-lift: calc( var(--slotted-avatar-group-raise-lift, var(--slotted-space-2, .25rem)) * -1 );--_raise-ring: var(--slotted-border-width-thick, 2px);--_raise-shadow: var(--slotted-shadow-sm);align-items:center;display:flex;list-style:none;margin:0;padding:0}[data-ui=avatar-group][data-part=root]:empty{display:none}[data-ui=avatar-group] [data-part=item],[data-ui=avatar-group] [data-part=overflow]{display:flex;position:relative}[data-ui=avatar-group][data-part=root][data-layout=stack] [data-ui=avatar][data-part=root]{transition-timing-function:var(--slotted-easing-exit)}[data-ui=avatar-group][data-part=root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui=avatar-group][data-part=root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui=avatar-group][data-part=root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui=avatar-group][data-part=root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui=avatar-group][data-part=root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui=avatar-group][data-part=root][data-layout=stack]{flex-wrap:nowrap}[data-ui=avatar-group][data-part=root][data-layout=stack]>*+*{margin-inline-start:calc(round(nearest,calc(var(--_size) * var(--_overlap)),1px)*-1)}[data-ui=avatar-group][data-part=root][data-layout=spread]{flex-wrap:wrap;gap:var(--slotted-space-4, .5rem)}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]:not([data-disabled]):hover{--slotted-avatar-ring-width: var(--_raise-ring);--slotted-avatar-elevation: var(--_raise-shadow);z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]:focus-visible{z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]:not([data-disabled]):active{transform:translateY(calc(var(--_raise-lift) / 2))}@media(prefers-reduced-motion:reduce){[data-ui=avatar-group][data-part=root][data-layout=stack]{--_raise-lift: 0px;--_raise-shadow: 0 0 transparent}[data-ui=avatar-group][data-layout=stack] [data-ui=avatar][data-part=root]{transition:none}}[data-ui=avatar-group] [data-part=overflow] [data-ui=avatar][data-part=root]{--slotted-avatar-initials-size: round(nearest, calc(var(--_size) * .36), 1px);font-variant-numeric:tabular-nums}}\n"] }]
225
+ }, styles: ["@layer slotted.components{[data-ui-avatar-group][data-part-root]{--_overlap: var(--slotted-avatar-group-overlap, .28);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_raise-lift: calc( var(--slotted-avatar-group-raise-lift, var(--slotted-space-2, .25rem)) * -1 );--_raise-ring: var(--slotted-border-width-thick, 2px);--_raise-shadow: var(--slotted-shadow-sm);align-items:center;display:flex;list-style:none;margin:0;padding:0}[data-ui-avatar-group][data-part-root]:empty{display:none}[data-ui-avatar-group] [data-part-item],[data-ui-avatar-group] [data-part-overflow]{display:flex;position:relative}[data-ui-avatar-group][data-part-root][data-layout=stack] [data-ui-avatar][data-part-root]{transition-timing-function:var(--slotted-easing-exit)}[data-ui-avatar-group][data-part-root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui-avatar-group][data-part-root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui-avatar-group][data-part-root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui-avatar-group][data-part-root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui-avatar-group][data-part-root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui-avatar-group][data-part-root][data-layout=stack]{flex-wrap:nowrap}[data-ui-avatar-group][data-part-root][data-layout=stack]>*+*{margin-inline-start:calc(round(nearest,calc(var(--_size) * var(--_overlap)),1px)*-1)}[data-ui-avatar-group][data-part-root][data-layout=spread]{flex-wrap:wrap;gap:var(--slotted-space-4, .5rem)}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]:not([data-disabled]):hover{--slotted-avatar-ring-width: var(--_raise-ring);--slotted-avatar-elevation: var(--_raise-shadow);z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]:focus-visible{z-index:1;transform:translateY(var(--_raise-lift));transition-timing-function:var(--slotted-easing-enter)}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]:not([data-disabled]):active{transform:translateY(calc(var(--_raise-lift) / 2))}@media(prefers-reduced-motion:reduce){[data-ui-avatar-group][data-part-root][data-layout=stack]{--_raise-lift: 0px;--_raise-shadow: 0 0 transparent}[data-ui-avatar-group][data-layout=stack] [data-ui-avatar][data-part-root]{transition:none}}[data-ui-avatar-group] [data-part-overflow] [data-ui-avatar][data-part-root]{--slotted-avatar-initials-size: round(nearest, calc(var(--_size) * .36), 1px);font-variant-numeric:tabular-nums}}\n"] }]
223
226
  }], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], total: [{ type: i0.Input, args: [{ isSignal: true, alias: "total", required: false }] }], overflowLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "overflowLabel", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SlAvatarGroupItem), { isSignal: true }] }] } });
224
227
 
225
228
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-avatar-group.mjs","sources":["../../avatar-group/src/avatar-group-host.ts","../../avatar-group/src/avatar-group-item.ts","../../avatar-group/src/avatar-group.ts","../../avatar-group/src/slotted-angular-avatar-group.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\n\n/**\n * What a member is, to the group that holds it: a name, and a place in the row.\n *\n * The token exists so an item can ask the group whether it is beyond the limit\n * without importing the group, which imports the item for its own content\n * query. One direction each way is what keeps the two files out of a cycle.\n */\nexport interface AvatarGroupMember {\n /** The member's own name, read from the avatar inside it. */\n readonly memberName: Signal<string | undefined>;\n}\n\nexport interface AvatarGroupHost {\n isHiddenMember(member: AvatarGroupMember): boolean;\n}\n\nexport const AVATAR_GROUP = new InjectionToken<AvatarGroupHost>('slotted avatar group');\n","import { computed, contentChild, Directive, inject } from '@angular/core';\nimport { SlAvatar } from '@slotted/angular/avatar';\n\nimport { AVATAR_GROUP } from './avatar-group-host';\n\n/**\n * One member of the group: the list item that holds an avatar.\n *\n * React wraps each child itself, because it can. Angular cannot wrap projected\n * content one node at a time, so the item is written in the template — which is\n * the more honest of the two anyway: the `<li>` is the consumer's element, and\n * `*ngFor` puts it where the data says.\n *\n * A member past the group's limit is `hidden`, which takes it out of the layout\n * and out of the accessibility tree in one attribute. Its name is not lost: the\n * group reads it from here and puts it on the summary.\n */\n@Directive({\n selector: 'li[slAvatarGroupItem]',\n standalone: true,\n exportAs: 'slAvatarGroupItem',\n host: {\n 'data-part': 'item',\n '[attr.hidden]': \"hidden() ? '' : null\",\n },\n})\nexport class SlAvatarGroupItem {\n private readonly group = inject(AVATAR_GROUP);\n private readonly avatar = contentChild(SlAvatar);\n\n /** What the group calls this member when it has to summarise it away. */\n readonly memberName = computed(() => this.avatar()?.name());\n\n protected readonly hidden = computed(() => this.group.isHiddenMember(this));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AVATAR_DEFAULTS, SlAvatar } from '@slotted/angular/avatar';\nimport type {\n AvatarDefaults,\n AvatarGroupLayout,\n AvatarShape,\n AvatarSize,\n AvatarVariant,\n} from '@slotted/angular/avatar';\nimport { formatCount } from '@slotted/core/count';\nimport { formatNameList } from '@slotted/core/identity';\n\nimport { AVATAR_GROUP, type AvatarGroupMember } from './avatar-group-host';\nimport { SlAvatarGroupItem } from './avatar-group-item';\n\n/**\n * The three axes the group hands down to the avatars inside it, through the\n * avatar family's own defaults token rather than through a second channel of\n * this family's invention. That is what keeps an explicit input on a member\n * winning over the group, because it is the rule `SlAvatar` already implements.\n *\n * `tone` is not among them, deliberately: a tone derived from a name is the\n * member's own identity, and a group that overrode it would paint eight people\n * the same colour.\n *\n * The values are read through getters so a member's `computed` tracks the\n * group's signals; a plain snapshot would fix the paint at the moment the first\n * member was created. The pattern `button-group` established.\n */\nfunction provideGroupPaint() {\n return {\n provide: AVATAR_DEFAULTS,\n useFactory: (): AvatarDefaults => {\n const group = inject(SlAvatarGroup);\n const inherited = inject(AVATAR_DEFAULTS, { skipSelf: true });\n\n return {\n get locale() {\n return group.locale() ?? inherited.locale;\n },\n get shape() {\n return group.shape() ?? inherited.shape;\n },\n get size() {\n return group.size() ?? inherited.size;\n },\n get tone() {\n return inherited.tone;\n },\n get variant() {\n return group.variant() ?? inherited.variant;\n },\n };\n },\n };\n}\n\n/**\n * A list of faces, overlapped or apart, ending in a summary of the ones it does\n * not show.\n *\n * It is written on a real `<ul>` whose members are real `<li>`s, so assistive\n * technology announces a list of N without the family inventing a role. There\n * is no `label` input: the element already accepts `aria-label`, and a second\n * way to name one thing is a second thing to get wrong — the decision\n * `button-group` took for the same question.\n *\n * The summary is an avatar rather than a fourth part painted to look like one,\n * so it takes the group's size, shape, edge and ring from the same rules as\n * every member beside it. Its accessible name is the hidden members' names,\n * joined for the locale: Atlassian's default there is the English string “N\n * more people”, and MUI, Ant, Fluent, Chakra and HeroUI leave `+3` as the whole\n * announcement.\n */\n@Component({\n selector: 'ul[slAvatarGroup]',\n standalone: true,\n exportAs: 'slAvatarGroup',\n imports: [SlAvatar],\n providers: [\n /* A decorator is evaluated before the class it decorates exists. */\n { provide: AVATAR_GROUP, useExisting: forwardRef(() => SlAvatarGroup) },\n provideGroupPaint(),\n ],\n template: `<ng-content></ng-content>\n @if (surplus() > 0 && summary() !== undefined) {\n <li data-part=\"overflow\">\n <span slAvatar tone=\"secondary\" [name]=\"overflowName()\" [initials]=\"'+' + summary()\"></span>\n </li>\n }`,\n styleUrl: '../../../styles/src/avatar-group/avatar-group.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'avatar-group',\n 'data-part': 'root',\n '[attr.data-layout]': 'layout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-shape]': 'resolvedShape()',\n },\n})\nexport class SlAvatarGroup {\n /** `stack` overlaps the members; `spread` lays them apart and wraps. */\n readonly layout = input<AvatarGroupLayout>('stack');\n /**\n * The largest number of discs the group draws, the summary included. Above\n * it, one fewer member is shown and the rest are summarised. `false` shows\n * every member.\n */\n readonly max = input<number | false>(5);\n /**\n * How many members there really are, when the page renders fewer than it\n * has — a server-paged list showing three of forty. Defaults to the number of\n * items written.\n */\n readonly total = input<number | undefined>(undefined);\n /**\n * What the summary is called. Defaults to the hidden members' names, joined\n * for the locale — which is only possible while every hidden member is in the\n * DOM, so a group given a larger `total` supplies this itself.\n */\n readonly overflowLabel = input<string | undefined>(undefined);\n /** Provided to every member. An avatar that states its own still wins. */\n readonly size = input<AvatarSize | undefined>(undefined);\n /** Provided to every member. An avatar that states its own still wins. */\n readonly shape = input<AvatarShape | undefined>(undefined);\n /** Provided to every member. An avatar that states its own still wins. */\n readonly variant = input<AvatarVariant | undefined>(undefined);\n /** BCP 47, for the digits of the summary and for joining the hidden names. */\n readonly locale = input<string | undefined>(undefined);\n\n private readonly inherited = inject(AVATAR_DEFAULTS, { skipSelf: true });\n private readonly items = contentChildren(SlAvatarGroupItem);\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.inherited.size);\n protected readonly resolvedShape = computed(() => this.shape() ?? this.inherited.shape);\n private readonly resolvedLocale = computed(() => this.locale() ?? this.inherited.locale);\n\n private readonly count = computed(() => this.total() ?? this.items().length);\n\n /**\n * `max` counts the discs the group draws, the summary included, so a limit of\n * five never puts six circles in a row. Below the limit nothing is\n * summarised: a `+1` beside four faces is one more circle than showing the\n * fifth, and says less.\n */\n private readonly shownCount = computed(() => {\n const max = this.max();\n const limit = max === false ? Number.POSITIVE_INFINITY : max;\n const items = this.items().length;\n return this.count() > limit ? Math.min(limit - 1, items) : items;\n });\n\n protected readonly surplus = computed(() => Math.max(this.count() - this.shownCount(), 0));\n\n protected readonly summary = computed(() =>\n formatCount({ count: this.surplus(), max: false, locale: this.resolvedLocale() }),\n );\n\n /**\n * The names of the members that were not drawn. They are only complete while\n * every hidden member is in the DOM: a group told it stands for forty and\n * given three items knows three names and no more, so it says nothing rather\n * than naming a third of them.\n */\n protected readonly overflowName = computed(() => {\n const label = this.overflowLabel();\n if (label !== undefined) return label;\n const total = this.total();\n if (total !== undefined && total !== this.items().length) return undefined;\n return formatNameList({\n names: this.items()\n .slice(this.shownCount())\n .map((item) => item.memberName()),\n locale: this.resolvedLocale(),\n });\n });\n\n /** Read from each item's own `computed`, so a member hides itself. */\n isHiddenMember(member: AvatarGroupMember) {\n return this.items().indexOf(member as SlAvatarGroupItem) >= this.shownCount();\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-avatar-group.mjs","sources":["../../avatar-group/src/avatar-group-host.ts","../../avatar-group/src/avatar-group-item.ts","../../avatar-group/src/avatar-group.ts","../../avatar-group/src/slotted-angular-avatar-group.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\n\n/**\n * What a member is, to the group that holds it: a name, and a place in the row.\n *\n * The token exists so an item can ask the group whether it is beyond the limit\n * without importing the group, which imports the item for its own content\n * query. One direction each way is what keeps the two files out of a cycle.\n */\nexport interface AvatarGroupMember {\n /** The member's own name, read from the avatar inside it. */\n readonly memberName: Signal<string | undefined>;\n}\n\nexport interface AvatarGroupHost {\n isHiddenMember(member: AvatarGroupMember): boolean;\n}\n\nexport const AVATAR_GROUP = new InjectionToken<AvatarGroupHost>('slotted avatar group');\n","import { computed, contentChild, Directive, inject } from '@angular/core';\nimport { SlAvatar } from '@slotted/angular/avatar';\n\nimport { AVATAR_GROUP } from './avatar-group-host';\n\n/**\n * One member of the group: the list item that holds an avatar.\n *\n * React wraps each child itself, because it can. Angular cannot wrap projected\n * content one node at a time, so the item is written in the template — which is\n * the more honest of the two anyway: the `<li>` is the consumer's element, and\n * `*ngFor` puts it where the data says.\n *\n * A member past the group's limit is `hidden`, which takes it out of the layout\n * and out of the accessibility tree in one attribute. Its name is not lost: the\n * group reads it from here and puts it on the summary.\n */\n@Directive({\n selector: 'li[slAvatarGroupItem]',\n standalone: true,\n exportAs: 'slAvatarGroupItem',\n host: {\n 'data-part': 'item',\n 'data-part-item': '',\n '[attr.hidden]': \"hidden() ? '' : null\",\n },\n})\nexport class SlAvatarGroupItem {\n private readonly group = inject(AVATAR_GROUP);\n private readonly avatar = contentChild(SlAvatar);\n\n /** What the group calls this member when it has to summarise it away. */\n readonly memberName = computed(() => this.avatar()?.name());\n\n protected readonly hidden = computed(() => this.group.isHiddenMember(this));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AVATAR_DEFAULTS, SlAvatar } from '@slotted/angular/avatar';\nimport type {\n AvatarDefaults,\n AvatarGroupLayout,\n AvatarShape,\n AvatarSize,\n AvatarVariant,\n} from '@slotted/angular/avatar';\nimport { formatCount } from '@slotted/core/count';\nimport { formatNameList } from '@slotted/core/identity';\n\nimport { AVATAR_GROUP, type AvatarGroupMember } from './avatar-group-host';\nimport { SlAvatarGroupItem } from './avatar-group-item';\n\n/**\n * The three axes the group hands down to the avatars inside it, through the\n * avatar family's own defaults token rather than through a second channel of\n * this family's invention. That is what keeps an explicit input on a member\n * winning over the group, because it is the rule `SlAvatar` already implements.\n *\n * `tone` is not among them, deliberately: a tone derived from a name is the\n * member's own identity, and a group that overrode it would paint eight people\n * the same colour.\n *\n * The values are read through getters so a member's `computed` tracks the\n * group's signals; a plain snapshot would fix the paint at the moment the first\n * member was created. The pattern `button-group` established.\n */\nfunction provideGroupPaint() {\n return {\n provide: AVATAR_DEFAULTS,\n useFactory: (): AvatarDefaults => {\n const group = inject(SlAvatarGroup);\n const inherited = inject(AVATAR_DEFAULTS, { skipSelf: true });\n\n return {\n get locale() {\n return group.locale() ?? inherited.locale;\n },\n get shape() {\n return group.shape() ?? inherited.shape;\n },\n get size() {\n return group.size() ?? inherited.size;\n },\n get tone() {\n return inherited.tone;\n },\n get variant() {\n return group.variant() ?? inherited.variant;\n },\n };\n },\n };\n}\n\n/**\n * A list of faces, overlapped or apart, ending in a summary of the ones it does\n * not show.\n *\n * It is written on a real `<ul>` whose members are real `<li>`s, so assistive\n * technology announces a list of N without the family inventing a role. There\n * is no `label` input: the element already accepts `aria-label`, and a second\n * way to name one thing is a second thing to get wrong — the decision\n * `button-group` took for the same question.\n *\n * The summary is an avatar rather than a fourth part painted to look like one,\n * so it takes the group's size, shape, edge and ring from the same rules as\n * every member beside it. Its accessible name is the hidden members' names,\n * joined for the locale: Atlassian's default there is the English string “N\n * more people”, and MUI, Ant, Fluent, Chakra and HeroUI leave `+3` as the whole\n * announcement.\n */\n@Component({\n selector: 'ul[slAvatarGroup]',\n standalone: true,\n exportAs: 'slAvatarGroup',\n imports: [SlAvatar],\n providers: [\n /* A decorator is evaluated before the class it decorates exists. */\n { provide: AVATAR_GROUP, useExisting: forwardRef(() => SlAvatarGroup) },\n provideGroupPaint(),\n ],\n template: `<ng-content></ng-content>\n @if (surplus() > 0 && summary() !== undefined) {\n <li data-part=\"overflow\" data-part-overflow=\"\">\n <span slAvatar tone=\"secondary\" [name]=\"overflowName()\" [initials]=\"'+' + summary()\"></span>\n </li>\n }`,\n styleUrl: '../../../styles/src/avatar-group/avatar-group.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'avatar-group',\n 'data-ui-avatar-group': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-layout]': 'layout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-shape]': 'resolvedShape()',\n },\n})\nexport class SlAvatarGroup {\n /** `stack` overlaps the members; `spread` lays them apart and wraps. */\n readonly layout = input<AvatarGroupLayout>('stack');\n /**\n * The largest number of discs the group draws, the summary included. Above\n * it, one fewer member is shown and the rest are summarised. `false` shows\n * every member.\n */\n readonly max = input<number | false>(5);\n /**\n * How many members there really are, when the page renders fewer than it\n * has — a server-paged list showing three of forty. Defaults to the number of\n * items written.\n */\n readonly total = input<number | undefined>(undefined);\n /**\n * What the summary is called. Defaults to the hidden members' names, joined\n * for the locale — which is only possible while every hidden member is in the\n * DOM, so a group given a larger `total` supplies this itself.\n */\n readonly overflowLabel = input<string | undefined>(undefined);\n /** Provided to every member. An avatar that states its own still wins. */\n readonly size = input<AvatarSize | undefined>(undefined);\n /** Provided to every member. An avatar that states its own still wins. */\n readonly shape = input<AvatarShape | undefined>(undefined);\n /** Provided to every member. An avatar that states its own still wins. */\n readonly variant = input<AvatarVariant | undefined>(undefined);\n /** BCP 47, for the digits of the summary and for joining the hidden names. */\n readonly locale = input<string | undefined>(undefined);\n\n private readonly inherited = inject(AVATAR_DEFAULTS, { skipSelf: true });\n private readonly items = contentChildren(SlAvatarGroupItem);\n\n protected readonly resolvedSize = computed(() => this.size() ?? this.inherited.size);\n protected readonly resolvedShape = computed(() => this.shape() ?? this.inherited.shape);\n private readonly resolvedLocale = computed(() => this.locale() ?? this.inherited.locale);\n\n private readonly count = computed(() => this.total() ?? this.items().length);\n\n /**\n * `max` counts the discs the group draws, the summary included, so a limit of\n * five never puts six circles in a row. Below the limit nothing is\n * summarised: a `+1` beside four faces is one more circle than showing the\n * fifth, and says less.\n */\n private readonly shownCount = computed(() => {\n const max = this.max();\n const limit = max === false ? Number.POSITIVE_INFINITY : max;\n const items = this.items().length;\n return this.count() > limit ? Math.min(limit - 1, items) : items;\n });\n\n protected readonly surplus = computed(() => Math.max(this.count() - this.shownCount(), 0));\n\n protected readonly summary = computed(() =>\n formatCount({ count: this.surplus(), max: false, locale: this.resolvedLocale() }),\n );\n\n /**\n * The names of the members that were not drawn. They are only complete while\n * every hidden member is in the DOM: a group told it stands for forty and\n * given three items knows three names and no more, so it says nothing rather\n * than naming a third of them.\n */\n protected readonly overflowName = computed(() => {\n const label = this.overflowLabel();\n if (label !== undefined) return label;\n const total = this.total();\n if (total !== undefined && total !== this.items().length) return undefined;\n return formatNameList({\n names: this.items()\n .slice(this.shownCount())\n .map((item) => item.memberName()),\n locale: this.resolvedLocale(),\n });\n });\n\n /** Read from each item's own `computed`, so a member hides itself. */\n isHiddenMember(member: AvatarGroupMember) {\n return this.items().indexOf(member as SlAvatarGroupItem) >= this.shownCount();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -98,7 +98,7 @@ class SlAvatarImage {
98
98
  });
99
99
  }
100
100
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
101
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlAvatarImage, isStandalone: true, selector: "img[slAvatarImage]", host: { attributes: { "data-part": "image" }, listeners: { "load": "avatar.reportStatus(\"loaded\")", "error": "avatar.reportStatus(\"error\")" }, properties: { "attr.alt": "alt" } }, exportAs: ["slAvatarImage"], ngImport: i0 });
101
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlAvatarImage, isStandalone: true, selector: "img[slAvatarImage]", host: { attributes: { "data-part": "image", "data-part-image": "" }, listeners: { "load": "avatar.reportStatus(\"loaded\")", "error": "avatar.reportStatus(\"error\")" }, properties: { "attr.alt": "alt" } }, exportAs: ["slAvatarImage"], ngImport: i0 });
102
102
  }
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatarImage, decorators: [{
104
104
  type: Directive,
@@ -108,6 +108,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
108
108
  exportAs: 'slAvatarImage',
109
109
  host: {
110
110
  'data-part': 'image',
111
+ 'data-part-image': '',
111
112
  '[attr.alt]': 'alt',
112
113
  '(load)': 'avatar.reportStatus("loaded")',
113
114
  '(error)': 'avatar.reportStatus("error")',
@@ -189,6 +190,9 @@ class SlAvatar {
189
190
  /** Defaults to the provider, then to `soft`. */
190
191
  variant = input(undefined, /* @ts-ignore */
191
192
  ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
193
+ /** The ground behind the avatar; `tone` by default. */
194
+ surface = input('tone', /* @ts-ignore */
195
+ ...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
192
196
  /** A deactivated account, or an avatar inside a control the page has turned off. */
193
197
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
194
198
  /**
@@ -267,7 +271,7 @@ class SlAvatar {
267
271
  this.statusChange.emit(status);
268
272
  }
269
273
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
270
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlAvatar, isStandalone: true, selector: "[slAvatar]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, initialsOverride: { classPropertyName: "initialsOverride", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, idFor: { classPropertyName: "idFor", publicName: "idFor", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChange: "statusChange" }, host: { attributes: { "data-ui": "avatar", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-shape": "resolvedShape()", "attr.data-tone": "resolvedTone()", "attr.data-variant": "resolvedVariant()", "attr.data-status": "resolvedStatus()", "attr.data-disabled": "disabled() ? '' : null", "attr.role": "role()", "attr.aria-label": "ariaLabel()", "attr.aria-hidden": "ariaHidden()" } }, providers: [
274
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlAvatar, isStandalone: true, selector: "[slAvatar]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, initialsOverride: { classPropertyName: "initialsOverride", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, idFor: { classPropertyName: "idFor", publicName: "idFor", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, surface: { classPropertyName: "surface", publicName: "surface", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChange: "statusChange" }, host: { attributes: { "data-ui": "avatar", "data-ui-avatar": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-shape": "resolvedShape()", "attr.data-tone": "resolvedTone()", "attr.data-variant": "resolvedVariant()", "attr.data-surface": "surface()", "attr.data-status": "resolvedStatus()", "attr.data-disabled": "disabled() ? '' : null", "attr.role": "role()", "attr.aria-label": "ariaLabel()", "attr.aria-hidden": "ariaHidden()" } }, providers: [
271
275
  /* The component is its own image host, and a decorator is evaluated before
272
276
  the class it decorates exists. */
273
277
  { provide: AVATAR_IMAGE_HOST, useExisting: forwardRef(() => SlAvatar) },
@@ -275,7 +279,7 @@ class SlAvatar {
275
279
  <img slAvatarImage [src]="source" />
276
280
  }
277
281
  <ng-content select="img"></ng-content
278
- ><span data-part="fallback">
282
+ ><span data-part="fallback" data-part-fallback="">
279
283
  @if (custom() === undefined) {
280
284
  <!-- No picture and no name to take initials from: the person glyph. -->
281
285
  @if (initials() === '') {
@@ -285,7 +289,7 @@ class SlAvatar {
285
289
  }
286
290
  }
287
291
  <ng-content select="[slAvatarFallback]"></ng-content
288
- ></span>`, isInline: true, styles: ["@layer slotted.components{[data-ui=avatar][data-part=root]{--_solid: var(--slotted-tone-secondary-solid-hover);--_on-solid: var(--slotted-tone-secondary-on-solid);--_surface: var(--slotted-tone-secondary-surface);--_border: var(--slotted-tone-secondary-border);--_text: var(--slotted-tone-secondary-text);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_initials-size: var(--slotted-avatar-initials-size, calc(var(--_size) * .4));--_glyph-size: var(--slotted-avatar-glyph-size, calc(var(--_size) * .68));--_radius: var(--slotted-radius-full, 9999px);--_edge-width: var(--slotted-avatar-border-width, var(--slotted-border-width-thin, 1px));--_edge: var(--_border);--_solid-edge: var(--_border);--_ring-width: var(--slotted-avatar-ring-width, 0);--_ring-color: var(--slotted-avatar-ring-color, var(--slotted-surface, Canvas));--_elevation: var(--slotted-avatar-elevation, 0 0 transparent);align-items:center;appearance:none;block-size:var(--_size);border-color:var(--_edge);border-radius:var(--_radius);border-style:solid;border-width:var(--_edge-width);box-shadow:0 0 0 var(--_ring-width) var(--_ring-color),var(--_elevation);box-sizing:border-box;display:inline-flex;flex:none;font-family:var(--slotted-avatar-font-family, var(--slotted-control-font-family, sans-serif));font-size:var(--_initials-size);font-weight:var(--slotted-avatar-font-weight, var(--slotted-font-weight-medium, 500));inline-size:var(--_size);justify-content:center;line-height:1;padding:0;isolation:isolate;position:relative;text-decoration:none;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard),background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),transform var(--slotted-duration-short) var(--slotted-easing-standard);-webkit-user-select:none;user-select:none;vertical-align:middle}[data-ui=avatar][data-part=root][data-tone=accent]{--_solid: var(--slotted-tone-accent-solid);--_solid-edge: var(--slotted-tone-accent-solid);--_on-solid: var(--slotted-tone-accent-on-solid);--_surface: var(--slotted-tone-accent-surface);--_border: var(--slotted-tone-accent-border);--_text: var(--slotted-tone-accent-text)}[data-ui=avatar][data-part=root][data-tone=success]{--_solid: var(--slotted-tone-success-solid);--_solid-edge: var(--slotted-tone-success-solid);--_on-solid: var(--slotted-tone-success-on-solid);--_surface: var(--slotted-tone-success-surface);--_border: var(--slotted-tone-success-border);--_text: var(--slotted-tone-success-text)}[data-ui=avatar][data-part=root][data-tone=warning]{--_solid: var(--slotted-tone-warning-solid);--_solid-edge: var(--slotted-tone-warning-solid);--_on-solid: var(--slotted-tone-warning-on-solid);--_surface: var(--slotted-tone-warning-surface);--_border: var(--slotted-tone-warning-border);--_text: var(--slotted-tone-warning-text)}[data-ui=avatar][data-part=root][data-tone=danger]{--_solid: var(--slotted-tone-danger-solid);--_solid-edge: var(--slotted-tone-danger-solid);--_on-solid: var(--slotted-tone-danger-on-solid);--_surface: var(--slotted-tone-danger-surface);--_border: var(--slotted-tone-danger-border);--_text: var(--slotted-tone-danger-text)}[data-ui=avatar][data-part=root][data-variant=soft]{--_ground: var(--_surface, ButtonFace);background-color:var(--_ground);color:var(--_text, ButtonText)}[data-ui=avatar][data-part=root][data-variant=solid]{--_edge: var(--_solid-edge);--_ground: var(--_solid, ButtonFace);background-color:var(--_ground);color:var(--_on-solid, ButtonText)}[data-ui=avatar][data-part=root][data-shape=square]{--_radius: var(--slotted-avatar-radius, round(nearest, calc(var(--_size) / 6), 1px))}[data-ui=avatar][data-part=root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui=avatar][data-part=root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui=avatar][data-part=root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui=avatar][data-part=root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui=avatar][data-part=root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui=avatar] [data-part=image]{block-size:100%;border-radius:inherit;inline-size:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity var(--slotted-duration-short) var(--slotted-easing-exit)}[data-ui=avatar][data-status=loaded] [data-part=image]{opacity:1;transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar] [data-part=fallback]{--slotted-icon-size: var(--_glyph-size);align-items:center;block-size:100%;border-radius:inherit;display:flex;inline-size:100%;justify-content:center;overflow:hidden;transition:opacity var(--slotted-duration-short) var(--slotted-easing-enter)}[data-ui=avatar][data-status=loaded] [data-part=fallback]{opacity:0;transition-timing-function:var(--slotted-easing-exit)}@supports (text-box: trim-both cap alphabetic){[data-ui=avatar] [data-part=fallback]:not(:has(>*)){align-content:center;display:block;text-align:center;text-box:trim-both cap alphabetic}}[data-ui=avatar][data-part=root][data-status=loaded]{--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui=avatar][data-part=root][data-disabled]{--_solid: var(--slotted-disabled-background, Canvas);--_on-solid: var(--slotted-disabled-foreground, GrayText);--_surface: var(--slotted-disabled-background, Canvas);--_text: var(--slotted-disabled-foreground, GrayText);--_edge: var(--slotted-disabled-border, GrayText)}[data-ui=avatar][data-part=root][data-disabled] [data-part=image]{filter:var(--slotted-avatar-disabled-image-filter, grayscale(1) opacity(.5))}[data-ui=avatar][data-part=root]:any-link,button[data-ui=avatar][data-part=root],[data-ui=avatar][data-part=root][tabindex]{cursor:pointer;overflow:clip;overflow-clip-margin:var(--slotted-target-min, 24px)}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-part=root]:not([data-disabled]):hover,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):hover{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-hover, 8%))}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-part=root]:not([data-disabled]):active,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):active{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-active, 14%))}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):hover,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--slotted-avatar-ring-width: var(--slotted-border-width-thin, 1px);--slotted-avatar-ring-color: var(--slotted-border-strong, CanvasText)}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):active,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):active{--slotted-avatar-ring-width: var(--slotted-border-width-thick, 2px)}[data-ui=avatar][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=avatar][data-part=root]:any-link:after,button[data-ui=avatar][data-part=root]:after,[data-ui=avatar][data-part=root][tabindex]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(forced-colors:active){[data-ui=avatar][data-part=root]{--_edge: currentColor}}}\n"], dependencies: [{ kind: "directive", type: SlAvatarImage, selector: "img[slAvatarImage]", exportAs: ["slAvatarImage"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
292
+ ></span>`, isInline: true, styles: ["@layer slotted.components{[data-ui-avatar][data-part-root]{--_solid: var(--slotted-tone-secondary-solid-hover);--_on-solid: var(--slotted-tone-secondary-on-solid);--_surface: var(--slotted-tone-secondary-surface);--_border: var(--slotted-tone-secondary-border);--_text: var(--slotted-tone-secondary-text);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_initials-size: var(--slotted-avatar-initials-size, calc(var(--_size) * .4));--_glyph-size: var(--slotted-avatar-glyph-size, calc(var(--_size) * .68));--_radius: var(--slotted-radius-full, 9999px);--_edge-width: var(--slotted-avatar-border-width, var(--slotted-border-width-thin, 1px));--_edge: var(--_border);--_solid-edge: var(--_border);--_ring-width: var(--slotted-avatar-ring-width, 0);--_ring-color: var(--slotted-avatar-ring-color, var(--slotted-surface, Canvas));--_elevation: var(--slotted-avatar-elevation, 0 0 transparent);align-items:center;appearance:none;block-size:var(--_size);border-color:var(--_edge);border-radius:var(--_radius);border-style:solid;border-width:var(--_edge-width);box-shadow:0 0 0 var(--_ring-width) var(--_ring-color),var(--_elevation);box-sizing:border-box;display:inline-flex;flex:none;font-family:var(--slotted-avatar-font-family, var(--slotted-control-font-family, sans-serif));font-size:var(--_initials-size);font-weight:var(--slotted-avatar-font-weight, var(--slotted-font-weight-medium, 500));inline-size:var(--_size);justify-content:center;line-height:1;padding:0;isolation:isolate;position:relative;text-decoration:none;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard),background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),transform var(--slotted-duration-short) var(--slotted-easing-standard);-webkit-user-select:none;user-select:none;vertical-align:middle}[data-ui-avatar][data-part-root][data-tone=accent]{--_solid: var(--slotted-tone-accent-solid);--_solid-edge: var(--slotted-tone-accent-solid);--_on-solid: var(--slotted-tone-accent-on-solid);--_surface: var(--slotted-tone-accent-surface);--_border: var(--slotted-tone-accent-border);--_text: var(--slotted-tone-accent-text)}[data-ui-avatar][data-part-root][data-tone=success]{--_solid: var(--slotted-tone-success-solid);--_solid-edge: var(--slotted-tone-success-solid);--_on-solid: var(--slotted-tone-success-on-solid);--_surface: var(--slotted-tone-success-surface);--_border: var(--slotted-tone-success-border);--_text: var(--slotted-tone-success-text)}[data-ui-avatar][data-part-root][data-tone=info]{--_solid: var(--slotted-tone-info-solid);--_solid-edge: var(--slotted-tone-info-solid);--_on-solid: var(--slotted-tone-info-on-solid);--_surface: var(--slotted-tone-info-surface);--_border: var(--slotted-tone-info-border);--_text: var(--slotted-tone-info-text)}[data-ui-avatar][data-part-root][data-tone=warning]{--_solid: var(--slotted-tone-warning-solid);--_solid-edge: var(--slotted-tone-warning-solid);--_on-solid: var(--slotted-tone-warning-on-solid);--_surface: var(--slotted-tone-warning-surface);--_border: var(--slotted-tone-warning-border);--_text: var(--slotted-tone-warning-text)}[data-ui-avatar][data-part-root][data-tone=danger]{--_solid: var(--slotted-tone-danger-solid);--_solid-edge: var(--slotted-tone-danger-solid);--_on-solid: var(--slotted-tone-danger-on-solid);--_surface: var(--slotted-tone-danger-surface);--_border: var(--slotted-tone-danger-border);--_text: var(--slotted-tone-danger-text)}[data-ui-avatar][data-part-root][data-variant=soft]{--_ground: var(--_surface, ButtonFace);background-color:var(--_ground);color:var(--_text, ButtonText)}[data-ui-avatar][data-part-root][data-variant=solid]{--_edge: var(--_solid-edge);--_ground: var(--_solid, ButtonFace);background-color:var(--_ground);color:var(--_on-solid, ButtonText)}[data-ui-avatar][data-part-root][data-shape=square]{--_radius: var(--slotted-avatar-radius, round(nearest, calc(var(--_size) / 6), 1px))}[data-ui-avatar][data-part-root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui-avatar][data-part-root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui-avatar][data-part-root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui-avatar][data-part-root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui-avatar][data-part-root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui-avatar] [data-part-image]{block-size:100%;border-radius:inherit;inline-size:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity var(--slotted-duration-short) var(--slotted-easing-exit)}[data-ui-avatar][data-status=loaded] [data-part-image]{opacity:1;transition-timing-function:var(--slotted-easing-enter)}[data-ui-avatar] [data-part-fallback]{--slotted-icon-size: var(--_glyph-size);align-items:center;block-size:100%;border-radius:inherit;display:flex;inline-size:100%;justify-content:center;overflow:hidden;transition:opacity var(--slotted-duration-short) var(--slotted-easing-enter)}[data-ui-avatar][data-status=loaded] [data-part-fallback]{opacity:0;transition-timing-function:var(--slotted-easing-exit)}@supports (text-box: trim-both cap alphabetic){[data-ui-avatar] [data-part-fallback]:not(:has(>*)){align-content:center;display:block;text-align:center;text-box:trim-both cap alphabetic}}[data-ui-avatar][data-part-root][data-status=loaded]{--_ground: transparent;--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui-avatar][data-part-root][data-surface=none]{--_ground: transparent}[data-ui-avatar][data-part-root][data-surface=plate]{--_edge: var(--slotted-border-subtle, ButtonBorder);--_ground: var(--slotted-avatar-plate-surface, #ffffff);color:var(--slotted-avatar-plate-color, #1f2937)}[data-ui-avatar][data-part-root][data-disabled]{--_solid: var(--slotted-disabled-background, Canvas);--_on-solid: var(--slotted-disabled-foreground, GrayText);--_surface: var(--slotted-disabled-background, Canvas);--_text: var(--slotted-disabled-foreground, GrayText);--_edge: var(--slotted-disabled-border, GrayText)}[data-ui-avatar][data-part-root][data-disabled] [data-part-image]{filter:var(--slotted-avatar-disabled-image-filter, grayscale(1) opacity(.5))}[data-ui-avatar][data-part-root]:any-link,button[data-ui-avatar][data-part-root],[data-ui-avatar][data-part-root][tabindex]{cursor:pointer;overflow:clip;overflow-clip-margin:var(--slotted-target-min, 24px)}[data-ui-avatar][data-part-root]:any-link:not([data-disabled]):hover,button[data-ui-avatar][data-part-root]:not([data-disabled]):hover,[data-ui-avatar][data-part-root][tabindex]:not([data-disabled]):hover{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-hover, 8%))}[data-ui-avatar][data-part-root]:any-link:not([data-disabled]):active,button[data-ui-avatar][data-part-root]:not([data-disabled]):active,[data-ui-avatar][data-part-root][tabindex]:not([data-disabled]):active{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-active, 14%))}[data-ui-avatar][data-status=loaded]:any-link:not([data-disabled]):hover,button[data-ui-avatar][data-status=loaded]:not([data-disabled]):hover,[data-ui-avatar][data-status=loaded][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--slotted-avatar-ring-width: var(--slotted-border-width-thin, 1px);--slotted-avatar-ring-color: var(--slotted-border-strong, CanvasText)}[data-ui-avatar][data-status=loaded]:any-link:not([data-disabled]):active,button[data-ui-avatar][data-status=loaded]:not([data-disabled]):active,[data-ui-avatar][data-status=loaded][tabindex]:not([data-disabled]):active{--slotted-avatar-ring-width: var(--slotted-border-width-thick, 2px)}[data-ui-avatar][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-avatar][data-part-root]:any-link:after,button[data-ui-avatar][data-part-root]:after,[data-ui-avatar][data-part-root][tabindex]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(forced-colors:active){[data-ui-avatar][data-part-root]{--_edge: currentColor}}}\n"], dependencies: [{ kind: "directive", type: SlAvatarImage, selector: "img[slAvatarImage]", exportAs: ["slAvatarImage"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
289
293
  }
290
294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlAvatar, decorators: [{
291
295
  type: Component,
@@ -297,7 +301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
297
301
  <img slAvatarImage [src]="source" />
298
302
  }
299
303
  <ng-content select="img"></ng-content
300
- ><span data-part="fallback">
304
+ ><span data-part="fallback" data-part-fallback="">
301
305
  @if (custom() === undefined) {
302
306
  <!-- No picture and no name to take initials from: the person glyph. -->
303
307
  @if (initials() === '') {
@@ -309,18 +313,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
309
313
  <ng-content select="[slAvatarFallback]"></ng-content
310
314
  ></span>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
311
315
  'data-ui': 'avatar',
316
+ 'data-ui-avatar': '',
312
317
  'data-part': 'root',
318
+ 'data-part-root': '',
313
319
  '[attr.data-size]': 'resolvedSize()',
314
320
  '[attr.data-shape]': 'resolvedShape()',
315
321
  '[attr.data-tone]': 'resolvedTone()',
316
322
  '[attr.data-variant]': 'resolvedVariant()',
323
+ '[attr.data-surface]': 'surface()',
317
324
  '[attr.data-status]': 'resolvedStatus()',
318
325
  '[attr.data-disabled]': "disabled() ? '' : null",
319
326
  '[attr.role]': 'role()',
320
327
  '[attr.aria-label]': 'ariaLabel()',
321
328
  '[attr.aria-hidden]': 'ariaHidden()',
322
- }, styles: ["@layer slotted.components{[data-ui=avatar][data-part=root]{--_solid: var(--slotted-tone-secondary-solid-hover);--_on-solid: var(--slotted-tone-secondary-on-solid);--_surface: var(--slotted-tone-secondary-surface);--_border: var(--slotted-tone-secondary-border);--_text: var(--slotted-tone-secondary-text);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_initials-size: var(--slotted-avatar-initials-size, calc(var(--_size) * .4));--_glyph-size: var(--slotted-avatar-glyph-size, calc(var(--_size) * .68));--_radius: var(--slotted-radius-full, 9999px);--_edge-width: var(--slotted-avatar-border-width, var(--slotted-border-width-thin, 1px));--_edge: var(--_border);--_solid-edge: var(--_border);--_ring-width: var(--slotted-avatar-ring-width, 0);--_ring-color: var(--slotted-avatar-ring-color, var(--slotted-surface, Canvas));--_elevation: var(--slotted-avatar-elevation, 0 0 transparent);align-items:center;appearance:none;block-size:var(--_size);border-color:var(--_edge);border-radius:var(--_radius);border-style:solid;border-width:var(--_edge-width);box-shadow:0 0 0 var(--_ring-width) var(--_ring-color),var(--_elevation);box-sizing:border-box;display:inline-flex;flex:none;font-family:var(--slotted-avatar-font-family, var(--slotted-control-font-family, sans-serif));font-size:var(--_initials-size);font-weight:var(--slotted-avatar-font-weight, var(--slotted-font-weight-medium, 500));inline-size:var(--_size);justify-content:center;line-height:1;padding:0;isolation:isolate;position:relative;text-decoration:none;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard),background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),transform var(--slotted-duration-short) var(--slotted-easing-standard);-webkit-user-select:none;user-select:none;vertical-align:middle}[data-ui=avatar][data-part=root][data-tone=accent]{--_solid: var(--slotted-tone-accent-solid);--_solid-edge: var(--slotted-tone-accent-solid);--_on-solid: var(--slotted-tone-accent-on-solid);--_surface: var(--slotted-tone-accent-surface);--_border: var(--slotted-tone-accent-border);--_text: var(--slotted-tone-accent-text)}[data-ui=avatar][data-part=root][data-tone=success]{--_solid: var(--slotted-tone-success-solid);--_solid-edge: var(--slotted-tone-success-solid);--_on-solid: var(--slotted-tone-success-on-solid);--_surface: var(--slotted-tone-success-surface);--_border: var(--slotted-tone-success-border);--_text: var(--slotted-tone-success-text)}[data-ui=avatar][data-part=root][data-tone=warning]{--_solid: var(--slotted-tone-warning-solid);--_solid-edge: var(--slotted-tone-warning-solid);--_on-solid: var(--slotted-tone-warning-on-solid);--_surface: var(--slotted-tone-warning-surface);--_border: var(--slotted-tone-warning-border);--_text: var(--slotted-tone-warning-text)}[data-ui=avatar][data-part=root][data-tone=danger]{--_solid: var(--slotted-tone-danger-solid);--_solid-edge: var(--slotted-tone-danger-solid);--_on-solid: var(--slotted-tone-danger-on-solid);--_surface: var(--slotted-tone-danger-surface);--_border: var(--slotted-tone-danger-border);--_text: var(--slotted-tone-danger-text)}[data-ui=avatar][data-part=root][data-variant=soft]{--_ground: var(--_surface, ButtonFace);background-color:var(--_ground);color:var(--_text, ButtonText)}[data-ui=avatar][data-part=root][data-variant=solid]{--_edge: var(--_solid-edge);--_ground: var(--_solid, ButtonFace);background-color:var(--_ground);color:var(--_on-solid, ButtonText)}[data-ui=avatar][data-part=root][data-shape=square]{--_radius: var(--slotted-avatar-radius, round(nearest, calc(var(--_size) / 6), 1px))}[data-ui=avatar][data-part=root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui=avatar][data-part=root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui=avatar][data-part=root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui=avatar][data-part=root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui=avatar][data-part=root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui=avatar] [data-part=image]{block-size:100%;border-radius:inherit;inline-size:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity var(--slotted-duration-short) var(--slotted-easing-exit)}[data-ui=avatar][data-status=loaded] [data-part=image]{opacity:1;transition-timing-function:var(--slotted-easing-enter)}[data-ui=avatar] [data-part=fallback]{--slotted-icon-size: var(--_glyph-size);align-items:center;block-size:100%;border-radius:inherit;display:flex;inline-size:100%;justify-content:center;overflow:hidden;transition:opacity var(--slotted-duration-short) var(--slotted-easing-enter)}[data-ui=avatar][data-status=loaded] [data-part=fallback]{opacity:0;transition-timing-function:var(--slotted-easing-exit)}@supports (text-box: trim-both cap alphabetic){[data-ui=avatar] [data-part=fallback]:not(:has(>*)){align-content:center;display:block;text-align:center;text-box:trim-both cap alphabetic}}[data-ui=avatar][data-part=root][data-status=loaded]{--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui=avatar][data-part=root][data-disabled]{--_solid: var(--slotted-disabled-background, Canvas);--_on-solid: var(--slotted-disabled-foreground, GrayText);--_surface: var(--slotted-disabled-background, Canvas);--_text: var(--slotted-disabled-foreground, GrayText);--_edge: var(--slotted-disabled-border, GrayText)}[data-ui=avatar][data-part=root][data-disabled] [data-part=image]{filter:var(--slotted-avatar-disabled-image-filter, grayscale(1) opacity(.5))}[data-ui=avatar][data-part=root]:any-link,button[data-ui=avatar][data-part=root],[data-ui=avatar][data-part=root][tabindex]{cursor:pointer;overflow:clip;overflow-clip-margin:var(--slotted-target-min, 24px)}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-part=root]:not([data-disabled]):hover,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):hover{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-hover, 8%))}[data-ui=avatar][data-part=root]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-part=root]:not([data-disabled]):active,[data-ui=avatar][data-part=root][tabindex]:not([data-disabled]):active{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-active, 14%))}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):hover,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):hover,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--slotted-avatar-ring-width: var(--slotted-border-width-thin, 1px);--slotted-avatar-ring-color: var(--slotted-border-strong, CanvasText)}[data-ui=avatar][data-status=loaded]:any-link:not([data-disabled]):active,button[data-ui=avatar][data-status=loaded]:not([data-disabled]):active,[data-ui=avatar][data-status=loaded][tabindex]:not([data-disabled]):active{--slotted-avatar-ring-width: var(--slotted-border-width-thick, 2px)}[data-ui=avatar][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=avatar][data-part=root]:any-link:after,button[data-ui=avatar][data-part=root]:after,[data-ui=avatar][data-part=root][tabindex]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(forced-colors:active){[data-ui=avatar][data-part=root]{--_edge: currentColor}}}\n"] }]
323
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], initialsOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], idFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "idFor", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusChange: [{ type: i0.Output, args: ["statusChange"] }], custom: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlAvatarFallback), { isSignal: true }] }], projected: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlAvatarImage), { isSignal: true }] }] } });
329
+ }, styles: ["@layer slotted.components{[data-ui-avatar][data-part-root]{--_solid: var(--slotted-tone-secondary-solid-hover);--_on-solid: var(--slotted-tone-secondary-on-solid);--_surface: var(--slotted-tone-secondary-surface);--_border: var(--slotted-tone-secondary-border);--_text: var(--slotted-tone-secondary-text);--_size: var(--slotted-avatar-size, var(--slotted-avatar-size-md, 36px));--_initials-size: var(--slotted-avatar-initials-size, calc(var(--_size) * .4));--_glyph-size: var(--slotted-avatar-glyph-size, calc(var(--_size) * .68));--_radius: var(--slotted-radius-full, 9999px);--_edge-width: var(--slotted-avatar-border-width, var(--slotted-border-width-thin, 1px));--_edge: var(--_border);--_solid-edge: var(--_border);--_ring-width: var(--slotted-avatar-ring-width, 0);--_ring-color: var(--slotted-avatar-ring-color, var(--slotted-surface, Canvas));--_elevation: var(--slotted-avatar-elevation, 0 0 transparent);align-items:center;appearance:none;block-size:var(--_size);border-color:var(--_edge);border-radius:var(--_radius);border-style:solid;border-width:var(--_edge-width);box-shadow:0 0 0 var(--_ring-width) var(--_ring-color),var(--_elevation);box-sizing:border-box;display:inline-flex;flex:none;font-family:var(--slotted-avatar-font-family, var(--slotted-control-font-family, sans-serif));font-size:var(--_initials-size);font-weight:var(--slotted-avatar-font-weight, var(--slotted-font-weight-medium, 500));inline-size:var(--_size);justify-content:center;line-height:1;padding:0;isolation:isolate;position:relative;text-decoration:none;transition:border-color var(--slotted-duration-short) var(--slotted-easing-standard),background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),transform var(--slotted-duration-short) var(--slotted-easing-standard);-webkit-user-select:none;user-select:none;vertical-align:middle}[data-ui-avatar][data-part-root][data-tone=accent]{--_solid: var(--slotted-tone-accent-solid);--_solid-edge: var(--slotted-tone-accent-solid);--_on-solid: var(--slotted-tone-accent-on-solid);--_surface: var(--slotted-tone-accent-surface);--_border: var(--slotted-tone-accent-border);--_text: var(--slotted-tone-accent-text)}[data-ui-avatar][data-part-root][data-tone=success]{--_solid: var(--slotted-tone-success-solid);--_solid-edge: var(--slotted-tone-success-solid);--_on-solid: var(--slotted-tone-success-on-solid);--_surface: var(--slotted-tone-success-surface);--_border: var(--slotted-tone-success-border);--_text: var(--slotted-tone-success-text)}[data-ui-avatar][data-part-root][data-tone=info]{--_solid: var(--slotted-tone-info-solid);--_solid-edge: var(--slotted-tone-info-solid);--_on-solid: var(--slotted-tone-info-on-solid);--_surface: var(--slotted-tone-info-surface);--_border: var(--slotted-tone-info-border);--_text: var(--slotted-tone-info-text)}[data-ui-avatar][data-part-root][data-tone=warning]{--_solid: var(--slotted-tone-warning-solid);--_solid-edge: var(--slotted-tone-warning-solid);--_on-solid: var(--slotted-tone-warning-on-solid);--_surface: var(--slotted-tone-warning-surface);--_border: var(--slotted-tone-warning-border);--_text: var(--slotted-tone-warning-text)}[data-ui-avatar][data-part-root][data-tone=danger]{--_solid: var(--slotted-tone-danger-solid);--_solid-edge: var(--slotted-tone-danger-solid);--_on-solid: var(--slotted-tone-danger-on-solid);--_surface: var(--slotted-tone-danger-surface);--_border: var(--slotted-tone-danger-border);--_text: var(--slotted-tone-danger-text)}[data-ui-avatar][data-part-root][data-variant=soft]{--_ground: var(--_surface, ButtonFace);background-color:var(--_ground);color:var(--_text, ButtonText)}[data-ui-avatar][data-part-root][data-variant=solid]{--_edge: var(--_solid-edge);--_ground: var(--_solid, ButtonFace);background-color:var(--_ground);color:var(--_on-solid, ButtonText)}[data-ui-avatar][data-part-root][data-shape=square]{--_radius: var(--slotted-avatar-radius, round(nearest, calc(var(--_size) / 6), 1px))}[data-ui-avatar][data-part-root][data-size=xs]{--slotted-avatar-size: var(--slotted-avatar-size-xs, 24px)}[data-ui-avatar][data-part-root][data-size=sm]{--slotted-avatar-size: var(--slotted-avatar-size-sm, 28px)}[data-ui-avatar][data-part-root][data-size=md]{--slotted-avatar-size: var(--slotted-avatar-size-md, 36px)}[data-ui-avatar][data-part-root][data-size=lg]{--slotted-avatar-size: var(--slotted-avatar-size-lg, 48px)}[data-ui-avatar][data-part-root][data-size=xl]{--slotted-avatar-size: var(--slotted-avatar-size-xl, 64px)}[data-ui-avatar] [data-part-image]{block-size:100%;border-radius:inherit;inline-size:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity var(--slotted-duration-short) var(--slotted-easing-exit)}[data-ui-avatar][data-status=loaded] [data-part-image]{opacity:1;transition-timing-function:var(--slotted-easing-enter)}[data-ui-avatar] [data-part-fallback]{--slotted-icon-size: var(--_glyph-size);align-items:center;block-size:100%;border-radius:inherit;display:flex;inline-size:100%;justify-content:center;overflow:hidden;transition:opacity var(--slotted-duration-short) var(--slotted-easing-enter)}[data-ui-avatar][data-status=loaded] [data-part-fallback]{opacity:0;transition-timing-function:var(--slotted-easing-exit)}@supports (text-box: trim-both cap alphabetic){[data-ui-avatar] [data-part-fallback]:not(:has(>*)){align-content:center;display:block;text-align:center;text-box:trim-both cap alphabetic}}[data-ui-avatar][data-part-root][data-status=loaded]{--_ground: transparent;--_edge: var(--slotted-border-subtle, ButtonBorder)}[data-ui-avatar][data-part-root][data-surface=none]{--_ground: transparent}[data-ui-avatar][data-part-root][data-surface=plate]{--_edge: var(--slotted-border-subtle, ButtonBorder);--_ground: var(--slotted-avatar-plate-surface, #ffffff);color:var(--slotted-avatar-plate-color, #1f2937)}[data-ui-avatar][data-part-root][data-disabled]{--_solid: var(--slotted-disabled-background, Canvas);--_on-solid: var(--slotted-disabled-foreground, GrayText);--_surface: var(--slotted-disabled-background, Canvas);--_text: var(--slotted-disabled-foreground, GrayText);--_edge: var(--slotted-disabled-border, GrayText)}[data-ui-avatar][data-part-root][data-disabled] [data-part-image]{filter:var(--slotted-avatar-disabled-image-filter, grayscale(1) opacity(.5))}[data-ui-avatar][data-part-root]:any-link,button[data-ui-avatar][data-part-root],[data-ui-avatar][data-part-root][tabindex]{cursor:pointer;overflow:clip;overflow-clip-margin:var(--slotted-target-min, 24px)}[data-ui-avatar][data-part-root]:any-link:not([data-disabled]):hover,button[data-ui-avatar][data-part-root]:not([data-disabled]):hover,[data-ui-avatar][data-part-root][tabindex]:not([data-disabled]):hover{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-hover, 8%))}[data-ui-avatar][data-part-root]:any-link:not([data-disabled]):active,button[data-ui-avatar][data-part-root]:not([data-disabled]):active,[data-ui-avatar][data-part-root][tabindex]:not([data-disabled]):active{background-color:color-mix(in oklab,var(--_ground),currentColor var(--slotted-avatar-state-layer-active, 14%))}[data-ui-avatar][data-status=loaded]:any-link:not([data-disabled]):hover,button[data-ui-avatar][data-status=loaded]:not([data-disabled]):hover,[data-ui-avatar][data-status=loaded][tabindex]:not([data-disabled]):hover{--_edge: var(--slotted-border-strong, CanvasText);--slotted-avatar-ring-width: var(--slotted-border-width-thin, 1px);--slotted-avatar-ring-color: var(--slotted-border-strong, CanvasText)}[data-ui-avatar][data-status=loaded]:any-link:not([data-disabled]):active,button[data-ui-avatar][data-status=loaded]:not([data-disabled]):active,[data-ui-avatar][data-status=loaded][tabindex]:not([data-disabled]):active{--slotted-avatar-ring-width: var(--slotted-border-width-thick, 2px)}[data-ui-avatar][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-avatar][data-part-root]:any-link:after,button[data-ui-avatar][data-part-root]:after,[data-ui-avatar][data-part-root][tabindex]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}@media(forced-colors:active){[data-ui-avatar][data-part-root]{--_edge: currentColor}}}\n"] }]
330
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], initialsOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], idFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "idFor", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusChange: [{ type: i0.Output, args: ["statusChange"] }], custom: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlAvatarFallback), { isSignal: true }] }], projected: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlAvatarImage), { isSignal: true }] }] } });
324
331
 
325
332
  /**
326
333
  * Generated bundle index. Do not edit.