@slotted/angular 0.0.0-stage → 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -2
  3. package/docs/AGENTS.snippet.md +10 -0
  4. package/docs/accordion.json +345 -0
  5. package/docs/accordion.md +207 -0
  6. package/docs/action-bar.json +421 -0
  7. package/docs/action-bar.md +364 -0
  8. package/docs/action-sheet.json +210 -0
  9. package/docs/action-sheet.md +19 -0
  10. package/docs/alert.json +407 -0
  11. package/docs/alert.md +239 -0
  12. package/docs/app-shell.examples.md +349 -0
  13. package/docs/app-shell.json +835 -0
  14. package/docs/app-shell.md +214 -0
  15. package/docs/aspect-ratio.json +159 -0
  16. package/docs/aspect-ratio.md +134 -0
  17. package/docs/attachment.json +486 -0
  18. package/docs/attachment.md +253 -0
  19. package/docs/avatar-group.json +208 -0
  20. package/docs/avatar-group.md +130 -0
  21. package/docs/avatar.json +342 -0
  22. package/docs/avatar.md +142 -0
  23. package/docs/badge.json +334 -0
  24. package/docs/badge.md +138 -0
  25. package/docs/breadcrumb.json +368 -0
  26. package/docs/breadcrumb.md +237 -0
  27. package/docs/button-group.json +158 -0
  28. package/docs/button-group.md +72 -0
  29. package/docs/button.examples.md +621 -0
  30. package/docs/button.json +977 -0
  31. package/docs/button.md +200 -0
  32. package/docs/calendar.json +592 -0
  33. package/docs/calendar.md +242 -0
  34. package/docs/card.json +283 -0
  35. package/docs/card.md +130 -0
  36. package/docs/carousel.json +560 -0
  37. package/docs/carousel.md +357 -0
  38. package/docs/cascader.json +933 -0
  39. package/docs/cascader.md +379 -0
  40. package/docs/chart.examples.md +582 -0
  41. package/docs/chart.json +1359 -0
  42. package/docs/chart.md +187 -0
  43. package/docs/checkbox-group.examples.md +612 -0
  44. package/docs/checkbox-group.json +395 -0
  45. package/docs/checkbox-group.md +106 -0
  46. package/docs/checkbox.examples.md +546 -0
  47. package/docs/checkbox.json +506 -0
  48. package/docs/checkbox.md +104 -0
  49. package/docs/code-block.json +616 -0
  50. package/docs/code-block.md +303 -0
  51. package/docs/collapsible.json +456 -0
  52. package/docs/collapsible.md +261 -0
  53. package/docs/color-picker.json +523 -0
  54. package/docs/color-picker.md +201 -0
  55. package/docs/column-manager.json +486 -0
  56. package/docs/column-manager.md +277 -0
  57. package/docs/combobox.examples.md +1732 -0
  58. package/docs/combobox.json +1250 -0
  59. package/docs/combobox.md +209 -0
  60. package/docs/command-palette.json +800 -0
  61. package/docs/command-palette.md +419 -0
  62. package/docs/container.json +156 -0
  63. package/docs/container.md +92 -0
  64. package/docs/context-menu.json +231 -0
  65. package/docs/context-menu.md +176 -0
  66. package/docs/currency-field.examples.md +321 -0
  67. package/docs/currency-field.json +649 -0
  68. package/docs/currency-field.md +128 -0
  69. package/docs/dashboard-grid.json +680 -0
  70. package/docs/dashboard-grid.md +265 -0
  71. package/docs/data-grid.examples.md +3064 -0
  72. package/docs/data-grid.json +1577 -0
  73. package/docs/data-grid.md +237 -0
  74. package/docs/data-grid.props.md +81 -0
  75. package/docs/data-list.json +685 -0
  76. package/docs/data-list.md +327 -0
  77. package/docs/date-field.json +490 -0
  78. package/docs/date-field.md +235 -0
  79. package/docs/date-picker.examples.md +1226 -0
  80. package/docs/date-picker.json +696 -0
  81. package/docs/date-picker.md +121 -0
  82. package/docs/date-range-picker.examples.md +1300 -0
  83. package/docs/date-range-picker.json +903 -0
  84. package/docs/date-range-picker.md +142 -0
  85. package/docs/datetime-field.json +665 -0
  86. package/docs/datetime-field.md +337 -0
  87. package/docs/datetime-picker.examples.md +1269 -0
  88. package/docs/datetime-picker.json +928 -0
  89. package/docs/datetime-picker.md +150 -0
  90. package/docs/datetime-range-picker.examples.md +225 -0
  91. package/docs/datetime-range-picker.json +1015 -0
  92. package/docs/datetime-range-picker.md +162 -0
  93. package/docs/description-list.json +471 -0
  94. package/docs/description-list.md +268 -0
  95. package/docs/detail-panel.json +530 -0
  96. package/docs/detail-panel.md +361 -0
  97. package/docs/dialog.examples.md +2467 -0
  98. package/docs/dialog.json +1141 -0
  99. package/docs/dialog.md +217 -0
  100. package/docs/dialog.props.md +63 -0
  101. package/docs/divider.json +148 -0
  102. package/docs/divider.md +83 -0
  103. package/docs/drawer.examples.md +1929 -0
  104. package/docs/drawer.json +753 -0
  105. package/docs/drawer.md +199 -0
  106. package/docs/entity-picker.json +946 -0
  107. package/docs/entity-picker.md +365 -0
  108. package/docs/event-calendar.examples.md +308 -0
  109. package/docs/event-calendar.json +1202 -0
  110. package/docs/event-calendar.md +201 -0
  111. package/docs/field-group.json +333 -0
  112. package/docs/field-group.md +181 -0
  113. package/docs/field.examples.md +676 -0
  114. package/docs/field.json +528 -0
  115. package/docs/field.md +127 -0
  116. package/docs/filter-bar.json +817 -0
  117. package/docs/filter-bar.md +380 -0
  118. package/docs/form.json +378 -0
  119. package/docs/form.md +235 -0
  120. package/docs/fullscreen.json +395 -0
  121. package/docs/fullscreen.md +225 -0
  122. package/docs/grid.json +176 -0
  123. package/docs/grid.md +74 -0
  124. package/docs/highlight.json +279 -0
  125. package/docs/highlight.md +210 -0
  126. package/docs/hover-card.json +254 -0
  127. package/docs/hover-card.md +213 -0
  128. package/docs/icon.json +173 -0
  129. package/docs/icon.md +101 -0
  130. package/docs/image.json +476 -0
  131. package/docs/image.md +254 -0
  132. package/docs/import-export-center.json +836 -0
  133. package/docs/import-export-center.md +345 -0
  134. package/docs/index.md +141 -0
  135. package/docs/inline-message.json +312 -0
  136. package/docs/inline-message.md +191 -0
  137. package/docs/inline.json +149 -0
  138. package/docs/inline.md +72 -0
  139. package/docs/kbd.json +350 -0
  140. package/docs/kbd.md +210 -0
  141. package/docs/link.json +264 -0
  142. package/docs/link.md +167 -0
  143. package/docs/list-item.json +463 -0
  144. package/docs/list-item.md +236 -0
  145. package/docs/list.json +321 -0
  146. package/docs/list.md +185 -0
  147. package/docs/listbox.json +807 -0
  148. package/docs/listbox.md +413 -0
  149. package/docs/loading-overlay.json +440 -0
  150. package/docs/loading-overlay.md +248 -0
  151. package/docs/markdown.json +461 -0
  152. package/docs/markdown.md +266 -0
  153. package/docs/menu.examples.md +1651 -0
  154. package/docs/menu.json +922 -0
  155. package/docs/menu.md +155 -0
  156. package/docs/menubar.json +292 -0
  157. package/docs/menubar.md +173 -0
  158. package/docs/message-scroller.json +401 -0
  159. package/docs/message-scroller.md +212 -0
  160. package/docs/message.json +862 -0
  161. package/docs/message.md +473 -0
  162. package/docs/multi-select.examples.md +1922 -0
  163. package/docs/multi-select.json +1314 -0
  164. package/docs/multi-select.md +213 -0
  165. package/docs/navigation-menu.json +529 -0
  166. package/docs/navigation-menu.md +329 -0
  167. package/docs/notification-center.json +664 -0
  168. package/docs/notification-center.md +372 -0
  169. package/docs/number-field.examples.md +1078 -0
  170. package/docs/number-field.json +668 -0
  171. package/docs/number-field.md +137 -0
  172. package/docs/otp-input.json +479 -0
  173. package/docs/otp-input.md +291 -0
  174. package/docs/page-header.json +574 -0
  175. package/docs/page-header.md +338 -0
  176. package/docs/page.json +332 -0
  177. package/docs/page.md +184 -0
  178. package/docs/pagination.json +434 -0
  179. package/docs/pagination.md +238 -0
  180. package/docs/popover.examples.md +1235 -0
  181. package/docs/popover.json +656 -0
  182. package/docs/popover.md +199 -0
  183. package/docs/progress-indicator.json +501 -0
  184. package/docs/progress-indicator.md +329 -0
  185. package/docs/prompt-composer.json +498 -0
  186. package/docs/prompt-composer.md +278 -0
  187. package/docs/prose.json +357 -0
  188. package/docs/prose.md +226 -0
  189. package/docs/radio-group.examples.md +626 -0
  190. package/docs/radio-group.json +541 -0
  191. package/docs/radio-group.md +112 -0
  192. package/docs/rating.json +1053 -0
  193. package/docs/rating.md +435 -0
  194. package/docs/result-state.json +376 -0
  195. package/docs/result-state.md +286 -0
  196. package/docs/saved-views.json +384 -0
  197. package/docs/saved-views.md +242 -0
  198. package/docs/scroll-area.json +120 -0
  199. package/docs/scroll-area.md +8 -0
  200. package/docs/section.json +344 -0
  201. package/docs/section.md +208 -0
  202. package/docs/segmented-control.json +429 -0
  203. package/docs/segmented-control.md +240 -0
  204. package/docs/select.examples.md +1214 -0
  205. package/docs/select.json +1147 -0
  206. package/docs/select.md +199 -0
  207. package/docs/side-navigation.json +632 -0
  208. package/docs/side-navigation.md +430 -0
  209. package/docs/skeleton.json +358 -0
  210. package/docs/skeleton.md +223 -0
  211. package/docs/slider.json +522 -0
  212. package/docs/slider.md +261 -0
  213. package/docs/sparkline.json +426 -0
  214. package/docs/sparkline.md +206 -0
  215. package/docs/split-button.json +361 -0
  216. package/docs/split-button.md +275 -0
  217. package/docs/splitter.json +142 -0
  218. package/docs/splitter.md +14 -0
  219. package/docs/stack.json +135 -0
  220. package/docs/stack.md +74 -0
  221. package/docs/stat-card.json +529 -0
  222. package/docs/stat-card.md +270 -0
  223. package/docs/status-indicator.json +314 -0
  224. package/docs/status-indicator.md +197 -0
  225. package/docs/stepper.json +451 -0
  226. package/docs/stepper.md +250 -0
  227. package/docs/switch.json +451 -0
  228. package/docs/switch.md +508 -0
  229. package/docs/table-of-contents.json +553 -0
  230. package/docs/table-of-contents.md +289 -0
  231. package/docs/table.examples.md +1981 -0
  232. package/docs/table.json +1059 -0
  233. package/docs/table.md +290 -0
  234. package/docs/tabs.examples.md +1370 -0
  235. package/docs/tabs.json +661 -0
  236. package/docs/tabs.md +211 -0
  237. package/docs/tag.json +813 -0
  238. package/docs/tag.md +241 -0
  239. package/docs/tags-input.json +771 -0
  240. package/docs/tags-input.md +361 -0
  241. package/docs/text-field.examples.md +821 -0
  242. package/docs/text-field.json +604 -0
  243. package/docs/text-field.md +125 -0
  244. package/docs/textarea.examples.md +612 -0
  245. package/docs/textarea.json +440 -0
  246. package/docs/textarea.md +98 -0
  247. package/docs/time-field.json +584 -0
  248. package/docs/time-field.md +291 -0
  249. package/docs/time-picker.json +679 -0
  250. package/docs/time-picker.md +315 -0
  251. package/docs/time-range-picker.examples.md +191 -0
  252. package/docs/time-range-picker.json +924 -0
  253. package/docs/time-range-picker.md +152 -0
  254. package/docs/timeline.json +839 -0
  255. package/docs/timeline.md +401 -0
  256. package/docs/toast.json +642 -0
  257. package/docs/toast.md +311 -0
  258. package/docs/toggle-group.json +417 -0
  259. package/docs/toggle-group.md +255 -0
  260. package/docs/toggle.json +326 -0
  261. package/docs/toggle.md +222 -0
  262. package/docs/toolbar.json +380 -0
  263. package/docs/toolbar.md +240 -0
  264. package/docs/tooltip.examples.md +664 -0
  265. package/docs/tooltip.json +604 -0
  266. package/docs/tooltip.md +146 -0
  267. package/docs/top-navigation.examples.md +287 -0
  268. package/docs/top-navigation.json +648 -0
  269. package/docs/top-navigation.md +138 -0
  270. package/docs/tour.json +759 -0
  271. package/docs/tour.md +337 -0
  272. package/docs/transfer.json +746 -0
  273. package/docs/transfer.md +273 -0
  274. package/docs/tree.json +918 -0
  275. package/docs/tree.md +397 -0
  276. package/docs/typography.json +317 -0
  277. package/docs/typography.md +107 -0
  278. package/docs/upload.examples.md +358 -0
  279. package/docs/upload.json +1103 -0
  280. package/docs/upload.md +166 -0
  281. package/docs/visually-hidden.json +71 -0
  282. package/docs/visually-hidden.md +42 -0
  283. package/docs/wizard.json +724 -0
  284. package/docs/wizard.md +295 -0
  285. package/fesm2022/slotted-angular-accordion.mjs +247 -0
  286. package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
  287. package/fesm2022/slotted-angular-action-bar.mjs +639 -0
  288. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
  289. package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
  290. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
  291. package/fesm2022/slotted-angular-alert.mjs +427 -0
  292. package/fesm2022/slotted-angular-alert.mjs.map +1 -0
  293. package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
  294. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
  295. package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
  296. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
  297. package/fesm2022/slotted-angular-attachment.mjs +595 -0
  298. package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
  299. package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
  300. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
  301. package/fesm2022/slotted-angular-avatar.mjs +330 -0
  302. package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
  303. package/fesm2022/slotted-angular-badge.mjs +255 -0
  304. package/fesm2022/slotted-angular-badge.mjs.map +1 -0
  305. package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
  306. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
  307. package/fesm2022/slotted-angular-button-group.mjs +146 -0
  308. package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
  309. package/fesm2022/slotted-angular-button.mjs +692 -0
  310. package/fesm2022/slotted-angular-button.mjs.map +1 -0
  311. package/fesm2022/slotted-angular-calendar.mjs +916 -0
  312. package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
  313. package/fesm2022/slotted-angular-card.mjs +225 -0
  314. package/fesm2022/slotted-angular-card.mjs.map +1 -0
  315. package/fesm2022/slotted-angular-carousel.mjs +840 -0
  316. package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
  317. package/fesm2022/slotted-angular-cascader.mjs +1839 -0
  318. package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
  319. package/fesm2022/slotted-angular-chart.mjs +974 -0
  320. package/fesm2022/slotted-angular-chart.mjs.map +1 -0
  321. package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
  322. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
  323. package/fesm2022/slotted-angular-checkbox.mjs +468 -0
  324. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
  325. package/fesm2022/slotted-angular-code-block.mjs +476 -0
  326. package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
  327. package/fesm2022/slotted-angular-collapsible.mjs +479 -0
  328. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
  329. package/fesm2022/slotted-angular-color-picker.mjs +910 -0
  330. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
  331. package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
  332. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
  333. package/fesm2022/slotted-angular-combobox.mjs +1480 -0
  334. package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
  335. package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
  336. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
  337. package/fesm2022/slotted-angular-container.mjs +105 -0
  338. package/fesm2022/slotted-angular-container.mjs.map +1 -0
  339. package/fesm2022/slotted-angular-context-menu.mjs +221 -0
  340. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
  341. package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
  342. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
  343. package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
  344. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
  345. package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
  346. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
  347. package/fesm2022/slotted-angular-data-list.mjs +1418 -0
  348. package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
  349. package/fesm2022/slotted-angular-date-field.mjs +772 -0
  350. package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
  351. package/fesm2022/slotted-angular-date-picker.mjs +690 -0
  352. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
  353. package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
  354. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
  355. package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
  356. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
  357. package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
  358. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
  359. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
  360. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
  361. package/fesm2022/slotted-angular-description-list.mjs +545 -0
  362. package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
  363. package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
  364. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
  365. package/fesm2022/slotted-angular-dialog.mjs +980 -0
  366. package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
  367. package/fesm2022/slotted-angular-divider.mjs +76 -0
  368. package/fesm2022/slotted-angular-divider.mjs.map +1 -0
  369. package/fesm2022/slotted-angular-drawer.mjs +1397 -0
  370. package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
  371. package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
  372. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
  373. package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
  374. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
  375. package/fesm2022/slotted-angular-field-group.mjs +301 -0
  376. package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
  377. package/fesm2022/slotted-angular-field.mjs +928 -0
  378. package/fesm2022/slotted-angular-field.mjs.map +1 -0
  379. package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
  380. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
  381. package/fesm2022/slotted-angular-form.mjs +592 -0
  382. package/fesm2022/slotted-angular-form.mjs.map +1 -0
  383. package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
  384. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
  385. package/fesm2022/slotted-angular-grid.mjs +58 -0
  386. package/fesm2022/slotted-angular-grid.mjs.map +1 -0
  387. package/fesm2022/slotted-angular-highlight.mjs +123 -0
  388. package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
  389. package/fesm2022/slotted-angular-hover-card.mjs +326 -0
  390. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
  391. package/fesm2022/slotted-angular-i18n.mjs +75 -0
  392. package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
  393. package/fesm2022/slotted-angular-icon.mjs +232 -0
  394. package/fesm2022/slotted-angular-icon.mjs.map +1 -0
  395. package/fesm2022/slotted-angular-image.mjs +442 -0
  396. package/fesm2022/slotted-angular-image.mjs.map +1 -0
  397. package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
  398. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
  399. package/fesm2022/slotted-angular-inline-message.mjs +280 -0
  400. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
  401. package/fesm2022/slotted-angular-inline.mjs +52 -0
  402. package/fesm2022/slotted-angular-inline.mjs.map +1 -0
  403. package/fesm2022/slotted-angular-kbd.mjs +284 -0
  404. package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
  405. package/fesm2022/slotted-angular-link.mjs +182 -0
  406. package/fesm2022/slotted-angular-link.mjs.map +1 -0
  407. package/fesm2022/slotted-angular-list-item.mjs +367 -0
  408. package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
  409. package/fesm2022/slotted-angular-list.mjs +256 -0
  410. package/fesm2022/slotted-angular-list.mjs.map +1 -0
  411. package/fesm2022/slotted-angular-listbox.mjs +1274 -0
  412. package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
  413. package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
  414. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
  415. package/fesm2022/slotted-angular-markdown.mjs +914 -0
  416. package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
  417. package/fesm2022/slotted-angular-menu.mjs +1211 -0
  418. package/fesm2022/slotted-angular-menu.mjs.map +1 -0
  419. package/fesm2022/slotted-angular-menubar.mjs +230 -0
  420. package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
  421. package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
  422. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
  423. package/fesm2022/slotted-angular-message.mjs +866 -0
  424. package/fesm2022/slotted-angular-message.mjs.map +1 -0
  425. package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
  426. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
  427. package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
  428. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
  429. package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
  430. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
  431. package/fesm2022/slotted-angular-number-field.mjs +966 -0
  432. package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
  433. package/fesm2022/slotted-angular-otp-input.mjs +629 -0
  434. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
  435. package/fesm2022/slotted-angular-page-header.mjs +788 -0
  436. package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
  437. package/fesm2022/slotted-angular-page.mjs +255 -0
  438. package/fesm2022/slotted-angular-page.mjs.map +1 -0
  439. package/fesm2022/slotted-angular-pagination.mjs +562 -0
  440. package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
  441. package/fesm2022/slotted-angular-popover.mjs +799 -0
  442. package/fesm2022/slotted-angular-popover.mjs.map +1 -0
  443. package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
  444. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
  445. package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
  446. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
  447. package/fesm2022/slotted-angular-prose.mjs +314 -0
  448. package/fesm2022/slotted-angular-prose.mjs.map +1 -0
  449. package/fesm2022/slotted-angular-radio-group.mjs +469 -0
  450. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
  451. package/fesm2022/slotted-angular-rating.mjs +1174 -0
  452. package/fesm2022/slotted-angular-rating.mjs.map +1 -0
  453. package/fesm2022/slotted-angular-result-state.mjs +330 -0
  454. package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
  455. package/fesm2022/slotted-angular-saved-views.mjs +877 -0
  456. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
  457. package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
  458. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
  459. package/fesm2022/slotted-angular-section.mjs +266 -0
  460. package/fesm2022/slotted-angular-section.mjs.map +1 -0
  461. package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
  462. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
  463. package/fesm2022/slotted-angular-select.mjs +1899 -0
  464. package/fesm2022/slotted-angular-select.mjs.map +1 -0
  465. package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
  466. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
  467. package/fesm2022/slotted-angular-skeleton.mjs +316 -0
  468. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
  469. package/fesm2022/slotted-angular-slider.mjs +586 -0
  470. package/fesm2022/slotted-angular-slider.mjs.map +1 -0
  471. package/fesm2022/slotted-angular-sparkline.mjs +235 -0
  472. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
  473. package/fesm2022/slotted-angular-split-button.mjs +331 -0
  474. package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
  475. package/fesm2022/slotted-angular-splitter.mjs +516 -0
  476. package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
  477. package/fesm2022/slotted-angular-stack.mjs +48 -0
  478. package/fesm2022/slotted-angular-stack.mjs.map +1 -0
  479. package/fesm2022/slotted-angular-stat-card.mjs +478 -0
  480. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
  481. package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
  482. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
  483. package/fesm2022/slotted-angular-stepper.mjs +536 -0
  484. package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
  485. package/fesm2022/slotted-angular-switch.mjs +447 -0
  486. package/fesm2022/slotted-angular-switch.mjs.map +1 -0
  487. package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
  488. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
  489. package/fesm2022/slotted-angular-table.mjs +2518 -0
  490. package/fesm2022/slotted-angular-table.mjs.map +1 -0
  491. package/fesm2022/slotted-angular-tabs.mjs +829 -0
  492. package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
  493. package/fesm2022/slotted-angular-tag.mjs +595 -0
  494. package/fesm2022/slotted-angular-tag.mjs.map +1 -0
  495. package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
  496. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
  497. package/fesm2022/slotted-angular-text-field.mjs +674 -0
  498. package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
  499. package/fesm2022/slotted-angular-textarea.mjs +275 -0
  500. package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
  501. package/fesm2022/slotted-angular-theme.mjs +45 -0
  502. package/fesm2022/slotted-angular-theme.mjs.map +1 -0
  503. package/fesm2022/slotted-angular-time-field.mjs +895 -0
  504. package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
  505. package/fesm2022/slotted-angular-time-picker.mjs +856 -0
  506. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
  507. package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
  508. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
  509. package/fesm2022/slotted-angular-timeline.mjs +928 -0
  510. package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
  511. package/fesm2022/slotted-angular-toast.mjs +917 -0
  512. package/fesm2022/slotted-angular-toast.mjs.map +1 -0
  513. package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
  514. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
  515. package/fesm2022/slotted-angular-toggle.mjs +162 -0
  516. package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
  517. package/fesm2022/slotted-angular-toolbar.mjs +536 -0
  518. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
  519. package/fesm2022/slotted-angular-tooltip.mjs +798 -0
  520. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
  521. package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
  522. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
  523. package/fesm2022/slotted-angular-tour.mjs +1330 -0
  524. package/fesm2022/slotted-angular-tour.mjs.map +1 -0
  525. package/fesm2022/slotted-angular-transfer.mjs +1406 -0
  526. package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
  527. package/fesm2022/slotted-angular-tree.mjs +1448 -0
  528. package/fesm2022/slotted-angular-tree.mjs.map +1 -0
  529. package/fesm2022/slotted-angular-typography.mjs +184 -0
  530. package/fesm2022/slotted-angular-typography.mjs.map +1 -0
  531. package/fesm2022/slotted-angular-upload.mjs +1523 -0
  532. package/fesm2022/slotted-angular-upload.mjs.map +1 -0
  533. package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
  534. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
  535. package/fesm2022/slotted-angular-wizard.mjs +1715 -0
  536. package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
  537. package/fesm2022/slotted-angular.mjs +4 -0
  538. package/fesm2022/slotted-angular.mjs.map +1 -0
  539. package/package.json +537 -3
  540. package/types/slotted-angular-accordion.d.ts +156 -0
  541. package/types/slotted-angular-accordion.d.ts.map +1 -0
  542. package/types/slotted-angular-action-bar.d.ts +291 -0
  543. package/types/slotted-angular-action-bar.d.ts.map +1 -0
  544. package/types/slotted-angular-action-sheet.d.ts +294 -0
  545. package/types/slotted-angular-action-sheet.d.ts.map +1 -0
  546. package/types/slotted-angular-alert.d.ts +214 -0
  547. package/types/slotted-angular-alert.d.ts.map +1 -0
  548. package/types/slotted-angular-app-shell.d.ts +549 -0
  549. package/types/slotted-angular-app-shell.d.ts.map +1 -0
  550. package/types/slotted-angular-aspect-ratio.d.ts +57 -0
  551. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
  552. package/types/slotted-angular-attachment.d.ts +294 -0
  553. package/types/slotted-angular-attachment.d.ts.map +1 -0
  554. package/types/slotted-angular-avatar-group.d.ts +119 -0
  555. package/types/slotted-angular-avatar-group.d.ts.map +1 -0
  556. package/types/slotted-angular-avatar.d.ts +202 -0
  557. package/types/slotted-angular-avatar.d.ts.map +1 -0
  558. package/types/slotted-angular-badge.d.ts +166 -0
  559. package/types/slotted-angular-badge.d.ts.map +1 -0
  560. package/types/slotted-angular-breadcrumb.d.ts +251 -0
  561. package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
  562. package/types/slotted-angular-button-group.d.ts +89 -0
  563. package/types/slotted-angular-button-group.d.ts.map +1 -0
  564. package/types/slotted-angular-button.d.ts +390 -0
  565. package/types/slotted-angular-button.d.ts.map +1 -0
  566. package/types/slotted-angular-calendar.d.ts +280 -0
  567. package/types/slotted-angular-calendar.d.ts.map +1 -0
  568. package/types/slotted-angular-card.d.ts +140 -0
  569. package/types/slotted-angular-card.d.ts.map +1 -0
  570. package/types/slotted-angular-carousel.d.ts +288 -0
  571. package/types/slotted-angular-carousel.d.ts.map +1 -0
  572. package/types/slotted-angular-cascader.d.ts +351 -0
  573. package/types/slotted-angular-cascader.d.ts.map +1 -0
  574. package/types/slotted-angular-chart.d.ts +319 -0
  575. package/types/slotted-angular-chart.d.ts.map +1 -0
  576. package/types/slotted-angular-checkbox-group.d.ts +156 -0
  577. package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
  578. package/types/slotted-angular-checkbox.d.ts +197 -0
  579. package/types/slotted-angular-checkbox.d.ts.map +1 -0
  580. package/types/slotted-angular-code-block.d.ts +158 -0
  581. package/types/slotted-angular-code-block.d.ts.map +1 -0
  582. package/types/slotted-angular-collapsible.d.ts +272 -0
  583. package/types/slotted-angular-collapsible.d.ts.map +1 -0
  584. package/types/slotted-angular-color-picker.d.ts +181 -0
  585. package/types/slotted-angular-color-picker.d.ts.map +1 -0
  586. package/types/slotted-angular-column-manager.d.ts +200 -0
  587. package/types/slotted-angular-column-manager.d.ts.map +1 -0
  588. package/types/slotted-angular-combobox.d.ts +449 -0
  589. package/types/slotted-angular-combobox.d.ts.map +1 -0
  590. package/types/slotted-angular-command-palette.d.ts +256 -0
  591. package/types/slotted-angular-command-palette.d.ts.map +1 -0
  592. package/types/slotted-angular-container.d.ts +84 -0
  593. package/types/slotted-angular-container.d.ts.map +1 -0
  594. package/types/slotted-angular-context-menu.d.ts +84 -0
  595. package/types/slotted-angular-context-menu.d.ts.map +1 -0
  596. package/types/slotted-angular-currency-field.d.ts +480 -0
  597. package/types/slotted-angular-currency-field.d.ts.map +1 -0
  598. package/types/slotted-angular-dashboard-grid.d.ts +341 -0
  599. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
  600. package/types/slotted-angular-data-grid.d.ts +1077 -0
  601. package/types/slotted-angular-data-grid.d.ts.map +1 -0
  602. package/types/slotted-angular-data-list.d.ts +272 -0
  603. package/types/slotted-angular-data-list.d.ts.map +1 -0
  604. package/types/slotted-angular-date-field.d.ts +320 -0
  605. package/types/slotted-angular-date-field.d.ts.map +1 -0
  606. package/types/slotted-angular-date-picker.d.ts +224 -0
  607. package/types/slotted-angular-date-picker.d.ts.map +1 -0
  608. package/types/slotted-angular-date-range-picker.d.ts +310 -0
  609. package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
  610. package/types/slotted-angular-datetime-field.d.ts +362 -0
  611. package/types/slotted-angular-datetime-field.d.ts.map +1 -0
  612. package/types/slotted-angular-datetime-picker.d.ts +370 -0
  613. package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
  614. package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
  615. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
  616. package/types/slotted-angular-description-list.d.ts +281 -0
  617. package/types/slotted-angular-description-list.d.ts.map +1 -0
  618. package/types/slotted-angular-detail-panel.d.ts +240 -0
  619. package/types/slotted-angular-detail-panel.d.ts.map +1 -0
  620. package/types/slotted-angular-dialog.d.ts +497 -0
  621. package/types/slotted-angular-dialog.d.ts.map +1 -0
  622. package/types/slotted-angular-divider.d.ts +40 -0
  623. package/types/slotted-angular-divider.d.ts.map +1 -0
  624. package/types/slotted-angular-drawer.d.ts +532 -0
  625. package/types/slotted-angular-drawer.d.ts.map +1 -0
  626. package/types/slotted-angular-entity-picker.d.ts +338 -0
  627. package/types/slotted-angular-entity-picker.d.ts.map +1 -0
  628. package/types/slotted-angular-event-calendar.d.ts +574 -0
  629. package/types/slotted-angular-event-calendar.d.ts.map +1 -0
  630. package/types/slotted-angular-field-group.d.ts +152 -0
  631. package/types/slotted-angular-field-group.d.ts.map +1 -0
  632. package/types/slotted-angular-field.d.ts +535 -0
  633. package/types/slotted-angular-field.d.ts.map +1 -0
  634. package/types/slotted-angular-filter-bar.d.ts +573 -0
  635. package/types/slotted-angular-filter-bar.d.ts.map +1 -0
  636. package/types/slotted-angular-form.d.ts +298 -0
  637. package/types/slotted-angular-form.d.ts.map +1 -0
  638. package/types/slotted-angular-fullscreen.d.ts +145 -0
  639. package/types/slotted-angular-fullscreen.d.ts.map +1 -0
  640. package/types/slotted-angular-grid.d.ts +50 -0
  641. package/types/slotted-angular-grid.d.ts.map +1 -0
  642. package/types/slotted-angular-highlight.d.ts +93 -0
  643. package/types/slotted-angular-highlight.d.ts.map +1 -0
  644. package/types/slotted-angular-hover-card.d.ts +140 -0
  645. package/types/slotted-angular-hover-card.d.ts.map +1 -0
  646. package/types/slotted-angular-i18n.d.ts +46 -0
  647. package/types/slotted-angular-i18n.d.ts.map +1 -0
  648. package/types/slotted-angular-icon.d.ts +94 -0
  649. package/types/slotted-angular-icon.d.ts.map +1 -0
  650. package/types/slotted-angular-image.d.ts +251 -0
  651. package/types/slotted-angular-image.d.ts.map +1 -0
  652. package/types/slotted-angular-import-export-center.d.ts +351 -0
  653. package/types/slotted-angular-import-export-center.d.ts.map +1 -0
  654. package/types/slotted-angular-inline-message.d.ts +195 -0
  655. package/types/slotted-angular-inline-message.d.ts.map +1 -0
  656. package/types/slotted-angular-inline.d.ts +41 -0
  657. package/types/slotted-angular-inline.d.ts.map +1 -0
  658. package/types/slotted-angular-kbd.d.ts +174 -0
  659. package/types/slotted-angular-kbd.d.ts.map +1 -0
  660. package/types/slotted-angular-link.d.ts +94 -0
  661. package/types/slotted-angular-link.d.ts.map +1 -0
  662. package/types/slotted-angular-list-item.d.ts +210 -0
  663. package/types/slotted-angular-list-item.d.ts.map +1 -0
  664. package/types/slotted-angular-list.d.ts +176 -0
  665. package/types/slotted-angular-list.d.ts.map +1 -0
  666. package/types/slotted-angular-listbox.d.ts +470 -0
  667. package/types/slotted-angular-listbox.d.ts.map +1 -0
  668. package/types/slotted-angular-loading-overlay.d.ts +219 -0
  669. package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
  670. package/types/slotted-angular-markdown.d.ts +172 -0
  671. package/types/slotted-angular-markdown.d.ts.map +1 -0
  672. package/types/slotted-angular-menu.d.ts +448 -0
  673. package/types/slotted-angular-menu.d.ts.map +1 -0
  674. package/types/slotted-angular-menubar.d.ts +90 -0
  675. package/types/slotted-angular-menubar.d.ts.map +1 -0
  676. package/types/slotted-angular-message-scroller.d.ts +151 -0
  677. package/types/slotted-angular-message-scroller.d.ts.map +1 -0
  678. package/types/slotted-angular-message.d.ts +348 -0
  679. package/types/slotted-angular-message.d.ts.map +1 -0
  680. package/types/slotted-angular-multi-select.d.ts +462 -0
  681. package/types/slotted-angular-multi-select.d.ts.map +1 -0
  682. package/types/slotted-angular-navigation-menu.d.ts +309 -0
  683. package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
  684. package/types/slotted-angular-notification-center.d.ts +318 -0
  685. package/types/slotted-angular-notification-center.d.ts.map +1 -0
  686. package/types/slotted-angular-number-field.d.ts +402 -0
  687. package/types/slotted-angular-number-field.d.ts.map +1 -0
  688. package/types/slotted-angular-otp-input.d.ts +286 -0
  689. package/types/slotted-angular-otp-input.d.ts.map +1 -0
  690. package/types/slotted-angular-page-header.d.ts +334 -0
  691. package/types/slotted-angular-page-header.d.ts.map +1 -0
  692. package/types/slotted-angular-page.d.ts +141 -0
  693. package/types/slotted-angular-page.d.ts.map +1 -0
  694. package/types/slotted-angular-pagination.d.ts +213 -0
  695. package/types/slotted-angular-pagination.d.ts.map +1 -0
  696. package/types/slotted-angular-popover.d.ts +366 -0
  697. package/types/slotted-angular-popover.d.ts.map +1 -0
  698. package/types/slotted-angular-progress-indicator.d.ts +312 -0
  699. package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
  700. package/types/slotted-angular-prompt-composer.d.ts +242 -0
  701. package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
  702. package/types/slotted-angular-prose.d.ts +171 -0
  703. package/types/slotted-angular-prose.d.ts.map +1 -0
  704. package/types/slotted-angular-radio-group.d.ts +268 -0
  705. package/types/slotted-angular-radio-group.d.ts.map +1 -0
  706. package/types/slotted-angular-rating.d.ts +374 -0
  707. package/types/slotted-angular-rating.d.ts.map +1 -0
  708. package/types/slotted-angular-result-state.d.ts +217 -0
  709. package/types/slotted-angular-result-state.d.ts.map +1 -0
  710. package/types/slotted-angular-saved-views.d.ts +198 -0
  711. package/types/slotted-angular-saved-views.d.ts.map +1 -0
  712. package/types/slotted-angular-scroll-area.d.ts +186 -0
  713. package/types/slotted-angular-scroll-area.d.ts.map +1 -0
  714. package/types/slotted-angular-section.d.ts +143 -0
  715. package/types/slotted-angular-section.d.ts.map +1 -0
  716. package/types/slotted-angular-segmented-control.d.ts +251 -0
  717. package/types/slotted-angular-segmented-control.d.ts.map +1 -0
  718. package/types/slotted-angular-select.d.ts +507 -0
  719. package/types/slotted-angular-select.d.ts.map +1 -0
  720. package/types/slotted-angular-side-navigation.d.ts +373 -0
  721. package/types/slotted-angular-side-navigation.d.ts.map +1 -0
  722. package/types/slotted-angular-skeleton.d.ts +198 -0
  723. package/types/slotted-angular-skeleton.d.ts.map +1 -0
  724. package/types/slotted-angular-slider.d.ts +216 -0
  725. package/types/slotted-angular-slider.d.ts.map +1 -0
  726. package/types/slotted-angular-sparkline.d.ts +106 -0
  727. package/types/slotted-angular-sparkline.d.ts.map +1 -0
  728. package/types/slotted-angular-split-button.d.ts +180 -0
  729. package/types/slotted-angular-split-button.d.ts.map +1 -0
  730. package/types/slotted-angular-splitter.d.ts +206 -0
  731. package/types/slotted-angular-splitter.d.ts.map +1 -0
  732. package/types/slotted-angular-stack.d.ts +38 -0
  733. package/types/slotted-angular-stack.d.ts.map +1 -0
  734. package/types/slotted-angular-stat-card.d.ts +232 -0
  735. package/types/slotted-angular-stat-card.d.ts.map +1 -0
  736. package/types/slotted-angular-status-indicator.d.ts +106 -0
  737. package/types/slotted-angular-status-indicator.d.ts.map +1 -0
  738. package/types/slotted-angular-stepper.d.ts +198 -0
  739. package/types/slotted-angular-stepper.d.ts.map +1 -0
  740. package/types/slotted-angular-switch.d.ts +243 -0
  741. package/types/slotted-angular-switch.d.ts.map +1 -0
  742. package/types/slotted-angular-table-of-contents.d.ts +210 -0
  743. package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
  744. package/types/slotted-angular-table.d.ts +888 -0
  745. package/types/slotted-angular-table.d.ts.map +1 -0
  746. package/types/slotted-angular-tabs.d.ts +340 -0
  747. package/types/slotted-angular-tabs.d.ts.map +1 -0
  748. package/types/slotted-angular-tag.d.ts +279 -0
  749. package/types/slotted-angular-tag.d.ts.map +1 -0
  750. package/types/slotted-angular-tags-input.d.ts +302 -0
  751. package/types/slotted-angular-tags-input.d.ts.map +1 -0
  752. package/types/slotted-angular-text-field.d.ts +334 -0
  753. package/types/slotted-angular-text-field.d.ts.map +1 -0
  754. package/types/slotted-angular-textarea.d.ts +150 -0
  755. package/types/slotted-angular-textarea.d.ts.map +1 -0
  756. package/types/slotted-angular-theme.d.ts +26 -0
  757. package/types/slotted-angular-theme.d.ts.map +1 -0
  758. package/types/slotted-angular-time-field.d.ts +300 -0
  759. package/types/slotted-angular-time-field.d.ts.map +1 -0
  760. package/types/slotted-angular-time-picker.d.ts +260 -0
  761. package/types/slotted-angular-time-picker.d.ts.map +1 -0
  762. package/types/slotted-angular-time-range-picker.d.ts +401 -0
  763. package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
  764. package/types/slotted-angular-timeline.d.ts +329 -0
  765. package/types/slotted-angular-timeline.d.ts.map +1 -0
  766. package/types/slotted-angular-toast.d.ts +340 -0
  767. package/types/slotted-angular-toast.d.ts.map +1 -0
  768. package/types/slotted-angular-toggle-group.d.ts +167 -0
  769. package/types/slotted-angular-toggle-group.d.ts.map +1 -0
  770. package/types/slotted-angular-toggle.d.ts +106 -0
  771. package/types/slotted-angular-toggle.d.ts.map +1 -0
  772. package/types/slotted-angular-toolbar.d.ts +252 -0
  773. package/types/slotted-angular-toolbar.d.ts.map +1 -0
  774. package/types/slotted-angular-tooltip.d.ts +388 -0
  775. package/types/slotted-angular-tooltip.d.ts.map +1 -0
  776. package/types/slotted-angular-top-navigation.d.ts +442 -0
  777. package/types/slotted-angular-top-navigation.d.ts.map +1 -0
  778. package/types/slotted-angular-tour.d.ts +440 -0
  779. package/types/slotted-angular-tour.d.ts.map +1 -0
  780. package/types/slotted-angular-transfer.d.ts +296 -0
  781. package/types/slotted-angular-transfer.d.ts.map +1 -0
  782. package/types/slotted-angular-tree.d.ts +499 -0
  783. package/types/slotted-angular-tree.d.ts.map +1 -0
  784. package/types/slotted-angular-typography.d.ts +89 -0
  785. package/types/slotted-angular-typography.d.ts.map +1 -0
  786. package/types/slotted-angular-upload.d.ts +365 -0
  787. package/types/slotted-angular-upload.d.ts.map +1 -0
  788. package/types/slotted-angular-visually-hidden.d.ts +19 -0
  789. package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
  790. package/types/slotted-angular-wizard.d.ts +441 -0
  791. package/types/slotted-angular-wizard.d.ts.map +1 -0
  792. package/types/slotted-angular.d.ts +3 -0
  793. package/types/slotted-angular.d.ts.map +1 -0
@@ -0,0 +1,928 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, HostAttributeToken, computed, input, booleanAttribute, Directive, ElementRef, signal, DestroyRef, afterNextRender, contentChild, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component, effect } from '@angular/core';
3
+ import { injectMessages } from '@slotted/angular/i18n';
4
+ import { SlInlineMessage } from '@slotted/angular/inline-message';
5
+ import { fieldMessages } from '@slotted/core/i18n';
6
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
7
+ import * as i1 from '@slotted/angular/tooltip';
8
+ import { SlTooltip, SlTooltipArrow, SlTooltipContent, SlTooltipLayer, provideTooltipDefaults, SlTooltipTrigger } from '@slotted/angular/tooltip';
9
+
10
+ const FIELD_DESCRIBED_ORDER = [
11
+ 'indicator',
12
+ 'help',
13
+ 'description',
14
+ 'counter',
15
+ 'error',
16
+ ];
17
+ const FALLBACK = {
18
+ disabled: undefined,
19
+ labelPlacement: 'top',
20
+ necessity: 'mark',
21
+ readOnly: undefined,
22
+ size: 'md',
23
+ };
24
+ const FIELD_DEFAULTS = new InjectionToken('slotted field defaults', {
25
+ providedIn: 'root',
26
+ factory: () => FALLBACK,
27
+ });
28
+ /**
29
+ * An application decides once what its fields look like, rather than repeating
30
+ * the same inputs on every field in a form. Their words come from the language
31
+ * in force (`provideSlotted`).
32
+ * `SlFieldGroup` provides an overriding value for its own subtree, so a compact
33
+ * section — or a disabled one — is one attribute rather than one per field.
34
+ *
35
+ * Among the surveyed implementations only Angular Material ships
36
+ * application-wide defaults, and this is that idea taken to both bindings.
37
+ *
38
+ * `disabled` and `readOnly` are here and `invalid` and `required` are not. The
39
+ * first two describe a context a whole section can be in; the second two are
40
+ * facts about one value, and a token that set them would mark every field in an
41
+ * application as required for a reason no field could name.
42
+ */
43
+ function provideFieldDefaults(defaults) {
44
+ return {
45
+ provide: FIELD_DEFAULTS,
46
+ useFactory: () => ({
47
+ disabled: defaults.disabled ?? FALLBACK.disabled,
48
+ labelPlacement: defaults.labelPlacement ?? FALLBACK.labelPlacement,
49
+ necessity: defaults.necessity ?? FALLBACK.necessity,
50
+ readOnly: defaults.readOnly ?? FALLBACK.readOnly,
51
+ size: defaults.size ?? FALLBACK.size,
52
+ }),
53
+ };
54
+ }
55
+ /** What a field renders as here, before it states anything of its own. */
56
+ function injectFieldDefaults() {
57
+ return inject(FIELD_DEFAULTS);
58
+ }
59
+ /**
60
+ * A component in the tree answering for the fields under it, which is what
61
+ * `field-group` is. It exists as a class of its own so `@slotted/angular/field`
62
+ * never has to know that `field-group` exists — the dependency runs one way,
63
+ * from the group to the field.
64
+ *
65
+ * It is read rather than snapshotted, because Angular creates every directive
66
+ * in a template before it binds any input: a group that handed its fields a
67
+ * value in its constructor would hand them the value its inputs had before the
68
+ * consumer's bindings ran, which is the default for all six.
69
+ */
70
+ class SlFieldDefaultsSource {
71
+ }
72
+ /** The identifiers a field derives from its base, in one place. */
73
+ function deriveFieldIds(base) {
74
+ return {
75
+ control: `${base}-control`,
76
+ counter: `${base}-counter`,
77
+ description: `${base}-description`,
78
+ error: `${base}-error`,
79
+ help: `${base}-help`,
80
+ indicator: `${base}-indicator`,
81
+ label: `${base}-label`,
82
+ };
83
+ }
84
+ /**
85
+ * What the necessity mark says, and whether a reader hears it. The asterisk is
86
+ * hidden, because `aria-required` on the control already carries the fact and a
87
+ * form of twenty required fields does not need "asterisk" twenty times; the
88
+ * words are not, because `(optional)` is information rather than decoration.
89
+ * `null` when nothing is drawn. `slFieldGroupLegend` draws its mark with the
90
+ * same answer.
91
+ */
92
+ function necessityMark(necessity, required, t) {
93
+ switch (necessity) {
94
+ case 'mark':
95
+ return required ? { hidden: true, text: '*' } : null;
96
+ case 'optional':
97
+ return required ? null : { hidden: false, text: t('optional') };
98
+ case 'words':
99
+ return { hidden: false, text: t(required ? 'required' : 'optional') };
100
+ case 'none':
101
+ return null;
102
+ }
103
+ }
104
+ /**
105
+ * The field as the parts that live in a module `field.ts` imports see it — the
106
+ * counter today. Provided by `SlField` as itself, so the counter reaches the
107
+ * field's identifiers without importing it, which would be a cycle.
108
+ */
109
+ class SlFieldContext {
110
+ }
111
+ /**
112
+ * The parts the field looks for without importing them. Each part provides
113
+ * its marker as itself, and the field queries the marker; importing the part
114
+ * classes into `field.ts` would be a cycle, since every one of them injects
115
+ * `SlField`.
116
+ */
117
+ class SlFieldHeaderSlot {
118
+ }
119
+ class SlFieldHelpSlot {
120
+ }
121
+ class SlFieldIndicatorSlot {
122
+ }
123
+ /**
124
+ * Application-scoped rather than module-scoped, for the reason `inline-message`
125
+ * records: a module-level counter produces colliding sequences when two
126
+ * applications render in one server process, and the server and the client
127
+ * sequences must match for hydration.
128
+ */
129
+ class SlFieldIdFactory {
130
+ count = 0;
131
+ next() {
132
+ this.count += 1;
133
+ return `slotted-field-${this.count}`;
134
+ }
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldIdFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
136
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldIdFactory, providedIn: 'root' });
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldIdFactory, decorators: [{
139
+ type: Injectable,
140
+ args: [{ providedIn: 'root' }]
141
+ }] });
142
+
143
+ /**
144
+ * How a count reads: `12/280` when there is a limit and `12` when there is
145
+ * none. Carbon and Polaris both write the pair; Angular Material writes it in
146
+ * the subscript, where a count that appears on the first keystroke shares a row
147
+ * with the error and pushes it.
148
+ */
149
+ function formatFieldCount(count) {
150
+ return count.max === undefined ? String(count.length) : `${count.length}/${count.max}`;
151
+ }
152
+ /** Whether a count has passed the limit it was given. */
153
+ function isFieldCountOver(count) {
154
+ return count.max !== undefined && count.length > count.max;
155
+ }
156
+ /**
157
+ * A count the page writes itself, at the end of the label row — which is where
158
+ * Carbon puts it. Angular Material puts it in the subscript beside the error,
159
+ * where a count that appears on the first keystroke shares a row with the
160
+ * message and pushes it.
161
+ *
162
+ * A field whose control publishes a count gets a counter drawn by the field, so
163
+ * this directive is for the page that counts something the control cannot:
164
+ * words, bytes, line items. Writing one withdraws the field's own, because two
165
+ * counters in one row is one row too many.
166
+ *
167
+ * It lives in a module of its own so `field.ts` can look for it without
168
+ * importing the parts that inject `SlField`, which would be a cycle; it reaches
169
+ * the field through `SlFieldContext` for the same reason.
170
+ */
171
+ class SlFieldCounter {
172
+ field = inject(SlFieldContext, { optional: true });
173
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
174
+ /**
175
+ * The identifier the field's description reads the count by, which
176
+ * `docs/component-features.md` §2.8 requires of a counter. A consumer's own
177
+ * `id` wins.
178
+ */
179
+ counterId = computed(() => this.writtenId ?? this.field?.ids().counter ?? null, /* @ts-ignore */
180
+ ...(ngDevMode ? [{ debugName: "counterId" }] : /* istanbul ignore next */ []));
181
+ /**
182
+ * The count has passed its limit. It is the counter's own state rather than
183
+ * the field's: a count can pass its maximum while validation has not run, and
184
+ * a counter that only turned at submit would say nothing at the moment it is
185
+ * being read.
186
+ */
187
+ invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldCounter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
189
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlFieldCounter, isStandalone: true, selector: "[slFieldCounter]", inputs: { invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "counter" }, properties: { "attr.id": "counterId()", "attr.data-invalid": "invalid() ? '' : null" } }, exportAs: ["slFieldCounter"], ngImport: i0 });
190
+ }
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldCounter, decorators: [{
192
+ type: Directive,
193
+ args: [{
194
+ selector: '[slFieldCounter]',
195
+ standalone: true,
196
+ exportAs: 'slFieldCounter',
197
+ host: {
198
+ 'data-part': 'counter',
199
+ '[attr.id]': 'counterId()',
200
+ '[attr.data-invalid]': "invalid() ? '' : null",
201
+ },
202
+ }]
203
+ }], propDecorators: { invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
204
+
205
+ /**
206
+ * What the page wants said, and how — carried by the element the page writes
207
+ * and read by the field, which renders the `inline-message` around it.
208
+ *
209
+ * The field renders the message rather than the page, because `SlInlineMessage`
210
+ * takes its values as `input()` signals and nothing outside the template that
211
+ * instantiates it can write one. A directive sharing the element could only set
212
+ * attributes the component's own host bindings would then overwrite, and the
213
+ * identifier the field derives is exactly such a value.
214
+ */
215
+ class SlFieldMessage {
216
+ /** Replaces the message's own tone. `inline-message` owns the five. */
217
+ tone = input(undefined, /* @ts-ignore */
218
+ ...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
219
+ /** Whether the message announces itself when it arrives. */
220
+ live = input(undefined, /* @ts-ignore */
221
+ ...(ngDevMode ? [{ debugName: "live" }] : /* istanbul ignore next */ []));
222
+ /**
223
+ * Which mark the message draws. A field's messages default to `none`, and
224
+ * `glyph` asks for the tone's own silhouette, `dot` for one neutral bullet.
225
+ */
226
+ mark = input(undefined, /* @ts-ignore */
227
+ ...(ngDevMode ? [{ debugName: "mark" }] : /* istanbul ignore next */ []));
228
+ /** The word read before the message; the empty string removes it. */
229
+ prefix = input(undefined, /* @ts-ignore */
230
+ ...(ngDevMode ? [{ debugName: "prefix" }] : /* istanbul ignore next */ []));
231
+ /** Draws no mark, for a message that carries its own artwork. */
232
+ hideIcon = input(false, { ...(ngDevMode ? { debugName: "hideIcon" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
233
+ /** Holds one line box open so nothing below moves when the message arrives. */
234
+ reserve = input(false, { ...(ngDevMode ? { debugName: "reserve" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
235
+ host = inject(ElementRef).nativeElement;
236
+ content = signal(false, /* @ts-ignore */
237
+ ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
238
+ /**
239
+ * Whether the message has text to say. An empty one — a `reserve` line
240
+ * waiting for its text — keeps its box and describes nothing, which is what
241
+ * React's messages register.
242
+ *
243
+ * It is read after the template that declares the message writes its text
244
+ * and before the host bindings of that template run, so the first render,
245
+ * the only one a server performs, names exactly the messages that have text.
246
+ * In the browser an observer also reports text that arrives from anywhere
247
+ * else.
248
+ */
249
+ hasContent = this.content.asReadonly();
250
+ constructor() {
251
+ const destroyRef = inject(DestroyRef);
252
+ afterNextRender(() => {
253
+ const observer = new MutationObserver(() => this.read());
254
+ observer.observe(this.host, { characterData: true, childList: true, subtree: true });
255
+ destroyRef.onDestroy(() => observer.disconnect());
256
+ });
257
+ }
258
+ ngAfterContentChecked() {
259
+ this.read();
260
+ }
261
+ read() {
262
+ this.content.set((this.host.textContent ?? '').trim() !== '');
263
+ }
264
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldMessage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
265
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlFieldMessage, isStandalone: true, inputs: { tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, live: { classPropertyName: "live", publicName: "live", isSignal: true, isRequired: false, transformFunction: null }, mark: { classPropertyName: "mark", publicName: "mark", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, hideIcon: { classPropertyName: "hideIcon", publicName: "hideIcon", isSignal: true, isRequired: false, transformFunction: null }, reserve: { classPropertyName: "reserve", publicName: "reserve", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
266
+ }
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldMessage, decorators: [{
268
+ type: Directive
269
+ }], ctorParameters: () => [], propDecorators: { tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], live: [{ type: i0.Input, args: [{ isSignal: true, alias: "live", required: false }] }], mark: [{ type: i0.Input, args: [{ isSignal: true, alias: "mark", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], hideIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIcon", required: false }] }], reserve: [{ type: i0.Input, args: [{ isSignal: true, alias: "reserve", required: false }] }] } });
270
+ /**
271
+ * Help about the field, projected into the `inline-message` the field renders.
272
+ *
273
+ * It arrives with a tone, a mark, a clipped severity word an application
274
+ * translates once and a reserved line — none of which the field reimplements.
275
+ * `docs/process/build-order.md` states that as the reason `inline-message` was built
276
+ * in wave 2.
277
+ */
278
+ class SlFieldDescription extends SlFieldMessage {
279
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldDescription, deps: null, target: i0.ɵɵFactoryTarget.Directive });
280
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlFieldDescription, isStandalone: true, selector: "[slFieldDescription]", exportAs: ["slFieldDescription"], usesInheritance: true, ngImport: i0 });
281
+ }
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldDescription, decorators: [{
283
+ type: Directive,
284
+ args: [{
285
+ selector: '[slFieldDescription]',
286
+ standalone: true,
287
+ exportAs: 'slFieldDescription',
288
+ }]
289
+ }] });
290
+ /**
291
+ * What is wrong with the value, in words — which is what WCAG 2.2 SC 3.3.1
292
+ * requires and what colour and a mark alone do not satisfy.
293
+ *
294
+ * `tone` accepts the other four, so a warning that does not block submission is
295
+ * the same part in another tone rather than a member of its own. Fluent spends
296
+ * a `validationState` axis on that distinction and Carbon a second component.
297
+ */
298
+ class SlFieldError extends SlFieldMessage {
299
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldError, deps: null, target: i0.ɵɵFactoryTarget.Directive });
300
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlFieldError, isStandalone: true, selector: "[slFieldError]", exportAs: ["slFieldError"], usesInheritance: true, ngImport: i0 });
301
+ }
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldError, decorators: [{
303
+ type: Directive,
304
+ args: [{
305
+ selector: '[slFieldError]',
306
+ standalone: true,
307
+ exportAs: 'slFieldError',
308
+ }]
309
+ }] });
310
+
311
+ /**
312
+ * One control, its name, its necessity, its help and its error — and the
313
+ * identifiers that bind the four together.
314
+ *
315
+ * **Every shared state is unset rather than `false`.** `disabled`, `invalid`,
316
+ * `required` and `readOnly` default to `undefined`, so a field defers to the
317
+ * `slFieldGroup` around it and the group to the application. A field that
318
+ * defaulted to `false` could not be told from a consumer saying "not disabled",
319
+ * and it would quietly override a disabled section.
320
+ *
321
+ * **The identifiers are derived, not registered.** One base yields four, so
322
+ * `label[for]` resolves to the identifier the control will use with no ordering
323
+ * dependency between siblings and nothing to coordinate during hydration.
324
+ *
325
+ * **The field renders its own messages.** The page writes what it wants said —
326
+ * `<span slFieldError>` — and the field puts it inside an `inline-message` it
327
+ * renders itself, with the identifier, the step and the disabled state already
328
+ * resolved. `SlInlineMessage` takes its values as `input()` signals, and nothing
329
+ * outside the template that instantiates it can write one; a directive sharing
330
+ * the element could only set attributes its host bindings would overwrite. A
331
+ * message the page did not write is not drawn, which is the DOM React's
332
+ * `FieldDescription` and `FieldError` produce.
333
+ */
334
+ class SlField {
335
+ /** Defaults to the token, then to `md`. */
336
+ size = input(undefined, /* @ts-ignore */
337
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
338
+ /** Defaults to the token, then to `top`. */
339
+ labelPlacement = input(undefined, /* @ts-ignore */
340
+ ...(ngDevMode ? [{ debugName: "labelPlacement" }] : /* istanbul ignore next */ []));
341
+ /** Defaults to the token, then to `mark`. */
342
+ necessity = input(undefined, /* @ts-ignore */
343
+ ...(ngDevMode ? [{ debugName: "necessity" }] : /* istanbul ignore next */ []));
344
+ /**
345
+ * Words laid over the catalog of the language in force, key by key: the
346
+ * necessity words (`optional`, `required`) and the help control's name (`help`).
347
+ */
348
+ messages = input(undefined, /* @ts-ignore */
349
+ ...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
350
+ /**
351
+ * Unstated rather than `false`, so the field defers to its group and the group
352
+ * to the application. Stated, it wins, and it reaches the control as the
353
+ * native attribute: removing it from the tab order and from submission is what
354
+ * the word means.
355
+ */
356
+ disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
357
+ /** Unstated rather than `false`. Reaches the control as `aria-invalid`. */
358
+ invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
359
+ /**
360
+ * Unstated rather than `false`. Reaches the control as `aria-required` and
361
+ * never as the native `required`, which would engage browser constraint
362
+ * validation and change submit behaviour.
363
+ */
364
+ required = input(undefined, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
365
+ /** Unstated rather than `false`. Reaches the control as the native `readonly`. */
366
+ readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
367
+ /**
368
+ * What the control inside published about its value. A control this library
369
+ * ships calls `setCount`; the field draws the counter in the spare column of
370
+ * its label row — the header draws it at its own end when there is one — and
371
+ * only when the page wrote none of its own.
372
+ */
373
+ countState = signal(undefined, /* @ts-ignore */
374
+ ...(ngDevMode ? [{ debugName: "countState" }] : /* istanbul ignore next */ []));
375
+ /** The counter the page wrote, anywhere in the field. */
376
+ writtenCounter = contentChild(SlFieldCounter, { ...(ngDevMode ? { debugName: "writtenCounter" } : /* istanbul ignore next */ {}), descendants: true });
377
+ header = contentChild(SlFieldHeaderSlot, /* @ts-ignore */
378
+ ...(ngDevMode ? [{ debugName: "header" }] : /* istanbul ignore next */ []));
379
+ help = contentChild(SlFieldHelpSlot, { ...(ngDevMode ? { debugName: "help" } : /* istanbul ignore next */ {}), descendants: true });
380
+ indicator = contentChild(SlFieldIndicatorSlot, { ...(ngDevMode ? { debugName: "indicator" } : /* istanbul ignore next */ {}), descendants: true });
381
+ drawnCount = computed(() => this.writtenCounter() === undefined && this.header() === undefined
382
+ ? this.countState()
383
+ : undefined, /* @ts-ignore */
384
+ ...(ngDevMode ? [{ debugName: "drawnCount" }] : /* istanbul ignore next */ []));
385
+ countOver = computed(() => {
386
+ const count = this.drawnCount();
387
+ return count !== undefined && isFieldCountOver(count);
388
+ }, /* @ts-ignore */
389
+ ...(ngDevMode ? [{ debugName: "countOver" }] : /* istanbul ignore next */ []));
390
+ formatCount = formatFieldCount;
391
+ /** The count a control this library ships publishes, whenever its value changes. */
392
+ setCount(count) {
393
+ this.countState.set(count);
394
+ }
395
+ /** What the control published, for a page that draws the counter itself. */
396
+ count = this.countState.asReadonly();
397
+ token = injectFieldDefaults();
398
+ /**
399
+ * The group around this field, if there is one. It answers before the
400
+ * application's own token, and it is read on every change rather than
401
+ * captured, because Angular binds a component's inputs after it has created
402
+ * the directives its template declares.
403
+ */
404
+ source = inject(SlFieldDefaultsSource, { optional: true });
405
+ defaults = computed(() => this.source?.fieldDefaults() ?? this.token, /* @ts-ignore */
406
+ ...(ngDevMode ? [{ debugName: "defaults" }] : /* istanbul ignore next */ []));
407
+ /**
408
+ * The base every identifier is derived from. A consumer's own `id` is the
409
+ * base and stays on the element; the generated one is not written anywhere,
410
+ * because the field is addressable through its parts rather than as a box.
411
+ */
412
+ base = inject(new HostAttributeToken('id'), { optional: true }) ?? inject(SlFieldIdFactory).next();
413
+ ids = computed(() => deriveFieldIds(this.base), /* @ts-ignore */
414
+ ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
415
+ /**
416
+ * Direct content rather than any descendant: a field nested inside another
417
+ * field's control — a composed control, a fieldset of its own — must not have
418
+ * its message read as this field's.
419
+ */
420
+ description = contentChild(SlFieldDescription, { ...(ngDevMode ? { debugName: "description" } : /* istanbul ignore next */ {}), descendants: false });
421
+ error = contentChild(SlFieldError, { ...(ngDevMode ? { debugName: "error" } : /* istanbul ignore next */ {}), descendants: false });
422
+ resolvedSize = computed(() => this.size() ?? this.defaults().size, /* @ts-ignore */
423
+ ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
424
+ resolvedLabelPlacement = computed(() => this.labelPlacement() ?? this.defaults().labelPlacement, /* @ts-ignore */
425
+ ...(ngDevMode ? [{ debugName: "resolvedLabelPlacement" }] : /* istanbul ignore next */ []));
426
+ resolvedNecessity = computed(() => this.necessity() ?? this.defaults().necessity, /* @ts-ignore */
427
+ ...(ngDevMode ? [{ debugName: "resolvedNecessity" }] : /* istanbul ignore next */ []));
428
+ resolvedDisabled = computed(() => this.disabled() ?? this.defaults().disabled, /* @ts-ignore */
429
+ ...(ngDevMode ? [{ debugName: "resolvedDisabled" }] : /* istanbul ignore next */ []));
430
+ resolvedReadOnly = computed(() => this.readOnly() ?? this.defaults().readOnly, /* @ts-ignore */
431
+ ...(ngDevMode ? [{ debugName: "resolvedReadOnly" }] : /* istanbul ignore next */ []));
432
+ /** The field's words in the language in force, with this field's `messages` laid over them. */
433
+ t = injectMessages(fieldMessages, this.messages);
434
+ /**
435
+ * A message is quieter than the control it is about, so it starts one step
436
+ * below and only the largest field's message reaches the second step.
437
+ */
438
+ messageSize = computed(() => this.resolvedSize() === 'lg' ? 'md' : 'sm', /* @ts-ignore */
439
+ ...(ngDevMode ? [{ debugName: "messageSize" }] : /* istanbul ignore next */ []));
440
+ /**
441
+ * The contract's order, and only the parts with something to say: the
442
+ * indicator, the help, the description, the count, the error. Known slots
443
+ * have one correct reading order, so it is stated rather than read from the
444
+ * DOM. The count is there whenever one is drawn — the page's, or the one the
445
+ * field or its header draws from what the control published.
446
+ */
447
+ describedBy = computed(() => {
448
+ const present = {
449
+ counter: this.writtenCounter() !== undefined || this.countState() !== undefined,
450
+ description: this.description()?.hasContent() === true,
451
+ error: this.error()?.hasContent() === true,
452
+ help: this.help() !== undefined,
453
+ indicator: this.indicator() !== undefined,
454
+ };
455
+ const ids = this.ids();
456
+ const parts = FIELD_DESCRIBED_ORDER.filter((slot) => present[slot]).map((slot) => ids[slot]);
457
+ return parts.length === 0 ? null : parts.join(' ');
458
+ }, /* @ts-ignore */
459
+ ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
460
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlField, deps: [], target: i0.ɵɵFactoryTarget.Component });
461
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlField, isStandalone: true, selector: "[slField]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, labelPlacement: { classPropertyName: "labelPlacement", publicName: "labelPlacement", isSignal: true, isRequired: false, transformFunction: null }, necessity: { classPropertyName: "necessity", publicName: "necessity", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "field", "data-part": "root" }, properties: { "attr.data-size": "resolvedSize()", "attr.data-label-placement": "resolvedLabelPlacement()", "attr.data-necessity": "resolvedNecessity()", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.data-invalid": "invalid() === true ? '' : null", "attr.data-readonly": "resolvedReadOnly() === true ? '' : null", "attr.data-required": "required() === true ? '' : null" } }, providers: [{ provide: SlFieldContext, useExisting: forwardRef(() => SlField) }], queries: [{ propertyName: "writtenCounter", first: true, predicate: SlFieldCounter, descendants: true, isSignal: true }, { propertyName: "header", first: true, predicate: SlFieldHeaderSlot, descendants: true, isSignal: true }, { propertyName: "help", first: true, predicate: SlFieldHelpSlot, descendants: true, isSignal: true }, { propertyName: "indicator", first: true, predicate: SlFieldIndicatorSlot, descendants: true, isSignal: true }, { propertyName: "description", first: true, predicate: SlFieldDescription, isSignal: true }, { propertyName: "error", first: true, predicate: SlFieldError, isSignal: true }], exportAs: ["slField"], ngImport: i0, template: `<ng-content select="[slFieldLabel], [slFieldHeader]" />
462
+ <ng-content select="[slFieldCounter]" />
463
+ @if (drawnCount(); as count) {
464
+ <span
465
+ data-part="counter"
466
+ [id]="ids().counter"
467
+ [attr.data-invalid]="countOver() ? '' : null"
468
+ >{{ formatCount(count) }}</span
469
+ >
470
+ }
471
+ <ng-content />
472
+ @if (description(); as message) {
473
+ <p
474
+ slInlineMessage
475
+ [id]="ids().description"
476
+ [size]="messageSize()"
477
+ [disabled]="resolvedDisabled()"
478
+ [mark]="message.mark() ?? 'none'"
479
+ [tone]="message.tone() ?? 'secondary'"
480
+ [live]="message.live() ?? 'off'"
481
+ [hideIcon]="message.hideIcon() ?? false"
482
+ [reserve]="message.reserve() ?? false"
483
+ [prefix]="message.prefix()"
484
+ >
485
+ <ng-content select="[slFieldDescription]" />
486
+ </p>
487
+ }
488
+ @if (error(); as message) {
489
+ <p
490
+ slInlineMessage
491
+ [id]="ids().error"
492
+ [size]="messageSize()"
493
+ [disabled]="resolvedDisabled()"
494
+ [mark]="message.mark() ?? 'none'"
495
+ [tone]="message.tone() ?? 'danger'"
496
+ [live]="message.live() ?? 'off'"
497
+ [hideIcon]="message.hideIcon() ?? false"
498
+ [reserve]="message.reserve() ?? false"
499
+ [prefix]="message.prefix()"
500
+ >
501
+ <ng-content select="[slFieldError]" />
502
+ </p>
503
+ }`, isInline: true, styles: ["@layer slotted.components{[data-ui=field][data-part=root]{--_font-size: var(--slotted-control-font-size-md, 13px);--_control-block-size: var(--slotted-control-height-md, 34px);--_row-gap: var(--slotted-field-row-gap, var(--slotted-space-3, .375rem));--_column-gap: var(--slotted-field-column-gap, var(--slotted-space-5, .75rem));align-content:start;container-name:slotted-field;container-type:inline-size;display:grid;font-family:var(--slotted-field-font-family, var(--slotted-control-font-family, sans-serif));grid-template-columns:minmax(0,var(--slotted-field-label-inline-size, 12rem)) minmax(0,1fr) auto;min-inline-size:0;row-gap:var(--_row-gap)}[data-ui=field][data-part=root]>*{grid-column:1 / -1}[data-ui=field]>[data-part=control]{min-inline-size:0}[data-ui=field][data-part=root][data-size=sm]{--_help-glyph: max( var(--slotted-field-icon-size-min, 14px), var(--slotted-control-icon-size-sm, 14px) );--_help-inner-size: var(--slotted-control-inner-size-sm, 22px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_control-block-size: var(--slotted-control-height-sm, 30px)}[data-ui=field][data-part=root][data-size=md]{--_help-glyph: max( var(--slotted-field-icon-size-min, 14px), var(--slotted-control-icon-size-sm, 14px) );--_help-inner-size: var(--slotted-control-inner-size-sm, 22px);--_font-size: var(--slotted-control-font-size-md, 13px);--_control-block-size: var(--slotted-control-height-md, 34px)}[data-ui=field][data-part=root][data-size=lg]{--_help-glyph: max( var(--slotted-field-icon-size-min, 14px), var(--slotted-control-icon-size-md, 16px) );--_help-inner-size: var(--slotted-control-inner-size-md, 24px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_control-block-size: var(--slotted-control-height-lg, 38px)}[data-ui=field]>[data-part=label],[data-ui=field]>[data-part=header]>[data-part=label]{color:var(--slotted-field-label-color, var(--slotted-text));font-size:var(--_font-size);font-weight:var(--slotted-field-label-font-weight, var(--slotted-font-weight-medium, 500));line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));min-inline-size:0;overflow-wrap:anywhere;transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=field]>[data-part=label],[data-ui=field]>[data-part=header]{grid-column:1 / -1;grid-row:1}[data-ui=field][data-part=root]:has(>[data-part=counter])>[data-part=label]{grid-column:1 / 3}[data-ui=field]>[data-part=label]>[data-part=mark],[data-ui=field]>[data-part=header]>[data-part=label]>[data-part=mark]{color:var(--slotted-field-mark-color, var(--slotted-tone-danger-text));margin-inline-start:var(--slotted-field-mark-gap, var(--slotted-space-2, .25rem));overflow-wrap:normal;unicode-bidi:isolate}[data-ui=field]:is([data-necessity=optional],[data-necessity=words])>[data-part=label]>[data-part=mark],[data-ui=field]:is([data-necessity=optional],[data-necessity=words])>[data-part=header]>[data-part=label]>[data-part=mark]{color:var(--slotted-field-mark-text-color, var(--slotted-text-muted));font-size:var(--slotted-control-font-size-sm, 12px);font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=field]>[data-part=header]{align-items:baseline;column-gap:var(--slotted-field-header-gap, var(--slotted-space-3, .375rem));display:flex;flex-wrap:wrap;font-size:var(--_font-size);line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));min-inline-size:0}[data-ui=field]>[data-part=header]>[data-part=label]{flex:0 1 auto}[data-ui=field]>[data-part=header]>[data-part=action],[data-ui=field]>[data-part=header]>[data-part=counter]{margin-inline-start:auto}[data-ui=field]>[data-part=header]>[data-part=action]~[data-part=counter]{margin-inline-start:var(--slotted-space-3, .375rem)}[data-ui=field]>[data-part=header]>[data-part=help]{--_box: max( min(calc(var(--_help-glyph) + 2 * var(--slotted-space-2, .25rem)), var(--_help-inner-size)), 1lh );--slotted-icon-size: var(--_help-glyph);appearance:none;background-color:transparent;block-size:var(--_box);border:0;border-radius:var(--slotted-field-help-radius, var(--slotted-control-radius, 4px));color:var(--slotted-field-help-color, var(--slotted-text-muted));cursor:pointer;display:inline-block;flex:none;font:inherit;inline-size:var(--_box);margin-block:calc((var(--_font-size) * var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45)) - var(--_box)) / 2);margin-inline-start:calc(var(--slotted-space-1, .125rem) - var(--slotted-field-header-gap, var(--slotted-space-3, .375rem)));padding:0;position:relative;text-align:center;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=field]>[data-part=header]>[data-part=help]:before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}[data-ui=field]>[data-part=header]>[data-part=help]>[data-ui=icon]{vertical-align:calc(((1cap + 1ex) / 2 - var(--_help-glyph)) / 2)}[data-ui=field]>[data-part=header]>[data-part=help]:enabled:hover,[data-ui=field]>[data-part=header]>[data-part=help][data-open]{background-color:var( --slotted-field-help-surface-hover, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=field]>[data-part=header]>[data-part=help]:enabled:active{background-color:var( --slotted-field-help-surface-active, var(--slotted-tone-secondary-subtle-active, ButtonFace) )}[data-ui=field]>[data-part=header]>[data-part=help]: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=field]>[data-part=header]>[data-part=indicator]{align-items:center;align-self:center;column-gap:var(--slotted-space-2, .25rem);display:inline-flex;flex-wrap:wrap}[data-ui=field]>[data-part=header]>[data-part=action]{--_rest: var(--slotted-field-action-color, var(--slotted-tone-accent-text, LinkText));align-items:center;appearance:none;background:none;block-size:var(--slotted-target-min, 24px);border:0;border-radius:var(--slotted-field-action-radius, var(--slotted-control-radius, 4px));color:var(--_rest);cursor:pointer;display:inline-flex;flex:none;font-family:inherit;font-size:var(--slotted-control-font-size-sm, 12px);font-weight:var(--slotted-font-weight-regular, 400);line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));margin-block:calc((1lh - var(--slotted-target-min, 24px)) / 2);padding:0;text-decoration-color:transparent;text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),text-decoration-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);unicode-bidi:plaintext}[data-ui=field]>[data-part=header]>[data-part=action]:not(:disabled,[aria-disabled=true]):hover{color:var( --slotted-field-action-color-hover, color-mix(in oklab, var(--_rest) 65%, var(--slotted-text, CanvasText)) );text-decoration-color:currentColor}[data-ui=field]>[data-part=header]>[data-part=action]:not(:disabled,[aria-disabled=true]):active{color:var( --slotted-field-action-color-active, color-mix(in oklab, var(--_rest) 35%, var(--slotted-text, CanvasText)) );text-decoration-color:currentColor}[data-ui=field]>[data-part=header]>[data-part=action]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px);text-decoration-color:currentColor}[data-ui=field]>[data-part=header]>[data-part=action]:is(:disabled,[aria-disabled=true]){color:var(--slotted-disabled-foreground, GrayText);cursor:not-allowed}@media(pointer:coarse){[data-ui=field]>[data-part=header]>[data-part=action]{position:relative}[data-ui=field]>[data-part=header]>[data-part=help]:before,[data-ui=field]>[data-part=header]>[data-part=action]:before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2));position:absolute}}[data-ui=field]>[data-part=counter],[data-ui=field]>[data-part=header]>[data-part=counter]{color:var(--slotted-field-counter-color, var(--slotted-text-muted));font-size:var(--slotted-control-font-size-sm, 12px);font-variant-numeric:tabular-nums;line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=field]>[data-part=counter]{align-self:end;grid-column:3;grid-row:1;justify-self:end;padding-inline-start:var(--_column-gap)}[data-ui=field]>[data-part=counter][data-invalid],[data-ui=field]>[data-part=header]>[data-part=counter][data-invalid]{color:var(--slotted-field-counter-invalid-color, var(--slotted-tone-danger-text));font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=field]>[data-ui=inline-message]:not([data-reserve]):has([data-part=text]:empty){display:none}[data-ui=field][data-part=root]>[data-ui=inline-message]{font-size:var(--slotted-font-size-xs, .75rem)}[data-ui=field][data-part=root]>[data-ui=inline-message][data-tone=danger],[data-ui=field][data-part=root]>[data-ui=inline-message][data-tone=success]{font-weight:var(--slotted-font-weight-medium, 500)}@container slotted-field (min-width: 320px){[data-ui=field][data-part=root][data-label-placement=side]>*{align-self:start;grid-column:2 / 3}[data-ui=field][data-part=root][data-label-placement=side]>[data-part=label],[data-ui=field][data-part=root][data-label-placement=side]>[data-part=header]{grid-column:1;grid-row:1;padding-block-start:max(0px,calc((var(--_control-block-size) - 1lh) / 2));padding-inline-end:var(--_column-gap)}[data-ui=field][data-part=root][data-label-placement=side]>[data-part=counter]{grid-column:1;grid-row:2;justify-self:end;padding-inline:0 var(--_column-gap)}[data-ui=field][data-part=root][data-label-placement=side]>[data-part=header]>[data-part=counter]{flex-basis:100%;margin-inline-start:0;text-align:end}}[data-ui=field][data-part=root][data-disabled]>[data-part=label],[data-ui=field][data-part=root][data-disabled]>[data-part=counter],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=label],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=counter]{color:var(--slotted-disabled-foreground)}[data-ui=field][data-part=root][data-disabled]>[data-part=label]>[data-part=mark],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=label]>[data-part=mark]{color:var(--slotted-disabled-foreground)}[data-ui=field][data-part=root][data-disabled]>[data-part=counter][data-invalid],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=counter][data-invalid]{color:var(--slotted-disabled-foreground);font-weight:var(--slotted-font-weight-regular, 400)}}\n"], dependencies: [{ kind: "component", type: SlInlineMessage, selector: "[slInlineMessage]", inputs: ["tone", "size", "live", "mark", "prefix", "hideIcon", "loading", "disabled", "reserve", "id"], exportAs: ["slInlineMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
504
+ }
505
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlField, decorators: [{
506
+ type: Component,
507
+ args: [{ selector: '[slField]', standalone: true, exportAs: 'slField', imports: [SlInlineMessage], template: `<ng-content select="[slFieldLabel], [slFieldHeader]" />
508
+ <ng-content select="[slFieldCounter]" />
509
+ @if (drawnCount(); as count) {
510
+ <span
511
+ data-part="counter"
512
+ [id]="ids().counter"
513
+ [attr.data-invalid]="countOver() ? '' : null"
514
+ >{{ formatCount(count) }}</span
515
+ >
516
+ }
517
+ <ng-content />
518
+ @if (description(); as message) {
519
+ <p
520
+ slInlineMessage
521
+ [id]="ids().description"
522
+ [size]="messageSize()"
523
+ [disabled]="resolvedDisabled()"
524
+ [mark]="message.mark() ?? 'none'"
525
+ [tone]="message.tone() ?? 'secondary'"
526
+ [live]="message.live() ?? 'off'"
527
+ [hideIcon]="message.hideIcon() ?? false"
528
+ [reserve]="message.reserve() ?? false"
529
+ [prefix]="message.prefix()"
530
+ >
531
+ <ng-content select="[slFieldDescription]" />
532
+ </p>
533
+ }
534
+ @if (error(); as message) {
535
+ <p
536
+ slInlineMessage
537
+ [id]="ids().error"
538
+ [size]="messageSize()"
539
+ [disabled]="resolvedDisabled()"
540
+ [mark]="message.mark() ?? 'none'"
541
+ [tone]="message.tone() ?? 'danger'"
542
+ [live]="message.live() ?? 'off'"
543
+ [hideIcon]="message.hideIcon() ?? false"
544
+ [reserve]="message.reserve() ?? false"
545
+ [prefix]="message.prefix()"
546
+ >
547
+ <ng-content select="[slFieldError]" />
548
+ </p>
549
+ }`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: SlFieldContext, useExisting: forwardRef(() => SlField) }], host: {
550
+ 'data-ui': 'field',
551
+ 'data-part': 'root',
552
+ '[attr.data-size]': 'resolvedSize()',
553
+ '[attr.data-label-placement]': 'resolvedLabelPlacement()',
554
+ '[attr.data-necessity]': 'resolvedNecessity()',
555
+ '[attr.data-disabled]': "resolvedDisabled() === true ? '' : null",
556
+ '[attr.data-invalid]': "invalid() === true ? '' : null",
557
+ '[attr.data-readonly]': "resolvedReadOnly() === true ? '' : null",
558
+ '[attr.data-required]': "required() === true ? '' : null",
559
+ }, styles: ["@layer slotted.components{[data-ui=field][data-part=root]{--_font-size: var(--slotted-control-font-size-md, 13px);--_control-block-size: var(--slotted-control-height-md, 34px);--_row-gap: var(--slotted-field-row-gap, var(--slotted-space-3, .375rem));--_column-gap: var(--slotted-field-column-gap, var(--slotted-space-5, .75rem));align-content:start;container-name:slotted-field;container-type:inline-size;display:grid;font-family:var(--slotted-field-font-family, var(--slotted-control-font-family, sans-serif));grid-template-columns:minmax(0,var(--slotted-field-label-inline-size, 12rem)) minmax(0,1fr) auto;min-inline-size:0;row-gap:var(--_row-gap)}[data-ui=field][data-part=root]>*{grid-column:1 / -1}[data-ui=field]>[data-part=control]{min-inline-size:0}[data-ui=field][data-part=root][data-size=sm]{--_help-glyph: max( var(--slotted-field-icon-size-min, 14px), var(--slotted-control-icon-size-sm, 14px) );--_help-inner-size: var(--slotted-control-inner-size-sm, 22px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_control-block-size: var(--slotted-control-height-sm, 30px)}[data-ui=field][data-part=root][data-size=md]{--_help-glyph: max( var(--slotted-field-icon-size-min, 14px), var(--slotted-control-icon-size-sm, 14px) );--_help-inner-size: var(--slotted-control-inner-size-sm, 22px);--_font-size: var(--slotted-control-font-size-md, 13px);--_control-block-size: var(--slotted-control-height-md, 34px)}[data-ui=field][data-part=root][data-size=lg]{--_help-glyph: max( var(--slotted-field-icon-size-min, 14px), var(--slotted-control-icon-size-md, 16px) );--_help-inner-size: var(--slotted-control-inner-size-md, 24px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_control-block-size: var(--slotted-control-height-lg, 38px)}[data-ui=field]>[data-part=label],[data-ui=field]>[data-part=header]>[data-part=label]{color:var(--slotted-field-label-color, var(--slotted-text));font-size:var(--_font-size);font-weight:var(--slotted-field-label-font-weight, var(--slotted-font-weight-medium, 500));line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));min-inline-size:0;overflow-wrap:anywhere;transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=field]>[data-part=label],[data-ui=field]>[data-part=header]{grid-column:1 / -1;grid-row:1}[data-ui=field][data-part=root]:has(>[data-part=counter])>[data-part=label]{grid-column:1 / 3}[data-ui=field]>[data-part=label]>[data-part=mark],[data-ui=field]>[data-part=header]>[data-part=label]>[data-part=mark]{color:var(--slotted-field-mark-color, var(--slotted-tone-danger-text));margin-inline-start:var(--slotted-field-mark-gap, var(--slotted-space-2, .25rem));overflow-wrap:normal;unicode-bidi:isolate}[data-ui=field]:is([data-necessity=optional],[data-necessity=words])>[data-part=label]>[data-part=mark],[data-ui=field]:is([data-necessity=optional],[data-necessity=words])>[data-part=header]>[data-part=label]>[data-part=mark]{color:var(--slotted-field-mark-text-color, var(--slotted-text-muted));font-size:var(--slotted-control-font-size-sm, 12px);font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=field]>[data-part=header]{align-items:baseline;column-gap:var(--slotted-field-header-gap, var(--slotted-space-3, .375rem));display:flex;flex-wrap:wrap;font-size:var(--_font-size);line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));min-inline-size:0}[data-ui=field]>[data-part=header]>[data-part=label]{flex:0 1 auto}[data-ui=field]>[data-part=header]>[data-part=action],[data-ui=field]>[data-part=header]>[data-part=counter]{margin-inline-start:auto}[data-ui=field]>[data-part=header]>[data-part=action]~[data-part=counter]{margin-inline-start:var(--slotted-space-3, .375rem)}[data-ui=field]>[data-part=header]>[data-part=help]{--_box: max( min(calc(var(--_help-glyph) + 2 * var(--slotted-space-2, .25rem)), var(--_help-inner-size)), 1lh );--slotted-icon-size: var(--_help-glyph);appearance:none;background-color:transparent;block-size:var(--_box);border:0;border-radius:var(--slotted-field-help-radius, var(--slotted-control-radius, 4px));color:var(--slotted-field-help-color, var(--slotted-text-muted));cursor:pointer;display:inline-block;flex:none;font:inherit;inline-size:var(--_box);margin-block:calc((var(--_font-size) * var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45)) - var(--_box)) / 2);margin-inline-start:calc(var(--slotted-space-1, .125rem) - var(--slotted-field-header-gap, var(--slotted-space-3, .375rem)));padding:0;position:relative;text-align:center;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=field]>[data-part=header]>[data-part=help]:before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}[data-ui=field]>[data-part=header]>[data-part=help]>[data-ui=icon]{vertical-align:calc(((1cap + 1ex) / 2 - var(--_help-glyph)) / 2)}[data-ui=field]>[data-part=header]>[data-part=help]:enabled:hover,[data-ui=field]>[data-part=header]>[data-part=help][data-open]{background-color:var( --slotted-field-help-surface-hover, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=field]>[data-part=header]>[data-part=help]:enabled:active{background-color:var( --slotted-field-help-surface-active, var(--slotted-tone-secondary-subtle-active, ButtonFace) )}[data-ui=field]>[data-part=header]>[data-part=help]: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=field]>[data-part=header]>[data-part=indicator]{align-items:center;align-self:center;column-gap:var(--slotted-space-2, .25rem);display:inline-flex;flex-wrap:wrap}[data-ui=field]>[data-part=header]>[data-part=action]{--_rest: var(--slotted-field-action-color, var(--slotted-tone-accent-text, LinkText));align-items:center;appearance:none;background:none;block-size:var(--slotted-target-min, 24px);border:0;border-radius:var(--slotted-field-action-radius, var(--slotted-control-radius, 4px));color:var(--_rest);cursor:pointer;display:inline-flex;flex:none;font-family:inherit;font-size:var(--slotted-control-font-size-sm, 12px);font-weight:var(--slotted-font-weight-regular, 400);line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));margin-block:calc((1lh - var(--slotted-target-min, 24px)) / 2);padding:0;text-decoration-color:transparent;text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),text-decoration-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);unicode-bidi:plaintext}[data-ui=field]>[data-part=header]>[data-part=action]:not(:disabled,[aria-disabled=true]):hover{color:var( --slotted-field-action-color-hover, color-mix(in oklab, var(--_rest) 65%, var(--slotted-text, CanvasText)) );text-decoration-color:currentColor}[data-ui=field]>[data-part=header]>[data-part=action]:not(:disabled,[aria-disabled=true]):active{color:var( --slotted-field-action-color-active, color-mix(in oklab, var(--_rest) 35%, var(--slotted-text, CanvasText)) );text-decoration-color:currentColor}[data-ui=field]>[data-part=header]>[data-part=action]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px);text-decoration-color:currentColor}[data-ui=field]>[data-part=header]>[data-part=action]:is(:disabled,[aria-disabled=true]){color:var(--slotted-disabled-foreground, GrayText);cursor:not-allowed}@media(pointer:coarse){[data-ui=field]>[data-part=header]>[data-part=action]{position:relative}[data-ui=field]>[data-part=header]>[data-part=help]:before,[data-ui=field]>[data-part=header]>[data-part=action]:before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2));position:absolute}}[data-ui=field]>[data-part=counter],[data-ui=field]>[data-part=header]>[data-part=counter]{color:var(--slotted-field-counter-color, var(--slotted-text-muted));font-size:var(--slotted-control-font-size-sm, 12px);font-variant-numeric:tabular-nums;line-height:var(--slotted-field-line-height, var(--slotted-line-height-sm, 1.45));transition:color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing)}[data-ui=field]>[data-part=counter]{align-self:end;grid-column:3;grid-row:1;justify-self:end;padding-inline-start:var(--_column-gap)}[data-ui=field]>[data-part=counter][data-invalid],[data-ui=field]>[data-part=header]>[data-part=counter][data-invalid]{color:var(--slotted-field-counter-invalid-color, var(--slotted-tone-danger-text));font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=field]>[data-ui=inline-message]:not([data-reserve]):has([data-part=text]:empty){display:none}[data-ui=field][data-part=root]>[data-ui=inline-message]{font-size:var(--slotted-font-size-xs, .75rem)}[data-ui=field][data-part=root]>[data-ui=inline-message][data-tone=danger],[data-ui=field][data-part=root]>[data-ui=inline-message][data-tone=success]{font-weight:var(--slotted-font-weight-medium, 500)}@container slotted-field (min-width: 320px){[data-ui=field][data-part=root][data-label-placement=side]>*{align-self:start;grid-column:2 / 3}[data-ui=field][data-part=root][data-label-placement=side]>[data-part=label],[data-ui=field][data-part=root][data-label-placement=side]>[data-part=header]{grid-column:1;grid-row:1;padding-block-start:max(0px,calc((var(--_control-block-size) - 1lh) / 2));padding-inline-end:var(--_column-gap)}[data-ui=field][data-part=root][data-label-placement=side]>[data-part=counter]{grid-column:1;grid-row:2;justify-self:end;padding-inline:0 var(--_column-gap)}[data-ui=field][data-part=root][data-label-placement=side]>[data-part=header]>[data-part=counter]{flex-basis:100%;margin-inline-start:0;text-align:end}}[data-ui=field][data-part=root][data-disabled]>[data-part=label],[data-ui=field][data-part=root][data-disabled]>[data-part=counter],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=label],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=counter]{color:var(--slotted-disabled-foreground)}[data-ui=field][data-part=root][data-disabled]>[data-part=label]>[data-part=mark],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=label]>[data-part=mark]{color:var(--slotted-disabled-foreground)}[data-ui=field][data-part=root][data-disabled]>[data-part=counter][data-invalid],[data-ui=field][data-part=root][data-disabled]>[data-part=header]>[data-part=counter][data-invalid]{color:var(--slotted-disabled-foreground);font-weight:var(--slotted-font-weight-regular, 400)}}\n"] }]
560
+ }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], labelPlacement: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPlacement", required: false }] }], necessity: [{ type: i0.Input, args: [{ isSignal: true, alias: "necessity", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], writtenCounter: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlFieldCounter), { ...{ descendants: true }, isSignal: true }] }], header: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlFieldHeaderSlot), { isSignal: true }] }], help: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlFieldHelpSlot), { ...{ descendants: true }, isSignal: true }] }], indicator: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlFieldIndicatorSlot), { ...{ descendants: true }, isSignal: true }] }], description: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlFieldDescription), { ...{ descendants: false }, isSignal: true }] }], error: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SlFieldError), { ...{ descendants: false }, isSignal: true }] }] } });
561
+
562
+ /**
563
+ * Names the control, and says whether it has to be answered.
564
+ *
565
+ * The association is explicit — `for` pointing at the control's identifier —
566
+ * because the APG's naming practice records that some combinations of assistive
567
+ * technology and browser fail to treat the implicit form, wrapping the control
568
+ * in the label, as having an accessible name at all.
569
+ *
570
+ * The necessity marker is drawn here rather than written by the page. The glyph
571
+ * is `aria-hidden`, because `aria-required` on the control already carries the
572
+ * semantics and a reader working a form of twenty required fields does not need
573
+ * to hear "asterisk" twenty times; the two word forms are not hidden, because
574
+ * `(optional)` is information rather than decoration.
575
+ */
576
+ class SlFieldLabel {
577
+ field = inject(SlField);
578
+ writtenFor = inject(new HostAttributeToken('for'), { optional: true });
579
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
580
+ labelFor = computed(() => this.writtenFor ?? this.field.ids().control, /* @ts-ignore */
581
+ ...(ngDevMode ? [{ debugName: "labelFor" }] : /* istanbul ignore next */ []));
582
+ labelId = computed(() => this.writtenId ?? this.field.ids().label, /* @ts-ignore */
583
+ ...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
584
+ necessity = computed(() => necessityMark(this.field.resolvedNecessity(), this.field.required() === true, this.field.t), /* @ts-ignore */
585
+ ...(ngDevMode ? [{ debugName: "necessity" }] : /* istanbul ignore next */ []));
586
+ markHidden = computed(() => this.necessity()?.hidden === true, /* @ts-ignore */
587
+ ...(ngDevMode ? [{ debugName: "markHidden" }] : /* istanbul ignore next */ []));
588
+ mark = computed(() => this.necessity()?.text ?? null, /* @ts-ignore */
589
+ ...(ngDevMode ? [{ debugName: "mark" }] : /* istanbul ignore next */ []));
590
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
591
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlFieldLabel, isStandalone: true, selector: "label[slFieldLabel]", host: { attributes: { "data-part": "label" }, properties: { "attr.for": "labelFor()", "attr.id": "labelId()" } }, exportAs: ["slFieldLabel"], ngImport: i0, template: `<ng-content />
592
+ @if (mark(); as text) {
593
+ <span data-part="mark" [attr.aria-hidden]="markHidden() ? 'true' : null">{{ text }}</span>
594
+ }`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
595
+ }
596
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldLabel, decorators: [{
597
+ type: Component,
598
+ args: [{
599
+ selector: 'label[slFieldLabel]',
600
+ standalone: true,
601
+ exportAs: 'slFieldLabel',
602
+ template: `<ng-content />
603
+ @if (mark(); as text) {
604
+ <span data-part="mark" [attr.aria-hidden]="markHidden() ? 'true' : null">{{ text }}</span>
605
+ }`,
606
+ changeDetection: ChangeDetectionStrategy.OnPush,
607
+ encapsulation: ViewEncapsulation.None,
608
+ host: {
609
+ 'data-part': 'label',
610
+ '[attr.for]': 'labelFor()',
611
+ '[attr.id]': 'labelId()',
612
+ },
613
+ }]
614
+ }] });
615
+ /**
616
+ * Applies the field's wiring to a control the library does not own.
617
+ *
618
+ * Controls this library ships read the field themselves and need no directive,
619
+ * which is what
620
+ * `docs/history/designs/2026-08-31-field-aware-controls-design.md` decides.
621
+ * This exists for the two cases that cannot: a plain native element, and a
622
+ * component written before this library.
623
+ *
624
+ * Every value the consumer wrote wins. A host binding beats a static attribute
625
+ * in Angular, so each written value is read before the binding is computed
626
+ * rather than after — the asymmetry with React, where a consumer's prop simply
627
+ * spreads over the family's.
628
+ */
629
+ class SlFieldControl {
630
+ field = inject(SlField);
631
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
632
+ writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {
633
+ optional: true,
634
+ });
635
+ writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {
636
+ optional: true,
637
+ });
638
+ writtenRequired = inject(new HostAttributeToken('aria-required'), {
639
+ optional: true,
640
+ });
641
+ writtenDisabled = inject(new HostAttributeToken('disabled'), { optional: true });
642
+ writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });
643
+ controlId = computed(() => this.writtenId ?? this.field.ids().control, /* @ts-ignore */
644
+ ...(ngDevMode ? [{ debugName: "controlId" }] : /* istanbul ignore next */ []));
645
+ /** Merged after the consumer's own, so a tour step is read before the help. */
646
+ describedBy = computed(() => {
647
+ const merged = [this.writtenDescribedBy, this.field.describedBy()].filter(Boolean);
648
+ return merged.length === 0 ? null : merged.join(' ');
649
+ }, /* @ts-ignore */
650
+ ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
651
+ ariaInvalid = computed(() => this.writtenInvalid ?? (this.field.invalid() === true ? 'true' : null), /* @ts-ignore */
652
+ ...(ngDevMode ? [{ debugName: "ariaInvalid" }] : /* istanbul ignore next */ []));
653
+ ariaRequired = computed(() => this.writtenRequired ?? (this.field.required() === true ? 'true' : null), /* @ts-ignore */
654
+ ...(ngDevMode ? [{ debugName: "ariaRequired" }] : /* istanbul ignore next */ []));
655
+ disabledAttribute = computed(() => this.writtenDisabled ?? (this.field.resolvedDisabled() === true ? '' : null), /* @ts-ignore */
656
+ ...(ngDevMode ? [{ debugName: "disabledAttribute" }] : /* istanbul ignore next */ []));
657
+ readonlyAttribute = computed(() => this.writtenReadonly ?? (this.field.resolvedReadOnly() === true ? '' : null), /* @ts-ignore */
658
+ ...(ngDevMode ? [{ debugName: "readonlyAttribute" }] : /* istanbul ignore next */ []));
659
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
660
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlFieldControl, isStandalone: true, selector: "[slFieldControl]", host: { attributes: { "data-part": "control" }, properties: { "attr.id": "controlId()", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-required": "ariaRequired()", "attr.disabled": "disabledAttribute()", "attr.readonly": "readonlyAttribute()" } }, exportAs: ["slFieldControl"], ngImport: i0 });
661
+ }
662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldControl, decorators: [{
663
+ type: Directive,
664
+ args: [{
665
+ selector: '[slFieldControl]',
666
+ standalone: true,
667
+ exportAs: 'slFieldControl',
668
+ host: {
669
+ 'data-part': 'control',
670
+ '[attr.id]': 'controlId()',
671
+ '[attr.aria-describedby]': 'describedBy()',
672
+ '[attr.aria-invalid]': 'ariaInvalid()',
673
+ '[attr.aria-required]': 'ariaRequired()',
674
+ '[attr.disabled]': 'disabledAttribute()',
675
+ '[attr.readonly]': 'readonlyAttribute()',
676
+ },
677
+ }]
678
+ }] });
679
+ /**
680
+ * A link or a button at the end of the label row — `Forgot password?`,
681
+ * `Generate` — written on the consumer's own `a` or `button`. On a `button` the
682
+ * directive writes `type="button"` unless the page wrote a type, so it never
683
+ * submits the form it sits in; on a link it writes nothing. The field does not
684
+ * disable it with the control: what it does is the page's.
685
+ */
686
+ class SlFieldAction {
687
+ writtenType = inject(new HostAttributeToken('type'), { optional: true });
688
+ type = this.writtenType ??
689
+ (inject(ElementRef).nativeElement.tagName === 'BUTTON'
690
+ ? 'button'
691
+ : null);
692
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
693
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlFieldAction, isStandalone: true, selector: "[slFieldAction]", host: { attributes: { "data-part": "action" }, properties: { "attr.type": "type" } }, exportAs: ["slFieldAction"], ngImport: i0 });
694
+ }
695
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldAction, decorators: [{
696
+ type: Directive,
697
+ args: [{
698
+ selector: '[slFieldAction]',
699
+ standalone: true,
700
+ exportAs: 'slFieldAction',
701
+ host: {
702
+ 'data-part': 'action',
703
+ '[attr.type]': 'type',
704
+ },
705
+ }]
706
+ }] });
707
+
708
+ /**
709
+ * The label row, when the label has company: the help, an indicator, an action
710
+ * and the counter beside it. ReUI writes the same row by hand in four of its
711
+ * examples; here it is a part, so its alignment, its gap and its place in a
712
+ * side layout are the family's.
713
+ *
714
+ * It draws the count the control published at its own end when the page wrote
715
+ * no counter, which is where a field without a header puts it too.
716
+ */
717
+ class SlFieldHeader {
718
+ field = inject(SlField);
719
+ drawnCount = computed(() => this.field.writtenCounter() === undefined ? this.field.count() : undefined, /* @ts-ignore */
720
+ ...(ngDevMode ? [{ debugName: "drawnCount" }] : /* istanbul ignore next */ []));
721
+ countOver = computed(() => {
722
+ const count = this.drawnCount();
723
+ return count !== undefined && isFieldCountOver(count);
724
+ }, /* @ts-ignore */
725
+ ...(ngDevMode ? [{ debugName: "countOver" }] : /* istanbul ignore next */ []));
726
+ formatCount = formatFieldCount;
727
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
728
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlFieldHeader, isStandalone: true, selector: "[slFieldHeader]", host: { attributes: { "data-part": "header" } }, providers: [{ provide: SlFieldHeaderSlot, useExisting: forwardRef(() => SlFieldHeader) }], exportAs: ["slFieldHeader"], ngImport: i0, template: `<ng-content />
729
+ @if (drawnCount(); as count) {
730
+ <span
731
+ data-part="counter"
732
+ [id]="field.ids().counter"
733
+ [attr.data-invalid]="countOver() ? '' : null"
734
+ >{{ formatCount(count) }}</span
735
+ >
736
+ }`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
737
+ }
738
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldHeader, decorators: [{
739
+ type: Component,
740
+ args: [{
741
+ selector: '[slFieldHeader]',
742
+ standalone: true,
743
+ exportAs: 'slFieldHeader',
744
+ template: `<ng-content />
745
+ @if (drawnCount(); as count) {
746
+ <span
747
+ data-part="counter"
748
+ [id]="field.ids().counter"
749
+ [attr.data-invalid]="countOver() ? '' : null"
750
+ >{{ formatCount(count) }}</span
751
+ >
752
+ }`,
753
+ changeDetection: ChangeDetectionStrategy.OnPush,
754
+ encapsulation: ViewEncapsulation.None,
755
+ providers: [{ provide: SlFieldHeaderSlot, useExisting: forwardRef(() => SlFieldHeader) }],
756
+ host: { 'data-part': 'header' },
757
+ }]
758
+ }] });
759
+ /**
760
+ * What qualifies the field — `Beta`, `Pro`, `New` — as one or more `slBadge`s
761
+ * after the label. It stands outside the `label`, so the necessity mark stays
762
+ * against the label's last word, and it joins the control's description, so a
763
+ * reader on the control hears it.
764
+ */
765
+ class SlFieldIndicator {
766
+ field = inject(SlField);
767
+ writtenId = inject(new HostAttributeToken('id'), { optional: true });
768
+ indicatorId = computed(() => this.writtenId ?? this.field.ids().indicator, /* @ts-ignore */
769
+ ...(ngDevMode ? [{ debugName: "indicatorId" }] : /* istanbul ignore next */ []));
770
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
771
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SlFieldIndicator, isStandalone: true, selector: "[slFieldIndicator]", host: { attributes: { "data-part": "indicator" }, properties: { "attr.id": "indicatorId()" } }, providers: [{ provide: SlFieldIndicatorSlot, useExisting: forwardRef(() => SlFieldIndicator) }], exportAs: ["slFieldIndicator"], ngImport: i0 });
772
+ }
773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldIndicator, decorators: [{
774
+ type: Directive,
775
+ args: [{
776
+ selector: '[slFieldIndicator]',
777
+ standalone: true,
778
+ exportAs: 'slFieldIndicator',
779
+ providers: [{ provide: SlFieldIndicatorSlot, useExisting: forwardRef(() => SlFieldIndicator) }],
780
+ host: {
781
+ 'data-part': 'indicator',
782
+ '[attr.id]': 'indicatorId()',
783
+ },
784
+ }]
785
+ }] });
786
+ /**
787
+ * The help beside the label: the button itself, drawing `circle-question`, with
788
+ * the hint in a tooltip. The hint is the directive's value —
789
+ * `<button slFieldHelp="Dias corridos."></button>` — because it is written once
790
+ * and read in two places: the tooltip's layer, and a hidden node inside the
791
+ * button that describes the button and the control while the layer is closed. A
792
+ * directly referenced hidden element still enters the description (accname 1.2,
793
+ * step 2A), and the tooltip is asked to describe nothing, so the hint is not
794
+ * read twice.
795
+ *
796
+ * **A press is the hint.** A tooltip opens on a coarse pointer only by a long
797
+ * press, because a tap is the trigger's own action; this button has no other
798
+ * action, so the tooltip is composed on the button as host directives and run
799
+ * by hand (`openOn: 'manual'`, provided here): a press pins the hint open and a
800
+ * second press closes it, while hover and keyboard focus open it the way every
801
+ * tooltip opens. It is Carbon's toggletip. `[(open)]` and `(openChangeRequest)`
802
+ * are the tooltip's own, exposed on the button.
803
+ *
804
+ * **It stays operable on a disabled field.** The help is often where the reason
805
+ * the field is off is written.
806
+ */
807
+ class SlFieldHelp {
808
+ /** The hint. */
809
+ slFieldHelp = input('', /* @ts-ignore */
810
+ ...(ngDevMode ? [{ debugName: "slFieldHelp" }] : /* istanbul ignore next */ []));
811
+ field = inject(SlField, { optional: true });
812
+ tooltip = inject(SlTooltip);
813
+ writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });
814
+ writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {
815
+ optional: true,
816
+ });
817
+ fallbackId = `${inject(SlFieldIdFactory).next()}-help`;
818
+ /** The field family's words, for a help control outside a field. */
819
+ own = injectMessages(fieldMessages);
820
+ textId = computed(() => this.field?.ids().help ?? this.fallbackId, /* @ts-ignore */
821
+ ...(ngDevMode ? [{ debugName: "textId" }] : /* istanbul ignore next */ []));
822
+ label = computed(() => this.writtenLabel ?? (this.field?.t ?? this.own)('help'), /* @ts-ignore */
823
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
824
+ describedBy = computed(() => this.writtenDescribedBy ?? this.textId(), /* @ts-ignore */
825
+ ...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
826
+ /** Whether a press opened the hint; a hover-opened hint closes when the pointer leaves. */
827
+ pinned = signal(false, /* @ts-ignore */
828
+ ...(ngDevMode ? [{ debugName: "pinned" }] : /* istanbul ignore next */ []));
829
+ constructor() {
830
+ /* A hint closed from anywhere — Escape, a press outside, the consumer — is
831
+ no longer pinned by the press that opened it. */
832
+ effect(() => {
833
+ if (!this.tooltip.isOpen())
834
+ this.pinned.set(false);
835
+ });
836
+ }
837
+ enter(event) {
838
+ if (event.pointerType === 'touch' || this.tooltip.isOpen())
839
+ return;
840
+ this.tooltip.openAfterDelay(event);
841
+ }
842
+ leave(event) {
843
+ if (event.pointerType === 'touch' || this.pinned())
844
+ return;
845
+ this.tooltip.closeAfterDelay(event);
846
+ }
847
+ /** `:focus-visible` rather than every focus: a press focuses the button too. */
848
+ focus(event) {
849
+ if (!event.target.matches(':focus-visible'))
850
+ return;
851
+ this.tooltip.toggle(true, 'keyboard', event);
852
+ }
853
+ blur(event) {
854
+ this.pinned.set(false);
855
+ this.tooltip.toggle(false, 'blur', event);
856
+ }
857
+ /**
858
+ * A click synthesised by the keyboard reports no detail; a real one reports
859
+ * the click count, which is how `Enter` and `Space` are told from a press.
860
+ */
861
+ press(event) {
862
+ const reason = event.detail === 0 ? 'keyboard' : 'pointer';
863
+ if (this.tooltip.isOpen() && this.pinned()) {
864
+ this.pinned.set(false);
865
+ this.tooltip.toggle(false, reason, event);
866
+ return;
867
+ }
868
+ this.pinned.set(true);
869
+ this.tooltip.toggle(true, reason, event);
870
+ }
871
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldHelp, deps: [], target: i0.ɵɵFactoryTarget.Component });
872
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlFieldHelp, isStandalone: true, selector: "button[slFieldHelp]", inputs: { slFieldHelp: { classPropertyName: "slFieldHelp", publicName: "slFieldHelp", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-part": "help", "type": "button" }, listeners: { "pointerenter": "enter($event)", "pointerleave": "leave($event)", "focus": "focus($event)", "blur": "blur($event)", "click": "press($event)" }, properties: { "attr.aria-label": "label()", "attr.aria-describedby": "describedBy()" } }, providers: [
873
+ provideTooltipDefaults({ closeOnPress: false, describes: 'none', openOn: 'manual' }),
874
+ { provide: SlFieldHelpSlot, useExisting: forwardRef(() => SlFieldHelp) },
875
+ ], exportAs: ["slFieldHelp"], hostDirectives: [{ directive: i1.SlTooltip, inputs: ["open", "open", "side", "side"], outputs: ["openChange", "openChange", "openChangeRequest", "openChangeRequest"] }, { directive: i1.SlTooltipTrigger }], ngImport: i0, template: `<span slIcon aria-hidden="true"><svg slGlyph name="circle-question"></svg></span>
876
+ <span data-part="help-text" hidden [id]="textId()">{{ slFieldHelp() }}</span>
877
+ <ng-template slTooltipLayer>
878
+ <div slTooltipContent>{{ slFieldHelp() }}</div>
879
+ <div slTooltipArrow></div>
880
+ </ng-template>`, isInline: true, dependencies: [{ kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "directive", type: SlTooltipArrow, selector: "[slTooltipArrow]", exportAs: ["slTooltipArrow"] }, { kind: "component", type: SlTooltipContent, selector: "[slTooltipContent]", exportAs: ["slTooltipContent"] }, { kind: "directive", type: SlTooltipLayer, selector: "ng-template[slTooltipLayer]", exportAs: ["slTooltipLayer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
881
+ }
882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlFieldHelp, decorators: [{
883
+ type: Component,
884
+ args: [{
885
+ selector: 'button[slFieldHelp]',
886
+ standalone: true,
887
+ exportAs: 'slFieldHelp',
888
+ imports: [SlGlyph, SlIcon, SlTooltipArrow, SlTooltipContent, SlTooltipLayer],
889
+ hostDirectives: [
890
+ {
891
+ directive: SlTooltip,
892
+ inputs: ['open', 'side'],
893
+ outputs: ['openChange', 'openChangeRequest'],
894
+ },
895
+ SlTooltipTrigger,
896
+ ],
897
+ template: `<span slIcon aria-hidden="true"><svg slGlyph name="circle-question"></svg></span>
898
+ <span data-part="help-text" hidden [id]="textId()">{{ slFieldHelp() }}</span>
899
+ <ng-template slTooltipLayer>
900
+ <div slTooltipContent>{{ slFieldHelp() }}</div>
901
+ <div slTooltipArrow></div>
902
+ </ng-template>`,
903
+ changeDetection: ChangeDetectionStrategy.OnPush,
904
+ encapsulation: ViewEncapsulation.None,
905
+ providers: [
906
+ provideTooltipDefaults({ closeOnPress: false, describes: 'none', openOn: 'manual' }),
907
+ { provide: SlFieldHelpSlot, useExisting: forwardRef(() => SlFieldHelp) },
908
+ ],
909
+ host: {
910
+ 'data-part': 'help',
911
+ type: 'button',
912
+ '[attr.aria-label]': 'label()',
913
+ '[attr.aria-describedby]': 'describedBy()',
914
+ '(pointerenter)': 'enter($event)',
915
+ '(pointerleave)': 'leave($event)',
916
+ '(focus)': 'focus($event)',
917
+ '(blur)': 'blur($event)',
918
+ '(click)': 'press($event)',
919
+ },
920
+ }]
921
+ }], ctorParameters: () => [], propDecorators: { slFieldHelp: [{ type: i0.Input, args: [{ isSignal: true, alias: "slFieldHelp", required: false }] }] } });
922
+
923
+ /**
924
+ * Generated bundle index. Do not edit.
925
+ */
926
+
927
+ export { FIELD_DEFAULTS, FIELD_DESCRIBED_ORDER, SlField, SlFieldAction, SlFieldContext, SlFieldControl, SlFieldCounter, SlFieldDefaultsSource, SlFieldDescription, SlFieldError, SlFieldHeader, SlFieldHeaderSlot, SlFieldHelp, SlFieldHelpSlot, SlFieldIdFactory, SlFieldIndicator, SlFieldIndicatorSlot, SlFieldLabel, SlFieldMessage, deriveFieldIds, formatFieldCount, injectFieldDefaults, isFieldCountOver, necessityMark, provideFieldDefaults };
928
+ //# sourceMappingURL=slotted-angular-field.mjs.map