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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -2
  3. package/docs/AGENTS.snippet.md +10 -0
  4. package/docs/accordion.json +345 -0
  5. package/docs/accordion.md +207 -0
  6. package/docs/action-bar.json +421 -0
  7. package/docs/action-bar.md +364 -0
  8. package/docs/action-sheet.json +210 -0
  9. package/docs/action-sheet.md +19 -0
  10. package/docs/alert.json +407 -0
  11. package/docs/alert.md +239 -0
  12. package/docs/app-shell.examples.md +349 -0
  13. package/docs/app-shell.json +835 -0
  14. package/docs/app-shell.md +214 -0
  15. package/docs/aspect-ratio.json +159 -0
  16. package/docs/aspect-ratio.md +134 -0
  17. package/docs/attachment.json +486 -0
  18. package/docs/attachment.md +253 -0
  19. package/docs/avatar-group.json +208 -0
  20. package/docs/avatar-group.md +130 -0
  21. package/docs/avatar.json +342 -0
  22. package/docs/avatar.md +142 -0
  23. package/docs/badge.json +334 -0
  24. package/docs/badge.md +138 -0
  25. package/docs/breadcrumb.json +368 -0
  26. package/docs/breadcrumb.md +237 -0
  27. package/docs/button-group.json +158 -0
  28. package/docs/button-group.md +72 -0
  29. package/docs/button.examples.md +621 -0
  30. package/docs/button.json +977 -0
  31. package/docs/button.md +200 -0
  32. package/docs/calendar.json +592 -0
  33. package/docs/calendar.md +242 -0
  34. package/docs/card.json +283 -0
  35. package/docs/card.md +130 -0
  36. package/docs/carousel.json +560 -0
  37. package/docs/carousel.md +357 -0
  38. package/docs/cascader.json +933 -0
  39. package/docs/cascader.md +379 -0
  40. package/docs/chart.examples.md +582 -0
  41. package/docs/chart.json +1359 -0
  42. package/docs/chart.md +187 -0
  43. package/docs/checkbox-group.examples.md +612 -0
  44. package/docs/checkbox-group.json +395 -0
  45. package/docs/checkbox-group.md +106 -0
  46. package/docs/checkbox.examples.md +546 -0
  47. package/docs/checkbox.json +506 -0
  48. package/docs/checkbox.md +104 -0
  49. package/docs/code-block.json +616 -0
  50. package/docs/code-block.md +303 -0
  51. package/docs/collapsible.json +456 -0
  52. package/docs/collapsible.md +261 -0
  53. package/docs/color-picker.json +523 -0
  54. package/docs/color-picker.md +201 -0
  55. package/docs/column-manager.json +486 -0
  56. package/docs/column-manager.md +277 -0
  57. package/docs/combobox.examples.md +1732 -0
  58. package/docs/combobox.json +1250 -0
  59. package/docs/combobox.md +209 -0
  60. package/docs/command-palette.json +800 -0
  61. package/docs/command-palette.md +419 -0
  62. package/docs/container.json +156 -0
  63. package/docs/container.md +92 -0
  64. package/docs/context-menu.json +231 -0
  65. package/docs/context-menu.md +176 -0
  66. package/docs/currency-field.examples.md +321 -0
  67. package/docs/currency-field.json +649 -0
  68. package/docs/currency-field.md +128 -0
  69. package/docs/dashboard-grid.json +680 -0
  70. package/docs/dashboard-grid.md +265 -0
  71. package/docs/data-grid.examples.md +3064 -0
  72. package/docs/data-grid.json +1577 -0
  73. package/docs/data-grid.md +237 -0
  74. package/docs/data-grid.props.md +81 -0
  75. package/docs/data-list.json +685 -0
  76. package/docs/data-list.md +327 -0
  77. package/docs/date-field.json +490 -0
  78. package/docs/date-field.md +235 -0
  79. package/docs/date-picker.examples.md +1226 -0
  80. package/docs/date-picker.json +696 -0
  81. package/docs/date-picker.md +121 -0
  82. package/docs/date-range-picker.examples.md +1300 -0
  83. package/docs/date-range-picker.json +903 -0
  84. package/docs/date-range-picker.md +142 -0
  85. package/docs/datetime-field.json +665 -0
  86. package/docs/datetime-field.md +337 -0
  87. package/docs/datetime-picker.examples.md +1269 -0
  88. package/docs/datetime-picker.json +928 -0
  89. package/docs/datetime-picker.md +150 -0
  90. package/docs/datetime-range-picker.examples.md +225 -0
  91. package/docs/datetime-range-picker.json +1015 -0
  92. package/docs/datetime-range-picker.md +162 -0
  93. package/docs/description-list.json +471 -0
  94. package/docs/description-list.md +268 -0
  95. package/docs/detail-panel.json +530 -0
  96. package/docs/detail-panel.md +361 -0
  97. package/docs/dialog.examples.md +2467 -0
  98. package/docs/dialog.json +1141 -0
  99. package/docs/dialog.md +217 -0
  100. package/docs/dialog.props.md +63 -0
  101. package/docs/divider.json +148 -0
  102. package/docs/divider.md +83 -0
  103. package/docs/drawer.examples.md +1929 -0
  104. package/docs/drawer.json +753 -0
  105. package/docs/drawer.md +199 -0
  106. package/docs/entity-picker.json +946 -0
  107. package/docs/entity-picker.md +365 -0
  108. package/docs/event-calendar.examples.md +308 -0
  109. package/docs/event-calendar.json +1202 -0
  110. package/docs/event-calendar.md +201 -0
  111. package/docs/field-group.json +333 -0
  112. package/docs/field-group.md +181 -0
  113. package/docs/field.examples.md +676 -0
  114. package/docs/field.json +528 -0
  115. package/docs/field.md +127 -0
  116. package/docs/filter-bar.json +817 -0
  117. package/docs/filter-bar.md +380 -0
  118. package/docs/form.json +378 -0
  119. package/docs/form.md +235 -0
  120. package/docs/fullscreen.json +395 -0
  121. package/docs/fullscreen.md +225 -0
  122. package/docs/grid.json +176 -0
  123. package/docs/grid.md +74 -0
  124. package/docs/highlight.json +279 -0
  125. package/docs/highlight.md +210 -0
  126. package/docs/hover-card.json +254 -0
  127. package/docs/hover-card.md +213 -0
  128. package/docs/icon.json +173 -0
  129. package/docs/icon.md +101 -0
  130. package/docs/image.json +476 -0
  131. package/docs/image.md +254 -0
  132. package/docs/import-export-center.json +836 -0
  133. package/docs/import-export-center.md +345 -0
  134. package/docs/index.md +141 -0
  135. package/docs/inline-message.json +312 -0
  136. package/docs/inline-message.md +191 -0
  137. package/docs/inline.json +149 -0
  138. package/docs/inline.md +72 -0
  139. package/docs/kbd.json +350 -0
  140. package/docs/kbd.md +210 -0
  141. package/docs/link.json +264 -0
  142. package/docs/link.md +167 -0
  143. package/docs/list-item.json +463 -0
  144. package/docs/list-item.md +236 -0
  145. package/docs/list.json +321 -0
  146. package/docs/list.md +185 -0
  147. package/docs/listbox.json +807 -0
  148. package/docs/listbox.md +413 -0
  149. package/docs/loading-overlay.json +440 -0
  150. package/docs/loading-overlay.md +248 -0
  151. package/docs/markdown.json +461 -0
  152. package/docs/markdown.md +266 -0
  153. package/docs/menu.examples.md +1651 -0
  154. package/docs/menu.json +922 -0
  155. package/docs/menu.md +155 -0
  156. package/docs/menubar.json +292 -0
  157. package/docs/menubar.md +173 -0
  158. package/docs/message-scroller.json +401 -0
  159. package/docs/message-scroller.md +212 -0
  160. package/docs/message.json +862 -0
  161. package/docs/message.md +473 -0
  162. package/docs/multi-select.examples.md +1922 -0
  163. package/docs/multi-select.json +1314 -0
  164. package/docs/multi-select.md +213 -0
  165. package/docs/navigation-menu.json +529 -0
  166. package/docs/navigation-menu.md +329 -0
  167. package/docs/notification-center.json +664 -0
  168. package/docs/notification-center.md +372 -0
  169. package/docs/number-field.examples.md +1078 -0
  170. package/docs/number-field.json +668 -0
  171. package/docs/number-field.md +137 -0
  172. package/docs/otp-input.json +479 -0
  173. package/docs/otp-input.md +291 -0
  174. package/docs/page-header.json +574 -0
  175. package/docs/page-header.md +338 -0
  176. package/docs/page.json +332 -0
  177. package/docs/page.md +184 -0
  178. package/docs/pagination.json +434 -0
  179. package/docs/pagination.md +238 -0
  180. package/docs/popover.examples.md +1235 -0
  181. package/docs/popover.json +656 -0
  182. package/docs/popover.md +199 -0
  183. package/docs/progress-indicator.json +501 -0
  184. package/docs/progress-indicator.md +329 -0
  185. package/docs/prompt-composer.json +498 -0
  186. package/docs/prompt-composer.md +278 -0
  187. package/docs/prose.json +357 -0
  188. package/docs/prose.md +226 -0
  189. package/docs/radio-group.examples.md +626 -0
  190. package/docs/radio-group.json +541 -0
  191. package/docs/radio-group.md +112 -0
  192. package/docs/rating.json +1053 -0
  193. package/docs/rating.md +435 -0
  194. package/docs/result-state.json +376 -0
  195. package/docs/result-state.md +286 -0
  196. package/docs/saved-views.json +384 -0
  197. package/docs/saved-views.md +242 -0
  198. package/docs/scroll-area.json +120 -0
  199. package/docs/scroll-area.md +8 -0
  200. package/docs/section.json +344 -0
  201. package/docs/section.md +208 -0
  202. package/docs/segmented-control.json +429 -0
  203. package/docs/segmented-control.md +240 -0
  204. package/docs/select.examples.md +1214 -0
  205. package/docs/select.json +1147 -0
  206. package/docs/select.md +199 -0
  207. package/docs/side-navigation.json +632 -0
  208. package/docs/side-navigation.md +430 -0
  209. package/docs/skeleton.json +358 -0
  210. package/docs/skeleton.md +223 -0
  211. package/docs/slider.json +522 -0
  212. package/docs/slider.md +261 -0
  213. package/docs/sparkline.json +426 -0
  214. package/docs/sparkline.md +206 -0
  215. package/docs/split-button.json +361 -0
  216. package/docs/split-button.md +275 -0
  217. package/docs/splitter.json +142 -0
  218. package/docs/splitter.md +14 -0
  219. package/docs/stack.json +135 -0
  220. package/docs/stack.md +74 -0
  221. package/docs/stat-card.json +529 -0
  222. package/docs/stat-card.md +270 -0
  223. package/docs/status-indicator.json +314 -0
  224. package/docs/status-indicator.md +197 -0
  225. package/docs/stepper.json +451 -0
  226. package/docs/stepper.md +250 -0
  227. package/docs/switch.json +451 -0
  228. package/docs/switch.md +508 -0
  229. package/docs/table-of-contents.json +553 -0
  230. package/docs/table-of-contents.md +289 -0
  231. package/docs/table.examples.md +1981 -0
  232. package/docs/table.json +1059 -0
  233. package/docs/table.md +290 -0
  234. package/docs/tabs.examples.md +1370 -0
  235. package/docs/tabs.json +661 -0
  236. package/docs/tabs.md +211 -0
  237. package/docs/tag.json +813 -0
  238. package/docs/tag.md +241 -0
  239. package/docs/tags-input.json +771 -0
  240. package/docs/tags-input.md +361 -0
  241. package/docs/text-field.examples.md +821 -0
  242. package/docs/text-field.json +604 -0
  243. package/docs/text-field.md +125 -0
  244. package/docs/textarea.examples.md +612 -0
  245. package/docs/textarea.json +440 -0
  246. package/docs/textarea.md +98 -0
  247. package/docs/time-field.json +584 -0
  248. package/docs/time-field.md +291 -0
  249. package/docs/time-picker.json +679 -0
  250. package/docs/time-picker.md +315 -0
  251. package/docs/time-range-picker.examples.md +191 -0
  252. package/docs/time-range-picker.json +924 -0
  253. package/docs/time-range-picker.md +152 -0
  254. package/docs/timeline.json +839 -0
  255. package/docs/timeline.md +401 -0
  256. package/docs/toast.json +642 -0
  257. package/docs/toast.md +311 -0
  258. package/docs/toggle-group.json +417 -0
  259. package/docs/toggle-group.md +255 -0
  260. package/docs/toggle.json +326 -0
  261. package/docs/toggle.md +222 -0
  262. package/docs/toolbar.json +380 -0
  263. package/docs/toolbar.md +240 -0
  264. package/docs/tooltip.examples.md +664 -0
  265. package/docs/tooltip.json +604 -0
  266. package/docs/tooltip.md +146 -0
  267. package/docs/top-navigation.examples.md +287 -0
  268. package/docs/top-navigation.json +648 -0
  269. package/docs/top-navigation.md +138 -0
  270. package/docs/tour.json +759 -0
  271. package/docs/tour.md +337 -0
  272. package/docs/transfer.json +746 -0
  273. package/docs/transfer.md +273 -0
  274. package/docs/tree.json +918 -0
  275. package/docs/tree.md +397 -0
  276. package/docs/typography.json +317 -0
  277. package/docs/typography.md +107 -0
  278. package/docs/upload.examples.md +358 -0
  279. package/docs/upload.json +1103 -0
  280. package/docs/upload.md +166 -0
  281. package/docs/visually-hidden.json +71 -0
  282. package/docs/visually-hidden.md +42 -0
  283. package/docs/wizard.json +724 -0
  284. package/docs/wizard.md +295 -0
  285. package/fesm2022/slotted-angular-accordion.mjs +247 -0
  286. package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
  287. package/fesm2022/slotted-angular-action-bar.mjs +639 -0
  288. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
  289. package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
  290. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
  291. package/fesm2022/slotted-angular-alert.mjs +427 -0
  292. package/fesm2022/slotted-angular-alert.mjs.map +1 -0
  293. package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
  294. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
  295. package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
  296. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
  297. package/fesm2022/slotted-angular-attachment.mjs +595 -0
  298. package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
  299. package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
  300. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
  301. package/fesm2022/slotted-angular-avatar.mjs +330 -0
  302. package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
  303. package/fesm2022/slotted-angular-badge.mjs +255 -0
  304. package/fesm2022/slotted-angular-badge.mjs.map +1 -0
  305. package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
  306. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
  307. package/fesm2022/slotted-angular-button-group.mjs +146 -0
  308. package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
  309. package/fesm2022/slotted-angular-button.mjs +692 -0
  310. package/fesm2022/slotted-angular-button.mjs.map +1 -0
  311. package/fesm2022/slotted-angular-calendar.mjs +916 -0
  312. package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
  313. package/fesm2022/slotted-angular-card.mjs +225 -0
  314. package/fesm2022/slotted-angular-card.mjs.map +1 -0
  315. package/fesm2022/slotted-angular-carousel.mjs +840 -0
  316. package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
  317. package/fesm2022/slotted-angular-cascader.mjs +1839 -0
  318. package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
  319. package/fesm2022/slotted-angular-chart.mjs +974 -0
  320. package/fesm2022/slotted-angular-chart.mjs.map +1 -0
  321. package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
  322. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
  323. package/fesm2022/slotted-angular-checkbox.mjs +468 -0
  324. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
  325. package/fesm2022/slotted-angular-code-block.mjs +476 -0
  326. package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
  327. package/fesm2022/slotted-angular-collapsible.mjs +479 -0
  328. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
  329. package/fesm2022/slotted-angular-color-picker.mjs +910 -0
  330. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
  331. package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
  332. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
  333. package/fesm2022/slotted-angular-combobox.mjs +1480 -0
  334. package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
  335. package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
  336. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
  337. package/fesm2022/slotted-angular-container.mjs +105 -0
  338. package/fesm2022/slotted-angular-container.mjs.map +1 -0
  339. package/fesm2022/slotted-angular-context-menu.mjs +221 -0
  340. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
  341. package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
  342. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
  343. package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
  344. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
  345. package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
  346. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
  347. package/fesm2022/slotted-angular-data-list.mjs +1418 -0
  348. package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
  349. package/fesm2022/slotted-angular-date-field.mjs +772 -0
  350. package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
  351. package/fesm2022/slotted-angular-date-picker.mjs +690 -0
  352. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
  353. package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
  354. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
  355. package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
  356. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
  357. package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
  358. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
  359. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
  360. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
  361. package/fesm2022/slotted-angular-description-list.mjs +545 -0
  362. package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
  363. package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
  364. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
  365. package/fesm2022/slotted-angular-dialog.mjs +980 -0
  366. package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
  367. package/fesm2022/slotted-angular-divider.mjs +76 -0
  368. package/fesm2022/slotted-angular-divider.mjs.map +1 -0
  369. package/fesm2022/slotted-angular-drawer.mjs +1397 -0
  370. package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
  371. package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
  372. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
  373. package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
  374. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
  375. package/fesm2022/slotted-angular-field-group.mjs +301 -0
  376. package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
  377. package/fesm2022/slotted-angular-field.mjs +928 -0
  378. package/fesm2022/slotted-angular-field.mjs.map +1 -0
  379. package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
  380. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
  381. package/fesm2022/slotted-angular-form.mjs +592 -0
  382. package/fesm2022/slotted-angular-form.mjs.map +1 -0
  383. package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
  384. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
  385. package/fesm2022/slotted-angular-grid.mjs +58 -0
  386. package/fesm2022/slotted-angular-grid.mjs.map +1 -0
  387. package/fesm2022/slotted-angular-highlight.mjs +123 -0
  388. package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
  389. package/fesm2022/slotted-angular-hover-card.mjs +326 -0
  390. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
  391. package/fesm2022/slotted-angular-i18n.mjs +75 -0
  392. package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
  393. package/fesm2022/slotted-angular-icon.mjs +232 -0
  394. package/fesm2022/slotted-angular-icon.mjs.map +1 -0
  395. package/fesm2022/slotted-angular-image.mjs +442 -0
  396. package/fesm2022/slotted-angular-image.mjs.map +1 -0
  397. package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
  398. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
  399. package/fesm2022/slotted-angular-inline-message.mjs +280 -0
  400. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
  401. package/fesm2022/slotted-angular-inline.mjs +52 -0
  402. package/fesm2022/slotted-angular-inline.mjs.map +1 -0
  403. package/fesm2022/slotted-angular-kbd.mjs +284 -0
  404. package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
  405. package/fesm2022/slotted-angular-link.mjs +182 -0
  406. package/fesm2022/slotted-angular-link.mjs.map +1 -0
  407. package/fesm2022/slotted-angular-list-item.mjs +367 -0
  408. package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
  409. package/fesm2022/slotted-angular-list.mjs +256 -0
  410. package/fesm2022/slotted-angular-list.mjs.map +1 -0
  411. package/fesm2022/slotted-angular-listbox.mjs +1274 -0
  412. package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
  413. package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
  414. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
  415. package/fesm2022/slotted-angular-markdown.mjs +914 -0
  416. package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
  417. package/fesm2022/slotted-angular-menu.mjs +1211 -0
  418. package/fesm2022/slotted-angular-menu.mjs.map +1 -0
  419. package/fesm2022/slotted-angular-menubar.mjs +230 -0
  420. package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
  421. package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
  422. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
  423. package/fesm2022/slotted-angular-message.mjs +866 -0
  424. package/fesm2022/slotted-angular-message.mjs.map +1 -0
  425. package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
  426. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
  427. package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
  428. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
  429. package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
  430. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
  431. package/fesm2022/slotted-angular-number-field.mjs +966 -0
  432. package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
  433. package/fesm2022/slotted-angular-otp-input.mjs +629 -0
  434. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
  435. package/fesm2022/slotted-angular-page-header.mjs +788 -0
  436. package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
  437. package/fesm2022/slotted-angular-page.mjs +255 -0
  438. package/fesm2022/slotted-angular-page.mjs.map +1 -0
  439. package/fesm2022/slotted-angular-pagination.mjs +562 -0
  440. package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
  441. package/fesm2022/slotted-angular-popover.mjs +799 -0
  442. package/fesm2022/slotted-angular-popover.mjs.map +1 -0
  443. package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
  444. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
  445. package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
  446. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
  447. package/fesm2022/slotted-angular-prose.mjs +314 -0
  448. package/fesm2022/slotted-angular-prose.mjs.map +1 -0
  449. package/fesm2022/slotted-angular-radio-group.mjs +469 -0
  450. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
  451. package/fesm2022/slotted-angular-rating.mjs +1174 -0
  452. package/fesm2022/slotted-angular-rating.mjs.map +1 -0
  453. package/fesm2022/slotted-angular-result-state.mjs +330 -0
  454. package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
  455. package/fesm2022/slotted-angular-saved-views.mjs +877 -0
  456. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
  457. package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
  458. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
  459. package/fesm2022/slotted-angular-section.mjs +266 -0
  460. package/fesm2022/slotted-angular-section.mjs.map +1 -0
  461. package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
  462. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
  463. package/fesm2022/slotted-angular-select.mjs +1899 -0
  464. package/fesm2022/slotted-angular-select.mjs.map +1 -0
  465. package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
  466. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
  467. package/fesm2022/slotted-angular-skeleton.mjs +316 -0
  468. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
  469. package/fesm2022/slotted-angular-slider.mjs +586 -0
  470. package/fesm2022/slotted-angular-slider.mjs.map +1 -0
  471. package/fesm2022/slotted-angular-sparkline.mjs +235 -0
  472. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
  473. package/fesm2022/slotted-angular-split-button.mjs +331 -0
  474. package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
  475. package/fesm2022/slotted-angular-splitter.mjs +516 -0
  476. package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
  477. package/fesm2022/slotted-angular-stack.mjs +48 -0
  478. package/fesm2022/slotted-angular-stack.mjs.map +1 -0
  479. package/fesm2022/slotted-angular-stat-card.mjs +478 -0
  480. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
  481. package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
  482. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
  483. package/fesm2022/slotted-angular-stepper.mjs +536 -0
  484. package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
  485. package/fesm2022/slotted-angular-switch.mjs +447 -0
  486. package/fesm2022/slotted-angular-switch.mjs.map +1 -0
  487. package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
  488. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
  489. package/fesm2022/slotted-angular-table.mjs +2518 -0
  490. package/fesm2022/slotted-angular-table.mjs.map +1 -0
  491. package/fesm2022/slotted-angular-tabs.mjs +829 -0
  492. package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
  493. package/fesm2022/slotted-angular-tag.mjs +595 -0
  494. package/fesm2022/slotted-angular-tag.mjs.map +1 -0
  495. package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
  496. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
  497. package/fesm2022/slotted-angular-text-field.mjs +674 -0
  498. package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
  499. package/fesm2022/slotted-angular-textarea.mjs +275 -0
  500. package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
  501. package/fesm2022/slotted-angular-theme.mjs +45 -0
  502. package/fesm2022/slotted-angular-theme.mjs.map +1 -0
  503. package/fesm2022/slotted-angular-time-field.mjs +895 -0
  504. package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
  505. package/fesm2022/slotted-angular-time-picker.mjs +856 -0
  506. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
  507. package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
  508. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
  509. package/fesm2022/slotted-angular-timeline.mjs +928 -0
  510. package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
  511. package/fesm2022/slotted-angular-toast.mjs +917 -0
  512. package/fesm2022/slotted-angular-toast.mjs.map +1 -0
  513. package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
  514. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
  515. package/fesm2022/slotted-angular-toggle.mjs +162 -0
  516. package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
  517. package/fesm2022/slotted-angular-toolbar.mjs +536 -0
  518. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
  519. package/fesm2022/slotted-angular-tooltip.mjs +798 -0
  520. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
  521. package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
  522. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
  523. package/fesm2022/slotted-angular-tour.mjs +1330 -0
  524. package/fesm2022/slotted-angular-tour.mjs.map +1 -0
  525. package/fesm2022/slotted-angular-transfer.mjs +1406 -0
  526. package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
  527. package/fesm2022/slotted-angular-tree.mjs +1448 -0
  528. package/fesm2022/slotted-angular-tree.mjs.map +1 -0
  529. package/fesm2022/slotted-angular-typography.mjs +184 -0
  530. package/fesm2022/slotted-angular-typography.mjs.map +1 -0
  531. package/fesm2022/slotted-angular-upload.mjs +1523 -0
  532. package/fesm2022/slotted-angular-upload.mjs.map +1 -0
  533. package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
  534. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
  535. package/fesm2022/slotted-angular-wizard.mjs +1715 -0
  536. package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
  537. package/fesm2022/slotted-angular.mjs +4 -0
  538. package/fesm2022/slotted-angular.mjs.map +1 -0
  539. package/package.json +537 -3
  540. package/types/slotted-angular-accordion.d.ts +156 -0
  541. package/types/slotted-angular-accordion.d.ts.map +1 -0
  542. package/types/slotted-angular-action-bar.d.ts +291 -0
  543. package/types/slotted-angular-action-bar.d.ts.map +1 -0
  544. package/types/slotted-angular-action-sheet.d.ts +294 -0
  545. package/types/slotted-angular-action-sheet.d.ts.map +1 -0
  546. package/types/slotted-angular-alert.d.ts +214 -0
  547. package/types/slotted-angular-alert.d.ts.map +1 -0
  548. package/types/slotted-angular-app-shell.d.ts +549 -0
  549. package/types/slotted-angular-app-shell.d.ts.map +1 -0
  550. package/types/slotted-angular-aspect-ratio.d.ts +57 -0
  551. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
  552. package/types/slotted-angular-attachment.d.ts +294 -0
  553. package/types/slotted-angular-attachment.d.ts.map +1 -0
  554. package/types/slotted-angular-avatar-group.d.ts +119 -0
  555. package/types/slotted-angular-avatar-group.d.ts.map +1 -0
  556. package/types/slotted-angular-avatar.d.ts +202 -0
  557. package/types/slotted-angular-avatar.d.ts.map +1 -0
  558. package/types/slotted-angular-badge.d.ts +166 -0
  559. package/types/slotted-angular-badge.d.ts.map +1 -0
  560. package/types/slotted-angular-breadcrumb.d.ts +251 -0
  561. package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
  562. package/types/slotted-angular-button-group.d.ts +89 -0
  563. package/types/slotted-angular-button-group.d.ts.map +1 -0
  564. package/types/slotted-angular-button.d.ts +390 -0
  565. package/types/slotted-angular-button.d.ts.map +1 -0
  566. package/types/slotted-angular-calendar.d.ts +280 -0
  567. package/types/slotted-angular-calendar.d.ts.map +1 -0
  568. package/types/slotted-angular-card.d.ts +140 -0
  569. package/types/slotted-angular-card.d.ts.map +1 -0
  570. package/types/slotted-angular-carousel.d.ts +288 -0
  571. package/types/slotted-angular-carousel.d.ts.map +1 -0
  572. package/types/slotted-angular-cascader.d.ts +351 -0
  573. package/types/slotted-angular-cascader.d.ts.map +1 -0
  574. package/types/slotted-angular-chart.d.ts +319 -0
  575. package/types/slotted-angular-chart.d.ts.map +1 -0
  576. package/types/slotted-angular-checkbox-group.d.ts +156 -0
  577. package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
  578. package/types/slotted-angular-checkbox.d.ts +197 -0
  579. package/types/slotted-angular-checkbox.d.ts.map +1 -0
  580. package/types/slotted-angular-code-block.d.ts +158 -0
  581. package/types/slotted-angular-code-block.d.ts.map +1 -0
  582. package/types/slotted-angular-collapsible.d.ts +272 -0
  583. package/types/slotted-angular-collapsible.d.ts.map +1 -0
  584. package/types/slotted-angular-color-picker.d.ts +181 -0
  585. package/types/slotted-angular-color-picker.d.ts.map +1 -0
  586. package/types/slotted-angular-column-manager.d.ts +200 -0
  587. package/types/slotted-angular-column-manager.d.ts.map +1 -0
  588. package/types/slotted-angular-combobox.d.ts +449 -0
  589. package/types/slotted-angular-combobox.d.ts.map +1 -0
  590. package/types/slotted-angular-command-palette.d.ts +256 -0
  591. package/types/slotted-angular-command-palette.d.ts.map +1 -0
  592. package/types/slotted-angular-container.d.ts +84 -0
  593. package/types/slotted-angular-container.d.ts.map +1 -0
  594. package/types/slotted-angular-context-menu.d.ts +84 -0
  595. package/types/slotted-angular-context-menu.d.ts.map +1 -0
  596. package/types/slotted-angular-currency-field.d.ts +480 -0
  597. package/types/slotted-angular-currency-field.d.ts.map +1 -0
  598. package/types/slotted-angular-dashboard-grid.d.ts +341 -0
  599. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
  600. package/types/slotted-angular-data-grid.d.ts +1077 -0
  601. package/types/slotted-angular-data-grid.d.ts.map +1 -0
  602. package/types/slotted-angular-data-list.d.ts +272 -0
  603. package/types/slotted-angular-data-list.d.ts.map +1 -0
  604. package/types/slotted-angular-date-field.d.ts +320 -0
  605. package/types/slotted-angular-date-field.d.ts.map +1 -0
  606. package/types/slotted-angular-date-picker.d.ts +224 -0
  607. package/types/slotted-angular-date-picker.d.ts.map +1 -0
  608. package/types/slotted-angular-date-range-picker.d.ts +310 -0
  609. package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
  610. package/types/slotted-angular-datetime-field.d.ts +362 -0
  611. package/types/slotted-angular-datetime-field.d.ts.map +1 -0
  612. package/types/slotted-angular-datetime-picker.d.ts +370 -0
  613. package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
  614. package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
  615. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
  616. package/types/slotted-angular-description-list.d.ts +281 -0
  617. package/types/slotted-angular-description-list.d.ts.map +1 -0
  618. package/types/slotted-angular-detail-panel.d.ts +240 -0
  619. package/types/slotted-angular-detail-panel.d.ts.map +1 -0
  620. package/types/slotted-angular-dialog.d.ts +497 -0
  621. package/types/slotted-angular-dialog.d.ts.map +1 -0
  622. package/types/slotted-angular-divider.d.ts +40 -0
  623. package/types/slotted-angular-divider.d.ts.map +1 -0
  624. package/types/slotted-angular-drawer.d.ts +532 -0
  625. package/types/slotted-angular-drawer.d.ts.map +1 -0
  626. package/types/slotted-angular-entity-picker.d.ts +338 -0
  627. package/types/slotted-angular-entity-picker.d.ts.map +1 -0
  628. package/types/slotted-angular-event-calendar.d.ts +574 -0
  629. package/types/slotted-angular-event-calendar.d.ts.map +1 -0
  630. package/types/slotted-angular-field-group.d.ts +152 -0
  631. package/types/slotted-angular-field-group.d.ts.map +1 -0
  632. package/types/slotted-angular-field.d.ts +535 -0
  633. package/types/slotted-angular-field.d.ts.map +1 -0
  634. package/types/slotted-angular-filter-bar.d.ts +573 -0
  635. package/types/slotted-angular-filter-bar.d.ts.map +1 -0
  636. package/types/slotted-angular-form.d.ts +298 -0
  637. package/types/slotted-angular-form.d.ts.map +1 -0
  638. package/types/slotted-angular-fullscreen.d.ts +145 -0
  639. package/types/slotted-angular-fullscreen.d.ts.map +1 -0
  640. package/types/slotted-angular-grid.d.ts +50 -0
  641. package/types/slotted-angular-grid.d.ts.map +1 -0
  642. package/types/slotted-angular-highlight.d.ts +93 -0
  643. package/types/slotted-angular-highlight.d.ts.map +1 -0
  644. package/types/slotted-angular-hover-card.d.ts +140 -0
  645. package/types/slotted-angular-hover-card.d.ts.map +1 -0
  646. package/types/slotted-angular-i18n.d.ts +46 -0
  647. package/types/slotted-angular-i18n.d.ts.map +1 -0
  648. package/types/slotted-angular-icon.d.ts +94 -0
  649. package/types/slotted-angular-icon.d.ts.map +1 -0
  650. package/types/slotted-angular-image.d.ts +251 -0
  651. package/types/slotted-angular-image.d.ts.map +1 -0
  652. package/types/slotted-angular-import-export-center.d.ts +351 -0
  653. package/types/slotted-angular-import-export-center.d.ts.map +1 -0
  654. package/types/slotted-angular-inline-message.d.ts +195 -0
  655. package/types/slotted-angular-inline-message.d.ts.map +1 -0
  656. package/types/slotted-angular-inline.d.ts +41 -0
  657. package/types/slotted-angular-inline.d.ts.map +1 -0
  658. package/types/slotted-angular-kbd.d.ts +174 -0
  659. package/types/slotted-angular-kbd.d.ts.map +1 -0
  660. package/types/slotted-angular-link.d.ts +94 -0
  661. package/types/slotted-angular-link.d.ts.map +1 -0
  662. package/types/slotted-angular-list-item.d.ts +210 -0
  663. package/types/slotted-angular-list-item.d.ts.map +1 -0
  664. package/types/slotted-angular-list.d.ts +176 -0
  665. package/types/slotted-angular-list.d.ts.map +1 -0
  666. package/types/slotted-angular-listbox.d.ts +470 -0
  667. package/types/slotted-angular-listbox.d.ts.map +1 -0
  668. package/types/slotted-angular-loading-overlay.d.ts +219 -0
  669. package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
  670. package/types/slotted-angular-markdown.d.ts +172 -0
  671. package/types/slotted-angular-markdown.d.ts.map +1 -0
  672. package/types/slotted-angular-menu.d.ts +448 -0
  673. package/types/slotted-angular-menu.d.ts.map +1 -0
  674. package/types/slotted-angular-menubar.d.ts +90 -0
  675. package/types/slotted-angular-menubar.d.ts.map +1 -0
  676. package/types/slotted-angular-message-scroller.d.ts +151 -0
  677. package/types/slotted-angular-message-scroller.d.ts.map +1 -0
  678. package/types/slotted-angular-message.d.ts +348 -0
  679. package/types/slotted-angular-message.d.ts.map +1 -0
  680. package/types/slotted-angular-multi-select.d.ts +462 -0
  681. package/types/slotted-angular-multi-select.d.ts.map +1 -0
  682. package/types/slotted-angular-navigation-menu.d.ts +309 -0
  683. package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
  684. package/types/slotted-angular-notification-center.d.ts +318 -0
  685. package/types/slotted-angular-notification-center.d.ts.map +1 -0
  686. package/types/slotted-angular-number-field.d.ts +402 -0
  687. package/types/slotted-angular-number-field.d.ts.map +1 -0
  688. package/types/slotted-angular-otp-input.d.ts +286 -0
  689. package/types/slotted-angular-otp-input.d.ts.map +1 -0
  690. package/types/slotted-angular-page-header.d.ts +334 -0
  691. package/types/slotted-angular-page-header.d.ts.map +1 -0
  692. package/types/slotted-angular-page.d.ts +141 -0
  693. package/types/slotted-angular-page.d.ts.map +1 -0
  694. package/types/slotted-angular-pagination.d.ts +213 -0
  695. package/types/slotted-angular-pagination.d.ts.map +1 -0
  696. package/types/slotted-angular-popover.d.ts +366 -0
  697. package/types/slotted-angular-popover.d.ts.map +1 -0
  698. package/types/slotted-angular-progress-indicator.d.ts +312 -0
  699. package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
  700. package/types/slotted-angular-prompt-composer.d.ts +242 -0
  701. package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
  702. package/types/slotted-angular-prose.d.ts +171 -0
  703. package/types/slotted-angular-prose.d.ts.map +1 -0
  704. package/types/slotted-angular-radio-group.d.ts +268 -0
  705. package/types/slotted-angular-radio-group.d.ts.map +1 -0
  706. package/types/slotted-angular-rating.d.ts +374 -0
  707. package/types/slotted-angular-rating.d.ts.map +1 -0
  708. package/types/slotted-angular-result-state.d.ts +217 -0
  709. package/types/slotted-angular-result-state.d.ts.map +1 -0
  710. package/types/slotted-angular-saved-views.d.ts +198 -0
  711. package/types/slotted-angular-saved-views.d.ts.map +1 -0
  712. package/types/slotted-angular-scroll-area.d.ts +186 -0
  713. package/types/slotted-angular-scroll-area.d.ts.map +1 -0
  714. package/types/slotted-angular-section.d.ts +143 -0
  715. package/types/slotted-angular-section.d.ts.map +1 -0
  716. package/types/slotted-angular-segmented-control.d.ts +251 -0
  717. package/types/slotted-angular-segmented-control.d.ts.map +1 -0
  718. package/types/slotted-angular-select.d.ts +507 -0
  719. package/types/slotted-angular-select.d.ts.map +1 -0
  720. package/types/slotted-angular-side-navigation.d.ts +373 -0
  721. package/types/slotted-angular-side-navigation.d.ts.map +1 -0
  722. package/types/slotted-angular-skeleton.d.ts +198 -0
  723. package/types/slotted-angular-skeleton.d.ts.map +1 -0
  724. package/types/slotted-angular-slider.d.ts +216 -0
  725. package/types/slotted-angular-slider.d.ts.map +1 -0
  726. package/types/slotted-angular-sparkline.d.ts +106 -0
  727. package/types/slotted-angular-sparkline.d.ts.map +1 -0
  728. package/types/slotted-angular-split-button.d.ts +180 -0
  729. package/types/slotted-angular-split-button.d.ts.map +1 -0
  730. package/types/slotted-angular-splitter.d.ts +206 -0
  731. package/types/slotted-angular-splitter.d.ts.map +1 -0
  732. package/types/slotted-angular-stack.d.ts +38 -0
  733. package/types/slotted-angular-stack.d.ts.map +1 -0
  734. package/types/slotted-angular-stat-card.d.ts +232 -0
  735. package/types/slotted-angular-stat-card.d.ts.map +1 -0
  736. package/types/slotted-angular-status-indicator.d.ts +106 -0
  737. package/types/slotted-angular-status-indicator.d.ts.map +1 -0
  738. package/types/slotted-angular-stepper.d.ts +198 -0
  739. package/types/slotted-angular-stepper.d.ts.map +1 -0
  740. package/types/slotted-angular-switch.d.ts +243 -0
  741. package/types/slotted-angular-switch.d.ts.map +1 -0
  742. package/types/slotted-angular-table-of-contents.d.ts +210 -0
  743. package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
  744. package/types/slotted-angular-table.d.ts +888 -0
  745. package/types/slotted-angular-table.d.ts.map +1 -0
  746. package/types/slotted-angular-tabs.d.ts +340 -0
  747. package/types/slotted-angular-tabs.d.ts.map +1 -0
  748. package/types/slotted-angular-tag.d.ts +279 -0
  749. package/types/slotted-angular-tag.d.ts.map +1 -0
  750. package/types/slotted-angular-tags-input.d.ts +302 -0
  751. package/types/slotted-angular-tags-input.d.ts.map +1 -0
  752. package/types/slotted-angular-text-field.d.ts +334 -0
  753. package/types/slotted-angular-text-field.d.ts.map +1 -0
  754. package/types/slotted-angular-textarea.d.ts +150 -0
  755. package/types/slotted-angular-textarea.d.ts.map +1 -0
  756. package/types/slotted-angular-theme.d.ts +26 -0
  757. package/types/slotted-angular-theme.d.ts.map +1 -0
  758. package/types/slotted-angular-time-field.d.ts +300 -0
  759. package/types/slotted-angular-time-field.d.ts.map +1 -0
  760. package/types/slotted-angular-time-picker.d.ts +260 -0
  761. package/types/slotted-angular-time-picker.d.ts.map +1 -0
  762. package/types/slotted-angular-time-range-picker.d.ts +401 -0
  763. package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
  764. package/types/slotted-angular-timeline.d.ts +329 -0
  765. package/types/slotted-angular-timeline.d.ts.map +1 -0
  766. package/types/slotted-angular-toast.d.ts +340 -0
  767. package/types/slotted-angular-toast.d.ts.map +1 -0
  768. package/types/slotted-angular-toggle-group.d.ts +167 -0
  769. package/types/slotted-angular-toggle-group.d.ts.map +1 -0
  770. package/types/slotted-angular-toggle.d.ts +106 -0
  771. package/types/slotted-angular-toggle.d.ts.map +1 -0
  772. package/types/slotted-angular-toolbar.d.ts +252 -0
  773. package/types/slotted-angular-toolbar.d.ts.map +1 -0
  774. package/types/slotted-angular-tooltip.d.ts +388 -0
  775. package/types/slotted-angular-tooltip.d.ts.map +1 -0
  776. package/types/slotted-angular-top-navigation.d.ts +442 -0
  777. package/types/slotted-angular-top-navigation.d.ts.map +1 -0
  778. package/types/slotted-angular-tour.d.ts +440 -0
  779. package/types/slotted-angular-tour.d.ts.map +1 -0
  780. package/types/slotted-angular-transfer.d.ts +296 -0
  781. package/types/slotted-angular-transfer.d.ts.map +1 -0
  782. package/types/slotted-angular-tree.d.ts +499 -0
  783. package/types/slotted-angular-tree.d.ts.map +1 -0
  784. package/types/slotted-angular-typography.d.ts +89 -0
  785. package/types/slotted-angular-typography.d.ts.map +1 -0
  786. package/types/slotted-angular-upload.d.ts +365 -0
  787. package/types/slotted-angular-upload.d.ts.map +1 -0
  788. package/types/slotted-angular-visually-hidden.d.ts +19 -0
  789. package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
  790. package/types/slotted-angular-wizard.d.ts +441 -0
  791. package/types/slotted-angular-wizard.d.ts.map +1 -0
  792. package/types/slotted-angular.d.ts +3 -0
  793. package/types/slotted-angular.d.ts.map +1 -0
@@ -0,0 +1,1214 @@
1
+ <!-- index: ./index.md -->
2
+ # select
3
+
4
+ `data-ui="select"` · Picks one option from a popup list.
5
+
6
+ ## Examples
7
+
8
+ ### Playground
9
+
10
+ One select with every axis on it, driven by the controls under the canvas. Change size, variant and width and watch the control and its popup answer together.
11
+
12
+ Excerpt — not a complete module
13
+
14
+ ```html
15
+ <sl-select aria-label="Fruit" placeholder="Choose a fruit">
16
+ <sl-select-item value="apple">Apple</sl-select-item>
17
+ <sl-select-item value="blueberry">Blueberry</sl-select-item>
18
+ </sl-select>
19
+ ```
20
+
21
+ ### Two-way, and the request
22
+
23
+ The model moves the value in both directions; the request output arrives first and carries the reason, so a page can tell a press from a key — or refuse the change.
24
+
25
+ Excerpt — not a complete module
26
+
27
+ ```html
28
+ <sl-select [(value)]="fruit" (valueChangeRequest)="log($event.reason)">…</sl-select>
29
+ ```
30
+
31
+ ### Placeholder and unresolved values
32
+
33
+ Nothing chosen shows the placeholder in the muted step. A value the collection cannot name shows the value itself, which is what an async list holds for one render.
34
+
35
+ Example
36
+
37
+ ```ts
38
+ import { Component } from '@angular/core';
39
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
40
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
41
+ import { SlStack } from '@slotted/angular/stack';
42
+
43
+ const REASONS: SelectOption[] = [
44
+ { value: 'damaged', label: 'Arrived damaged' },
45
+ { value: 'wrong-item', label: 'Wrong item shipped' },
46
+ { value: 'not-needed', label: 'No longer needed' },
47
+ ];
48
+
49
+ const TERMS: SelectOption[] = [
50
+ { value: 'prepaid', label: 'Prepaid' },
51
+ { value: 'net-30', label: 'Net 30' },
52
+ { value: 'net-45', label: 'Net 45' },
53
+ ];
54
+
55
+ @Component({
56
+ selector: 'app-select-placeholder',
57
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem, SlStack],
58
+ template: `
59
+ <div slStack [gap]="5">
60
+ <div slField>
61
+ <label slFieldLabel>Return reason</label>
62
+ <sl-select placeholder="Choose a reason">
63
+ @for (reason of reasons; track reason.value) {
64
+ <sl-select-item [value]="reason.value">{{ reason.label }}</sl-select-item>
65
+ }
66
+ </sl-select>
67
+ </div>
68
+ <div slField>
69
+ <label slFieldLabel>Payment terms</label>
70
+ <sl-select placeholder="Choose terms" value="net-30" [items]="terms">
71
+ @for (term of terms; track term.value) {
72
+ <sl-select-item [value]="term.value">{{ term.label }}</sl-select-item>
73
+ }
74
+ </sl-select>
75
+ </div>
76
+ </div>
77
+ `,
78
+ })
79
+ export class SelectPlaceholder {
80
+ protected readonly reasons = REASONS;
81
+ protected readonly terms = TERMS;
82
+ }
83
+ ```
84
+
85
+ ### Groups, icons and descriptions
86
+
87
+ Two named groups with a line between them. Every label starts on the same line whether or not its option carries artwork, because the column belongs to the list.
88
+
89
+ Example
90
+
91
+ ```ts
92
+ import { Component } from '@angular/core';
93
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
94
+ import {
95
+ SlSelect,
96
+ SlSelectGroup,
97
+ SlSelectItem,
98
+ SlSelectSeparator,
99
+ type SelectOptionGroup,
100
+ } from '@slotted/angular/select';
101
+
102
+ const METHODS: SelectOptionGroup[] = [
103
+ {
104
+ label: 'Ground',
105
+ options: [
106
+ { value: 'ups-ground', label: 'UPS Ground' },
107
+ { value: 'fedex-ground', label: 'FedEx Ground' },
108
+ ],
109
+ },
110
+ {
111
+ label: 'Express',
112
+ options: [
113
+ { value: 'ups-2day', label: 'UPS 2nd Day Air' },
114
+ { value: 'fedex-overnight', label: 'FedEx Priority Overnight' },
115
+ ],
116
+ },
117
+ {
118
+ label: 'Freight',
119
+ options: [{ value: 'ltl', label: 'LTL freight, palletised' }],
120
+ },
121
+ ];
122
+
123
+ @Component({
124
+ selector: 'app-select-groups',
125
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectGroup, SlSelectItem, SlSelectSeparator],
126
+ template: `
127
+ <div slField>
128
+ <label slFieldLabel>Shipping method</label>
129
+ <sl-select placeholder="Choose a method">
130
+ @for (group of methods; track group.label; let first = $first) {
131
+ @if (!first) {
132
+ <sl-select-separator />
133
+ }
134
+ <sl-select-group [label]="group.label">
135
+ @for (method of group.options; track method.value) {
136
+ <sl-select-item [value]="method.value">{{ method.label }}</sl-select-item>
137
+ }
138
+ </sl-select-group>
139
+ }
140
+ </sl-select>
141
+ </div>
142
+ `,
143
+ })
144
+ export class SelectGroups {
145
+ protected readonly methods = METHODS;
146
+ }
147
+ ```
148
+
149
+ ### Multiple selection
150
+
151
+ The popup stays open as options are taken, and the control shows the first label and how many more. Space toggles without closing, which is the listbox pattern’s own model.
152
+
153
+ Example
154
+
155
+ ```ts
156
+ import { Component, signal } from '@angular/core';
157
+ import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
158
+ import {
159
+ SlSelect,
160
+ SlSelectItem,
161
+ type SelectOption,
162
+ type SelectSelection,
163
+ } from '@slotted/angular/select';
164
+
165
+ const TEAMS: SelectOption[] = [
166
+ { value: 'fulfilment', label: 'Fulfilment' },
167
+ { value: 'finance', label: 'Finance' },
168
+ { value: 'customer-care', label: 'Customer care' },
169
+ { value: 'purchasing', label: 'Purchasing' },
170
+ { value: 'returns', label: 'Returns desk' },
171
+ ];
172
+
173
+ @Component({
174
+ selector: 'app-select-multiple',
175
+ imports: [SlField, SlFieldDescription, SlFieldLabel, SlSelect, SlSelectItem],
176
+ template: `
177
+ <div slField>
178
+ <label slFieldLabel>Notify teams</label>
179
+ <sl-select
180
+ multiple
181
+ clearable
182
+ placeholder="No one is notified"
183
+ [items]="teams"
184
+ [(value)]="notified"
185
+ >
186
+ @for (team of teams; track team.value) {
187
+ <sl-select-item [value]="team.value">{{ team.label }}</sl-select-item>
188
+ }
189
+ </sl-select>
190
+ <span slFieldDescription>Each team gets an email when the order is delayed.</span>
191
+ </div>
192
+ `,
193
+ })
194
+ export class SelectMultiple {
195
+ protected readonly teams = TEAMS;
196
+ protected readonly notified = signal<SelectSelection>(['fulfilment', 'finance']);
197
+ }
198
+ ```
199
+
200
+ ### Clearable
201
+
202
+ The clear button appears only once something is chosen, and focus goes back to the control it belonged to rather than to the document.
203
+
204
+ Example
205
+
206
+ ```ts
207
+ import { Component } from '@angular/core';
208
+ import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
209
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
210
+
211
+ const OWNERS: SelectOption[] = [
212
+ { value: 'avery', label: 'Avery Collins' },
213
+ { value: 'kenji', label: 'Kenji Watanabe' },
214
+ { value: 'lucia', label: 'Lucía Fernández' },
215
+ { value: 'ruth', label: 'Ruth Adeyemi' },
216
+ ];
217
+
218
+ @Component({
219
+ selector: 'app-select-clearable',
220
+ imports: [SlField, SlFieldDescription, SlFieldLabel, SlSelect, SlSelectItem],
221
+ template: `
222
+ <div slField>
223
+ <label slFieldLabel>Assignee</label>
224
+ <sl-select clearable placeholder="Unassigned" value="kenji" [items]="owners">
225
+ @for (owner of owners; track owner.value) {
226
+ <sl-select-item [value]="owner.value">{{ owner.label }}</sl-select-item>
227
+ }
228
+ </sl-select>
229
+ <span slFieldDescription>Clear the assignee to return the ticket to the queue.</span>
230
+ </div>
231
+ `,
232
+ })
233
+ export class SelectClearable {
234
+ protected readonly owners = OWNERS;
235
+ }
236
+ ```
237
+
238
+ ### Sizes
239
+
240
+ Three steps, and every one of them reads control geometry — so a select beside a text field of the same size is the same height to the pixel.
241
+
242
+ Example
243
+
244
+ ```ts
245
+ import { Component } from '@angular/core';
246
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
247
+ import {
248
+ SlSelect,
249
+ SlSelectItem,
250
+ type SelectOption,
251
+ type SelectSize,
252
+ } from '@slotted/angular/select';
253
+ import { SlStack } from '@slotted/angular/stack';
254
+
255
+ const SIZES: { size: SelectSize; label: string }[] = [
256
+ { size: 'sm', label: 'Small' },
257
+ { size: 'md', label: 'Medium' },
258
+ { size: 'lg', label: 'Large' },
259
+ ];
260
+
261
+ const WAREHOUSES: SelectOption[] = [
262
+ { value: 'RNO', label: 'Reno, NV' },
263
+ { value: 'CMH', label: 'Columbus, OH' },
264
+ { value: 'SAV', label: 'Savannah, GA' },
265
+ ];
266
+
267
+ @Component({
268
+ selector: 'app-select-sizes',
269
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem, SlStack],
270
+ template: `
271
+ <div slStack [gap]="5">
272
+ @for (step of sizes; track step.size) {
273
+ <div slField>
274
+ <label slFieldLabel>{{ step.label }}</label>
275
+ <sl-select value="RNO" [size]="step.size" [items]="warehouses">
276
+ @for (warehouse of warehouses; track warehouse.value) {
277
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
278
+ }
279
+ </sl-select>
280
+ </div>
281
+ }
282
+ </div>
283
+ `,
284
+ })
285
+ export class SelectSizes {
286
+ protected readonly sizes = SIZES;
287
+ protected readonly warehouses = WAREHOUSES;
288
+ }
289
+ ```
290
+
291
+ ### Variants
292
+
293
+ outline on the page, subtle where a form sinks into its card, and plain for a table cell that is only a control while it is being used.
294
+
295
+ Example
296
+
297
+ ```ts
298
+ import { Component } from '@angular/core';
299
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
300
+ import { SlSelect, SlSelectItem, type SelectVariant } from '@slotted/angular/select';
301
+ import { SlStack } from '@slotted/angular/stack';
302
+
303
+ const VARIANTS: { variant: SelectVariant; label: string }[] = [
304
+ { variant: 'outline', label: 'Outline' },
305
+ { variant: 'subtle', label: 'Subtle' },
306
+ { variant: 'plain', label: 'Plain' },
307
+ ];
308
+
309
+ const WAREHOUSES = [
310
+ { value: 'RNO', label: 'Reno, NV' },
311
+ { value: 'CMH', label: 'Columbus, OH' },
312
+ { value: 'SAV', label: 'Savannah, GA' },
313
+ ];
314
+
315
+ @Component({
316
+ selector: 'app-select-variants',
317
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem, SlStack],
318
+ template: `
319
+ <div slStack [gap]="5">
320
+ @for (step of variants; track step.variant) {
321
+ <div slField>
322
+ <label slFieldLabel>{{ step.label }}</label>
323
+ <sl-select placeholder="Choose a warehouse" [variant]="step.variant">
324
+ @for (warehouse of warehouses; track warehouse.value) {
325
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
326
+ }
327
+ </sl-select>
328
+ </div>
329
+ }
330
+ </div>
331
+ `,
332
+ })
333
+ export class SelectVariants {
334
+ protected readonly variants = VARIANTS;
335
+ protected readonly warehouses = WAREHOUSES;
336
+ }
337
+ ```
338
+
339
+ ### States
340
+
341
+ Required, invalid, read-only and disabled side by side. Read-only keeps its value legible and refuses to open; disabled answers nothing at all.
342
+
343
+ Example
344
+
345
+ ```ts
346
+ import { Component } from '@angular/core';
347
+ import { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
348
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
349
+ import { SlStack } from '@slotted/angular/stack';
350
+
351
+ const WAREHOUSES: SelectOption[] = [
352
+ { value: 'RNO', label: 'Reno, NV' },
353
+ { value: 'CMH', label: 'Columbus, OH' },
354
+ { value: 'SAV', label: 'Savannah, GA' },
355
+ ];
356
+
357
+ @Component({
358
+ selector: 'app-select-states',
359
+ imports: [
360
+ SlField,
361
+ SlFieldDescription,
362
+ SlFieldError,
363
+ SlFieldLabel,
364
+ SlSelect,
365
+ SlSelectItem,
366
+ SlStack,
367
+ ],
368
+ template: `
369
+ <div slStack [gap]="5">
370
+ <div slField invalid required>
371
+ <label slFieldLabel>Return warehouse</label>
372
+ <sl-select value="SAV" [items]="warehouses">
373
+ @for (warehouse of warehouses; track warehouse.value) {
374
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
375
+ }
376
+ </sl-select>
377
+ <span slFieldError>Savannah does not accept returns. Choose Reno or Columbus.</span>
378
+ </div>
379
+ <div slField readOnly>
380
+ <label slFieldLabel>Origin warehouse</label>
381
+ <sl-select value="RNO" [items]="warehouses">
382
+ @for (warehouse of warehouses; track warehouse.value) {
383
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
384
+ }
385
+ </sl-select>
386
+ <span slFieldDescription>Set when the order was picked.</span>
387
+ </div>
388
+ <div slField disabled>
389
+ <label slFieldLabel>Transfer warehouse</label>
390
+ <sl-select value="CMH" [items]="warehouses">
391
+ @for (warehouse of warehouses; track warehouse.value) {
392
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
393
+ }
394
+ </sl-select>
395
+ <span slFieldDescription>Transfers open once the order is invoiced.</span>
396
+ </div>
397
+ </div>
398
+ `,
399
+ })
400
+ export class SelectStates {
401
+ protected readonly warehouses = WAREHOUSES;
402
+ }
403
+ ```
404
+
405
+ ### Loading and empty
406
+
407
+ A popup with nothing in it opens onto a sentence rather than onto a two-pixel box, and a loading one keeps that measure so nothing jumps when the options land.
408
+
409
+ Excerpt — not a complete module
410
+
411
+ ```html
412
+ <sl-select loading [messages]="{ loading: 'Fetching teams…' }">…</sl-select>
413
+ <sl-select [messages]="{ empty: 'No teams yet' }"></sl-select>
414
+ ```
415
+
416
+ ### Content the family did not choose
417
+
418
+ A translated label, an unbroken identifier and a hundred options. The label clamps at two lines with the whole string still in the DOM, and the token breaks inside the option.
419
+
420
+ Excerpt — not a complete module
421
+
422
+ ```html
423
+ <sl-select-item value="urn">urn:acme:catalogue:9f2c41ab8de07c5511903fbe</sl-select-item>
424
+ ```
425
+
426
+ ### Searching a long list
427
+
428
+ search opens the popup onto a field. The query filters the options, the span it matched is marked, and the count is announced. It is transient: it never becomes a value, it is emptied when an option is taken, and the control goes on showing the chosen label. Escape clears the query before it closes the popup, and Tab commits and leaves the control.
429
+
430
+ Example
431
+
432
+ ```ts
433
+ import { Component } from '@angular/core';
434
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
435
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
436
+
437
+ const COUNTRIES: SelectOption[] = [
438
+ { value: 'AR', label: 'Argentina' },
439
+ { value: 'AU', label: 'Australia' },
440
+ { value: 'AT', label: 'Austria' },
441
+ { value: 'BE', label: 'Belgium' },
442
+ { value: 'BR', label: 'Brazil' },
443
+ { value: 'CA', label: 'Canada' },
444
+ { value: 'CL', label: 'Chile' },
445
+ { value: 'CO', label: 'Colombia' },
446
+ { value: 'CI', label: 'Côte d’Ivoire' },
447
+ { value: 'DK', label: 'Denmark' },
448
+ { value: 'FI', label: 'Finland' },
449
+ { value: 'FR', label: 'France' },
450
+ { value: 'DE', label: 'Germany' },
451
+ { value: 'IE', label: 'Ireland' },
452
+ { value: 'IT', label: 'Italy' },
453
+ { value: 'JP', label: 'Japan' },
454
+ { value: 'MX', label: 'Mexico' },
455
+ { value: 'NL', label: 'Netherlands' },
456
+ { value: 'NZ', label: 'New Zealand' },
457
+ { value: 'NO', label: 'Norway' },
458
+ { value: 'PL', label: 'Poland' },
459
+ { value: 'PT', label: 'Portugal' },
460
+ { value: 'ES', label: 'Spain' },
461
+ { value: 'SE', label: 'Sweden' },
462
+ { value: 'CH', label: 'Switzerland' },
463
+ { value: 'TR', label: 'Türkiye' },
464
+ { value: 'GB', label: 'United Kingdom' },
465
+ { value: 'US', label: 'United States' },
466
+ { value: 'UY', label: 'Uruguay' },
467
+ { value: 'VN', label: 'Vietnam' },
468
+ ];
469
+
470
+ @Component({
471
+ selector: 'app-select-search',
472
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem],
473
+ template: `
474
+ <div slField>
475
+ <label slFieldLabel>Ship-to country</label>
476
+ <sl-select
477
+ search
478
+ placeholder="Choose a country"
479
+ value="US"
480
+ [items]="countries"
481
+ [messages]="{ searchPlaceholder: 'Filter countries' }"
482
+ >
483
+ @for (country of countries; track country.value) {
484
+ <sl-select-item [value]="country.value" [label]="country.label" />
485
+ }
486
+ </sl-select>
487
+ </div>
488
+ `,
489
+ })
490
+ export class SelectSearch {
491
+ protected readonly countries = COUNTRIES;
492
+ }
493
+ ```
494
+
495
+ ### Placement and width
496
+
497
+ The popup hangs from the start edge of its control. It is never narrower than the control and grows when an option needs more room, so a narrow control does not wrap its labels. width="anchor" pins it to the width of the control.
498
+
499
+ Example
500
+
501
+ ```ts
502
+ import { Component } from '@angular/core';
503
+ import { SlInline } from '@slotted/angular/inline';
504
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
505
+
506
+ const PAGE_SIZES: SelectOption[] = [
507
+ { value: '25', label: '25 rows' },
508
+ { value: '50', label: '50 rows' },
509
+ { value: '100', label: '100 rows' },
510
+ ];
511
+
512
+ const SORTS: (SelectOption & { description: string })[] = [
513
+ { value: 'newest', label: 'Newest', description: 'Most recent order date first.' },
514
+ { value: 'total', label: 'Total', description: 'Largest order total first.' },
515
+ { value: 'ship-date', label: 'Ship date', description: 'Earliest promised ship date first.' },
516
+ ];
517
+
518
+ @Component({
519
+ selector: 'app-select-placement',
520
+ imports: [SlInline, SlSelect, SlSelectItem],
521
+ template: `
522
+ <div slInline [gap]="3" justify="between" align="center">
523
+ <sl-select
524
+ aria-label="Rows per page"
525
+ side="top"
526
+ value="25"
527
+ [fullWidth]="false"
528
+ [items]="pageSizes"
529
+ >
530
+ @for (size of pageSizes; track size.value) {
531
+ <sl-select-item [value]="size.value">{{ size.label }}</sl-select-item>
532
+ }
533
+ </sl-select>
534
+ <sl-select
535
+ aria-label="Sort orders"
536
+ align="end"
537
+ width="content"
538
+ value="newest"
539
+ [fullWidth]="false"
540
+ [items]="sorts"
541
+ >
542
+ @for (sort of sorts; track sort.value) {
543
+ <sl-select-item [value]="sort.value" [description]="sort.description">{{
544
+ sort.label
545
+ }}</sl-select-item>
546
+ }
547
+ </sl-select>
548
+ </div>
549
+ `,
550
+ })
551
+ export class SelectPlacement {
552
+ protected readonly pageSizes = PAGE_SIZES;
553
+ protected readonly sorts = SORTS;
554
+ }
555
+ ```
556
+
557
+ ### Keyboard
558
+
559
+ Focus never leaves the button: the arrows, Home, End and the page keys move aria-activedescendant, and typing jumps to the first option that begins with it.
560
+
561
+ Excerpt — not a complete module
562
+
563
+ ```html
564
+ <sl-select typeahead [typeaheadTimeout]="500" [loop]="false">…</sl-select>
565
+ ```
566
+
567
+ ### In a Reactive Form
568
+
569
+ The control is a ControlValueAccessor and a Validator, so formControl moves the value and required is reported by the family — the hidden native select always holds an option, so the browser cannot answer it.
570
+
571
+ Example
572
+
573
+ ```ts
574
+ import { Component, computed, signal } from '@angular/core';
575
+ import { toSignal } from '@angular/core/rxjs-interop';
576
+ import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
577
+ import { SlButton } from '@slotted/angular/button';
578
+ import { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';
579
+ import { SlInline } from '@slotted/angular/inline';
580
+ import {
581
+ SlSelect,
582
+ SlSelectItem,
583
+ type SelectOption,
584
+ type SelectSelection,
585
+ } from '@slotted/angular/select';
586
+ import { SlStack } from '@slotted/angular/stack';
587
+ import { SlText } from '@slotted/angular/typography';
588
+
589
+ const WAREHOUSES: SelectOption[] = [
590
+ { value: 'RNO', label: 'Reno, NV' },
591
+ { value: 'CMH', label: 'Columbus, OH' },
592
+ { value: 'SAV', label: 'Savannah, GA' },
593
+ ];
594
+
595
+ const CARRIERS: SelectOption[] = [
596
+ { value: 'ups', label: 'UPS Ground' },
597
+ { value: 'fedex', label: 'FedEx Ground' },
598
+ { value: 'usps', label: 'USPS Priority Mail' },
599
+ ];
600
+
601
+ const labelOf = (options: SelectOption[], value: SelectSelection) =>
602
+ options.find((option) => option.value === value)?.label;
603
+
604
+ @Component({
605
+ selector: 'app-select-form',
606
+ imports: [
607
+ ReactiveFormsModule,
608
+ SlButton,
609
+ SlField,
610
+ SlFieldError,
611
+ SlFieldLabel,
612
+ SlInline,
613
+ SlSelect,
614
+ SlSelectItem,
615
+ SlStack,
616
+ SlText,
617
+ ],
618
+ template: `
619
+ <form novalidate [formGroup]="form" (ngSubmit)="submit()" (reset)="clear()">
620
+ <div slStack [gap]="5">
621
+ <div slField required [invalid]="missing() ? true : undefined">
622
+ <label slFieldLabel>Fulfilment warehouse</label>
623
+ <sl-select
624
+ name="warehouse"
625
+ placeholder="Choose a warehouse"
626
+ formControlName="warehouse"
627
+ [items]="warehouses"
628
+ >
629
+ @for (warehouse of warehouses; track warehouse.value) {
630
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
631
+ }
632
+ </sl-select>
633
+ <span slFieldError live="polite" reserve>{{
634
+ missing() ? 'Choose the warehouse that ships this order.' : ''
635
+ }}</span>
636
+ </div>
637
+ <div slField>
638
+ <label slFieldLabel>Carrier</label>
639
+ <sl-select name="carrier" formControlName="carrier" [items]="carriers">
640
+ @for (carrier of carriers; track carrier.value) {
641
+ <sl-select-item [value]="carrier.value">{{ carrier.label }}</sl-select-item>
642
+ }
643
+ </sl-select>
644
+ </div>
645
+ <div slInline [gap]="3" align="center">
646
+ <button slButton type="submit">Save</button>
647
+ <button slButton type="reset" tone="secondary" variant="outline">Reset</button>
648
+ @if (saved(); as message) {
649
+ <span slText size="sm" tone="muted">{{ message }}</span>
650
+ }
651
+ </div>
652
+ </div>
653
+ </form>
654
+ `,
655
+ })
656
+ export class SelectForm {
657
+ protected readonly warehouses = WAREHOUSES;
658
+ protected readonly carriers = CARRIERS;
659
+ protected readonly form = new FormGroup({
660
+ warehouse: new FormControl<SelectSelection>(null, Validators.required),
661
+ carrier: new FormControl<SelectSelection>('ups', { nonNullable: true }),
662
+ });
663
+ private readonly warehouse = toSignal(this.form.controls.warehouse.valueChanges, {
664
+ initialValue: this.form.controls.warehouse.value,
665
+ });
666
+ private readonly submitted = signal(false);
667
+ protected readonly missing = computed(() => this.submitted() && this.warehouse() === null);
668
+ protected readonly saved = signal<string | null>(null);
669
+
670
+ protected submit(): void {
671
+ this.submitted.set(true);
672
+ const { warehouse, carrier } = this.form.getRawValue();
673
+ this.saved.set(
674
+ this.form.valid
675
+ ? `Ships from ${labelOf(WAREHOUSES, warehouse)} by ${labelOf(CARRIERS, carrier)}.`
676
+ : null,
677
+ );
678
+ }
679
+
680
+ protected clear(): void {
681
+ this.submitted.set(false);
682
+ this.saved.set(null);
683
+ }
684
+ }
685
+ ```
686
+
687
+ ### Composition
688
+
689
+ Defaults provided once for a whole application, a summary the consumer writes as a template, and the instance reached from the template through exportAs.
690
+
691
+ Excerpt — not a complete module
692
+
693
+ ```ts
694
+ providers: [provideSelectDefaults({ size: 'sm', variant: 'subtle', width: 'anchor' })];
695
+ ```
696
+
697
+ ### controlled.ts
698
+
699
+ Example
700
+
701
+ ```ts
702
+ import { Component, computed, signal } from '@angular/core';
703
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
704
+ import { SlSelect, SlSelectItem, type SelectSelection } from '@slotted/angular/select';
705
+ import { SlStack } from '@slotted/angular/stack';
706
+
707
+ const SPEEDS = [
708
+ { value: 'ground', label: 'Ground', transit: '3–5 business days', price: '$8.40' },
709
+ { value: 'two-day', label: 'Two-day', transit: '2 business days', price: '$18.90' },
710
+ { value: 'overnight', label: 'Overnight', transit: 'Next business day', price: '$42.75' },
711
+ ];
712
+
713
+ @Component({
714
+ selector: 'app-select-controlled',
715
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem, SlStack],
716
+ template: `
717
+ <div slStack [gap]="4">
718
+ <div slField>
719
+ <label slFieldLabel>Delivery speed</label>
720
+ <sl-select [items]="speeds" [(value)]="speed">
721
+ @for (option of speeds; track option.value) {
722
+ <sl-select-item [value]="option.value">{{ option.label }}</sl-select-item>
723
+ }
724
+ </sl-select>
725
+ </div>
726
+ <span>Arrives in {{ chosen()?.transit }}. Shipping: {{ chosen()?.price }}</span>
727
+ </div>
728
+ `,
729
+ })
730
+ export class SelectControlled {
731
+ protected readonly speeds = SPEEDS;
732
+ protected readonly speed = signal<SelectSelection>('ground');
733
+ protected readonly chosen = computed(() =>
734
+ SPEEDS.find((option) => option.value === this.speed()),
735
+ );
736
+ }
737
+ ```
738
+
739
+ ### defaults.ts
740
+
741
+ Example
742
+
743
+ ```ts
744
+ import { Component } from '@angular/core';
745
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
746
+ import {
747
+ provideSelectDefaults,
748
+ SlSelect,
749
+ SlSelectItem,
750
+ type SelectOption,
751
+ } from '@slotted/angular/select';
752
+ import { SlStack } from '@slotted/angular/stack';
753
+
754
+ const OWNERS: SelectOption[] = [
755
+ { value: 'avery', label: 'Avery Collins' },
756
+ { value: 'kenji', label: 'Kenji Watanabe' },
757
+ { value: 'lucia', label: 'Lucía Fernández' },
758
+ ];
759
+
760
+ const SEGMENTS: SelectOption[] = [
761
+ { value: 'enterprise', label: 'Enterprise' },
762
+ { value: 'wholesale', label: 'Wholesale' },
763
+ { value: 'retail', label: 'Retail' },
764
+ ];
765
+
766
+ @Component({
767
+ selector: 'app-select-defaults',
768
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem, SlStack],
769
+ providers: [provideSelectDefaults({ size: 'sm', variant: 'subtle', clearable: true })],
770
+ template: `
771
+ <div slStack [gap]="4">
772
+ <div slField>
773
+ <label slFieldLabel>Account owner</label>
774
+ <sl-select placeholder="Any owner" value="lucia" [items]="owners">
775
+ @for (owner of owners; track owner.value) {
776
+ <sl-select-item [value]="owner.value">{{ owner.label }}</sl-select-item>
777
+ }
778
+ </sl-select>
779
+ </div>
780
+ <div slField>
781
+ <label slFieldLabel>Segment</label>
782
+ <sl-select placeholder="Any segment" value="wholesale" [items]="segments">
783
+ @for (segment of segments; track segment.value) {
784
+ <sl-select-item [value]="segment.value">{{ segment.label }}</sl-select-item>
785
+ }
786
+ </sl-select>
787
+ </div>
788
+ </div>
789
+ `,
790
+ })
791
+ export class SelectDefaults {
792
+ protected readonly owners = OWNERS;
793
+ protected readonly segments = SEGMENTS;
794
+ }
795
+ ```
796
+
797
+ ### descriptions.ts
798
+
799
+ Example
800
+
801
+ ```ts
802
+ import { Component } from '@angular/core';
803
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
804
+ import type { GlyphName } from '@slotted/angular/icon';
805
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
806
+
807
+ const FORMATS: (SelectOption & { icon: GlyphName; description: string })[] = [
808
+ {
809
+ value: 'csv',
810
+ label: 'CSV',
811
+ icon: 'file-spreadsheet',
812
+ description: 'Opens in Excel and Google Sheets.',
813
+ },
814
+ {
815
+ value: 'pdf',
816
+ label: 'PDF',
817
+ icon: 'file-text',
818
+ description: 'Paginated, with the company letterhead.',
819
+ },
820
+ {
821
+ value: 'json',
822
+ label: 'JSON',
823
+ icon: 'file',
824
+ description: 'For an import into another system.',
825
+ },
826
+ ];
827
+
828
+ @Component({
829
+ selector: 'app-select-descriptions',
830
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem],
831
+ template: `
832
+ <div slField>
833
+ <label slFieldLabel>Export format</label>
834
+ <sl-select value="csv" [items]="formats">
835
+ @for (format of formats; track format.value) {
836
+ <sl-select-item
837
+ [value]="format.value"
838
+ [description]="format.description"
839
+ [icon]="format.icon"
840
+ >{{ format.label }}</sl-select-item
841
+ >
842
+ }
843
+ </sl-select>
844
+ </div>
845
+ `,
846
+ })
847
+ export class SelectDescriptions {
848
+ protected readonly formats = FORMATS;
849
+ }
850
+ ```
851
+
852
+ ### disabled-options.ts
853
+
854
+ Example
855
+
856
+ ```ts
857
+ import { Component } from '@angular/core';
858
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
859
+ import { SlSelect, SlSelectItem } from '@slotted/angular/select';
860
+
861
+ const CARRIERS: { value: string; label: string; disabled?: boolean; description?: string }[] = [
862
+ { value: 'ups', label: 'UPS Ground' },
863
+ { value: 'fedex', label: 'FedEx Ground' },
864
+ {
865
+ value: 'dhl',
866
+ label: 'DHL Express',
867
+ disabled: true,
868
+ description: 'Account on hold until invoice INV-21462 is paid.',
869
+ },
870
+ { value: 'usps', label: 'USPS Priority Mail' },
871
+ ];
872
+
873
+ @Component({
874
+ selector: 'app-select-disabled-options',
875
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem],
876
+ template: `
877
+ <div slField>
878
+ <label slFieldLabel>Carrier</label>
879
+ <sl-select placeholder="Choose a carrier">
880
+ @for (carrier of carriers; track carrier.value) {
881
+ <sl-select-item
882
+ [value]="carrier.value"
883
+ [disabled]="carrier.disabled ?? false"
884
+ [description]="carrier.description"
885
+ >{{ carrier.label }}</sl-select-item
886
+ >
887
+ }
888
+ </sl-select>
889
+ </div>
890
+ `,
891
+ })
892
+ export class SelectDisabledOptions {
893
+ protected readonly carriers = CARRIERS;
894
+ }
895
+ ```
896
+
897
+ ### empty.ts
898
+
899
+ Example
900
+
901
+ ```ts
902
+ import { Component } from '@angular/core';
903
+ import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
904
+ import { SlSelect } from '@slotted/angular/select';
905
+
906
+ @Component({
907
+ selector: 'app-select-empty',
908
+ imports: [SlField, SlFieldDescription, SlFieldLabel, SlSelect],
909
+ template: `
910
+ <div slField>
911
+ <label slFieldLabel>Purchase order to receive</label>
912
+ <sl-select
913
+ placeholder="Choose a purchase order"
914
+ [messages]="{ empty: 'No open purchase orders for Kiln & Co.' }"
915
+ ></sl-select>
916
+ <span slFieldDescription>Only orders awaiting receipt are listed.</span>
917
+ </div>
918
+ `,
919
+ })
920
+ export class SelectEmpty {}
921
+ ```
922
+
923
+ ### loading.ts
924
+
925
+ Example
926
+
927
+ ```ts
928
+ import { Component, signal } from '@angular/core';
929
+ import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
930
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
931
+
932
+ const SLOTS: SelectOption[] = [
933
+ { value: 'thu-am', label: 'Thursday, 8:00–12:00' },
934
+ { value: 'thu-pm', label: 'Thursday, 13:00–17:00' },
935
+ { value: 'fri-am', label: 'Friday, 8:00–12:00' },
936
+ ];
937
+
938
+ /** Stands in for a request to the carrier's pickup API. */
939
+ const fetchSlots = () =>
940
+ new Promise<SelectOption[]>((resolve) => setTimeout(() => resolve(SLOTS), 1500));
941
+
942
+ @Component({
943
+ selector: 'app-select-loading',
944
+ imports: [SlField, SlFieldDescription, SlFieldLabel, SlSelect, SlSelectItem],
945
+ template: `
946
+ <div slField>
947
+ <label slFieldLabel>Pickup slot</label>
948
+ <sl-select
949
+ placeholder="Choose a slot"
950
+ [loading]="loading()"
951
+ [items]="slots()"
952
+ [messages]="{ loading: 'Fetching pickup slots…' }"
953
+ (openChange)="load($event)"
954
+ >
955
+ @for (slot of slots(); track slot.value) {
956
+ <sl-select-item [value]="slot.value">{{ slot.label }}</sl-select-item>
957
+ }
958
+ </sl-select>
959
+ <span slFieldDescription>Slots load from the carrier when the list opens.</span>
960
+ </div>
961
+ `,
962
+ })
963
+ export class SelectLoading {
964
+ protected readonly slots = signal<SelectOption[]>([]);
965
+ protected readonly loading = signal(false);
966
+ private loaded = false;
967
+
968
+ protected async load(open: boolean): Promise<void> {
969
+ if (!open || this.loaded || this.loading()) return;
970
+ this.loading.set(true);
971
+ this.slots.set(await fetchSlots());
972
+ this.loading.set(false);
973
+ this.loaded = true;
974
+ }
975
+ }
976
+ ```
977
+
978
+ ### long-labels.ts
979
+
980
+ Example
981
+
982
+ ```ts
983
+ import { Component } from '@angular/core';
984
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
985
+ import { SlSelect, SlSelectItem, type SelectOption } from '@slotted/angular/select';
986
+
987
+ const LISTINGS: SelectOption[] = [
988
+ {
989
+ value: 'mug-sage',
990
+ label: 'Stoneware mug, 12 oz, sage glaze, case of 24, for the autumn wholesale catalogue',
991
+ },
992
+ { value: 'mug-sku', label: 'SKU-NW-STONEWARE-MUG-12OZ-SAGE-GLAZE-CASE24-WHOLESALE' },
993
+ { value: 'tumbler', label: 'Glass tumbler, 8 oz' },
994
+ ];
995
+
996
+ @Component({
997
+ selector: 'app-select-long-labels',
998
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem],
999
+ template: `
1000
+ <div slField>
1001
+ <label slFieldLabel>Catalogue listing</label>
1002
+ <sl-select value="mug-sage" [items]="listings">
1003
+ @for (listing of listings; track listing.value) {
1004
+ <sl-select-item [value]="listing.value">{{ listing.label }}</sl-select-item>
1005
+ }
1006
+ </sl-select>
1007
+ </div>
1008
+ `,
1009
+ })
1010
+ export class SelectLongLabels {
1011
+ protected readonly listings = LISTINGS;
1012
+ }
1013
+ ```
1014
+
1015
+ ### narrow.ts
1016
+
1017
+ Example
1018
+
1019
+ ```ts
1020
+ import { Component, signal } from '@angular/core';
1021
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
1022
+ import {
1023
+ SlSelect,
1024
+ SlSelectItem,
1025
+ type SelectOption,
1026
+ type SelectSelection,
1027
+ } from '@slotted/angular/select';
1028
+ import { SlStack } from '@slotted/angular/stack';
1029
+
1030
+ const STATUSES: SelectOption[] = [
1031
+ { value: 'open', label: 'Open' },
1032
+ { value: 'on-hold', label: 'On hold' },
1033
+ { value: 'shipped', label: 'Shipped' },
1034
+ ];
1035
+
1036
+ const CHANNELS: SelectOption[] = [
1037
+ { value: 'web', label: 'Web store' },
1038
+ { value: 'marketplace', label: 'Marketplace' },
1039
+ { value: 'wholesale', label: 'Wholesale' },
1040
+ { value: 'phone', label: 'Phone orders' },
1041
+ ];
1042
+
1043
+ const WAREHOUSES: SelectOption[] = [
1044
+ { value: 'RNO', label: 'Reno, NV' },
1045
+ { value: 'CMH', label: 'Columbus, OH' },
1046
+ { value: 'SAV', label: 'Savannah, GA' },
1047
+ ];
1048
+
1049
+ @Component({
1050
+ selector: 'app-select-narrow',
1051
+ imports: [SlField, SlFieldLabel, SlSelect, SlSelectItem, SlStack],
1052
+ template: `
1053
+ <div slStack [gap]="4" style="inline-size: 7rem">
1054
+ <div slField>
1055
+ <label slFieldLabel>Status</label>
1056
+ <sl-select size="sm" value="on-hold" [items]="statuses">
1057
+ @for (status of statuses; track status.value) {
1058
+ <sl-select-item [value]="status.value">{{ status.label }}</sl-select-item>
1059
+ }
1060
+ </sl-select>
1061
+ </div>
1062
+ <div slField>
1063
+ <label slFieldLabel>Channels</label>
1064
+ <sl-select size="sm" multiple [items]="channels" [(value)]="chosenChannels">
1065
+ @for (channel of channels; track channel.value) {
1066
+ <sl-select-item [value]="channel.value">{{ channel.label }}</sl-select-item>
1067
+ }
1068
+ </sl-select>
1069
+ </div>
1070
+ <div slField>
1071
+ <label slFieldLabel>Warehouse</label>
1072
+ <sl-select size="sm" width="content" value="CMH" [items]="warehouses">
1073
+ @for (warehouse of warehouses; track warehouse.value) {
1074
+ <sl-select-item [value]="warehouse.value">{{ warehouse.label }}</sl-select-item>
1075
+ }
1076
+ </sl-select>
1077
+ </div>
1078
+ </div>
1079
+ `,
1080
+ })
1081
+ export class SelectNarrow {
1082
+ protected readonly statuses = STATUSES;
1083
+ protected readonly channels = CHANNELS;
1084
+ protected readonly warehouses = WAREHOUSES;
1085
+ protected readonly chosenChannels = signal<SelectSelection>(['web', 'marketplace', 'wholesale']);
1086
+ }
1087
+ ```
1088
+
1089
+ ### status-filter.ts
1090
+
1091
+ Example
1092
+
1093
+ ```ts
1094
+ import { Component, computed, signal } from '@angular/core';
1095
+ import type { GlyphName } from '@slotted/angular/icon';
1096
+ import { SlInline } from '@slotted/angular/inline';
1097
+ import {
1098
+ SlSelect,
1099
+ SlSelectItem,
1100
+ SlSelectSeparator,
1101
+ type SelectOption,
1102
+ type SelectSelection,
1103
+ } from '@slotted/angular/select';
1104
+ import { SlStack } from '@slotted/angular/stack';
1105
+ import {
1106
+ SlTable,
1107
+ SlTableBody,
1108
+ SlTableCell,
1109
+ SlTableColumnHeader,
1110
+ SlTableContent,
1111
+ SlTableHead,
1112
+ SlTableRow,
1113
+ SlTableRowHeader,
1114
+ } from '@slotted/angular/table';
1115
+ import { SlText } from '@slotted/angular/typography';
1116
+
1117
+ const ORDERS = [
1118
+ { id: 'SO-10482', customer: 'Harbor & Pine', status: 'open', total: '$1,240.00' },
1119
+ { id: 'SO-10483', customer: 'Brightline Studio', status: 'on-hold', total: '$318.50' },
1120
+ { id: 'SO-10484', customer: 'Northgate Labs', status: 'shipped', total: '$2,906.10' },
1121
+ { id: 'SO-10485', customer: 'Verde Kitchen', status: 'delayed', total: '$86.00' },
1122
+ { id: 'SO-10486', customer: 'Quill & Co.', status: 'shipped', total: '$540.25' },
1123
+ { id: 'SO-10487', customer: 'Atlas Freight', status: 'open', total: '$1,912.00' },
1124
+ ];
1125
+
1126
+ const STATUSES: (SelectOption & { icon: GlyphName })[] = [
1127
+ { value: 'open', label: 'Open', icon: 'circle' },
1128
+ { value: 'on-hold', label: 'On hold', icon: 'clock' },
1129
+ { value: 'delayed', label: 'Delayed', icon: 'triangle-alert' },
1130
+ { value: 'shipped', label: 'Shipped', icon: 'circle-check' },
1131
+ ];
1132
+
1133
+ const ALL: SelectOption = { value: 'all', label: 'All statuses' };
1134
+
1135
+ @Component({
1136
+ selector: 'app-select-status-filter',
1137
+ imports: [
1138
+ SlInline,
1139
+ SlSelect,
1140
+ SlSelectItem,
1141
+ SlSelectSeparator,
1142
+ SlStack,
1143
+ SlTable,
1144
+ SlTableBody,
1145
+ SlTableCell,
1146
+ SlTableColumnHeader,
1147
+ SlTableContent,
1148
+ SlTableHead,
1149
+ SlTableRow,
1150
+ SlTableRowHeader,
1151
+ SlText,
1152
+ ],
1153
+ template: `
1154
+ <div slStack [gap]="3">
1155
+ <div slInline [gap]="3" justify="between" align="center">
1156
+ <span slText size="sm" tone="muted">{{ rows().length }} of {{ orders.length }} orders</span>
1157
+ <sl-select
1158
+ aria-label="Filter by status"
1159
+ size="sm"
1160
+ align="end"
1161
+ [fullWidth]="false"
1162
+ [items]="options"
1163
+ [(value)]="status"
1164
+ >
1165
+ <sl-select-item [value]="all.value">{{ all.label }}</sl-select-item>
1166
+ <sl-select-separator />
1167
+ @for (option of statuses; track option.value) {
1168
+ <sl-select-item [value]="option.value" [icon]="option.icon">{{
1169
+ option.label
1170
+ }}</sl-select-item>
1171
+ }
1172
+ </sl-select>
1173
+ </div>
1174
+ <div slTable [columns]="4">
1175
+ <div slTableContent aria-label="Orders">
1176
+ <thead slTableHead>
1177
+ <tr slTableRow>
1178
+ <th slTableColumnHeader>Order</th>
1179
+ <th slTableColumnHeader>Customer</th>
1180
+ <th slTableColumnHeader>Status</th>
1181
+ <th slTableColumnHeader numeric>Total</th>
1182
+ </tr>
1183
+ </thead>
1184
+ <tbody slTableBody>
1185
+ @for (order of rows(); track order.id) {
1186
+ <tr slTableRow [value]="order.id">
1187
+ <th slTableRowHeader>{{ order.id }}</th>
1188
+ <td slTableCell>{{ order.customer }}</td>
1189
+ <td slTableCell>{{ labelOf(order.status) }}</td>
1190
+ <td slTableCell numeric>{{ order.total }}</td>
1191
+ </tr>
1192
+ }
1193
+ </tbody>
1194
+ </div>
1195
+ </div>
1196
+ </div>
1197
+ `,
1198
+ })
1199
+ export class SelectStatusFilter {
1200
+ protected readonly orders = ORDERS;
1201
+ protected readonly statuses = STATUSES;
1202
+ protected readonly all = ALL;
1203
+ protected readonly options = [ALL, ...STATUSES];
1204
+ protected readonly status = signal<SelectSelection>('all');
1205
+ protected readonly rows = computed(() => {
1206
+ const status = this.status();
1207
+ return status === 'all' ? ORDERS : ORDERS.filter((order) => order.status === status);
1208
+ });
1209
+
1210
+ protected labelOf(status: string): string | undefined {
1211
+ return STATUSES.find((option) => option.value === status)?.label;
1212
+ }
1213
+ }
1214
+ ```