@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,1370 @@
1
+ <!-- index: ./index.md -->
2
+ # tabs
3
+
4
+ `data-ui="tabs"` · Switches between panels of related content.
5
+
6
+ ## Examples
7
+
8
+ ### Playground
9
+
10
+ One family with every axis on it, driven by the controls below the canvas. Tab into it once: the list is a single stop, and the arrows move the selection from there.
11
+
12
+ Excerpt — not a complete module
13
+
14
+ ```html
15
+ <div slTabs defaultValue="summary">
16
+ <div slTabList aria-label="Order">
17
+ <div slTab value="summary">Summary</div>
18
+ <div slTab value="items">Items</div>
19
+ </div>
20
+ <div slTabPanel value="summary">Delivery expected on September 12.</div>
21
+ <div slTabPanel value="items">Three items.</div>
22
+ </div>
23
+ ```
24
+
25
+ ### Whether focus selects
26
+
27
+ Automatic is the APG’s recommendation for panels that are already loaded; manual moves focus and waits for Enter or Space, which is what a panel that fetches needs.
28
+
29
+ Example
30
+
31
+ ```ts
32
+ import { Component } from '@angular/core';
33
+ import { SlStack } from '@slotted/angular/stack';
34
+ import { SlTab, SlTabList, SlTabPanel, SlTabs, type TabsActivation } from '@slotted/angular/tabs';
35
+ import { SlText } from '@slotted/angular/typography';
36
+
37
+ const MODES: { activation: TabsActivation; caption: string }[] = [
38
+ { activation: 'automatic', caption: 'Automatic: the arrow keys select as they move.' },
39
+ { activation: 'manual', caption: 'Manual: the arrow keys move focus; Enter or Space selects.' },
40
+ ];
41
+
42
+ const REPORTS = [
43
+ { value: 'revenue', label: 'Revenue', panel: 'Revenue this quarter: $412,800.00.' },
44
+ { value: 'margin', label: 'Margin', panel: 'Gross margin this quarter: 38.4%.' },
45
+ { value: 'returns', label: 'Returns', panel: 'Return rate this quarter: 2.1%.' },
46
+ ];
47
+
48
+ @Component({
49
+ selector: 'app-tabs-activation',
50
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
51
+ template: `
52
+ <div slStack [gap]="8">
53
+ @for (mode of modes; track mode.activation) {
54
+ <div slStack [gap]="3">
55
+ <span slText size="sm" tone="muted">{{ mode.caption }}</span>
56
+ <div slTabs defaultValue="revenue" [activation]="mode.activation">
57
+ <div slTabList aria-label="Quarterly reports">
58
+ @for (report of reports; track report.value) {
59
+ <div slTab [value]="report.value">{{ report.label }}</div>
60
+ }
61
+ </div>
62
+ @for (report of reports; track report.value) {
63
+ <div slTabPanel [value]="report.value">
64
+ <span slText size="sm">{{ report.panel }}</span>
65
+ </div>
66
+ }
67
+ </div>
68
+ </div>
69
+ }
70
+ </div>
71
+ `,
72
+ })
73
+ export class TabsActivationExample {
74
+ protected readonly modes = MODES;
75
+ protected readonly reports = REPORTS;
76
+ }
77
+ ```
78
+
79
+ ### Which way the list runs
80
+
81
+ A horizontal list scrolls and refuses the up and down arrows, so the page keeps scrolling with focus inside it; a vertical one stacks, turns the track and the marker, and announces aria-orientation.
82
+
83
+ Excerpt — not a complete module
84
+
85
+ ```html
86
+ <div slTabs defaultValue="a" orientation="vertical">
87
+ <div slTabList aria-label="Settings">
88
+ <div slTab value="a">Profile</div>
89
+ <div slTab value="b">Notifications</div>
90
+ </div>
91
+ <div slTabPanel value="a">Name and photo.</div>
92
+ <div slTabPanel value="b">Email notices.</div>
93
+ </div>
94
+ ```
95
+
96
+ ### The two ways a list is drawn
97
+
98
+ Line is a row of labels over a hairline; contained is a sunken track holding a surface per tab; and track="none" keeps the labels and drops the hairline, for a list standing on a line the page already drew. All three keep the accent marker, which is what survives the high-contrast scheme after every surface flattens.
99
+
100
+ Excerpt — not a complete module
101
+
102
+ ```html
103
+ <div slTabs defaultValue="a" variant="line"></div>
104
+ <div slTabs defaultValue="a" variant="contained"></div>
105
+
106
+ <!-- Standing on a line the page already drew — a card header, a table's rule. -->
107
+ <div slTabs defaultValue="a" track="none"></div>
108
+ ```
109
+
110
+ ### The step the list sits at
111
+
112
+ Height, type, padding and the inner gap all come from the control scales, so switching the toolbar to dense shrinks each step whole rather than in parts.
113
+
114
+ Example
115
+
116
+ ```ts
117
+ import { Component } from '@angular/core';
118
+ import { SlStack } from '@slotted/angular/stack';
119
+ import { SlTab, SlTabList, SlTabPanel, SlTabs, type TabsSize } from '@slotted/angular/tabs';
120
+ import { SlText } from '@slotted/angular/typography';
121
+
122
+ const SIZES: TabsSize[] = ['sm', 'md', 'lg'];
123
+
124
+ const VIEWS = [
125
+ { value: 'stock', label: 'Stock', panel: '1,284 units on hand across 3 warehouses.' },
126
+ { value: 'movements', label: 'Movements', panel: '46 movements in the last 7 days.' },
127
+ {
128
+ value: 'suppliers',
129
+ label: 'Suppliers',
130
+ panel: 'Ordered from Brightline Studio and Quill & Co.',
131
+ },
132
+ ];
133
+
134
+ @Component({
135
+ selector: 'app-tabs-sizes',
136
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
137
+ template: `
138
+ <div slStack [gap]="8">
139
+ @for (size of sizes; track size) {
140
+ <div slTabs defaultValue="stock" [size]="size">
141
+ <div slTabList aria-label="Product OAK-90">
142
+ @for (view of views; track view.value) {
143
+ <div slTab [value]="view.value">{{ view.label }}</div>
144
+ }
145
+ </div>
146
+ @for (view of views; track view.value) {
147
+ <div slTabPanel [value]="view.value">
148
+ <span slText size="sm">{{ view.panel }}</span>
149
+ </div>
150
+ }
151
+ </div>
152
+ }
153
+ </div>
154
+ `,
155
+ })
156
+ export class TabsSizes {
157
+ protected readonly sizes = SIZES;
158
+ protected readonly views = VIEWS;
159
+ }
160
+ ```
161
+
162
+ ### How the line is divided
163
+
164
+ auto makes each tab as wide as its label and scrolls what does not fit; equal divides the line between them and is the one place a horizontal label is ever truncated.
165
+
166
+ Example
167
+
168
+ ```ts
169
+ import { Component } from '@angular/core';
170
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
171
+ import { SlText } from '@slotted/angular/typography';
172
+
173
+ const QUEUES = [
174
+ { value: 'incoming', label: 'Incoming', panel: '14 purchase orders due this week.' },
175
+ { value: 'outgoing', label: 'Outgoing', panel: '32 sales orders ready to ship.' },
176
+ {
177
+ value: 'inspection',
178
+ label: 'Awaiting inspection',
179
+ panel: '3 returns wait for a quality check before restocking.',
180
+ },
181
+ ];
182
+
183
+ @Component({
184
+ selector: 'app-tabs-fit',
185
+ imports: [SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
186
+ template: `
187
+ <div slTabs defaultValue="incoming" fit="equal" variant="contained">
188
+ <div slTabList aria-label="Warehouse queues">
189
+ @for (queue of queues; track queue.value) {
190
+ <div slTab [value]="queue.value">{{ queue.label }}</div>
191
+ }
192
+ </div>
193
+ @for (queue of queues; track queue.value) {
194
+ <div slTabPanel [value]="queue.value">
195
+ <span slText size="sm">{{ queue.panel }}</span>
196
+ </div>
197
+ }
198
+ </div>
199
+ `,
200
+ })
201
+ export class TabsFit {
202
+ protected readonly queues = QUEUES;
203
+ }
204
+ ```
205
+
206
+ ### Every state the family paints
207
+
208
+ A tab that is not selected raises its ink on hover. In the line variant a neutral bar appears where the mark would go and darkens on press; in the contained variant the cell fills instead. A selected one does neither, because it is already at full strength. Disabled is the native attribute, which is also what makes the browser skip it.
209
+
210
+ Excerpt — not a complete module
211
+
212
+ ```html
213
+ <div slTabs defaultValue="a">
214
+ <div slTabList aria-label="Document">
215
+ <div slTab value="a">Available</div>
216
+ <div slTab value="b" disabled>Unavailable</div>
217
+ </div>
218
+ <div slTabPanel value="a">…</div>
219
+ </div>
220
+
221
+ <div slTabs defaultValue="a" disabled></div>
222
+ ```
223
+
224
+ ### When a panel exists
225
+
226
+ active builds the panel on selection and drops it after, lazy keeps it once built, eager builds every one up front. A panel holding a table or a chart is the reason the default is active.
227
+
228
+ Example
229
+
230
+ ```ts
231
+ import { Component } from '@angular/core';
232
+ import { SlField, SlFieldLabel } from '@slotted/angular/field';
233
+ import { SlStack } from '@slotted/angular/stack';
234
+ import {
235
+ SlTab,
236
+ SlTabList,
237
+ SlTabPanel,
238
+ SlTabPanelContent,
239
+ SlTabs,
240
+ type TabsMount,
241
+ } from '@slotted/angular/tabs';
242
+ import { SlTextarea } from '@slotted/angular/textarea';
243
+ import { SlText } from '@slotted/angular/typography';
244
+
245
+ const MODES: { mount: TabsMount; caption: string }[] = [
246
+ { mount: 'active', caption: 'mount="active": the note is built again, empty, on return.' },
247
+ { mount: 'lazy', caption: 'mount="lazy": the note keeps what was typed.' },
248
+ ];
249
+
250
+ @Component({
251
+ selector: 'app-tabs-mount',
252
+ imports: [
253
+ SlField,
254
+ SlFieldLabel,
255
+ SlStack,
256
+ SlTab,
257
+ SlTabList,
258
+ SlTabPanel,
259
+ SlTabPanelContent,
260
+ SlTabs,
261
+ SlText,
262
+ SlTextarea,
263
+ ],
264
+ template: `
265
+ <div slStack [gap]="8">
266
+ @for (mode of modes; track mode.mount) {
267
+ <div slStack [gap]="3">
268
+ <span slText size="sm" tone="muted">{{ mode.caption }}</span>
269
+ <div slTabs defaultValue="note" [mount]="mode.mount">
270
+ <div slTabList aria-label="Order SO-1187">
271
+ <div slTab value="note">Picking note</div>
272
+ <div slTab value="summary">Summary</div>
273
+ </div>
274
+ <div slTabPanel value="note">
275
+ <ng-template slTabPanelContent>
276
+ <div slField>
277
+ <label slFieldLabel>Note for the picker</label>
278
+ <textarea
279
+ slTextarea
280
+ placeholder="Pack the brackets separately"
281
+ rows="2"
282
+ ></textarea>
283
+ </div>
284
+ </ng-template>
285
+ </div>
286
+ <div slTabPanel value="summary">
287
+ <span slText size="sm">3 lines, picked from zone C at Reno, NV.</span>
288
+ </div>
289
+ </div>
290
+ </div>
291
+ }
292
+ </div>
293
+ `,
294
+ })
295
+ export class TabsMountExample {
296
+ protected readonly modes = MODES;
297
+ }
298
+ ```
299
+
300
+ ### Tabs a reader can close
301
+
302
+ Delete closes the focused tab and the pointer closes it from the control; the family then asks for the neighbour — the following tab, or the preceding one when the closed tab was last — and removes nothing itself.
303
+
304
+ Example
305
+
306
+ ```ts
307
+ import { Component, signal } from '@angular/core';
308
+ import { SlButton } from '@slotted/angular/button';
309
+ import { SlStack } from '@slotted/angular/stack';
310
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
311
+ import { SlText } from '@slotted/angular/typography';
312
+
313
+ const OPEN = [
314
+ { id: 'SO-1187', customer: 'Harbor & Pine', total: '$1,240.00' },
315
+ { id: 'SO-1188', customer: 'Brightline Studio', total: '$318.50' },
316
+ { id: 'SO-1190', customer: 'Northgate Labs', total: '$2,906.10' },
317
+ { id: 'SO-1191', customer: 'Verde Kitchen', total: '$86.00' },
318
+ ];
319
+
320
+ @Component({
321
+ selector: 'app-tabs-dismissible',
322
+ imports: [SlButton, SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
323
+ template: `
324
+ @if (orders().length === 0) {
325
+ <div slStack [gap]="3" align="start">
326
+ <span slText size="sm" tone="muted">No orders open.</span>
327
+ <button slButton size="sm" variant="outline" (click)="reopen()">Reopen orders</button>
328
+ </div>
329
+ } @else {
330
+ <div
331
+ slTabs
332
+ [value]="active()"
333
+ (valueChange)="active.set($event.value ?? active())"
334
+ (tabDismiss)="close($event.value)"
335
+ >
336
+ <div slTabList aria-label="Open orders">
337
+ @for (order of orders(); track order.id) {
338
+ <div slTab dismissible [dismissLabel]="'Close ' + order.id" [value]="order.id">
339
+ {{ order.id }}
340
+ </div>
341
+ }
342
+ </div>
343
+ @for (order of orders(); track order.id) {
344
+ <div slTabPanel [value]="order.id">
345
+ <span slText size="sm">{{ order.customer }}, {{ order.total }}.</span>
346
+ </div>
347
+ }
348
+ </div>
349
+ }
350
+ `,
351
+ })
352
+ export class TabsDismissible {
353
+ protected readonly orders = signal(OPEN);
354
+ protected readonly active = signal('SO-1188');
355
+
356
+ protected close(id: string) {
357
+ this.orders.update((open) => open.filter((order) => order.id !== id));
358
+ }
359
+
360
+ protected reopen() {
361
+ this.orders.set(OPEN);
362
+ this.active.set('SO-1187');
363
+ }
364
+ }
365
+ ```
366
+
367
+ ### A list that does not fit
368
+
369
+ The list scrolls rather than wrapping or truncating, two paging controls appear only while there is somewhere to scroll, and the arrow keys bring each tab into view as focus reaches it.
370
+
371
+ Example
372
+
373
+ ```ts
374
+ import { Component } from '@angular/core';
375
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
376
+ import { SlText } from '@slotted/angular/typography';
377
+
378
+ const WAREHOUSES = [
379
+ { code: 'RNO', city: 'Reno, NV', open: 42 },
380
+ { code: 'CMH', city: 'Columbus, OH', open: 37 },
381
+ { code: 'SAV', city: 'Savannah, GA', open: 18 },
382
+ { code: 'DFW', city: 'Dallas, TX', open: 51 },
383
+ { code: 'EWR', city: 'Newark, NJ', open: 29 },
384
+ { code: 'ONT', city: 'Ontario, CA', open: 64 },
385
+ { code: 'JOT', city: 'Joliet, IL', open: 23 },
386
+ { code: 'MEM', city: 'Memphis, TN', open: 46 },
387
+ { code: 'ABE', city: 'Allentown, PA', open: 12 },
388
+ { code: 'TIW', city: 'Tacoma, WA', open: 31 },
389
+ { code: 'SCK', city: 'Stockton, CA', open: 9 },
390
+ { code: 'IND', city: 'Indianapolis, IN', open: 27 },
391
+ ];
392
+
393
+ @Component({
394
+ selector: 'app-tabs-overflow',
395
+ imports: [SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
396
+ template: `
397
+ <div slTabs defaultValue="MEM">
398
+ <div slTabList aria-label="Warehouses">
399
+ @for (warehouse of warehouses; track warehouse.code) {
400
+ <div slTab [value]="warehouse.code">{{ warehouse.city }}</div>
401
+ }
402
+ </div>
403
+ @for (warehouse of warehouses; track warehouse.code) {
404
+ <div slTabPanel [value]="warehouse.code">
405
+ <span slText size="sm"
406
+ >{{ warehouse.code }}: {{ warehouse.open }} open orders to ship today.</span
407
+ >
408
+ </div>
409
+ }
410
+ </div>
411
+ `,
412
+ })
413
+ export class TabsOverflow {
414
+ protected readonly warehouses = WAREHOUSES;
415
+ }
416
+ ```
417
+
418
+ ### A view a router can deep-link to
419
+
420
+ href makes the control an anchor, so the destination is real: a plain click selects, and a click carrying a modifier key is left to the browser, which opens the view in a new browser tab.
421
+
422
+ Example
423
+
424
+ ```ts
425
+ import { Component } from '@angular/core';
426
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
427
+ import { SlText } from '@slotted/angular/typography';
428
+
429
+ const VIEWS = [
430
+ { value: 'summary', label: 'Summary', panel: 'Harbor & Pine, $1,240.00, Net 30.' },
431
+ { value: 'items', label: 'Items', panel: '3 lines: shelves, brackets and an assembly kit.' },
432
+ { value: 'shipments', label: 'Shipments', panel: 'Atlas Freight, expected September 12.' },
433
+ ];
434
+
435
+ @Component({
436
+ selector: 'app-tabs-links',
437
+ imports: [SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
438
+ template: `
439
+ <div slTabs defaultValue="summary">
440
+ <div slTabList aria-label="Order SO-1187">
441
+ @for (view of views; track view.value) {
442
+ <div slTab [value]="view.value" [href]="'#order-' + view.value">{{ view.label }}</div>
443
+ }
444
+ </div>
445
+ @for (view of views; track view.value) {
446
+ <div slTabPanel [value]="view.value">
447
+ <span slText size="sm">{{ view.panel }}</span>
448
+ </div>
449
+ }
450
+ </div>
451
+ `,
452
+ })
453
+ export class TabsLinks {
454
+ protected readonly views = VIEWS;
455
+ }
456
+ ```
457
+
458
+ ### Content the family did not choose
459
+
460
+ An unbroken digest breaks inside its own tab instead of setting the list’s width, a right-to-left label reads its own way inside a page that reads the other, and a long label scrolls rather than wrapping.
461
+
462
+ Excerpt — not a complete module
463
+
464
+ ```html
465
+ <div slTabs defaultValue="a">
466
+ <div slTabList aria-label="Extreme content">
467
+ <div slTab value="a">sha256:9f86d081884c7d659a2feaa0c55ad015</div>
468
+ <div slTab value="b">بيانات التسليم</div>
469
+ </div>
470
+ </div>
471
+ ```
472
+
473
+ ### Setting it once, and reaching past it
474
+
475
+ The provider carries the seven decisions an application takes once, render substitutes every root so a list can be a real nav, and the actions slot is where a Toolbar goes.
476
+
477
+ Excerpt — not a complete module
478
+
479
+ ```ts
480
+ // One decision for every family in the application, in the bootstrap file.
481
+ bootstrapApplication(App, {
482
+ providers: [provideTabsDefaults({ size: 'sm', variant: 'contained' })],
483
+ });
484
+
485
+ // And in a template, the slot beside the list is where a toolbar goes:
486
+ // <div slTabActions><div slToolbar aria-label="Actions">…</div></div>
487
+ ```
488
+
489
+ ### The APG table, and where focus lands
490
+
491
+ Tab enters on the selected tab and leaves to the panel, the arrows of the flow axis move and wrap, Home and End reach the ends, and Delete closes a dismissible tab and moves focus to its neighbour.
492
+
493
+ Example
494
+
495
+ ```ts
496
+ import { Component, signal } from '@angular/core';
497
+ import type { ChangeRequest } from '@slotted/core/state';
498
+ import { SlStack } from '@slotted/angular/stack';
499
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
500
+ import { SlText } from '@slotted/angular/typography';
501
+
502
+ const STEPS = [
503
+ { value: 'picking', label: 'Picking', panel: '18 lines to pick in zone C.' },
504
+ { value: 'packing', label: 'Packing', panel: '6 orders waiting at station 2.' },
505
+ { value: 'loading', label: 'Loading', panel: 'Atlas Freight trailer at dock 4 until 15:30.' },
506
+ ];
507
+
508
+ @Component({
509
+ selector: 'app-tabs-keyboard',
510
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
511
+ template: `
512
+ <div slStack [gap]="5">
513
+ <div slTabs defaultValue="picking" (valueChange)="report($event)">
514
+ <div slTabList aria-label="Outbound shift">
515
+ @for (step of steps; track step.value) {
516
+ <div slTab [value]="step.value">{{ step.label }}</div>
517
+ }
518
+ </div>
519
+ @for (step of steps; track step.value) {
520
+ <div slTabPanel [value]="step.value">
521
+ <span slText size="sm">{{ step.panel }}</span>
522
+ </div>
523
+ }
524
+ </div>
525
+ <span slText size="sm" tone="muted">{{ last() }}</span>
526
+ </div>
527
+ `,
528
+ })
529
+ export class TabsKeyboard {
530
+ protected readonly steps = STEPS;
531
+ protected readonly last = signal('Nothing selected yet.');
532
+
533
+ protected report(request: ChangeRequest<string | undefined>) {
534
+ const step = STEPS.find((item) => item.value === request.value);
535
+ this.last.set(`${step?.label} selected by ${request.reason}.`);
536
+ }
537
+ }
538
+ ```
539
+
540
+ ### actions.ts
541
+
542
+ Example
543
+
544
+ ```ts
545
+ import { Component } from '@angular/core';
546
+ import { SlButton, SlButtonStart } from '@slotted/angular/button';
547
+ import { SlGlyph } from '@slotted/angular/icon';
548
+ import { SlTab, SlTabActions, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
549
+ import { SlToolbar } from '@slotted/angular/toolbar';
550
+ import { SlText } from '@slotted/angular/typography';
551
+
552
+ const VIEWS = [
553
+ { value: 'lines', label: 'Lines', panel: '6 lines from Quill & Co., $4,812.00.' },
554
+ { value: 'receipts', label: 'Receipts', panel: '4 of 6 lines received at Columbus, OH.' },
555
+ { value: 'history', label: 'History', panel: 'Approved by Marco Ilić on September 22.' },
556
+ ];
557
+
558
+ @Component({
559
+ selector: 'app-tabs-actions',
560
+ imports: [
561
+ SlButton,
562
+ SlButtonStart,
563
+ SlGlyph,
564
+ SlTab,
565
+ SlTabActions,
566
+ SlTabList,
567
+ SlTabPanel,
568
+ SlTabs,
569
+ SlText,
570
+ SlToolbar,
571
+ ],
572
+ template: `
573
+ <div slTabs defaultValue="lines">
574
+ <div slTabList aria-label="Purchase order PO-4521">
575
+ @for (view of views; track view.value) {
576
+ <div slTab [value]="view.value">{{ view.label }}</div>
577
+ }
578
+ </div>
579
+ <div slTabActions>
580
+ <div slToolbar aria-label="Purchase order actions" size="sm">
581
+ <button slButton size="sm" tone="secondary" variant="ghost">
582
+ <span slButtonStart><svg slGlyph name="upload"></svg></span>
583
+ Export
584
+ </button>
585
+ <button slButton size="sm" tone="secondary" variant="ghost">
586
+ <span slButtonStart><svg slGlyph name="copy"></svg></span>
587
+ Duplicate
588
+ </button>
589
+ </div>
590
+ </div>
591
+ @for (view of views; track view.value) {
592
+ <div slTabPanel [value]="view.value">
593
+ <span slText size="sm">{{ view.panel }}</span>
594
+ </div>
595
+ }
596
+ </div>
597
+ `,
598
+ })
599
+ export class TabsActionsExample {
600
+ protected readonly views = VIEWS;
601
+ }
602
+ ```
603
+
604
+ ### controlled.ts
605
+
606
+ Example
607
+
608
+ ```ts
609
+ import { Component, signal } from '@angular/core';
610
+ import { SlButton } from '@slotted/angular/button';
611
+ import { SlInline } from '@slotted/angular/inline';
612
+ import { SlStack } from '@slotted/angular/stack';
613
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
614
+ import { SlText } from '@slotted/angular/typography';
615
+
616
+ const VIEWS = [
617
+ { value: 'orders', label: 'Orders', panel: '12 open orders, $14,380.00 in total.' },
618
+ {
619
+ value: 'invoices',
620
+ label: 'Invoices',
621
+ panel: 'INV-20877 and INV-20902 are past due: $2,146.50.',
622
+ },
623
+ { value: 'payments', label: 'Payments', panel: 'Last payment: $3,200.00 on September 30.' },
624
+ ];
625
+
626
+ @Component({
627
+ selector: 'app-tabs-controlled',
628
+ imports: [SlButton, SlInline, SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
629
+ template: `
630
+ <div slStack [gap]="5">
631
+ <div slInline [gap]="3" align="center" justify="between">
632
+ <span slText size="sm" tone="muted">2 invoices are past due.</span>
633
+ <button slButton size="sm" variant="outline" (click)="view.set('invoices')">
634
+ Review invoices
635
+ </button>
636
+ </div>
637
+ <div slTabs [value]="view()" (valueChange)="view.set($event.value ?? view())">
638
+ <div slTabList aria-label="Account Harbor & Pine">
639
+ @for (item of views; track item.value) {
640
+ <div slTab [value]="item.value">{{ item.label }}</div>
641
+ }
642
+ </div>
643
+ @for (item of views; track item.value) {
644
+ <div slTabPanel [value]="item.value">
645
+ <span slText size="sm">{{ item.panel }}</span>
646
+ </div>
647
+ }
648
+ </div>
649
+ </div>
650
+ `,
651
+ })
652
+ export class TabsControlled {
653
+ protected readonly views = VIEWS;
654
+ protected readonly view = signal('orders');
655
+ }
656
+ ```
657
+
658
+ ### defaults.ts
659
+
660
+ Example
661
+
662
+ ```ts
663
+ import { Component } from '@angular/core';
664
+ import { SlStack } from '@slotted/angular/stack';
665
+ import { provideTabsDefaults, SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
666
+ import { SlText } from '@slotted/angular/typography';
667
+
668
+ @Component({
669
+ selector: 'app-tabs-defaults',
670
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
671
+ providers: [provideTabsDefaults({ size: 'sm', variant: 'contained' })],
672
+ template: `
673
+ <div slStack [gap]="8">
674
+ <div slTabs defaultValue="stock">
675
+ <div slTabList aria-label="Product OAK-90">
676
+ <div slTab value="stock">Stock</div>
677
+ <div slTab value="pricing">Pricing</div>
678
+ </div>
679
+ <div slTabPanel value="stock">
680
+ <span slText size="sm">1,284 units on hand.</span>
681
+ </div>
682
+ <div slTabPanel value="pricing">
683
+ <span slText size="sm">List price $180.00, cost $96.40.</span>
684
+ </div>
685
+ </div>
686
+ <div slTabs defaultValue="open" variant="line">
687
+ <div slTabList aria-label="Purchase orders">
688
+ <div slTab value="open">Open</div>
689
+ <div slTab value="received">Received</div>
690
+ </div>
691
+ <div slTabPanel value="open">
692
+ <span slText size="sm">3 purchase orders for OAK-90 are open.</span>
693
+ </div>
694
+ <div slTabPanel value="received">
695
+ <span slText size="sm">Last received on September 22: 400 units.</span>
696
+ </div>
697
+ </div>
698
+ </div>
699
+ `,
700
+ })
701
+ export class TabsDefaults {}
702
+ ```
703
+
704
+ ### disabled.ts
705
+
706
+ Example
707
+
708
+ ```ts
709
+ import { Component } from '@angular/core';
710
+ import { SlStack } from '@slotted/angular/stack';
711
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
712
+ import { SlText } from '@slotted/angular/typography';
713
+
714
+ @Component({
715
+ selector: 'app-tabs-disabled',
716
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
717
+ template: `
718
+ <div slStack [gap]="8">
719
+ <div slTabs defaultValue="summary">
720
+ <div slTabList aria-label="Order SO-1192">
721
+ <div slTab value="summary">Summary</div>
722
+ <div slTab value="items">Items</div>
723
+ <div slTab value="invoice" disabled>Invoice</div>
724
+ </div>
725
+ <div slTabPanel value="summary">
726
+ <span slText size="sm">Awaiting pickup. The invoice is issued once the order ships.</span>
727
+ </div>
728
+ <div slTabPanel value="items">
729
+ <span slText size="sm">5 items from the Reno, NV warehouse.</span>
730
+ </div>
731
+ <div slTabPanel value="invoice">
732
+ <span slText size="sm">Invoice INV-20931.</span>
733
+ </div>
734
+ </div>
735
+ <div slTabs defaultValue="summary" disabled>
736
+ <div slTabList aria-label="Order SO-1188">
737
+ <div slTab value="summary">Summary</div>
738
+ <div slTab value="items">Items</div>
739
+ <div slTab value="invoice">Invoice</div>
740
+ </div>
741
+ <div slTabPanel value="summary">
742
+ <span slText size="sm">Locked while the warehouse recounts this order.</span>
743
+ </div>
744
+ <div slTabPanel value="items">
745
+ <span slText size="sm">2 items from the Columbus, OH warehouse.</span>
746
+ </div>
747
+ <div slTabPanel value="invoice">
748
+ <span slText size="sm">Invoice INV-20917.</span>
749
+ </div>
750
+ </div>
751
+ </div>
752
+ `,
753
+ })
754
+ export class TabsDisabled {}
755
+ ```
756
+
757
+ ### filter.ts
758
+
759
+ Example
760
+
761
+ ```ts
762
+ import { Component, computed, signal } from '@angular/core';
763
+ import { SlBadge } from '@slotted/angular/badge';
764
+ import { SlStack } from '@slotted/angular/stack';
765
+ import {
766
+ SlTable,
767
+ SlTableBody,
768
+ SlTableCell,
769
+ SlTableColumnHeader,
770
+ SlTableContent,
771
+ SlTableHead,
772
+ SlTableRow,
773
+ SlTableRowHeader,
774
+ } from '@slotted/angular/table';
775
+ import { SlTab, SlTabEnd, SlTabList, SlTabs } from '@slotted/angular/tabs';
776
+
777
+ const ORDERS = [
778
+ { id: 'SO-1187', customer: 'Harbor & Pine', status: 'open', total: '$1,240.00' },
779
+ { id: 'SO-1188', customer: 'Brightline Studio', status: 'shipped', total: '$318.50' },
780
+ { id: 'SO-1190', customer: 'Northgate Labs', status: 'open', total: '$2,906.10' },
781
+ { id: 'SO-1191', customer: 'Verde Kitchen', status: 'delayed', total: '$86.00' },
782
+ { id: 'SO-1193', customer: 'Quill & Co.', status: 'shipped', total: '$540.25' },
783
+ ];
784
+
785
+ const FILTERS = [
786
+ { value: 'all', label: 'All' },
787
+ { value: 'open', label: 'Open' },
788
+ { value: 'delayed', label: 'Delayed' },
789
+ { value: 'shipped', label: 'Shipped' },
790
+ ];
791
+
792
+ const STATUS: Record<string, string> = { open: 'Open', delayed: 'Delayed', shipped: 'Shipped' };
793
+
794
+ const matching = (filter: string) =>
795
+ filter === 'all' ? ORDERS : ORDERS.filter((order) => order.status === filter);
796
+
797
+ @Component({
798
+ selector: 'app-tabs-filter',
799
+ imports: [
800
+ SlBadge,
801
+ SlStack,
802
+ SlTab,
803
+ SlTabEnd,
804
+ SlTabList,
805
+ SlTable,
806
+ SlTableBody,
807
+ SlTableCell,
808
+ SlTableColumnHeader,
809
+ SlTableContent,
810
+ SlTableHead,
811
+ SlTableRow,
812
+ SlTableRowHeader,
813
+ SlTabs,
814
+ ],
815
+ template: `
816
+ <div slStack [gap]="4">
817
+ <div slTabs size="sm" [value]="filter()" (valueChange)="filter.set($event.value ?? filter())">
818
+ <div slTabList aria-label="Orders by status">
819
+ @for (item of filters; track item.value) {
820
+ <div slTab controls="orders-by-status" [value]="item.value">
821
+ {{ item.label }}
822
+ <span slTabEnd
823
+ ><span slBadge showZero size="sm" [count]="matching(item.value).length"></span
824
+ ></span>
825
+ </div>
826
+ }
827
+ </div>
828
+ </div>
829
+ <div slTable id="orders-by-status" [columns]="4">
830
+ <div slTableContent aria-label="Orders">
831
+ <thead slTableHead>
832
+ <tr slTableRow>
833
+ <th slTableColumnHeader>Order</th>
834
+ <th slTableColumnHeader>Customer</th>
835
+ <th slTableColumnHeader>Status</th>
836
+ <th slTableColumnHeader numeric>Total</th>
837
+ </tr>
838
+ </thead>
839
+ <tbody slTableBody>
840
+ @for (order of rows(); track order.id) {
841
+ <tr slTableRow [value]="order.id">
842
+ <th slTableRowHeader>{{ order.id }}</th>
843
+ <td slTableCell>{{ order.customer }}</td>
844
+ <td slTableCell>{{ status[order.status] }}</td>
845
+ <td slTableCell numeric>{{ order.total }}</td>
846
+ </tr>
847
+ }
848
+ </tbody>
849
+ </div>
850
+ </div>
851
+ </div>
852
+ `,
853
+ })
854
+ export class TabsFilter {
855
+ protected readonly filters = FILTERS;
856
+ protected readonly status = STATUS;
857
+ protected readonly matching = matching;
858
+ protected readonly filter = signal('all');
859
+ protected readonly rows = computed(() => matching(this.filter()));
860
+ }
861
+ ```
862
+
863
+ ### icons.ts
864
+
865
+ Example
866
+
867
+ ```ts
868
+ import { Component } from '@angular/core';
869
+ import { SlBadge } from '@slotted/angular/badge';
870
+ import { SlGlyph, SlIcon, type GlyphName } from '@slotted/angular/icon';
871
+ import { SlTab, SlTabEnd, SlTabList, SlTabPanel, SlTabs, SlTabStart } from '@slotted/angular/tabs';
872
+ import { SlText } from '@slotted/angular/typography';
873
+
874
+ const VIEWS: { value: string; label: string; icon: GlyphName; count?: number; panel: string }[] = [
875
+ {
876
+ value: 'overview',
877
+ label: 'Overview',
878
+ icon: 'file-text',
879
+ panel: 'Harbor & Pine, customer since 2021. Net 30 terms.',
880
+ },
881
+ {
882
+ value: 'orders',
883
+ label: 'Orders',
884
+ icon: 'inbox',
885
+ count: 12,
886
+ panel: '12 open orders, $14,380.00 in total.',
887
+ },
888
+ {
889
+ value: 'contacts',
890
+ label: 'Contacts',
891
+ icon: 'person',
892
+ count: 3,
893
+ panel: 'Dana Whitfield, Marco Ilić and Priya Raman.',
894
+ },
895
+ {
896
+ value: 'files',
897
+ label: 'Files',
898
+ icon: 'paperclip',
899
+ panel: 'Signed credit application and a W-9 form.',
900
+ },
901
+ ];
902
+
903
+ @Component({
904
+ selector: 'app-tabs-icons',
905
+ imports: [
906
+ SlBadge,
907
+ SlGlyph,
908
+ SlIcon,
909
+ SlTab,
910
+ SlTabEnd,
911
+ SlTabList,
912
+ SlTabPanel,
913
+ SlTabs,
914
+ SlTabStart,
915
+ SlText,
916
+ ],
917
+ template: `
918
+ <div slTabs defaultValue="orders">
919
+ <div slTabList aria-label="Customer Harbor & Pine">
920
+ @for (view of views; track view.value) {
921
+ <div slTab [value]="view.value">
922
+ <span slTabStart
923
+ ><span slIcon><svg slGlyph [name]="view.icon"></svg></span
924
+ ></span>
925
+ {{ view.label }}
926
+ @if (view.count !== undefined) {
927
+ <span slTabEnd><span slBadge size="sm" [count]="view.count"></span></span>
928
+ }
929
+ </div>
930
+ }
931
+ </div>
932
+ @for (view of views; track view.value) {
933
+ <div slTabPanel [value]="view.value">
934
+ <span slText size="sm">{{ view.panel }}</span>
935
+ </div>
936
+ }
937
+ </div>
938
+ `,
939
+ })
940
+ export class TabsIcons {
941
+ protected readonly views = VIEWS;
942
+ }
943
+ ```
944
+
945
+ ### record-header.ts
946
+
947
+ Example
948
+
949
+ ```ts
950
+ import { Component } from '@angular/core';
951
+ import { SlBadge } from '@slotted/angular/badge';
952
+ import { SlButton, SlButtonStart } from '@slotted/angular/button';
953
+ import {
954
+ SlDescriptionList,
955
+ SlDescriptionListDescription,
956
+ SlDescriptionListItem,
957
+ SlDescriptionListTerm,
958
+ } from '@slotted/angular/description-list';
959
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
960
+ import { SlInline } from '@slotted/angular/inline';
961
+ import { SlStack } from '@slotted/angular/stack';
962
+ import {
963
+ SlTable,
964
+ SlTableBody,
965
+ SlTableCell,
966
+ SlTableColumnHeader,
967
+ SlTableContent,
968
+ SlTableHead,
969
+ SlTableRow,
970
+ SlTableRowHeader,
971
+ } from '@slotted/angular/table';
972
+ import { SlTab, SlTabEnd, SlTabList, SlTabPanel, SlTabs, SlTabStart } from '@slotted/angular/tabs';
973
+ import { SlHeading, SlText } from '@slotted/angular/typography';
974
+
975
+ const FACTS = [
976
+ ['Customer', 'Harbor & Pine'],
977
+ ['Placed', 'September 8, 2026'],
978
+ ['Payment terms', 'Net 30'],
979
+ ['Ship to', '88 Dock Street, Portland, OR'],
980
+ ['Carrier', 'Atlas Freight'],
981
+ ['Total', '$1,240.00'],
982
+ ];
983
+
984
+ const LINES = [
985
+ { sku: 'OAK-90', item: 'Oak shelf, 90 cm', quantity: 4, amount: '$720.00' },
986
+ { sku: 'BRK-ST', item: 'Wall bracket, steel', quantity: 8, amount: '$192.00' },
987
+ { sku: 'KIT-AS', item: 'Assembly kit', quantity: 1, amount: '$328.00' },
988
+ ];
989
+
990
+ const ACTIVITY = [
991
+ 'Sep 9, 14:02 — Picked at Reno, NV by Luis Ortega',
992
+ 'Sep 8, 16:45 — Payment approved',
993
+ 'Sep 8, 16:41 — Order placed by Dana Whitfield',
994
+ ];
995
+
996
+ @Component({
997
+ selector: 'app-tabs-record-header',
998
+ imports: [
999
+ SlBadge,
1000
+ SlButton,
1001
+ SlButtonStart,
1002
+ SlDescriptionList,
1003
+ SlDescriptionListDescription,
1004
+ SlDescriptionListItem,
1005
+ SlDescriptionListTerm,
1006
+ SlGlyph,
1007
+ SlHeading,
1008
+ SlIcon,
1009
+ SlInline,
1010
+ SlStack,
1011
+ SlTab,
1012
+ SlTabEnd,
1013
+ SlTabList,
1014
+ SlTabPanel,
1015
+ SlTable,
1016
+ SlTableBody,
1017
+ SlTableCell,
1018
+ SlTableColumnHeader,
1019
+ SlTableContent,
1020
+ SlTableHead,
1021
+ SlTableRow,
1022
+ SlTableRowHeader,
1023
+ SlTabs,
1024
+ SlTabStart,
1025
+ SlText,
1026
+ ],
1027
+ template: `
1028
+ <div slStack [gap]="6">
1029
+ <div slInline [gap]="4" align="start" justify="between" wrap="wrap">
1030
+ <div slStack [gap]="1">
1031
+ <div slInline [gap]="3" align="center">
1032
+ <h2 slHeading size="xl">Order SO-1187</h2>
1033
+ <span slBadge tone="warning">Awaiting pickup</span>
1034
+ </div>
1035
+ <span slText size="sm" tone="muted">Harbor & Pine · Placed September 8, 2026</span>
1036
+ </div>
1037
+ <div slInline [gap]="2">
1038
+ <button slButton size="sm" tone="secondary" variant="outline">
1039
+ <span slButtonStart><svg slGlyph name="file-text"></svg></span>
1040
+ Packing slip
1041
+ </button>
1042
+ <button slButton size="sm">Mark shipped</button>
1043
+ </div>
1044
+ </div>
1045
+ <div slTabs defaultValue="overview">
1046
+ <div slTabList aria-label="Order SO-1187">
1047
+ <div slTab value="overview">
1048
+ <span slTabStart
1049
+ ><span slIcon><svg slGlyph name="file-text"></svg></span
1050
+ ></span>
1051
+ Overview
1052
+ </div>
1053
+ <div slTab value="items">
1054
+ <span slTabStart
1055
+ ><span slIcon><svg slGlyph name="inbox"></svg></span
1056
+ ></span>
1057
+ Items
1058
+ <span slTabEnd><span slBadge size="sm" [count]="lines.length"></span></span>
1059
+ </div>
1060
+ <div slTab value="activity">
1061
+ <span slTabStart
1062
+ ><span slIcon><svg slGlyph name="clock"></svg></span
1063
+ ></span>
1064
+ Activity
1065
+ <span slTabEnd><span slBadge size="sm" [count]="activity.length"></span></span>
1066
+ </div>
1067
+ </div>
1068
+ <div slTabPanel value="overview">
1069
+ <div slDescriptionList [columns]="2">
1070
+ @for (fact of facts; track fact[0]) {
1071
+ <div slDescriptionListItem>
1072
+ <dt slDescriptionListTerm>{{ fact[0] }}</dt>
1073
+ <dd slDescriptionListDescription>{{ fact[1] }}</dd>
1074
+ </div>
1075
+ }
1076
+ </div>
1077
+ </div>
1078
+ <div slTabPanel value="items">
1079
+ <div slTable [columns]="4">
1080
+ <div slTableContent aria-label="Order lines">
1081
+ <thead slTableHead>
1082
+ <tr slTableRow>
1083
+ <th slTableColumnHeader>SKU</th>
1084
+ <th slTableColumnHeader>Item</th>
1085
+ <th slTableColumnHeader numeric>Quantity</th>
1086
+ <th slTableColumnHeader numeric>Amount</th>
1087
+ </tr>
1088
+ </thead>
1089
+ <tbody slTableBody>
1090
+ @for (line of lines; track line.sku) {
1091
+ <tr slTableRow [value]="line.sku">
1092
+ <th slTableRowHeader>{{ line.sku }}</th>
1093
+ <td slTableCell>{{ line.item }}</td>
1094
+ <td slTableCell numeric>{{ line.quantity }}</td>
1095
+ <td slTableCell numeric>{{ line.amount }}</td>
1096
+ </tr>
1097
+ }
1098
+ </tbody>
1099
+ </div>
1100
+ </div>
1101
+ </div>
1102
+ <div slTabPanel value="activity">
1103
+ <div slStack [gap]="2">
1104
+ @for (entry of activity; track entry) {
1105
+ <span slText size="sm">{{ entry }}</span>
1106
+ }
1107
+ </div>
1108
+ </div>
1109
+ </div>
1110
+ </div>
1111
+ `,
1112
+ })
1113
+ export class TabsRecordHeader {
1114
+ protected readonly facts = FACTS;
1115
+ protected readonly lines = LINES;
1116
+ protected readonly activity = ACTIVITY;
1117
+ }
1118
+ ```
1119
+
1120
+ ### settings.ts
1121
+
1122
+ Example
1123
+
1124
+ ```ts
1125
+ import { Component } from '@angular/core';
1126
+ import { SlButton } from '@slotted/angular/button';
1127
+ import {
1128
+ SlDescriptionList,
1129
+ SlDescriptionListDescription,
1130
+ SlDescriptionListItem,
1131
+ SlDescriptionListTerm,
1132
+ } from '@slotted/angular/description-list';
1133
+ import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
1134
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
1135
+ import { SlStack } from '@slotted/angular/stack';
1136
+ import { SlSwitch } from '@slotted/angular/switch';
1137
+ import { SlTab, SlTabList, SlTabPanel, SlTabs, SlTabStart } from '@slotted/angular/tabs';
1138
+ import { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';
1139
+ import { SlHeading, SlText } from '@slotted/angular/typography';
1140
+
1141
+ const PLAN = [
1142
+ ['Plan', 'Operations, annual'],
1143
+ ['Seats', '24 of 30 in use'],
1144
+ ['Next invoice', 'November 1, 2026: $4,320.00'],
1145
+ ];
1146
+
1147
+ @Component({
1148
+ selector: 'app-tabs-settings',
1149
+ imports: [
1150
+ SlButton,
1151
+ SlDescriptionList,
1152
+ SlDescriptionListDescription,
1153
+ SlDescriptionListItem,
1154
+ SlDescriptionListTerm,
1155
+ SlField,
1156
+ SlFieldDescription,
1157
+ SlFieldLabel,
1158
+ SlGlyph,
1159
+ SlHeading,
1160
+ SlIcon,
1161
+ SlStack,
1162
+ SlSwitch,
1163
+ SlTab,
1164
+ SlTabList,
1165
+ SlTabPanel,
1166
+ SlTabs,
1167
+ SlTabStart,
1168
+ SlText,
1169
+ SlTextField,
1170
+ SlTextFieldInput,
1171
+ ],
1172
+ template: `
1173
+ <div slTabs defaultValue="workspace" orientation="vertical">
1174
+ <div slTabList aria-label="Settings">
1175
+ <div slTab value="workspace">
1176
+ <span slTabStart
1177
+ ><span slIcon><svg slGlyph name="file-text"></svg></span
1178
+ ></span>
1179
+ Workspace
1180
+ </div>
1181
+ <div slTab value="notifications">
1182
+ <span slTabStart
1183
+ ><span slIcon><svg slGlyph name="bell"></svg></span
1184
+ ></span>
1185
+ Notifications
1186
+ </div>
1187
+ <div slTab value="security">
1188
+ <span slTabStart
1189
+ ><span slIcon><svg slGlyph name="lock"></svg></span
1190
+ ></span>
1191
+ Security
1192
+ </div>
1193
+ <div slTab value="billing">
1194
+ <span slTabStart
1195
+ ><span slIcon><svg slGlyph name="calendar"></svg></span
1196
+ ></span>
1197
+ Billing
1198
+ </div>
1199
+ </div>
1200
+ <div slTabPanel value="workspace">
1201
+ <div slStack [gap]="5" align="start">
1202
+ <h3 slHeading size="md">Workspace</h3>
1203
+ <div slField>
1204
+ <label slFieldLabel>Company name</label>
1205
+ <div slTextField>
1206
+ <input slTextFieldInput defaultValue="Northwind Traders" />
1207
+ </div>
1208
+ <span slFieldDescription>Printed on every invoice and packing slip.</span>
1209
+ </div>
1210
+ <div slField>
1211
+ <label slFieldLabel>Support email</label>
1212
+ <div slTextField>
1213
+ <input slTextFieldInput defaultValue="support@northwind.example" type="email" />
1214
+ </div>
1215
+ </div>
1216
+ <button slButton size="sm">Save changes</button>
1217
+ </div>
1218
+ </div>
1219
+ <div slTabPanel value="notifications">
1220
+ <div slStack [gap]="4">
1221
+ <h3 slHeading size="md">Notifications</h3>
1222
+ <span slSwitch defaultChecked>Low stock</span>
1223
+ <span slSwitch defaultChecked>Late pickups</span>
1224
+ <span slSwitch>Cycle count variances</span>
1225
+ </div>
1226
+ </div>
1227
+ <div slTabPanel value="security">
1228
+ <div slStack [gap]="4">
1229
+ <h3 slHeading size="md">Security</h3>
1230
+ <span slSwitch defaultChecked>Require two-factor sign-in</span>
1231
+ <span slText size="sm" tone="muted">Changed by Dana Whitfield on August 14.</span>
1232
+ </div>
1233
+ </div>
1234
+ <div slTabPanel value="billing">
1235
+ <div slStack [gap]="4">
1236
+ <h3 slHeading size="md">Billing</h3>
1237
+ <div slDescriptionList>
1238
+ @for (row of plan; track row[0]) {
1239
+ <div slDescriptionListItem>
1240
+ <dt slDescriptionListTerm>{{ row[0] }}</dt>
1241
+ <dd slDescriptionListDescription>{{ row[1] }}</dd>
1242
+ </div>
1243
+ }
1244
+ </div>
1245
+ </div>
1246
+ </div>
1247
+ </div>
1248
+ `,
1249
+ })
1250
+ export class TabsSettings {
1251
+ protected readonly plan = PLAN;
1252
+ }
1253
+ ```
1254
+
1255
+ ### variants.ts
1256
+
1257
+ Example
1258
+
1259
+ ```ts
1260
+ import { Component } from '@angular/core';
1261
+ import { SlStack } from '@slotted/angular/stack';
1262
+ import {
1263
+ SlTab,
1264
+ SlTabList,
1265
+ SlTabPanel,
1266
+ SlTabs,
1267
+ type TabsTrack,
1268
+ type TabsVariant,
1269
+ } from '@slotted/angular/tabs';
1270
+ import { SlText } from '@slotted/angular/typography';
1271
+
1272
+ const LOOKS: { variant: TabsVariant; track: TabsTrack }[] = [
1273
+ { variant: 'line', track: 'line' },
1274
+ { variant: 'contained', track: 'line' },
1275
+ { variant: 'line', track: 'none' },
1276
+ ];
1277
+
1278
+ const QUEUES = [
1279
+ { value: 'incoming', label: 'Incoming', panel: '14 purchase orders due this week.' },
1280
+ { value: 'outgoing', label: 'Outgoing', panel: '32 sales orders ready to ship.' },
1281
+ { value: 'returns', label: 'Returns', panel: '3 returns awaiting inspection.' },
1282
+ ];
1283
+
1284
+ @Component({
1285
+ selector: 'app-tabs-variants',
1286
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
1287
+ template: `
1288
+ <div slStack [gap]="8">
1289
+ @for (look of looks; track $index) {
1290
+ <div slTabs defaultValue="incoming" [track]="look.track" [variant]="look.variant">
1291
+ <div slTabList aria-label="Warehouse queues">
1292
+ @for (queue of queues; track queue.value) {
1293
+ <div slTab [value]="queue.value">{{ queue.label }}</div>
1294
+ }
1295
+ </div>
1296
+ @for (queue of queues; track queue.value) {
1297
+ <div slTabPanel [value]="queue.value">
1298
+ <span slText size="sm">{{ queue.panel }}</span>
1299
+ </div>
1300
+ }
1301
+ </div>
1302
+ }
1303
+ </div>
1304
+ `,
1305
+ })
1306
+ export class TabsVariants {
1307
+ protected readonly looks = LOOKS;
1308
+ protected readonly queues = QUEUES;
1309
+ }
1310
+ ```
1311
+
1312
+ ### vertical.ts
1313
+
1314
+ Example
1315
+
1316
+ ```ts
1317
+ import { Component } from '@angular/core';
1318
+ import { SlStack } from '@slotted/angular/stack';
1319
+ import { SlTab, SlTabList, SlTabPanel, SlTabs } from '@slotted/angular/tabs';
1320
+ import { SlText } from '@slotted/angular/typography';
1321
+
1322
+ const SECTIONS = [
1323
+ {
1324
+ value: 'general',
1325
+ label: 'General',
1326
+ lines: ['Code: RNO', 'Address: 1450 Terminal Way, Reno, NV 89502', 'Time zone: Pacific Time'],
1327
+ },
1328
+ {
1329
+ value: 'receiving',
1330
+ label: 'Receiving',
1331
+ lines: ['Dock hours: 06:00–14:00, Monday to Friday', 'Appointment required for full trucks'],
1332
+ },
1333
+ {
1334
+ value: 'shipping',
1335
+ label: 'Shipping',
1336
+ lines: ['Carriers: Atlas Freight, Ridgeway Parcel', 'Daily cut-off: 15:30'],
1337
+ },
1338
+ {
1339
+ value: 'storage',
1340
+ label: 'Storage',
1341
+ lines: ['Zones: A–F, 1,920 bin locations', 'Cycle count: every 30 days'],
1342
+ },
1343
+ ];
1344
+
1345
+ @Component({
1346
+ selector: 'app-tabs-vertical',
1347
+ imports: [SlStack, SlTab, SlTabList, SlTabPanel, SlTabs, SlText],
1348
+ template: `
1349
+ <div slTabs defaultValue="general" orientation="vertical">
1350
+ <div slTabList aria-label="Warehouse settings">
1351
+ @for (section of sections; track section.value) {
1352
+ <div slTab [value]="section.value">{{ section.label }}</div>
1353
+ }
1354
+ </div>
1355
+ @for (section of sections; track section.value) {
1356
+ <div slTabPanel [value]="section.value">
1357
+ <div slStack [gap]="2">
1358
+ @for (line of section.lines; track line) {
1359
+ <span slText size="sm">{{ line }}</span>
1360
+ }
1361
+ </div>
1362
+ </div>
1363
+ }
1364
+ </div>
1365
+ `,
1366
+ })
1367
+ export class TabsVertical {
1368
+ protected readonly sections = SECTIONS;
1369
+ }
1370
+ ```