@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.11

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 (598) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/action-bar.json +4 -4
  4. package/docs/action-bar.md +3 -3
  5. package/docs/alert.json +7 -1
  6. package/docs/alert.md +3 -3
  7. package/docs/app-shell.examples.md +1 -1
  8. package/docs/app-shell.json +5 -5
  9. package/docs/app-shell.md +2 -2
  10. package/docs/avatar.json +22 -1
  11. package/docs/avatar.md +5 -3
  12. package/docs/badge.json +7 -1
  13. package/docs/badge.md +3 -3
  14. package/docs/button-group.json +2 -0
  15. package/docs/button-group.md +1 -1
  16. package/docs/button.json +51 -11
  17. package/docs/button.md +10 -6
  18. package/docs/calendar.json +8 -1
  19. package/docs/calendar.md +3 -2
  20. package/docs/cascader.json +1 -0
  21. package/docs/cascader.md +1 -1
  22. package/docs/chart.examples.md +1 -1
  23. package/docs/chart.json +10 -1
  24. package/docs/chart.md +3 -2
  25. package/docs/checkbox.json +7 -0
  26. package/docs/checkbox.md +1 -0
  27. package/docs/code-block.json +92 -92
  28. package/docs/code-block.md +69 -69
  29. package/docs/combobox.json +1 -0
  30. package/docs/combobox.md +1 -1
  31. package/docs/command-palette.json +1 -0
  32. package/docs/command-palette.md +1 -1
  33. package/docs/currency-field.json +40 -1
  34. package/docs/currency-field.md +5 -1
  35. package/docs/data-grid.examples.md +2 -2
  36. package/docs/data-grid.json +45 -7
  37. package/docs/data-grid.md +3 -1
  38. package/docs/data-grid.props.md +7 -4
  39. package/docs/data-list.json +2 -1
  40. package/docs/data-list.md +1 -1
  41. package/docs/date-field.json +9 -1
  42. package/docs/date-field.md +3 -2
  43. package/docs/date-picker.examples.md +36 -0
  44. package/docs/date-picker.json +20 -5
  45. package/docs/date-picker.md +5 -4
  46. package/docs/datetime-field.json +1 -0
  47. package/docs/datetime-field.md +1 -1
  48. package/docs/detail-panel.json +4 -2
  49. package/docs/detail-panel.md +8 -3
  50. package/docs/dialog.examples.md +158 -136
  51. package/docs/dialog.json +36 -11
  52. package/docs/dialog.md +4 -2
  53. package/docs/dialog.props.md +1 -1
  54. package/docs/drawer.json +11 -4
  55. package/docs/drawer.md +4 -3
  56. package/docs/entity-picker.json +19 -4
  57. package/docs/entity-picker.md +8 -6
  58. package/docs/event-calendar.json +7 -0
  59. package/docs/event-calendar.md +3 -2
  60. package/docs/filter-bar.json +118 -118
  61. package/docs/filter-bar.md +79 -79
  62. package/docs/form.json +2 -1
  63. package/docs/form.md +1 -1
  64. package/docs/guidelines/README.md +27 -0
  65. package/docs/guidelines/async-feedback.md +129 -0
  66. package/docs/guidelines/browsing.md +74 -0
  67. package/docs/guidelines/builders.md +97 -0
  68. package/docs/guidelines/composition.md +143 -0
  69. package/docs/guidelines/conversations.md +59 -0
  70. package/docs/guidelines/errors-and-conflicts.md +71 -0
  71. package/docs/guidelines/forms.md +202 -0
  72. package/docs/guidelines/index.md +130 -0
  73. package/docs/guidelines/layout-alignment.md +105 -0
  74. package/docs/guidelines/ledgers.md +45 -0
  75. package/docs/guidelines/list-pages.md +206 -0
  76. package/docs/guidelines/overviews.md +76 -0
  77. package/docs/guidelines/own-elements.md +115 -0
  78. package/docs/guidelines/reading-permissions.md +55 -0
  79. package/docs/guidelines/record-pages.md +178 -0
  80. package/docs/guidelines/reports.md +123 -0
  81. package/docs/guidelines/shell-composition.md +94 -0
  82. package/docs/guidelines/workspaces.md +46 -0
  83. package/docs/icon.json +3 -1
  84. package/docs/icon.md +3 -3
  85. package/docs/index.md +12 -0
  86. package/docs/inline-message.json +14 -2
  87. package/docs/inline-message.md +4 -3
  88. package/docs/list-item.json +9 -1
  89. package/docs/list-item.md +3 -3
  90. package/docs/list.json +19 -1
  91. package/docs/list.md +3 -1
  92. package/docs/markdown.json +79 -79
  93. package/docs/markdown.md +65 -65
  94. package/docs/menu.json +12 -0
  95. package/docs/menu.md +2 -0
  96. package/docs/message.json +7 -1
  97. package/docs/message.md +3 -3
  98. package/docs/multi-select.json +1 -0
  99. package/docs/multi-select.md +1 -1
  100. package/docs/notification-center.json +4 -0
  101. package/docs/notification-center.md +2 -2
  102. package/docs/number-field.json +1 -0
  103. package/docs/number-field.md +1 -1
  104. package/docs/otp-input.json +1 -0
  105. package/docs/otp-input.md +1 -1
  106. package/docs/page-header.json +22 -5
  107. package/docs/page-header.md +6 -4
  108. package/docs/page.json +2 -0
  109. package/docs/page.md +2 -1
  110. package/docs/popover.json +1 -1
  111. package/docs/progress-indicator.json +4 -3
  112. package/docs/progress-indicator.md +4 -4
  113. package/docs/prompt-composer.json +41 -1
  114. package/docs/prompt-composer.md +5 -1
  115. package/docs/rating.json +5 -3
  116. package/docs/rating.md +6 -6
  117. package/docs/section.json +28 -16
  118. package/docs/section.md +12 -10
  119. package/docs/segmented-control.json +36 -12
  120. package/docs/segmented-control.md +17 -1
  121. package/docs/select.json +1 -0
  122. package/docs/select.md +1 -1
  123. package/docs/side-navigation.json +1 -0
  124. package/docs/side-navigation.md +1 -1
  125. package/docs/skills/build-own-element/SKILL.md +90 -0
  126. package/docs/skills/compose-screen/SKILL.md +103 -0
  127. package/docs/skills/index.md +9 -0
  128. package/docs/skills/review-screen/SKILL.md +79 -0
  129. package/docs/skills/theme-app/SKILL.md +98 -0
  130. package/docs/skills/waiting-states/SKILL.md +143 -0
  131. package/docs/sparkline.json +5 -2
  132. package/docs/sparkline.md +4 -4
  133. package/docs/split-button.json +4 -1
  134. package/docs/split-button.md +3 -3
  135. package/docs/stat-card.json +5 -1
  136. package/docs/stat-card.md +3 -3
  137. package/docs/table.examples.md +3 -3
  138. package/docs/table.json +85 -3
  139. package/docs/table.md +12 -1
  140. package/docs/tabs.json +17 -7
  141. package/docs/tabs.md +3 -2
  142. package/docs/tag.json +14 -4
  143. package/docs/tag.md +6 -6
  144. package/docs/tags-input.json +29 -2
  145. package/docs/tags-input.md +4 -1
  146. package/docs/text-field.json +2 -1
  147. package/docs/text-field.md +2 -2
  148. package/docs/textarea.json +1 -0
  149. package/docs/textarea.md +1 -1
  150. package/docs/time-field.json +1 -0
  151. package/docs/time-field.md +1 -1
  152. package/docs/timeline.json +138 -132
  153. package/docs/timeline.md +125 -125
  154. package/docs/toast.json +8 -1
  155. package/docs/toast.md +3 -3
  156. package/docs/toggle-group.json +14 -3
  157. package/docs/toggle-group.md +3 -3
  158. package/docs/toggle.json +12 -3
  159. package/docs/toggle.md +3 -3
  160. package/docs/tokens.md +467 -0
  161. package/docs/toolbar.json +1 -1
  162. package/docs/toolbar.md +1 -1
  163. package/docs/tour.json +1 -1
  164. package/docs/typography.json +4 -2
  165. package/docs/typography.md +5 -5
  166. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  167. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-action-bar.mjs +27 -12
  169. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-action-sheet.mjs +48 -29
  171. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-alert.mjs +18 -11
  173. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  175. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  177. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  179. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  181. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  183. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-badge.mjs +14 -10
  185. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  187. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  189. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-button.mjs +120 -29
  191. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  193. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-card.mjs +18 -16
  195. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  197. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-cascader.mjs +180 -66
  199. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-chart.mjs +53 -20
  201. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  203. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  205. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  207. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  209. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  211. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  213. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-combobox.mjs +118 -39
  215. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-command-palette.mjs +162 -54
  217. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-container.mjs +6 -4
  219. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  221. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  223. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  225. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-data-grid.mjs +480 -129
  227. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  229. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  231. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  233. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  235. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  237. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  239. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  241. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  243. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-detail-panel.mjs +48 -30
  245. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  247. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-divider.mjs +7 -5
  249. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-drawer.mjs +91 -37
  251. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-entity-picker.mjs +474 -75
  253. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  255. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  257. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-field.mjs +35 -15
  259. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-filter-bar.mjs +118 -51
  261. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-form.mjs +18 -10
  263. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  265. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-grid.mjs +4 -2
  267. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  269. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  271. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-icon.mjs +6 -3
  273. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-image.mjs +13 -10
  275. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-import-export-center.mjs +175 -99
  277. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  279. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-inline.mjs +4 -2
  281. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  283. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-link.mjs +5 -3
  285. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  287. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-list.mjs +37 -22
  289. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  291. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  293. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  295. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-menu.mjs +51 -29
  297. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  299. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-message-scroller.mjs +34 -15
  301. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-message.mjs +119 -51
  303. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-multi-select.mjs +195 -87
  305. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  307. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  309. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  311. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  313. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-page-header.mjs +90 -48
  315. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-page.mjs +38 -10
  317. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  319. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-popover.mjs +32 -19
  321. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  323. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-prompt-composer.mjs +57 -20
  325. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-prose.mjs +14 -11
  327. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  329. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-rating.mjs +138 -82
  331. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  333. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  335. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  337. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-section.mjs +53 -18
  339. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  341. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-select.mjs +190 -94
  343. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  345. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  347. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-slider.mjs +31 -11
  349. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  351. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-split-button.mjs +37 -11
  353. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  355. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-stack.mjs +4 -2
  357. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  359. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  361. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  363. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-switch.mjs +15 -10
  365. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  367. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-table.mjs +243 -73
  369. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  371. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-tag.mjs +19 -12
  373. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  375. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-text-field.mjs +55 -15
  377. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  379. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  381. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  383. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  385. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-timeline.mjs +147 -64
  387. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-toast.mjs +43 -31
  389. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  391. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  393. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-toolbar.mjs +27 -12
  395. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  397. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  399. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-tour.mjs +47 -22
  401. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  403. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-tree.mjs +80 -26
  405. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  406. package/fesm2022/slotted-angular-typography.mjs +8 -4
  407. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  408. package/fesm2022/slotted-angular-upload.mjs +125 -57
  409. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  410. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  411. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  412. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  413. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  414. package/package.json +3 -3
  415. package/types/slotted-angular-accordion.d.ts.map +1 -1
  416. package/types/slotted-angular-action-bar.d.ts +2 -0
  417. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  418. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  419. package/types/slotted-angular-alert.d.ts +2 -2
  420. package/types/slotted-angular-alert.d.ts.map +1 -1
  421. package/types/slotted-angular-app-shell.d.ts +11 -3
  422. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  423. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  424. package/types/slotted-angular-attachment.d.ts +1 -1
  425. package/types/slotted-angular-attachment.d.ts.map +1 -1
  426. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  427. package/types/slotted-angular-avatar.d.ts +11 -3
  428. package/types/slotted-angular-avatar.d.ts.map +1 -1
  429. package/types/slotted-angular-badge.d.ts +1 -1
  430. package/types/slotted-angular-badge.d.ts.map +1 -1
  431. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  432. package/types/slotted-angular-button-group.d.ts +1 -1
  433. package/types/slotted-angular-button-group.d.ts.map +1 -1
  434. package/types/slotted-angular-button.d.ts +33 -13
  435. package/types/slotted-angular-button.d.ts.map +1 -1
  436. package/types/slotted-angular-calendar.d.ts +30 -2
  437. package/types/slotted-angular-calendar.d.ts.map +1 -1
  438. package/types/slotted-angular-card.d.ts.map +1 -1
  439. package/types/slotted-angular-carousel.d.ts.map +1 -1
  440. package/types/slotted-angular-cascader.d.ts.map +1 -1
  441. package/types/slotted-angular-chart.d.ts +10 -0
  442. package/types/slotted-angular-chart.d.ts.map +1 -1
  443. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  444. package/types/slotted-angular-checkbox.d.ts +7 -1
  445. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  446. package/types/slotted-angular-code-block.d.ts +1 -1
  447. package/types/slotted-angular-code-block.d.ts.map +1 -1
  448. package/types/slotted-angular-collapsible.d.ts +1 -1
  449. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  450. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  451. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  452. package/types/slotted-angular-combobox.d.ts +5 -1
  453. package/types/slotted-angular-combobox.d.ts.map +1 -1
  454. package/types/slotted-angular-command-palette.d.ts +10 -1
  455. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  456. package/types/slotted-angular-container.d.ts.map +1 -1
  457. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  458. package/types/slotted-angular-currency-field.d.ts +63 -15
  459. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  460. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  461. package/types/slotted-angular-data-grid.d.ts +72 -4
  462. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  463. package/types/slotted-angular-data-list.d.ts.map +1 -1
  464. package/types/slotted-angular-date-field.d.ts +11 -1
  465. package/types/slotted-angular-date-field.d.ts.map +1 -1
  466. package/types/slotted-angular-date-picker.d.ts +38 -12
  467. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  468. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  469. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  470. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  471. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  472. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  473. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  474. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-description-list.d.ts.map +1 -1
  476. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  477. package/types/slotted-angular-dialog.d.ts +10 -3
  478. package/types/slotted-angular-dialog.d.ts.map +1 -1
  479. package/types/slotted-angular-divider.d.ts.map +1 -1
  480. package/types/slotted-angular-drawer.d.ts +12 -1
  481. package/types/slotted-angular-drawer.d.ts.map +1 -1
  482. package/types/slotted-angular-entity-picker.d.ts +63 -15
  483. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  484. package/types/slotted-angular-event-calendar.d.ts +9 -2
  485. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  486. package/types/slotted-angular-field-group.d.ts.map +1 -1
  487. package/types/slotted-angular-field.d.ts.map +1 -1
  488. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  489. package/types/slotted-angular-form.d.ts.map +1 -1
  490. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  491. package/types/slotted-angular-grid.d.ts.map +1 -1
  492. package/types/slotted-angular-highlight.d.ts.map +1 -1
  493. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  494. package/types/slotted-angular-icon.d.ts +2 -2
  495. package/types/slotted-angular-icon.d.ts.map +1 -1
  496. package/types/slotted-angular-image.d.ts.map +1 -1
  497. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  498. package/types/slotted-angular-inline-message.d.ts +25 -25
  499. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  500. package/types/slotted-angular-inline.d.ts.map +1 -1
  501. package/types/slotted-angular-kbd.d.ts.map +1 -1
  502. package/types/slotted-angular-link.d.ts.map +1 -1
  503. package/types/slotted-angular-list-item.d.ts +1 -1
  504. package/types/slotted-angular-list-item.d.ts.map +1 -1
  505. package/types/slotted-angular-list.d.ts +42 -27
  506. package/types/slotted-angular-list.d.ts.map +1 -1
  507. package/types/slotted-angular-listbox.d.ts.map +1 -1
  508. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  509. package/types/slotted-angular-markdown.d.ts.map +1 -1
  510. package/types/slotted-angular-menu.d.ts +11 -2
  511. package/types/slotted-angular-menu.d.ts.map +1 -1
  512. package/types/slotted-angular-menubar.d.ts.map +1 -1
  513. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  514. package/types/slotted-angular-message.d.ts +1 -1
  515. package/types/slotted-angular-message.d.ts.map +1 -1
  516. package/types/slotted-angular-multi-select.d.ts +15 -1
  517. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  518. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  519. package/types/slotted-angular-notification-center.d.ts +1 -1
  520. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  521. package/types/slotted-angular-number-field.d.ts.map +1 -1
  522. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  523. package/types/slotted-angular-page-header.d.ts +15 -6
  524. package/types/slotted-angular-page-header.d.ts.map +1 -1
  525. package/types/slotted-angular-page.d.ts.map +1 -1
  526. package/types/slotted-angular-pagination.d.ts.map +1 -1
  527. package/types/slotted-angular-popover.d.ts.map +1 -1
  528. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  529. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  530. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  531. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  532. package/types/slotted-angular-prose.d.ts.map +1 -1
  533. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  534. package/types/slotted-angular-rating.d.ts +1 -1
  535. package/types/slotted-angular-rating.d.ts.map +1 -1
  536. package/types/slotted-angular-result-state.d.ts.map +1 -1
  537. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  538. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  539. package/types/slotted-angular-section.d.ts +11 -3
  540. package/types/slotted-angular-section.d.ts.map +1 -1
  541. package/types/slotted-angular-segmented-control.d.ts +15 -2
  542. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  543. package/types/slotted-angular-select.d.ts +12 -2
  544. package/types/slotted-angular-select.d.ts.map +1 -1
  545. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  546. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  547. package/types/slotted-angular-slider.d.ts.map +1 -1
  548. package/types/slotted-angular-sparkline.d.ts +7 -1
  549. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  550. package/types/slotted-angular-split-button.d.ts +2 -2
  551. package/types/slotted-angular-split-button.d.ts.map +1 -1
  552. package/types/slotted-angular-splitter.d.ts.map +1 -1
  553. package/types/slotted-angular-stack.d.ts.map +1 -1
  554. package/types/slotted-angular-stat-card.d.ts +1 -1
  555. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  556. package/types/slotted-angular-status-indicator.d.ts +1 -1
  557. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  558. package/types/slotted-angular-stepper.d.ts +1 -1
  559. package/types/slotted-angular-stepper.d.ts.map +1 -1
  560. package/types/slotted-angular-switch.d.ts.map +1 -1
  561. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  562. package/types/slotted-angular-table.d.ts +63 -6
  563. package/types/slotted-angular-table.d.ts.map +1 -1
  564. package/types/slotted-angular-tabs.d.ts +3 -4
  565. package/types/slotted-angular-tabs.d.ts.map +1 -1
  566. package/types/slotted-angular-tag.d.ts +1 -1
  567. package/types/slotted-angular-tag.d.ts.map +1 -1
  568. package/types/slotted-angular-tags-input.d.ts +33 -1
  569. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  570. package/types/slotted-angular-text-field.d.ts.map +1 -1
  571. package/types/slotted-angular-textarea.d.ts.map +1 -1
  572. package/types/slotted-angular-theme.d.ts +1 -1
  573. package/types/slotted-angular-time-field.d.ts.map +1 -1
  574. package/types/slotted-angular-time-picker.d.ts +0 -1
  575. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  576. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  577. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  578. package/types/slotted-angular-timeline.d.ts +1 -1
  579. package/types/slotted-angular-timeline.d.ts.map +1 -1
  580. package/types/slotted-angular-toast.d.ts +3 -3
  581. package/types/slotted-angular-toast.d.ts.map +1 -1
  582. package/types/slotted-angular-toggle-group.d.ts +8 -2
  583. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  584. package/types/slotted-angular-toggle.d.ts +1 -1
  585. package/types/slotted-angular-toggle.d.ts.map +1 -1
  586. package/types/slotted-angular-toolbar.d.ts +2 -0
  587. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  588. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  589. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  590. package/types/slotted-angular-tour.d.ts.map +1 -1
  591. package/types/slotted-angular-transfer.d.ts.map +1 -1
  592. package/types/slotted-angular-tree.d.ts.map +1 -1
  593. package/types/slotted-angular-typography.d.ts +1 -1
  594. package/types/slotted-angular-typography.d.ts.map +1 -1
  595. package/types/slotted-angular-upload.d.ts +2 -2
  596. package/types/slotted-angular-upload.d.ts.map +1 -1
  597. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  598. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -52,6 +52,10 @@
52
52
  "popin",
53
53
  "scroll"
54
54
  ],
55
+ "resizeMode": [
56
+ "live",
57
+ "deferred"
58
+ ],
55
59
  "activatable": [
56
60
  true,
57
61
  false
@@ -98,6 +102,8 @@
98
102
  "skeletonRows": 8,
99
103
  "filterDebounce": 300,
100
104
  "loadMoreThreshold": 20,
105
+ "loadMoreTrigger": "scroll",
106
+ "resizeMode": "live",
101
107
  "pageSizes": [
102
108
  25,
103
109
  50,
@@ -150,6 +156,7 @@
150
156
  "column-menu",
151
157
  "column-menu-description",
152
158
  "resizer",
159
+ "resize-guide",
153
160
  "drop-indicator",
154
161
  "filter-row",
155
162
  "filter-cell",
@@ -273,6 +280,12 @@
273
280
  "required": false,
274
281
  "purpose": "The pointer’s handle on the trailing edge; a double press fits the column."
275
282
  },
283
+ {
284
+ "part": "resize-guide",
285
+ "element": "div[aria-hidden]",
286
+ "required": false,
287
+ "purpose": "Under resizeMode=\"deferred\", the line a drag moves by translate across the scroller’s height; the width is applied on release."
288
+ },
276
289
  {
277
290
  "part": "drop-indicator",
278
291
  "element": "div",
@@ -498,7 +511,7 @@
498
511
  "type": "GridColumn<Row>[]",
499
512
  "defaultValue": "—",
500
513
  "appliesTo": "sl-data-grid",
501
- "description": "The column model: id, label, description, kind, accessor, format, compare, width, minWidth, maxWidth, flex, priority, sortable, filterable, searchable, editable, resizable, reorderable, hideable, rowHeader, options, aggregate, validate, parse."
514
+ "description": "The column model: id, label, description, kind, accessor, format, compare, width, minWidth, maxWidth, flex, priority, sortable, filterable, searchable, editable, resizable, reorderable, hideable, rowHeader, pinned (end by default for kind actions), options, aggregate, validate, parse."
502
515
  },
503
516
  {
504
517
  "name": "description",
@@ -561,14 +574,14 @@
561
574
  "type": "boolean",
562
575
  "defaultValue": "—",
563
576
  "appliesTo": "sl-data-grid",
564
- "description": "Whether a page past this one exists when the total is unknown; the footer offers Load more."
577
+ "description": "Whether a page past this one exists when the total is unknown; loadMoreTrigger decides what asks for it."
565
578
  },
566
579
  {
567
580
  "name": "loading",
568
- "type": "boolean",
581
+ "type": "boolean | 'initial' | 'refresh'",
569
582
  "defaultValue": "false",
570
583
  "appliesTo": "sl-data-grid",
571
- "description": "Skeleton rows with no rows to keep; aria-busy and a dimmed body over rows already shown."
584
+ "description": "Skeleton rows with no answer to keep; aria-busy over an answer already drawn — rows, which dim, or the empty state, which stays. true is initial until the grid has drawn an answer, and refresh after; rows emptied while a load starts wait in the skeleton."
572
585
  },
573
586
  {
574
587
  "name": "error",
@@ -766,6 +779,27 @@
766
779
  "appliesTo": "sl-data-grid",
767
780
  "description": "Rows left below the window before loadMore is emitted."
768
781
  },
782
+ {
783
+ "name": "resizeMode",
784
+ "type": "'live' | 'deferred'",
785
+ "defaultValue": "live",
786
+ "appliesTo": "sl-data-grid",
787
+ "description": "How a pointer drag of a resizer applies the width: on every move, or once on release while a guide (the resize-guide part) follows the pointer and the rows stay still. Escape during a deferred drag leaves the width. The keyboard step and autofit apply at once in either mode."
788
+ },
789
+ {
790
+ "name": "loadMoreTrigger",
791
+ "type": "'scroll' | 'button' | 'both'",
792
+ "defaultValue": "scroll",
793
+ "appliesTo": "sl-data-grid",
794
+ "description": "What asks for the next page: nearing the end, with a loading status in the footer; a Load more control; or both."
795
+ },
796
+ {
797
+ "name": "loadMoreFailed",
798
+ "type": "boolean",
799
+ "defaultValue": "false",
800
+ "appliesTo": "sl-data-grid",
801
+ "description": "The last page asked for failed: the automatic request stops and the footer offers Try again."
802
+ },
769
803
  {
770
804
  "name": "skeletonRows",
771
805
  "type": "number",
@@ -934,7 +968,7 @@
934
968
  "type": "provider",
935
969
  "defaultValue": "—",
936
970
  "appliesTo": "Application",
937
- "description": "Sets variant, striped, stickyHeader, stickyTo, selectionMode, editMode, filterRow, virtualize, rowHeight, columnOverflow, overscan, pageSizes, filterDebounce, loadMoreThreshold and skeletonRows once for an injector. A grid that states one itself still wins. Its words and its locale come from the language in force (provideSlotted)."
971
+ "description": "Sets variant, striped, stickyHeader, stickyTo, selectionMode, editMode, filterRow, virtualize, rowHeight, columnOverflow, overscan, pageSizes, filterDebounce, loadMoreThreshold, loadMoreTrigger, resizeMode and skeletonRows once for an injector. A grid that states one itself still wins. Its words and its locale come from the language in force (provideSlotted)."
938
972
  },
939
973
  {
940
974
  "name": "@slotted/core/grid",
@@ -1097,7 +1131,9 @@
1097
1131
  "--slotted-control-font-size-md",
1098
1132
  "--slotted-control-font-size-sm",
1099
1133
  "--slotted-control-gap-md",
1134
+ "--slotted-control-height-lg",
1100
1135
  "--slotted-control-height-md",
1136
+ "--slotted-control-height-sm",
1101
1137
  "--slotted-control-icon-size-md",
1102
1138
  "--slotted-control-inner-size-sm",
1103
1139
  "--slotted-control-invalid-edge-width",
@@ -1133,6 +1169,8 @@
1133
1169
  "--slotted-data-grid-pin-shadow-size",
1134
1170
  "--slotted-data-grid-radius",
1135
1171
  "--slotted-data-grid-range-surface",
1172
+ "--slotted-data-grid-resize-guide-color",
1173
+ "--slotted-data-grid-resize-guide-width",
1136
1174
  "--slotted-data-grid-row-block-size",
1137
1175
  "--slotted-data-grid-row-color-selected",
1138
1176
  "--slotted-data-grid-row-max-block-size",
@@ -1416,7 +1454,7 @@
1416
1454
  {
1417
1455
  "id": "load-more",
1418
1456
  "title": "Load more",
1419
- "note": "With an unknown total the footer states the range without one and offers Load more; when the grid windows its rows, loadMore is emitted on its own as the window nears the end.",
1457
+ "note": "With an unknown total the footer states the range without one. loadMore is emitted on its own as the reader nears the end, and the footer says a page is loading; it offers a control only to retry a page that failed (loadMoreFailed). loadMoreTrigger=\"button\" asks only from a Load more control, \"both\" does the two.",
1420
1458
  "language": "html",
1421
1459
  "source": "<sl-data-grid\n rowKey=\"id\"\n [rows]=\"rows()\"\n [columns]=\"columns\"\n [hasMore]=\"hasMore()\"\n [query]=\"{ ...emptyQuery(), page: { cursor: cursor(), size: 50 } }\"\n (loadMore)=\"fetchMore()\"\n/>\n",
1422
1460
  "verdict": "excerpt"
@@ -1424,7 +1462,7 @@
1424
1462
  {
1425
1463
  "id": "empty-and-loading",
1426
1464
  "title": "Empty, no results, error, loading",
1427
- "note": "Three states a body can hold instead of rows, each a result-state: nothing at all; nothing after the filter, with Clear filters; and a failed load, with Try again. A first load draws skeleton rows; a refresh over rows already shown dims them and moves nothing.",
1465
+ "note": "Three states a body can hold instead of rows, each a result-state: nothing at all; nothing after the filter, with Clear filters; and a failed load, with Try again. A first load draws skeleton rows; a refresh over rows already shown dims them and moves nothing. Zero rows is an answer too: once the grid has drawn the empty state, loading keeps it and draws no skeleton, and loading=\"initial\" asks for the skeleton anyway.",
1428
1466
  "language": "html",
1429
1467
  "source": "<sl-data-grid\n rowKey=\"id\"\n [rows]=\"rows()\"\n [columns]=\"columns\"\n [loading]=\"loading()\"\n [error]=\"error()\"\n (retry)=\"reload()\"\n/>\n",
1430
1468
  "verdict": "excerpt"
package/docs/data-grid.md CHANGED
@@ -137,6 +137,7 @@ export class DataGridBasic {
137
137
  | `column-menu` | button[slMenuTriggerFor] | yes |
138
138
  | `column-menu-description` | div[aria-hidden] | no |
139
139
  | `resizer` | div[aria-hidden] | no |
140
+ | `resize-guide` | div[aria-hidden] | no |
140
141
  | `drop-indicator` | div | no |
141
142
  | `filter-row` | div[role="row"] | no |
142
143
  | `filter-cell` | div[role="gridcell"] | no |
@@ -213,6 +214,7 @@ See [data-grid.props.md](./data-grid.props.md).
213
214
  | `filterRow` | `true`, `false` | `false` |
214
215
  | `virtualize` | `auto`, `true`, `false` | `auto` |
215
216
  | `columnOverflow` | `auto`, `popin`, `scroll` | `auto` |
217
+ | `resizeMode` | `live`, `deferred` | `live` |
216
218
  | `activatable` | `true`, `false` | `false` |
217
219
  | `align` | `start`, `center`, `end` | `start` |
218
220
  | `numeric` | `true`, `false` | `false` |
@@ -230,7 +232,7 @@ See [data-grid.props.md](./data-grid.props.md).
230
232
 
231
233
  ## Tokens
232
234
 
233
- `--slotted-border-strong`, `--slotted-border-subtle`, `--slotted-border-width-thick`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-md`, `--slotted-control-height-md`, `--slotted-control-icon-size-md`, `--slotted-control-inner-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-data-grid-band-surface`, `--slotted-data-grid-block-size`, `--slotted-data-grid-border-color`, `--slotted-data-grid-border-color-strong`, `--slotted-data-grid-border-width`, `--slotted-data-grid-cell-padding-block`, `--slotted-data-grid-cell-padding-inline`, `--slotted-data-grid-changed-surface`, `--slotted-data-grid-color`, `--slotted-data-grid-color-muted`, `--slotted-data-grid-control-radius`, `--slotted-data-grid-cursor-color`, `--slotted-data-grid-filter-operator-size`, `--slotted-data-grid-filter-panel-size`, `--slotted-data-grid-filter-panel-size-date`, `--slotted-data-grid-filter-panel-size-datetime`, `--slotted-data-grid-font-family`, `--slotted-data-grid-font-size`, `--slotted-data-grid-gap`, `--slotted-data-grid-head-block-size`, `--slotted-data-grid-header-surface`, `--slotted-data-grid-header-surface-hover`, `--slotted-data-grid-icon-size`, `--slotted-data-grid-indent`, `--slotted-data-grid-pin-shadow-color`, `--slotted-data-grid-pin-shadow-size`, `--slotted-data-grid-radius`, `--slotted-data-grid-range-surface`, `--slotted-data-grid-row-block-size`, `--slotted-data-grid-row-color-selected`, `--slotted-data-grid-row-max-block-size`, `--slotted-data-grid-row-surface-hover`, `--slotted-data-grid-row-surface-selected`, `--slotted-data-grid-row-surface-selected-hover`, `--slotted-data-grid-row-surface-stripe`, `--slotted-data-grid-shadow`, `--slotted-data-grid-sticky-offset`, `--slotted-data-grid-sticky-offset-end`, `--slotted-data-grid-surface`, `--slotted-disabled-foreground`, `--slotted-duration-long`, `--slotted-duration-loop`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-font-weight-semibold`, `--slotted-ground`, `--slotted-line-height-md`, `--slotted-popover-gap`, `--slotted-popover-padding-block-sm`, `--slotted-popover-padding-inline-sm`, `--slotted-radius-md`, `--slotted-radius-sm`, `--slotted-scrim`, `--slotted-shadow-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-6`, `--slotted-space-8`, `--slotted-surface`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-hover`, `--slotted-z-index-sticky`
235
+ `--slotted-border-strong`, `--slotted-border-subtle`, `--slotted-border-width-thick`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-md`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-md`, `--slotted-control-inner-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-data-grid-band-surface`, `--slotted-data-grid-block-size`, `--slotted-data-grid-border-color`, `--slotted-data-grid-border-color-strong`, `--slotted-data-grid-border-width`, `--slotted-data-grid-cell-padding-block`, `--slotted-data-grid-cell-padding-inline`, `--slotted-data-grid-changed-surface`, `--slotted-data-grid-color`, `--slotted-data-grid-color-muted`, `--slotted-data-grid-control-radius`, `--slotted-data-grid-cursor-color`, `--slotted-data-grid-filter-operator-size`, `--slotted-data-grid-filter-panel-size`, `--slotted-data-grid-filter-panel-size-date`, `--slotted-data-grid-filter-panel-size-datetime`, `--slotted-data-grid-font-family`, `--slotted-data-grid-font-size`, `--slotted-data-grid-gap`, `--slotted-data-grid-head-block-size`, `--slotted-data-grid-header-surface`, `--slotted-data-grid-header-surface-hover`, `--slotted-data-grid-icon-size`, `--slotted-data-grid-indent`, `--slotted-data-grid-pin-shadow-color`, `--slotted-data-grid-pin-shadow-size`, `--slotted-data-grid-radius`, `--slotted-data-grid-range-surface`, `--slotted-data-grid-resize-guide-color`, `--slotted-data-grid-resize-guide-width`, `--slotted-data-grid-row-block-size`, `--slotted-data-grid-row-color-selected`, `--slotted-data-grid-row-max-block-size`, `--slotted-data-grid-row-surface-hover`, `--slotted-data-grid-row-surface-selected`, `--slotted-data-grid-row-surface-selected-hover`, `--slotted-data-grid-row-surface-stripe`, `--slotted-data-grid-shadow`, `--slotted-data-grid-sticky-offset`, `--slotted-data-grid-sticky-offset-end`, `--slotted-data-grid-surface`, `--slotted-disabled-foreground`, `--slotted-duration-long`, `--slotted-duration-loop`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-font-weight-semibold`, `--slotted-ground`, `--slotted-line-height-md`, `--slotted-popover-gap`, `--slotted-popover-padding-block-sm`, `--slotted-popover-padding-inline-sm`, `--slotted-radius-md`, `--slotted-radius-sm`, `--slotted-scrim`, `--slotted-shadow-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-6`, `--slotted-space-8`, `--slotted-surface`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-hover`, `--slotted-z-index-sticky`
234
236
 
235
237
  ## Examples
236
238
 
@@ -9,7 +9,7 @@
9
9
  | --- | --- | --- | --- | --- |
10
10
  | `rows` | `readonly Row[]` | — | sl-data-grid | The records; the grid never mutates them. Left out when a dataSource answers for them. |
11
11
  | `rowKey` | `keyof Row \| (row) => string` | — | sl-data-grid | A field name or a function: the key every state model names a row by. |
12
- | `columns` | `GridColumn<Row>[]` | — | sl-data-grid | The column model: id, label, description, kind, accessor, format, compare, width, minWidth, maxWidth, flex, priority, sortable, filterable, searchable, editable, resizable, reorderable, hideable, rowHeader, options, aggregate, validate, parse. |
12
+ | `columns` | `GridColumn<Row>[]` | — | sl-data-grid | The column model: id, label, description, kind, accessor, format, compare, width, minWidth, maxWidth, flex, priority, sortable, filterable, searchable, editable, resizable, reorderable, hideable, rowHeader, pinned (end by default for kind actions), options, aggregate, validate, parse. |
13
13
  | `description` | `string` | — | GridColumn | What the column is: the header’s accessible description, the caption atop its menu and the first line of its help popover. |
14
14
  | `priority` | `number` | — | GridColumn | The lower, the longer the column stays when the frame is too narrow. A column without one leaves before every numbered one; the identity column and an actions column never leave. |
15
15
  | `popin` | `boolean` | true | GridColumn | Whether a column with no room moves into the row’s pop-in; false hides it instead. |
@@ -18,8 +18,8 @@
18
18
  | `columnGroups` | `GridColumnGroup[]` | — | sl-data-grid | Headings spanning columns, drawn as a row above the names. |
19
19
  | `mode` | `'client' \| 'server'` | inferred | sl-data-grid | client applies the query to rows; server draws rows as given. server when totalCount or hasMore is present. |
20
20
  | `totalCount` | `number` | — | sl-data-grid | The whole set’s size in server mode; aria-rowcount and the range read it. |
21
- | `hasMore` | `boolean` | — | sl-data-grid | Whether a page past this one exists when the total is unknown; the footer offers Load more. |
22
- | `loading` | `boolean` | false | sl-data-grid | Skeleton rows with no rows to keep; aria-busy and a dimmed body over rows already shown. |
21
+ | `hasMore` | `boolean` | — | sl-data-grid | Whether a page past this one exists when the total is unknown; loadMoreTrigger decides what asks for it. |
22
+ | `loading` | `boolean \| 'initial' \| 'refresh'` | false | sl-data-grid | Skeleton rows with no answer to keep; aria-busy over an answer already drawn — rows, which dim, or the empty state, which stays. true is initial until the grid has drawn an answer, and refresh after; rows emptied while a load starts wait in the skeleton. |
23
23
  | `error` | `string \| null` | — | sl-data-grid | The message of a failed load; draws the error state with Try again, which emits retry. |
24
24
  | `disabledKeys` | `string[]` | — | sl-data-grid | Rows that are neither selectable nor editable, drawn with data-disabled. |
25
25
  | `query` | `model<GridQuery>` | emptyQuery() | sl-data-grid | sort, filter, search, page and group in one object, two-way. An unbound grid starts from the model’s own initial value. |
@@ -48,6 +48,9 @@
48
48
  | `rowsReorder` | `{ key, from, to, reason, event }` | — | sl-data-grid | Where a row goes in rows: from, and the index it takes once moved. The consumer moves it. |
49
49
  | `highlightChanges` | `boolean \| number` | false | sl-data-grid | Marks a mounted cell whose value changed between two rows, for the stated milliseconds (true is 1200). |
50
50
  | `loadMoreThreshold` | `number` | 20 | sl-data-grid | Rows left below the window before loadMore is emitted. |
51
+ | `resizeMode` | `'live' \| 'deferred'` | live | sl-data-grid | How a pointer drag of a resizer applies the width: on every move, or once on release while a guide (the resize-guide part) follows the pointer and the rows stay still. Escape during a deferred drag leaves the width. The keyboard step and autofit apply at once in either mode. |
52
+ | `loadMoreTrigger` | `'scroll' \| 'button' \| 'both'` | scroll | sl-data-grid | What asks for the next page: nearing the end, with a loading status in the footer; a Load more control; or both. |
53
+ | `loadMoreFailed` | `boolean` | false | sl-data-grid | The last page asked for failed: the automatic request stops and the footer offers Try again. |
51
54
  | `skeletonRows` | `number` | 8 | sl-data-grid | Rows the first load draws. |
52
55
  | `pageSizes` | `number[]` | 25,50,100 | sl-data-grid | The sizes a page-size control in the footer offers, read through injectDataGridDefaults. |
53
56
  | `variant` | `'plain' \| 'ruled' \| 'framed'` | ruled | sl-data-grid | No rules, rules between rows, or the border and the radius. |
@@ -71,7 +74,7 @@
71
74
  | `align` | `'start' \| 'center' \| 'end'` | start | GridColumn | Where the value sits; a number column sits at the end unless told otherwise. |
72
75
  | `numeric` | `boolean` | false | GridColumn | Tabular figures and end alignment; true for kind number. |
73
76
  | `text` | `'wrap' \| 'truncate' \| 'nowrap'` | truncate | GridColumn | What a long value does. |
74
- | `provideDataGridDefaults` | `provider` | — | Application | Sets variant, striped, stickyHeader, stickyTo, selectionMode, editMode, filterRow, virtualize, rowHeight, columnOverflow, overscan, pageSizes, filterDebounce, loadMoreThreshold and skeletonRows once for an injector. A grid that states one itself still wins. Its words and its locale come from the language in force (provideSlotted). |
77
+ | `provideDataGridDefaults` | `provider` | — | Application | Sets variant, striped, stickyHeader, stickyTo, selectionMode, editMode, filterRow, virtualize, rowHeight, columnOverflow, overscan, pageSizes, filterDebounce, loadMoreThreshold, loadMoreTrigger, resizeMode and skeletonRows once for an injector. A grid that states one itself still wins. Its words and its locale come from the language in force (provideSlotted). |
75
78
  | `@slotted/core/grid` | `module` | — | Application | applyQuery, emptyQuery, withSortPress, withColumnFilter, withSearch, withPageIndex, withGroup, toGridParams, fromGridParams, normalizeColumnState, serializeColumnState, parseColumnState: the engine the grid runs on, for a server mock, a URL and a saved view. |
76
79
  | `slDataGridCell, slDataGridEditor, slDataGridHeader, slDataGridFilter, slDataGridColumnHelp, slDataGridDetail, slDataGridGroup, slDataGridEmpty` | `ng-template directives` | — | sl-data-grid | Every surface a consumer replaces, projected as content; the four column-scoped ones name a column or serve every column, and slDataGridColumnHelp names one column and draws its help button. row, cell, head and body are fixed: the layout and the roles are theirs. |
77
80
  | `slDataGridFooter` | `attribute` | — | sl-data-grid | Pagination, a page-size select, a count: the consumer’s own controls projected into the bar the grid draws. |
@@ -542,7 +542,8 @@
542
542
  "--slotted-target-min",
543
543
  "--slotted-text",
544
544
  "--slotted-text-muted",
545
- "--slotted-tone-accent-text"
545
+ "--slotted-tone-accent-text",
546
+ "--slotted-z-index-sticky"
546
547
  ],
547
548
  "examples": [
548
549
  {
package/docs/data-list.md CHANGED
@@ -131,7 +131,7 @@ Excerpt — not a complete module
131
131
 
132
132
  ## Tokens
133
133
 
134
- `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-md`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-disabled-foreground`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-sans`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-line-height-md`, `--slotted-line-height-sm`, `--slotted-line-height-xs`, `--slotted-radius-sm`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-8`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-text`
134
+ `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-md`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-disabled-foreground`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-sans`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-line-height-md`, `--slotted-line-height-sm`, `--slotted-line-height-xs`, `--slotted-radius-sm`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-8`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-text`, `--slotted-z-index-sticky`
135
135
 
136
136
  ## Examples
137
137
 
@@ -127,7 +127,7 @@
127
127
  "type": "PlainDate | null",
128
128
  "defaultValue": "—",
129
129
  "appliesTo": "SlDateField",
130
- "description": "The date the control shows. Present means the consumer owns it: the control asks and waits rather than moving it."
130
+ "description": "The date the control shows. Present means the consumer owns it: the control asks and waits rather than moving it. PlainDate is exported by @slotted/core/date. parseISODate(text) returns a PlainDate or null, and toISODate(date) returns 'YYYY-MM-DD'."
131
131
  },
132
132
  {
133
133
  "name": "defaultValue",
@@ -136,6 +136,13 @@
136
136
  "appliesTo": "SlDateField",
137
137
  "description": "The date the control starts from when nobody else writes one. Read once, in ngOnInit, because Angular binds inputs after it constructs a component."
138
138
  },
139
+ {
140
+ "name": "granularity",
141
+ "type": "'day' | 'month'",
142
+ "defaultValue": "day",
143
+ "appliesTo": "SlDateField",
144
+ "description": "What the control holds. month shows the month and the year segments in the locale’s order, takes the first day of the month as its value, and submits YYYY-MM through name."
145
+ },
139
146
  {
140
147
  "name": "min",
141
148
  "type": "PlainDate",
@@ -313,6 +320,7 @@
313
320
  "--slotted-border-subtle",
314
321
  "--slotted-control-border-color",
315
322
  "--slotted-control-border-width",
323
+ "--slotted-control-focus-ring-offset",
316
324
  "--slotted-control-font-family",
317
325
  "--slotted-control-font-size-lg",
318
326
  "--slotted-control-font-size-md",
@@ -40,8 +40,9 @@ Excerpt — not a complete module
40
40
 
41
41
  | Name | Type | Default | Applies to | Description |
42
42
  | --- | --- | --- | --- | --- |
43
- | `value` | `PlainDate \| null` | — | SlDateField | The date the control shows. Present means the consumer owns it: the control asks and waits rather than moving it. |
43
+ | `value` | `PlainDate \| null` | — | SlDateField | The date the control shows. Present means the consumer owns it: the control asks and waits rather than moving it. PlainDate is exported by @slotted/core/date. parseISODate(text) returns a PlainDate or null, and toISODate(date) returns 'YYYY-MM-DD'. |
44
44
  | `defaultValue` | `PlainDate \| null` | — | SlDateField | The date the control starts from when nobody else writes one. Read once, in ngOnInit, because Angular binds inputs after it constructs a component. |
45
+ | `granularity` | `'day' \| 'month'` | day | SlDateField | What the control holds. month shows the month and the year segments in the locale’s order, takes the first day of the month as its value, and submits YYYY-MM through name. |
45
46
  | `min` | `PlainDate` | — | SlDateField | The earliest date the control accepts. Reported through each segment’s aria-valuemin, and as the slottedDateRange form error. |
46
47
  | `max` | `PlainDate` | — | SlDateField | The latest date the control accepts, on the same terms as min. |
47
48
  | `isDateUnavailable` | `(date: PlainDate) => boolean` | — | SlDateField | Refuses particular dates — a weekend, a holiday, a day already booked. Reported as the slottedDateUnavailable form error. |
@@ -89,7 +90,7 @@ Excerpt — not a complete module
89
90
 
90
91
  ## Tokens
91
92
 
92
- `--slotted-border-subtle`, `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-date-field-action-active-background`, `--slotted-date-field-action-color`, `--slotted-date-field-action-hover-background`, `--slotted-date-field-action-size`, `--slotted-date-field-adornment-color`, `--slotted-date-field-background`, `--slotted-date-field-border-color`, `--slotted-date-field-color`, `--slotted-date-field-disabled-background`, `--slotted-date-field-disabled-border-color`, `--slotted-date-field-disabled-color`, `--slotted-date-field-hover-border-color`, `--slotted-date-field-icon-size-min`, `--slotted-date-field-invalid-border-color`, `--slotted-date-field-invalid-edge-width`, `--slotted-date-field-invalid-focus-ring-color`, `--slotted-date-field-literal-color`, `--slotted-date-field-placeholder-color`, `--slotted-date-field-plain-hover-background`, `--slotted-date-field-radius`, `--slotted-date-field-readonly-background`, `--slotted-date-field-segment-focus-background`, `--slotted-date-field-segment-focus-color`, `--slotted-date-field-segment-min-inline-size`, `--slotted-date-field-segment-padding-inline`, `--slotted-date-field-segment-radius`, `--slotted-date-field-shadow`, `--slotted-date-field-subtle-background`, `--slotted-date-field-subtle-border-color`, `--slotted-date-field-subtle-hover-background`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-radius-none`, `--slotted-radius-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
93
+ `--slotted-border-subtle`, `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-focus-ring-offset`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-date-field-action-active-background`, `--slotted-date-field-action-color`, `--slotted-date-field-action-hover-background`, `--slotted-date-field-action-size`, `--slotted-date-field-adornment-color`, `--slotted-date-field-background`, `--slotted-date-field-border-color`, `--slotted-date-field-color`, `--slotted-date-field-disabled-background`, `--slotted-date-field-disabled-border-color`, `--slotted-date-field-disabled-color`, `--slotted-date-field-hover-border-color`, `--slotted-date-field-icon-size-min`, `--slotted-date-field-invalid-border-color`, `--slotted-date-field-invalid-edge-width`, `--slotted-date-field-invalid-focus-ring-color`, `--slotted-date-field-literal-color`, `--slotted-date-field-placeholder-color`, `--slotted-date-field-plain-hover-background`, `--slotted-date-field-radius`, `--slotted-date-field-readonly-background`, `--slotted-date-field-segment-focus-background`, `--slotted-date-field-segment-focus-color`, `--slotted-date-field-segment-min-inline-size`, `--slotted-date-field-segment-padding-inline`, `--slotted-date-field-segment-radius`, `--slotted-date-field-shadow`, `--slotted-date-field-subtle-background`, `--slotted-date-field-subtle-border-color`, `--slotted-date-field-subtle-hover-background`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-radius-none`, `--slotted-radius-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
93
94
 
94
95
  ## Examples
95
96
 
@@ -877,6 +877,42 @@ export class DatePickerInvoiceDue {
877
877
  }
878
878
  ```
879
879
 
880
+ ### iso-date.ts
881
+
882
+ Example
883
+
884
+ ```ts
885
+ import { Component, computed, signal } from '@angular/core';
886
+ import type { CalendarValue } from '@slotted/angular/calendar';
887
+ import { SlDatePicker } from '@slotted/angular/date-picker';
888
+ import { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';
889
+ import { isPlainDate, parseISODate, toISODate } from '@slotted/core/date';
890
+
891
+ @Component({
892
+ selector: 'app-date-picker-iso-date',
893
+ imports: [SlDatePicker, SlField, SlFieldDescription, SlFieldLabel],
894
+ template: `
895
+ <div slField>
896
+ <label slFieldLabel>Statement date</label>
897
+ <div slDatePicker [value]="date()" (valueChange)="set($event.value)"></div>
898
+ <span slFieldDescription>{{ summary() }}</span>
899
+ </div>
900
+ `,
901
+ })
902
+ export class DatePickerIsoDate {
903
+ /* The API carries the date as text; the picker holds a PlainDate. */
904
+ protected readonly iso = signal('2026-10-19');
905
+ protected readonly date = computed(() => parseISODate(this.iso()));
906
+ protected readonly summary = computed(() =>
907
+ this.iso() === '' ? 'No date sent.' : `The API receives ${this.iso()}.`,
908
+ );
909
+
910
+ protected set(value: CalendarValue): void {
911
+ this.iso.set(isPlainDate(value) ? toISODate(value) : '');
912
+ }
913
+ }
914
+ ```
915
+
880
916
  ### locale.ts
881
917
 
882
918
  Example
@@ -134,14 +134,14 @@
134
134
  "api": [
135
135
  {
136
136
  "name": "value",
137
- "type": "PlainDate | DateRange | PlainDate[] | null",
137
+ "type": "PlainDate | DateRange | PlainDate[] | PlainYearMonth | null",
138
138
  "defaultValue": "—",
139
139
  "appliesTo": "SlDatePicker",
140
- "description": "The selected value, whose shape follows selectionMode. Binding it makes the value controlled."
140
+ "description": "The selected value, whose shape follows selectionMode. Binding it makes the value controlled. PlainDate is exported by @slotted/core/date. parseISODate(text) returns a PlainDate or null, toISODate(date) returns 'YYYY-MM-DD', and isPlainDate(value) narrows the CalendarValue (valueChange) reports."
141
141
  },
142
142
  {
143
143
  "name": "defaultValue",
144
- "type": "PlainDate | DateRange | PlainDate[] | null",
144
+ "type": "PlainDate | DateRange | PlainDate[] | PlainYearMonth | null",
145
145
  "defaultValue": "—",
146
146
  "appliesTo": "SlDatePicker",
147
147
  "description": "The starting value of an uncontrolled date picker. Read once, when the date picker initializes."
@@ -162,14 +162,14 @@
162
162
  },
163
163
  {
164
164
  "name": "min",
165
- "type": "PlainDate",
165
+ "type": "PlainDate | PlainYearMonth",
166
166
  "defaultValue": "—",
167
167
  "appliesTo": "SlDatePicker",
168
168
  "description": "The earliest date the field and the calendar accept. Earlier days are disabled in the calendar, an earlier typed date marks the date picker invalid, and a form reports slottedDateRange."
169
169
  },
170
170
  {
171
171
  "name": "max",
172
- "type": "PlainDate",
172
+ "type": "PlainDate | PlainYearMonth",
173
173
  "defaultValue": "—",
174
174
  "appliesTo": "SlDatePicker",
175
175
  "description": "The latest date the field and the calendar accept. Later days are disabled in the calendar, a later typed date marks the date picker invalid, and a form reports slottedDateRange."
@@ -181,6 +181,13 @@
181
181
  "appliesTo": "SlDatePicker",
182
182
  "description": "Returns true for a date the reader cannot choose. The calendar disables it, a typed unavailable date marks the date picker invalid, and a form reports slottedDateUnavailable."
183
183
  },
184
+ {
185
+ "name": "granularity",
186
+ "type": "'day' | 'month'",
187
+ "defaultValue": "day",
188
+ "appliesTo": "SlDatePicker",
189
+ "description": "What a choice is. month opens the calendar on the months of a year and chooses a month cell; the field shows the month and the year segments; value, defaultValue, min and max are PlainYearMonth from @slotted/core/date ({ year, month }), (valueChange) reports one, and name submits YYYY-MM. parseISOYearMonth and toISOYearMonth convert to and from that text. selectionMode, months, isDateUnavailable and the week inputs do not apply."
190
+ },
184
191
  {
185
192
  "name": "selectionMode",
186
193
  "type": "'single' | 'range' | 'multiple'",
@@ -636,6 +643,14 @@
636
643
  "source": "import { Component, computed, signal } from '@angular/core';\nimport type { CalendarValue } from '@slotted/angular/calendar';\nimport { SlDatePicker } from '@slotted/angular/date-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { SlSelect, SlSelectItem, type SelectSelection } from '@slotted/angular/select';\nimport { SlStack } from '@slotted/angular/stack';\nimport {\n addDays,\n createDateFormat,\n isPlainDate,\n plainDate,\n type PlainDate,\n} from '@slotted/core/date';\n\nconst TERMS = [\n { value: 'receipt', label: 'Due on receipt', days: 0 },\n { value: 'net-15', label: 'Net 15', days: 15 },\n { value: 'net-30', label: 'Net 30', days: 30 },\n { value: 'net-60', label: 'Net 60', days: 60 },\n];\nconst words = createDateFormat({ locale: 'en-US' });\n\n@Component({\n selector: 'app-date-picker-invoice-due',\n imports: [\n SlDatePicker,\n SlField,\n SlFieldDescription,\n SlFieldLabel,\n SlSelect,\n SlSelectItem,\n SlStack,\n ],\n template: `\n <div slStack [gap]=\"5\">\n <div slField required>\n <label slFieldLabel>Invoice date</label>\n <div slDatePicker [value]=\"issued()\" (valueChange)=\"setIssued($event.value)\"></div>\n </div>\n <div slField>\n <label slFieldLabel>Payment terms</label>\n <sl-select [items]=\"terms\" [(value)]=\"term\">\n @for (option of terms; track option.value) {\n <sl-select-item [value]=\"option.value\">{{ option.label }}</sl-select-item>\n }\n </sl-select>\n </div>\n <div slField readOnly>\n <label slFieldLabel>Due date</label>\n <div slDatePicker [value]=\"due()\"></div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n </div>\n `,\n})\nexport class DatePickerInvoiceDue {\n protected readonly terms = TERMS;\n protected readonly issued = signal<PlainDate | null>(plainDate(2026, 9, 30));\n protected readonly term = signal<SelectSelection>('net-30');\n protected readonly due = computed(() => {\n const issued = this.issued();\n const days = TERMS.find((option) => option.value === this.term())?.days ?? 0;\n return issued === null ? null : addDays(issued, days);\n });\n protected readonly summary = computed(() => {\n const due = this.due();\n return due === null ? 'Set the invoice date first.' : `Payment is due ${words.describe(due)}.`;\n });\n\n protected setIssued(value: CalendarValue): void {\n this.issued.set(isPlainDate(value) ? value : null);\n }\n}\n",
637
644
  "verdict": "example"
638
645
  },
646
+ {
647
+ "id": "iso-date",
648
+ "title": "iso-date.ts",
649
+ "note": null,
650
+ "language": "ts",
651
+ "source": "import { Component, computed, signal } from '@angular/core';\nimport type { CalendarValue } from '@slotted/angular/calendar';\nimport { SlDatePicker } from '@slotted/angular/date-picker';\nimport { SlField, SlFieldDescription, SlFieldLabel } from '@slotted/angular/field';\nimport { isPlainDate, parseISODate, toISODate } from '@slotted/core/date';\n\n@Component({\n selector: 'app-date-picker-iso-date',\n imports: [SlDatePicker, SlField, SlFieldDescription, SlFieldLabel],\n template: `\n <div slField>\n <label slFieldLabel>Statement date</label>\n <div slDatePicker [value]=\"date()\" (valueChange)=\"set($event.value)\"></div>\n <span slFieldDescription>{{ summary() }}</span>\n </div>\n `,\n})\nexport class DatePickerIsoDate {\n /* The API carries the date as text; the picker holds a PlainDate. */\n protected readonly iso = signal('2026-10-19');\n protected readonly date = computed(() => parseISODate(this.iso()));\n protected readonly summary = computed(() =>\n this.iso() === '' ? 'No date sent.' : `The API receives ${this.iso()}.`,\n );\n\n protected set(value: CalendarValue): void {\n this.iso.set(isPlainDate(value) ? toISODate(value) : '');\n }\n}\n",
652
+ "verdict": "example"
653
+ },
639
654
  {
640
655
  "id": "locale",
641
656
  "title": "locale.ts",
@@ -50,13 +50,14 @@ export class DatePickerBasic {}
50
50
 
51
51
  | Name | Type | Default | Applies to | Description |
52
52
  | --- | --- | --- | --- | --- |
53
- | `value` | `PlainDate \| DateRange \| PlainDate[] \| null` | — | SlDatePicker | The selected value, whose shape follows selectionMode. Binding it makes the value controlled. |
54
- | `defaultValue` | `PlainDate \| DateRange \| PlainDate[] \| null` | — | SlDatePicker | The starting value of an uncontrolled date picker. Read once, when the date picker initializes. |
53
+ | `value` | `PlainDate \| DateRange \| PlainDate[] \| PlainYearMonth \| null` | — | SlDatePicker | The selected value, whose shape follows selectionMode. Binding it makes the value controlled. PlainDate is exported by @slotted/core/date. parseISODate(text) returns a PlainDate or null, toISODate(date) returns 'YYYY-MM-DD', and isPlainDate(value) narrows the CalendarValue (valueChange) reports. |
54
+ | `defaultValue` | `PlainDate \| DateRange \| PlainDate[] \| PlainYearMonth \| null` | — | SlDatePicker | The starting value of an uncontrolled date picker. Read once, when the date picker initializes. |
55
55
  | `open` | `boolean` | — | SlDatePicker | Whether the calendar is showing. Binding it makes the open state controlled. |
56
56
  | `defaultOpen` | `boolean` | false | SlDatePicker | Whether the calendar shows when the date picker initializes. Focus does not move into it. |
57
- | `min` | `PlainDate` | — | SlDatePicker | The earliest date the field and the calendar accept. Earlier days are disabled in the calendar, an earlier typed date marks the date picker invalid, and a form reports slottedDateRange. |
58
- | `max` | `PlainDate` | — | SlDatePicker | The latest date the field and the calendar accept. Later days are disabled in the calendar, a later typed date marks the date picker invalid, and a form reports slottedDateRange. |
57
+ | `min` | `PlainDate \| PlainYearMonth` | — | SlDatePicker | The earliest date the field and the calendar accept. Earlier days are disabled in the calendar, an earlier typed date marks the date picker invalid, and a form reports slottedDateRange. |
58
+ | `max` | `PlainDate \| PlainYearMonth` | — | SlDatePicker | The latest date the field and the calendar accept. Later days are disabled in the calendar, a later typed date marks the date picker invalid, and a form reports slottedDateRange. |
59
59
  | `isDateUnavailable` | `(date: PlainDate) => boolean` | — | SlDatePicker | Returns true for a date the reader cannot choose. The calendar disables it, a typed unavailable date marks the date picker invalid, and a form reports slottedDateUnavailable. |
60
+ | `granularity` | `'day' \| 'month'` | day | SlDatePicker | What a choice is. month opens the calendar on the months of a year and chooses a month cell; the field shows the month and the year segments; value, defaultValue, min and max are PlainYearMonth from @slotted/core/date ({ year, month }), (valueChange) reports one, and name submits YYYY-MM. parseISOYearMonth and toISOYearMonth convert to and from that text. selectionMode, months, isDateUnavailable and the week inputs do not apply. |
60
61
  | `selectionMode` | `'single' \| 'range' \| 'multiple'` | single | SlDatePicker | How many dates the calendar selects, and so the shape of the value. The field shows a single date only; for a start and an end, use slDateRangePicker. |
61
62
  | `months` | `number` | 1 | SlDatePicker | How many months the calendar draws side by side. |
62
63
  | `defaultView` | `'day' \| 'month' \| 'year'` | day | SlDatePicker | The grid the calendar opens on. |
@@ -421,6 +421,7 @@
421
421
  "--slotted-border-subtle",
422
422
  "--slotted-control-border-color",
423
423
  "--slotted-control-border-width",
424
+ "--slotted-control-focus-ring-offset",
424
425
  "--slotted-control-font-family",
425
426
  "--slotted-control-font-size-lg",
426
427
  "--slotted-control-font-size-md",
@@ -105,7 +105,7 @@ Excerpt — not a complete module
105
105
 
106
106
  ## Tokens
107
107
 
108
- `--slotted-border-subtle`, `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-datetime-field-action-active-background`, `--slotted-datetime-field-action-color`, `--slotted-datetime-field-action-hover-background`, `--slotted-datetime-field-action-size`, `--slotted-datetime-field-adornment-color`, `--slotted-datetime-field-background`, `--slotted-datetime-field-border-color`, `--slotted-datetime-field-color`, `--slotted-datetime-field-disabled-background`, `--slotted-datetime-field-disabled-border-color`, `--slotted-datetime-field-disabled-color`, `--slotted-datetime-field-half-gap`, `--slotted-datetime-field-hover-border-color`, `--slotted-datetime-field-icon-size-min`, `--slotted-datetime-field-incomplete-border-color`, `--slotted-datetime-field-invalid-border-color`, `--slotted-datetime-field-invalid-edge-width`, `--slotted-datetime-field-invalid-focus-ring-color`, `--slotted-datetime-field-literal-color`, `--slotted-datetime-field-padding-block`, `--slotted-datetime-field-period-min-inline-size`, `--slotted-datetime-field-placeholder-color`, `--slotted-datetime-field-plain-hover-background`, `--slotted-datetime-field-preview-color`, `--slotted-datetime-field-preview-day-color`, `--slotted-datetime-field-radius`, `--slotted-datetime-field-readonly-background`, `--slotted-datetime-field-relative-border-color`, `--slotted-datetime-field-segment-focus-background`, `--slotted-datetime-field-segment-focus-color`, `--slotted-datetime-field-segment-min-inline-size`, `--slotted-datetime-field-segment-padding-inline`, `--slotted-datetime-field-segment-radius`, `--slotted-datetime-field-shadow`, `--slotted-datetime-field-subtle-background`, `--slotted-datetime-field-subtle-border-color`, `--slotted-datetime-field-subtle-hover-background`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-weight-semibold`, `--slotted-radius-none`, `--slotted-radius-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-text`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-warning-border`
108
+ `--slotted-border-subtle`, `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-focus-ring-offset`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-datetime-field-action-active-background`, `--slotted-datetime-field-action-color`, `--slotted-datetime-field-action-hover-background`, `--slotted-datetime-field-action-size`, `--slotted-datetime-field-adornment-color`, `--slotted-datetime-field-background`, `--slotted-datetime-field-border-color`, `--slotted-datetime-field-color`, `--slotted-datetime-field-disabled-background`, `--slotted-datetime-field-disabled-border-color`, `--slotted-datetime-field-disabled-color`, `--slotted-datetime-field-half-gap`, `--slotted-datetime-field-hover-border-color`, `--slotted-datetime-field-icon-size-min`, `--slotted-datetime-field-incomplete-border-color`, `--slotted-datetime-field-invalid-border-color`, `--slotted-datetime-field-invalid-edge-width`, `--slotted-datetime-field-invalid-focus-ring-color`, `--slotted-datetime-field-literal-color`, `--slotted-datetime-field-padding-block`, `--slotted-datetime-field-period-min-inline-size`, `--slotted-datetime-field-placeholder-color`, `--slotted-datetime-field-plain-hover-background`, `--slotted-datetime-field-preview-color`, `--slotted-datetime-field-preview-day-color`, `--slotted-datetime-field-radius`, `--slotted-datetime-field-readonly-background`, `--slotted-datetime-field-relative-border-color`, `--slotted-datetime-field-segment-focus-background`, `--slotted-datetime-field-segment-focus-color`, `--slotted-datetime-field-segment-min-inline-size`, `--slotted-datetime-field-segment-padding-inline`, `--slotted-datetime-field-segment-radius`, `--slotted-datetime-field-shadow`, `--slotted-datetime-field-subtle-background`, `--slotted-datetime-field-subtle-border-color`, `--slotted-datetime-field-subtle-hover-background`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-weight-semibold`, `--slotted-radius-none`, `--slotted-radius-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-text`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-warning-border`
109
109
 
110
110
  ## Examples
111
111
 
@@ -364,6 +364,8 @@
364
364
  "--slotted-detail-panel-aside-size-md",
365
365
  "--slotted-detail-panel-aside-size-sm",
366
366
  "--slotted-detail-panel-border",
367
+ "--slotted-detail-panel-footer-backdrop-filter",
368
+ "--slotted-detail-panel-footer-background",
367
369
  "--slotted-detail-panel-gap-lg",
368
370
  "--slotted-detail-panel-gap-md",
369
371
  "--slotted-detail-panel-gap-sm",
@@ -425,9 +427,9 @@
425
427
  {
426
428
  "id": "hosts",
427
429
  "title": "Three hosts, one anatomy",
428
- "note": "The same panel as a page’s content at level 1, as a drawer’s body with the drawer’s own close in the header actions, and as a split’s pane scrolling itself. Nothing in the panel names its host: scroll=\"self\" is the one difference a pane makes.",
430
+ "note": "The same panel as a page’s content at level 1, as a drawer’s body with the drawer’s own close in the header actions, and as a split’s pane scrolling itself. Nothing in the panel names its host: scroll=\"self\" is the one difference a pane makes. A pane that paints a ground of its own declares --slotted-page-ground with that ground, so a sticky section header inside the panel matches the pane and not the page.",
429
431
  "language": "html",
430
- "source": "<div slDrawer [(open)]=\"open\">\n <div slDrawerPanel>\n <div slDrawerBody>\n <article slDetailPanel [recordKey]=\"order.id\">…</article>\n </div>\n </div>\n</div>\n\n<article slDetailPanel scroll=\"self\" [recordKey]=\"order.id\">…</article>\n",
432
+ "source": "<div slDrawer [(open)]=\"open\">\n <div slDrawerPanel>\n <div slDrawerBody>\n <article slDetailPanel [recordKey]=\"order.id\">…</article>\n </div>\n </div>\n</div>\n\n<div\n class=\"pane\"\n style=\"background: var(--slotted-surface); --slotted-page-ground: var(--slotted-surface)\"\n>\n <article slDetailPanel scroll=\"self\" [recordKey]=\"order.id\">…</article>\n</div>\n",
431
433
  "verdict": "excerpt"
432
434
  },
433
435
  {
@@ -105,7 +105,7 @@ Excerpt — not a complete module
105
105
 
106
106
  ## Tokens
107
107
 
108
- `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-gap-md`, `--slotted-detail-panel-aside-size-lg`, `--slotted-detail-panel-aside-size-md`, `--slotted-detail-panel-aside-size-sm`, `--slotted-detail-panel-border`, `--slotted-detail-panel-gap-lg`, `--slotted-detail-panel-gap-md`, `--slotted-detail-panel-gap-sm`, `--slotted-detail-panel-inset-block-lg`, `--slotted-detail-panel-inset-block-md`, `--slotted-detail-panel-inset-block-sm`, `--slotted-detail-panel-rhythm`, `--slotted-duration-short`, `--slotted-easing-enter`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-sans`, `--slotted-page-ground`, `--slotted-space-12`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-7`, `--slotted-space-8`, `--slotted-space-9`, `--slotted-surface`, `--slotted-text`, `--slotted-text-muted`, `--slotted-z-index-sticky`
108
+ `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-gap-md`, `--slotted-detail-panel-aside-size-lg`, `--slotted-detail-panel-aside-size-md`, `--slotted-detail-panel-aside-size-sm`, `--slotted-detail-panel-border`, `--slotted-detail-panel-footer-backdrop-filter`, `--slotted-detail-panel-footer-background`, `--slotted-detail-panel-gap-lg`, `--slotted-detail-panel-gap-md`, `--slotted-detail-panel-gap-sm`, `--slotted-detail-panel-inset-block-lg`, `--slotted-detail-panel-inset-block-md`, `--slotted-detail-panel-inset-block-sm`, `--slotted-detail-panel-rhythm`, `--slotted-duration-short`, `--slotted-easing-enter`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-sans`, `--slotted-page-ground`, `--slotted-space-12`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-7`, `--slotted-space-8`, `--slotted-space-9`, `--slotted-surface`, `--slotted-text`, `--slotted-text-muted`, `--slotted-z-index-sticky`
109
109
 
110
110
  ## Examples
111
111
 
@@ -155,7 +155,7 @@ Excerpt — not a complete module
155
155
 
156
156
  ### Three hosts, one anatomy
157
157
 
158
- The same panel as a page’s content at level 1, as a drawer’s body with the drawer’s own close in the header actions, and as a split’s pane scrolling itself. Nothing in the panel names its host: scroll="self" is the one difference a pane makes.
158
+ The same panel as a page’s content at level 1, as a drawer’s body with the drawer’s own close in the header actions, and as a split’s pane scrolling itself. Nothing in the panel names its host: scroll="self" is the one difference a pane makes. A pane that paints a ground of its own declares --slotted-page-ground with that ground, so a sticky section header inside the panel matches the pane and not the page.
159
159
 
160
160
  Excerpt — not a complete module
161
161
 
@@ -168,7 +168,12 @@ Excerpt — not a complete module
168
168
  </div>
169
169
  </div>
170
170
 
171
- <article slDetailPanel scroll="self" [recordKey]="order.id">…</article>
171
+ <div
172
+ class="pane"
173
+ style="background: var(--slotted-surface); --slotted-page-ground: var(--slotted-surface)"
174
+ >
175
+ <article slDetailPanel scroll="self" [recordKey]="order.id">…</article>
176
+ </div>
172
177
  ```
173
178
 
174
179
  ### Previous and next: focus follows the record