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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/alert.json +7 -1
  4. package/docs/alert.md +3 -3
  5. package/docs/app-shell.examples.md +1 -1
  6. package/docs/app-shell.json +5 -5
  7. package/docs/app-shell.md +2 -2
  8. package/docs/avatar.json +22 -1
  9. package/docs/avatar.md +5 -3
  10. package/docs/badge.json +7 -1
  11. package/docs/badge.md +3 -3
  12. package/docs/button-group.json +2 -0
  13. package/docs/button-group.md +1 -1
  14. package/docs/button.json +51 -11
  15. package/docs/button.md +10 -6
  16. package/docs/calendar.json +8 -1
  17. package/docs/calendar.md +1 -0
  18. package/docs/cascader.json +1 -0
  19. package/docs/cascader.md +1 -1
  20. package/docs/chart.examples.md +1 -1
  21. package/docs/chart.json +10 -1
  22. package/docs/chart.md +3 -2
  23. package/docs/checkbox.json +7 -0
  24. package/docs/checkbox.md +1 -0
  25. package/docs/code-block.json +92 -92
  26. package/docs/code-block.md +69 -69
  27. package/docs/combobox.json +1 -0
  28. package/docs/combobox.md +1 -1
  29. package/docs/currency-field.json +40 -1
  30. package/docs/currency-field.md +5 -1
  31. package/docs/data-grid.examples.md +2 -2
  32. package/docs/data-grid.json +24 -7
  33. package/docs/data-grid.md +1 -1
  34. package/docs/data-grid.props.md +6 -4
  35. package/docs/data-list.json +2 -1
  36. package/docs/data-list.md +1 -1
  37. package/docs/date-field.json +9 -1
  38. package/docs/date-field.md +3 -2
  39. package/docs/date-picker.examples.md +36 -0
  40. package/docs/date-picker.json +20 -5
  41. package/docs/date-picker.md +5 -4
  42. package/docs/datetime-field.json +1 -0
  43. package/docs/datetime-field.md +1 -1
  44. package/docs/dialog.examples.md +158 -136
  45. package/docs/dialog.json +35 -11
  46. package/docs/dialog.md +4 -2
  47. package/docs/dialog.props.md +1 -1
  48. package/docs/drawer.json +5 -0
  49. package/docs/drawer.md +1 -0
  50. package/docs/entity-picker.json +19 -4
  51. package/docs/entity-picker.md +8 -6
  52. package/docs/event-calendar.json +7 -0
  53. package/docs/event-calendar.md +1 -0
  54. package/docs/filter-bar.json +118 -118
  55. package/docs/filter-bar.md +79 -79
  56. package/docs/form.json +2 -1
  57. package/docs/form.md +1 -1
  58. package/docs/guidelines/README.md +27 -0
  59. package/docs/guidelines/async-feedback.md +129 -0
  60. package/docs/guidelines/browsing.md +74 -0
  61. package/docs/guidelines/builders.md +97 -0
  62. package/docs/guidelines/composition.md +143 -0
  63. package/docs/guidelines/conversations.md +59 -0
  64. package/docs/guidelines/errors-and-conflicts.md +71 -0
  65. package/docs/guidelines/forms.md +202 -0
  66. package/docs/guidelines/index.md +129 -0
  67. package/docs/guidelines/layout-alignment.md +95 -0
  68. package/docs/guidelines/ledgers.md +45 -0
  69. package/docs/guidelines/list-pages.md +206 -0
  70. package/docs/guidelines/overviews.md +76 -0
  71. package/docs/guidelines/own-elements.md +115 -0
  72. package/docs/guidelines/reading-permissions.md +55 -0
  73. package/docs/guidelines/record-pages.md +178 -0
  74. package/docs/guidelines/reports.md +123 -0
  75. package/docs/guidelines/shell-composition.md +94 -0
  76. package/docs/guidelines/workspaces.md +46 -0
  77. package/docs/icon.json +3 -1
  78. package/docs/icon.md +3 -3
  79. package/docs/index.md +12 -0
  80. package/docs/inline-message.json +14 -2
  81. package/docs/inline-message.md +4 -3
  82. package/docs/list-item.json +9 -1
  83. package/docs/list-item.md +3 -3
  84. package/docs/list.json +19 -1
  85. package/docs/list.md +3 -1
  86. package/docs/markdown.json +79 -79
  87. package/docs/markdown.md +65 -65
  88. package/docs/menu.json +12 -0
  89. package/docs/menu.md +2 -0
  90. package/docs/message.json +7 -1
  91. package/docs/message.md +3 -3
  92. package/docs/multi-select.json +1 -0
  93. package/docs/multi-select.md +1 -1
  94. package/docs/notification-center.json +4 -0
  95. package/docs/notification-center.md +2 -2
  96. package/docs/number-field.json +1 -0
  97. package/docs/number-field.md +1 -1
  98. package/docs/otp-input.json +1 -0
  99. package/docs/otp-input.md +1 -1
  100. package/docs/page-header.json +4 -3
  101. package/docs/page-header.md +2 -2
  102. package/docs/page.json +1 -0
  103. package/docs/page.md +1 -0
  104. package/docs/popover.json +1 -1
  105. package/docs/progress-indicator.json +4 -3
  106. package/docs/progress-indicator.md +4 -4
  107. package/docs/prompt-composer.json +41 -1
  108. package/docs/prompt-composer.md +5 -1
  109. package/docs/rating.json +5 -3
  110. package/docs/rating.md +5 -5
  111. package/docs/section.json +27 -15
  112. package/docs/section.md +11 -9
  113. package/docs/segmented-control.json +36 -12
  114. package/docs/segmented-control.md +17 -1
  115. package/docs/select.json +1 -0
  116. package/docs/select.md +1 -1
  117. package/docs/side-navigation.json +1 -0
  118. package/docs/side-navigation.md +1 -1
  119. package/docs/skills/build-own-element/SKILL.md +90 -0
  120. package/docs/skills/compose-screen/SKILL.md +95 -0
  121. package/docs/skills/index.md +9 -0
  122. package/docs/skills/review-screen/SKILL.md +77 -0
  123. package/docs/skills/theme-app/SKILL.md +87 -0
  124. package/docs/skills/waiting-states/SKILL.md +143 -0
  125. package/docs/sparkline.json +5 -2
  126. package/docs/sparkline.md +4 -4
  127. package/docs/split-button.json +4 -1
  128. package/docs/split-button.md +3 -3
  129. package/docs/stat-card.json +5 -1
  130. package/docs/stat-card.md +3 -3
  131. package/docs/table.examples.md +3 -3
  132. package/docs/table.json +85 -3
  133. package/docs/table.md +12 -1
  134. package/docs/tabs.json +17 -7
  135. package/docs/tabs.md +3 -2
  136. package/docs/tag.json +14 -4
  137. package/docs/tag.md +6 -6
  138. package/docs/tags-input.json +29 -2
  139. package/docs/tags-input.md +4 -1
  140. package/docs/text-field.json +2 -1
  141. package/docs/text-field.md +2 -2
  142. package/docs/textarea.json +1 -0
  143. package/docs/textarea.md +1 -1
  144. package/docs/time-field.json +1 -0
  145. package/docs/time-field.md +1 -1
  146. package/docs/timeline.json +138 -132
  147. package/docs/timeline.md +125 -125
  148. package/docs/toast.json +7 -1
  149. package/docs/toast.md +3 -3
  150. package/docs/toggle-group.json +14 -3
  151. package/docs/toggle-group.md +3 -3
  152. package/docs/toggle.json +12 -3
  153. package/docs/toggle.md +3 -3
  154. package/docs/tokens.md +467 -0
  155. package/docs/tour.json +1 -1
  156. package/docs/typography.json +4 -2
  157. package/docs/typography.md +4 -4
  158. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  159. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-action-bar.mjs +22 -11
  161. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  163. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-alert.mjs +18 -11
  165. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  167. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  169. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  171. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  173. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  175. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-badge.mjs +14 -10
  177. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  179. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  181. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-button.mjs +90 -29
  183. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  185. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-card.mjs +18 -16
  187. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  189. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-cascader.mjs +166 -66
  191. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-chart.mjs +53 -20
  193. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  195. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  197. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  199. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  201. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  203. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  205. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-combobox.mjs +112 -39
  207. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  209. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-container.mjs +6 -4
  211. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  213. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  215. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  217. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-data-grid.mjs +354 -113
  219. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  221. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  223. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  225. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  227. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  229. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  231. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  233. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  235. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  237. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  239. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-divider.mjs +7 -5
  241. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-drawer.mjs +53 -29
  243. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
  245. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  247. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  249. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-field.mjs +35 -15
  251. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
  253. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-form.mjs +18 -10
  255. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  257. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-grid.mjs +4 -2
  259. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  261. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  263. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-icon.mjs +6 -3
  265. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-image.mjs +13 -10
  267. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  269. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  271. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-inline.mjs +4 -2
  273. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  275. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-link.mjs +5 -3
  277. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  279. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-list.mjs +37 -22
  281. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  283. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  285. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  287. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-menu.mjs +51 -29
  289. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  291. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  293. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-message.mjs +113 -51
  295. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-multi-select.mjs +189 -87
  297. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  299. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  301. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  303. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  305. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-page-header.mjs +75 -45
  307. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-page.mjs +38 -10
  309. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  311. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-popover.mjs +32 -19
  313. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  315. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
  317. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-prose.mjs +14 -11
  319. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  321. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-rating.mjs +138 -82
  323. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  325. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  327. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  329. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-section.mjs +53 -18
  331. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  333. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-select.mjs +184 -94
  335. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  337. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  339. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-slider.mjs +31 -11
  341. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  343. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  345. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  347. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-stack.mjs +4 -2
  349. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  351. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  353. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  355. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-switch.mjs +15 -10
  357. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  359. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-table.mjs +243 -73
  361. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  363. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-tag.mjs +19 -12
  365. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  367. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  369. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  371. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  373. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  375. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  377. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  379. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-toast.mjs +43 -31
  381. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  383. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  385. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-toolbar.mjs +22 -11
  387. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  389. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  391. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-tour.mjs +47 -22
  393. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  395. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tree.mjs +74 -26
  397. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-typography.mjs +8 -4
  399. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-upload.mjs +125 -57
  401. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  403. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  405. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  406. package/package.json +3 -3
  407. package/types/slotted-angular-accordion.d.ts.map +1 -1
  408. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  409. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  410. package/types/slotted-angular-alert.d.ts +2 -2
  411. package/types/slotted-angular-alert.d.ts.map +1 -1
  412. package/types/slotted-angular-app-shell.d.ts +11 -3
  413. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  414. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  415. package/types/slotted-angular-attachment.d.ts +1 -1
  416. package/types/slotted-angular-attachment.d.ts.map +1 -1
  417. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  418. package/types/slotted-angular-avatar.d.ts +11 -3
  419. package/types/slotted-angular-avatar.d.ts.map +1 -1
  420. package/types/slotted-angular-badge.d.ts +1 -1
  421. package/types/slotted-angular-badge.d.ts.map +1 -1
  422. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  423. package/types/slotted-angular-button-group.d.ts +1 -1
  424. package/types/slotted-angular-button-group.d.ts.map +1 -1
  425. package/types/slotted-angular-button.d.ts +33 -13
  426. package/types/slotted-angular-button.d.ts.map +1 -1
  427. package/types/slotted-angular-calendar.d.ts +30 -2
  428. package/types/slotted-angular-calendar.d.ts.map +1 -1
  429. package/types/slotted-angular-card.d.ts.map +1 -1
  430. package/types/slotted-angular-carousel.d.ts.map +1 -1
  431. package/types/slotted-angular-cascader.d.ts.map +1 -1
  432. package/types/slotted-angular-chart.d.ts +10 -0
  433. package/types/slotted-angular-chart.d.ts.map +1 -1
  434. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  435. package/types/slotted-angular-checkbox.d.ts +7 -1
  436. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  437. package/types/slotted-angular-code-block.d.ts +1 -1
  438. package/types/slotted-angular-code-block.d.ts.map +1 -1
  439. package/types/slotted-angular-collapsible.d.ts +1 -1
  440. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  441. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  442. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  443. package/types/slotted-angular-combobox.d.ts +5 -1
  444. package/types/slotted-angular-combobox.d.ts.map +1 -1
  445. package/types/slotted-angular-command-palette.d.ts +10 -1
  446. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  447. package/types/slotted-angular-container.d.ts.map +1 -1
  448. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  449. package/types/slotted-angular-currency-field.d.ts +63 -15
  450. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  451. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  452. package/types/slotted-angular-data-grid.d.ts +49 -4
  453. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  454. package/types/slotted-angular-data-list.d.ts.map +1 -1
  455. package/types/slotted-angular-date-field.d.ts +11 -1
  456. package/types/slotted-angular-date-field.d.ts.map +1 -1
  457. package/types/slotted-angular-date-picker.d.ts +38 -12
  458. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  459. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  460. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  461. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  462. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  463. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  464. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  465. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  466. package/types/slotted-angular-description-list.d.ts.map +1 -1
  467. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  468. package/types/slotted-angular-dialog.d.ts +10 -3
  469. package/types/slotted-angular-dialog.d.ts.map +1 -1
  470. package/types/slotted-angular-divider.d.ts.map +1 -1
  471. package/types/slotted-angular-drawer.d.ts +7 -1
  472. package/types/slotted-angular-drawer.d.ts.map +1 -1
  473. package/types/slotted-angular-entity-picker.d.ts +63 -15
  474. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-event-calendar.d.ts +9 -2
  476. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  477. package/types/slotted-angular-field-group.d.ts.map +1 -1
  478. package/types/slotted-angular-field.d.ts.map +1 -1
  479. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  480. package/types/slotted-angular-form.d.ts.map +1 -1
  481. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  482. package/types/slotted-angular-grid.d.ts.map +1 -1
  483. package/types/slotted-angular-highlight.d.ts.map +1 -1
  484. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  485. package/types/slotted-angular-icon.d.ts +2 -2
  486. package/types/slotted-angular-icon.d.ts.map +1 -1
  487. package/types/slotted-angular-image.d.ts.map +1 -1
  488. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  489. package/types/slotted-angular-inline-message.d.ts +25 -25
  490. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  491. package/types/slotted-angular-inline.d.ts.map +1 -1
  492. package/types/slotted-angular-kbd.d.ts.map +1 -1
  493. package/types/slotted-angular-link.d.ts.map +1 -1
  494. package/types/slotted-angular-list-item.d.ts +1 -1
  495. package/types/slotted-angular-list-item.d.ts.map +1 -1
  496. package/types/slotted-angular-list.d.ts +42 -27
  497. package/types/slotted-angular-list.d.ts.map +1 -1
  498. package/types/slotted-angular-listbox.d.ts.map +1 -1
  499. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  500. package/types/slotted-angular-markdown.d.ts.map +1 -1
  501. package/types/slotted-angular-menu.d.ts +11 -2
  502. package/types/slotted-angular-menu.d.ts.map +1 -1
  503. package/types/slotted-angular-menubar.d.ts.map +1 -1
  504. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  505. package/types/slotted-angular-message.d.ts +1 -1
  506. package/types/slotted-angular-message.d.ts.map +1 -1
  507. package/types/slotted-angular-multi-select.d.ts +15 -1
  508. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  509. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  510. package/types/slotted-angular-notification-center.d.ts +1 -1
  511. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  512. package/types/slotted-angular-number-field.d.ts.map +1 -1
  513. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  514. package/types/slotted-angular-page-header.d.ts +4 -4
  515. package/types/slotted-angular-page-header.d.ts.map +1 -1
  516. package/types/slotted-angular-page.d.ts.map +1 -1
  517. package/types/slotted-angular-pagination.d.ts.map +1 -1
  518. package/types/slotted-angular-popover.d.ts.map +1 -1
  519. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  520. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  521. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  522. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  523. package/types/slotted-angular-prose.d.ts.map +1 -1
  524. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  525. package/types/slotted-angular-rating.d.ts +1 -1
  526. package/types/slotted-angular-rating.d.ts.map +1 -1
  527. package/types/slotted-angular-result-state.d.ts.map +1 -1
  528. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  529. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  530. package/types/slotted-angular-section.d.ts +11 -3
  531. package/types/slotted-angular-section.d.ts.map +1 -1
  532. package/types/slotted-angular-segmented-control.d.ts +15 -2
  533. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  534. package/types/slotted-angular-select.d.ts +12 -2
  535. package/types/slotted-angular-select.d.ts.map +1 -1
  536. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  537. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  538. package/types/slotted-angular-slider.d.ts.map +1 -1
  539. package/types/slotted-angular-sparkline.d.ts +7 -1
  540. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  541. package/types/slotted-angular-split-button.d.ts +2 -2
  542. package/types/slotted-angular-split-button.d.ts.map +1 -1
  543. package/types/slotted-angular-splitter.d.ts.map +1 -1
  544. package/types/slotted-angular-stack.d.ts.map +1 -1
  545. package/types/slotted-angular-stat-card.d.ts +1 -1
  546. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  547. package/types/slotted-angular-status-indicator.d.ts +1 -1
  548. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  549. package/types/slotted-angular-stepper.d.ts +1 -1
  550. package/types/slotted-angular-stepper.d.ts.map +1 -1
  551. package/types/slotted-angular-switch.d.ts.map +1 -1
  552. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  553. package/types/slotted-angular-table.d.ts +63 -6
  554. package/types/slotted-angular-table.d.ts.map +1 -1
  555. package/types/slotted-angular-tabs.d.ts +3 -4
  556. package/types/slotted-angular-tabs.d.ts.map +1 -1
  557. package/types/slotted-angular-tag.d.ts +1 -1
  558. package/types/slotted-angular-tag.d.ts.map +1 -1
  559. package/types/slotted-angular-tags-input.d.ts +33 -1
  560. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  561. package/types/slotted-angular-text-field.d.ts.map +1 -1
  562. package/types/slotted-angular-textarea.d.ts.map +1 -1
  563. package/types/slotted-angular-theme.d.ts +1 -1
  564. package/types/slotted-angular-time-field.d.ts.map +1 -1
  565. package/types/slotted-angular-time-picker.d.ts +0 -1
  566. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  567. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  568. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  569. package/types/slotted-angular-timeline.d.ts +1 -1
  570. package/types/slotted-angular-timeline.d.ts.map +1 -1
  571. package/types/slotted-angular-toast.d.ts +3 -3
  572. package/types/slotted-angular-toast.d.ts.map +1 -1
  573. package/types/slotted-angular-toggle-group.d.ts +8 -2
  574. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  575. package/types/slotted-angular-toggle.d.ts +1 -1
  576. package/types/slotted-angular-toggle.d.ts.map +1 -1
  577. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  578. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  579. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  580. package/types/slotted-angular-tour.d.ts.map +1 -1
  581. package/types/slotted-angular-transfer.d.ts.map +1 -1
  582. package/types/slotted-angular-tree.d.ts.map +1 -1
  583. package/types/slotted-angular-typography.d.ts +1 -1
  584. package/types/slotted-angular-typography.d.ts.map +1 -1
  585. package/types/slotted-angular-upload.d.ts +2 -2
  586. package/types/slotted-angular-upload.d.ts.map +1 -1
  587. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  588. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-field.mjs","sources":["../../field/src/field-defaults.ts","../../field/src/field-counter.ts","../../field/src/field-messages.ts","../../field/src/field.ts","../../field/src/field-parts.ts","../../field/src/field-header.ts","../../field/src/slotted-angular-field.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport type { FamilyTranslator, FieldMessages } from '@slotted/core/i18n';\n\n/** The type step the field sits at, matching the control it wraps. */\nexport type FieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * Where the label sits relative to the control. `side` reflows to `top` when\n * the field's own inline size falls below 320 pixels, so a field in a drawer\n * stacks while the same field in a page grid stays beside its control.\n */\nexport type FieldLabelPlacement = 'top' | 'side';\n\n/**\n * How necessity is said. `mark` draws the asterisk every surveyed\n * implementation draws on a required field; `optional` writes `(optional)` on\n * the fields a reader may skip and nothing on the others, which is what GOV.UK\n * and Carbon recommend for a form where most fields are required; `words`\n * writes `(required)` on a required field and `(optional)` on one that is not;\n * `none` says nothing, for a form where every field is required and the form\n * says so once.\n */\nexport type FieldNecessity = 'mark' | 'optional' | 'words' | 'none';\n\n/** The identifiers a field derives from one base. */\nexport interface FieldIds {\n control: string;\n counter: string;\n description: string;\n error: string;\n help: string;\n indicator: string;\n label: string;\n}\n\n/**\n * The parts that join the control's `aria-describedby`, in the order the\n * contract reads them: what qualifies the field, the help behind the icon, the\n * description, the count, the error.\n */\nexport type FieldDescribedSlot = 'indicator' | 'help' | 'description' | 'counter' | 'error';\n\nexport const FIELD_DESCRIBED_ORDER: readonly FieldDescribedSlot[] = [\n 'indicator',\n 'help',\n 'description',\n 'counter',\n 'error',\n];\n\nexport interface FieldDefaults {\n disabled: boolean | undefined;\n labelPlacement: FieldLabelPlacement;\n necessity: FieldNecessity;\n readOnly: boolean | undefined;\n size: FieldSize;\n}\n\nconst FALLBACK: FieldDefaults = {\n disabled: undefined,\n labelPlacement: 'top',\n necessity: 'mark',\n readOnly: undefined,\n size: 'md',\n};\n\nexport const FIELD_DEFAULTS = new InjectionToken<FieldDefaults>('slotted field defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once what its fields look like, rather than repeating\n * the same inputs on every field in a form. Their words come from the language\n * in force (`provideSlotted`).\n * `SlFieldGroup` provides an overriding value for its own subtree, so a compact\n * section — or a disabled one — is one attribute rather than one per field.\n *\n * Among the surveyed implementations only Angular Material ships\n * application-wide defaults, and this is that idea taken to both bindings.\n *\n * `disabled` and `readOnly` are here and `invalid` and `required` are not. The\n * first two describe a context a whole section can be in; the second two are\n * facts about one value, and a token that set them would mark every field in an\n * application as required for a reason no field could name.\n */\nexport function provideFieldDefaults(defaults: Partial<FieldDefaults>) {\n return {\n provide: FIELD_DEFAULTS,\n useFactory: (): FieldDefaults => ({\n disabled: defaults.disabled ?? FALLBACK.disabled,\n labelPlacement: defaults.labelPlacement ?? FALLBACK.labelPlacement,\n necessity: defaults.necessity ?? FALLBACK.necessity,\n readOnly: defaults.readOnly ?? FALLBACK.readOnly,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a field renders as here, before it states anything of its own. */\nexport function injectFieldDefaults(): FieldDefaults {\n return inject(FIELD_DEFAULTS);\n}\n\n/**\n * A component in the tree answering for the fields under it, which is what\n * `field-group` is. It exists as a class of its own so `@slotted/angular/field`\n * never has to know that `field-group` exists — the dependency runs one way,\n * from the group to the field.\n *\n * It is read rather than snapshotted, because Angular creates every directive\n * in a template before it binds any input: a group that handed its fields a\n * value in its constructor would hand them the value its inputs had before the\n * consumer's bindings ran, which is the default for all six.\n */\nexport abstract class SlFieldDefaultsSource {\n abstract fieldDefaults(): FieldDefaults;\n}\n\n/** The identifiers a field derives from its base, in one place. */\nexport function deriveFieldIds(base: string): FieldIds {\n return {\n control: `${base}-control`,\n counter: `${base}-counter`,\n description: `${base}-description`,\n error: `${base}-error`,\n help: `${base}-help`,\n indicator: `${base}-indicator`,\n label: `${base}-label`,\n };\n}\n\n/**\n * What the necessity mark says, and whether a reader hears it. The asterisk is\n * hidden, because `aria-required` on the control already carries the fact and a\n * form of twenty required fields does not need \"asterisk\" twenty times; the\n * words are not, because `(optional)` is information rather than decoration.\n * `null` when nothing is drawn. `slFieldGroupLegend` draws its mark with the\n * same answer.\n */\nexport function necessityMark(\n necessity: FieldNecessity,\n required: boolean,\n t: FamilyTranslator<FieldMessages>,\n): { hidden: boolean; text: string } | null {\n switch (necessity) {\n case 'mark':\n return required ? { hidden: true, text: '*' } : null;\n case 'optional':\n return required ? null : { hidden: false, text: t('optional') };\n case 'words':\n return { hidden: false, text: t(required ? 'required' : 'optional') };\n case 'none':\n return null;\n }\n}\n\n/**\n * The field as the parts that live in a module `field.ts` imports see it — the\n * counter today. Provided by `SlField` as itself, so the counter reaches the\n * field's identifiers without importing it, which would be a cycle.\n */\nexport abstract class SlFieldContext {\n abstract ids(): FieldIds;\n}\n\n/**\n * The parts the field looks for without importing them. Each part provides\n * its marker as itself, and the field queries the marker; importing the part\n * classes into `field.ts` would be a cycle, since every one of them injects\n * `SlField`.\n */\nexport abstract class SlFieldHeaderSlot {}\nexport abstract class SlFieldHelpSlot {}\nexport abstract class SlFieldIndicatorSlot {}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `inline-message`\n * records: a module-level counter produces colliding sequences when two\n * applications render in one server process, and the server and the client\n * sequences must match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlFieldIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-field-${this.count}`;\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n HostAttributeToken,\n inject,\n input,\n} from '@angular/core';\n\nimport { SlFieldContext } from './field-defaults';\n\n/**\n * What a control tells the field about its own value, so the field can draw the\n * count in the spare column of its label row. The control counts and the field\n * places it: the number belongs to the value, and the row belongs to the field.\n *\n * `length` is in UTF-16 code units, which is what `maxLength` counts, so an\n * emoji counts as two. A counter that disagreed with the limit the browser\n * enforces would be wrong at exactly the moment it is read.\n */\nexport interface FieldCount {\n length: number;\n max: number | undefined;\n}\n\n/**\n * How a count reads: `12/280` when there is a limit and `12` when there is\n * none. Carbon and Polaris both write the pair; Angular Material writes it in\n * the subscript, where a count that appears on the first keystroke shares a row\n * with the error and pushes it.\n */\nexport function formatFieldCount(count: FieldCount): string {\n return count.max === undefined ? String(count.length) : `${count.length}/${count.max}`;\n}\n\n/** Whether a count has passed the limit it was given. */\nexport function isFieldCountOver(count: FieldCount): boolean {\n return count.max !== undefined && count.length > count.max;\n}\n\n/**\n * A count the page writes itself, at the end of the label row — which is where\n * Carbon puts it. Angular Material puts it in the subscript beside the error,\n * where a count that appears on the first keystroke shares a row with the\n * message and pushes it.\n *\n * A field whose control publishes a count gets a counter drawn by the field, so\n * this directive is for the page that counts something the control cannot:\n * words, bytes, line items. Writing one withdraws the field's own, because two\n * counters in one row is one row too many.\n *\n * It lives in a module of its own so `field.ts` can look for it without\n * importing the parts that inject `SlField`, which would be a cycle; it reaches\n * the field through `SlFieldContext` for the same reason.\n */\n@Directive({\n selector: '[slFieldCounter]',\n standalone: true,\n exportAs: 'slFieldCounter',\n host: {\n 'data-part': 'counter',\n '[attr.id]': 'counterId()',\n '[attr.data-invalid]': \"invalid() ? '' : null\",\n },\n})\nexport class SlFieldCounter {\n private readonly field = inject(SlFieldContext, { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n /**\n * The identifier the field's description reads the count by, which\n * `docs/component-features.md` §2.8 requires of a counter. A consumer's own\n * `id` wins.\n */\n protected readonly counterId = computed(\n () => this.writtenId ?? this.field?.ids().counter ?? null,\n );\n\n /**\n * The count has passed its limit. It is the counter's own state rather than\n * the field's: a count can pass its maximum while validation has not run, and\n * a counter that only turned at submit would say nothing at the moment it is\n * being read.\n */\n readonly invalid = input(false, { transform: booleanAttribute });\n}\n","import {\n afterNextRender,\n type AfterContentChecked,\n booleanAttribute,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport type {\n InlineMessageLive,\n InlineMessageMark,\n InlineMessageTone,\n} from '@slotted/angular/inline-message';\n\n/**\n * What the page wants said, and how — carried by the element the page writes\n * and read by the field, which renders the `inline-message` around it.\n *\n * The field renders the message rather than the page, because `SlInlineMessage`\n * takes its values as `input()` signals and nothing outside the template that\n * instantiates it can write one. A directive sharing the element could only set\n * attributes the component's own host bindings would then overwrite, and the\n * identifier the field derives is exactly such a value.\n */\n@Directive()\nexport abstract class SlFieldMessage implements AfterContentChecked {\n /** Replaces the message's own tone. `inline-message` owns the five. */\n readonly tone = input<InlineMessageTone | undefined>(undefined);\n /** Whether the message announces itself when it arrives. */\n readonly live = input<InlineMessageLive | undefined>(undefined);\n /**\n * Which mark the message draws. A field's messages default to `none`, and\n * `glyph` asks for the tone's own silhouette, `dot` for one neutral bullet.\n */\n readonly mark = input<InlineMessageMark | undefined>(undefined);\n /** The word read before the message; the empty string removes it. */\n readonly prefix = input<string | undefined>(undefined);\n /** Draws no mark, for a message that carries its own artwork. */\n readonly hideIcon = input(false, { transform: booleanAttribute });\n /** Holds one line box open so nothing below moves when the message arrives. */\n readonly reserve = input(false, { transform: booleanAttribute });\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly content = signal(false);\n\n /**\n * Whether the message has text to say. An empty one — a `reserve` line\n * waiting for its text — keeps its box and describes nothing, which is what\n * React's messages register.\n *\n * It is read after the template that declares the message writes its text\n * and before the host bindings of that template run, so the first render,\n * the only one a server performs, names exactly the messages that have text.\n * In the browser an observer also reports text that arrives from anywhere\n * else.\n */\n readonly hasContent = this.content.asReadonly();\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n afterNextRender(() => {\n const observer = new MutationObserver(() => this.read());\n observer.observe(this.host, { characterData: true, childList: true, subtree: true });\n destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n ngAfterContentChecked() {\n this.read();\n }\n\n private read() {\n this.content.set((this.host.textContent ?? '').trim() !== '');\n }\n}\n\n/**\n * Help about the field, projected into the `inline-message` the field renders.\n *\n * It arrives with a tone, a mark, a clipped severity word an application\n * translates once and a reserved line — none of which the field reimplements.\n * `docs/process/build-order.md` states that as the reason `inline-message` was built\n * in wave 2.\n */\n@Directive({\n selector: '[slFieldDescription]',\n standalone: true,\n exportAs: 'slFieldDescription',\n})\nexport class SlFieldDescription extends SlFieldMessage {}\n\n/**\n * What is wrong with the value, in words — which is what WCAG 2.2 SC 3.3.1\n * requires and what colour and a mark alone do not satisfy.\n *\n * `tone` accepts the other four, so a warning that does not block submission is\n * the same part in another tone rather than a member of its own. Fluent spends\n * a `validationState` axis on that distinction and Carbon a second component.\n */\n@Directive({\n selector: '[slFieldError]',\n standalone: true,\n exportAs: 'slFieldError',\n})\nexport class SlFieldError extends SlFieldMessage {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlInlineMessage } from '@slotted/angular/inline-message';\nimport { fieldMessages, type FieldMessages, type PartialMessages } from '@slotted/core/i18n';\n\nimport {\n deriveFieldIds,\n FIELD_DESCRIBED_ORDER,\n injectFieldDefaults,\n SlFieldContext,\n SlFieldDefaultsSource,\n SlFieldHeaderSlot,\n SlFieldHelpSlot,\n SlFieldIdFactory,\n SlFieldIndicatorSlot,\n} from './field-defaults';\nimport type { FieldLabelPlacement, FieldNecessity, FieldSize } from './field-defaults';\nimport { formatFieldCount, isFieldCountOver, SlFieldCounter } from './field-counter';\nimport type { FieldCount } from './field-counter';\nimport { SlFieldDescription, SlFieldError } from './field-messages';\n\nexport type { FieldCount } from './field-counter';\nexport type { FieldIds, FieldLabelPlacement, FieldNecessity, FieldSize } from './field-defaults';\n\n/**\n * One control, its name, its necessity, its help and its error — and the\n * identifiers that bind the four together.\n *\n * **Every shared state is unset rather than `false`.** `disabled`, `invalid`,\n * `required` and `readOnly` default to `undefined`, so a field defers to the\n * `slFieldGroup` around it and the group to the application. A field that\n * defaulted to `false` could not be told from a consumer saying \"not disabled\",\n * and it would quietly override a disabled section.\n *\n * **The identifiers are derived, not registered.** One base yields four, so\n * `label[for]` resolves to the identifier the control will use with no ordering\n * dependency between siblings and nothing to coordinate during hydration.\n *\n * **The field renders its own messages.** The page writes what it wants said —\n * `<span slFieldError>` — and the field puts it inside an `inline-message` it\n * renders itself, with the identifier, the step and the disabled state already\n * resolved. `SlInlineMessage` takes its values as `input()` signals, and nothing\n * outside the template that instantiates it can write one; a directive sharing\n * the element could only set attributes its host bindings would overwrite. A\n * message the page did not write is not drawn, which is the DOM React's\n * `FieldDescription` and `FieldError` produce.\n */\n@Component({\n selector: '[slField]',\n standalone: true,\n exportAs: 'slField',\n imports: [SlInlineMessage],\n template: `<ng-content select=\"[slFieldLabel], [slFieldHeader]\" />\n <ng-content select=\"[slFieldCounter]\" />\n @if (drawnCount(); as count) {\n <span\n data-part=\"counter\"\n [id]=\"ids().counter\"\n [attr.data-invalid]=\"countOver() ? '' : null\"\n >{{ formatCount(count) }}</span\n >\n }\n <ng-content />\n @if (description(); as message) {\n <p\n slInlineMessage\n [id]=\"ids().description\"\n [size]=\"messageSize()\"\n [disabled]=\"resolvedDisabled()\"\n [mark]=\"message.mark() ?? 'none'\"\n [tone]=\"message.tone() ?? 'secondary'\"\n [live]=\"message.live() ?? 'off'\"\n [hideIcon]=\"message.hideIcon() ?? false\"\n [reserve]=\"message.reserve() ?? false\"\n [prefix]=\"message.prefix()\"\n >\n <ng-content select=\"[slFieldDescription]\" />\n </p>\n }\n @if (error(); as message) {\n <p\n slInlineMessage\n [id]=\"ids().error\"\n [size]=\"messageSize()\"\n [disabled]=\"resolvedDisabled()\"\n [mark]=\"message.mark() ?? 'none'\"\n [tone]=\"message.tone() ?? 'danger'\"\n [live]=\"message.live() ?? 'off'\"\n [hideIcon]=\"message.hideIcon() ?? false\"\n [reserve]=\"message.reserve() ?? false\"\n [prefix]=\"message.prefix()\"\n >\n <ng-content select=\"[slFieldError]\" />\n </p>\n }`,\n styleUrl: '../../../styles/src/field/field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SlFieldContext, useExisting: forwardRef(() => SlField) }],\n host: {\n 'data-ui': 'field',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-label-placement]': 'resolvedLabelPlacement()',\n '[attr.data-necessity]': 'resolvedNecessity()',\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"invalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"required() === true ? '' : null\",\n },\n})\nexport class SlField {\n /** Defaults to the token, then to `md`. */\n readonly size = input<FieldSize | undefined>(undefined);\n /** Defaults to the token, then to `top`. */\n readonly labelPlacement = input<FieldLabelPlacement | undefined>(undefined);\n /** Defaults to the token, then to `mark`. */\n readonly necessity = input<FieldNecessity | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * necessity words (`optional`, `required`) and the help control's name (`help`).\n */\n readonly messages = input<PartialMessages<FieldMessages> | undefined>(undefined);\n\n /**\n * Unstated rather than `false`, so the field defers to its group and the group\n * to the application. Stated, it wins, and it reaches the control as the\n * native attribute: removing it from the tab order and from submission is what\n * the word means.\n */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`. Reaches the control as `aria-invalid`. */\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Unstated rather than `false`. Reaches the control as `aria-required` and\n * never as the native `required`, which would engage browser constraint\n * validation and change submit behaviour.\n */\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`. Reaches the control as the native `readonly`. */\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /**\n * What the control inside published about its value. A control this library\n * ships calls `setCount`; the field draws the counter in the spare column of\n * its label row — the header draws it at its own end when there is one — and\n * only when the page wrote none of its own.\n */\n private readonly countState = signal<FieldCount | undefined>(undefined);\n /** The counter the page wrote, anywhere in the field. */\n readonly writtenCounter = contentChild(SlFieldCounter, { descendants: true });\n protected readonly header = contentChild(SlFieldHeaderSlot);\n protected readonly help = contentChild(SlFieldHelpSlot, { descendants: true });\n protected readonly indicator = contentChild(SlFieldIndicatorSlot, { descendants: true });\n protected readonly drawnCount = computed(() =>\n this.writtenCounter() === undefined && this.header() === undefined\n ? this.countState()\n : undefined,\n );\n protected readonly countOver = computed(() => {\n const count = this.drawnCount();\n return count !== undefined && isFieldCountOver(count);\n });\n protected readonly formatCount = formatFieldCount;\n\n /** The count a control this library ships publishes, whenever its value changes. */\n setCount(count: FieldCount | undefined) {\n this.countState.set(count);\n }\n\n /** What the control published, for a page that draws the counter itself. */\n readonly count = this.countState.asReadonly();\n\n private readonly token = injectFieldDefaults();\n /**\n * The group around this field, if there is one. It answers before the\n * application's own token, and it is read on every change rather than\n * captured, because Angular binds a component's inputs after it has created\n * the directives its template declares.\n */\n private readonly source = inject(SlFieldDefaultsSource, { optional: true });\n private readonly defaults = computed(() => this.source?.fieldDefaults() ?? this.token);\n\n /**\n * The base every identifier is derived from. A consumer's own `id` is the\n * base and stays on the element; the generated one is not written anywhere,\n * because the field is addressable through its parts rather than as a box.\n */\n private readonly base =\n inject(new HostAttributeToken('id'), { optional: true }) ?? inject(SlFieldIdFactory).next();\n\n readonly ids = computed(() => deriveFieldIds(this.base));\n\n /**\n * Direct content rather than any descendant: a field nested inside another\n * field's control — a composed control, a fieldset of its own — must not have\n * its message read as this field's.\n */\n protected readonly description = contentChild(SlFieldDescription, { descendants: false });\n protected readonly error = contentChild(SlFieldError, { descendants: false });\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults().size);\n readonly resolvedLabelPlacement = computed(\n () => this.labelPlacement() ?? this.defaults().labelPlacement,\n );\n readonly resolvedNecessity = computed(() => this.necessity() ?? this.defaults().necessity);\n readonly resolvedDisabled = computed(() => this.disabled() ?? this.defaults().disabled);\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.defaults().readOnly);\n /** The field's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(fieldMessages, this.messages);\n\n /**\n * A message is quieter than the control it is about, so it starts one step\n * below and only the largest field's message reaches the second step.\n */\n protected readonly messageSize = computed<'sm' | 'md'>(() =>\n this.resolvedSize() === 'lg' ? 'md' : 'sm',\n );\n\n /**\n * The contract's order, and only the parts with something to say: the\n * indicator, the help, the description, the count, the error. Known slots\n * have one correct reading order, so it is stated rather than read from the\n * DOM. The count is there whenever one is drawn — the page's, or the one the\n * field or its header draws from what the control published.\n */\n readonly describedBy = computed(() => {\n const present = {\n counter: this.writtenCounter() !== undefined || this.countState() !== undefined,\n description: this.description()?.hasContent() === true,\n error: this.error()?.hasContent() === true,\n help: this.help() !== undefined,\n indicator: this.indicator() !== undefined,\n };\n const ids = this.ids();\n const parts = FIELD_DESCRIBED_ORDER.filter((slot) => present[slot]).map((slot) => ids[slot]);\n return parts.length === 0 ? null : parts.join(' ');\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlField } from './field';\nimport { necessityMark } from './field-defaults';\n\n/**\n * Names the control, and says whether it has to be answered.\n *\n * The association is explicit — `for` pointing at the control's identifier —\n * because the APG's naming practice records that some combinations of assistive\n * technology and browser fail to treat the implicit form, wrapping the control\n * in the label, as having an accessible name at all.\n *\n * The necessity marker is drawn here rather than written by the page. The glyph\n * is `aria-hidden`, because `aria-required` on the control already carries the\n * semantics and a reader working a form of twenty required fields does not need\n * to hear \"asterisk\" twenty times; the two word forms are not hidden, because\n * `(optional)` is information rather than decoration.\n */\n@Component({\n selector: 'label[slFieldLabel]',\n standalone: true,\n exportAs: 'slFieldLabel',\n template: `<ng-content />\n @if (mark(); as text) {\n <span data-part=\"mark\" [attr.aria-hidden]=\"markHidden() ? 'true' : null\">{{ text }}</span>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'label',\n '[attr.for]': 'labelFor()',\n '[attr.id]': 'labelId()',\n },\n})\nexport class SlFieldLabel {\n private readonly field = inject(SlField);\n private readonly writtenFor = inject(new HostAttributeToken('for'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly labelFor = computed(() => this.writtenFor ?? this.field.ids().control);\n protected readonly labelId = computed(() => this.writtenId ?? this.field.ids().label);\n\n private readonly necessity = computed(() =>\n necessityMark(this.field.resolvedNecessity(), this.field.required() === true, this.field.t),\n );\n protected readonly markHidden = computed(() => this.necessity()?.hidden === true);\n protected readonly mark = computed(() => this.necessity()?.text ?? null);\n}\n\n/**\n * Applies the field's wiring to a control the library does not own.\n *\n * Controls this library ships read the field themselves and need no directive,\n * which is what\n * `docs/history/designs/2026-08-31-field-aware-controls-design.md` decides.\n * This exists for the two cases that cannot: a plain native element, and a\n * component written before this library.\n *\n * Every value the consumer wrote wins. A host binding beats a static attribute\n * in Angular, so each written value is read before the binding is computed\n * rather than after — the asymmetry with React, where a consumer's prop simply\n * spreads over the family's.\n */\n@Directive({\n selector: '[slFieldControl]',\n standalone: true,\n exportAs: 'slFieldControl',\n host: {\n 'data-part': 'control',\n '[attr.id]': 'controlId()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'ariaInvalid()',\n '[attr.aria-required]': 'ariaRequired()',\n '[attr.disabled]': 'disabledAttribute()',\n '[attr.readonly]': 'readonlyAttribute()',\n },\n})\nexport class SlFieldControl {\n private readonly field = inject(SlField);\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {\n optional: true,\n });\n private readonly writtenRequired = inject(new HostAttributeToken('aria-required'), {\n optional: true,\n });\n private readonly writtenDisabled = inject(new HostAttributeToken('disabled'), { optional: true });\n private readonly writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });\n\n protected readonly controlId = computed(() => this.writtenId ?? this.field.ids().control);\n\n /** Merged after the consumer's own, so a tour step is read before the help. */\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n\n protected readonly ariaInvalid = computed(\n () => this.writtenInvalid ?? (this.field.invalid() === true ? 'true' : null),\n );\n protected readonly ariaRequired = computed(\n () => this.writtenRequired ?? (this.field.required() === true ? 'true' : null),\n );\n protected readonly disabledAttribute = computed(\n () => this.writtenDisabled ?? (this.field.resolvedDisabled() === true ? '' : null),\n );\n protected readonly readonlyAttribute = computed(\n () => this.writtenReadonly ?? (this.field.resolvedReadOnly() === true ? '' : null),\n );\n}\n\n/**\n * A link or a button at the end of the label row — `Forgot password?`,\n * `Generate` — written on the consumer's own `a` or `button`. On a `button` the\n * directive writes `type=\"button\"` unless the page wrote a type, so it never\n * submits the form it sits in; on a link it writes nothing. The field does not\n * disable it with the control: what it does is the page's.\n */\n@Directive({\n selector: '[slFieldAction]',\n standalone: true,\n exportAs: 'slFieldAction',\n host: {\n 'data-part': 'action',\n '[attr.type]': 'type',\n },\n})\nexport class SlFieldAction {\n private readonly writtenType = inject(new HostAttributeToken('type'), { optional: true });\n protected readonly type =\n this.writtenType ??\n (inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.tagName === 'BUTTON'\n ? 'button'\n : null);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n provideTooltipDefaults,\n SlTooltip,\n SlTooltipArrow,\n SlTooltipContent,\n SlTooltipLayer,\n SlTooltipTrigger,\n} from '@slotted/angular/tooltip';\nimport { fieldMessages } from '@slotted/core/i18n';\n\nimport { SlField } from './field';\nimport { formatFieldCount, isFieldCountOver } from './field-counter';\nimport {\n SlFieldHeaderSlot,\n SlFieldHelpSlot,\n SlFieldIdFactory,\n SlFieldIndicatorSlot,\n} from './field-defaults';\n\n/**\n * The label row, when the label has company: the help, an indicator, an action\n * and the counter beside it. ReUI writes the same row by hand in four of its\n * examples; here it is a part, so its alignment, its gap and its place in a\n * side layout are the family's.\n *\n * It draws the count the control published at its own end when the page wrote\n * no counter, which is where a field without a header puts it too.\n */\n@Component({\n selector: '[slFieldHeader]',\n standalone: true,\n exportAs: 'slFieldHeader',\n template: `<ng-content />\n @if (drawnCount(); as count) {\n <span\n data-part=\"counter\"\n [id]=\"field.ids().counter\"\n [attr.data-invalid]=\"countOver() ? '' : null\"\n >{{ formatCount(count) }}</span\n >\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SlFieldHeaderSlot, useExisting: forwardRef(() => SlFieldHeader) }],\n host: { 'data-part': 'header' },\n})\nexport class SlFieldHeader {\n protected readonly field = inject(SlField);\n\n protected readonly drawnCount = computed(() =>\n this.field.writtenCounter() === undefined ? this.field.count() : undefined,\n );\n protected readonly countOver = computed(() => {\n const count = this.drawnCount();\n return count !== undefined && isFieldCountOver(count);\n });\n protected readonly formatCount = formatFieldCount;\n}\n\n/**\n * What qualifies the field — `Beta`, `Pro`, `New` — as one or more `slBadge`s\n * after the label. It stands outside the `label`, so the necessity mark stays\n * against the label's last word, and it joins the control's description, so a\n * reader on the control hears it.\n */\n@Directive({\n selector: '[slFieldIndicator]',\n standalone: true,\n exportAs: 'slFieldIndicator',\n providers: [{ provide: SlFieldIndicatorSlot, useExisting: forwardRef(() => SlFieldIndicator) }],\n host: {\n 'data-part': 'indicator',\n '[attr.id]': 'indicatorId()',\n },\n})\nexport class SlFieldIndicator {\n private readonly field = inject(SlField);\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly indicatorId = computed(() => this.writtenId ?? this.field.ids().indicator);\n}\n\n/**\n * The help beside the label: the button itself, drawing `circle-question`, with\n * the hint in a tooltip. The hint is the directive's value —\n * `<button slFieldHelp=\"Dias corridos.\"></button>` — because it is written once\n * and read in two places: the tooltip's layer, and a hidden node inside the\n * button that describes the button and the control while the layer is closed. A\n * directly referenced hidden element still enters the description (accname 1.2,\n * step 2A), and the tooltip is asked to describe nothing, so the hint is not\n * read twice.\n *\n * **A press is the hint.** A tooltip opens on a coarse pointer only by a long\n * press, because a tap is the trigger's own action; this button has no other\n * action, so the tooltip is composed on the button as host directives and run\n * by hand (`openOn: 'manual'`, provided here): a press pins the hint open and a\n * second press closes it, while hover and keyboard focus open it the way every\n * tooltip opens. It is Carbon's toggletip. `[(open)]` and `(openChangeRequest)`\n * are the tooltip's own, exposed on the button.\n *\n * **It stays operable on a disabled field.** The help is often where the reason\n * the field is off is written.\n */\n@Component({\n selector: 'button[slFieldHelp]',\n standalone: true,\n exportAs: 'slFieldHelp',\n imports: [SlGlyph, SlIcon, SlTooltipArrow, SlTooltipContent, SlTooltipLayer],\n hostDirectives: [\n {\n directive: SlTooltip,\n inputs: ['open', 'side'],\n outputs: ['openChange', 'openChangeRequest'],\n },\n SlTooltipTrigger,\n ],\n template: `<span slIcon aria-hidden=\"true\"><svg slGlyph name=\"circle-question\"></svg></span>\n <span data-part=\"help-text\" hidden [id]=\"textId()\">{{ slFieldHelp() }}</span>\n <ng-template slTooltipLayer>\n <div slTooltipContent>{{ slFieldHelp() }}</div>\n <div slTooltipArrow></div>\n </ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n provideTooltipDefaults({ closeOnPress: false, describes: 'none', openOn: 'manual' }),\n { provide: SlFieldHelpSlot, useExisting: forwardRef(() => SlFieldHelp) },\n ],\n host: {\n 'data-part': 'help',\n type: 'button',\n '[attr.aria-label]': 'label()',\n '[attr.aria-describedby]': 'describedBy()',\n '(pointerenter)': 'enter($event)',\n '(pointerleave)': 'leave($event)',\n '(focus)': 'focus($event)',\n '(blur)': 'blur($event)',\n '(click)': 'press($event)',\n },\n})\nexport class SlFieldHelp {\n /** The hint. */\n readonly slFieldHelp = input('');\n\n private readonly field = inject(SlField, { optional: true });\n private readonly tooltip = inject(SlTooltip);\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly fallbackId = `${inject(SlFieldIdFactory).next()}-help`;\n /** The field family's words, for a help control outside a field. */\n private readonly own = injectMessages(fieldMessages);\n\n protected readonly textId = computed(() => this.field?.ids().help ?? this.fallbackId);\n protected readonly label = computed(\n () => this.writtenLabel ?? (this.field?.t ?? this.own)('help'),\n );\n protected readonly describedBy = computed(() => this.writtenDescribedBy ?? this.textId());\n\n /** Whether a press opened the hint; a hover-opened hint closes when the pointer leaves. */\n private readonly pinned = signal(false);\n\n constructor() {\n /* A hint closed from anywhere — Escape, a press outside, the consumer — is\n no longer pinned by the press that opened it. */\n effect(() => {\n if (!this.tooltip.isOpen()) this.pinned.set(false);\n });\n }\n\n protected enter(event: PointerEvent) {\n if (event.pointerType === 'touch' || this.tooltip.isOpen()) return;\n this.tooltip.openAfterDelay(event);\n }\n\n protected leave(event: PointerEvent) {\n if (event.pointerType === 'touch' || this.pinned()) return;\n this.tooltip.closeAfterDelay(event);\n }\n\n /** `:focus-visible` rather than every focus: a press focuses the button too. */\n protected focus(event: FocusEvent) {\n if (!(event.target as HTMLElement).matches(':focus-visible')) return;\n this.tooltip.toggle(true, 'keyboard', event);\n }\n\n protected blur(event: FocusEvent) {\n this.pinned.set(false);\n this.tooltip.toggle(false, 'blur', event);\n }\n\n /**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count, which is how `Enter` and `Space` are told from a press.\n */\n protected press(event: MouseEvent) {\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n if (this.tooltip.isOpen() && this.pinned()) {\n this.pinned.set(false);\n this.tooltip.toggle(false, reason, event);\n return;\n }\n this.pinned.set(true);\n this.tooltip.toggle(true, reason, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AA0CO,MAAM,qBAAqB,GAAkC;IAClE,WAAW;IACX,MAAM;IACN,aAAa;IACb,SAAS;IACT,OAAO;;AAWT,MAAM,QAAQ,GAAkB;AAC9B,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,IAAI;CACX;MAEY,cAAc,GAAG,IAAI,cAAc,CAAgB,wBAAwB,EAAE;AACxF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,QAAQ;AACxB,CAAA;AAED;;;;;;;;;;;;;;AAcG;AACG,SAAU,oBAAoB,CAAC,QAAgC,EAAA;IACnE,OAAO;AACL,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,UAAU,EAAE,OAAsB;AAChC,YAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;AAChD,YAAA,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc;AAClE,YAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS;AACnD,YAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;AAChD,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;SACrC,CAAC;KACH;AACH;AAEA;SACgB,mBAAmB,GAAA;AACjC,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC;AAC/B;AAEA;;;;;;;;;;AAUG;MACmB,qBAAqB,CAAA;AAE1C;AAED;AACM,SAAU,cAAc,CAAC,IAAY,EAAA;IACzC,OAAO;QACL,OAAO,EAAE,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU;QAC1B,OAAO,EAAE,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU;QAC1B,WAAW,EAAE,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc;QAClC,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,MAAA,CAAQ;QACtB,IAAI,EAAE,CAAA,EAAG,IAAI,CAAA,KAAA,CAAO;QACpB,SAAS,EAAE,CAAA,EAAG,IAAI,CAAA,UAAA,CAAY;QAC9B,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,MAAA,CAAQ;KACvB;AACH;AAEA;;;;;;;AAOG;SACa,aAAa,CAC3B,SAAyB,EACzB,QAAiB,EACjB,CAAkC,EAAA;IAElC,QAAQ,SAAS;AACf,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,QAAQ,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;AACtD,QAAA,KAAK,UAAU;YACb,OAAO,QAAQ,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE;AACjE,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,EAAE;AACvE,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,IAAI;;AAEjB;AAEA;;;;AAIG;MACmB,cAAc,CAAA;AAEnC;AAED;;;;;AAKG;MACmB,iBAAiB,CAAA;AAAG;MACpB,eAAe,CAAA;AAAG;MAClB,oBAAoB,CAAA;AAAG;AAE7C;;;;;AAKG;MAEU,gBAAgB,CAAA;IACnB,KAAK,GAAG,CAAC;IAEjB,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AACf,QAAA,OAAO,CAAA,cAAA,EAAiB,IAAI,CAAC,KAAK,EAAE;IACtC;uGANW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC7JlC;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,KAAiB,EAAA;IAChD,OAAO,KAAK,CAAC,GAAG,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA,EAAG,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,GAAG,CAAA,CAAE;AACxF;AAEA;AACM,SAAU,gBAAgB,CAAC,KAAiB,EAAA;AAChD,IAAA,OAAO,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG;AAC5D;AAEA;;;;;;;;;;;;;;AAcG;MAWU,cAAc,CAAA;IACR,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClD,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErF;;;;AAIG;AACgB,IAAA,SAAS,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,IAAI;kFAC1D;AAED;;;;;AAKG;IACM,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;uGAnBrD,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,qBAAqB,EAAE,uBAAuB;AAC/C,qBAAA;AACF,iBAAA;;;AC9CD;;;;;;;;;AASG;MAEmB,cAAc,CAAA;;IAEzB,IAAI,GAAG,KAAK,CAAgC,SAAS;6EAAC;;IAEtD,IAAI,GAAG,KAAK,CAAgC,SAAS;6EAAC;AAC/D;;;AAGG;IACM,IAAI,GAAG,KAAK,CAAgC,SAAS;6EAAC;;IAEtD,MAAM,GAAG,KAAK,CAAqB,SAAS;+EAAC;;IAE7C,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAExD,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE/C,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;IAChE,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;AAExC;;;;;;;;;;AAUG;AACM,IAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAE/C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpF,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,IAAI,EAAE;IACb;IAEQ,IAAI,GAAA;QACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/D;uGAhDoB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC;;AAoDD;;;;;;;AAOG;AAMG,MAAO,kBAAmB,SAAQ,cAAc,CAAA;uGAAzC,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;;AAGD;;;;;;;AAOG;AAMG,MAAO,YAAa,SAAQ,cAAc,CAAA;uGAAnC,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;;ACvED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAiEU,OAAO,CAAA;;IAET,IAAI,GAAG,KAAK,CAAwB,SAAS;6EAAC;;IAE9C,cAAc,GAAG,KAAK,CAAkC,SAAS;uFAAC;;IAElE,SAAS,GAAG,KAAK,CAA6B,SAAS;kFAAC;AACjE;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAA6C,SAAS;iFAAC;AAEhF;;;;;AAKG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;;AAEO,IAAA,OAAO,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EACnF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;AACF;;;;AAIG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;;AAEO,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;AAEF;;;;;AAKG;IACc,UAAU,GAAG,MAAM,CAAyB,SAAS;mFAAC;;IAE9D,cAAc,GAAG,YAAY,CAAC,cAAc,sFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;IAC1D,MAAM,GAAG,YAAY,CAAC,iBAAiB;+EAAC;IACxC,IAAI,GAAG,YAAY,CAAC,eAAe,4EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;IAC3D,SAAS,GAAG,YAAY,CAAC,oBAAoB,iFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AACrE,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,cAAc,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK;AACvD,UAAE,IAAI,CAAC,UAAU;AACjB,UAAE,SAAS;mFACd;AACkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,OAAO,KAAK,KAAK,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC;IACvD,CAAC;kFAAC;IACiB,WAAW,GAAG,gBAAgB;;AAGjD,IAAA,QAAQ,CAAC,KAA6B,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;;AAGS,IAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;IAE5B,KAAK,GAAG,mBAAmB,EAAE;AAC9C;;;;;AAKG;IACc,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,KAAK;iFAAC;AAEtF;;;;AAIG;IACc,IAAI,GACnB,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;IAEpF,GAAG,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;4EAAC;AAExD;;;;AAIG;IACgB,WAAW,GAAG,YAAY,CAAC,kBAAkB,mFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;IACtE,KAAK,GAAG,YAAY,CAAC,YAAY,6EAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAEpE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI;qFAAC;AAClE,IAAA,sBAAsB,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,cAAc;+FAC9D;AACQ,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS;0FAAC;AACjF,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;yFAAC;AAC9E,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;yFAAC;;IAE9E,CAAC,GAAG,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;AAEzD;;;AAGG;AACgB,IAAA,WAAW,GAAG,QAAQ,CAAc,MACrD,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;oFAC3C;AAED;;;;;;AAMG;AACM,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS;YAC/E,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,IAAI;YACtD,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,IAAI;AAC1C,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS;SAC1C;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5F,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACpD,CAAC;oFAAC;uGAtIS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,yCAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,yCAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,SAAA,EAbP,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA4DzC,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACZ,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACV,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6ClB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACxB,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3J1C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,knVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3CM,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA4Dd,OAAO,EAAA,UAAA,EAAA,CAAA;kBAhEnB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN,SAAS,WACV,CAAC,eAAe,CAAC,EAAA,QAAA,EAChB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0CN,EAAA,eAAA,EAEa,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,OAAQ,CAAC,EAAE,CAAC,EAAA,IAAA,EAC1E;AACJ,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,6BAA6B,EAAE,0BAA0B;AACzD,wBAAA,uBAAuB,EAAE,qBAAqB;AAC9C,wBAAA,sBAAsB,EAAE,yCAAyC;AACjE,wBAAA,qBAAqB,EAAE,gCAAgC;AACvD,wBAAA,sBAAsB,EAAE,yCAAyC;AACjE,wBAAA,sBAAsB,EAAE,iCAAiC;AAC1D,qBAAA,EAAA,MAAA,EAAA,CAAA,knVAAA,CAAA,EAAA;AAiDsC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,cAAc,QAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACnC,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACnB,eAAe,QAAE,EAAE,WAAW,EAAE,IAAI,EAAE,wFACjC,oBAAoB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,0FA6CzC,kBAAkB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,oFAChD,YAAY,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC7M9E;;;;;;;;;;;;;AAaG;MAiBU,YAAY,CAAA;AACN,IAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AACvB,IAAA,UAAU,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtE,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAElE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO;iFAAC;AACtE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK;gFAAC;AAEpE,IAAA,SAAS,GAAG,QAAQ,CAAC,MACpC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;kFAC5F;AACkB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,KAAK,IAAI;mFAAC;AAC9D,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,IAAI,IAAI;6EAAC;uGAZ7D,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZb,CAAA;;;AAGN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FASO,YAAY,EAAA,UAAA,EAAA,CAAA;kBAhBxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAAA;;;AAGN,KAAA,CAAA;oBACJ,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,WAAW,EAAE,WAAW;AACzB,qBAAA;AACF,iBAAA;;AAgBD;;;;;;;;;;;;;AAaG;MAeU,cAAc,CAAA;AACR,IAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AACvB,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpE,kBAAkB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE;AACvF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,cAAc,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,EAAE;AAC/E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;AACjF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChF,IAAA,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE9E,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO;kFAAC;;AAGtE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAClF,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD,CAAC;oFAAC;IAEiB,WAAW,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;oFAC7E;IACkB,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;qFAC/E;IACkB,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;0FACnF;IACkB,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;0FACnF;uGAlCU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,qBAAqB,EAAE,eAAe;AACtC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,iBAAiB,EAAE,qBAAqB;AACzC,qBAAA;AACF,iBAAA;;AAsCD;;;;;;AAMG;MAUU,aAAa,CAAA;AACP,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtE,IAAI,GACrB,IAAI,CAAC,WAAW;SACf,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK;AACrE,cAAE;cACA,IAAI,CAAC;uGANA,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;;;ACzGD;;;;;;;;AAQG;MAmBU,aAAa,CAAA;AACL,IAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAEvB,UAAU,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,SAAS;mFAC3E;AACkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,OAAO,KAAK,KAAK,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC;IACvD,CAAC;kFAAC;IACiB,WAAW,GAAG,gBAAgB;uGAVtC,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,+GAHb,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX/E,CAAA;;;;;;;;AAQN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAMO,aAAa,EAAA,UAAA,EAAA,CAAA;kBAlBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQN,KAAA,CAAA;oBACJ,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,aAAc,CAAC,EAAE,CAAC;AACzF,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChC,iBAAA;;AAcD;;;;;AAKG;MAWU,gBAAgB,CAAA;AACV,IAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AACvB,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAElE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS;oFAAC;uGAJlF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,iKANhB,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAMpF,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,gBAAiB,CAAC,EAAE,CAAC;AAC/F,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,WAAW,EAAE,eAAe;AAC7B,qBAAA;AACF,iBAAA;;AAQD;;;;;;;;;;;;;;;;;;;;AAoBG;MAsCU,WAAW,CAAA;;IAEb,WAAW,GAAG,KAAK,CAAC,EAAE;oFAAC;IAEf,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3C,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,IAAA,YAAY,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/E,kBAAkB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE;AACvF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,UAAU,GAAG,CAAA,EAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAA,KAAA,CAAO;;AAEtD,IAAA,GAAG,GAAG,cAAc,CAAC,aAAa,CAAC;AAEjC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU;+EAAC;IAClE,KAAK,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;8EAC/D;AACkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,EAAE;oFAAC;;IAGxE,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;AAEvC,IAAA,WAAA,GAAA;AACE;AACmD;QACnD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACpD,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,KAAK,CAAC,KAAmB,EAAA;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE;AAC5D,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;IACpC;AAEU,IAAA,KAAK,CAAC,KAAmB,EAAA;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;IACrC;;AAGU,IAAA,KAAK,CAAC,KAAiB,EAAA;QAC/B,IAAI,CAAE,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAAE;QAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;IAC9C;AAEU,IAAA,IAAI,CAAC,KAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IAC3C;AAEA;;;AAGG;AACO,IAAA,KAAK,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS;AAC1D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;YACzC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;IAC1C;uGAjEW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAhBX;AACT,YAAA,sBAAsB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACpF,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC,EAAE;SACzE,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXS,CAAA;;;;;mBAKO,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdP,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,+FAAE,cAAc,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAiChE,WAAW,EAAA,UAAA,EAAA,CAAA;kBArCvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,CAAC;AAC5E,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;AACpB,4BAAA,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACxB,4BAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;AAC7C,yBAAA;wBACD,gBAAgB;AACjB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKO,kBAAA,CAAA;oBACjB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,SAAS,EAAE;AACT,wBAAA,sBAAsB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACpF,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,WAAY,CAAC,EAAE;AACzE,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,gBAAgB,EAAE,eAAe;AACjC,wBAAA,gBAAgB,EAAE,eAAe;AACjC,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA;AACF,iBAAA;;;AC1JD;;AAEG;;"}
1
+ {"version":3,"file":"slotted-angular-field.mjs","sources":["../../field/src/field-defaults.ts","../../field/src/field-counter.ts","../../field/src/field-messages.ts","../../field/src/field.ts","../../field/src/field-parts.ts","../../field/src/field-header.ts","../../field/src/slotted-angular-field.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport type { FamilyTranslator, FieldMessages } from '@slotted/core/i18n';\n\n/** The type step the field sits at, matching the control it wraps. */\nexport type FieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * Where the label sits relative to the control. `side` reflows to `top` when\n * the field's own inline size falls below 320 pixels, so a field in a drawer\n * stacks while the same field in a page grid stays beside its control.\n */\nexport type FieldLabelPlacement = 'top' | 'side';\n\n/**\n * How necessity is said. `mark` draws the asterisk every surveyed\n * implementation draws on a required field; `optional` writes `(optional)` on\n * the fields a reader may skip and nothing on the others, which is what GOV.UK\n * and Carbon recommend for a form where most fields are required; `words`\n * writes `(required)` on a required field and `(optional)` on one that is not;\n * `none` says nothing, for a form where every field is required and the form\n * says so once.\n */\nexport type FieldNecessity = 'mark' | 'optional' | 'words' | 'none';\n\n/** The identifiers a field derives from one base. */\nexport interface FieldIds {\n control: string;\n counter: string;\n description: string;\n error: string;\n help: string;\n indicator: string;\n label: string;\n}\n\n/**\n * The parts that join the control's `aria-describedby`, in the order the\n * contract reads them: what qualifies the field, the help behind the icon, the\n * description, the count, the error.\n */\nexport type FieldDescribedSlot = 'indicator' | 'help' | 'description' | 'counter' | 'error';\n\nexport const FIELD_DESCRIBED_ORDER: readonly FieldDescribedSlot[] = [\n 'indicator',\n 'help',\n 'description',\n 'counter',\n 'error',\n];\n\nexport interface FieldDefaults {\n disabled: boolean | undefined;\n labelPlacement: FieldLabelPlacement;\n necessity: FieldNecessity;\n readOnly: boolean | undefined;\n size: FieldSize;\n}\n\nconst FALLBACK: FieldDefaults = {\n disabled: undefined,\n labelPlacement: 'top',\n necessity: 'mark',\n readOnly: undefined,\n size: 'md',\n};\n\nexport const FIELD_DEFAULTS = new InjectionToken<FieldDefaults>('slotted field defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once what its fields look like, rather than repeating\n * the same inputs on every field in a form. Their words come from the language\n * in force (`provideSlotted`).\n * `SlFieldGroup` provides an overriding value for its own subtree, so a compact\n * section — or a disabled one — is one attribute rather than one per field.\n *\n * Among the surveyed implementations only Angular Material ships\n * application-wide defaults, and this is that idea taken to both bindings.\n *\n * `disabled` and `readOnly` are here and `invalid` and `required` are not. The\n * first two describe a context a whole section can be in; the second two are\n * facts about one value, and a token that set them would mark every field in an\n * application as required for a reason no field could name.\n */\nexport function provideFieldDefaults(defaults: Partial<FieldDefaults>) {\n return {\n provide: FIELD_DEFAULTS,\n useFactory: (): FieldDefaults => ({\n disabled: defaults.disabled ?? FALLBACK.disabled,\n labelPlacement: defaults.labelPlacement ?? FALLBACK.labelPlacement,\n necessity: defaults.necessity ?? FALLBACK.necessity,\n readOnly: defaults.readOnly ?? FALLBACK.readOnly,\n size: defaults.size ?? FALLBACK.size,\n }),\n };\n}\n\n/** What a field renders as here, before it states anything of its own. */\nexport function injectFieldDefaults(): FieldDefaults {\n return inject(FIELD_DEFAULTS);\n}\n\n/**\n * A component in the tree answering for the fields under it, which is what\n * `field-group` is. It exists as a class of its own so `@slotted/angular/field`\n * never has to know that `field-group` exists — the dependency runs one way,\n * from the group to the field.\n *\n * It is read rather than snapshotted, because Angular creates every directive\n * in a template before it binds any input: a group that handed its fields a\n * value in its constructor would hand them the value its inputs had before the\n * consumer's bindings ran, which is the default for all six.\n */\nexport abstract class SlFieldDefaultsSource {\n abstract fieldDefaults(): FieldDefaults;\n}\n\n/** The identifiers a field derives from its base, in one place. */\nexport function deriveFieldIds(base: string): FieldIds {\n return {\n control: `${base}-control`,\n counter: `${base}-counter`,\n description: `${base}-description`,\n error: `${base}-error`,\n help: `${base}-help`,\n indicator: `${base}-indicator`,\n label: `${base}-label`,\n };\n}\n\n/**\n * What the necessity mark says, and whether a reader hears it. The asterisk is\n * hidden, because `aria-required` on the control already carries the fact and a\n * form of twenty required fields does not need \"asterisk\" twenty times; the\n * words are not, because `(optional)` is information rather than decoration.\n * `null` when nothing is drawn. `slFieldGroupLegend` draws its mark with the\n * same answer.\n */\nexport function necessityMark(\n necessity: FieldNecessity,\n required: boolean,\n t: FamilyTranslator<FieldMessages>,\n): { hidden: boolean; text: string } | null {\n switch (necessity) {\n case 'mark':\n return required ? { hidden: true, text: '*' } : null;\n case 'optional':\n return required ? null : { hidden: false, text: t('optional') };\n case 'words':\n return { hidden: false, text: t(required ? 'required' : 'optional') };\n case 'none':\n return null;\n }\n}\n\n/**\n * The field as the parts that live in a module `field.ts` imports see it — the\n * counter today. Provided by `SlField` as itself, so the counter reaches the\n * field's identifiers without importing it, which would be a cycle.\n */\nexport abstract class SlFieldContext {\n abstract ids(): FieldIds;\n}\n\n/**\n * The parts the field looks for without importing them. Each part provides\n * its marker as itself, and the field queries the marker; importing the part\n * classes into `field.ts` would be a cycle, since every one of them injects\n * `SlField`.\n */\nexport abstract class SlFieldHeaderSlot {}\nexport abstract class SlFieldHelpSlot {}\nexport abstract class SlFieldIndicatorSlot {}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `inline-message`\n * records: a module-level counter produces colliding sequences when two\n * applications render in one server process, and the server and the client\n * sequences must match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlFieldIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-field-${this.count}`;\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n HostAttributeToken,\n inject,\n input,\n} from '@angular/core';\n\nimport { SlFieldContext } from './field-defaults';\n\n/**\n * What a control tells the field about its own value, so the field can draw the\n * count in the spare column of its label row. The control counts and the field\n * places it: the number belongs to the value, and the row belongs to the field.\n *\n * `length` is in UTF-16 code units, which is what `maxLength` counts, so an\n * emoji counts as two. A counter that disagreed with the limit the browser\n * enforces would be wrong at exactly the moment it is read.\n */\nexport interface FieldCount {\n length: number;\n max: number | undefined;\n}\n\n/**\n * How a count reads: `12/280` when there is a limit and `12` when there is\n * none. Carbon and Polaris both write the pair; Angular Material writes it in\n * the subscript, where a count that appears on the first keystroke shares a row\n * with the error and pushes it.\n */\nexport function formatFieldCount(count: FieldCount): string {\n return count.max === undefined ? String(count.length) : `${count.length}/${count.max}`;\n}\n\n/** Whether a count has passed the limit it was given. */\nexport function isFieldCountOver(count: FieldCount): boolean {\n return count.max !== undefined && count.length > count.max;\n}\n\n/**\n * A count the page writes itself, at the end of the label row — which is where\n * Carbon puts it. Angular Material puts it in the subscript beside the error,\n * where a count that appears on the first keystroke shares a row with the\n * message and pushes it.\n *\n * A field whose control publishes a count gets a counter drawn by the field, so\n * this directive is for the page that counts something the control cannot:\n * words, bytes, line items. Writing one withdraws the field's own, because two\n * counters in one row is one row too many.\n *\n * It lives in a module of its own so `field.ts` can look for it without\n * importing the parts that inject `SlField`, which would be a cycle; it reaches\n * the field through `SlFieldContext` for the same reason.\n */\n@Directive({\n selector: '[slFieldCounter]',\n standalone: true,\n exportAs: 'slFieldCounter',\n host: {\n 'data-part': 'counter',\n 'data-part-counter': '',\n '[attr.id]': 'counterId()',\n '[attr.data-invalid]': \"invalid() ? '' : null\",\n },\n})\nexport class SlFieldCounter {\n private readonly field = inject(SlFieldContext, { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n /**\n * The identifier the field's description reads the count by, which\n * `docs/component-features.md` §2.8 requires of a counter. A consumer's own\n * `id` wins.\n */\n protected readonly counterId = computed(\n () => this.writtenId ?? this.field?.ids().counter ?? null,\n );\n\n /**\n * The count has passed its limit. It is the counter's own state rather than\n * the field's: a count can pass its maximum while validation has not run, and\n * a counter that only turned at submit would say nothing at the moment it is\n * being read.\n */\n readonly invalid = input(false, { transform: booleanAttribute });\n}\n","import {\n afterNextRender,\n type AfterContentChecked,\n booleanAttribute,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport type {\n InlineMessageLive,\n InlineMessageMark,\n InlineMessageTone,\n} from '@slotted/angular/inline-message';\n\n/**\n * What the page wants said, and how — carried by the element the page writes\n * and read by the field, which renders the `inline-message` around it.\n *\n * The field renders the message rather than the page, because `SlInlineMessage`\n * takes its values as `input()` signals and nothing outside the template that\n * instantiates it can write one. A directive sharing the element could only set\n * attributes the component's own host bindings would then overwrite, and the\n * identifier the field derives is exactly such a value.\n */\n@Directive()\nexport abstract class SlFieldMessage implements AfterContentChecked {\n /** Replaces the message's own tone. `inline-message` owns the five. */\n readonly tone = input<InlineMessageTone | undefined>(undefined);\n /** Whether the message announces itself when it arrives. */\n readonly live = input<InlineMessageLive | undefined>(undefined);\n /**\n * Which mark the message draws. A field's messages default to `none`, and\n * `glyph` asks for the tone's own silhouette, `dot` for one neutral bullet.\n */\n readonly mark = input<InlineMessageMark | undefined>(undefined);\n /** The word read before the message; the empty string removes it. */\n readonly prefix = input<string | undefined>(undefined);\n /** Draws no mark, for a message that carries its own artwork. */\n readonly hideIcon = input(false, { transform: booleanAttribute });\n /** Holds one line box open so nothing below moves when the message arrives. */\n readonly reserve = input(false, { transform: booleanAttribute });\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly content = signal(false);\n\n /**\n * Whether the message has text to say. An empty one — a `reserve` line\n * waiting for its text — keeps its box and describes nothing, which is what\n * React's messages register.\n *\n * It is read after the template that declares the message writes its text\n * and before the host bindings of that template run, so the first render,\n * the only one a server performs, names exactly the messages that have text.\n * In the browser an observer also reports text that arrives from anywhere\n * else.\n */\n readonly hasContent = this.content.asReadonly();\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n afterNextRender(() => {\n const observer = new MutationObserver(() => this.read());\n observer.observe(this.host, { characterData: true, childList: true, subtree: true });\n destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n ngAfterContentChecked() {\n this.read();\n }\n\n private read() {\n this.content.set((this.host.textContent ?? '').trim() !== '');\n }\n}\n\n/**\n * Help about the field, projected into the `inline-message` the field renders.\n *\n * It arrives with a tone, a mark, a clipped severity word an application\n * translates once and a reserved line — none of which the field reimplements.\n * `docs/process/build-order.md` states that as the reason `inline-message` was built\n * in wave 2.\n */\n@Directive({\n selector: '[slFieldDescription]',\n standalone: true,\n exportAs: 'slFieldDescription',\n})\nexport class SlFieldDescription extends SlFieldMessage {}\n\n/**\n * What is wrong with the value, in words — which is what WCAG 2.2 SC 3.3.1\n * requires and what colour and a mark alone do not satisfy.\n *\n * `tone` accepts the other four, so a warning that does not block submission is\n * the same part in another tone rather than a member of its own. Fluent spends\n * a `validationState` axis on that distinction and Carbon a second component.\n */\n@Directive({\n selector: '[slFieldError]',\n standalone: true,\n exportAs: 'slFieldError',\n})\nexport class SlFieldError extends SlFieldMessage {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlInlineMessage } from '@slotted/angular/inline-message';\nimport { fieldMessages, type FieldMessages, type PartialMessages } from '@slotted/core/i18n';\n\nimport {\n deriveFieldIds,\n FIELD_DESCRIBED_ORDER,\n injectFieldDefaults,\n SlFieldContext,\n SlFieldDefaultsSource,\n SlFieldHeaderSlot,\n SlFieldHelpSlot,\n SlFieldIdFactory,\n SlFieldIndicatorSlot,\n} from './field-defaults';\nimport type { FieldLabelPlacement, FieldNecessity, FieldSize } from './field-defaults';\nimport { formatFieldCount, isFieldCountOver, SlFieldCounter } from './field-counter';\nimport type { FieldCount } from './field-counter';\nimport { SlFieldDescription, SlFieldError } from './field-messages';\n\nexport type { FieldCount } from './field-counter';\nexport type { FieldIds, FieldLabelPlacement, FieldNecessity, FieldSize } from './field-defaults';\n\n/**\n * One control, its name, its necessity, its help and its error — and the\n * identifiers that bind the four together.\n *\n * **Every shared state is unset rather than `false`.** `disabled`, `invalid`,\n * `required` and `readOnly` default to `undefined`, so a field defers to the\n * `slFieldGroup` around it and the group to the application. A field that\n * defaulted to `false` could not be told from a consumer saying \"not disabled\",\n * and it would quietly override a disabled section.\n *\n * **The identifiers are derived, not registered.** One base yields four, so\n * `label[for]` resolves to the identifier the control will use with no ordering\n * dependency between siblings and nothing to coordinate during hydration.\n *\n * **The field renders its own messages.** The page writes what it wants said —\n * `<span slFieldError>` — and the field puts it inside an `inline-message` it\n * renders itself, with the identifier, the step and the disabled state already\n * resolved. `SlInlineMessage` takes its values as `input()` signals, and nothing\n * outside the template that instantiates it can write one; a directive sharing\n * the element could only set attributes its host bindings would overwrite. A\n * message the page did not write is not drawn, which is the DOM React's\n * `FieldDescription` and `FieldError` produce.\n */\n@Component({\n selector: '[slField]',\n standalone: true,\n exportAs: 'slField',\n imports: [SlInlineMessage],\n template: `<ng-content select=\"[slFieldLabel], [slFieldHeader]\" />\n <ng-content select=\"[slFieldCounter]\" />\n @if (drawnCount(); as count) {\n <span\n data-part=\"counter\"\n data-part-counter=\"\"\n [id]=\"ids().counter\"\n [attr.data-invalid]=\"countOver() ? '' : null\"\n >{{ formatCount(count) }}</span\n >\n }\n <ng-content />\n @if (description(); as message) {\n <p\n slInlineMessage\n [id]=\"ids().description\"\n [size]=\"messageSize()\"\n [disabled]=\"resolvedDisabled()\"\n [mark]=\"message.mark() ?? 'none'\"\n [tone]=\"message.tone() ?? 'secondary'\"\n [live]=\"message.live() ?? 'off'\"\n [hideIcon]=\"message.hideIcon() ?? false\"\n [reserve]=\"message.reserve() ?? false\"\n [prefix]=\"message.prefix()\"\n >\n <ng-content select=\"[slFieldDescription]\" />\n </p>\n }\n @if (error(); as message) {\n <p\n slInlineMessage\n [id]=\"ids().error\"\n [size]=\"messageSize()\"\n [disabled]=\"resolvedDisabled()\"\n [mark]=\"message.mark() ?? 'none'\"\n [tone]=\"message.tone() ?? 'danger'\"\n [live]=\"message.live() ?? 'off'\"\n [hideIcon]=\"message.hideIcon() ?? false\"\n [reserve]=\"message.reserve() ?? false\"\n [prefix]=\"message.prefix()\"\n >\n <ng-content select=\"[slFieldError]\" />\n </p>\n }`,\n styleUrl: '../../../styles/src/field/field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SlFieldContext, useExisting: forwardRef(() => SlField) }],\n host: {\n 'data-ui': 'field',\n 'data-ui-field': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-label-placement]': 'resolvedLabelPlacement()',\n '[attr.data-necessity]': 'resolvedNecessity()',\n '[attr.data-disabled]': \"resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"invalid() === true ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() === true ? '' : null\",\n '[attr.data-required]': \"required() === true ? '' : null\",\n },\n})\nexport class SlField {\n /** Defaults to the token, then to `md`. */\n readonly size = input<FieldSize | undefined>(undefined);\n /** Defaults to the token, then to `top`. */\n readonly labelPlacement = input<FieldLabelPlacement | undefined>(undefined);\n /** Defaults to the token, then to `mark`. */\n readonly necessity = input<FieldNecessity | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * necessity words (`optional`, `required`) and the help control's name (`help`).\n */\n readonly messages = input<PartialMessages<FieldMessages> | undefined>(undefined);\n\n /**\n * Unstated rather than `false`, so the field defers to its group and the group\n * to the application. Stated, it wins, and it reaches the control as the\n * native attribute: removing it from the tab order and from submission is what\n * the word means.\n */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`. Reaches the control as `aria-invalid`. */\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /**\n * Unstated rather than `false`. Reaches the control as `aria-required` and\n * never as the native `required`, which would engage browser constraint\n * validation and change submit behaviour.\n */\n readonly required = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n /** Unstated rather than `false`. Reaches the control as the native `readonly`. */\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : booleanAttribute(value)),\n });\n\n /**\n * What the control inside published about its value. A control this library\n * ships calls `setCount`; the field draws the counter in the spare column of\n * its label row — the header draws it at its own end when there is one — and\n * only when the page wrote none of its own.\n */\n private readonly countState = signal<FieldCount | undefined>(undefined);\n /** The counter the page wrote, anywhere in the field. */\n readonly writtenCounter = contentChild(SlFieldCounter, { descendants: true });\n protected readonly header = contentChild(SlFieldHeaderSlot);\n protected readonly help = contentChild(SlFieldHelpSlot, { descendants: true });\n protected readonly indicator = contentChild(SlFieldIndicatorSlot, { descendants: true });\n protected readonly drawnCount = computed(() =>\n this.writtenCounter() === undefined && this.header() === undefined\n ? this.countState()\n : undefined,\n );\n protected readonly countOver = computed(() => {\n const count = this.drawnCount();\n return count !== undefined && isFieldCountOver(count);\n });\n protected readonly formatCount = formatFieldCount;\n\n /** The count a control this library ships publishes, whenever its value changes. */\n setCount(count: FieldCount | undefined) {\n this.countState.set(count);\n }\n\n /** What the control published, for a page that draws the counter itself. */\n readonly count = this.countState.asReadonly();\n\n private readonly token = injectFieldDefaults();\n /**\n * The group around this field, if there is one. It answers before the\n * application's own token, and it is read on every change rather than\n * captured, because Angular binds a component's inputs after it has created\n * the directives its template declares.\n */\n private readonly source = inject(SlFieldDefaultsSource, { optional: true });\n private readonly defaults = computed(() => this.source?.fieldDefaults() ?? this.token);\n\n /**\n * The base every identifier is derived from. A consumer's own `id` is the\n * base and stays on the element; the generated one is not written anywhere,\n * because the field is addressable through its parts rather than as a box.\n */\n private readonly base =\n inject(new HostAttributeToken('id'), { optional: true }) ?? inject(SlFieldIdFactory).next();\n\n readonly ids = computed(() => deriveFieldIds(this.base));\n\n /**\n * Direct content rather than any descendant: a field nested inside another\n * field's control — a composed control, a fieldset of its own — must not have\n * its message read as this field's.\n */\n protected readonly description = contentChild(SlFieldDescription, { descendants: false });\n protected readonly error = contentChild(SlFieldError, { descendants: false });\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults().size);\n readonly resolvedLabelPlacement = computed(\n () => this.labelPlacement() ?? this.defaults().labelPlacement,\n );\n readonly resolvedNecessity = computed(() => this.necessity() ?? this.defaults().necessity);\n readonly resolvedDisabled = computed(() => this.disabled() ?? this.defaults().disabled);\n readonly resolvedReadOnly = computed(() => this.readOnly() ?? this.defaults().readOnly);\n /** The field's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(fieldMessages, this.messages);\n\n /**\n * A message is quieter than the control it is about, so it starts one step\n * below and only the largest field's message reaches the second step.\n */\n protected readonly messageSize = computed<'sm' | 'md'>(() =>\n this.resolvedSize() === 'lg' ? 'md' : 'sm',\n );\n\n /**\n * The contract's order, and only the parts with something to say: the\n * indicator, the help, the description, the count, the error. Known slots\n * have one correct reading order, so it is stated rather than read from the\n * DOM. The count is there whenever one is drawn — the page's, or the one the\n * field or its header draws from what the control published.\n */\n readonly describedBy = computed(() => {\n const present = {\n counter: this.writtenCounter() !== undefined || this.countState() !== undefined,\n description: this.description()?.hasContent() === true,\n error: this.error()?.hasContent() === true,\n help: this.help() !== undefined,\n indicator: this.indicator() !== undefined,\n };\n const ids = this.ids();\n const parts = FIELD_DESCRIBED_ORDER.filter((slot) => present[slot]).map((slot) => ids[slot]);\n return parts.length === 0 ? null : parts.join(' ');\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlField } from './field';\nimport { necessityMark } from './field-defaults';\n\n/**\n * Names the control, and says whether it has to be answered.\n *\n * The association is explicit — `for` pointing at the control's identifier —\n * because the APG's naming practice records that some combinations of assistive\n * technology and browser fail to treat the implicit form, wrapping the control\n * in the label, as having an accessible name at all.\n *\n * The necessity marker is drawn here rather than written by the page. The glyph\n * is `aria-hidden`, because `aria-required` on the control already carries the\n * semantics and a reader working a form of twenty required fields does not need\n * to hear \"asterisk\" twenty times; the two word forms are not hidden, because\n * `(optional)` is information rather than decoration.\n */\n@Component({\n selector: 'label[slFieldLabel]',\n standalone: true,\n exportAs: 'slFieldLabel',\n template: `<ng-content />\n @if (mark(); as text) {\n <span data-part=\"mark\" data-part-mark=\"\" [attr.aria-hidden]=\"markHidden() ? 'true' : null\">{{\n text\n }}</span>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'label',\n 'data-part-label': '',\n '[attr.for]': 'labelFor()',\n '[attr.id]': 'labelId()',\n },\n})\nexport class SlFieldLabel {\n private readonly field = inject(SlField);\n private readonly writtenFor = inject(new HostAttributeToken('for'), { optional: true });\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly labelFor = computed(() => this.writtenFor ?? this.field.ids().control);\n protected readonly labelId = computed(() => this.writtenId ?? this.field.ids().label);\n\n private readonly necessity = computed(() =>\n necessityMark(this.field.resolvedNecessity(), this.field.required() === true, this.field.t),\n );\n protected readonly markHidden = computed(() => this.necessity()?.hidden === true);\n protected readonly mark = computed(() => this.necessity()?.text ?? null);\n}\n\n/**\n * Applies the field's wiring to a control the library does not own.\n *\n * Controls this library ships read the field themselves and need no directive,\n * which is what\n * `docs/history/designs/2026-08-31-field-aware-controls-design.md` decides.\n * This exists for the two cases that cannot: a plain native element, and a\n * component written before this library.\n *\n * Every value the consumer wrote wins. A host binding beats a static attribute\n * in Angular, so each written value is read before the binding is computed\n * rather than after — the asymmetry with React, where a consumer's prop simply\n * spreads over the family's.\n */\n@Directive({\n selector: '[slFieldControl]',\n standalone: true,\n exportAs: 'slFieldControl',\n host: {\n 'data-part': 'control',\n 'data-part-control': '',\n '[attr.id]': 'controlId()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'ariaInvalid()',\n '[attr.aria-required]': 'ariaRequired()',\n '[attr.disabled]': 'disabledAttribute()',\n '[attr.readonly]': 'readonlyAttribute()',\n },\n})\nexport class SlFieldControl {\n private readonly field = inject(SlField);\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {\n optional: true,\n });\n private readonly writtenRequired = inject(new HostAttributeToken('aria-required'), {\n optional: true,\n });\n private readonly writtenDisabled = inject(new HostAttributeToken('disabled'), { optional: true });\n private readonly writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });\n\n protected readonly controlId = computed(() => this.writtenId ?? this.field.ids().control);\n\n /** Merged after the consumer's own, so a tour step is read before the help. */\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n\n protected readonly ariaInvalid = computed(\n () => this.writtenInvalid ?? (this.field.invalid() === true ? 'true' : null),\n );\n protected readonly ariaRequired = computed(\n () => this.writtenRequired ?? (this.field.required() === true ? 'true' : null),\n );\n protected readonly disabledAttribute = computed(\n () => this.writtenDisabled ?? (this.field.resolvedDisabled() === true ? '' : null),\n );\n protected readonly readonlyAttribute = computed(\n () => this.writtenReadonly ?? (this.field.resolvedReadOnly() === true ? '' : null),\n );\n}\n\n/**\n * A link or a button at the end of the label row — `Forgot password?`,\n * `Generate` — written on the consumer's own `a` or `button`. On a `button` the\n * directive writes `type=\"button\"` unless the page wrote a type, so it never\n * submits the form it sits in; on a link it writes nothing. The field does not\n * disable it with the control: what it does is the page's.\n */\n@Directive({\n selector: '[slFieldAction]',\n standalone: true,\n exportAs: 'slFieldAction',\n host: {\n 'data-part': 'action',\n 'data-part-action': '',\n '[attr.type]': 'type',\n },\n})\nexport class SlFieldAction {\n private readonly writtenType = inject(new HostAttributeToken('type'), { optional: true });\n protected readonly type =\n this.writtenType ??\n (inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.tagName === 'BUTTON'\n ? 'button'\n : null);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n provideTooltipDefaults,\n SlTooltip,\n SlTooltipArrow,\n SlTooltipContent,\n SlTooltipLayer,\n SlTooltipTrigger,\n} from '@slotted/angular/tooltip';\nimport { fieldMessages } from '@slotted/core/i18n';\n\nimport { SlField } from './field';\nimport { formatFieldCount, isFieldCountOver } from './field-counter';\nimport {\n SlFieldHeaderSlot,\n SlFieldHelpSlot,\n SlFieldIdFactory,\n SlFieldIndicatorSlot,\n} from './field-defaults';\n\n/**\n * The label row, when the label has company: the help, an indicator, an action\n * and the counter beside it. ReUI writes the same row by hand in four of its\n * examples; here it is a part, so its alignment, its gap and its place in a\n * side layout are the family's.\n *\n * It draws the count the control published at its own end when the page wrote\n * no counter, which is where a field without a header puts it too.\n */\n@Component({\n selector: '[slFieldHeader]',\n standalone: true,\n exportAs: 'slFieldHeader',\n template: `<ng-content />\n @if (drawnCount(); as count) {\n <span\n data-part=\"counter\"\n data-part-counter=\"\"\n [id]=\"field.ids().counter\"\n [attr.data-invalid]=\"countOver() ? '' : null\"\n >{{ formatCount(count) }}</span\n >\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SlFieldHeaderSlot, useExisting: forwardRef(() => SlFieldHeader) }],\n host: { 'data-part': 'header', 'data-part-header': '' },\n})\nexport class SlFieldHeader {\n protected readonly field = inject(SlField);\n\n protected readonly drawnCount = computed(() =>\n this.field.writtenCounter() === undefined ? this.field.count() : undefined,\n );\n protected readonly countOver = computed(() => {\n const count = this.drawnCount();\n return count !== undefined && isFieldCountOver(count);\n });\n protected readonly formatCount = formatFieldCount;\n}\n\n/**\n * What qualifies the field — `Beta`, `Pro`, `New` — as one or more `slBadge`s\n * after the label. It stands outside the `label`, so the necessity mark stays\n * against the label's last word, and it joins the control's description, so a\n * reader on the control hears it.\n */\n@Directive({\n selector: '[slFieldIndicator]',\n standalone: true,\n exportAs: 'slFieldIndicator',\n providers: [{ provide: SlFieldIndicatorSlot, useExisting: forwardRef(() => SlFieldIndicator) }],\n host: {\n 'data-part': 'indicator',\n 'data-part-indicator': '',\n '[attr.id]': 'indicatorId()',\n },\n})\nexport class SlFieldIndicator {\n private readonly field = inject(SlField);\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n\n protected readonly indicatorId = computed(() => this.writtenId ?? this.field.ids().indicator);\n}\n\n/**\n * The help beside the label: the button itself, drawing `circle-question`, with\n * the hint in a tooltip. The hint is the directive's value —\n * `<button slFieldHelp=\"Dias corridos.\"></button>` — because it is written once\n * and read in two places: the tooltip's layer, and a hidden node inside the\n * button that describes the button and the control while the layer is closed. A\n * directly referenced hidden element still enters the description (accname 1.2,\n * step 2A), and the tooltip is asked to describe nothing, so the hint is not\n * read twice.\n *\n * **A press is the hint.** A tooltip opens on a coarse pointer only by a long\n * press, because a tap is the trigger's own action; this button has no other\n * action, so the tooltip is composed on the button as host directives and run\n * by hand (`openOn: 'manual'`, provided here): a press pins the hint open and a\n * second press closes it, while hover and keyboard focus open it the way every\n * tooltip opens. It is Carbon's toggletip. `[(open)]` and `(openChangeRequest)`\n * are the tooltip's own, exposed on the button.\n *\n * **It stays operable on a disabled field.** The help is often where the reason\n * the field is off is written.\n */\n@Component({\n selector: 'button[slFieldHelp]',\n standalone: true,\n exportAs: 'slFieldHelp',\n imports: [SlGlyph, SlIcon, SlTooltipArrow, SlTooltipContent, SlTooltipLayer],\n hostDirectives: [\n {\n directive: SlTooltip,\n inputs: ['open', 'side'],\n outputs: ['openChange', 'openChangeRequest'],\n },\n SlTooltipTrigger,\n ],\n template: `<span slIcon aria-hidden=\"true\"><svg slGlyph name=\"circle-question\"></svg></span>\n <span data-part=\"help-text\" data-part-help-text=\"\" hidden [id]=\"textId()\">{{\n slFieldHelp()\n }}</span>\n <ng-template slTooltipLayer>\n <div slTooltipContent>{{ slFieldHelp() }}</div>\n <div slTooltipArrow></div>\n </ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n provideTooltipDefaults({ closeOnPress: false, describes: 'none', openOn: 'manual' }),\n { provide: SlFieldHelpSlot, useExisting: forwardRef(() => SlFieldHelp) },\n ],\n host: {\n 'data-part': 'help',\n 'data-part-help': '',\n type: 'button',\n '[attr.aria-label]': 'label()',\n '[attr.aria-describedby]': 'describedBy()',\n '(pointerenter)': 'enter($event)',\n '(pointerleave)': 'leave($event)',\n '(focus)': 'focus($event)',\n '(blur)': 'blur($event)',\n '(click)': 'press($event)',\n },\n})\nexport class SlFieldHelp {\n /** The hint. */\n readonly slFieldHelp = input('');\n\n private readonly field = inject(SlField, { optional: true });\n private readonly tooltip = inject(SlTooltip);\n private readonly writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly fallbackId = `${inject(SlFieldIdFactory).next()}-help`;\n /** The field family's words, for a help control outside a field. */\n private readonly own = injectMessages(fieldMessages);\n\n protected readonly textId = computed(() => this.field?.ids().help ?? this.fallbackId);\n protected readonly label = computed(\n () => this.writtenLabel ?? (this.field?.t ?? this.own)('help'),\n );\n protected readonly describedBy = computed(() => this.writtenDescribedBy ?? this.textId());\n\n /** Whether a press opened the hint; a hover-opened hint closes when the pointer leaves. */\n private readonly pinned = signal(false);\n\n constructor() {\n /* A hint closed from anywhere — Escape, a press outside, the consumer — is\n no longer pinned by the press that opened it. */\n effect(() => {\n if (!this.tooltip.isOpen()) this.pinned.set(false);\n });\n }\n\n protected enter(event: PointerEvent) {\n if (event.pointerType === 'touch' || this.tooltip.isOpen()) return;\n this.tooltip.openAfterDelay(event);\n }\n\n protected leave(event: PointerEvent) {\n if (event.pointerType === 'touch' || this.pinned()) return;\n this.tooltip.closeAfterDelay(event);\n }\n\n /** `:focus-visible` rather than every focus: a press focuses the button too. */\n protected focus(event: FocusEvent) {\n if (!(event.target as HTMLElement).matches(':focus-visible')) return;\n this.tooltip.toggle(true, 'keyboard', event);\n }\n\n protected blur(event: FocusEvent) {\n this.pinned.set(false);\n this.tooltip.toggle(false, 'blur', event);\n }\n\n /**\n * A click synthesised by the keyboard reports no detail; a real one reports\n * the click count, which is how `Enter` and `Space` are told from a press.\n */\n protected press(event: MouseEvent) {\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n if (this.tooltip.isOpen() && this.pinned()) {\n this.pinned.set(false);\n this.tooltip.toggle(false, reason, event);\n return;\n }\n this.pinned.set(true);\n this.tooltip.toggle(true, reason, event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}