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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -2
  3. package/docs/AGENTS.snippet.md +10 -0
  4. package/docs/accordion.json +345 -0
  5. package/docs/accordion.md +207 -0
  6. package/docs/action-bar.json +421 -0
  7. package/docs/action-bar.md +364 -0
  8. package/docs/action-sheet.json +210 -0
  9. package/docs/action-sheet.md +19 -0
  10. package/docs/alert.json +407 -0
  11. package/docs/alert.md +239 -0
  12. package/docs/app-shell.examples.md +349 -0
  13. package/docs/app-shell.json +835 -0
  14. package/docs/app-shell.md +214 -0
  15. package/docs/aspect-ratio.json +159 -0
  16. package/docs/aspect-ratio.md +134 -0
  17. package/docs/attachment.json +486 -0
  18. package/docs/attachment.md +253 -0
  19. package/docs/avatar-group.json +208 -0
  20. package/docs/avatar-group.md +130 -0
  21. package/docs/avatar.json +342 -0
  22. package/docs/avatar.md +142 -0
  23. package/docs/badge.json +334 -0
  24. package/docs/badge.md +138 -0
  25. package/docs/breadcrumb.json +368 -0
  26. package/docs/breadcrumb.md +237 -0
  27. package/docs/button-group.json +158 -0
  28. package/docs/button-group.md +72 -0
  29. package/docs/button.examples.md +621 -0
  30. package/docs/button.json +977 -0
  31. package/docs/button.md +200 -0
  32. package/docs/calendar.json +592 -0
  33. package/docs/calendar.md +242 -0
  34. package/docs/card.json +283 -0
  35. package/docs/card.md +130 -0
  36. package/docs/carousel.json +560 -0
  37. package/docs/carousel.md +357 -0
  38. package/docs/cascader.json +933 -0
  39. package/docs/cascader.md +379 -0
  40. package/docs/chart.examples.md +582 -0
  41. package/docs/chart.json +1359 -0
  42. package/docs/chart.md +187 -0
  43. package/docs/checkbox-group.examples.md +612 -0
  44. package/docs/checkbox-group.json +395 -0
  45. package/docs/checkbox-group.md +106 -0
  46. package/docs/checkbox.examples.md +546 -0
  47. package/docs/checkbox.json +506 -0
  48. package/docs/checkbox.md +104 -0
  49. package/docs/code-block.json +616 -0
  50. package/docs/code-block.md +303 -0
  51. package/docs/collapsible.json +456 -0
  52. package/docs/collapsible.md +261 -0
  53. package/docs/color-picker.json +523 -0
  54. package/docs/color-picker.md +201 -0
  55. package/docs/column-manager.json +486 -0
  56. package/docs/column-manager.md +277 -0
  57. package/docs/combobox.examples.md +1732 -0
  58. package/docs/combobox.json +1250 -0
  59. package/docs/combobox.md +209 -0
  60. package/docs/command-palette.json +800 -0
  61. package/docs/command-palette.md +419 -0
  62. package/docs/container.json +156 -0
  63. package/docs/container.md +92 -0
  64. package/docs/context-menu.json +231 -0
  65. package/docs/context-menu.md +176 -0
  66. package/docs/currency-field.examples.md +321 -0
  67. package/docs/currency-field.json +649 -0
  68. package/docs/currency-field.md +128 -0
  69. package/docs/dashboard-grid.json +680 -0
  70. package/docs/dashboard-grid.md +265 -0
  71. package/docs/data-grid.examples.md +3064 -0
  72. package/docs/data-grid.json +1577 -0
  73. package/docs/data-grid.md +237 -0
  74. package/docs/data-grid.props.md +81 -0
  75. package/docs/data-list.json +685 -0
  76. package/docs/data-list.md +327 -0
  77. package/docs/date-field.json +490 -0
  78. package/docs/date-field.md +235 -0
  79. package/docs/date-picker.examples.md +1226 -0
  80. package/docs/date-picker.json +696 -0
  81. package/docs/date-picker.md +121 -0
  82. package/docs/date-range-picker.examples.md +1300 -0
  83. package/docs/date-range-picker.json +903 -0
  84. package/docs/date-range-picker.md +142 -0
  85. package/docs/datetime-field.json +665 -0
  86. package/docs/datetime-field.md +337 -0
  87. package/docs/datetime-picker.examples.md +1269 -0
  88. package/docs/datetime-picker.json +928 -0
  89. package/docs/datetime-picker.md +150 -0
  90. package/docs/datetime-range-picker.examples.md +225 -0
  91. package/docs/datetime-range-picker.json +1015 -0
  92. package/docs/datetime-range-picker.md +162 -0
  93. package/docs/description-list.json +471 -0
  94. package/docs/description-list.md +268 -0
  95. package/docs/detail-panel.json +530 -0
  96. package/docs/detail-panel.md +361 -0
  97. package/docs/dialog.examples.md +2467 -0
  98. package/docs/dialog.json +1141 -0
  99. package/docs/dialog.md +217 -0
  100. package/docs/dialog.props.md +63 -0
  101. package/docs/divider.json +148 -0
  102. package/docs/divider.md +83 -0
  103. package/docs/drawer.examples.md +1929 -0
  104. package/docs/drawer.json +753 -0
  105. package/docs/drawer.md +199 -0
  106. package/docs/entity-picker.json +946 -0
  107. package/docs/entity-picker.md +365 -0
  108. package/docs/event-calendar.examples.md +308 -0
  109. package/docs/event-calendar.json +1202 -0
  110. package/docs/event-calendar.md +201 -0
  111. package/docs/field-group.json +333 -0
  112. package/docs/field-group.md +181 -0
  113. package/docs/field.examples.md +676 -0
  114. package/docs/field.json +528 -0
  115. package/docs/field.md +127 -0
  116. package/docs/filter-bar.json +817 -0
  117. package/docs/filter-bar.md +380 -0
  118. package/docs/form.json +378 -0
  119. package/docs/form.md +235 -0
  120. package/docs/fullscreen.json +395 -0
  121. package/docs/fullscreen.md +225 -0
  122. package/docs/grid.json +176 -0
  123. package/docs/grid.md +74 -0
  124. package/docs/highlight.json +279 -0
  125. package/docs/highlight.md +210 -0
  126. package/docs/hover-card.json +254 -0
  127. package/docs/hover-card.md +213 -0
  128. package/docs/icon.json +173 -0
  129. package/docs/icon.md +101 -0
  130. package/docs/image.json +476 -0
  131. package/docs/image.md +254 -0
  132. package/docs/import-export-center.json +836 -0
  133. package/docs/import-export-center.md +345 -0
  134. package/docs/index.md +141 -0
  135. package/docs/inline-message.json +312 -0
  136. package/docs/inline-message.md +191 -0
  137. package/docs/inline.json +149 -0
  138. package/docs/inline.md +72 -0
  139. package/docs/kbd.json +350 -0
  140. package/docs/kbd.md +210 -0
  141. package/docs/link.json +264 -0
  142. package/docs/link.md +167 -0
  143. package/docs/list-item.json +463 -0
  144. package/docs/list-item.md +236 -0
  145. package/docs/list.json +321 -0
  146. package/docs/list.md +185 -0
  147. package/docs/listbox.json +807 -0
  148. package/docs/listbox.md +413 -0
  149. package/docs/loading-overlay.json +440 -0
  150. package/docs/loading-overlay.md +248 -0
  151. package/docs/markdown.json +461 -0
  152. package/docs/markdown.md +266 -0
  153. package/docs/menu.examples.md +1651 -0
  154. package/docs/menu.json +922 -0
  155. package/docs/menu.md +155 -0
  156. package/docs/menubar.json +292 -0
  157. package/docs/menubar.md +173 -0
  158. package/docs/message-scroller.json +401 -0
  159. package/docs/message-scroller.md +212 -0
  160. package/docs/message.json +862 -0
  161. package/docs/message.md +473 -0
  162. package/docs/multi-select.examples.md +1922 -0
  163. package/docs/multi-select.json +1314 -0
  164. package/docs/multi-select.md +213 -0
  165. package/docs/navigation-menu.json +529 -0
  166. package/docs/navigation-menu.md +329 -0
  167. package/docs/notification-center.json +664 -0
  168. package/docs/notification-center.md +372 -0
  169. package/docs/number-field.examples.md +1078 -0
  170. package/docs/number-field.json +668 -0
  171. package/docs/number-field.md +137 -0
  172. package/docs/otp-input.json +479 -0
  173. package/docs/otp-input.md +291 -0
  174. package/docs/page-header.json +574 -0
  175. package/docs/page-header.md +338 -0
  176. package/docs/page.json +332 -0
  177. package/docs/page.md +184 -0
  178. package/docs/pagination.json +434 -0
  179. package/docs/pagination.md +238 -0
  180. package/docs/popover.examples.md +1235 -0
  181. package/docs/popover.json +656 -0
  182. package/docs/popover.md +199 -0
  183. package/docs/progress-indicator.json +501 -0
  184. package/docs/progress-indicator.md +329 -0
  185. package/docs/prompt-composer.json +498 -0
  186. package/docs/prompt-composer.md +278 -0
  187. package/docs/prose.json +357 -0
  188. package/docs/prose.md +226 -0
  189. package/docs/radio-group.examples.md +626 -0
  190. package/docs/radio-group.json +541 -0
  191. package/docs/radio-group.md +112 -0
  192. package/docs/rating.json +1053 -0
  193. package/docs/rating.md +435 -0
  194. package/docs/result-state.json +376 -0
  195. package/docs/result-state.md +286 -0
  196. package/docs/saved-views.json +384 -0
  197. package/docs/saved-views.md +242 -0
  198. package/docs/scroll-area.json +120 -0
  199. package/docs/scroll-area.md +8 -0
  200. package/docs/section.json +344 -0
  201. package/docs/section.md +208 -0
  202. package/docs/segmented-control.json +429 -0
  203. package/docs/segmented-control.md +240 -0
  204. package/docs/select.examples.md +1214 -0
  205. package/docs/select.json +1147 -0
  206. package/docs/select.md +199 -0
  207. package/docs/side-navigation.json +632 -0
  208. package/docs/side-navigation.md +430 -0
  209. package/docs/skeleton.json +358 -0
  210. package/docs/skeleton.md +223 -0
  211. package/docs/slider.json +522 -0
  212. package/docs/slider.md +261 -0
  213. package/docs/sparkline.json +426 -0
  214. package/docs/sparkline.md +206 -0
  215. package/docs/split-button.json +361 -0
  216. package/docs/split-button.md +275 -0
  217. package/docs/splitter.json +142 -0
  218. package/docs/splitter.md +14 -0
  219. package/docs/stack.json +135 -0
  220. package/docs/stack.md +74 -0
  221. package/docs/stat-card.json +529 -0
  222. package/docs/stat-card.md +270 -0
  223. package/docs/status-indicator.json +314 -0
  224. package/docs/status-indicator.md +197 -0
  225. package/docs/stepper.json +451 -0
  226. package/docs/stepper.md +250 -0
  227. package/docs/switch.json +451 -0
  228. package/docs/switch.md +508 -0
  229. package/docs/table-of-contents.json +553 -0
  230. package/docs/table-of-contents.md +289 -0
  231. package/docs/table.examples.md +1981 -0
  232. package/docs/table.json +1059 -0
  233. package/docs/table.md +290 -0
  234. package/docs/tabs.examples.md +1370 -0
  235. package/docs/tabs.json +661 -0
  236. package/docs/tabs.md +211 -0
  237. package/docs/tag.json +813 -0
  238. package/docs/tag.md +241 -0
  239. package/docs/tags-input.json +771 -0
  240. package/docs/tags-input.md +361 -0
  241. package/docs/text-field.examples.md +821 -0
  242. package/docs/text-field.json +604 -0
  243. package/docs/text-field.md +125 -0
  244. package/docs/textarea.examples.md +612 -0
  245. package/docs/textarea.json +440 -0
  246. package/docs/textarea.md +98 -0
  247. package/docs/time-field.json +584 -0
  248. package/docs/time-field.md +291 -0
  249. package/docs/time-picker.json +679 -0
  250. package/docs/time-picker.md +315 -0
  251. package/docs/time-range-picker.examples.md +191 -0
  252. package/docs/time-range-picker.json +924 -0
  253. package/docs/time-range-picker.md +152 -0
  254. package/docs/timeline.json +839 -0
  255. package/docs/timeline.md +401 -0
  256. package/docs/toast.json +642 -0
  257. package/docs/toast.md +311 -0
  258. package/docs/toggle-group.json +417 -0
  259. package/docs/toggle-group.md +255 -0
  260. package/docs/toggle.json +326 -0
  261. package/docs/toggle.md +222 -0
  262. package/docs/toolbar.json +380 -0
  263. package/docs/toolbar.md +240 -0
  264. package/docs/tooltip.examples.md +664 -0
  265. package/docs/tooltip.json +604 -0
  266. package/docs/tooltip.md +146 -0
  267. package/docs/top-navigation.examples.md +287 -0
  268. package/docs/top-navigation.json +648 -0
  269. package/docs/top-navigation.md +138 -0
  270. package/docs/tour.json +759 -0
  271. package/docs/tour.md +337 -0
  272. package/docs/transfer.json +746 -0
  273. package/docs/transfer.md +273 -0
  274. package/docs/tree.json +918 -0
  275. package/docs/tree.md +397 -0
  276. package/docs/typography.json +317 -0
  277. package/docs/typography.md +107 -0
  278. package/docs/upload.examples.md +358 -0
  279. package/docs/upload.json +1103 -0
  280. package/docs/upload.md +166 -0
  281. package/docs/visually-hidden.json +71 -0
  282. package/docs/visually-hidden.md +42 -0
  283. package/docs/wizard.json +724 -0
  284. package/docs/wizard.md +295 -0
  285. package/fesm2022/slotted-angular-accordion.mjs +247 -0
  286. package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
  287. package/fesm2022/slotted-angular-action-bar.mjs +639 -0
  288. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
  289. package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
  290. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
  291. package/fesm2022/slotted-angular-alert.mjs +427 -0
  292. package/fesm2022/slotted-angular-alert.mjs.map +1 -0
  293. package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
  294. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
  295. package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
  296. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
  297. package/fesm2022/slotted-angular-attachment.mjs +595 -0
  298. package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
  299. package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
  300. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
  301. package/fesm2022/slotted-angular-avatar.mjs +330 -0
  302. package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
  303. package/fesm2022/slotted-angular-badge.mjs +255 -0
  304. package/fesm2022/slotted-angular-badge.mjs.map +1 -0
  305. package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
  306. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
  307. package/fesm2022/slotted-angular-button-group.mjs +146 -0
  308. package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
  309. package/fesm2022/slotted-angular-button.mjs +692 -0
  310. package/fesm2022/slotted-angular-button.mjs.map +1 -0
  311. package/fesm2022/slotted-angular-calendar.mjs +916 -0
  312. package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
  313. package/fesm2022/slotted-angular-card.mjs +225 -0
  314. package/fesm2022/slotted-angular-card.mjs.map +1 -0
  315. package/fesm2022/slotted-angular-carousel.mjs +840 -0
  316. package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
  317. package/fesm2022/slotted-angular-cascader.mjs +1839 -0
  318. package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
  319. package/fesm2022/slotted-angular-chart.mjs +974 -0
  320. package/fesm2022/slotted-angular-chart.mjs.map +1 -0
  321. package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
  322. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
  323. package/fesm2022/slotted-angular-checkbox.mjs +468 -0
  324. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
  325. package/fesm2022/slotted-angular-code-block.mjs +476 -0
  326. package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
  327. package/fesm2022/slotted-angular-collapsible.mjs +479 -0
  328. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
  329. package/fesm2022/slotted-angular-color-picker.mjs +910 -0
  330. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
  331. package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
  332. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
  333. package/fesm2022/slotted-angular-combobox.mjs +1480 -0
  334. package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
  335. package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
  336. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
  337. package/fesm2022/slotted-angular-container.mjs +105 -0
  338. package/fesm2022/slotted-angular-container.mjs.map +1 -0
  339. package/fesm2022/slotted-angular-context-menu.mjs +221 -0
  340. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
  341. package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
  342. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
  343. package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
  344. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
  345. package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
  346. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
  347. package/fesm2022/slotted-angular-data-list.mjs +1418 -0
  348. package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
  349. package/fesm2022/slotted-angular-date-field.mjs +772 -0
  350. package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
  351. package/fesm2022/slotted-angular-date-picker.mjs +690 -0
  352. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
  353. package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
  354. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
  355. package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
  356. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
  357. package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
  358. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
  359. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
  360. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
  361. package/fesm2022/slotted-angular-description-list.mjs +545 -0
  362. package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
  363. package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
  364. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
  365. package/fesm2022/slotted-angular-dialog.mjs +980 -0
  366. package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
  367. package/fesm2022/slotted-angular-divider.mjs +76 -0
  368. package/fesm2022/slotted-angular-divider.mjs.map +1 -0
  369. package/fesm2022/slotted-angular-drawer.mjs +1397 -0
  370. package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
  371. package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
  372. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
  373. package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
  374. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
  375. package/fesm2022/slotted-angular-field-group.mjs +301 -0
  376. package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
  377. package/fesm2022/slotted-angular-field.mjs +928 -0
  378. package/fesm2022/slotted-angular-field.mjs.map +1 -0
  379. package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
  380. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
  381. package/fesm2022/slotted-angular-form.mjs +592 -0
  382. package/fesm2022/slotted-angular-form.mjs.map +1 -0
  383. package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
  384. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
  385. package/fesm2022/slotted-angular-grid.mjs +58 -0
  386. package/fesm2022/slotted-angular-grid.mjs.map +1 -0
  387. package/fesm2022/slotted-angular-highlight.mjs +123 -0
  388. package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
  389. package/fesm2022/slotted-angular-hover-card.mjs +326 -0
  390. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
  391. package/fesm2022/slotted-angular-i18n.mjs +75 -0
  392. package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
  393. package/fesm2022/slotted-angular-icon.mjs +232 -0
  394. package/fesm2022/slotted-angular-icon.mjs.map +1 -0
  395. package/fesm2022/slotted-angular-image.mjs +442 -0
  396. package/fesm2022/slotted-angular-image.mjs.map +1 -0
  397. package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
  398. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
  399. package/fesm2022/slotted-angular-inline-message.mjs +280 -0
  400. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
  401. package/fesm2022/slotted-angular-inline.mjs +52 -0
  402. package/fesm2022/slotted-angular-inline.mjs.map +1 -0
  403. package/fesm2022/slotted-angular-kbd.mjs +284 -0
  404. package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
  405. package/fesm2022/slotted-angular-link.mjs +182 -0
  406. package/fesm2022/slotted-angular-link.mjs.map +1 -0
  407. package/fesm2022/slotted-angular-list-item.mjs +367 -0
  408. package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
  409. package/fesm2022/slotted-angular-list.mjs +256 -0
  410. package/fesm2022/slotted-angular-list.mjs.map +1 -0
  411. package/fesm2022/slotted-angular-listbox.mjs +1274 -0
  412. package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
  413. package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
  414. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
  415. package/fesm2022/slotted-angular-markdown.mjs +914 -0
  416. package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
  417. package/fesm2022/slotted-angular-menu.mjs +1211 -0
  418. package/fesm2022/slotted-angular-menu.mjs.map +1 -0
  419. package/fesm2022/slotted-angular-menubar.mjs +230 -0
  420. package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
  421. package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
  422. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
  423. package/fesm2022/slotted-angular-message.mjs +866 -0
  424. package/fesm2022/slotted-angular-message.mjs.map +1 -0
  425. package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
  426. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
  427. package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
  428. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
  429. package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
  430. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
  431. package/fesm2022/slotted-angular-number-field.mjs +966 -0
  432. package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
  433. package/fesm2022/slotted-angular-otp-input.mjs +629 -0
  434. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
  435. package/fesm2022/slotted-angular-page-header.mjs +788 -0
  436. package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
  437. package/fesm2022/slotted-angular-page.mjs +255 -0
  438. package/fesm2022/slotted-angular-page.mjs.map +1 -0
  439. package/fesm2022/slotted-angular-pagination.mjs +562 -0
  440. package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
  441. package/fesm2022/slotted-angular-popover.mjs +799 -0
  442. package/fesm2022/slotted-angular-popover.mjs.map +1 -0
  443. package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
  444. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
  445. package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
  446. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
  447. package/fesm2022/slotted-angular-prose.mjs +314 -0
  448. package/fesm2022/slotted-angular-prose.mjs.map +1 -0
  449. package/fesm2022/slotted-angular-radio-group.mjs +469 -0
  450. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
  451. package/fesm2022/slotted-angular-rating.mjs +1174 -0
  452. package/fesm2022/slotted-angular-rating.mjs.map +1 -0
  453. package/fesm2022/slotted-angular-result-state.mjs +330 -0
  454. package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
  455. package/fesm2022/slotted-angular-saved-views.mjs +877 -0
  456. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
  457. package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
  458. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
  459. package/fesm2022/slotted-angular-section.mjs +266 -0
  460. package/fesm2022/slotted-angular-section.mjs.map +1 -0
  461. package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
  462. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
  463. package/fesm2022/slotted-angular-select.mjs +1899 -0
  464. package/fesm2022/slotted-angular-select.mjs.map +1 -0
  465. package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
  466. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
  467. package/fesm2022/slotted-angular-skeleton.mjs +316 -0
  468. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
  469. package/fesm2022/slotted-angular-slider.mjs +586 -0
  470. package/fesm2022/slotted-angular-slider.mjs.map +1 -0
  471. package/fesm2022/slotted-angular-sparkline.mjs +235 -0
  472. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
  473. package/fesm2022/slotted-angular-split-button.mjs +331 -0
  474. package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
  475. package/fesm2022/slotted-angular-splitter.mjs +516 -0
  476. package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
  477. package/fesm2022/slotted-angular-stack.mjs +48 -0
  478. package/fesm2022/slotted-angular-stack.mjs.map +1 -0
  479. package/fesm2022/slotted-angular-stat-card.mjs +478 -0
  480. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
  481. package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
  482. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
  483. package/fesm2022/slotted-angular-stepper.mjs +536 -0
  484. package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
  485. package/fesm2022/slotted-angular-switch.mjs +447 -0
  486. package/fesm2022/slotted-angular-switch.mjs.map +1 -0
  487. package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
  488. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
  489. package/fesm2022/slotted-angular-table.mjs +2518 -0
  490. package/fesm2022/slotted-angular-table.mjs.map +1 -0
  491. package/fesm2022/slotted-angular-tabs.mjs +829 -0
  492. package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
  493. package/fesm2022/slotted-angular-tag.mjs +595 -0
  494. package/fesm2022/slotted-angular-tag.mjs.map +1 -0
  495. package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
  496. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
  497. package/fesm2022/slotted-angular-text-field.mjs +674 -0
  498. package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
  499. package/fesm2022/slotted-angular-textarea.mjs +275 -0
  500. package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
  501. package/fesm2022/slotted-angular-theme.mjs +45 -0
  502. package/fesm2022/slotted-angular-theme.mjs.map +1 -0
  503. package/fesm2022/slotted-angular-time-field.mjs +895 -0
  504. package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
  505. package/fesm2022/slotted-angular-time-picker.mjs +856 -0
  506. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
  507. package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
  508. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
  509. package/fesm2022/slotted-angular-timeline.mjs +928 -0
  510. package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
  511. package/fesm2022/slotted-angular-toast.mjs +917 -0
  512. package/fesm2022/slotted-angular-toast.mjs.map +1 -0
  513. package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
  514. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
  515. package/fesm2022/slotted-angular-toggle.mjs +162 -0
  516. package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
  517. package/fesm2022/slotted-angular-toolbar.mjs +536 -0
  518. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
  519. package/fesm2022/slotted-angular-tooltip.mjs +798 -0
  520. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
  521. package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
  522. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
  523. package/fesm2022/slotted-angular-tour.mjs +1330 -0
  524. package/fesm2022/slotted-angular-tour.mjs.map +1 -0
  525. package/fesm2022/slotted-angular-transfer.mjs +1406 -0
  526. package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
  527. package/fesm2022/slotted-angular-tree.mjs +1448 -0
  528. package/fesm2022/slotted-angular-tree.mjs.map +1 -0
  529. package/fesm2022/slotted-angular-typography.mjs +184 -0
  530. package/fesm2022/slotted-angular-typography.mjs.map +1 -0
  531. package/fesm2022/slotted-angular-upload.mjs +1523 -0
  532. package/fesm2022/slotted-angular-upload.mjs.map +1 -0
  533. package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
  534. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
  535. package/fesm2022/slotted-angular-wizard.mjs +1715 -0
  536. package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
  537. package/fesm2022/slotted-angular.mjs +4 -0
  538. package/fesm2022/slotted-angular.mjs.map +1 -0
  539. package/package.json +537 -3
  540. package/types/slotted-angular-accordion.d.ts +156 -0
  541. package/types/slotted-angular-accordion.d.ts.map +1 -0
  542. package/types/slotted-angular-action-bar.d.ts +291 -0
  543. package/types/slotted-angular-action-bar.d.ts.map +1 -0
  544. package/types/slotted-angular-action-sheet.d.ts +294 -0
  545. package/types/slotted-angular-action-sheet.d.ts.map +1 -0
  546. package/types/slotted-angular-alert.d.ts +214 -0
  547. package/types/slotted-angular-alert.d.ts.map +1 -0
  548. package/types/slotted-angular-app-shell.d.ts +549 -0
  549. package/types/slotted-angular-app-shell.d.ts.map +1 -0
  550. package/types/slotted-angular-aspect-ratio.d.ts +57 -0
  551. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
  552. package/types/slotted-angular-attachment.d.ts +294 -0
  553. package/types/slotted-angular-attachment.d.ts.map +1 -0
  554. package/types/slotted-angular-avatar-group.d.ts +119 -0
  555. package/types/slotted-angular-avatar-group.d.ts.map +1 -0
  556. package/types/slotted-angular-avatar.d.ts +202 -0
  557. package/types/slotted-angular-avatar.d.ts.map +1 -0
  558. package/types/slotted-angular-badge.d.ts +166 -0
  559. package/types/slotted-angular-badge.d.ts.map +1 -0
  560. package/types/slotted-angular-breadcrumb.d.ts +251 -0
  561. package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
  562. package/types/slotted-angular-button-group.d.ts +89 -0
  563. package/types/slotted-angular-button-group.d.ts.map +1 -0
  564. package/types/slotted-angular-button.d.ts +390 -0
  565. package/types/slotted-angular-button.d.ts.map +1 -0
  566. package/types/slotted-angular-calendar.d.ts +280 -0
  567. package/types/slotted-angular-calendar.d.ts.map +1 -0
  568. package/types/slotted-angular-card.d.ts +140 -0
  569. package/types/slotted-angular-card.d.ts.map +1 -0
  570. package/types/slotted-angular-carousel.d.ts +288 -0
  571. package/types/slotted-angular-carousel.d.ts.map +1 -0
  572. package/types/slotted-angular-cascader.d.ts +351 -0
  573. package/types/slotted-angular-cascader.d.ts.map +1 -0
  574. package/types/slotted-angular-chart.d.ts +319 -0
  575. package/types/slotted-angular-chart.d.ts.map +1 -0
  576. package/types/slotted-angular-checkbox-group.d.ts +156 -0
  577. package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
  578. package/types/slotted-angular-checkbox.d.ts +197 -0
  579. package/types/slotted-angular-checkbox.d.ts.map +1 -0
  580. package/types/slotted-angular-code-block.d.ts +158 -0
  581. package/types/slotted-angular-code-block.d.ts.map +1 -0
  582. package/types/slotted-angular-collapsible.d.ts +272 -0
  583. package/types/slotted-angular-collapsible.d.ts.map +1 -0
  584. package/types/slotted-angular-color-picker.d.ts +181 -0
  585. package/types/slotted-angular-color-picker.d.ts.map +1 -0
  586. package/types/slotted-angular-column-manager.d.ts +200 -0
  587. package/types/slotted-angular-column-manager.d.ts.map +1 -0
  588. package/types/slotted-angular-combobox.d.ts +449 -0
  589. package/types/slotted-angular-combobox.d.ts.map +1 -0
  590. package/types/slotted-angular-command-palette.d.ts +256 -0
  591. package/types/slotted-angular-command-palette.d.ts.map +1 -0
  592. package/types/slotted-angular-container.d.ts +84 -0
  593. package/types/slotted-angular-container.d.ts.map +1 -0
  594. package/types/slotted-angular-context-menu.d.ts +84 -0
  595. package/types/slotted-angular-context-menu.d.ts.map +1 -0
  596. package/types/slotted-angular-currency-field.d.ts +480 -0
  597. package/types/slotted-angular-currency-field.d.ts.map +1 -0
  598. package/types/slotted-angular-dashboard-grid.d.ts +341 -0
  599. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
  600. package/types/slotted-angular-data-grid.d.ts +1077 -0
  601. package/types/slotted-angular-data-grid.d.ts.map +1 -0
  602. package/types/slotted-angular-data-list.d.ts +272 -0
  603. package/types/slotted-angular-data-list.d.ts.map +1 -0
  604. package/types/slotted-angular-date-field.d.ts +320 -0
  605. package/types/slotted-angular-date-field.d.ts.map +1 -0
  606. package/types/slotted-angular-date-picker.d.ts +224 -0
  607. package/types/slotted-angular-date-picker.d.ts.map +1 -0
  608. package/types/slotted-angular-date-range-picker.d.ts +310 -0
  609. package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
  610. package/types/slotted-angular-datetime-field.d.ts +362 -0
  611. package/types/slotted-angular-datetime-field.d.ts.map +1 -0
  612. package/types/slotted-angular-datetime-picker.d.ts +370 -0
  613. package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
  614. package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
  615. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
  616. package/types/slotted-angular-description-list.d.ts +281 -0
  617. package/types/slotted-angular-description-list.d.ts.map +1 -0
  618. package/types/slotted-angular-detail-panel.d.ts +240 -0
  619. package/types/slotted-angular-detail-panel.d.ts.map +1 -0
  620. package/types/slotted-angular-dialog.d.ts +497 -0
  621. package/types/slotted-angular-dialog.d.ts.map +1 -0
  622. package/types/slotted-angular-divider.d.ts +40 -0
  623. package/types/slotted-angular-divider.d.ts.map +1 -0
  624. package/types/slotted-angular-drawer.d.ts +532 -0
  625. package/types/slotted-angular-drawer.d.ts.map +1 -0
  626. package/types/slotted-angular-entity-picker.d.ts +338 -0
  627. package/types/slotted-angular-entity-picker.d.ts.map +1 -0
  628. package/types/slotted-angular-event-calendar.d.ts +574 -0
  629. package/types/slotted-angular-event-calendar.d.ts.map +1 -0
  630. package/types/slotted-angular-field-group.d.ts +152 -0
  631. package/types/slotted-angular-field-group.d.ts.map +1 -0
  632. package/types/slotted-angular-field.d.ts +535 -0
  633. package/types/slotted-angular-field.d.ts.map +1 -0
  634. package/types/slotted-angular-filter-bar.d.ts +573 -0
  635. package/types/slotted-angular-filter-bar.d.ts.map +1 -0
  636. package/types/slotted-angular-form.d.ts +298 -0
  637. package/types/slotted-angular-form.d.ts.map +1 -0
  638. package/types/slotted-angular-fullscreen.d.ts +145 -0
  639. package/types/slotted-angular-fullscreen.d.ts.map +1 -0
  640. package/types/slotted-angular-grid.d.ts +50 -0
  641. package/types/slotted-angular-grid.d.ts.map +1 -0
  642. package/types/slotted-angular-highlight.d.ts +93 -0
  643. package/types/slotted-angular-highlight.d.ts.map +1 -0
  644. package/types/slotted-angular-hover-card.d.ts +140 -0
  645. package/types/slotted-angular-hover-card.d.ts.map +1 -0
  646. package/types/slotted-angular-i18n.d.ts +46 -0
  647. package/types/slotted-angular-i18n.d.ts.map +1 -0
  648. package/types/slotted-angular-icon.d.ts +94 -0
  649. package/types/slotted-angular-icon.d.ts.map +1 -0
  650. package/types/slotted-angular-image.d.ts +251 -0
  651. package/types/slotted-angular-image.d.ts.map +1 -0
  652. package/types/slotted-angular-import-export-center.d.ts +351 -0
  653. package/types/slotted-angular-import-export-center.d.ts.map +1 -0
  654. package/types/slotted-angular-inline-message.d.ts +195 -0
  655. package/types/slotted-angular-inline-message.d.ts.map +1 -0
  656. package/types/slotted-angular-inline.d.ts +41 -0
  657. package/types/slotted-angular-inline.d.ts.map +1 -0
  658. package/types/slotted-angular-kbd.d.ts +174 -0
  659. package/types/slotted-angular-kbd.d.ts.map +1 -0
  660. package/types/slotted-angular-link.d.ts +94 -0
  661. package/types/slotted-angular-link.d.ts.map +1 -0
  662. package/types/slotted-angular-list-item.d.ts +210 -0
  663. package/types/slotted-angular-list-item.d.ts.map +1 -0
  664. package/types/slotted-angular-list.d.ts +176 -0
  665. package/types/slotted-angular-list.d.ts.map +1 -0
  666. package/types/slotted-angular-listbox.d.ts +470 -0
  667. package/types/slotted-angular-listbox.d.ts.map +1 -0
  668. package/types/slotted-angular-loading-overlay.d.ts +219 -0
  669. package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
  670. package/types/slotted-angular-markdown.d.ts +172 -0
  671. package/types/slotted-angular-markdown.d.ts.map +1 -0
  672. package/types/slotted-angular-menu.d.ts +448 -0
  673. package/types/slotted-angular-menu.d.ts.map +1 -0
  674. package/types/slotted-angular-menubar.d.ts +90 -0
  675. package/types/slotted-angular-menubar.d.ts.map +1 -0
  676. package/types/slotted-angular-message-scroller.d.ts +151 -0
  677. package/types/slotted-angular-message-scroller.d.ts.map +1 -0
  678. package/types/slotted-angular-message.d.ts +348 -0
  679. package/types/slotted-angular-message.d.ts.map +1 -0
  680. package/types/slotted-angular-multi-select.d.ts +462 -0
  681. package/types/slotted-angular-multi-select.d.ts.map +1 -0
  682. package/types/slotted-angular-navigation-menu.d.ts +309 -0
  683. package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
  684. package/types/slotted-angular-notification-center.d.ts +318 -0
  685. package/types/slotted-angular-notification-center.d.ts.map +1 -0
  686. package/types/slotted-angular-number-field.d.ts +402 -0
  687. package/types/slotted-angular-number-field.d.ts.map +1 -0
  688. package/types/slotted-angular-otp-input.d.ts +286 -0
  689. package/types/slotted-angular-otp-input.d.ts.map +1 -0
  690. package/types/slotted-angular-page-header.d.ts +334 -0
  691. package/types/slotted-angular-page-header.d.ts.map +1 -0
  692. package/types/slotted-angular-page.d.ts +141 -0
  693. package/types/slotted-angular-page.d.ts.map +1 -0
  694. package/types/slotted-angular-pagination.d.ts +213 -0
  695. package/types/slotted-angular-pagination.d.ts.map +1 -0
  696. package/types/slotted-angular-popover.d.ts +366 -0
  697. package/types/slotted-angular-popover.d.ts.map +1 -0
  698. package/types/slotted-angular-progress-indicator.d.ts +312 -0
  699. package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
  700. package/types/slotted-angular-prompt-composer.d.ts +242 -0
  701. package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
  702. package/types/slotted-angular-prose.d.ts +171 -0
  703. package/types/slotted-angular-prose.d.ts.map +1 -0
  704. package/types/slotted-angular-radio-group.d.ts +268 -0
  705. package/types/slotted-angular-radio-group.d.ts.map +1 -0
  706. package/types/slotted-angular-rating.d.ts +374 -0
  707. package/types/slotted-angular-rating.d.ts.map +1 -0
  708. package/types/slotted-angular-result-state.d.ts +217 -0
  709. package/types/slotted-angular-result-state.d.ts.map +1 -0
  710. package/types/slotted-angular-saved-views.d.ts +198 -0
  711. package/types/slotted-angular-saved-views.d.ts.map +1 -0
  712. package/types/slotted-angular-scroll-area.d.ts +186 -0
  713. package/types/slotted-angular-scroll-area.d.ts.map +1 -0
  714. package/types/slotted-angular-section.d.ts +143 -0
  715. package/types/slotted-angular-section.d.ts.map +1 -0
  716. package/types/slotted-angular-segmented-control.d.ts +251 -0
  717. package/types/slotted-angular-segmented-control.d.ts.map +1 -0
  718. package/types/slotted-angular-select.d.ts +507 -0
  719. package/types/slotted-angular-select.d.ts.map +1 -0
  720. package/types/slotted-angular-side-navigation.d.ts +373 -0
  721. package/types/slotted-angular-side-navigation.d.ts.map +1 -0
  722. package/types/slotted-angular-skeleton.d.ts +198 -0
  723. package/types/slotted-angular-skeleton.d.ts.map +1 -0
  724. package/types/slotted-angular-slider.d.ts +216 -0
  725. package/types/slotted-angular-slider.d.ts.map +1 -0
  726. package/types/slotted-angular-sparkline.d.ts +106 -0
  727. package/types/slotted-angular-sparkline.d.ts.map +1 -0
  728. package/types/slotted-angular-split-button.d.ts +180 -0
  729. package/types/slotted-angular-split-button.d.ts.map +1 -0
  730. package/types/slotted-angular-splitter.d.ts +206 -0
  731. package/types/slotted-angular-splitter.d.ts.map +1 -0
  732. package/types/slotted-angular-stack.d.ts +38 -0
  733. package/types/slotted-angular-stack.d.ts.map +1 -0
  734. package/types/slotted-angular-stat-card.d.ts +232 -0
  735. package/types/slotted-angular-stat-card.d.ts.map +1 -0
  736. package/types/slotted-angular-status-indicator.d.ts +106 -0
  737. package/types/slotted-angular-status-indicator.d.ts.map +1 -0
  738. package/types/slotted-angular-stepper.d.ts +198 -0
  739. package/types/slotted-angular-stepper.d.ts.map +1 -0
  740. package/types/slotted-angular-switch.d.ts +243 -0
  741. package/types/slotted-angular-switch.d.ts.map +1 -0
  742. package/types/slotted-angular-table-of-contents.d.ts +210 -0
  743. package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
  744. package/types/slotted-angular-table.d.ts +888 -0
  745. package/types/slotted-angular-table.d.ts.map +1 -0
  746. package/types/slotted-angular-tabs.d.ts +340 -0
  747. package/types/slotted-angular-tabs.d.ts.map +1 -0
  748. package/types/slotted-angular-tag.d.ts +279 -0
  749. package/types/slotted-angular-tag.d.ts.map +1 -0
  750. package/types/slotted-angular-tags-input.d.ts +302 -0
  751. package/types/slotted-angular-tags-input.d.ts.map +1 -0
  752. package/types/slotted-angular-text-field.d.ts +334 -0
  753. package/types/slotted-angular-text-field.d.ts.map +1 -0
  754. package/types/slotted-angular-textarea.d.ts +150 -0
  755. package/types/slotted-angular-textarea.d.ts.map +1 -0
  756. package/types/slotted-angular-theme.d.ts +26 -0
  757. package/types/slotted-angular-theme.d.ts.map +1 -0
  758. package/types/slotted-angular-time-field.d.ts +300 -0
  759. package/types/slotted-angular-time-field.d.ts.map +1 -0
  760. package/types/slotted-angular-time-picker.d.ts +260 -0
  761. package/types/slotted-angular-time-picker.d.ts.map +1 -0
  762. package/types/slotted-angular-time-range-picker.d.ts +401 -0
  763. package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
  764. package/types/slotted-angular-timeline.d.ts +329 -0
  765. package/types/slotted-angular-timeline.d.ts.map +1 -0
  766. package/types/slotted-angular-toast.d.ts +340 -0
  767. package/types/slotted-angular-toast.d.ts.map +1 -0
  768. package/types/slotted-angular-toggle-group.d.ts +167 -0
  769. package/types/slotted-angular-toggle-group.d.ts.map +1 -0
  770. package/types/slotted-angular-toggle.d.ts +106 -0
  771. package/types/slotted-angular-toggle.d.ts.map +1 -0
  772. package/types/slotted-angular-toolbar.d.ts +252 -0
  773. package/types/slotted-angular-toolbar.d.ts.map +1 -0
  774. package/types/slotted-angular-tooltip.d.ts +388 -0
  775. package/types/slotted-angular-tooltip.d.ts.map +1 -0
  776. package/types/slotted-angular-top-navigation.d.ts +442 -0
  777. package/types/slotted-angular-top-navigation.d.ts.map +1 -0
  778. package/types/slotted-angular-tour.d.ts +440 -0
  779. package/types/slotted-angular-tour.d.ts.map +1 -0
  780. package/types/slotted-angular-transfer.d.ts +296 -0
  781. package/types/slotted-angular-transfer.d.ts.map +1 -0
  782. package/types/slotted-angular-tree.d.ts +499 -0
  783. package/types/slotted-angular-tree.d.ts.map +1 -0
  784. package/types/slotted-angular-typography.d.ts +89 -0
  785. package/types/slotted-angular-typography.d.ts.map +1 -0
  786. package/types/slotted-angular-upload.d.ts +365 -0
  787. package/types/slotted-angular-upload.d.ts.map +1 -0
  788. package/types/slotted-angular-visually-hidden.d.ts +19 -0
  789. package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
  790. package/types/slotted-angular-wizard.d.ts +441 -0
  791. package/types/slotted-angular-wizard.d.ts.map +1 -0
  792. package/types/slotted-angular.d.ts +3 -0
  793. package/types/slotted-angular.d.ts.map +1 -0
@@ -0,0 +1,928 @@
1
+ {
2
+ "family": "datetime-picker",
3
+ "ui": "datetime-picker",
4
+ "binding": "angular",
5
+ "catalog": {
6
+ "group": "Forms",
7
+ "summary": "Date and time field with a picker popover."
8
+ },
9
+ "axes": {
10
+ "size": [
11
+ "sm",
12
+ "md",
13
+ "lg"
14
+ ],
15
+ "variant": [
16
+ "outline",
17
+ "subtle",
18
+ "plain"
19
+ ],
20
+ "placement": [
21
+ "bottom-start",
22
+ "bottom",
23
+ "bottom-end",
24
+ "top-start",
25
+ "top",
26
+ "top-end"
27
+ ],
28
+ "openTo": [
29
+ "date",
30
+ "time"
31
+ ],
32
+ "closeOnSelect": [
33
+ "auto",
34
+ "always",
35
+ "never"
36
+ ],
37
+ "unavailableOptions": [
38
+ "disable",
39
+ "hide"
40
+ ],
41
+ "hourCycle": [
42
+ 12,
43
+ 24
44
+ ],
45
+ "granularity": [
46
+ "hour",
47
+ "minute",
48
+ "second"
49
+ ],
50
+ "calendar": [
51
+ "gregory"
52
+ ]
53
+ },
54
+ "members": {
55
+ "dateTimePicker": {
56
+ "nativeElement": "div",
57
+ "defaults": {
58
+ "size": "md",
59
+ "variant": "outline",
60
+ "placement": "bottom-start",
61
+ "openTo": "date",
62
+ "closeOnSelect": "auto",
63
+ "step": 900,
64
+ "unavailableOptions": "disable",
65
+ "granularity": "minute",
66
+ "calendar": "gregory",
67
+ "clearable": false,
68
+ "maxOptions": 1440
69
+ },
70
+ "capabilities": [
71
+ "value",
72
+ "open",
73
+ "current",
74
+ "placement",
75
+ "appearance",
76
+ "size",
77
+ "content",
78
+ "disabled",
79
+ "invalid",
80
+ "required",
81
+ "readOnly",
82
+ "wiring"
83
+ ],
84
+ "states": [
85
+ "default",
86
+ "hover",
87
+ "active",
88
+ "focus-visible",
89
+ "disabled",
90
+ "invalid",
91
+ "readonly",
92
+ "required",
93
+ "open",
94
+ "selected",
95
+ "current"
96
+ ],
97
+ "parts": [
98
+ "root",
99
+ "control",
100
+ "trigger",
101
+ "positioner",
102
+ "content",
103
+ "panels",
104
+ "date-panel",
105
+ "time-panel",
106
+ "head",
107
+ "head-value",
108
+ "now",
109
+ "presets",
110
+ "list",
111
+ "option",
112
+ "empty",
113
+ "footer"
114
+ ]
115
+ }
116
+ },
117
+ "docs": {
118
+ "dateTimePicker": {
119
+ "imports": {
120
+ "source": "import { SlDateTimePicker, SlDateTimePickerOption, SlDateTimePickerPresets, SlDateTimePickerFooter } from '@slotted/angular/datetime-picker';",
121
+ "selector": "[slDateTimePicker]",
122
+ "exportAs": "slDateTimePicker"
123
+ },
124
+ "anatomy": [
125
+ {
126
+ "part": "root",
127
+ "element": "the element the directive is on",
128
+ "required": true,
129
+ "purpose": "The outer box, carrying data-ui=\"datetime-picker\", the size, variant and granularity axes, data-open and the state attributes. It has no role: the control inside holds the field and the trigger, and the panel is a layer of its own."
130
+ },
131
+ {
132
+ "part": "control",
133
+ "element": "div",
134
+ "required": true,
135
+ "purpose": "The box the panel is positioned against, and where Alt+ArrowDown is handled. It draws no frame: the datetime field inside it draws its own border, focus ring and states."
136
+ },
137
+ {
138
+ "part": "trigger",
139
+ "element": "button",
140
+ "required": true,
141
+ "purpose": "The calendar button, in the end slot of the datetime field. It has aria-haspopup=\"dialog\", aria-expanded while the panel is open, and an accessible name that carries the chosen date and time, because focus returns to it when the panel closes. It draws the calendar icon, the icon input[type=datetime-local] draws for the same control."
142
+ },
143
+ {
144
+ "part": "positioner",
145
+ "element": "div, after the control inside the root",
146
+ "required": false,
147
+ "purpose": "The layer the panel stands on, drawn while the panel is open. It carries data-ui=\"datetime-picker\" again, plus data-placement for the side the positioner chose and data-presentation (popover or sheet)."
148
+ },
149
+ {
150
+ "part": "content",
151
+ "element": "div with role=\"dialog\"",
152
+ "required": false,
153
+ "purpose": "The painted panel, with the same accessible name as the trigger. It holds a grid and a listbox, the arrangement the APG Date Picker Combobox example uses for its popup. data-open-to names the surface that takes focus on open."
154
+ },
155
+ {
156
+ "part": "head",
157
+ "element": "div",
158
+ "required": false,
159
+ "purpose": "The band above both surfaces, with a rule under it: the value so far, your shortcuts and the Now button. It takes the panel’s width and does not widen it, so a row of shortcuts wraps instead of stretching the calendar."
160
+ },
161
+ {
162
+ "part": "head-value",
163
+ "element": "span",
164
+ "required": false,
165
+ "purpose": "The value in words. While no value is set, it shows the day the calendar has focused and a placeholder for the time, so the reader knows which day the times in the list belong to."
166
+ },
167
+ {
168
+ "part": "now",
169
+ "element": "button",
170
+ "required": false,
171
+ "purpose": "Writes the current date and time, read from the clock in timeZone when pressed. It draws the clock icon. It does the same as the relative expression 0 in the field, for a reader who does not know the expression."
172
+ },
173
+ {
174
+ "part": "presets",
175
+ "element": "your own element, marked slDateTimePickerPresets",
176
+ "required": false,
177
+ "purpose": "A row in the head, beside Now, for your own shortcuts. The Datetime Picker ships no list of shortcuts: the labels and times belong to your product."
178
+ },
179
+ {
180
+ "part": "panels",
181
+ "element": "div",
182
+ "required": false,
183
+ "purpose": "The two surfaces, as a wrapping flex row: side by side when the panel has room for both, stacked with the calendar first when it does not. Nothing is hidden at any width."
184
+ },
185
+ {
186
+ "part": "date-panel",
187
+ "element": "div",
188
+ "required": false,
189
+ "purpose": "Holds SlCalendar with its grid, its month and year views and its keyboard. It never shrinks below one month, so the time panel is the one that wraps."
190
+ },
191
+ {
192
+ "part": "time-panel",
193
+ "element": "div",
194
+ "required": false,
195
+ "purpose": "Holds the list of times. Beside the calendar it is a narrow column; on a line of its own it takes the whole line."
196
+ },
197
+ {
198
+ "part": "list",
199
+ "element": "div with role=\"listbox\"",
200
+ "required": false,
201
+ "purpose": "The times available on the day the reader is on, with an accessible name that names that day. It is the only part of the panel that scrolls. data-truncated is set when the configuration asks for more rows than maxOptions."
202
+ },
203
+ {
204
+ "part": "option",
205
+ "element": "div with role=\"option\"",
206
+ "required": false,
207
+ "purpose": "One time. It carries aria-selected, data-selected on the chosen time, data-current on the highlighted time and aria-disabled with data-disabled on a refused time. It shows the time only: the calendar shows the day."
208
+ },
209
+ {
210
+ "part": "empty",
211
+ "element": "div",
212
+ "required": false,
213
+ "purpose": "Drawn in place of the list when the day the reader is on offers no time: an unavailable day, a window the bounds leave empty, or a day on which isTimeUnavailable refuses every time. It says so in a sentence, the empty message."
214
+ },
215
+ {
216
+ "part": "footer",
217
+ "element": "your own element, marked slDateTimePickerFooter",
218
+ "required": false,
219
+ "purpose": "A row under both surfaces for your own actions. The panel closes on the press that completes the value, so a confirm button is optional; add one here for a flow that asks for it."
220
+ }
221
+ ],
222
+ "api": [
223
+ {
224
+ "name": "value",
225
+ "type": "PlainDateTime | null",
226
+ "defaultValue": "—",
227
+ "appliesTo": "SlDateTimePicker",
228
+ "description": "The value, when you control it. Update it from (valueChange)."
229
+ },
230
+ {
231
+ "name": "defaultValue",
232
+ "type": "PlainDateTime | null",
233
+ "defaultValue": "—",
234
+ "appliesTo": "SlDateTimePicker",
235
+ "description": "The starting value when the Datetime Picker holds its own state. Read once, on init."
236
+ },
237
+ {
238
+ "name": "open",
239
+ "type": "boolean",
240
+ "defaultValue": "—",
241
+ "appliesTo": "SlDateTimePicker",
242
+ "description": "Whether the panel is open, when you control it. Update it from (openChange)."
243
+ },
244
+ {
245
+ "name": "defaultOpen",
246
+ "type": "boolean",
247
+ "defaultValue": "false",
248
+ "appliesTo": "SlDateTimePicker",
249
+ "description": "Whether the panel starts open. A panel that starts open does not take focus."
250
+ },
251
+ {
252
+ "name": "highlighted",
253
+ "type": "DateTimePickerHighlight",
254
+ "defaultValue": "—",
255
+ "appliesTo": "SlDateTimePicker",
256
+ "description": "Where the reader is in the panel, as { date, time }: the day the calendar has focused and the time the list has highlighted. Set it to control the highlight; update it from (highlightedChange)."
257
+ },
258
+ {
259
+ "name": "defaultHighlighted",
260
+ "type": "DateTimePickerHighlight",
261
+ "defaultValue": "—",
262
+ "appliesTo": "SlDateTimePicker",
263
+ "description": "Where the highlight starts. Unset, the panel opens on the day of the value, or of referenceDateTime, and on the time nearest to it."
264
+ },
265
+ {
266
+ "name": "min",
267
+ "type": "PlainDateTime",
268
+ "defaultValue": "—",
269
+ "appliesTo": "SlDateTimePicker",
270
+ "description": "The earliest whole value. The calendar disables the days before its date, and on its date the list starts at its time."
271
+ },
272
+ {
273
+ "name": "max",
274
+ "type": "PlainDateTime",
275
+ "defaultValue": "—",
276
+ "appliesTo": "SlDateTimePicker",
277
+ "description": "The latest whole value. The calendar disables the days after its date, and on its date the list stops at its time."
278
+ },
279
+ {
280
+ "name": "minTime",
281
+ "type": "PlainTime",
282
+ "defaultValue": "—",
283
+ "appliesTo": "SlDateTimePicker",
284
+ "description": "The earliest time on every day inside the range. It applies together with min."
285
+ },
286
+ {
287
+ "name": "maxTime",
288
+ "type": "PlainTime",
289
+ "defaultValue": "—",
290
+ "appliesTo": "SlDateTimePicker",
291
+ "description": "The latest time on every day inside the range. It applies together with max."
292
+ },
293
+ {
294
+ "name": "isDateUnavailable",
295
+ "type": "(date: PlainDate) => boolean",
296
+ "defaultValue": "—",
297
+ "appliesTo": "SlDateTimePicker",
298
+ "description": "Returns true for a day the reader cannot choose. The calendar disables it, its list is empty, and a typed value on it marks the Datetime Picker invalid."
299
+ },
300
+ {
301
+ "name": "isTimeUnavailable",
302
+ "type": "(time: PlainTime, date: PlainDate) => boolean",
303
+ "defaultValue": "—",
304
+ "appliesTo": "SlDateTimePicker",
305
+ "description": "Returns true for a time the reader cannot choose on a given day, so the rule can differ by day. A typed value it refuses marks the Datetime Picker invalid."
306
+ },
307
+ {
308
+ "name": "step",
309
+ "type": "number",
310
+ "defaultValue": "900",
311
+ "appliesTo": "SlDateTimePicker",
312
+ "description": "Seconds between two times in the list, counted from the earliest time of the day, or from midnight. It applies to the list only; the field accepts any time. Ignored when options is set."
313
+ },
314
+ {
315
+ "name": "options",
316
+ "type": "readonly PlainTime[]",
317
+ "defaultValue": "—",
318
+ "appliesTo": "SlDateTimePicker",
319
+ "description": "The times the list offers, in the order given, in place of step. Bounds and predicates still refuse times in it."
320
+ },
321
+ {
322
+ "name": "maxOptions",
323
+ "type": "number",
324
+ "defaultValue": "1440",
325
+ "appliesTo": "SlDateTimePicker",
326
+ "description": "The most rows the list draws, a whole day at a one-minute step. Past it, the list is cut, carries data-truncated, and the panel’s accessible description says the remaining times are typed into the field."
327
+ },
328
+ {
329
+ "name": "unavailableOptions",
330
+ "type": "'disable' | 'hide'",
331
+ "defaultValue": "disable",
332
+ "appliesTo": "SlDateTimePicker",
333
+ "description": "What the list does with a refused time: shows it disabled, or leaves it out."
334
+ },
335
+ {
336
+ "name": "locale",
337
+ "type": "string",
338
+ "defaultValue": "the provider’s locale, then en-US",
339
+ "appliesTo": "SlDateTimePicker",
340
+ "description": "A BCP 47 tag. It sets the segments, the clock, the calendar’s month and weekday names, the times in the list and the date and time in words."
341
+ },
342
+ {
343
+ "name": "timeZone",
344
+ "type": "string",
345
+ "defaultValue": "the browser’s time zone",
346
+ "appliesTo": "SlDateTimePicker",
347
+ "description": "The IANA time zone that decides today in the calendar and what Now and the default referenceDateTime read from the clock. The value itself has no time zone."
348
+ },
349
+ {
350
+ "name": "hourCycle",
351
+ "type": "12 | 24",
352
+ "defaultValue": "the locale’s",
353
+ "appliesTo": "SlDateTimePicker",
354
+ "description": "A 12-hour clock with a day period, or a 24-hour clock, in the field and the list."
355
+ },
356
+ {
357
+ "name": "granularity",
358
+ "type": "'hour' | 'minute' | 'second'",
359
+ "defaultValue": "minute",
360
+ "appliesTo": "SlDateTimePicker",
361
+ "description": "The smallest unit the field writes."
362
+ },
363
+ {
364
+ "name": "calendar",
365
+ "type": "'gregory'",
366
+ "defaultValue": "gregory",
367
+ "appliesTo": "SlDateTimePicker",
368
+ "description": "The calendar system. gregory is the only value today."
369
+ },
370
+ {
371
+ "name": "firstDayOfWeek",
372
+ "type": "number",
373
+ "defaultValue": "the locale’s",
374
+ "appliesTo": "SlDateTimePicker",
375
+ "description": "The first day of the calendar’s week, from 0 for Sunday to 6 for Saturday."
376
+ },
377
+ {
378
+ "name": "months",
379
+ "type": "number",
380
+ "defaultValue": "1",
381
+ "appliesTo": "SlDateTimePicker",
382
+ "description": "How many months the calendar draws side by side."
383
+ },
384
+ {
385
+ "name": "weekNumbers",
386
+ "type": "boolean",
387
+ "defaultValue": "false",
388
+ "appliesTo": "SlDateTimePicker",
389
+ "description": "Adds a column of ISO 8601 week numbers to the calendar."
390
+ },
391
+ {
392
+ "name": "referenceDateTime",
393
+ "type": "PlainDateTime",
394
+ "defaultValue": "the current date and time",
395
+ "appliesTo": "SlDateTimePicker",
396
+ "description": "The date and time assumed where the reader has given none: the month the calendar opens on, the time the list opens on after a day is pressed on an empty value, and the point a relative expression and the arrow keys on an empty field count from."
397
+ },
398
+ {
399
+ "name": "size",
400
+ "type": "'sm' | 'md' | 'lg'",
401
+ "defaultValue": "md",
402
+ "appliesTo": "SlDateTimePicker",
403
+ "description": "One step of the control scale for the field, the trigger and the rows of the list. Inside a field, an unset size follows the field."
404
+ },
405
+ {
406
+ "name": "variant",
407
+ "type": "'outline' | 'subtle' | 'plain'",
408
+ "defaultValue": "outline",
409
+ "appliesTo": "SlDateTimePicker",
410
+ "description": "The frame of the field: a border, a fill, or none at rest."
411
+ },
412
+ {
413
+ "name": "placement",
414
+ "type": "'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end'",
415
+ "defaultValue": "bottom-start",
416
+ "appliesTo": "SlDateTimePicker",
417
+ "description": "Where the panel opens relative to the control. When it does not fit on that side, it opens on the other."
418
+ },
419
+ {
420
+ "name": "openTo",
421
+ "type": "'date' | 'time'",
422
+ "defaultValue": "date",
423
+ "appliesTo": "SlDateTimePicker",
424
+ "description": "The surface that takes focus when the trigger or openSurface() opens the panel. Both surfaces are drawn either way."
425
+ },
426
+ {
427
+ "name": "closeOnSelect",
428
+ "type": "'auto' | 'always' | 'never'",
429
+ "defaultValue": "auto",
430
+ "appliesTo": "SlDateTimePicker",
431
+ "description": "When a press closes the panel: auto on the press that completes the value, always on every press that changes the value, never on none."
432
+ },
433
+ {
434
+ "name": "disabled",
435
+ "type": "boolean",
436
+ "defaultValue": "the field’s",
437
+ "appliesTo": "SlDateTimePicker",
438
+ "description": "Disables the field and the trigger. Unset, it follows the form control, then the enclosing field."
439
+ },
440
+ {
441
+ "name": "readOnly",
442
+ "type": "boolean",
443
+ "defaultValue": "the field’s",
444
+ "appliesTo": "SlDateTimePicker",
445
+ "description": "Keeps the value focusable and legible, and disables the trigger. Unset, it follows the enclosing field."
446
+ },
447
+ {
448
+ "name": "invalid",
449
+ "type": "boolean",
450
+ "defaultValue": "the field’s",
451
+ "appliesTo": "SlDateTimePicker",
452
+ "description": "Marks the value invalid. A value outside the bounds or refused by a predicate is invalid whatever this says."
453
+ },
454
+ {
455
+ "name": "required",
456
+ "type": "boolean",
457
+ "defaultValue": "the field’s",
458
+ "appliesTo": "SlDateTimePicker",
459
+ "description": "Sets aria-required on the field. Unset, it follows the enclosing field. Validators.required checks the value in a form."
460
+ },
461
+ {
462
+ "name": "clearable",
463
+ "type": "boolean",
464
+ "defaultValue": "false",
465
+ "appliesTo": "SlDateTimePicker",
466
+ "description": "Adds a clear button to the field while it holds any part of a value. The button empties both halves."
467
+ },
468
+ {
469
+ "name": "relative",
470
+ "type": "boolean",
471
+ "defaultValue": "true",
472
+ "appliesTo": "SlDateTimePicker",
473
+ "description": "Whether +, - and = on a segment open a relative expression in the field, such as +2h."
474
+ },
475
+ {
476
+ "name": "name",
477
+ "type": "string",
478
+ "defaultValue": "—",
479
+ "appliesTo": "SlDateTimePicker",
480
+ "description": "Adds a hidden input with this name that submits the value as YYYY-MM-DDTHH:mm:ss."
481
+ },
482
+ {
483
+ "name": "messages",
484
+ "type": "Partial<DatetimePickerMessages>",
485
+ "defaultValue": "—",
486
+ "appliesTo": "SlDateTimePicker",
487
+ "description": "Replaces the words of the language in force, key by key: the trigger’s name with no value (choose) and with one (change, with the value in its {date} slot), the Now button (now), the sentence for a day with no time (empty), and the panel’s description when the list is cut at maxOptions (truncated)."
488
+ },
489
+ {
490
+ "name": "slDateTimePickerPresets",
491
+ "type": "directive",
492
+ "defaultValue": "—",
493
+ "appliesTo": "SlDateTimePickerPresets",
494
+ "description": "Marks your own element as the shortcuts row in the head, beside Now."
495
+ },
496
+ {
497
+ "name": "slDateTimePickerFooter",
498
+ "type": "directive",
499
+ "defaultValue": "—",
500
+ "appliesTo": "SlDateTimePickerFooter",
501
+ "description": "Marks your own element as the row of actions under both surfaces."
502
+ }
503
+ ],
504
+ "composition": [
505
+ {
506
+ "name": "provideDateTimePickerDefaults",
507
+ "type": "provider",
508
+ "defaultValue": "—",
509
+ "appliesTo": "application",
510
+ "description": "Sets timeZone, hourCycle, granularity, calendar, step, maxOptions, placement, openTo, closeOnSelect, unavailableOptions, size and variant once for every Datetime Picker under it. A value set on one Datetime Picker still wins."
511
+ },
512
+ {
513
+ "name": "slDateTimePickerOption",
514
+ "type": "ng-template",
515
+ "defaultValue": "—",
516
+ "appliesTo": "SlDateTimePickerOption",
517
+ "description": "Draws the content of one row of the list. The context carries the time as $implicit, plus date, label, selected, current and unavailable. The row keeps its role, states and keyboard."
518
+ },
519
+ {
520
+ "name": "exportAs",
521
+ "type": "slDateTimePicker",
522
+ "defaultValue": "—",
523
+ "appliesTo": "SlDateTimePicker",
524
+ "description": "Gives a template the instance: focus() moves focus to the first segment of the field, openSurface() opens the panel and moves focus into it, as the trigger does, and closeSurface() closes it."
525
+ },
526
+ {
527
+ "name": "ControlValueAccessor",
528
+ "type": "interface",
529
+ "defaultValue": "—",
530
+ "appliesTo": "SlDateTimePicker",
531
+ "description": "formControlName, formControl and ngModel bind the value. As a validator it reports slottedDateTimeRange outside min and max, slottedDateTimeWindow outside minTime and maxTime, slottedDateTimeUnavailable for a refused date or time, and slottedDateTimeIncomplete while only one half is typed. Validators.required covers an empty value."
532
+ },
533
+ {
534
+ "name": "(keydown)",
535
+ "type": "EventListener",
536
+ "defaultValue": "—",
537
+ "appliesTo": "SlDateTimePicker",
538
+ "description": "A listener on the host runs before the Datetime Picker handles keys on the control, the trigger and the list."
539
+ }
540
+ ],
541
+ "events": [
542
+ {
543
+ "name": "valueChange",
544
+ "payload": "DateTimeFieldChangeRequest | ChangeRequest<PlainDateTime | null>",
545
+ "when": "Before the value changes. reason is keyboard for typing, select for a press in the calendar, the list or Now, clear for the clear button and blur for a value completed when the field loses focus. When the field moved the value, the request also carries segments and incomplete, the half still missing. A value that does not change emits nothing."
546
+ },
547
+ {
548
+ "name": "openChange",
549
+ "payload": "ChangeRequest<boolean>",
550
+ "when": "Before the panel opens or closes. reason is pointer for the trigger, keyboard for Alt+ArrowDown and ArrowDown on the trigger, programmatic for openSurface() and closeSurface(), escape and outsidePress for a dismissal, and select for the press that closed it."
551
+ },
552
+ {
553
+ "name": "highlightedChange",
554
+ "payload": "ChangeRequest<DateTimePickerHighlight>",
555
+ "when": "When the reader moves through either surface: the day the calendar has focused and the time the list has highlighted, as one value. Moving the highlight never changes the value."
556
+ }
557
+ ],
558
+ "accessibility": [
559
+ "The panel has role=\"dialog\" and holds a role=\"grid\" and a role=\"listbox\", the arrangement the APG Date Picker Combobox example uses for its popup. The trigger has aria-haspopup=\"dialog\" and aria-expanded, and aria-controls only while the panel exists. Both surfaces are in the DOM at every width.",
560
+ "The trigger’s accessible name carries the chosen date and time in words, such as “Change date and time, September 30, 2026 at 9:00 AM”. Focus returns to the trigger when the panel closes from a press or from Escape, so a screen reader announces the value there. The listbox has its own accessible name, the day its times belong to.",
561
+ "Opening the panel from the trigger or from openSurface() moves focus into the surface openTo names: the focused day in the calendar, or the chosen or nearest time in the list. Alt+ArrowDown opens the panel and leaves focus in the field. While the panel is open, Tab and Shift+Tab cycle through the head, the calendar, the list and the footer; each surface is one Tab stop.",
562
+ "Moving the highlight through the list never changes the value; Enter, Space or a press does. Changing the value on every highlight would send one change per time the reader passes.",
563
+ "Escape closes in steps: an open relative expression in the field closes first, then the calendar returns from the month or year grid to the day grid, and then the panel closes and focus returns to the trigger.",
564
+ "Alt+ArrowDown is a shortcut, never the only way in. ChromeOS turns it into PageDown before the browser receives it, so the trigger is always drawn."
565
+ ]
566
+ }
567
+ },
568
+ "tokens": [
569
+ "--slotted-border-subtle",
570
+ "--slotted-border-width-thin",
571
+ "--slotted-control-border-color",
572
+ "--slotted-control-border-width",
573
+ "--slotted-control-font-size-sm",
574
+ "--slotted-control-height-lg",
575
+ "--slotted-control-height-md",
576
+ "--slotted-control-height-sm",
577
+ "--slotted-control-icon-size-lg",
578
+ "--slotted-control-icon-size-md",
579
+ "--slotted-control-icon-size-sm",
580
+ "--slotted-control-padding-inline-sm",
581
+ "--slotted-control-radius",
582
+ "--slotted-control-transition-duration",
583
+ "--slotted-control-transition-easing",
584
+ "--slotted-datetime-picker-content-border-color",
585
+ "--slotted-datetime-picker-content-color",
586
+ "--slotted-datetime-picker-content-padding",
587
+ "--slotted-datetime-picker-content-radius",
588
+ "--slotted-datetime-picker-content-shadow",
589
+ "--slotted-datetime-picker-invalid-focus-ring-color",
590
+ "--slotted-datetime-picker-label-color",
591
+ "--slotted-datetime-picker-list-block-size",
592
+ "--slotted-datetime-picker-now-active-background",
593
+ "--slotted-datetime-picker-now-background",
594
+ "--slotted-datetime-picker-now-border-color",
595
+ "--slotted-datetime-picker-now-color",
596
+ "--slotted-datetime-picker-now-hover-background",
597
+ "--slotted-datetime-picker-now-hover-border-color",
598
+ "--slotted-datetime-picker-now-icon-color",
599
+ "--slotted-datetime-picker-option-current-background",
600
+ "--slotted-datetime-picker-option-hover-background",
601
+ "--slotted-datetime-picker-option-radius",
602
+ "--slotted-datetime-picker-option-selected-background",
603
+ "--slotted-datetime-picker-option-selected-color",
604
+ "--slotted-datetime-picker-option-selected-hover-background",
605
+ "--slotted-datetime-picker-radius",
606
+ "--slotted-datetime-picker-sheet-inline-size",
607
+ "--slotted-datetime-picker-surface",
608
+ "--slotted-datetime-picker-time-panel-inline-size",
609
+ "--slotted-datetime-picker-trigger-active-background",
610
+ "--slotted-datetime-picker-trigger-color",
611
+ "--slotted-datetime-picker-trigger-hover-background",
612
+ "--slotted-datetime-picker-trigger-size",
613
+ "--slotted-disabled-foreground",
614
+ "--slotted-duration-medium",
615
+ "--slotted-duration-short",
616
+ "--slotted-easing-enter",
617
+ "--slotted-easing-exit",
618
+ "--slotted-focus-ring-color",
619
+ "--slotted-focus-ring-color-invalid",
620
+ "--slotted-focus-ring-offset",
621
+ "--slotted-focus-ring-width",
622
+ "--slotted-font-size-sm",
623
+ "--slotted-font-weight-medium",
624
+ "--slotted-radius-lg",
625
+ "--slotted-radius-sm",
626
+ "--slotted-shadow-md",
627
+ "--slotted-space-1",
628
+ "--slotted-space-2",
629
+ "--slotted-space-3",
630
+ "--slotted-space-4",
631
+ "--slotted-space-6",
632
+ "--slotted-space-9",
633
+ "--slotted-surface-raised",
634
+ "--slotted-target-comfortable",
635
+ "--slotted-target-min",
636
+ "--slotted-text",
637
+ "--slotted-text-muted",
638
+ "--slotted-tone-accent-border",
639
+ "--slotted-tone-accent-on-solid",
640
+ "--slotted-tone-accent-solid",
641
+ "--slotted-tone-accent-solid-hover",
642
+ "--slotted-tone-secondary-subtle-active",
643
+ "--slotted-tone-secondary-subtle-hover",
644
+ "--slotted-z-index-popover"
645
+ ],
646
+ "examples": [
647
+ {
648
+ "id": "playground",
649
+ "title": "Playground",
650
+ "note": "One Datetime Picker driven by the controls below the canvas. Open it: the calendar and the list are both in the panel, the head shows the value so far, and the panel closes on the press that completes the value.",
651
+ "language": "html",
652
+ "source": "<div slField>\n <label slFieldLabel>Pickup date and time</label>\n <div slDateTimePicker name=\"pickupAt\" [clearable]=\"true\"></div>\n <span slFieldDescription>The carrier collects at this date and time.</span>\n</div>\n",
653
+ "verdict": "excerpt"
654
+ },
655
+ {
656
+ "id": "panel",
657
+ "title": "Two surfaces in one dialog",
658
+ "note": "The panel holds a grid drawn by SlCalendar and a listbox drawn by the Datetime Picker. Both are in the DOM at every width; no tabs switch between them, so assistive technology reads the same structure on a wide and a narrow screen.",
659
+ "language": "html",
660
+ "source": "<div slDateTimePicker [defaultOpen]=\"true\"></div>\n",
661
+ "verdict": "excerpt"
662
+ },
663
+ {
664
+ "id": "open-to",
665
+ "title": "Which surface takes focus on open",
666
+ "note": "openTo decides where focus lands when the panel opens, not what the panel draws. Both surfaces are present either way, in the same order: the calendar, then the list.",
667
+ "language": "html",
668
+ "source": "<div slDateTimePicker openTo=\"time\"></div>\n",
669
+ "verdict": "excerpt"
670
+ },
671
+ {
672
+ "id": "completeness",
673
+ "title": "The value closes the panel, not a button",
674
+ "note": "With closeOnSelect=\"auto\", the press that completes the value closes the panel. A press on a value that was already whole changes one half and leaves the panel open, so the reader can change the day and then the time. always closes on every press that changes the value; never closes on none.",
675
+ "language": "html",
676
+ "source": "<div slDateTimePicker closeOnSelect=\"auto\"></div>\n<div slDateTimePicker closeOnSelect=\"always\"></div>\n<div slDateTimePicker closeOnSelect=\"never\"></div>\n",
677
+ "verdict": "excerpt"
678
+ },
679
+ {
680
+ "id": "seconds",
681
+ "title": "Seconds",
682
+ "note": "granularity=\"second\" writes seconds in the field, and a step of 30 offers a time every half minute. The list stops at maxOptions rows, so a step in seconds needs a window from minTime to maxTime to stay short.",
683
+ "language": "html",
684
+ "source": "<div slDateTimePicker granularity=\"second\" [step]=\"30\"></div>\n",
685
+ "verdict": "excerpt"
686
+ },
687
+ {
688
+ "id": "step",
689
+ "title": "The step, and where it counts from",
690
+ "note": "The list counts from min’s time when min is set and from midnight when it is not, the rule input[type=time] uses. A step of 900 from 09:07 offers 09:07, 09:22 and 09:37; the field still accepts 09:15 by typing.",
691
+ "language": "ts",
692
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-step',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Dock appointment</label>\n <div\n slDateTimePicker\n [maxTime]=\"lastStart\"\n [minTime]=\"firstStart\"\n [referenceDateTime]=\"reference\"\n [step]=\"1800\"\n ></div>\n <span slFieldDescription>Appointments start every 30 minutes from 7:15 AM.</span>\n </div>\n `,\n})\nexport class DateTimePickerStep {\n protected readonly firstStart = plainTime(7, 15);\n protected readonly lastStart = plainTime(16, 45);\n protected readonly reference = plainDateTime(plainDate(2026, 9, 30), plainTime(7, 15));\n}\n",
693
+ "verdict": "example"
694
+ },
695
+ {
696
+ "id": "range-bounds",
697
+ "title": "Two pairs of bounds together",
698
+ "note": "min and max bound the whole value; minTime and maxTime bound the times of every day inside the range. On the day of min the list starts at min’s time, on the day of max it stops at max’s time, and on every day between it runs from minTime to maxTime.",
699
+ "language": "html",
700
+ "source": "<div\n slDateTimePicker\n [min]=\"bookingOpens\"\n [max]=\"bookingCloses\"\n [minTime]=\"nine\"\n [maxTime]=\"six\"\n></div>\n",
701
+ "verdict": "excerpt"
702
+ },
703
+ {
704
+ "id": "day-window",
705
+ "title": "The list follows the day the reader is on",
706
+ "note": "Before a day is chosen, the list answers the day the calendar has focused. Moving through the month recomputes it, so a Saturday that closes early shows its shorter list, or the empty state, while the reader is still deciding.",
707
+ "language": "html",
708
+ "source": "<div slDateTimePicker [isTimeUnavailable]=\"closesEarlyOnSaturday\"></div>\n",
709
+ "verdict": "excerpt"
710
+ },
711
+ {
712
+ "id": "unavailable",
713
+ "title": "Refused times are disabled or hidden",
714
+ "note": "A refused time stays in the list, disabled, so the reader can still see the step. unavailableOptions=\"hide\" removes refused times instead. A day that offers no time shows the empty message.",
715
+ "language": "ts",
716
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport {\n dayOfWeek,\n plainDate,\n plainDateTime,\n plainTime,\n type PlainDate,\n type PlainTime,\n} from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-unavailable',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Warehouse inspection</label>\n <div\n slDateTimePicker\n [isDateUnavailable]=\"isWeekend\"\n [isTimeUnavailable]=\"isLunch\"\n [maxTime]=\"dayEnds\"\n [minTime]=\"dayStarts\"\n [referenceDateTime]=\"reference\"\n [step]=\"1800\"\n ></div>\n <span slFieldDescription>Weekdays from 8:00 AM to 5:00 PM, closed for lunch at noon.</span>\n </div>\n `,\n})\nexport class DateTimePickerUnavailable {\n protected readonly dayStarts = plainTime(8, 0);\n protected readonly dayEnds = plainTime(17, 0);\n protected readonly reference = plainDateTime(plainDate(2026, 9, 30), plainTime(9, 0));\n protected readonly isWeekend = (date: PlainDate) =>\n dayOfWeek(date) === 0 || dayOfWeek(date) === 6;\n protected readonly isLunch = (time: PlainTime) => time.hour === 12;\n}\n",
717
+ "verdict": "example"
718
+ },
719
+ {
720
+ "id": "now",
721
+ "title": "One press for the current date and time",
722
+ "note": "Now writes both halves from the clock in timeZone. It does the same as the relative expression 0 in the field, for a reader who does not know the expression. messages.now replaces its label.",
723
+ "language": "html",
724
+ "source": "<div slDateTimePicker [messages]=\"{ now: 'Right now' }\"></div>\n",
725
+ "verdict": "excerpt"
726
+ },
727
+ {
728
+ "id": "relative",
729
+ "title": "Typing with the panel open",
730
+ "note": "Alt+ArrowDown opens the panel and leaves focus in the field, so every key the segments take still works, including +, - and = for a relative expression. Escape closes the expression first and leaves the panel open.",
731
+ "language": "html",
732
+ "source": "<div slDateTimePicker [defaultOpen]=\"true\" [referenceDateTime]=\"reference\"></div>\n",
733
+ "verdict": "excerpt"
734
+ },
735
+ {
736
+ "id": "presets",
737
+ "title": "Your own shortcuts",
738
+ "note": "An element with slDateTimePickerPresets adds a row in the head beside Now. The row wraps inside the panel’s width instead of widening it.",
739
+ "language": "html",
740
+ "source": "<div slDateTimePicker>\n <div slDateTimePickerPresets>\n <button slButton size=\"sm\" variant=\"ghost\" type=\"button\" (click)=\"tomorrowAtNine()\">\n Tomorrow, 9:00 AM\n </button>\n <button slButton size=\"sm\" variant=\"ghost\" type=\"button\" (click)=\"mondayAtTwo()\">\n Monday, 2:00 PM\n </button>\n </div>\n</div>\n",
741
+ "verdict": "excerpt"
742
+ },
743
+ {
744
+ "id": "sizes",
745
+ "title": "Size",
746
+ "note": "The three steps of the control scale. Inside a field, an unset size follows the field. The rows of the list follow the same scale.",
747
+ "language": "ts",
748
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-sizes',\n imports: [SlDateTimePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Created after</label>\n <div slDateTimePicker size=\"sm\" [defaultValue]=\"created\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Pickup</label>\n <div slDateTimePicker size=\"md\" [defaultValue]=\"pickup\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Store opening</label>\n <div slDateTimePicker size=\"lg\" [defaultValue]=\"opening\"></div>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerSizes {\n protected readonly created = plainDateTime(plainDate(2026, 9, 1), plainTime(0, 0));\n protected readonly pickup = plainDateTime(plainDate(2026, 9, 30), plainTime(9, 0));\n protected readonly opening = plainDateTime(plainDate(2026, 11, 2), plainTime(10, 0));\n}\n",
749
+ "verdict": "example"
750
+ },
751
+ {
752
+ "id": "variants",
753
+ "title": "Variant",
754
+ "note": "The frame is the datetime field’s, the same frame every field in a form draws. plain draws no frame at rest, for a table cell or a toolbar, and still shows hover and focus.",
755
+ "language": "ts",
756
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-variants',\n imports: [SlDateTimePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Pickup</label>\n <div slDateTimePicker variant=\"outline\" [defaultValue]=\"pickup\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Loading starts</label>\n <div slDateTimePicker variant=\"subtle\" [defaultValue]=\"pickup\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Gate opens</label>\n <div slDateTimePicker variant=\"plain\" [defaultValue]=\"pickup\"></div>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerVariants {\n protected readonly pickup = plainDateTime(plainDate(2026, 9, 30), plainTime(9, 0));\n}\n",
757
+ "verdict": "example"
758
+ },
759
+ {
760
+ "id": "placement",
761
+ "title": "Placement",
762
+ "note": "Where the panel opens relative to the control. It is a preference: when the panel does not fit on that side, the positioner opens it on the other, and data-placement says which side it chose.",
763
+ "language": "html",
764
+ "source": "<div slDateTimePicker placement=\"top-start\"></div>\n",
765
+ "verdict": "excerpt"
766
+ },
767
+ {
768
+ "id": "states",
769
+ "title": "States",
770
+ "note": "Read-only stays focusable and legible. Disabled takes no key and no press, and its trigger is a disabled button. Invalid draws the frame and the focus ring in the danger tone. In the list, the chosen time outranks the highlighted time, which outranks hover.",
771
+ "language": "ts",
772
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-states',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldError, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField invalid required>\n <label slFieldLabel>Pickup</label>\n <div slDateTimePicker [defaultValue]=\"early\"></div>\n <span slFieldError\n >The pickup is before the order was placed, September 30 at 9:00 AM.</span\n >\n </div>\n <div slField readOnly>\n <label slFieldLabel>Order placed</label>\n <div slDateTimePicker [defaultValue]=\"placed\"></div>\n <span slFieldDescription>Set when the order was placed.</span>\n </div>\n <div slField disabled>\n <label slFieldLabel>Delivered</label>\n <div slDateTimePicker></div>\n <span slFieldDescription>Filled in by the carrier on delivery.</span>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerStates {\n protected readonly early = plainDateTime(plainDate(2026, 9, 29), plainTime(16, 0));\n protected readonly placed = plainDateTime(plainDate(2026, 9, 30), plainTime(9, 0));\n}\n",
773
+ "verdict": "example"
774
+ },
775
+ {
776
+ "id": "forms",
777
+ "title": "In a form",
778
+ "note": "The Datetime Picker is a form control: formControlName, formControl and ngModel bind the value, and name adds a hidden input that submits it as YYYY-MM-DDTHH:mm:ss. The field around it supplies the label, the description and the error, and passes its size, disabled state and validity to the Datetime Picker unless it sets its own.",
779
+ "language": "html",
780
+ "source": "<form [formGroup]=\"form\">\n <div slField>\n <label slFieldLabel>Pickup date and time</label>\n <div slDateTimePicker formControlName=\"pickupAt\"></div>\n <span slFieldDescription>The dock is open from 9:00 AM to 6:00 PM.</span>\n </div>\n</form>\n",
781
+ "verdict": "excerpt"
782
+ },
783
+ {
784
+ "id": "narrow",
785
+ "title": "Narrow",
786
+ "note": "With too little room for both surfaces, the list wraps under the calendar, in the value’s own order. Nothing is hidden and no switch is drawn.",
787
+ "language": "ts",
788
+ "source": "import { Component, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateTimePicker, SlDateTimePickerPresets } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport {\n addDays,\n plainDate,\n plainDateTime,\n plainTime,\n type PlainDateTime,\n} from '@slotted/core/date';\n\nconst TODAY = plainDate(2026, 9, 30);\n\n@Component({\n selector: 'app-datetime-picker-narrow',\n imports: [SlButton, SlDateTimePicker, SlDateTimePickerPresets, SlField, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Delivery appointment</label>\n <div\n slDateTimePicker\n #picker=\"slDateTimePicker\"\n [referenceDateTime]=\"reference\"\n [step]=\"1800\"\n [value]=\"delivery()\"\n (valueChange)=\"delivery.set($event.value)\"\n >\n <div slDateTimePickerPresets>\n <button\n slButton\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n (click)=\"delivery.set(todayAtFive); picker.closeSurface()\"\n >\n Today, 5:00 PM\n </button>\n <button\n slButton\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n (click)=\"delivery.set(tomorrowAtNine); picker.closeSurface()\"\n >\n Tomorrow, 9:00 AM\n </button>\n </div>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerNarrow {\n protected readonly reference = plainDateTime(TODAY, plainTime(9, 0));\n protected readonly todayAtFive = plainDateTime(TODAY, plainTime(17, 0));\n protected readonly tomorrowAtNine = plainDateTime(addDays(TODAY, 1), plainTime(9, 0));\n protected readonly delivery = signal<PlainDateTime | null>(null);\n}\n",
789
+ "verdict": "example"
790
+ },
791
+ {
792
+ "id": "composition",
793
+ "title": "Composition",
794
+ "note": "provideDateTimePickerDefaults sets the step and the clock once; provideSlotted sets the language and the words; an ng-template with slDateTimePickerOption draws the content of one row; slDateTimePickerFooter takes your actions; and exportAs reaches focus(), openSurface() and closeSurface(). A value set on one Datetime Picker still wins over the provider.",
795
+ "language": "html",
796
+ "source": "<div slDateTimePicker>\n <ng-template slDateTimePickerOption let-time let-label=\"label\">\n <span>{{ label }}</span>\n <span>{{ seatsLeft(time) }} seats left</span>\n </ng-template>\n</div>\n",
797
+ "verdict": "excerpt"
798
+ },
799
+ {
800
+ "id": "keyboard",
801
+ "title": "Keyboard",
802
+ "note": "Alt+ArrowDown opens the panel from a segment and leaves focus in the field. ArrowDown on the trigger opens it and moves focus into the surface openTo names. In the list: the arrow keys, Home, End, type-ahead, and PageUp and PageDown to the previous or next hour. Tab stays inside the panel while it is open, and each surface is one Tab stop.",
803
+ "language": "ts",
804
+ "source": "import { Component, signal } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\nimport type { ChangeRequest } from '@slotted/core/state';\n\n@Component({\n selector: 'app-datetime-picker-keyboard',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Dispatch</label>\n <div\n slDateTimePicker\n [defaultValue]=\"dispatch\"\n [messages]=\"messages\"\n (openChange)=\"record($event)\"\n ></div>\n <span slFieldDescription>{{ last() }}</span>\n </div>\n `,\n})\nexport class DateTimePickerKeyboard {\n protected readonly dispatch = plainDateTime(plainDate(2026, 9, 30), plainTime(16, 30));\n protected readonly messages = {\n choose: 'Choose dispatch time',\n change: 'Change dispatch time, {date}',\n };\n protected readonly last = signal('Focus the field and press Alt+ArrowDown.');\n\n protected record(request: ChangeRequest<boolean>): void {\n this.last.set(`${request.value ? 'Opened' : 'Closed'} by ${request.reason}.`);\n }\n}\n",
805
+ "verdict": "example"
806
+ },
807
+ {
808
+ "id": "basic",
809
+ "title": "basic.ts",
810
+ "note": null,
811
+ "language": "ts",
812
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-basic',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Pickup date and time</label>\n <div slDateTimePicker name=\"pickupAt\" [referenceDateTime]=\"firstPickup\"></div>\n <span slFieldDescription>\n Type the date and time, or choose them from the calendar and the list.\n </span>\n </div>\n `,\n})\nexport class DateTimePickerBasic {\n protected readonly firstPickup = plainDateTime(plainDate(2026, 9, 30), plainTime(9, 0));\n}\n",
813
+ "verdict": "example"
814
+ },
815
+ {
816
+ "id": "bounds",
817
+ "title": "bounds.ts",
818
+ "note": null,
819
+ "language": "ts",
820
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-bounds',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Container collection</label>\n <div\n slDateTimePicker\n [defaultValue]=\"opens\"\n [max]=\"closes\"\n [maxTime]=\"dayEnds\"\n [min]=\"opens\"\n [minTime]=\"dayStarts\"\n [step]=\"3600\"\n ></div>\n <span slFieldDescription>\n From October 1 at 1:00 PM to October 9 at 12:00 PM, between 8:00 AM and 5:00 PM.\n </span>\n </div>\n `,\n})\nexport class DateTimePickerBounds {\n protected readonly opens = plainDateTime(plainDate(2026, 10, 1), plainTime(13, 0));\n protected readonly closes = plainDateTime(plainDate(2026, 10, 9), plainTime(12, 0));\n protected readonly dayStarts = plainTime(8, 0);\n protected readonly dayEnds = plainTime(17, 0);\n}\n",
821
+ "verdict": "example"
822
+ },
823
+ {
824
+ "id": "carrier-pickup",
825
+ "title": "carrier-pickup.ts",
826
+ "note": null,
827
+ "language": "ts",
828
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport {\n SlDateTimePicker,\n SlDateTimePickerFooter,\n SlDateTimePickerOption,\n} from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlText } from '@slotted/angular/typography';\nimport {\n createDateTimeFormat,\n dayOfWeek,\n plainDate,\n plainDateTime,\n plainTime,\n toISODate,\n toISOTime,\n type PlainDate,\n type PlainDateTime,\n type PlainTime,\n} from '@slotted/core/date';\n\nconst TRUCKS_PER_WINDOW = 3;\n/** Pickups already booked, by date and window. */\nconst BOOKED: Record<string, number> = {\n '2026-10-01T08:00:00': 3,\n '2026-10-01T10:30:00': 2,\n '2026-10-02T13:00:00': 3,\n '2026-10-02T15:30:00': 1,\n};\nconst words = createDateTimeFormat({ locale: 'en-US' });\n\nconst trucksLeft = (time: PlainTime, date: PlainDate) =>\n TRUCKS_PER_WINDOW - (BOOKED[`${toISODate(date)}T${toISOTime(time)}`] ?? 0);\n\n@Component({\n selector: 'app-datetime-picker-carrier-pickup',\n imports: [\n SlButton,\n SlDateTimePicker,\n SlDateTimePickerFooter,\n SlDateTimePickerOption,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlText,\n ],\n template: `\n <div slField required>\n <label slFieldLabel>Carrier pickup slot</label>\n <div\n slDateTimePicker\n #picker=\"slDateTimePicker\"\n closeOnSelect=\"never\"\n [isDateUnavailable]=\"isWeekend\"\n [isTimeUnavailable]=\"isFull\"\n [min]=\"earliest\"\n [options]=\"windows\"\n [referenceDateTime]=\"reference\"\n [value]=\"pickup()\"\n (valueChange)=\"pickup.set($event.value)\"\n >\n <ng-template\n slDateTimePickerOption\n let-time\n let-date=\"date\"\n let-label=\"label\"\n let-unavailable=\"unavailable\"\n >\n <span>{{ label }}</span>\n <span slText size=\"sm\" tone=\"muted\">{{ capacity(time, date, unavailable) }}</span>\n </ng-template>\n <div slDateTimePickerFooter>\n <button slButton size=\"sm\" type=\"button\" (click)=\"picker.closeSurface()\">Done</button>\n </div>\n </div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n `,\n})\nexport class DateTimePickerCarrierPickup {\n /** The windows Harbor Freightways collects in, every weekday. */\n protected readonly windows = [\n plainTime(8, 0),\n plainTime(10, 30),\n plainTime(13, 0),\n plainTime(15, 30),\n ];\n protected readonly earliest = plainDateTime(plainDate(2026, 10, 1), plainTime(8, 0));\n protected readonly reference = plainDateTime(plainDate(2026, 10, 1), plainTime(10, 30));\n protected readonly pickup = signal<PlainDateTime | null>(null);\n protected readonly summary = computed(() => {\n const pickup = this.pickup();\n return pickup === null\n ? 'Harbor Freightways collects on weekdays, in four windows.'\n : `Harbor Freightways collects on ${words.describe(pickup)}.`;\n });\n\n protected readonly isWeekend = (date: PlainDate) =>\n dayOfWeek(date) === 0 || dayOfWeek(date) === 6;\n protected readonly isFull = (time: PlainTime, date: PlainDate) => trucksLeft(time, date) === 0;\n\n protected capacity(time: PlainTime, date: PlainDate, unavailable: boolean): string {\n return unavailable ? 'Full' : `${trucksLeft(time, date)} of ${TRUCKS_PER_WINDOW} trucks left`;\n }\n}\n",
829
+ "verdict": "example"
830
+ },
831
+ {
832
+ "id": "clearable",
833
+ "title": "clearable.ts",
834
+ "note": null,
835
+ "language": "ts",
836
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-clearable',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Hold shipment until</label>\n <div slDateTimePicker clearable [defaultValue]=\"holdUntil\"></div>\n <span slFieldDescription>Clear the date and time to release the shipment.</span>\n </div>\n `,\n})\nexport class DateTimePickerClearable {\n protected readonly holdUntil = plainDateTime(plainDate(2026, 10, 9), plainTime(17, 0));\n}\n",
837
+ "verdict": "example"
838
+ },
839
+ {
840
+ "id": "controlled",
841
+ "title": "controlled.ts",
842
+ "note": null,
843
+ "language": "ts",
844
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\nimport {\n addDays,\n createDateTimeFormat,\n plainDate,\n plainDateTime,\n plainTime,\n type PlainDateTime,\n} from '@slotted/core/date';\n\nconst TODAY = plainDate(2026, 9, 30);\nconst words = createDateTimeFormat({ locale: 'en-US' });\n\n@Component({\n selector: 'app-datetime-picker-controlled',\n imports: [\n SlButton,\n SlDateTimePicker,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlInline,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Call Harbor Freightways</label>\n <div slDateTimePicker [value]=\"call()\" (valueChange)=\"call.set($event.value)\"></div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n <div slInline [gap]=\"2\">\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n type=\"button\"\n variant=\"outline\"\n (click)=\"schedule(1, 9)\"\n >\n Tomorrow, 9:00 AM\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n type=\"button\"\n variant=\"outline\"\n (click)=\"schedule(2, 14)\"\n >\n Friday, 2:00 PM\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n type=\"button\"\n variant=\"ghost\"\n (click)=\"call.set(null)\"\n >\n No call\n </button>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerControlled {\n protected readonly call = signal<PlainDateTime | null>(\n plainDateTime(addDays(TODAY, 1), plainTime(9, 0)),\n );\n protected readonly summary = computed(() => {\n const call = this.call();\n return call === null ? 'No call scheduled.' : `Call on ${words.describe(call)}.`;\n });\n\n protected schedule(days: number, hour: number): void {\n this.call.set(plainDateTime(addDays(TODAY, days), plainTime(hour, 0)));\n }\n}\n",
845
+ "verdict": "example"
846
+ },
847
+ {
848
+ "id": "footer",
849
+ "title": "footer.ts",
850
+ "note": null,
851
+ "language": "ts",
852
+ "source": "import { Component } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateTimePicker, SlDateTimePickerFooter } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-footer',\n imports: [\n SlButton,\n SlDateTimePicker,\n SlDateTimePickerFooter,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n ],\n template: `\n <div slField>\n <label slFieldLabel>Maintenance window starts</label>\n <div\n slDateTimePicker\n #picker=\"slDateTimePicker\"\n closeOnSelect=\"never\"\n [defaultValue]=\"start\"\n [step]=\"3600\"\n >\n <div slDateTimePickerFooter>\n <button slButton size=\"sm\" type=\"button\" (click)=\"picker.closeSurface()\">Done</button>\n </div>\n </div>\n <span slFieldDescription>Conveyors stop for four hours from this time.</span>\n </div>\n `,\n})\nexport class DateTimePickerFooter {\n protected readonly start = plainDateTime(plainDate(2026, 10, 3), plainTime(22, 0));\n}\n",
853
+ "verdict": "example"
854
+ },
855
+ {
856
+ "id": "form",
857
+ "title": "form.ts",
858
+ "note": null,
859
+ "language": "ts",
860
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlText } from '@slotted/angular/typography';\nimport {\n plainDate,\n plainDateTime,\n plainTime,\n toISODateTime,\n type PlainDateTime,\n} from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-form',\n imports: [\n ReactiveFormsModule,\n SlButton,\n SlDateTimePicker,\n SlField,\n SlFieldError,\n SlFieldLabel,\n SlInline,\n SlStack,\n SlText,\n ],\n template: `\n <form novalidate [formGroup]=\"form\" (ngSubmit)=\"submit()\" (reset)=\"clear()\">\n <div slStack [gap]=\"5\">\n <div slField required [invalid]=\"error() === '' ? undefined : true\">\n <label slFieldLabel>Pickup date and time</label>\n <div\n slDateTimePicker\n formControlName=\"pickupAt\"\n name=\"pickupAt\"\n [min]=\"earliest\"\n [referenceDateTime]=\"earliest\"\n ></div>\n <span slFieldError live=\"polite\" reserve>{{ error() }}</span>\n </div>\n <div slInline align=\"center\" [gap]=\"3\">\n <button slButton type=\"submit\">Book pickup</button>\n <button slButton tone=\"secondary\" type=\"reset\" variant=\"outline\">Reset</button>\n @if (saved(); as message) {\n <span slText size=\"sm\" tone=\"muted\">{{ message }}</span>\n }\n </div>\n </div>\n </form>\n `,\n})\nexport class DateTimePickerForm {\n protected readonly earliest = plainDateTime(plainDate(2026, 10, 1), plainTime(8, 0));\n protected readonly form = new FormGroup({\n pickupAt: new FormControl<PlainDateTime | null>(null, Validators.required),\n });\n private readonly value = toSignal(this.form.controls.pickupAt.valueChanges, {\n initialValue: this.form.controls.pickupAt.value,\n });\n private readonly submitted = signal(false);\n protected readonly saved = signal<string | null>(null);\n protected readonly error = computed(() => {\n this.value();\n const control = this.form.controls.pickupAt;\n if (control.hasError('slottedDateTimeRange')) {\n return 'Choose October 1, 2026 at 8:00 AM or later.';\n }\n if (this.submitted() && control.hasError('required')) return 'Choose a pickup date and time.';\n return '';\n });\n\n protected submit(): void {\n this.submitted.set(true);\n const pickup = this.form.controls.pickupAt.value;\n this.saved.set(\n this.form.valid && pickup !== null ? `Pickup booked for ${toISODateTime(pickup)}.` : null,\n );\n }\n\n protected clear(): void {\n this.submitted.set(false);\n this.saved.set(null);\n }\n}\n",
861
+ "verdict": "example"
862
+ },
863
+ {
864
+ "id": "granularity",
865
+ "title": "granularity.ts",
866
+ "note": null,
867
+ "language": "ts",
868
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-granularity',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Shift starts</label>\n <div slDateTimePicker granularity=\"hour\" [defaultValue]=\"shift\" [step]=\"3600\"></div>\n <span slFieldDescription>Shifts start on the hour.</span>\n </div>\n <div slField>\n <label slFieldLabel>Batch run starts</label>\n <div\n slDateTimePicker\n granularity=\"second\"\n [defaultValue]=\"batch\"\n [maxTime]=\"windowEnd\"\n [minTime]=\"windowStart\"\n [step]=\"30\"\n ></div>\n <span slFieldDescription>The nightly run starts between 2:00:00 and 2:05:00 AM.</span>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerGranularity {\n protected readonly shift = plainDateTime(plainDate(2026, 10, 1), plainTime(6, 0));\n protected readonly batch = plainDateTime(plainDate(2026, 9, 30), plainTime(2, 0, 30));\n protected readonly windowStart = plainTime(2, 0);\n protected readonly windowEnd = plainTime(2, 5);\n}\n",
869
+ "verdict": "example"
870
+ },
871
+ {
872
+ "id": "hour-cycle",
873
+ "title": "hour-cycle.ts",
874
+ "note": null,
875
+ "language": "ts",
876
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-hour-cycle',\n imports: [SlDateTimePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Departure, 12-hour clock</label>\n <div slDateTimePicker [defaultValue]=\"departure\" [hourCycle]=\"12\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Departure, 24-hour clock</label>\n <div slDateTimePicker [defaultValue]=\"departure\" [hourCycle]=\"24\"></div>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerHourCycle {\n protected readonly departure = plainDateTime(plainDate(2026, 9, 30), plainTime(18, 45));\n}\n",
877
+ "verdict": "example"
878
+ },
879
+ {
880
+ "id": "locale",
881
+ "title": "locale.ts",
882
+ "note": null,
883
+ "language": "ts",
884
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-locale',\n imports: [SlDateTimePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Pickup, United States (en-US)</label>\n <div slDateTimePicker locale=\"en-US\" [defaultValue]=\"pickup\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Pickup, United Kingdom (en-GB)</label>\n <div slDateTimePicker locale=\"en-GB\" [defaultValue]=\"pickup\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Pickup, Germany (de-DE)</label>\n <div slDateTimePicker locale=\"de-DE\" [defaultValue]=\"pickup\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Pickup, Japan (ja-JP)</label>\n <div slDateTimePicker locale=\"ja-JP\" [defaultValue]=\"pickup\"></div>\n </div>\n </div>\n `,\n})\nexport class DateTimePickerLocale {\n protected readonly pickup = plainDateTime(plainDate(2026, 9, 30), plainTime(14, 30));\n}\n",
885
+ "verdict": "example"
886
+ },
887
+ {
888
+ "id": "options",
889
+ "title": "options.ts",
890
+ "note": null,
891
+ "language": "ts",
892
+ "source": "import { Component } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, plainDateTime, plainTime } from '@slotted/core/date';\n\n@Component({\n selector: 'app-datetime-picker-options',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Line-haul departure</label>\n <div slDateTimePicker [options]=\"departures\" [referenceDateTime]=\"reference\"></div>\n <span slFieldDescription>The Chicago to Memphis trailer leaves five times a day.</span>\n </div>\n `,\n})\nexport class DateTimePickerOptions {\n protected readonly departures = [\n plainTime(5, 40),\n plainTime(8, 15),\n plainTime(11, 50),\n plainTime(16, 5),\n plainTime(21, 30),\n ];\n protected readonly reference = plainDateTime(plainDate(2026, 9, 30), plainTime(8, 15));\n}\n",
893
+ "verdict": "example"
894
+ },
895
+ {
896
+ "id": "publish-at",
897
+ "title": "publish-at.ts",
898
+ "note": null,
899
+ "language": "ts",
900
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateTimePicker, SlDateTimePickerPresets } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport {\n addDays,\n createDateTimeFormat,\n dayOfWeek,\n plainDate,\n plainDateTime,\n plainTime,\n type PlainDateTime,\n} from '@slotted/core/date';\n\nconst NOW = plainDateTime(plainDate(2026, 9, 30), plainTime(9, 0));\nconst TOMORROW = plainDateTime(addDays(NOW.date, 1), plainTime(9, 0));\nconst NEXT_MONDAY = plainDateTime(\n addDays(NOW.date, (8 - dayOfWeek(NOW.date)) % 7 || 7),\n plainTime(9, 0),\n);\nconst words = createDateTimeFormat({ locale: 'en-US' });\n\n@Component({\n selector: 'app-datetime-picker-publish-at',\n imports: [\n SlButton,\n SlDateTimePicker,\n SlDateTimePickerPresets,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n ],\n template: `\n <div slField required>\n <label slFieldLabel>Publish the autumn price list at</label>\n <div\n slDateTimePicker\n #picker=\"slDateTimePicker\"\n timeZone=\"America/New_York\"\n [min]=\"now\"\n [referenceDateTime]=\"now\"\n [value]=\"publishAt()\"\n (valueChange)=\"publishAt.set($event.value)\"\n >\n <div slDateTimePickerPresets>\n <button\n slButton\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n (click)=\"publishAt.set(tomorrow); picker.closeSurface()\"\n >\n Tomorrow, 9:00 AM\n </button>\n <button\n slButton\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n (click)=\"publishAt.set(nextMonday); picker.closeSurface()\"\n >\n Monday, 9:00 AM\n </button>\n </div>\n </div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n `,\n})\nexport class DateTimePickerPublishAt {\n protected readonly now = NOW;\n protected readonly tomorrow = TOMORROW;\n protected readonly nextMonday = NEXT_MONDAY;\n protected readonly publishAt = signal<PlainDateTime | null>(TOMORROW);\n protected readonly summary = computed(() => {\n const publishAt = this.publishAt();\n return publishAt === null\n ? 'Choose when the new prices go live, New York time.'\n : `Prices go live on ${words.describe(publishAt)}, New York time.`;\n });\n}\n",
901
+ "verdict": "example"
902
+ },
903
+ {
904
+ "id": "reference",
905
+ "title": "reference.ts",
906
+ "note": null,
907
+ "language": "ts",
908
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport {\n createDateTimeFormat,\n plainDate,\n plainDateTime,\n plainTime,\n type PlainDateTime,\n} from '@slotted/core/date';\n\nconst words = createDateTimeFormat({ locale: 'en-US' });\n\n@Component({\n selector: 'app-datetime-picker-reference',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Courier collection</label>\n <div\n slDateTimePicker\n [referenceDateTime]=\"endOfShift\"\n [value]=\"collection()\"\n (valueChange)=\"collection.set($event.value)\"\n ></div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n `,\n})\nexport class DateTimePickerReference {\n protected readonly endOfShift = plainDateTime(plainDate(2026, 10, 1), plainTime(15, 0));\n protected readonly collection = signal<PlainDateTime | null>(null);\n protected readonly summary = computed(() => {\n const collection = this.collection();\n return collection === null\n ? 'A day chosen in the calendar opens the time list on 3:00 PM.'\n : `Collection on ${words.describe(collection)}.`;\n });\n}\n",
909
+ "verdict": "example"
910
+ },
911
+ {
912
+ "id": "time-zones",
913
+ "title": "time-zones.ts",
914
+ "note": null,
915
+ "language": "ts",
916
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { SlText } from '@slotted/angular/typography';\nimport { toISODateTime, wallClockIn, type PlainDateTime } from '@slotted/core/date';\n\n/** The pickup as the server stores it: an instant, 7:00 PM UTC on September 30, 2026. */\nconst STORED = Date.UTC(2026, 8, 30, 19, 0);\n\n@Component({\n selector: 'app-datetime-picker-time-zones',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel, SlStack, SlText],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Pickup, Chicago terminal</label>\n <div\n slDateTimePicker\n timeZone=\"America/Chicago\"\n [value]=\"pickup()\"\n (valueChange)=\"pickup.set($event.value)\"\n ></div>\n <span slFieldDescription>Today and Now follow the clock in Chicago.</span>\n </div>\n <span slText size=\"sm\" tone=\"muted\">{{ readout() }}</span>\n </div>\n `,\n})\nexport class DateTimePickerTimeZones {\n protected readonly pickup = signal<PlainDateTime | null>(wallClockIn(STORED, 'America/Chicago'));\n protected readonly readout = computed(() => {\n const pickup = this.pickup();\n return pickup === null ? 'Value: null' : `Value: ${toISODateTime(pickup)}, with no offset`;\n });\n}\n",
917
+ "verdict": "example"
918
+ },
919
+ {
920
+ "id": "typing",
921
+ "title": "typing.ts",
922
+ "note": null,
923
+ "language": "ts",
924
+ "source": "import { Component, signal } from '@angular/core';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport {\n plainDate,\n plainDateTime,\n plainTime,\n toISODateTime,\n type PlainDateTime,\n} from '@slotted/core/date';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nconst REASONS: Record<string, string> = {\n keyboard: 'from the keyboard',\n select: 'chosen in the panel',\n clear: 'cleared',\n blur: 'completed when the field lost focus',\n};\n\n@Component({\n selector: 'app-datetime-picker-typing',\n imports: [SlDateTimePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Goods received at</label>\n <div\n slDateTimePicker\n [defaultValue]=\"received\"\n [referenceDateTime]=\"received\"\n (valueChange)=\"record($event)\"\n ></div>\n <span slFieldDescription>{{ change() }}</span>\n </div>\n `,\n})\nexport class DateTimePickerTyping {\n protected readonly received = plainDateTime(plainDate(2026, 9, 30), plainTime(14, 30));\n protected readonly change = signal('No change yet.');\n\n protected record(request: ChangeRequest<PlainDateTime | null>): void {\n const text = request.value === null ? 'empty' : toISODateTime(request.value);\n this.change.set(`${text}, ${REASONS[request.reason] ?? request.reason}.`);\n }\n}\n",
925
+ "verdict": "example"
926
+ }
927
+ ]
928
+ }