@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,903 @@
1
+ {
2
+ "family": "date-range-picker",
3
+ "ui": "date-range-picker",
4
+ "binding": "angular",
5
+ "catalog": {
6
+ "group": "Forms",
7
+ "summary": "Start and end dates with a calendar 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
+ "closeOnSelect": [
29
+ "auto",
30
+ "always",
31
+ "never"
32
+ ],
33
+ "count": [
34
+ "days",
35
+ "nights"
36
+ ],
37
+ "position": [
38
+ "start",
39
+ "end"
40
+ ],
41
+ "calendar": [
42
+ "gregory"
43
+ ]
44
+ },
45
+ "members": {
46
+ "dateRangePicker": {
47
+ "nativeElement": "div",
48
+ "defaults": {
49
+ "size": "md",
50
+ "variant": "outline",
51
+ "placement": "bottom-start",
52
+ "closeOnSelect": "auto",
53
+ "count": "days",
54
+ "months": 2,
55
+ "contiguous": true,
56
+ "calendar": "gregory",
57
+ "clearable": false
58
+ },
59
+ "capabilities": [
60
+ "value",
61
+ "open",
62
+ "current",
63
+ "placement",
64
+ "appearance",
65
+ "size",
66
+ "content",
67
+ "disabled",
68
+ "invalid",
69
+ "required",
70
+ "readOnly",
71
+ "wiring"
72
+ ],
73
+ "states": [
74
+ "default",
75
+ "hover",
76
+ "active",
77
+ "focus-visible",
78
+ "disabled",
79
+ "invalid",
80
+ "readonly",
81
+ "required",
82
+ "open",
83
+ "current",
84
+ "selected"
85
+ ],
86
+ "parts": [
87
+ "root",
88
+ "control",
89
+ "start",
90
+ "separator",
91
+ "end",
92
+ "clear",
93
+ "trigger",
94
+ "positioner",
95
+ "content",
96
+ "head",
97
+ "head-start",
98
+ "head-end",
99
+ "length",
100
+ "limit",
101
+ "panels",
102
+ "presets",
103
+ "preset",
104
+ "footer"
105
+ ]
106
+ }
107
+ },
108
+ "docs": {
109
+ "dateRangePicker": {
110
+ "imports": {
111
+ "source": "import { SlDateRangePicker, SlDateRangePickerPreset, SlDateRangePickerPresets, SlDateRangePickerFooter, provideDateRangePickerDefaults } from '@slotted/angular/date-range-picker';",
112
+ "selector": "[slDateRangePicker]",
113
+ "exportAs": "slDateRangePicker"
114
+ },
115
+ "anatomy": [
116
+ {
117
+ "part": "root",
118
+ "element": "your own element",
119
+ "required": true,
120
+ "purpose": "The outer box, carrying data-ui=\"date-range-picker\", the size, variant and calendar axes, data-count, data-open and the state attributes. You write this element, so its classes, attributes and other directives stay yours."
121
+ },
122
+ {
123
+ "part": "control",
124
+ "element": "div",
125
+ "required": true,
126
+ "purpose": "The frame around both fields, and the box the calendar is positioned against. It draws the one border, focus ring and invalid state; the two date fields inside it use variant=\"plain\" and draw none. Inside a field, it is a group named by the field’s label and takes the field’s control identifier."
127
+ },
128
+ {
129
+ "part": "start",
130
+ "element": "div",
131
+ "required": true,
132
+ "purpose": "Holds the start date field. Carries data-current while the start is the end being edited, drawn as an underline while the calendar is open or focus is inside the frame."
133
+ },
134
+ {
135
+ "part": "separator",
136
+ "element": "span",
137
+ "required": true,
138
+ "purpose": "The dash between the two fields. It is aria-hidden, because each field has its own name."
139
+ },
140
+ {
141
+ "part": "end",
142
+ "element": "div",
143
+ "required": true,
144
+ "purpose": "Holds the end date field, and carries data-current while the end is being edited."
145
+ },
146
+ {
147
+ "part": "clear",
148
+ "element": "button",
149
+ "required": false,
150
+ "purpose": "Empties both ends with the clear reason, drawn with clearable while either end holds a date. It is the only clear button in the frame: the two fields draw none of their own."
151
+ },
152
+ {
153
+ "part": "trigger",
154
+ "element": "button",
155
+ "required": true,
156
+ "purpose": "The calendar button. Its accessible name carries both dates in words and the length, because focus returns to it when the calendar closes. It is always drawn, because ChromeOS turns Alt+ArrowDown into PageDown before the browser receives it."
157
+ },
158
+ {
159
+ "part": "positioner",
160
+ "element": "div",
161
+ "required": false,
162
+ "purpose": "The layer the calendar stands on, drawn while the calendar is open. It carries data-ui=\"date-range-picker\" again, the position the positioner writes, and data-presentation: popover, or sheet on a touch screen narrower than 480 pixels."
163
+ },
164
+ {
165
+ "part": "content",
166
+ "element": "div with role=\"dialog\"",
167
+ "required": false,
168
+ "purpose": "The painted surface, with the same accessible name as the trigger. Its width is capped by the room available, so two months that do not fit side by side wrap."
169
+ },
170
+ {
171
+ "part": "head",
172
+ "element": "div",
173
+ "required": false,
174
+ "purpose": "The band above the calendar: both dates as they stand, the length and the limit. It takes the width of the surface and does not widen it."
175
+ },
176
+ {
177
+ "part": "head-start",
178
+ "element": "span",
179
+ "required": false,
180
+ "purpose": "The start date, written short. It carries data-placeholder while there is no start, and data-pending while it shows the start the next press would make instead of a chosen one."
181
+ },
182
+ {
183
+ "part": "head-end",
184
+ "element": "span",
185
+ "required": false,
186
+ "purpose": "The end date, written short, with the same two attributes as head-start."
187
+ },
188
+ {
189
+ "part": "length",
190
+ "element": "span",
191
+ "required": false,
192
+ "purpose": "The length, such as \"4 nights\": of the range the next press would make while the end is pending, else of the value. It is a polite live region, so a screen reader announces it as the focused day moves. It carries data-pending while it describes a pending range."
193
+ },
194
+ {
195
+ "part": "limit",
196
+ "element": "span",
197
+ "required": false,
198
+ "purpose": "The length rule, such as \"2 to 7 nights\", drawn while minLength or maxLength is set, so the band names the rule the calendar enforces."
199
+ },
200
+ {
201
+ "part": "panels",
202
+ "element": "div",
203
+ "required": false,
204
+ "purpose": "The shortcuts and the calendar as a wrapping row: side by side where there is room, the calendar under the shortcuts where there is not."
205
+ },
206
+ {
207
+ "part": "presets",
208
+ "element": "your own element with slDateRangePickerPresets",
209
+ "required": false,
210
+ "purpose": "A column for your own shortcuts. The Date Range Picker ships the shortcut directive and its column, never the list: the ranges belong to your product."
211
+ },
212
+ {
213
+ "part": "preset",
214
+ "element": "your own button with slDateRangePickerPreset",
215
+ "required": false,
216
+ "purpose": "One shortcut. It writes its range with the select reason and carries data-selected while the value equals its range."
217
+ },
218
+ {
219
+ "part": "footer",
220
+ "element": "your own element with slDateRangePickerFooter",
221
+ "required": false,
222
+ "purpose": "A row under the calendar for your own actions."
223
+ }
224
+ ],
225
+ "api": [
226
+ {
227
+ "name": "value",
228
+ "type": "DateRange | null",
229
+ "defaultValue": "—",
230
+ "appliesTo": "SlDateRangePicker",
231
+ "description": "The range, { start, end }, where each end is a PlainDate or null. A range with both ends null is null. Binding it makes the value controlled."
232
+ },
233
+ {
234
+ "name": "defaultValue",
235
+ "type": "DateRange | null",
236
+ "defaultValue": "—",
237
+ "appliesTo": "SlDateRangePicker",
238
+ "description": "The starting value of an uncontrolled date range picker. Read once, on init."
239
+ },
240
+ {
241
+ "name": "open",
242
+ "type": "boolean",
243
+ "defaultValue": "—",
244
+ "appliesTo": "SlDateRangePicker",
245
+ "description": "Whether the calendar is showing. Binding it makes the open state controlled."
246
+ },
247
+ {
248
+ "name": "defaultOpen",
249
+ "type": "boolean",
250
+ "defaultValue": "false",
251
+ "appliesTo": "SlDateRangePicker",
252
+ "description": "Whether the calendar shows on the first render. Focus does not move into it."
253
+ },
254
+ {
255
+ "name": "position",
256
+ "type": "'start' | 'end'",
257
+ "defaultValue": "—",
258
+ "appliesTo": "SlDateRangePicker",
259
+ "description": "The end being edited: the field that carries data-current, the day the calendar opens on, and the end the next press in the calendar writes. Binding it makes the position controlled."
260
+ },
261
+ {
262
+ "name": "defaultPosition",
263
+ "type": "'start' | 'end'",
264
+ "defaultValue": "start",
265
+ "appliesTo": "SlDateRangePicker",
266
+ "description": "The end being edited on the first render."
267
+ },
268
+ {
269
+ "name": "min",
270
+ "type": "PlainDate",
271
+ "defaultValue": "—",
272
+ "appliesTo": "SlDateRangePicker",
273
+ "description": "The earliest date both fields and the calendar accept. Earlier days are disabled in the calendar, and an earlier typed date marks the date range picker invalid. Once both ends are set, the start field also stops at the end and the end field at the start."
274
+ },
275
+ {
276
+ "name": "max",
277
+ "type": "PlainDate",
278
+ "defaultValue": "—",
279
+ "appliesTo": "SlDateRangePicker",
280
+ "description": "The latest date both fields and the calendar accept. Later days are disabled in the calendar, and a later typed date marks the date range picker invalid."
281
+ },
282
+ {
283
+ "name": "isDateUnavailable",
284
+ "type": "(date: PlainDate) => boolean",
285
+ "defaultValue": "—",
286
+ "appliesTo": "SlDateRangePicker",
287
+ "description": "Returns true for a date the reader cannot choose. The calendar disables it, and a typed range that contains it marks the date range picker invalid."
288
+ },
289
+ {
290
+ "name": "contiguous",
291
+ "type": "boolean",
292
+ "defaultValue": "true",
293
+ "appliesTo": "SlDateRangePicker",
294
+ "description": "Whether a range must run without unavailable days. On, once a start is chosen the calendar also disables every day beyond the first unavailable one, searching up to maxLength days, or 366, on each side. Off, only the two ends are checked."
295
+ },
296
+ {
297
+ "name": "minLength",
298
+ "type": "number",
299
+ "defaultValue": "—",
300
+ "appliesTo": "SlDateRangePicker",
301
+ "description": "The shortest range allowed, in the unit count names. Once a start is chosen, the calendar disables the days that would make a shorter range, and the band names the limit."
302
+ },
303
+ {
304
+ "name": "maxLength",
305
+ "type": "number",
306
+ "defaultValue": "—",
307
+ "appliesTo": "SlDateRangePicker",
308
+ "description": "The longest range allowed, in the unit count names. A typed range outside either limit marks the date range picker invalid."
309
+ },
310
+ {
311
+ "name": "count",
312
+ "type": "'days' | 'nights'",
313
+ "defaultValue": "days",
314
+ "appliesTo": "SlDateRangePicker",
315
+ "description": "What the length counts. days counts both ends; nights counts the nights between them. The same day at both ends is 1 day or 0 nights."
316
+ },
317
+ {
318
+ "name": "months",
319
+ "type": "number",
320
+ "defaultValue": "2",
321
+ "appliesTo": "SlDateRangePicker",
322
+ "description": "How many months the calendar draws side by side. When they do not fit, they wrap."
323
+ },
324
+ {
325
+ "name": "weekNumbers",
326
+ "type": "boolean",
327
+ "defaultValue": "false",
328
+ "appliesTo": "SlDateRangePicker",
329
+ "description": "Adds a column of ISO 8601 week numbers to the calendar."
330
+ },
331
+ {
332
+ "name": "fixedWeeks",
333
+ "type": "boolean",
334
+ "defaultValue": "true",
335
+ "appliesTo": "SlDateRangePicker",
336
+ "description": "Draws six rows for every month, so the surface keeps its height as the reader pages between months."
337
+ },
338
+ {
339
+ "name": "placement",
340
+ "type": "'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end'",
341
+ "defaultValue": "bottom-start",
342
+ "appliesTo": "SlDateRangePicker",
343
+ "description": "Where the calendar opens relative to the frame. When it does not fit on that side, it opens on the other."
344
+ },
345
+ {
346
+ "name": "closeOnSelect",
347
+ "type": "'auto' | 'always' | 'never'",
348
+ "defaultValue": "auto",
349
+ "appliesTo": "SlDateRangePicker",
350
+ "description": "When choosing closes the calendar. auto closes it when the range is complete, by a second press or a shortcut, and keeps it open after the first press; always closes it on every press that changes the value; never keeps it open."
351
+ },
352
+ {
353
+ "name": "locale",
354
+ "type": "string",
355
+ "defaultValue": "the provideSlotted locale, else en-US",
356
+ "appliesTo": "SlDateRangePicker",
357
+ "description": "A BCP 47 tag. Sets the order, separators and placeholders of both fields, the month and weekday names, the short dates in the band and the dates the trigger announces."
358
+ },
359
+ {
360
+ "name": "timeZone",
361
+ "type": "string",
362
+ "defaultValue": "the browser’s time zone",
363
+ "appliesTo": "SlDateRangePicker",
364
+ "description": "The IANA time zone that decides which day is today. The value itself has no time zone."
365
+ },
366
+ {
367
+ "name": "firstDayOfWeek",
368
+ "type": "number",
369
+ "defaultValue": "the locale’s",
370
+ "appliesTo": "SlDateRangePicker",
371
+ "description": "The day the calendar starts each week on, from 0 for Sunday to 6 for Saturday."
372
+ },
373
+ {
374
+ "name": "yearPivot",
375
+ "type": "number",
376
+ "defaultValue": "20",
377
+ "appliesTo": "SlDateRangePicker",
378
+ "description": "How a two-digit year typed into either field resolves: with 20, 30 reads as 2030 and 80 as 1980."
379
+ },
380
+ {
381
+ "name": "calendar",
382
+ "type": "'gregory'",
383
+ "defaultValue": "gregory",
384
+ "appliesTo": "SlDateRangePicker",
385
+ "description": "The calendar system. Gregorian is the only one today."
386
+ },
387
+ {
388
+ "name": "size",
389
+ "type": "'sm' | 'md' | 'lg'",
390
+ "defaultValue": "md",
391
+ "appliesTo": "SlDateRangePicker",
392
+ "description": "One step of the control scale, for the frame, both fields and the trigger. Inside a field, an unset size follows the field."
393
+ },
394
+ {
395
+ "name": "variant",
396
+ "type": "'outline' | 'subtle' | 'plain'",
397
+ "defaultValue": "outline",
398
+ "appliesTo": "SlDateRangePicker",
399
+ "description": "How much frame the control draws at rest."
400
+ },
401
+ {
402
+ "name": "disabled",
403
+ "type": "boolean",
404
+ "defaultValue": "the field’s",
405
+ "appliesTo": "SlDateRangePicker",
406
+ "description": "Disables both fields, the clear button and the trigger, and takes them out of the tab order. A form control’s disabled state sets it too."
407
+ },
408
+ {
409
+ "name": "readOnly",
410
+ "type": "boolean",
411
+ "defaultValue": "the field’s",
412
+ "appliesTo": "SlDateRangePicker",
413
+ "description": "Keeps both dates legible and focusable, and disables the clear button and the trigger."
414
+ },
415
+ {
416
+ "name": "invalid",
417
+ "type": "boolean",
418
+ "defaultValue": "the field’s",
419
+ "appliesTo": "SlDateRangePicker",
420
+ "description": "Marks the date range picker invalid. An end before its start, a date outside min and max, an unavailable date in the range or a length outside the limits marks it invalid whatever this says."
421
+ },
422
+ {
423
+ "name": "required",
424
+ "type": "boolean",
425
+ "defaultValue": "the field’s",
426
+ "appliesTo": "SlDateRangePicker",
427
+ "description": "Sets aria-required on both fields."
428
+ },
429
+ {
430
+ "name": "clearable",
431
+ "type": "boolean",
432
+ "defaultValue": "false",
433
+ "appliesTo": "SlDateRangePicker",
434
+ "description": "Adds one clear button to the frame, which empties both ends."
435
+ },
436
+ {
437
+ "name": "messages",
438
+ "type": "Partial<DateRangePickerMessages>",
439
+ "defaultValue": "—",
440
+ "appliesTo": "SlDateRangePicker",
441
+ "description": "Replaces words of the active language, key by key: choose and change for the trigger’s name before and after a range is set (change takes {start}, {end} and {length}), clear, start and end for the two fields’ names and the band’s placeholders, and the counting phrases days.length and nights.length with between, atLeast and atMost for the limits."
442
+ },
443
+ {
444
+ "name": "startName",
445
+ "type": "string",
446
+ "defaultValue": "—",
447
+ "appliesTo": "SlDateRangePicker",
448
+ "description": "Adds a hidden input with this name that submits the start as an ISO 8601 string, such as 2026-09-30."
449
+ },
450
+ {
451
+ "name": "endName",
452
+ "type": "string",
453
+ "defaultValue": "—",
454
+ "appliesTo": "SlDateRangePicker",
455
+ "description": "Adds a hidden input with this name that submits the end as an ISO 8601 string."
456
+ },
457
+ {
458
+ "name": "slDateRangePickerPresets",
459
+ "type": "Directive",
460
+ "defaultValue": "—",
461
+ "appliesTo": "SlDateRangePicker",
462
+ "description": "Marks your own element as the column of shortcuts beside the calendar. It holds buttons with slDateRangePickerPreset."
463
+ },
464
+ {
465
+ "name": "slDateRangePickerFooter",
466
+ "type": "Directive",
467
+ "defaultValue": "—",
468
+ "appliesTo": "SlDateRangePicker",
469
+ "description": "Marks your own element as the row of actions under the calendar."
470
+ },
471
+ {
472
+ "name": "slDateRangePickerPreset",
473
+ "type": "DateRange | (() => DateRange)",
474
+ "defaultValue": "—",
475
+ "appliesTo": "SlDateRangePickerPreset",
476
+ "description": "The range the shortcut writes, or a function that returns it when the shortcut is pressed, so a relative range such as \"next weekend\" is computed at the press."
477
+ }
478
+ ],
479
+ "composition": [
480
+ {
481
+ "name": "provideDateRangePickerDefaults",
482
+ "type": "Provider",
483
+ "defaultValue": "—",
484
+ "appliesTo": "application",
485
+ "description": "Sets timeZone, calendar, months, count, closeOnSelect, placement, size and variant for every date range picker under the injector. An input on one date range picker wins, and inside a field the field’s size wins."
486
+ },
487
+ {
488
+ "name": "ControlValueAccessor and Validator",
489
+ "type": "formControl, formControlName, ngModel",
490
+ "defaultValue": "—",
491
+ "appliesTo": "SlDateRangePicker",
492
+ "description": "The whole { start, end } is the control’s value. The date range picker reports slottedDateRangeOrder, slottedDateRangeMin, slottedDateRangeMax, slottedDateRangeUnavailable and slottedDateRangeLength, and leaves required to Validators.required, which accepts a range with one open end."
493
+ },
494
+ {
495
+ "name": "exportAs",
496
+ "type": "slDateRangePicker",
497
+ "defaultValue": "—",
498
+ "appliesTo": "SlDateRangePicker",
499
+ "description": "Gives a template the instance, with focus(position?), which focuses the first segment of one end (the current one by default), openSurface() and closeSurface(), which show and hide the calendar without a bound open, and choose(range), which writes a range as a shortcut does. openSurface() moves focus into the calendar."
500
+ },
501
+ {
502
+ "name": "Content slots",
503
+ "type": "slDateRangePickerPresets, slDateRangePickerFooter",
504
+ "defaultValue": "—",
505
+ "appliesTo": "SlDateRangePicker",
506
+ "description": "The two places you fill, as directives on your own elements, so a button, a list or a toolbar keeps its own semantics."
507
+ },
508
+ {
509
+ "name": "slDateRangePickerPreset",
510
+ "type": "Directive on button",
511
+ "defaultValue": "—",
512
+ "appliesTo": "presets",
513
+ "description": "One shortcut on your own button. It takes the range and sets data-part and type. A click handler that calls preventDefault() keeps the current value."
514
+ }
515
+ ],
516
+ "events": [
517
+ {
518
+ "name": "valueChange",
519
+ "payload": "ChangeRequest<DateRange | null>",
520
+ "when": "Before the value changes. reason is keyboard or blur for a typed end, select for a range completed in the calendar or written by a shortcut, and clear for the clear button. The first press in the calendar does not emit: the range is not complete yet. cancel() keeps the current value. There is no two-way [(value)] binding, because the request carries the reason; bind a form control for two-way binding."
521
+ },
522
+ {
523
+ "name": "openChange",
524
+ "payload": "ChangeRequest<boolean>",
525
+ "when": "Before the calendar opens or closes. reason is pointer for the trigger, keyboard for Alt+ArrowDown, programmatic for openSurface() and closeSurface(), escape for the Escape key, outsidePress for a press outside the surface and select for a completed range. cancel() keeps the current state."
526
+ },
527
+ {
528
+ "name": "positionChange",
529
+ "payload": "ChangeRequest<'start' | 'end'>",
530
+ "when": "Before the end being edited changes. reason is pointer or keyboard when focus enters a field, select after a press in the calendar or a shortcut, and clear for the clear button."
531
+ }
532
+ ],
533
+ "accessibility": [
534
+ "The trigger’s accessible name carries both dates in words and the length, such as “Change range, Saturday, September 12, 2026 – Wednesday, September 16, 2026, 4 nights”. Focus returns to the trigger when the calendar closes, so a screen reader announces the range there.",
535
+ "Opening the calendar from the trigger or from openSurface() moves focus to the day of the end being edited, or to today when that end is empty. Alt+ArrowDown opens it and leaves focus in the field. While the calendar is open, Tab and Shift+Tab cycle through the shortcuts, the calendar and the footer.",
536
+ "The length is a polite live region. A sighted reader sees it follow the pointer; a screen-reader user hears it follow each arrow key.",
537
+ "Each field has its own name, from the start and end messages, and the dash between them is aria-hidden. Each field keeps its own spin buttons and its own keys. Inside a field, the frame is a group named by the field’s label, so a screen reader announces “Reporting period” and then “Start” on the way into the first date.",
538
+ "Escape closes in steps: while the calendar shows the month or year grid, Escape returns to the day grid; on the day grid, it closes the calendar, discards a range that has only its start, and returns focus to the trigger.",
539
+ "A range that has only its start in the calendar never reaches the value or a form: the first press is shown in the band, and the second press writes the range. A typed open end is a value, because the reader sees it in the field.",
540
+ "The surface has role=\"dialog\" and the same accessible name as the trigger. The trigger sets aria-expanded, and sets aria-controls only while the surface exists. One day of the calendar is in the tab order, as the grid pattern requires."
541
+ ]
542
+ }
543
+ },
544
+ "tokens": [
545
+ "--slotted-border-subtle",
546
+ "--slotted-border-width-thin",
547
+ "--slotted-control-border-color",
548
+ "--slotted-control-border-width",
549
+ "--slotted-control-font-family",
550
+ "--slotted-control-font-size-lg",
551
+ "--slotted-control-font-size-md",
552
+ "--slotted-control-font-size-sm",
553
+ "--slotted-control-gap-lg",
554
+ "--slotted-control-gap-md",
555
+ "--slotted-control-gap-sm",
556
+ "--slotted-control-height-lg",
557
+ "--slotted-control-height-md",
558
+ "--slotted-control-height-sm",
559
+ "--slotted-control-icon-size-lg",
560
+ "--slotted-control-icon-size-md",
561
+ "--slotted-control-icon-size-sm",
562
+ "--slotted-control-invalid-edge-width",
563
+ "--slotted-control-padding-inline-lg",
564
+ "--slotted-control-padding-inline-md",
565
+ "--slotted-control-padding-inline-sm",
566
+ "--slotted-control-radius",
567
+ "--slotted-control-shadow",
568
+ "--slotted-control-shadow-focus-geometry",
569
+ "--slotted-control-surface",
570
+ "--slotted-control-transition-duration",
571
+ "--slotted-control-transition-easing",
572
+ "--slotted-date-range-picker-action-active-background",
573
+ "--slotted-date-range-picker-action-color",
574
+ "--slotted-date-range-picker-action-hover-background",
575
+ "--slotted-date-range-picker-action-size",
576
+ "--slotted-date-range-picker-background",
577
+ "--slotted-date-range-picker-border-color",
578
+ "--slotted-date-range-picker-color",
579
+ "--slotted-date-range-picker-content-border-color",
580
+ "--slotted-date-range-picker-content-color",
581
+ "--slotted-date-range-picker-content-padding",
582
+ "--slotted-date-range-picker-content-radius",
583
+ "--slotted-date-range-picker-content-shadow",
584
+ "--slotted-date-range-picker-current-color",
585
+ "--slotted-date-range-picker-current-size",
586
+ "--slotted-date-range-picker-disabled-background",
587
+ "--slotted-date-range-picker-disabled-border-color",
588
+ "--slotted-date-range-picker-disabled-color",
589
+ "--slotted-date-range-picker-hover-border-color",
590
+ "--slotted-date-range-picker-invalid-border-color",
591
+ "--slotted-date-range-picker-invalid-edge-width",
592
+ "--slotted-date-range-picker-invalid-focus-ring-color",
593
+ "--slotted-date-range-picker-length-color",
594
+ "--slotted-date-range-picker-limit-color",
595
+ "--slotted-date-range-picker-pending-color",
596
+ "--slotted-date-range-picker-placeholder-color",
597
+ "--slotted-date-range-picker-plain-hover-background",
598
+ "--slotted-date-range-picker-preset-active-background",
599
+ "--slotted-date-range-picker-preset-hover-background",
600
+ "--slotted-date-range-picker-preset-selected-background",
601
+ "--slotted-date-range-picker-preset-selected-color",
602
+ "--slotted-date-range-picker-radius",
603
+ "--slotted-date-range-picker-readonly-background",
604
+ "--slotted-date-range-picker-separator-color",
605
+ "--slotted-date-range-picker-shadow",
606
+ "--slotted-date-range-picker-sheet-inline-size",
607
+ "--slotted-date-range-picker-subtle-background",
608
+ "--slotted-date-range-picker-subtle-border-color",
609
+ "--slotted-date-range-picker-subtle-hover-background",
610
+ "--slotted-date-range-picker-surface",
611
+ "--slotted-disabled-background",
612
+ "--slotted-disabled-border",
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-size-xs",
624
+ "--slotted-font-weight-medium",
625
+ "--slotted-font-weight-regular",
626
+ "--slotted-font-weight-semibold",
627
+ "--slotted-line-height-sm",
628
+ "--slotted-radius-lg",
629
+ "--slotted-radius-none",
630
+ "--slotted-radius-xs",
631
+ "--slotted-shadow-md",
632
+ "--slotted-space-1",
633
+ "--slotted-space-2",
634
+ "--slotted-space-3",
635
+ "--slotted-space-4",
636
+ "--slotted-space-5",
637
+ "--slotted-space-9",
638
+ "--slotted-surface-raised",
639
+ "--slotted-surface-sunken",
640
+ "--slotted-target-comfortable",
641
+ "--slotted-target-min",
642
+ "--slotted-text",
643
+ "--slotted-text-muted",
644
+ "--slotted-tone-accent-border",
645
+ "--slotted-tone-accent-solid",
646
+ "--slotted-tone-accent-subtle-hover",
647
+ "--slotted-tone-accent-text",
648
+ "--slotted-tone-danger-border",
649
+ "--slotted-tone-secondary-subtle-active",
650
+ "--slotted-tone-secondary-subtle-hover",
651
+ "--slotted-z-index-popover"
652
+ ],
653
+ "examples": [
654
+ {
655
+ "id": "playground",
656
+ "title": "Playground",
657
+ "note": "Check-in and check-out in one frame, driven by the controls below the canvas. Type into either field, or press the trigger and choose two days: while the range is drawn, the band above the calendar says how many nights it holds.",
658
+ "language": "html",
659
+ "source": "<div slField>\n <label slFieldLabel>Stay</label>\n <div\n slDateRangePicker\n count=\"nights\"\n startName=\"checkin\"\n endName=\"checkout\"\n [value]=\"value\"\n (valueChange)=\"value = $event.value\"\n ></div>\n</div>\n",
660
+ "verdict": "excerpt"
661
+ },
662
+ {
663
+ "id": "sizes",
664
+ "title": "Size",
665
+ "note": "The three steps of the control scale. Both fields, the dash and the trigger follow the step together, so a range in a dense table shrinks as one control.",
666
+ "language": "ts",
667
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-sizes',\n imports: [SlDateRangePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Created between</label>\n <div slDateRangePicker size=\"sm\" [defaultValue]=\"created\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Billing period</label>\n <div slDateRangePicker size=\"md\" [defaultValue]=\"billing\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Lease term</label>\n <div slDateRangePicker size=\"lg\" [defaultValue]=\"lease\"></div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerSizes {\n protected readonly created = { start: plainDate(2026, 9, 1), end: plainDate(2026, 9, 30) };\n protected readonly billing = { start: plainDate(2026, 10, 1), end: plainDate(2026, 10, 31) };\n protected readonly lease = { start: plainDate(2026, 11, 1), end: plainDate(2027, 10, 31) };\n}\n",
668
+ "verdict": "example"
669
+ },
670
+ {
671
+ "id": "variants",
672
+ "title": "Variant",
673
+ "note": "How much frame the control draws at rest. The two fields inside are plain, and the one frame answers hover, focus and invalid for both.",
674
+ "language": "ts",
675
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-variants',\n imports: [SlDateRangePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Outline</label>\n <div slDateRangePicker variant=\"outline\" [defaultValue]=\"quarter\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Subtle</label>\n <div slDateRangePicker variant=\"subtle\" [defaultValue]=\"quarter\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Plain</label>\n <div slDateRangePicker variant=\"plain\" [defaultValue]=\"quarter\"></div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerVariants {\n protected readonly quarter = { start: plainDate(2026, 7, 1), end: plainDate(2026, 9, 30) };\n}\n",
676
+ "verdict": "example"
677
+ },
678
+ {
679
+ "id": "length",
680
+ "title": "The length while the range is drawn",
681
+ "note": "Open the calendar and choose a start: the band follows the pointer and the focused day, and says the length of the range the next press would make. count decides the unit: a stay counts nights and a leave request counts days, so the same two dates give 4 nights or 5 days.",
682
+ "language": "html",
683
+ "source": "<div slDateRangePicker count=\"nights\"></div>\n<div slDateRangePicker count=\"days\"></div>\n",
684
+ "verdict": "excerpt"
685
+ },
686
+ {
687
+ "id": "limits",
688
+ "title": "Length limits",
689
+ "note": "A stay of two to seven nights. Once a check-in is chosen, the calendar disables the days that would break the rule and the band names it; a typed range outside it marks the frame invalid. minLength and maxLength count in the unit count names.",
690
+ "language": "ts",
691
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\n\n@Component({\n selector: 'app-date-range-picker-limits',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Forklift rental</label>\n <div slDateRangePicker [minLength]=\"2\" [maxLength]=\"14\"></div>\n <span slFieldDescription>Rentals run from 2 to 14 days.</span>\n </div>\n `,\n})\nexport class DateRangePickerLimits {}\n",
692
+ "verdict": "example"
693
+ },
694
+ {
695
+ "id": "unavailable",
696
+ "title": "Unavailable days",
697
+ "note": "The room is taken from the 15th to the 18th. Choose a check-in before it: the calendar disables the nights past the first taken day, because a range runs without gaps. [contiguous]=\"false\" lets a range run across an unavailable day and checks only its two ends.",
698
+ "language": "ts",
699
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { compareDate, plainDate, type PlainDate } from '@slotted/core/date';\n\nconst BOOKED_FROM = plainDate(2026, 10, 14);\nconst BOOKED_TO = plainDate(2026, 10, 16);\n\nconst isBooked = (date: PlainDate) =>\n compareDate(date, BOOKED_FROM) >= 0 && compareDate(date, BOOKED_TO) <= 0;\n\n@Component({\n selector: 'app-date-range-picker-unavailable',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Training room</label>\n <div slDateRangePicker [isDateUnavailable]=\"isBooked\"></div>\n <span slFieldDescription>\n Booked October 14 to 16. A booking cannot run across those days.\n </span>\n </div>\n `,\n})\nexport class DateRangePickerUnavailable {\n protected readonly isBooked = isBooked;\n}\n",
700
+ "verdict": "example"
701
+ },
702
+ {
703
+ "id": "presets",
704
+ "title": "Presets",
705
+ "note": "The stays a hotel offers by name. Each is a button with slDateRangePickerPreset and its own range; pressing one writes the value and closes the calendar, and the one equal to the value carries data-selected. The list belongs to the product.",
706
+ "language": "ts",
707
+ "source": "import { Component } from '@angular/core';\nimport {\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n type DateRange,\n} from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { addDays, plainDate } from '@slotted/core/date';\n\nconst TODAY = plainDate(2026, 9, 30);\n\nconst LAST_30_DAYS: DateRange = { start: addDays(TODAY, -29), end: TODAY };\n\nconst PRESETS: { label: string; range: DateRange }[] = [\n { label: 'Last 7 days', range: { start: addDays(TODAY, -6), end: TODAY } },\n { label: 'Last 30 days', range: LAST_30_DAYS },\n { label: 'This quarter', range: { start: plainDate(2026, 7, 1), end: TODAY } },\n { label: 'Last quarter', range: { start: plainDate(2026, 4, 1), end: plainDate(2026, 6, 30) } },\n { label: 'Year to date', range: { start: plainDate(2026, 1, 1), end: TODAY } },\n];\n\n@Component({\n selector: 'app-date-range-picker-presets',\n imports: [\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n SlField,\n SlFieldLabel,\n ],\n template: `\n <div slField>\n <label slFieldLabel>Report period</label>\n <div slDateRangePicker [defaultValue]=\"last30Days\" [max]=\"today\">\n <div slDateRangePickerPresets>\n @for (preset of presets; track preset.label) {\n <button [slDateRangePickerPreset]=\"preset.range\">{{ preset.label }}</button>\n }\n </div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerPresets {\n protected readonly today = TODAY;\n protected readonly last30Days = LAST_30_DAYS;\n protected readonly presets = PRESETS;\n}\n",
708
+ "verdict": "example"
709
+ },
710
+ {
711
+ "id": "open-end",
712
+ "title": "An open end",
713
+ "note": "A check-in without a check-out is a value, { start, end: null }, and the field shows it. Open the calendar over it and the first press writes the missing end. required asks for both ends.",
714
+ "language": "ts",
715
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-open-end',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Price valid</label>\n <div slDateRangePicker clearable [defaultValue]=\"validity\"></div>\n <span slFieldDescription>Leave the end empty for a price with no end date.</span>\n </div>\n `,\n})\nexport class DateRangePickerOpenEnd {\n protected readonly validity = { start: plainDate(2026, 10, 1), end: null };\n}\n",
716
+ "verdict": "example"
717
+ },
718
+ {
719
+ "id": "states",
720
+ "title": "States",
721
+ "note": "Read-only keeps the dates legible and copyable and disables the buttons; disabled disables everything and keeps the dates readable; a check-out before its check-in is invalid on the end field and on the frame, and the ends are not swapped; required reaches both fields.",
722
+ "language": "ts",
723
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-states',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldError, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField invalid required>\n <label slFieldLabel>Campaign dates</label>\n <div slDateRangePicker [defaultValue]=\"campaign\"></div>\n <span slFieldError>The end date is before the start date.</span>\n </div>\n <div slField readOnly>\n <label slFieldLabel>Fiscal quarter</label>\n <div slDateRangePicker [defaultValue]=\"quarter\"></div>\n <span slFieldDescription>Set by finance when the quarter opens.</span>\n </div>\n <div slField disabled>\n <label slFieldLabel>Price freeze</label>\n <div slDateRangePicker [defaultValue]=\"freeze\"></div>\n <span slFieldDescription>Unlocks once the pricing review is approved.</span>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerStates {\n protected readonly campaign = { start: plainDate(2026, 10, 12), end: plainDate(2026, 10, 5) };\n protected readonly quarter = { start: plainDate(2026, 7, 1), end: plainDate(2026, 9, 30) };\n protected readonly freeze = { start: plainDate(2026, 11, 23), end: plainDate(2026, 12, 31) };\n}\n",
724
+ "verdict": "example"
725
+ },
726
+ {
727
+ "id": "forms",
728
+ "title": "Forms",
729
+ "note": "The whole range is the form control’s value, and a plain form post also sends two ISO 8601 strings under startName and endName. Choose a stay and submit.",
730
+ "language": "html",
731
+ "source": "<form [formGroup]=\"reservation\" (ngSubmit)=\"reserve()\">\n <div slDateRangePicker formControlName=\"stay\" startName=\"checkin\" endName=\"checkout\"></div>\n <button type=\"submit\">Reserve</button>\n</form>\n",
732
+ "verdict": "excerpt"
733
+ },
734
+ {
735
+ "id": "narrow",
736
+ "title": "Narrow",
737
+ "note": "In a column narrower than two dates, the frame stays on one line: each date clips at its own edge and scrolls back into view when focus enters it, and the trigger keeps its place. The surface is capped by the room available, and the second month wraps under the first. On a touch screen narrower than 480 pixels, the surface is a sheet.",
738
+ "language": "ts",
739
+ "source": "import { Component } from '@angular/core';\nimport {\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n} from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { addDays, plainDate } from '@slotted/core/date';\n\nconst TODAY = plainDate(2026, 9, 30);\n\n@Component({\n selector: 'app-date-range-picker-narrow',\n imports: [\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n SlField,\n SlFieldLabel,\n ],\n template: `\n <div slField>\n <label slFieldLabel>Deliveries between</label>\n <div slDateRangePicker [max]=\"today\">\n <div slDateRangePickerPresets>\n <button [slDateRangePickerPreset]=\"todayOnly\">Today</button>\n <button [slDateRangePickerPreset]=\"lastWeek\">Last 7 days</button>\n </div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerNarrow {\n protected readonly today = TODAY;\n protected readonly todayOnly = { start: TODAY, end: TODAY };\n protected readonly lastWeek = { start: addDays(TODAY, -6), end: TODAY };\n}\n",
740
+ "verdict": "example"
741
+ },
742
+ {
743
+ "id": "composition",
744
+ "title": "Composition",
745
+ "note": "provideDateRangePickerDefaults sets the unit and the months for a section, and provideSlotted sets the language and every word. The instance opens, closes and focuses one end; [position] and (positionChange) control which end the next press writes.",
746
+ "language": "html",
747
+ "source": "<div\n slDateRangePicker\n #picker=\"slDateRangePicker\"\n [position]=\"position\"\n (positionChange)=\"position = $event.value\"\n></div>\n<button type=\"button\" (click)=\"picker.openSurface()\">Open</button>\n",
748
+ "verdict": "excerpt"
749
+ },
750
+ {
751
+ "id": "keyboard",
752
+ "title": "The keyboard",
753
+ "note": "Alt+ArrowDown opens the calendar from either field and leaves focus there. Enter on the trigger opens it on the day of the end being edited; each arrow moves the pending end and the band says the length; Enter twice writes the range. Escape returns to the day grid first, then closes and discards a range that has only its start.",
754
+ "language": "ts",
755
+ "source": "import { Component, signal } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\nimport type { ChangeRequest } from '@slotted/core/state';\n\n@Component({\n selector: 'app-date-range-picker-keyboard',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Shipping blackout</label>\n <div\n slDateRangePicker\n [defaultValue]=\"blackout\"\n [messages]=\"messages\"\n (openChange)=\"record($event)\"\n ></div>\n <span slFieldDescription>{{ last() }}</span>\n </div>\n `,\n})\nexport class DateRangePickerKeyboard {\n protected readonly blackout = { start: plainDate(2026, 11, 26), end: plainDate(2026, 11, 29) };\n protected readonly messages = {\n choose: 'Choose blackout dates',\n change: 'Change blackout dates, {start} to {end}, {length}',\n };\n protected readonly last = signal('Focus either date 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",
756
+ "verdict": "example"
757
+ },
758
+ {
759
+ "id": "across-unavailable",
760
+ "title": "across-unavailable.ts",
761
+ "note": null,
762
+ "language": "ts",
763
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { dayOfWeek, toISODate, type PlainDate } from '@slotted/core/date';\n\nconst HOLIDAYS = new Set(['2026-10-12', '2026-11-11', '2026-11-26', '2026-12-25']);\n\nconst isNonWorkingDay = (date: PlainDate) =>\n dayOfWeek(date) === 0 || dayOfWeek(date) === 6 || HOLIDAYS.has(toISODate(date));\n\n@Component({\n selector: 'app-date-range-picker-across-unavailable',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Vacation</label>\n <div slDateRangePicker [contiguous]=\"false\" [isDateUnavailable]=\"isNonWorkingDay\"></div>\n <span slFieldDescription>\n Start and end on a working day. Weekends and holidays inside the vacation are fine.\n </span>\n </div>\n `,\n})\nexport class DateRangePickerAcrossUnavailable {\n protected readonly isNonWorkingDay = isNonWorkingDay;\n}\n",
764
+ "verdict": "example"
765
+ },
766
+ {
767
+ "id": "basic",
768
+ "title": "basic.ts",
769
+ "note": null,
770
+ "language": "ts",
771
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\n\n@Component({\n selector: 'app-date-range-picker-basic',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Reporting period</label>\n <div slDateRangePicker startName=\"periodStart\" endName=\"periodEnd\"></div>\n <span slFieldDescription>Type both dates or choose them from the calendar.</span>\n </div>\n `,\n})\nexport class DateRangePickerBasic {}\n",
772
+ "verdict": "example"
773
+ },
774
+ {
775
+ "id": "bounds",
776
+ "title": "bounds.ts",
777
+ "note": null,
778
+ "language": "ts",
779
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-bounds',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Shipment window</label>\n <div slDateRangePicker [min]=\"earliest\" [max]=\"latest\"></div>\n <span slFieldDescription>Carriers accept bookings from October 1 to December 31, 2026.</span>\n </div>\n `,\n})\nexport class DateRangePickerBounds {\n protected readonly earliest = plainDate(2026, 10, 1);\n protected readonly latest = plainDate(2026, 12, 31);\n}\n",
780
+ "verdict": "example"
781
+ },
782
+ {
783
+ "id": "clearable",
784
+ "title": "clearable.ts",
785
+ "note": null,
786
+ "language": "ts",
787
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-clearable',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Order date</label>\n <div slDateRangePicker clearable [defaultValue]=\"ordered\"></div>\n <span slFieldDescription>Clear the dates to list orders from any date.</span>\n </div>\n `,\n})\nexport class DateRangePickerClearable {\n protected readonly ordered = { start: plainDate(2026, 9, 14), end: plainDate(2026, 9, 27) };\n}\n",
788
+ "verdict": "example"
789
+ },
790
+ {
791
+ "id": "compare-periods",
792
+ "title": "compare-periods.ts",
793
+ "note": null,
794
+ "language": "ts",
795
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport {\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n type DateRange,\n} from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { addDays, daysBetween, plainDate, stepYear } from '@slotted/core/date';\n\nconst SEPTEMBER: DateRange = { start: plainDate(2026, 9, 1), end: plainDate(2026, 9, 30) };\n\n/** The run of the same length that ends the day before the period starts. */\nconst previousPeriod = (period: DateRange): DateRange | null => {\n if (period.start === null || period.end === null) return null;\n const days = daysBetween(period.start, period.end) + 1;\n return { start: addDays(period.start, -days), end: addDays(period.start, -1) };\n};\n\nconst lastYear = (period: DateRange): DateRange | null =>\n period.start === null || period.end === null\n ? null\n : { start: stepYear(period.start, -1).date, end: stepYear(period.end, -1).date };\n\n@Component({\n selector: 'app-date-range-picker-compare-periods',\n imports: [\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Period</label>\n <div slDateRangePicker [value]=\"period()\" (valueChange)=\"period.set($event.value)\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Compare to</label>\n <div slDateRangePicker [value]=\"baseline()\" (valueChange)=\"baseline.set($event.value)\">\n <div slDateRangePickerPresets>\n @if (previous(); as range) {\n <button [slDateRangePickerPreset]=\"range\">Previous period</button>\n }\n @if (sameLastYear(); as range) {\n <button [slDateRangePickerPreset]=\"range\">Same period last year</button>\n }\n </div>\n </div>\n <span slFieldDescription>Shortcuts follow the period above.</span>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerComparePeriods {\n protected readonly period = signal<DateRange | null>(SEPTEMBER);\n protected readonly baseline = signal<DateRange | null>(previousPeriod(SEPTEMBER));\n protected readonly previous = computed(() => {\n const period = this.period();\n return period === null ? null : previousPeriod(period);\n });\n protected readonly sameLastYear = computed(() => {\n const period = this.period();\n return period === null ? null : lastYear(period);\n });\n}\n",
796
+ "verdict": "example"
797
+ },
798
+ {
799
+ "id": "controlled",
800
+ "title": "controlled.ts",
801
+ "note": null,
802
+ "language": "ts",
803
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateRangePicker, type DateRange } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\nimport { endOfMonth, plainDate, startOfMonth, stepMonth, toISODate } from '@slotted/core/date';\n\nconst SEPTEMBER: DateRange = { start: plainDate(2026, 9, 1), end: plainDate(2026, 9, 30) };\nconst FALLBACK = plainDate(2026, 9, 1);\n\n/** The calendar month before or after the one the range starts in. */\nconst shift = (range: DateRange | null, months: number): DateRange => {\n const first = startOfMonth(stepMonth(range?.start ?? FALLBACK, months).date);\n return { start: first, end: endOfMonth(first) };\n};\n\n@Component({\n selector: 'app-date-range-picker-controlled',\n imports: [\n SlButton,\n SlDateRangePicker,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlInline,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Statement period</label>\n <div slDateRangePicker [value]=\"period()\" (valueChange)=\"period.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 variant=\"outline\"\n type=\"button\"\n (click)=\"move(-1)\"\n >\n Previous month\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n type=\"button\"\n (click)=\"move(1)\"\n >\n Next month\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n type=\"button\"\n (click)=\"period.set(null)\"\n >\n Clear\n </button>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerControlled {\n protected readonly period = signal<DateRange | null>(SEPTEMBER);\n protected readonly summary = computed(() => {\n const period = this.period();\n return period?.start && period.end\n ? `Statement from ${toISODate(period.start)} to ${toISODate(period.end)}.`\n : 'Choose both dates to run the statement.';\n });\n\n protected move(months: number): void {\n this.period.set(shift(this.period(), months));\n }\n}\n",
804
+ "verdict": "example"
805
+ },
806
+ {
807
+ "id": "count",
808
+ "title": "count.ts",
809
+ "note": null,
810
+ "language": "ts",
811
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-count',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Hotel stay</label>\n <div slDateRangePicker count=\"nights\" [defaultValue]=\"trip\"></div>\n <span slFieldDescription>Counted in nights: October 12 to 16 is 4 nights.</span>\n </div>\n <div slField>\n <label slFieldLabel>Trade show leave</label>\n <div slDateRangePicker count=\"days\" [defaultValue]=\"trip\"></div>\n <span slFieldDescription>Counted in days: October 12 to 16 is 5 days.</span>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerCount {\n protected readonly trip = { start: plainDate(2026, 10, 12), end: plainDate(2026, 10, 16) };\n}\n",
812
+ "verdict": "example"
813
+ },
814
+ {
815
+ "id": "defaults",
816
+ "title": "defaults.ts",
817
+ "note": null,
818
+ "language": "ts",
819
+ "source": "import { Component } from '@angular/core';\nimport {\n provideDateRangePickerDefaults,\n SlDateRangePicker,\n} from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-defaults',\n imports: [SlDateRangePicker, SlField, SlFieldLabel, SlStack],\n providers: [provideDateRangePickerDefaults({ count: 'nights', months: 1, variant: 'subtle' })],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Lisbon hotel</label>\n <div slDateRangePicker [defaultValue]=\"lisbon\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Porto hotel</label>\n <div slDateRangePicker [defaultValue]=\"porto\"></div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerDefaults {\n protected readonly lisbon = { start: plainDate(2026, 11, 9), end: plainDate(2026, 11, 12) };\n protected readonly porto = { start: plainDate(2026, 11, 12), end: plainDate(2026, 11, 14) };\n}\n",
820
+ "verdict": "example"
821
+ },
822
+ {
823
+ "id": "dock-booking",
824
+ "title": "dock-booking.ts",
825
+ "note": null,
826
+ "language": "ts",
827
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlDateRangePicker, type DateRange } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport {\n createDateFormat,\n dayOfWeek,\n plainDate,\n toISODate,\n type PlainDate,\n} from '@slotted/core/date';\n\nconst TODAY = plainDate(2026, 9, 30);\n/** Days another carrier already holds dock 4. */\nconst HELD = new Set(['2026-10-07', '2026-10-08', '2026-10-21', '2026-10-22', '2026-10-23']);\nconst words = createDateFormat({ locale: 'en-US' });\n\nconst isClosed = (date: PlainDate) =>\n dayOfWeek(date) === 0 || dayOfWeek(date) === 6 || HELD.has(toISODate(date));\n\n@Component({\n selector: 'app-date-range-picker-dock-booking',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField required>\n <label slFieldLabel>Dock 4 unloading window</label>\n <div\n slDateRangePicker\n [isDateUnavailable]=\"isClosed\"\n [max]=\"latest\"\n [maxLength]=\"3\"\n [min]=\"earliest\"\n [value]=\"slot()\"\n (valueChange)=\"slot.set($event.value)\"\n ></div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n `,\n})\nexport class DateRangePickerDockBooking {\n protected readonly isClosed = isClosed;\n protected readonly earliest = plainDate(2026, 10, 1);\n protected readonly latest = plainDate(2026, 11, 30);\n protected readonly slot = signal<DateRange | null>(null);\n protected readonly summary = computed(() => {\n const slot = this.slot();\n return slot?.start && slot.end\n ? `Dock 4 is yours from ${words.describe(slot.start)} to ${words.describe(slot.end)}.`\n : `Book 1 to 3 weekdays from October 1. Booked as of ${words.describe(TODAY)}: Oct 7–8 and Oct 21–23.`;\n });\n}\n",
828
+ "verdict": "example"
829
+ },
830
+ {
831
+ "id": "first-day",
832
+ "title": "first-day.ts",
833
+ "note": null,
834
+ "language": "ts",
835
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-first-day',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Sprint 42</label>\n <div slDateRangePicker weekNumbers [defaultValue]=\"sprint\" [firstDayOfWeek]=\"1\"></div>\n <span slFieldDescription>Sprints run two ISO weeks, Monday to Friday.</span>\n </div>\n `,\n})\nexport class DateRangePickerFirstDay {\n protected readonly sprint = { start: plainDate(2026, 10, 5), end: plainDate(2026, 10, 16) };\n}\n",
836
+ "verdict": "example"
837
+ },
838
+ {
839
+ "id": "focus-and-open",
840
+ "title": "focus-and-open.ts",
841
+ "note": null,
842
+ "language": "ts",
843
+ "source": "import { Component } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlInline } from '@slotted/angular/inline';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-focus-and-open',\n imports: [SlButton, SlDateRangePicker, SlField, SlFieldLabel, SlInline, SlStack],\n template: `\n <div slStack [gap]=\"4\">\n <div slField>\n <label slFieldLabel>Contract term</label>\n <div slDateRangePicker #picker=\"slDateRangePicker\" [defaultValue]=\"term\"></div>\n </div>\n <div slInline [gap]=\"2\">\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n type=\"button\"\n (click)=\"picker.focus('end')\"\n >\n Edit end date\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"secondary\"\n variant=\"outline\"\n type=\"button\"\n (click)=\"picker.openSurface()\"\n >\n Open calendar\n </button>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerFocusAndOpen {\n protected readonly term = { start: plainDate(2026, 4, 1), end: plainDate(2027, 3, 31) };\n}\n",
844
+ "verdict": "example"
845
+ },
846
+ {
847
+ "id": "footer",
848
+ "title": "footer.ts",
849
+ "note": null,
850
+ "language": "ts",
851
+ "source": "import { Component } from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateRangePicker, SlDateRangePickerFooter } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-footer',\n imports: [\n SlButton,\n SlDateRangePicker,\n SlDateRangePickerFooter,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n ],\n template: `\n <div slField>\n <label slFieldLabel>Stock count freeze</label>\n <div\n slDateRangePicker\n #picker=\"slDateRangePicker\"\n closeOnSelect=\"never\"\n [defaultValue]=\"freeze\"\n >\n <div slDateRangePickerFooter>\n <button slButton size=\"sm\" type=\"button\" (click)=\"picker.closeSurface()\">Done</button>\n </div>\n </div>\n <span slFieldDescription>The calendar stays open until you press Done.</span>\n </div>\n `,\n})\nexport class DateRangePickerFooter {\n protected readonly freeze = { start: plainDate(2026, 10, 30), end: plainDate(2026, 11, 1) };\n}\n",
852
+ "verdict": "example"
853
+ },
854
+ {
855
+ "id": "form",
856
+ "title": "form.ts",
857
+ "note": null,
858
+ "language": "ts",
859
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule, type ValidatorFn } from '@angular/forms';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlDateRangePicker, type DateRange } from '@slotted/angular/date-range-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 { toISODate } from '@slotted/core/date';\n\n/** Both ends present: Validators.required accepts a range with one end open. */\nconst bothEnds: ValidatorFn = (control) => {\n const range = control.value as DateRange | null;\n return range?.start && range.end ? null : { bothEnds: true };\n};\n\n@Component({\n selector: 'app-date-range-picker-form',\n imports: [\n ReactiveFormsModule,\n SlButton,\n SlDateRangePicker,\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>Code freeze</label>\n <div\n slDateRangePicker\n startName=\"freezeStart\"\n endName=\"freezeEnd\"\n formControlName=\"freeze\"\n ></div>\n <span slFieldError live=\"polite\" reserve>{{ error() }}</span>\n </div>\n <div slInline [gap]=\"3\" align=\"center\">\n <button slButton type=\"submit\">Save freeze</button>\n <button slButton type=\"reset\" tone=\"secondary\" 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 DateRangePickerForm {\n protected readonly form = new FormGroup({\n freeze: new FormControl<DateRange | null>(null, bothEnds),\n });\n private readonly value = toSignal(this.form.controls.freeze.valueChanges, {\n initialValue: this.form.controls.freeze.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.freeze;\n if (control.hasError('slottedDateRangeOrder')) {\n return 'The end date must be on or after the start date.';\n }\n if (this.submitted() && control.hasError('bothEnds')) return 'Enter a start and an end date.';\n return '';\n });\n\n protected submit(): void {\n this.submitted.set(true);\n const range = this.form.controls.freeze.value;\n this.saved.set(\n this.form.valid && range?.start && range.end\n ? `Freeze saved from ${toISODate(range.start)} to ${toISODate(range.end)}.`\n : null,\n );\n }\n\n protected clear(): void {\n this.submitted.set(false);\n this.saved.set(null);\n }\n}\n",
860
+ "verdict": "example"
861
+ },
862
+ {
863
+ "id": "locale",
864
+ "title": "locale.ts",
865
+ "note": null,
866
+ "language": "ts",
867
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlStack } from '@slotted/angular/stack';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-locale',\n imports: [SlDateRangePicker, SlField, SlFieldLabel, SlStack],\n template: `\n <div slStack [gap]=\"5\">\n <div slField>\n <label slFieldLabel>Peak season, United States (en-US)</label>\n <div slDateRangePicker locale=\"en-US\" [defaultValue]=\"season\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Peak season, United Kingdom (en-GB)</label>\n <div slDateRangePicker locale=\"en-GB\" [defaultValue]=\"season\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Peak season, Germany (de-DE)</label>\n <div slDateRangePicker locale=\"de-DE\" [defaultValue]=\"season\"></div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerLocale {\n protected readonly season = { start: plainDate(2026, 11, 2), end: plainDate(2026, 12, 23) };\n}\n",
868
+ "verdict": "example"
869
+ },
870
+ {
871
+ "id": "months",
872
+ "title": "months.ts",
873
+ "note": null,
874
+ "language": "ts",
875
+ "source": "import { Component } from '@angular/core';\nimport { SlDateRangePicker } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-months',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Promotion window</label>\n <div slDateRangePicker [defaultValue]=\"promotion\" [months]=\"1\"></div>\n <span slFieldDescription>Promotions run inside one month.</span>\n </div>\n `,\n})\nexport class DateRangePickerMonths {\n protected readonly promotion = { start: plainDate(2026, 10, 5), end: plainDate(2026, 10, 18) };\n}\n",
876
+ "verdict": "example"
877
+ },
878
+ {
879
+ "id": "position",
880
+ "title": "position.ts",
881
+ "note": null,
882
+ "language": "ts",
883
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport { SlDateRangePicker, type DateRange } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { plainDate, toISODate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-range-picker-position',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Scissor lift rental</label>\n <div\n slDateRangePicker\n defaultPosition=\"end\"\n [value]=\"rental()\"\n (valueChange)=\"rental.set($event.value)\"\n ></div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n `,\n})\nexport class DateRangePickerPosition {\n protected readonly rental = signal<DateRange | null>({\n start: plainDate(2026, 10, 5),\n end: plainDate(2026, 10, 9),\n });\n protected readonly summary = computed(() => {\n const end = this.rental()?.end;\n return end\n ? `Returns ${toISODate(end)}. Open the calendar and press a day to move the return date.`\n : 'Choose a return date.';\n });\n}\n",
884
+ "verdict": "example"
885
+ },
886
+ {
887
+ "id": "reporting-filter",
888
+ "title": "reporting-filter.ts",
889
+ "note": null,
890
+ "language": "ts",
891
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport {\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n type DateRange,\n} from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGrid } from '@slotted/angular/grid';\nimport { SlStack } from '@slotted/angular/stack';\nimport {\n SlStatCard,\n SlStatCardComparison,\n SlStatCardDelta,\n SlStatCardFigure,\n SlStatCardHeader,\n SlStatCardLabel,\n SlStatCardPeriod,\n SlStatCardValue,\n} from '@slotted/angular/stat-card';\nimport { addDays, daysBetween, plainDate, type PlainDate } from '@slotted/core/date';\n\nconst TODAY = plainDate(2026, 9, 30);\nconst LAST_7_DAYS: DateRange = { start: addDays(TODAY, -6), end: TODAY };\nconst PRESETS: { label: string; range: DateRange }[] = [\n { label: 'Last 7 days', range: LAST_7_DAYS },\n { label: 'Last 30 days', range: { start: addDays(TODAY, -29), end: TODAY } },\n { label: 'This quarter', range: { start: plainDate(2026, 7, 1), end: TODAY } },\n];\n\n/** Orders shipped on one day, from the Northwind warehouse feed. */\nconst ordersOn = (date: PlainDate) => 150 + date.month * 6 + ((date.day * 37) % 50);\n\nconst ordersBetween = (start: PlainDate, end: PlainDate) => {\n let total = 0;\n for (let date = start; daysBetween(date, end) >= 0; date = addDays(date, 1)) {\n total += ordersOn(date);\n }\n return total;\n};\n\n@Component({\n selector: 'app-date-range-picker-reporting-filter',\n imports: [\n SlDateRangePicker,\n SlDateRangePickerPreset,\n SlDateRangePickerPresets,\n SlField,\n SlFieldLabel,\n SlGrid,\n SlStack,\n SlStatCard,\n SlStatCardComparison,\n SlStatCardDelta,\n SlStatCardFigure,\n SlStatCardHeader,\n SlStatCardLabel,\n SlStatCardPeriod,\n SlStatCardValue,\n ],\n template: `\n <div slStack [gap]=\"5\">\n <div slField size=\"sm\">\n <label slFieldLabel>Period</label>\n <div\n slDateRangePicker\n [max]=\"today\"\n [value]=\"period()\"\n (valueChange)=\"period.set($event.value)\"\n >\n <div slDateRangePickerPresets>\n @for (preset of presets; track preset.label) {\n <button [slDateRangePickerPreset]=\"preset.range\">{{ preset.label }}</button>\n }\n </div>\n </div>\n </div>\n <div slGrid [gap]=\"4\" minItemWidth=\"sm\">\n <div slStatCard goodWhen=\"up\" [delta]=\"figures().delta\">\n <div slStatCardHeader><span slStatCardLabel>Orders shipped</span></div>\n <div slStatCardFigure>\n <span slStatCardValue [value]=\"figures().orders\"></span>\n <span slStatCardDelta></span>\n <p slStatCardComparison>\n from {{ figures().previous.toLocaleString('en-US') }}\n <span slStatCardPeriod>previous {{ figures().days }} days</span>\n </p>\n </div>\n </div>\n <div slStatCard>\n <div slStatCardHeader><span slStatCardLabel>Orders per day</span></div>\n <div slStatCardFigure>\n <span slStatCardValue [value]=\"figures().perDay\"></span>\n <p slStatCardComparison>\n over <span slStatCardPeriod>{{ figures().days }} days</span>\n </p>\n </div>\n </div>\n </div>\n </div>\n `,\n})\nexport class DateRangePickerReportingFilter {\n protected readonly today = TODAY;\n protected readonly presets = PRESETS;\n protected readonly period = signal<DateRange | null>(LAST_7_DAYS);\n protected readonly figures = computed(() => {\n const period = this.period();\n if (!period?.start || !period.end)\n return { days: 0, orders: 0, previous: 0, delta: 0, perDay: 0 };\n const days = daysBetween(period.start, period.end) + 1;\n const orders = ordersBetween(period.start, period.end);\n const previous = ordersBetween(addDays(period.start, -days), addDays(period.start, -1));\n return {\n days,\n orders,\n previous,\n delta: previous === 0 ? 0 : (orders - previous) / previous,\n perDay: Math.round(orders / days),\n };\n });\n}\n",
892
+ "verdict": "example"
893
+ },
894
+ {
895
+ "id": "typing",
896
+ "title": "typing.ts",
897
+ "note": null,
898
+ "language": "ts",
899
+ "source": "import { Component, signal } from '@angular/core';\nimport { SlDateRangePicker, type DateRange } from '@slotted/angular/date-range-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { toISODate, type PlainDate } from '@slotted/core/date';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nconst HOW: Record<string, string> = {\n blur: 'completed when the field lost focus',\n clear: 'cleared',\n keyboard: 'typed',\n pointer: 'pressed',\n programmatic: 'set from code',\n select: 'chosen in the calendar',\n};\nconst iso = (date: PlainDate | null) => (date === null ? 'open' : toISODate(date));\n\n@Component({\n selector: 'app-date-range-picker-typing',\n imports: [SlDateRangePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Audit window</label>\n <div slDateRangePicker [value]=\"period()\" (valueChange)=\"record($event)\"></div>\n <span slFieldDescription>{{ last() }}</span>\n </div>\n `,\n})\nexport class DateRangePickerTyping {\n protected readonly period = signal<DateRange | null>(null);\n protected readonly last = signal('Type both dates, or choose two days in the calendar.');\n\n protected record(request: ChangeRequest<DateRange | null>): void {\n const value = request.value;\n this.period.set(value);\n this.last.set(\n value === null\n ? `No dates, ${HOW[request.reason]}.`\n : `${iso(value.start)} to ${iso(value.end)}, ${HOW[request.reason]}.`,\n );\n }\n}\n",
900
+ "verdict": "example"
901
+ }
902
+ ]
903
+ }