@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,1651 @@
1
+ <!-- index: ./index.md -->
2
+ # menu
3
+
4
+ `data-ui="menu"` · List of actions opened from a trigger.
5
+
6
+ ## Examples
7
+
8
+ ### Playground
9
+
10
+ One menu with every input on it, driven by the controls under the canvas. Change side and align and watch the surface move around the control that opened it.
11
+
12
+ Excerpt — not a complete module
13
+
14
+ ```html
15
+ <button slButton variant="outline" [slMenuTriggerFor]="document">Document</button>
16
+ <sl-menu #document>
17
+ <button slMenuItem shortcut="Mod+D">Duplicate</button>
18
+ <button slMenuItem [disabled]="true">Publish</button>
19
+ <hr slMenuSeparator />
20
+ <button slMenuItem tone="danger">Delete…</button>
21
+ </sl-menu>
22
+ ```
23
+
24
+ ### Commands
25
+
26
+ The default: an item runs and the menu closes. The second asks to stay open, which is what a command a reader repeats needs.
27
+
28
+ Excerpt — not a complete module
29
+
30
+ ```html
31
+ <button slMenuItem (select)="duplicate($event.reason)">Duplicate</button>
32
+ <button slMenuItem [closeOnSelect]="false" (select)="zoomIn()">Zoom in</button>
33
+ ```
34
+
35
+ ### Icons
36
+
37
+ Two items carry a mark and two do not, and every label still starts on the same line: the column exists for the menu rather than for the item.
38
+
39
+ Example
40
+
41
+ ```ts
42
+ import { Component } from '@angular/core';
43
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
44
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
45
+ import {
46
+ SlMenu,
47
+ SlMenuItem,
48
+ SlMenuItemIcon,
49
+ SlMenuSeparator,
50
+ SlMenuTrigger,
51
+ } from '@slotted/angular/menu';
52
+
53
+ @Component({
54
+ selector: 'app-menu-icons',
55
+ imports: [
56
+ SlButton,
57
+ SlButtonEnd,
58
+ SlGlyph,
59
+ SlIcon,
60
+ SlMenu,
61
+ SlMenuItem,
62
+ SlMenuItemIcon,
63
+ SlMenuSeparator,
64
+ SlMenuTrigger,
65
+ ],
66
+ template: `
67
+ <button slButton variant="outline" [slMenuTriggerFor]="invoice">
68
+ Invoice INV-2041
69
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
70
+ </button>
71
+ <sl-menu #invoice>
72
+ <button slMenuItem shortcut="Mod+D">
73
+ <span slMenuItemIcon
74
+ ><span slIcon><svg slGlyph name="copy"></svg></span
75
+ ></span>
76
+ Duplicate
77
+ </button>
78
+ <button slMenuItem shortcut="Mod+Enter">
79
+ <span slMenuItemIcon
80
+ ><span slIcon><svg slGlyph name="external"></svg></span
81
+ ></span>
82
+ Open in new tab
83
+ </button>
84
+ <button slMenuItem shortcut="Mod+P">
85
+ <span slMenuItemIcon
86
+ ><span slIcon><svg slGlyph name="file-text"></svg></span
87
+ ></span>
88
+ Print
89
+ </button>
90
+ <button slMenuItem>
91
+ <span slMenuItemIcon
92
+ ><span slIcon><svg slGlyph name="pin"></svg></span
93
+ ></span>
94
+ Pin to dashboard
95
+ </button>
96
+ <button slMenuItem shortcut="Shift+Mod+R">Rename…</button>
97
+ <hr slMenuSeparator />
98
+ <button slMenuItem shortcut="Mod+Backspace" tone="danger">
99
+ <span slMenuItemIcon
100
+ ><span slIcon><svg slGlyph name="trash"></svg></span
101
+ ></span>
102
+ Delete draft
103
+ </button>
104
+ </sl-menu>
105
+ `,
106
+ })
107
+ export class MenuIcons {}
108
+ ```
109
+
110
+ ### Shortcuts
111
+
112
+ Written once as Mod+S and printed as ⌘S on a Mac and Ctrl+S elsewhere. The legend is hidden from a screen reader, which hears aria-keyshortcuts instead.
113
+
114
+ Excerpt — not a complete module
115
+
116
+ ```html
117
+ <button slMenuItem shortcut="Mod+S">Save</button>
118
+ <button slMenuItem shortcut="Shift+Mod+S">Save as…</button>
119
+ ```
120
+
121
+ ### Checkbox items
122
+
123
+ Each item holds a state of its own and the menu stays open, so a reader can turn three things on without opening it three times. Space toggles without closing.
124
+
125
+ Example
126
+
127
+ ```ts
128
+ import { Component, computed, signal } from '@angular/core';
129
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
130
+ import { SlGlyph } from '@slotted/angular/icon';
131
+ import { SlInline } from '@slotted/angular/inline';
132
+ import { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';
133
+ import { SlText } from '@slotted/angular/typography';
134
+
135
+ @Component({
136
+ selector: 'app-menu-checkbox-items',
137
+ imports: [SlButton, SlButtonEnd, SlGlyph, SlInline, SlMenu, SlMenuItem, SlMenuTrigger, SlText],
138
+ template: `
139
+ <div slInline align="center" [gap]="3">
140
+ <button slButton variant="outline" [slMenuTriggerFor]="show">
141
+ Show
142
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
143
+ </button>
144
+ <sl-menu #show>
145
+ <button slMenuCheckboxItem [(checked)]="archived">Archived orders</button>
146
+ <button slMenuCheckboxItem [(checked)]="test">Test orders</button>
147
+ <button slMenuCheckboxItem [(checked)]="cancelled">Cancelled orders</button>
148
+ </sl-menu>
149
+ <span slText size="sm" tone="muted">{{ summary() }}</span>
150
+ </div>
151
+ `,
152
+ })
153
+ export class MenuCheckboxItems {
154
+ protected readonly archived = signal(false);
155
+ protected readonly test = signal(false);
156
+ protected readonly cancelled = signal(true);
157
+ protected readonly summary = computed(() => {
158
+ const shown = [
159
+ this.archived() && 'archived',
160
+ this.test() && 'test',
161
+ this.cancelled() && 'cancelled',
162
+ ].filter(Boolean);
163
+ return shown.length === 0 ? 'Open orders only' : `Including ${shown.join(', ')}`;
164
+ });
165
+ }
166
+ ```
167
+
168
+ ### Radio items
169
+
170
+ One value across the group, chosen among the items inside it. The mark sits in the same column an icon would, so the labels stay in line.
171
+
172
+ Example
173
+
174
+ ```ts
175
+ import { Component, computed, signal } from '@angular/core';
176
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
177
+ import { SlGlyph } from '@slotted/angular/icon';
178
+ import { SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';
179
+
180
+ const GROUPINGS = [
181
+ { value: 'none', label: 'No grouping' },
182
+ { value: 'status', label: 'Status' },
183
+ { value: 'customer', label: 'Customer' },
184
+ { value: 'warehouse', label: 'Warehouse' },
185
+ ];
186
+
187
+ @Component({
188
+ selector: 'app-menu-radio-items',
189
+ imports: [SlButton, SlButtonEnd, SlGlyph, SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger],
190
+ template: `
191
+ <button slButton variant="outline" [slMenuTriggerFor]="group">
192
+ Group by: {{ current() }}
193
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
194
+ </button>
195
+ <sl-menu #group>
196
+ <sl-menu-radio-group aria-label="Group orders by" [(value)]="grouping">
197
+ @for (option of groupings; track option.value) {
198
+ <button slMenuRadioItem [value]="option.value">{{ option.label }}</button>
199
+ }
200
+ </sl-menu-radio-group>
201
+ </sl-menu>
202
+ `,
203
+ })
204
+ export class MenuRadioItems {
205
+ protected readonly groupings = GROUPINGS;
206
+ protected readonly grouping = signal<string | undefined>('status');
207
+ protected readonly current = computed(
208
+ () => GROUPINGS.find((option) => option.value === this.grouping())?.label,
209
+ );
210
+ }
211
+ ```
212
+
213
+ ### Groups
214
+
215
+ A label names the run under it and the group points at it, so a reader hears "Sort by" before the options rather than a heading belonging to nothing.
216
+
217
+ Example
218
+
219
+ ```ts
220
+ import { Component } from '@angular/core';
221
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
222
+ import { SlGlyph } from '@slotted/angular/icon';
223
+ import {
224
+ SlMenu,
225
+ SlMenuGroup,
226
+ SlMenuItem,
227
+ SlMenuSeparator,
228
+ SlMenuTrigger,
229
+ } from '@slotted/angular/menu';
230
+
231
+ @Component({
232
+ selector: 'app-menu-groups',
233
+ imports: [
234
+ SlButton,
235
+ SlButtonEnd,
236
+ SlGlyph,
237
+ SlMenu,
238
+ SlMenuGroup,
239
+ SlMenuItem,
240
+ SlMenuSeparator,
241
+ SlMenuTrigger,
242
+ ],
243
+ template: `
244
+ <button slButton variant="outline" [slMenuTriggerFor]="order">
245
+ SO-10482
246
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
247
+ </button>
248
+ <sl-menu #order>
249
+ <sl-menu-group label="Fulfilment">
250
+ <button slMenuItem>Mark as packed</button>
251
+ <button slMenuItem>Mark as shipped</button>
252
+ <button slMenuItem>Print packing slip</button>
253
+ </sl-menu-group>
254
+ <hr slMenuSeparator />
255
+ <sl-menu-group label="Billing">
256
+ <button slMenuItem>Send invoice</button>
257
+ <button slMenuItem>Record payment…</button>
258
+ </sl-menu-group>
259
+ <hr slMenuSeparator />
260
+ <sl-menu-group label="Customer">
261
+ <button slMenuItem>Open Northwind Traders</button>
262
+ <button slMenuItem>Email the buyer</button>
263
+ </sl-menu-group>
264
+ </sl-menu>
265
+ `,
266
+ })
267
+ export class MenuGroups {}
268
+ ```
269
+
270
+ ### Submenus
271
+
272
+ A menu nested in a menu. Hover opens it after a pause, the inline-end arrow opens it from the keyboard, and the pointer may cut diagonally across the items between.
273
+
274
+ Excerpt — not a complete module
275
+
276
+ ```html
277
+ <sl-menu #share>
278
+ <button slMenuItem>Copy link</button>
279
+ <button slMenuItem [slMenuTriggerFor]="sendTo">Send to</button>
280
+ <sl-menu #sendTo>
281
+ <button slMenuItem>Slack</button>
282
+ </sl-menu>
283
+ </sl-menu>
284
+ ```
285
+
286
+ ### Submenu open
287
+
288
+ The submenu as it lands: its panel one gap out from the parent surface, not against the item, and its first item level with the item that opened it. Every other scene keeps its submenu closed until it is hovered or the inline-end arrow asks for it.
289
+
290
+ Excerpt — not a complete module
291
+
292
+ ```html
293
+ <sl-menu #sendTo [open]="true">
294
+ <button slMenuItem>Slack</button>
295
+ </sl-menu>
296
+ ```
297
+
298
+ ### Header
299
+
300
+ An account menu opens with who it belongs to. The avatar starts at the icons' edge, the arrows begin at the first command, and a reader hears the name and the address as the surface's description.
301
+
302
+ Excerpt — not a complete module
303
+
304
+ ```html
305
+ <sl-menu #account>
306
+ <div slMenuHeader>
307
+ <span slAvatar name="Ada Lovelace" size="md" decorative></span>
308
+ <span data-part="label">Ada Lovelace</span>
309
+ <span slMenuItemDescription>ada@analytical.engine</span>
310
+ </div>
311
+ <hr slMenuSeparator />
312
+ <button slMenuItem>Profile</button>
313
+ <button slMenuItem tone="danger">Sign out</button>
314
+ </sl-menu>
315
+ ```
316
+
317
+ ### Meta
318
+
319
+ Counts and the value a submenu holds, in a column of their own: the numbers end on one edge, the shortcuts keep theirs, and a submenu trigger shows its current value before the chevron.
320
+
321
+ Example
322
+
323
+ ```ts
324
+ import { Component } from '@angular/core';
325
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
326
+ import { SlGlyph } from '@slotted/angular/icon';
327
+ import {
328
+ SlMenu,
329
+ SlMenuItem,
330
+ SlMenuItemMeta,
331
+ SlMenuSeparator,
332
+ SlMenuTrigger,
333
+ } from '@slotted/angular/menu';
334
+
335
+ const VIEWS = [
336
+ { label: 'Awaiting payment', count: '18' },
337
+ { label: 'Ready to ship', count: '42' },
338
+ { label: 'On hold', count: '3' },
339
+ { label: 'Returns', count: '7' },
340
+ ];
341
+
342
+ @Component({
343
+ selector: 'app-menu-meta',
344
+ imports: [
345
+ SlButton,
346
+ SlButtonEnd,
347
+ SlGlyph,
348
+ SlMenu,
349
+ SlMenuItem,
350
+ SlMenuItemMeta,
351
+ SlMenuSeparator,
352
+ SlMenuTrigger,
353
+ ],
354
+ template: `
355
+ <button slButton variant="outline" [slMenuTriggerFor]="viewMenu">
356
+ All orders
357
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
358
+ </button>
359
+ <sl-menu #viewMenu>
360
+ <button slMenuItem>All orders <span slMenuItemMeta>1,284</span></button>
361
+ <hr slMenuSeparator />
362
+ @for (view of views; track view.label) {
363
+ <button slMenuItem>
364
+ {{ view.label }} <span slMenuItemMeta>{{ view.count }}</span>
365
+ </button>
366
+ }
367
+ </sl-menu>
368
+ `,
369
+ })
370
+ export class MenuMeta {
371
+ protected readonly views = VIEWS;
372
+ }
373
+ ```
374
+
375
+ ### Tone
376
+
377
+ A destructive command reads as destructive before it is read at all: the tone paints the label, the mark and the highlight together, in all three schemes.
378
+
379
+ Excerpt — not a complete module
380
+
381
+ ```html
382
+ <button slMenuItem tone="danger" (select)="remove()">
383
+ Delete document
384
+ <span slMenuItemDescription>This cannot be undone.</span>
385
+ </button>
386
+ ```
387
+
388
+ ### Placement
389
+
390
+ The surface hangs from the start edge of its control by default, and flips or slides rather than leaving the screen. Both inline values mirror in a right-to-left document.
391
+
392
+ Example
393
+
394
+ ```ts
395
+ import { Component } from '@angular/core';
396
+ import { SlButton } from '@slotted/angular/button';
397
+ import { SlInline } from '@slotted/angular/inline';
398
+ import {
399
+ SlMenu,
400
+ SlMenuItem,
401
+ SlMenuTrigger,
402
+ type MenuAlign,
403
+ type MenuSide,
404
+ } from '@slotted/angular/menu';
405
+
406
+ const PLACEMENTS: { label: string; side: MenuSide; align: MenuAlign }[] = [
407
+ { label: 'Bottom, start', side: 'bottom', align: 'start' },
408
+ { label: 'Bottom, end', side: 'bottom', align: 'end' },
409
+ { label: 'Top, start', side: 'top', align: 'start' },
410
+ { label: 'Inline end', side: 'inline-end', align: 'start' },
411
+ ];
412
+
413
+ @Component({
414
+ selector: 'app-menu-placement',
415
+ imports: [SlButton, SlInline, SlMenu, SlMenuItem, SlMenuTrigger],
416
+ template: `
417
+ <div slInline align="center" wrap="wrap" [gap]="3">
418
+ @for (placement of placements; track placement.label) {
419
+ <button slButton variant="outline" [slMenuTriggerFor]="menu">{{ placement.label }}</button>
420
+ <sl-menu #menu [align]="placement.align" [side]="placement.side">
421
+ <button slMenuItem>Rename…</button>
422
+ <button slMenuItem>Duplicate</button>
423
+ <button slMenuItem>Archive</button>
424
+ </sl-menu>
425
+ }
426
+ </div>
427
+ `,
428
+ })
429
+ export class MenuPlacement {
430
+ protected readonly placements = PLACEMENTS;
431
+ }
432
+ ```
433
+
434
+ ### A menu taller than the screen
435
+
436
+ The surface is bounded by the room the positioner reports and scrolls inside it, so thirty commands never run off the bottom of the window.
437
+
438
+ Excerpt — not a complete module
439
+
440
+ ```html
441
+ <sl-menu #moveTo aria-label="Move to">
442
+ @for (folder of folders; track folder) {
443
+ <button slMenuItem>{{ folder }}</button>
444
+ }
445
+ </sl-menu>
446
+ ```
447
+
448
+ ### States
449
+
450
+ Disabled, checked, the parent item while its submenu is open, and the surface waiting for its items. A disabled item still takes focus and still runs nothing.
451
+
452
+ Excerpt — not a complete module
453
+
454
+ ```html
455
+ <sl-menu #labels [loading]="pending()">
456
+ <button slMenuItem [disabled]="true">Publish</button>
457
+ <button slMenuCheckboxItem [checked]="true">Show comments</button>
458
+ <div slMenuEmpty>Loading labels…</div>
459
+ </sl-menu>
460
+ ```
461
+
462
+ ### Keyboard
463
+
464
+ Arrows move and wrap, Home and End reach the ends, typing jumps to a command by name, Escape closes one surface and Tab closes them all and moves on down the page.
465
+
466
+ Example
467
+
468
+ ```ts
469
+ import { Component, signal } from '@angular/core';
470
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
471
+ import { SlGlyph } from '@slotted/angular/icon';
472
+ import { SlInline } from '@slotted/angular/inline';
473
+ import {
474
+ SlMenu,
475
+ SlMenuItem,
476
+ SlMenuSeparator,
477
+ SlMenuTrigger,
478
+ type MenuSelectEvent,
479
+ } from '@slotted/angular/menu';
480
+ import { SlText } from '@slotted/angular/typography';
481
+
482
+ const FORMATS = ['CSV', 'PDF', 'Excel'];
483
+
484
+ @Component({
485
+ selector: 'app-menu-keyboard',
486
+ imports: [
487
+ SlButton,
488
+ SlButtonEnd,
489
+ SlGlyph,
490
+ SlInline,
491
+ SlMenu,
492
+ SlMenuItem,
493
+ SlMenuSeparator,
494
+ SlMenuTrigger,
495
+ SlText,
496
+ ],
497
+ template: `
498
+ <div slInline align="center" wrap="wrap" [gap]="3">
499
+ <button slButton variant="outline" [slMenuTriggerFor]="order">
500
+ Order
501
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
502
+ </button>
503
+ <sl-menu #order>
504
+ <button slMenuItem shortcut="Mod+E" (select)="ran('Edit order', $event)">Edit order</button>
505
+ <button slMenuItem shortcut="Mod+D" (select)="ran('Duplicate', $event)">Duplicate</button>
506
+ <button slMenuItem [slMenuTriggerFor]="exportAs">Export as</button>
507
+ <sl-menu #exportAs>
508
+ @for (format of formats; track format) {
509
+ <button slMenuItem (select)="ran('Export as ' + format, $event)">{{ format }}</button>
510
+ }
511
+ </sl-menu>
512
+ <hr slMenuSeparator />
513
+ <button slMenuItem (select)="ran('Archive', $event)">Archive</button>
514
+ </sl-menu>
515
+ <span slText size="sm" tone="muted">{{ last() }}</span>
516
+ </div>
517
+ `,
518
+ })
519
+ export class MenuKeyboard {
520
+ protected readonly formats = FORMATS;
521
+ protected readonly last = signal('Focus Order, then press ArrowDown.');
522
+
523
+ protected ran(command: string, event: MenuSelectEvent): void {
524
+ this.last.set(`${command}, by ${event.reason}`);
525
+ }
526
+ }
527
+ ```
528
+
529
+ ### In context
530
+
531
+ A row of actions in a table: the trigger is the consumer's own icon button, the menu holds the row's commands, and provideMenuDefaults sets the side once.
532
+
533
+ Excerpt — not a complete module
534
+
535
+ ```html
536
+ <button slButton variant="ghost" aria-label="Row actions" [slMenuTriggerFor]="rowActions">⋯</button>
537
+ <sl-menu #rowActions>
538
+ <button slMenuItem>Open</button>
539
+ </sl-menu>
540
+ ```
541
+
542
+ ### account-menu.ts
543
+
544
+ Example
545
+
546
+ ```ts
547
+ import { Component, computed, signal } from '@angular/core';
548
+ import { SlAvatar } from '@slotted/angular/avatar';
549
+ import { SlButton, SlButtonStart } from '@slotted/angular/button';
550
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
551
+ import {
552
+ SlMenu,
553
+ SlMenuHeader,
554
+ SlMenuItem,
555
+ SlMenuItemDescription,
556
+ SlMenuItemIcon,
557
+ SlMenuItemMeta,
558
+ SlMenuRadioGroup,
559
+ SlMenuSeparator,
560
+ SlMenuTrigger,
561
+ } from '@slotted/angular/menu';
562
+
563
+ const WORKSPACES = ['Northwind Operations', 'Northwind Europe', 'Northwind Wholesale'];
564
+
565
+ @Component({
566
+ selector: 'app-menu-account-menu',
567
+ imports: [
568
+ SlAvatar,
569
+ SlButton,
570
+ SlButtonStart,
571
+ SlGlyph,
572
+ SlIcon,
573
+ SlMenu,
574
+ SlMenuHeader,
575
+ SlMenuItem,
576
+ SlMenuItemDescription,
577
+ SlMenuItemIcon,
578
+ SlMenuItemMeta,
579
+ SlMenuRadioGroup,
580
+ SlMenuSeparator,
581
+ SlMenuTrigger,
582
+ ],
583
+ template: `
584
+ <button slButton variant="ghost" [slMenuTriggerFor]="account">
585
+ <span slButtonStart><span slAvatar decorative name="Maria Chen" size="sm"></span></span>
586
+ Maria Chen
587
+ </button>
588
+ <sl-menu #account align="end">
589
+ <div slMenuHeader>
590
+ <span slAvatar decorative name="Maria Chen" size="md"></span>
591
+ <span data-part="label">Maria Chen</span>
592
+ <span slMenuItemDescription>maria.chen&#64;northwind.example</span>
593
+ </div>
594
+ <hr slMenuSeparator />
595
+ <button slMenuItem>
596
+ <span slMenuItemIcon
597
+ ><span slIcon><svg slGlyph name="person"></svg></span
598
+ ></span>
599
+ Profile
600
+ </button>
601
+ <button slMenuItem>
602
+ <span slMenuItemIcon
603
+ ><span slIcon><svg slGlyph name="bell"></svg></span
604
+ ></span>
605
+ Notifications
606
+ </button>
607
+ <button slMenuItem [slMenuTriggerFor]="workspaces">
608
+ Workspace <span slMenuItemMeta>{{ short() }}</span>
609
+ </button>
610
+ <sl-menu #workspaces>
611
+ <sl-menu-radio-group [(value)]="workspace">
612
+ @for (name of names; track name) {
613
+ <button slMenuRadioItem [value]="name">{{ name }}</button>
614
+ }
615
+ </sl-menu-radio-group>
616
+ </sl-menu>
617
+ <hr slMenuSeparator />
618
+ <button slMenuItem tone="danger">
619
+ <span slMenuItemIcon
620
+ ><span slIcon><svg slGlyph name="arrow-left"></svg></span
621
+ ></span>
622
+ Sign out
623
+ </button>
624
+ </sl-menu>
625
+ `,
626
+ })
627
+ export class MenuAccountMenu {
628
+ protected readonly names = WORKSPACES;
629
+ protected readonly workspace = signal<string | undefined>('Northwind Operations');
630
+ protected readonly short = computed(() => this.workspace()?.replace('Northwind ', ''));
631
+ }
632
+ ```
633
+
634
+ ### column-visibility.ts
635
+
636
+ Example
637
+
638
+ ```ts
639
+ import { Component, computed, signal } from '@angular/core';
640
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
641
+ import { SlGlyph } from '@slotted/angular/icon';
642
+ import { SlMenu, SlMenuGroup, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';
643
+ import { SlStack } from '@slotted/angular/stack';
644
+ import {
645
+ SlTable,
646
+ SlTableBody,
647
+ SlTableCell,
648
+ SlTableColumnHeader,
649
+ SlTableContent,
650
+ SlTableHead,
651
+ SlTableRow,
652
+ SlTableRowHeader,
653
+ } from '@slotted/angular/table';
654
+
655
+ type Column = 'customer' | 'status' | 'warehouse' | 'total';
656
+
657
+ const COLUMNS: { key: Column; label: string; numeric?: boolean }[] = [
658
+ { key: 'customer', label: 'Customer' },
659
+ { key: 'status', label: 'Status' },
660
+ { key: 'warehouse', label: 'Warehouse' },
661
+ { key: 'total', label: 'Total', numeric: true },
662
+ ];
663
+
664
+ const ORDERS: (Record<Column, string> & { id: string })[] = [
665
+ {
666
+ id: 'SO-10482',
667
+ customer: 'Northwind Traders',
668
+ status: 'Packed',
669
+ warehouse: 'Rotterdam',
670
+ total: '$1,240.00',
671
+ },
672
+ {
673
+ id: 'SO-10483',
674
+ customer: 'Contoso Foods',
675
+ status: 'Awaiting payment',
676
+ warehouse: 'Leipzig',
677
+ total: '$860.50',
678
+ },
679
+ {
680
+ id: 'SO-10484',
681
+ customer: 'Fabrikam Supply',
682
+ status: 'Shipped',
683
+ warehouse: 'Lyon',
684
+ total: '$2,315.75',
685
+ },
686
+ ];
687
+
688
+ @Component({
689
+ selector: 'app-menu-column-visibility',
690
+ imports: [
691
+ SlButton,
692
+ SlButtonEnd,
693
+ SlGlyph,
694
+ SlMenu,
695
+ SlMenuGroup,
696
+ SlMenuItem,
697
+ SlMenuTrigger,
698
+ SlStack,
699
+ SlTable,
700
+ SlTableBody,
701
+ SlTableCell,
702
+ SlTableColumnHeader,
703
+ SlTableContent,
704
+ SlTableHead,
705
+ SlTableRow,
706
+ SlTableRowHeader,
707
+ ],
708
+ template: `
709
+ <div slStack align="end" [gap]="3">
710
+ <button slButton size="sm" variant="outline" [slMenuTriggerFor]="columnMenu">
711
+ Columns
712
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
713
+ </button>
714
+ <sl-menu #columnMenu align="end">
715
+ <sl-menu-group label="Show columns">
716
+ @for (column of columns; track column.key) {
717
+ <button
718
+ slMenuCheckboxItem
719
+ [checked]="visible()[column.key]"
720
+ (checkedChange)="toggle(column.key, $event)"
721
+ >
722
+ {{ column.label }}
723
+ </button>
724
+ }
725
+ </sl-menu-group>
726
+ </sl-menu>
727
+ <div slTable [columns]="shown().length + 1">
728
+ <div slTableContent>
729
+ <thead slTableHead>
730
+ <tr slTableRow>
731
+ <th slTableColumnHeader>Order</th>
732
+ @for (column of shown(); track column.key) {
733
+ <th slTableColumnHeader [numeric]="column.numeric ?? false">{{ column.label }}</th>
734
+ }
735
+ </tr>
736
+ </thead>
737
+ <tbody slTableBody>
738
+ @for (order of orders; track order.id) {
739
+ <tr slTableRow [value]="order.id">
740
+ <th slTableRowHeader>{{ order.id }}</th>
741
+ @for (column of shown(); track column.key) {
742
+ <td slTableCell [numeric]="column.numeric ?? false">{{ order[column.key] }}</td>
743
+ }
744
+ </tr>
745
+ }
746
+ </tbody>
747
+ </div>
748
+ </div>
749
+ </div>
750
+ `,
751
+ })
752
+ export class MenuColumnVisibility {
753
+ protected readonly columns = COLUMNS;
754
+ protected readonly orders = ORDERS;
755
+ protected readonly visible = signal<Record<Column, boolean>>({
756
+ customer: true,
757
+ status: true,
758
+ warehouse: false,
759
+ total: true,
760
+ });
761
+ protected readonly shown = computed(() => COLUMNS.filter((column) => this.visible()[column.key]));
762
+
763
+ protected toggle(key: Column, checked: boolean): void {
764
+ this.visible.update((current) => ({ ...current, [key]: checked }));
765
+ }
766
+ }
767
+ ```
768
+
769
+ ### controlled.ts
770
+
771
+ Example
772
+
773
+ ```ts
774
+ import { Component, signal } from '@angular/core';
775
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
776
+ import { SlGlyph } from '@slotted/angular/icon';
777
+ import { SlInline } from '@slotted/angular/inline';
778
+ import { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';
779
+ import type { ChangeRequest } from '@slotted/core/state';
780
+ import { SlText } from '@slotted/angular/typography';
781
+
782
+ @Component({
783
+ selector: 'app-menu-controlled',
784
+ imports: [SlButton, SlButtonEnd, SlGlyph, SlInline, SlMenu, SlMenuItem, SlMenuTrigger, SlText],
785
+ template: `
786
+ <div slInline align="center" wrap="wrap" [gap]="3">
787
+ <button slButton variant="outline" [slMenuTriggerFor]="bulk">
788
+ Bulk actions
789
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
790
+ </button>
791
+ <sl-menu #bulk [(open)]="open" (openChangeRequest)="record($event)">
792
+ <button slMenuItem>Mark 12 orders as packed</button>
793
+ <button slMenuItem>Print 12 packing slips</button>
794
+ <button slMenuItem>Export selection</button>
795
+ </sl-menu>
796
+ <button slButton variant="ghost" (click)="open.set(true)">Open from code</button>
797
+ <span slText size="sm" tone="muted">{{ last() }}</span>
798
+ </div>
799
+ `,
800
+ })
801
+ export class MenuControlled {
802
+ protected readonly open = signal(false);
803
+ protected readonly last = signal('Closed');
804
+
805
+ protected record(request: ChangeRequest<boolean>): void {
806
+ this.last.set(`${request.value ? 'Opened' : 'Closed'} by ${request.reason}`);
807
+ }
808
+ }
809
+ ```
810
+
811
+ ### descriptions.ts
812
+
813
+ Example
814
+
815
+ ```ts
816
+ import { Component } from '@angular/core';
817
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
818
+ import { SlGlyph } from '@slotted/angular/icon';
819
+ import { SlMenu, SlMenuItem, SlMenuItemDescription, SlMenuTrigger } from '@slotted/angular/menu';
820
+
821
+ @Component({
822
+ selector: 'app-menu-descriptions',
823
+ imports: [
824
+ SlButton,
825
+ SlButtonEnd,
826
+ SlGlyph,
827
+ SlMenu,
828
+ SlMenuItem,
829
+ SlMenuItemDescription,
830
+ SlMenuTrigger,
831
+ ],
832
+ template: `
833
+ <button slButton variant="outline" [slMenuTriggerFor]="refund">
834
+ Refund
835
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
836
+ </button>
837
+ <sl-menu #refund>
838
+ <button slMenuItem>
839
+ Full refund
840
+ <span slMenuItemDescription>Returns $1,240.00 to the card used at checkout.</span>
841
+ </button>
842
+ <button slMenuItem>
843
+ Partial refund…
844
+ <span slMenuItemDescription>Choose the lines and the amount to return.</span>
845
+ </button>
846
+ <button slMenuItem>
847
+ Store credit
848
+ <span slMenuItemDescription>Adds $1,240.00 to the customer's account balance.</span>
849
+ </button>
850
+ </sl-menu>
851
+ `,
852
+ })
853
+ export class MenuDescriptions {}
854
+ ```
855
+
856
+ ### destructive.ts
857
+
858
+ Example
859
+
860
+ ```ts
861
+ import { Component } from '@angular/core';
862
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
863
+ import { SlGlyph } from '@slotted/angular/icon';
864
+ import {
865
+ SlMenu,
866
+ SlMenuItem,
867
+ SlMenuItemDescription,
868
+ SlMenuSeparator,
869
+ SlMenuTrigger,
870
+ } from '@slotted/angular/menu';
871
+
872
+ @Component({
873
+ selector: 'app-menu-destructive',
874
+ imports: [
875
+ SlButton,
876
+ SlButtonEnd,
877
+ SlGlyph,
878
+ SlMenu,
879
+ SlMenuItem,
880
+ SlMenuItemDescription,
881
+ SlMenuSeparator,
882
+ SlMenuTrigger,
883
+ ],
884
+ template: `
885
+ <button slButton variant="outline" [slMenuTriggerFor]="supplier">
886
+ Supplier
887
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
888
+ </button>
889
+ <sl-menu #supplier>
890
+ <button slMenuItem>Edit details</button>
891
+ <button slMenuItem tone="success">Approve for purchasing</button>
892
+ <button slMenuItem tone="warning">Put payments on hold</button>
893
+ <hr slMenuSeparator />
894
+ <button slMenuItem tone="danger">
895
+ Delete supplier…
896
+ <span slMenuItemDescription
897
+ >Removes Northwind Traders and its 18 open purchase orders.</span
898
+ >
899
+ </button>
900
+ </sl-menu>
901
+ `,
902
+ })
903
+ export class MenuDestructive {}
904
+ ```
905
+
906
+ ### disabled.ts
907
+
908
+ Example
909
+
910
+ ```ts
911
+ import { Component } from '@angular/core';
912
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
913
+ import { SlGlyph } from '@slotted/angular/icon';
914
+ import {
915
+ SlMenu,
916
+ SlMenuItem,
917
+ SlMenuItemDescription,
918
+ SlMenuSeparator,
919
+ SlMenuTrigger,
920
+ } from '@slotted/angular/menu';
921
+
922
+ @Component({
923
+ selector: 'app-menu-disabled',
924
+ imports: [
925
+ SlButton,
926
+ SlButtonEnd,
927
+ SlGlyph,
928
+ SlMenu,
929
+ SlMenuItem,
930
+ SlMenuItemDescription,
931
+ SlMenuSeparator,
932
+ SlMenuTrigger,
933
+ ],
934
+ template: `
935
+ <button slButton variant="outline" [slMenuTriggerFor]="shipped">
936
+ SO-10477 · Shipped
937
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
938
+ </button>
939
+ <sl-menu #shipped>
940
+ <button slMenuItem>Track shipment</button>
941
+ <button slMenuItem>Create return…</button>
942
+ <button slMenuItem [disabled]="true">
943
+ Edit order
944
+ <span slMenuItemDescription>A shipped order can no longer be edited.</span>
945
+ </button>
946
+ <hr slMenuSeparator />
947
+ <button slMenuItem tone="danger" [disabled]="true">
948
+ Cancel order
949
+ <span slMenuItemDescription>Create a return instead.</span>
950
+ </button>
951
+ </sl-menu>
952
+ `,
953
+ })
954
+ export class MenuDisabled {}
955
+ ```
956
+
957
+ ### keep-open.ts
958
+
959
+ Example
960
+
961
+ ```ts
962
+ import { Component, signal } from '@angular/core';
963
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
964
+ import { SlGlyph } from '@slotted/angular/icon';
965
+ import { SlInline } from '@slotted/angular/inline';
966
+ import { SlMenu, SlMenuItem, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';
967
+ import { SlText } from '@slotted/angular/typography';
968
+
969
+ @Component({
970
+ selector: 'app-menu-keep-open',
971
+ imports: [
972
+ SlButton,
973
+ SlButtonEnd,
974
+ SlGlyph,
975
+ SlInline,
976
+ SlMenu,
977
+ SlMenuItem,
978
+ SlMenuSeparator,
979
+ SlMenuTrigger,
980
+ SlText,
981
+ ],
982
+ template: `
983
+ <div slInline align="center" [gap]="3">
984
+ <button slButton variant="outline" [slMenuTriggerFor]="quantity">
985
+ Adjust quantity
986
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
987
+ </button>
988
+ <sl-menu #quantity>
989
+ <button slMenuItem [closeOnSelect]="false" (select)="add(1)">Add 1 carton</button>
990
+ <button slMenuItem [closeOnSelect]="false" (select)="add(10)">Add 10 cartons</button>
991
+ <button slMenuItem [closeOnSelect]="false" (select)="add(-1)">Remove 1 carton</button>
992
+ <hr slMenuSeparator />
993
+ <button slMenuItem (select)="cartons.set(24)">Reset to ordered quantity</button>
994
+ </sl-menu>
995
+ <span slText size="sm" tone="muted">{{ cartons() }} cartons</span>
996
+ </div>
997
+ `,
998
+ })
999
+ export class MenuKeepOpen {
1000
+ protected readonly cartons = signal(24);
1001
+
1002
+ protected add(count: number): void {
1003
+ this.cartons.update((current) => Math.max(0, current + count));
1004
+ }
1005
+ }
1006
+ ```
1007
+
1008
+ ### links.ts
1009
+
1010
+ Example
1011
+
1012
+ ```ts
1013
+ import { Component } from '@angular/core';
1014
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
1015
+ import { SlGlyph, SlIcon } from '@slotted/angular/icon';
1016
+ import {
1017
+ SlMenu,
1018
+ SlMenuItem,
1019
+ SlMenuItemIcon,
1020
+ SlMenuSeparator,
1021
+ SlMenuTrigger,
1022
+ } from '@slotted/angular/menu';
1023
+
1024
+ @Component({
1025
+ selector: 'app-menu-links',
1026
+ imports: [
1027
+ SlButton,
1028
+ SlButtonEnd,
1029
+ SlGlyph,
1030
+ SlIcon,
1031
+ SlMenu,
1032
+ SlMenuItem,
1033
+ SlMenuItemIcon,
1034
+ SlMenuSeparator,
1035
+ SlMenuTrigger,
1036
+ ],
1037
+ template: `
1038
+ <button slButton variant="outline" [slMenuTriggerFor]="open">
1039
+ Open
1040
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1041
+ </button>
1042
+ <sl-menu #open>
1043
+ <a slMenuItem href="#order-SO-10482">Order page</a>
1044
+ <a slMenuItem href="#customer-northwind">Customer profile</a>
1045
+ <hr slMenuSeparator />
1046
+ <a
1047
+ slMenuItem
1048
+ href="https://example.com/carriers/track/1Z999AA10123456784"
1049
+ rel="noreferrer"
1050
+ target="_blank"
1051
+ >
1052
+ <span slMenuItemIcon
1053
+ ><span slIcon><svg slGlyph name="external"></svg></span
1054
+ ></span>
1055
+ Carrier tracking
1056
+ </a>
1057
+ </sl-menu>
1058
+ `,
1059
+ })
1060
+ export class MenuLinks {}
1061
+ ```
1062
+
1063
+ ### loading.ts
1064
+
1065
+ Example
1066
+
1067
+ ```ts
1068
+ import { Component, signal } from '@angular/core';
1069
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
1070
+ import { SlGlyph } from '@slotted/angular/icon';
1071
+ import { SlMenu, SlMenuEmpty, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';
1072
+
1073
+ const LABELS = ['Fragile', 'Gift wrap', 'Priority', 'Wholesale'];
1074
+
1075
+ @Component({
1076
+ selector: 'app-menu-loading',
1077
+ imports: [SlButton, SlButtonEnd, SlGlyph, SlMenu, SlMenuEmpty, SlMenuItem, SlMenuTrigger],
1078
+ template: `
1079
+ <button slButton variant="outline" [slMenuTriggerFor]="labelMenu">
1080
+ Labels
1081
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1082
+ </button>
1083
+ <sl-menu #labelMenu [loading]="labels() === null" (openChange)="load($event)">
1084
+ @if (labels(); as loaded) {
1085
+ @for (label of loaded; track label) {
1086
+ <button slMenuCheckboxItem>{{ label }}</button>
1087
+ }
1088
+ } @else {
1089
+ <div slMenuEmpty>Loading labels…</div>
1090
+ }
1091
+ </sl-menu>
1092
+ `,
1093
+ })
1094
+ export class MenuLoading {
1095
+ protected readonly labels = signal<string[] | null>(null);
1096
+ private requested = false;
1097
+
1098
+ protected load(open: boolean): void {
1099
+ if (!open || this.requested) return;
1100
+ this.requested = true;
1101
+ setTimeout(() => this.labels.set(LABELS), 1200);
1102
+ }
1103
+ }
1104
+ ```
1105
+
1106
+ ### long-list.ts
1107
+
1108
+ Example
1109
+
1110
+ ```ts
1111
+ import { Component } from '@angular/core';
1112
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
1113
+ import { SlGlyph } from '@slotted/angular/icon';
1114
+ import { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';
1115
+
1116
+ const LOCATIONS = [
1117
+ 'Amsterdam',
1118
+ 'Antwerp',
1119
+ 'Barcelona',
1120
+ 'Berlin',
1121
+ 'Bologna',
1122
+ 'Bordeaux',
1123
+ 'Bratislava',
1124
+ 'Brno',
1125
+ 'Brussels',
1126
+ 'Budapest',
1127
+ 'Copenhagen',
1128
+ 'Dublin',
1129
+ 'Gdańsk',
1130
+ 'Geneva',
1131
+ 'Hamburg',
1132
+ 'Helsinki',
1133
+ 'Kraków',
1134
+ 'Leipzig',
1135
+ 'Lisbon',
1136
+ 'Ljubljana',
1137
+ 'Lyon',
1138
+ 'Madrid',
1139
+ 'Milan',
1140
+ 'Munich',
1141
+ 'Oslo',
1142
+ 'Porto',
1143
+ 'Prague',
1144
+ 'Rotterdam',
1145
+ 'Stockholm',
1146
+ 'Tallinn',
1147
+ 'Valencia',
1148
+ 'Vienna',
1149
+ 'Vilnius',
1150
+ 'Warsaw',
1151
+ 'Zagreb',
1152
+ 'Zürich',
1153
+ ];
1154
+
1155
+ @Component({
1156
+ selector: 'app-menu-long-list',
1157
+ imports: [SlButton, SlButtonEnd, SlGlyph, SlMenu, SlMenuItem, SlMenuTrigger],
1158
+ template: `
1159
+ <button slButton variant="outline" [slMenuTriggerFor]="warehouses">
1160
+ Move to warehouse
1161
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1162
+ </button>
1163
+ <sl-menu #warehouses>
1164
+ @for (location of locations; track location) {
1165
+ <button slMenuItem>{{ location }}</button>
1166
+ }
1167
+ </sl-menu>
1168
+ `,
1169
+ })
1170
+ export class MenuLongList {
1171
+ protected readonly locations = LOCATIONS;
1172
+ }
1173
+ ```
1174
+
1175
+ ### row-actions.ts
1176
+
1177
+ Example
1178
+
1179
+ ```ts
1180
+ import { Component, signal } from '@angular/core';
1181
+ import { SlButton, SlIconButton } from '@slotted/angular/button';
1182
+ import {
1183
+ SlAlertDialog,
1184
+ SlAlertDialogAction,
1185
+ SlAlertDialogCancel,
1186
+ SlAlertDialogIcon,
1187
+ SlDialogDescription,
1188
+ SlDialogFooter,
1189
+ SlDialogHeader,
1190
+ SlDialogTitle,
1191
+ } from '@slotted/angular/dialog';
1192
+ import { SlGlyph } from '@slotted/angular/icon';
1193
+ import { SlMenu, SlMenuItem, SlMenuSeparator, SlMenuTrigger } from '@slotted/angular/menu';
1194
+ import {
1195
+ SlTable,
1196
+ SlTableBody,
1197
+ SlTableCell,
1198
+ SlTableColumnHeader,
1199
+ SlTableContent,
1200
+ SlTableHead,
1201
+ SlTableRow,
1202
+ SlTableRowHeader,
1203
+ } from '@slotted/angular/table';
1204
+
1205
+ interface Order {
1206
+ id: string;
1207
+ customer: string;
1208
+ total: string;
1209
+ }
1210
+
1211
+ const ORDERS: Order[] = [
1212
+ { id: 'SO-10482', customer: 'Northwind Traders', total: '$1,240.00' },
1213
+ { id: 'SO-10483', customer: 'Contoso Foods', total: '$860.50' },
1214
+ { id: 'SO-10484', customer: 'Fabrikam Supply', total: '$2,315.75' },
1215
+ ];
1216
+
1217
+ @Component({
1218
+ selector: 'app-menu-row-actions',
1219
+ imports: [
1220
+ SlAlertDialog,
1221
+ SlAlertDialogAction,
1222
+ SlAlertDialogCancel,
1223
+ SlAlertDialogIcon,
1224
+ SlButton,
1225
+ SlDialogDescription,
1226
+ SlDialogFooter,
1227
+ SlDialogHeader,
1228
+ SlDialogTitle,
1229
+ SlGlyph,
1230
+ SlIconButton,
1231
+ SlMenu,
1232
+ SlMenuItem,
1233
+ SlMenuSeparator,
1234
+ SlMenuTrigger,
1235
+ SlTable,
1236
+ SlTableBody,
1237
+ SlTableCell,
1238
+ SlTableColumnHeader,
1239
+ SlTableContent,
1240
+ SlTableHead,
1241
+ SlTableRow,
1242
+ SlTableRowHeader,
1243
+ ],
1244
+ template: `
1245
+ <div slTable [columns]="4">
1246
+ <div slTableContent>
1247
+ <thead slTableHead>
1248
+ <tr slTableRow>
1249
+ <th slTableColumnHeader>Order</th>
1250
+ <th slTableColumnHeader>Customer</th>
1251
+ <th slTableColumnHeader numeric>Total</th>
1252
+ <th slTableColumnHeader align="end">Actions</th>
1253
+ </tr>
1254
+ </thead>
1255
+ <tbody slTableBody>
1256
+ @for (order of orders(); track order.id) {
1257
+ <tr slTableRow [value]="order.id">
1258
+ <th slTableRowHeader>{{ order.id }}</th>
1259
+ <td slTableCell>{{ order.customer }}</td>
1260
+ <td slTableCell numeric>{{ order.total }}</td>
1261
+ <td slTableCell align="end">
1262
+ <button
1263
+ slIconButton
1264
+ size="sm"
1265
+ [attr.aria-label]="'Actions for ' + order.id"
1266
+ [slMenuTriggerFor]="actions"
1267
+ >
1268
+ <svg slGlyph name="ellipsis"></svg>
1269
+ </button>
1270
+ <sl-menu #actions align="end">
1271
+ <button slMenuItem>View order</button>
1272
+ <button slMenuItem shortcut="Mod+D">Duplicate</button>
1273
+ <hr slMenuSeparator />
1274
+ <button slMenuItem tone="danger" (select)="confirm(order)">Delete order…</button>
1275
+ </sl-menu>
1276
+ </td>
1277
+ </tr>
1278
+ }
1279
+ </tbody>
1280
+ </div>
1281
+ </div>
1282
+ <sl-alert-dialog [(open)]="confirming">
1283
+ <header slDialogHeader>
1284
+ <span slAlertDialogIcon></span>
1285
+ <h2 slDialogTitle>Delete {{ pending()?.id }}?</h2>
1286
+ <p slDialogDescription>
1287
+ The order for {{ pending()?.customer }} and its invoice are removed. This cannot be
1288
+ undone.
1289
+ </p>
1290
+ </header>
1291
+ <footer slDialogFooter>
1292
+ <button slButton slAlertDialogCancel tone="secondary" variant="outline">Keep order</button>
1293
+ <button slButton slAlertDialogAction tone="danger" (click)="remove()">Delete order</button>
1294
+ </footer>
1295
+ </sl-alert-dialog>
1296
+ `,
1297
+ })
1298
+ export class MenuRowActions {
1299
+ protected readonly orders = signal(ORDERS);
1300
+ protected readonly pending = signal<Order | null>(null);
1301
+ protected readonly confirming = signal(false);
1302
+
1303
+ protected confirm(order: Order): void {
1304
+ this.pending.set(order);
1305
+ this.confirming.set(true);
1306
+ }
1307
+
1308
+ protected remove(): void {
1309
+ const id = this.pending()?.id;
1310
+ this.orders.update((rows) => rows.filter((row) => row.id !== id));
1311
+ }
1312
+ }
1313
+ ```
1314
+
1315
+ ### sizes.ts
1316
+
1317
+ Example
1318
+
1319
+ ```ts
1320
+ import { Component } from '@angular/core';
1321
+ import { SlButton } from '@slotted/angular/button';
1322
+ import { SlInline } from '@slotted/angular/inline';
1323
+ import { SlMenu, SlMenuItem, SlMenuTrigger, type MenuSize } from '@slotted/angular/menu';
1324
+
1325
+ const SIZES: MenuSize[] = ['sm', 'md', 'lg'];
1326
+
1327
+ @Component({
1328
+ selector: 'app-menu-sizes',
1329
+ imports: [SlButton, SlInline, SlMenu, SlMenuItem, SlMenuTrigger],
1330
+ template: `
1331
+ <div slInline align="center" [gap]="3">
1332
+ @for (size of sizes; track size) {
1333
+ <button slButton variant="outline" [size]="size" [slMenuTriggerFor]="menu">
1334
+ Actions, {{ size }}
1335
+ </button>
1336
+ <sl-menu #menu [size]="size">
1337
+ <button slMenuItem shortcut="Mod+E">Edit order</button>
1338
+ <button slMenuItem shortcut="Mod+D">Duplicate</button>
1339
+ <button slMenuItem>Print packing slip</button>
1340
+ </sl-menu>
1341
+ }
1342
+ </div>
1343
+ `,
1344
+ })
1345
+ export class MenuSizes {
1346
+ protected readonly sizes = SIZES;
1347
+ }
1348
+ ```
1349
+
1350
+ ### sort-menu.ts
1351
+
1352
+ Example
1353
+
1354
+ ```ts
1355
+ import { Component, computed, signal } from '@angular/core';
1356
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
1357
+ import { SlGlyph } from '@slotted/angular/icon';
1358
+ import { SlMenu, SlMenuItem, SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';
1359
+ import { SlStack } from '@slotted/angular/stack';
1360
+ import {
1361
+ SlTable,
1362
+ SlTableBody,
1363
+ SlTableCell,
1364
+ SlTableColumnHeader,
1365
+ SlTableContent,
1366
+ SlTableHead,
1367
+ SlTableRow,
1368
+ SlTableRowHeader,
1369
+ } from '@slotted/angular/table';
1370
+
1371
+ interface Order {
1372
+ id: string;
1373
+ customer: string;
1374
+ placed: string;
1375
+ total: number;
1376
+ }
1377
+
1378
+ const ORDERS: Order[] = [
1379
+ { id: 'SO-10482', customer: 'Northwind Traders', placed: '2026-10-02', total: 1240 },
1380
+ { id: 'SO-10483', customer: 'Contoso Foods', placed: '2026-10-03', total: 860.5 },
1381
+ { id: 'SO-10484', customer: 'Fabrikam Supply', placed: '2026-10-01', total: 2315.75 },
1382
+ { id: 'SO-10485', customer: 'Adventure Works', placed: '2026-10-04', total: 412 },
1383
+ ];
1384
+
1385
+ const SORTS: { value: string; label: string; compare: (a: Order, b: Order) => number }[] = [
1386
+ { value: 'newest', label: 'Newest first', compare: (a, b) => b.placed.localeCompare(a.placed) },
1387
+ { value: 'oldest', label: 'Oldest first', compare: (a, b) => a.placed.localeCompare(b.placed) },
1388
+ { value: 'total-desc', label: 'Highest total', compare: (a, b) => b.total - a.total },
1389
+ { value: 'total-asc', label: 'Lowest total', compare: (a, b) => a.total - b.total },
1390
+ {
1391
+ value: 'customer',
1392
+ label: 'Customer, A to Z',
1393
+ compare: (a, b) => a.customer.localeCompare(b.customer),
1394
+ },
1395
+ ];
1396
+
1397
+ const money = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
1398
+
1399
+ @Component({
1400
+ selector: 'app-menu-sort-menu',
1401
+ imports: [
1402
+ SlButton,
1403
+ SlButtonEnd,
1404
+ SlGlyph,
1405
+ SlMenu,
1406
+ SlMenuItem,
1407
+ SlMenuRadioGroup,
1408
+ SlMenuTrigger,
1409
+ SlStack,
1410
+ SlTable,
1411
+ SlTableBody,
1412
+ SlTableCell,
1413
+ SlTableColumnHeader,
1414
+ SlTableContent,
1415
+ SlTableHead,
1416
+ SlTableRow,
1417
+ SlTableRowHeader,
1418
+ ],
1419
+ template: `
1420
+ <div slStack align="end" [gap]="3">
1421
+ <button slButton size="sm" variant="outline" [slMenuTriggerFor]="sortMenu">
1422
+ Sort: {{ current().label }}
1423
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1424
+ </button>
1425
+ <sl-menu #sortMenu align="end">
1426
+ <sl-menu-radio-group aria-label="Sort orders" [(value)]="sort">
1427
+ @for (option of sorts; track option.value) {
1428
+ <button slMenuRadioItem [value]="option.value">{{ option.label }}</button>
1429
+ }
1430
+ </sl-menu-radio-group>
1431
+ </sl-menu>
1432
+ <div slTable [columns]="4">
1433
+ <div slTableContent>
1434
+ <thead slTableHead>
1435
+ <tr slTableRow>
1436
+ <th slTableColumnHeader>Order</th>
1437
+ <th slTableColumnHeader>Customer</th>
1438
+ <th slTableColumnHeader>Placed</th>
1439
+ <th slTableColumnHeader numeric>Total</th>
1440
+ </tr>
1441
+ </thead>
1442
+ <tbody slTableBody>
1443
+ @for (order of rows(); track order.id) {
1444
+ <tr slTableRow [value]="order.id">
1445
+ <th slTableRowHeader>{{ order.id }}</th>
1446
+ <td slTableCell>{{ order.customer }}</td>
1447
+ <td slTableCell>{{ order.placed }}</td>
1448
+ <td slTableCell numeric>{{ format(order.total) }}</td>
1449
+ </tr>
1450
+ }
1451
+ </tbody>
1452
+ </div>
1453
+ </div>
1454
+ </div>
1455
+ `,
1456
+ })
1457
+ export class MenuSortMenu {
1458
+ protected readonly sorts = SORTS;
1459
+ protected readonly sort = signal<string | undefined>('newest');
1460
+ protected readonly current = computed(
1461
+ () => SORTS.find((option) => option.value === this.sort()) ?? SORTS[0]!,
1462
+ );
1463
+ protected readonly rows = computed(() => [...ORDERS].sort(this.current().compare));
1464
+
1465
+ protected format(total: number): string {
1466
+ return money.format(total);
1467
+ }
1468
+ }
1469
+ ```
1470
+
1471
+ ### submenus.ts
1472
+
1473
+ Example
1474
+
1475
+ ```ts
1476
+ import { Component, signal } from '@angular/core';
1477
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
1478
+ import { SlGlyph } from '@slotted/angular/icon';
1479
+ import {
1480
+ SlMenu,
1481
+ SlMenuItem,
1482
+ SlMenuItemMeta,
1483
+ SlMenuRadioGroup,
1484
+ SlMenuSeparator,
1485
+ SlMenuTrigger,
1486
+ } from '@slotted/angular/menu';
1487
+
1488
+ const PEOPLE = ['Maria Chen', 'Tomás Ortega', 'Aiko Tanaka', 'Unassigned'];
1489
+ const WAREHOUSES = ['Rotterdam', 'Leipzig', 'Lyon', 'Gdańsk'];
1490
+
1491
+ @Component({
1492
+ selector: 'app-menu-submenus',
1493
+ imports: [
1494
+ SlButton,
1495
+ SlButtonEnd,
1496
+ SlGlyph,
1497
+ SlMenu,
1498
+ SlMenuItem,
1499
+ SlMenuItemMeta,
1500
+ SlMenuRadioGroup,
1501
+ SlMenuSeparator,
1502
+ SlMenuTrigger,
1503
+ ],
1504
+ template: `
1505
+ <button slButton variant="outline" [slMenuTriggerFor]="order">
1506
+ SO-10482
1507
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1508
+ </button>
1509
+ <sl-menu #order>
1510
+ <button slMenuItem>View order</button>
1511
+ <button slMenuItem [slMenuTriggerFor]="assign">
1512
+ Assign to <span slMenuItemMeta>{{ assignee() }}</span>
1513
+ </button>
1514
+ <sl-menu #assign>
1515
+ <sl-menu-radio-group [(value)]="assignee">
1516
+ @for (person of people; track person) {
1517
+ <button slMenuRadioItem [value]="person">{{ person }}</button>
1518
+ }
1519
+ </sl-menu-radio-group>
1520
+ </sl-menu>
1521
+ <button slMenuItem [slMenuTriggerFor]="move">Move to warehouse</button>
1522
+ <sl-menu #move>
1523
+ @for (warehouse of warehouses; track warehouse) {
1524
+ <button slMenuItem>{{ warehouse }}</button>
1525
+ }
1526
+ </sl-menu>
1527
+ <hr slMenuSeparator />
1528
+ <button slMenuItem tone="danger">Cancel order…</button>
1529
+ </sl-menu>
1530
+ `,
1531
+ })
1532
+ export class MenuSubmenus {
1533
+ protected readonly people = PEOPLE;
1534
+ protected readonly warehouses = WAREHOUSES;
1535
+ protected readonly assignee = signal<string | undefined>('Maria Chen');
1536
+ }
1537
+ ```
1538
+
1539
+ ### triggers.ts
1540
+
1541
+ Example
1542
+
1543
+ ```ts
1544
+ import { Component } from '@angular/core';
1545
+ import { SlButton, SlButtonEnd, SlIconButton } from '@slotted/angular/button';
1546
+ import { SlGlyph } from '@slotted/angular/icon';
1547
+ import { SlInline } from '@slotted/angular/inline';
1548
+ import { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';
1549
+ import {
1550
+ SlSplitButton,
1551
+ SlSplitButtonMenuTrigger,
1552
+ SlSplitButtonPrimary,
1553
+ } from '@slotted/angular/split-button';
1554
+
1555
+ @Component({
1556
+ selector: 'app-menu-triggers',
1557
+ imports: [
1558
+ SlButton,
1559
+ SlButtonEnd,
1560
+ SlGlyph,
1561
+ SlIconButton,
1562
+ SlInline,
1563
+ SlMenu,
1564
+ SlMenuItem,
1565
+ SlMenuTrigger,
1566
+ SlSplitButton,
1567
+ SlSplitButtonMenuTrigger,
1568
+ SlSplitButtonPrimary,
1569
+ ],
1570
+ template: `
1571
+ <div slInline align="center" [gap]="3">
1572
+ <button slButton variant="outline" [slMenuTriggerFor]="exportMenu">
1573
+ Export
1574
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1575
+ </button>
1576
+ <sl-menu #exportMenu>
1577
+ <button slMenuItem>CSV for spreadsheets</button>
1578
+ <button slMenuItem>PDF summary</button>
1579
+ <button slMenuItem>Accounting journal</button>
1580
+ </sl-menu>
1581
+
1582
+ <button slIconButton aria-label="More actions for SO-10482" [slMenuTriggerFor]="more">
1583
+ <svg slGlyph name="ellipsis"></svg>
1584
+ </button>
1585
+ <sl-menu #more align="end">
1586
+ <button slMenuItem>Copy order number</button>
1587
+ <button slMenuItem>Add internal note</button>
1588
+ <button slMenuItem>Open customer</button>
1589
+ </sl-menu>
1590
+
1591
+ <div slSplitButton>
1592
+ <button slSplitButtonPrimary>Ship order</button>
1593
+ <button
1594
+ slSplitButtonMenuTrigger
1595
+ aria-label="More ways to ship"
1596
+ [slMenuTriggerFor]="ship"
1597
+ ></button>
1598
+ <sl-menu #ship>
1599
+ <button slMenuItem>Ship and print label</button>
1600
+ <button slMenuItem>Ship part of the order…</button>
1601
+ <button slMenuItem>Schedule for tomorrow</button>
1602
+ </sl-menu>
1603
+ </div>
1604
+ </div>
1605
+ `,
1606
+ })
1607
+ export class MenuTriggers {}
1608
+ ```
1609
+
1610
+ ### typeahead.ts
1611
+
1612
+ Example
1613
+
1614
+ ```ts
1615
+ import { Component } from '@angular/core';
1616
+ import { SlButton, SlButtonEnd } from '@slotted/angular/button';
1617
+ import { SlGlyph } from '@slotted/angular/icon';
1618
+ import { SlMenu, SlMenuItem, SlMenuItemMeta, SlMenuTrigger } from '@slotted/angular/menu';
1619
+
1620
+ const CARRIERS = [
1621
+ { name: 'DHL Express', transit: '1 day' },
1622
+ { name: 'DPD', transit: '2 days' },
1623
+ { name: 'FedEx', transit: '1 day' },
1624
+ { name: 'GLS', transit: '3 days' },
1625
+ { name: 'PostNL', transit: '2 days' },
1626
+ { name: 'Royal Mail', transit: '3 days' },
1627
+ { name: 'UPS', transit: '2 days' },
1628
+ { name: 'USPS', transit: '5 days' },
1629
+ ];
1630
+
1631
+ @Component({
1632
+ selector: 'app-menu-typeahead',
1633
+ imports: [SlButton, SlButtonEnd, SlGlyph, SlMenu, SlMenuItem, SlMenuItemMeta, SlMenuTrigger],
1634
+ template: `
1635
+ <button slButton variant="outline" [slMenuTriggerFor]="carrierMenu">
1636
+ Ship with
1637
+ <span slButtonEnd><svg slGlyph name="chevron-down"></svg></span>
1638
+ </button>
1639
+ <sl-menu #carrierMenu>
1640
+ @for (carrier of carriers; track carrier.name) {
1641
+ <button slMenuItem>
1642
+ {{ carrier.name }} <span slMenuItemMeta>{{ carrier.transit }}</span>
1643
+ </button>
1644
+ }
1645
+ </sl-menu>
1646
+ `,
1647
+ })
1648
+ export class MenuTypeahead {
1649
+ protected readonly carriers = CARRIERS;
1650
+ }
1651
+ ```