@slotted/react 0.1.0-beta.2 → 0.1.0-beta.4

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 (319) hide show
  1. package/dist/{accordion-D-YuMJzk.js → accordion-lCqrmQ3w.js} +43 -43
  2. package/dist/accordion.js +1 -1
  3. package/dist/{action-bar-C7cGnEyJ.js → action-bar-OACchRZw.js} +1 -1
  4. package/dist/action-bar.js +1 -1
  5. package/dist/{action-sheet-DgwzC3iY.js → action-sheet-C60BWUW8.js} +1 -1
  6. package/dist/action-sheet.js +1 -1
  7. package/dist/{app-shell-CXwma4XA.js → app-shell-CmYvnu_7.js} +310 -310
  8. package/dist/app-shell.js +1 -1
  9. package/dist/button-Db9f3Bxn.js +99 -0
  10. package/dist/button.js +2 -2
  11. package/dist/calendar-BZ6PP7Ke.js +436 -0
  12. package/dist/calendar.js +1 -1
  13. package/dist/cascader-D1AhTyBL.js +1097 -0
  14. package/dist/cascader.js +1 -1
  15. package/dist/{chart-Gb_P3Kdq.js → chart-O0ZhkzJe.js} +381 -374
  16. package/dist/chart.js +1 -1
  17. package/dist/{checkbox-CwUOc-3u.js → checkbox-DfxFHZaU.js} +3 -3
  18. package/dist/{checkbox-group-BYTjgAcX.js → checkbox-group-9sDgrV5Z.js} +2 -2
  19. package/dist/checkbox-group.js +1 -1
  20. package/dist/checkbox.js +1 -1
  21. package/dist/{collapsible-CGo49NNW.js → collapsible-F-K36XbF.js} +17 -17
  22. package/dist/collapsible.js +1 -1
  23. package/dist/{color-picker-BlPR4g4H.js → color-picker-CwbWzCKg.js} +4 -4
  24. package/dist/color-picker.js +1 -1
  25. package/dist/{column-manager-B7_a_jDK.js → column-manager-CTtizVhm.js} +6 -6
  26. package/dist/column-manager.js +1 -1
  27. package/dist/{combobox-C66dNlMR.js → combobox-BVMI9lg8.js} +266 -266
  28. package/dist/combobox.js +1 -1
  29. package/dist/{command-palette-BqRyNR9Y.js → command-palette-DFLbSOiv.js} +1 -1
  30. package/dist/command-palette.js +1 -1
  31. package/dist/{context-menu-DMiHdggw.js → context-menu-BuST6W94.js} +1 -1
  32. package/dist/context-menu.js +1 -1
  33. package/dist/currency-field-DD9A5U3D.js +455 -0
  34. package/dist/currency-field.js +1 -1
  35. package/dist/{dashboard-grid-CKdyO4j6.js → dashboard-grid-CBMP_-JV.js} +2 -2
  36. package/dist/dashboard-grid.js +1 -1
  37. package/dist/{data-grid-rWMDNl-6.js → data-grid-Eb-a4jg3.js} +19 -19
  38. package/dist/data-grid.js +1 -1
  39. package/dist/{data-list-2xfDpHVC.js → data-list-oICmxGkA.js} +5 -5
  40. package/dist/data-list.js +1 -1
  41. package/dist/date-field-Hr-OCU-H.js +290 -0
  42. package/dist/date-field.js +1 -1
  43. package/dist/date-picker-D3-y2Jxw.js +295 -0
  44. package/dist/date-picker.js +1 -1
  45. package/dist/date-range-picker-y3b82Wmf.js +471 -0
  46. package/dist/date-range-picker.js +1 -1
  47. package/dist/{datetime-field-T1gNdJ7t.js → datetime-field-B8TrmsDK.js} +1 -1
  48. package/dist/datetime-field.js +1 -1
  49. package/dist/datetime-picker-CIRHVLQp.js +629 -0
  50. package/dist/datetime-picker.js +1 -1
  51. package/dist/datetime-range-picker-DM-1m98z.js +994 -0
  52. package/dist/datetime-range-picker.js +1 -1
  53. package/dist/{detail-panel-qOJiNuzr.js → detail-panel-CW53lUjp.js} +3 -3
  54. package/dist/detail-panel.js +1 -1
  55. package/dist/{dialog-Dmy-m_pe.js → dialog-BHYDDj1S.js} +112 -113
  56. package/dist/dialog.js +1 -1
  57. package/dist/docs/app-shell.json +1 -1
  58. package/dist/docs/button-group.json +1 -0
  59. package/dist/docs/button-group.md +1 -1
  60. package/dist/docs/button.json +45 -11
  61. package/dist/docs/button.md +10 -6
  62. package/dist/docs/calendar.json +7 -0
  63. package/dist/docs/calendar.md +1 -0
  64. package/dist/docs/chart.json +7 -0
  65. package/dist/docs/chart.md +1 -0
  66. package/dist/docs/collapsible.json +1 -1
  67. package/dist/docs/collapsible.md +1 -1
  68. package/dist/docs/currency-field.json +32 -1
  69. package/dist/docs/currency-field.md +4 -1
  70. package/dist/docs/date-field.json +8 -1
  71. package/dist/docs/date-field.md +2 -1
  72. package/dist/docs/date-picker.examples.md +29 -0
  73. package/dist/docs/date-picker.json +16 -1
  74. package/dist/docs/date-picker.md +2 -1
  75. package/dist/docs/dialog.examples.md +26 -0
  76. package/dist/docs/dialog.json +14 -2
  77. package/dist/docs/dialog.md +1 -1
  78. package/dist/docs/guidelines/composition.md +10 -0
  79. package/dist/docs/guidelines/index.md +2 -0
  80. package/dist/docs/guidelines/list-pages.md +12 -1
  81. package/dist/docs/list.json +26 -1
  82. package/dist/docs/list.md +4 -1
  83. package/dist/docs/page.json +1 -0
  84. package/dist/docs/page.md +1 -0
  85. package/dist/docs/popover.json +1 -1
  86. package/dist/docs/segmented-control.json +29 -1
  87. package/dist/docs/segmented-control.md +17 -1
  88. package/dist/docs/select.json +1 -1
  89. package/dist/docs/select.md +1 -1
  90. package/dist/docs/side-navigation.json +2 -2
  91. package/dist/docs/side-navigation.md +19 -4
  92. package/dist/docs/skills/compose-screen/SKILL.md +7 -0
  93. package/dist/docs/skills/theme-app/SKILL.md +5 -0
  94. package/dist/docs/split-button.json +1 -0
  95. package/dist/docs/split-button.md +1 -1
  96. package/dist/docs/stat-card.json +1 -0
  97. package/dist/docs/stat-card.md +1 -1
  98. package/dist/docs/table.examples.md +1 -1
  99. package/dist/docs/table.json +91 -2
  100. package/dist/docs/table.md +14 -1
  101. package/dist/docs/tabs.examples.md +1 -1
  102. package/dist/docs/tabs.json +10 -2
  103. package/dist/docs/tabs.md +3 -1
  104. package/dist/docs/text-field.json +1 -1
  105. package/dist/docs/text-field.md +1 -1
  106. package/dist/docs/toggle-group.json +14 -3
  107. package/dist/docs/toggle-group.md +3 -3
  108. package/dist/docs/toggle.json +12 -3
  109. package/dist/docs/toggle.md +3 -3
  110. package/dist/docs/tokens.md +25 -1
  111. package/dist/docs/top-navigation.examples.md +23 -5
  112. package/dist/docs/top-navigation.json +2 -2
  113. package/dist/docs/tour.json +1 -1
  114. package/dist/drawer-LXM44eso.js +757 -0
  115. package/dist/drawer.js +1 -1
  116. package/dist/entity-picker-Dn1T7JCq.js +1110 -0
  117. package/dist/entity-picker.js +1 -1
  118. package/dist/{event-calendar-DYjVwTI6.js → event-calendar-CnF3iIZD.js} +5 -5
  119. package/dist/event-calendar.js +1 -1
  120. package/dist/{field-BJh5HI7w.js → field-NJaCxl2h.js} +1 -1
  121. package/dist/{field-group-BDaspQPh.js → field-group-hAzVa2O9.js} +1 -1
  122. package/dist/field-group.js +1 -1
  123. package/dist/field.js +1 -1
  124. package/dist/{filter-bar-Bh7cbqDE.js → filter-bar-CHyy1o--.js} +20 -20
  125. package/dist/filter-bar.js +1 -1
  126. package/dist/{hover-card-CSDbA6zd.js → hover-card-BJE5dtaQ.js} +1 -1
  127. package/dist/hover-card.js +1 -1
  128. package/dist/{icon-button-TnvMhK4o.js → icon-button-CCWkCDMs.js} +26 -24
  129. package/dist/import-export-center-jF37b909.js +813 -0
  130. package/dist/import-export-center.js +1 -1
  131. package/dist/index.js +92 -91
  132. package/dist/{list-C1Y8MWp2.js → list-WsQ6ZzCa.js} +16 -12
  133. package/dist/{list-item-DN_mcouU.js → list-item-DpCwZIrd.js} +1 -1
  134. package/dist/list-item.js +1 -1
  135. package/dist/list.js +1 -1
  136. package/dist/{listbox-4WvqR0JF.js → listbox-Dv856z9I.js} +1 -1
  137. package/dist/listbox.js +1 -1
  138. package/dist/{loading-overlay-B83XFctM.js → loading-overlay-COfnckse.js} +73 -73
  139. package/dist/loading-overlay.js +1 -1
  140. package/dist/{markdown-CpfDn1LF.js → markdown-CeG8mUbI.js} +2 -2
  141. package/dist/markdown.js +1 -1
  142. package/dist/menu-parts-W58pVNUt.js +786 -0
  143. package/dist/menu.js +1 -1
  144. package/dist/{menubar-CtGavUTO.js → menubar-b2CruimJ.js} +1 -1
  145. package/dist/menubar.js +1 -1
  146. package/dist/{multi-select-B-tuIwAu.js → multi-select-DQ5ds0fX.js} +390 -390
  147. package/dist/multi-select.js +1 -1
  148. package/dist/{notification-center-C4pEHJ3h.js → notification-center-C1iWWl5Y.js} +3 -3
  149. package/dist/notification-center.js +1 -1
  150. package/dist/{number-field-J_koud1r.js → number-field-BFIAmv-z.js} +1 -1
  151. package/dist/number-field.js +1 -1
  152. package/dist/{otp-input-Bf8JUiVR.js → otp-input-BNQhuKaT.js} +1 -1
  153. package/dist/otp-input.js +1 -1
  154. package/dist/{page-kQgLctsA.js → page-IiYXk1sz.js} +32 -32
  155. package/dist/{page-header-CWEBfMGq.js → page-header-Bn4nIGfF.js} +1 -1
  156. package/dist/page-header.js +1 -1
  157. package/dist/page.js +1 -1
  158. package/dist/popover-Be7JWbGJ.js +475 -0
  159. package/dist/popover.js +1 -1
  160. package/dist/press-selection-DjOllE2B.js +29 -0
  161. package/dist/press-selection.js +2 -0
  162. package/dist/{prompt-composer-B7MMcER0.js → prompt-composer-BxpdkTpZ.js} +1 -1
  163. package/dist/prompt-composer.js +1 -1
  164. package/dist/{radio-group-BFpjhDkV.js → radio-group-BaVIP9UH.js} +2 -2
  165. package/dist/radio-group.js +1 -1
  166. package/dist/{rating-D1EsADFM.js → rating-DYBQBzwB.js} +1 -1
  167. package/dist/rating.js +1 -1
  168. package/dist/{saved-views-BueW-Lyb.js → saved-views-DlE_--Z9.js} +5 -5
  169. package/dist/saved-views.js +1 -1
  170. package/dist/{segmented-control-Cy_5D3Nj.js → segmented-control-DmuOGiu6.js} +28 -24
  171. package/dist/segmented-control.js +1 -1
  172. package/dist/{select-hRFp8nCj.js → select-M7Io4UL9.js} +278 -265
  173. package/dist/select.js +1 -1
  174. package/dist/{side-navigation-YUiJRpng.js → side-navigation-CBLtCzuJ.js} +186 -187
  175. package/dist/side-navigation.js +1 -1
  176. package/dist/{slider-B432T6nD.js → slider-DTes4HLF.js} +1 -1
  177. package/dist/slider.js +1 -1
  178. package/dist/{split-button-DHF3v3PJ.js → split-button-CPgHiy9G.js} +2 -2
  179. package/dist/split-button.js +1 -1
  180. package/dist/styles.css +1 -1
  181. package/dist/{switch-4MHwKmkz.js → switch-DQzuIhPX.js} +1 -1
  182. package/dist/switch.js +1 -1
  183. package/dist/{table-Bd79IwDC.js → table-U9eJYCuB.js} +327 -292
  184. package/dist/table.js +2 -2
  185. package/dist/tabs-BtHmjlnM.js +348 -0
  186. package/dist/tabs.js +1 -1
  187. package/dist/{tags-input-DLdHLWrH.js → tags-input-CcOkm0AW.js} +1 -1
  188. package/dist/tags-input.js +1 -1
  189. package/dist/{text-field-BktZbmzD.js → text-field-DLfIZ0fk.js} +1 -1
  190. package/dist/text-field.js +1 -1
  191. package/dist/{textarea-JAK2RJl0.js → textarea-CBJBJBi6.js} +1 -1
  192. package/dist/textarea.js +1 -1
  193. package/dist/{time-field-DCG_VtGO.js → time-field-DrhiCtUl.js} +1 -1
  194. package/dist/time-field.js +1 -1
  195. package/dist/{time-picker-DuT1tf5-.js → time-picker-CRQsMJbQ.js} +102 -102
  196. package/dist/time-picker.js +1 -1
  197. package/dist/{time-range-picker-HwBvrrXN.js → time-range-picker-DlZJsj1e.js} +202 -202
  198. package/dist/time-range-picker.js +1 -1
  199. package/dist/{toast-wI8BtPY5.js → toast-Bf3e0AgC.js} +157 -157
  200. package/dist/toast.js +1 -1
  201. package/dist/toggle-group-7iBR9Rn1.js +142 -0
  202. package/dist/toggle-group.js +1 -1
  203. package/dist/{toolbar-CDQTydDx.js → toolbar-DDZpEftQ.js} +1 -1
  204. package/dist/toolbar.js +1 -1
  205. package/dist/{tooltip-BggqPDcW.js → tooltip-DbKTPe_i.js} +108 -109
  206. package/dist/tooltip.js +1 -1
  207. package/dist/{top-navigation-COQZsNqW.js → top-navigation-e-tWMGNr.js} +255 -256
  208. package/dist/top-navigation.js +1 -1
  209. package/dist/{tour-C11DmYTC.js → tour-BTdt716T.js} +180 -180
  210. package/dist/tour.js +1 -1
  211. package/dist/{transfer-JA9TWjAw.js → transfer-CqZOTLMP.js} +6 -6
  212. package/dist/transfer.js +1 -1
  213. package/dist/types/accordion/accordion.d.ts.map +1 -1
  214. package/dist/types/app-shell/app-shell.d.ts.map +1 -1
  215. package/dist/types/button/button-link.d.ts +1 -1
  216. package/dist/types/button/button-link.d.ts.map +1 -1
  217. package/dist/types/button/button-root.d.ts +5 -3
  218. package/dist/types/button/button-root.d.ts.map +1 -1
  219. package/dist/types/button/button.constants.d.ts +2 -1
  220. package/dist/types/button/button.constants.d.ts.map +1 -1
  221. package/dist/types/button/button.d.ts +1 -1
  222. package/dist/types/button/button.d.ts.map +1 -1
  223. package/dist/types/button/button.types.d.ts +9 -2
  224. package/dist/types/button/button.types.d.ts.map +1 -1
  225. package/dist/types/button/index.d.ts +1 -1
  226. package/dist/types/button/index.d.ts.map +1 -1
  227. package/dist/types/button/toggle-button.d.ts +1 -1
  228. package/dist/types/button/toggle-button.d.ts.map +1 -1
  229. package/dist/types/calendar/calendar.d.ts +1 -1
  230. package/dist/types/calendar/calendar.d.ts.map +1 -1
  231. package/dist/types/calendar/calendar.types.d.ts +9 -0
  232. package/dist/types/calendar/calendar.types.d.ts.map +1 -1
  233. package/dist/types/calendar/index.d.ts +1 -1
  234. package/dist/types/calendar/index.d.ts.map +1 -1
  235. package/dist/types/chart/chart.d.ts.map +1 -1
  236. package/dist/types/collapsible/collapsible-parts.d.ts.map +1 -1
  237. package/dist/types/currency-field/currency-field.d.ts +1 -1
  238. package/dist/types/currency-field/currency-field.d.ts.map +1 -1
  239. package/dist/types/currency-field/currency-field.types.d.ts +14 -0
  240. package/dist/types/currency-field/currency-field.types.d.ts.map +1 -1
  241. package/dist/types/currency-field/index.d.ts +1 -1
  242. package/dist/types/currency-field/index.d.ts.map +1 -1
  243. package/dist/types/date-field/date-field.d.ts +1 -1
  244. package/dist/types/date-field/date-field.d.ts.map +1 -1
  245. package/dist/types/date-field/date-field.types.d.ts +7 -0
  246. package/dist/types/date-field/date-field.types.d.ts.map +1 -1
  247. package/dist/types/date-picker/date-picker.d.ts +5 -1
  248. package/dist/types/date-picker/date-picker.d.ts.map +1 -1
  249. package/dist/types/date-picker/date-picker.types.d.ts +20 -2
  250. package/dist/types/date-picker/date-picker.types.d.ts.map +1 -1
  251. package/dist/types/date-picker/index.d.ts +1 -1
  252. package/dist/types/date-picker/index.d.ts.map +1 -1
  253. package/dist/types/dialog/dialog-demo.d.ts +8 -0
  254. package/dist/types/dialog/dialog-demo.d.ts.map +1 -1
  255. package/dist/types/filter-bar/filter-bar.d.ts.map +1 -1
  256. package/dist/types/index.d.ts +1 -0
  257. package/dist/types/index.d.ts.map +1 -1
  258. package/dist/types/list/index.d.ts +1 -1
  259. package/dist/types/list/index.d.ts.map +1 -1
  260. package/dist/types/list/list-parts.d.ts +1 -1
  261. package/dist/types/list/list-parts.d.ts.map +1 -1
  262. package/dist/types/list/list.types.d.ts +12 -0
  263. package/dist/types/list/list.types.d.ts.map +1 -1
  264. package/dist/types/page/page.d.ts.map +1 -1
  265. package/dist/types/press-selection/index.d.ts +3 -0
  266. package/dist/types/press-selection/index.d.ts.map +1 -0
  267. package/dist/types/press-selection/press-selection.d.ts +23 -0
  268. package/dist/types/press-selection/press-selection.d.ts.map +1 -0
  269. package/dist/types/segmented-control/index.d.ts +1 -1
  270. package/dist/types/segmented-control/index.d.ts.map +1 -1
  271. package/dist/types/segmented-control/segmented-control-defaults.d.ts.map +1 -1
  272. package/dist/types/segmented-control/segmented-control.d.ts +1 -1
  273. package/dist/types/segmented-control/segmented-control.d.ts.map +1 -1
  274. package/dist/types/segmented-control/segmented-control.types.d.ts +10 -0
  275. package/dist/types/segmented-control/segmented-control.types.d.ts.map +1 -1
  276. package/dist/types/select/select-items.d.ts.map +1 -1
  277. package/dist/types/select/select-parts.d.ts.map +1 -1
  278. package/dist/types/select/select.d.ts.map +1 -1
  279. package/dist/types/table/index.d.ts +2 -2
  280. package/dist/types/table/index.d.ts.map +1 -1
  281. package/dist/types/table/table-defaults.d.ts.map +1 -1
  282. package/dist/types/table/table-parts.d.ts +8 -2
  283. package/dist/types/table/table-parts.d.ts.map +1 -1
  284. package/dist/types/table/table.d.ts +1 -1
  285. package/dist/types/table/table.d.ts.map +1 -1
  286. package/dist/types/table/table.types.d.ts +43 -1
  287. package/dist/types/table/table.types.d.ts.map +1 -1
  288. package/dist/types/tabs/tabs-parts.d.ts.map +1 -1
  289. package/dist/types/tabs/tabs.d.ts +1 -1
  290. package/dist/types/tabs/tabs.d.ts.map +1 -1
  291. package/dist/types/tabs/tabs.types.d.ts +18 -0
  292. package/dist/types/tabs/tabs.types.d.ts.map +1 -1
  293. package/dist/types/toggle/toggle.types.d.ts +1 -1
  294. package/dist/types/toggle/toggle.types.d.ts.map +1 -1
  295. package/dist/types/toggle-group/toggle-group.d.ts.map +1 -1
  296. package/dist/types/toggle-group/toggle-group.types.d.ts +6 -1
  297. package/dist/types/toggle-group/toggle-group.types.d.ts.map +1 -1
  298. package/dist/{upload-Bq_UiyMr.js → upload-DjnlVR8y.js} +2 -2
  299. package/dist/upload.js +1 -1
  300. package/dist/{wizard-B4GrlEqh.js → wizard-BxA08vXt.js} +1 -1
  301. package/dist/wizard.js +1 -1
  302. package/package.json +12 -7
  303. package/dist/button-DakQ-7Tm.js +0 -97
  304. package/dist/calendar-B3mio8iQ.js +0 -387
  305. package/dist/cascader-CARCYdHh.js +0 -1097
  306. package/dist/currency-field-B7OZ0hk7.js +0 -436
  307. package/dist/date-field-D_kLLTfL.js +0 -279
  308. package/dist/date-picker-DQ5SIhdA.js +0 -264
  309. package/dist/date-range-picker-lpB08hK_.js +0 -471
  310. package/dist/datetime-picker-0F0kDW-8.js +0 -629
  311. package/dist/datetime-range-picker-ClnEleth.js +0 -994
  312. package/dist/drawer-Dtospdqk.js +0 -758
  313. package/dist/entity-picker-Dm-y0RNE.js +0 -1111
  314. package/dist/import-export-center-CkZ_Ar9w.js +0 -813
  315. package/dist/menu-parts-BQej6eU9.js +0 -787
  316. package/dist/popover-DE22lSpV.js +0 -476
  317. package/dist/react-dom-DzrKNxo6.js +0 -273
  318. package/dist/tabs-DQ36APY-.js +0 -343
  319. package/dist/toggle-group-DQBlI1TV.js +0 -140
@@ -10,6 +10,7 @@
10
10
  "tone": [
11
11
  "accent",
12
12
  "secondary",
13
+ "neutral",
13
14
  "success",
14
15
  "warning",
15
16
  "danger"
@@ -27,6 +28,10 @@
27
28
  "shape": [
28
29
  "square",
29
30
  "circle"
31
+ ],
32
+ "justify": [
33
+ "center",
34
+ "between"
30
35
  ]
31
36
  },
32
37
  "members": {
@@ -38,6 +43,7 @@
38
43
  "size": "md",
39
44
  "type": "button",
40
45
  "fullWidth": false,
46
+ "justify": "center",
41
47
  "disabled": false,
42
48
  "focusableWhenDisabled": false,
43
49
  "loading": false,
@@ -73,6 +79,7 @@
73
79
  "variant": "solid",
74
80
  "size": "md",
75
81
  "fullWidth": false,
82
+ "justify": "center",
76
83
  "disabled": false
77
84
  },
78
85
  "capabilities": [
@@ -138,6 +145,7 @@
138
145
  "size": "md",
139
146
  "type": "button",
140
147
  "fullWidth": false,
148
+ "justify": "center",
141
149
  "disabled": false,
142
150
  "focusableWhenDisabled": false,
143
151
  "loading": false,
@@ -180,7 +188,7 @@
180
188
  "part": "root",
181
189
  "element": "button, or the element render returns",
182
190
  "required": true,
183
- "purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-full-width, data-disabled and data-loading when they apply."
191
+ "purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-justify, and data-full-width, data-disabled and data-loading when they apply."
184
192
  },
185
193
  {
186
194
  "part": "start",
@@ -210,10 +218,10 @@
210
218
  "api": [
211
219
  {
212
220
  "name": "tone",
213
- "type": "accent | secondary | success | warning | danger",
221
+ "type": "accent | secondary | neutral | success | warning | danger",
214
222
  "defaultValue": "accent",
215
223
  "appliesTo": "Button",
216
- "description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
224
+ "description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
217
225
  },
218
226
  {
219
227
  "name": "variant",
@@ -250,6 +258,13 @@
250
258
  "appliesTo": "Button",
251
259
  "description": "Fills the inline size of the container."
252
260
  },
261
+ {
262
+ "name": "justify",
263
+ "type": "center | between",
264
+ "defaultValue": "center",
265
+ "appliesTo": "Button",
266
+ "description": "Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document."
267
+ },
253
268
  {
254
269
  "name": "disabled",
255
270
  "type": "boolean",
@@ -329,7 +344,7 @@
329
344
  "part": "root",
330
345
  "element": "a, or the element render returns",
331
346
  "required": true,
332
- "purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-full-width and data-disabled when they apply."
347
+ "purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-justify, and data-full-width and data-disabled when they apply."
333
348
  },
334
349
  {
335
350
  "part": "start",
@@ -367,10 +382,10 @@
367
382
  },
368
383
  {
369
384
  "name": "tone",
370
- "type": "accent | secondary | success | warning | danger",
385
+ "type": "accent | secondary | neutral | success | warning | danger",
371
386
  "defaultValue": "accent",
372
387
  "appliesTo": "ButtonLink",
373
- "description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
388
+ "description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
374
389
  },
375
390
  {
376
391
  "name": "variant",
@@ -407,6 +422,13 @@
407
422
  "appliesTo": "ButtonLink",
408
423
  "description": "Fills the inline size of the container."
409
424
  },
425
+ {
426
+ "name": "justify",
427
+ "type": "center | between",
428
+ "defaultValue": "center",
429
+ "appliesTo": "ButtonLink",
430
+ "description": "Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document."
431
+ },
410
432
  {
411
433
  "name": "disabled",
412
434
  "type": "boolean",
@@ -459,10 +481,10 @@
459
481
  },
460
482
  {
461
483
  "name": "tone",
462
- "type": "accent | secondary | success | warning | danger",
484
+ "type": "accent | secondary | neutral | success | warning | danger",
463
485
  "defaultValue": "secondary",
464
486
  "appliesTo": "IconButton",
465
- "description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
487
+ "description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
466
488
  },
467
489
  {
468
490
  "name": "variant",
@@ -576,7 +598,7 @@
576
598
  "part": "root",
577
599
  "element": "button, or the element render returns",
578
600
  "required": true,
579
- "purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-full-width, data-disabled, data-loading and data-pressed when they apply."
601
+ "purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-justify, and data-full-width, data-disabled, data-loading and data-pressed when they apply."
580
602
  },
581
603
  {
582
604
  "part": "start",
@@ -606,10 +628,10 @@
606
628
  "api": [
607
629
  {
608
630
  "name": "tone",
609
- "type": "accent | secondary | success | warning | danger",
631
+ "type": "accent | secondary | neutral | success | warning | danger",
610
632
  "defaultValue": "secondary",
611
633
  "appliesTo": "ToggleButton",
612
- "description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
634
+ "description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
613
635
  },
614
636
  {
615
637
  "name": "variant",
@@ -646,6 +668,13 @@
646
668
  "appliesTo": "ToggleButton",
647
669
  "description": "Fills the inline size of the container."
648
670
  },
671
+ {
672
+ "name": "justify",
673
+ "type": "center | between",
674
+ "defaultValue": "center",
675
+ "appliesTo": "ToggleButton",
676
+ "description": "Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document."
677
+ },
649
678
  {
650
679
  "name": "disabled",
651
680
  "type": "boolean",
@@ -783,6 +812,11 @@
783
812
  "--slotted-tone-danger-solid-active",
784
813
  "--slotted-tone-danger-solid-hover",
785
814
  "--slotted-tone-danger-text",
815
+ "--slotted-tone-neutral-on-solid",
816
+ "--slotted-tone-neutral-solid",
817
+ "--slotted-tone-neutral-solid-active",
818
+ "--slotted-tone-neutral-solid-hover",
819
+ "--slotted-tone-neutral-text",
786
820
  "--slotted-tone-secondary-on-solid",
787
821
  "--slotted-tone-secondary-solid",
788
822
  "--slotted-tone-secondary-solid-active",
@@ -72,12 +72,13 @@ export default function ButtonBasic() {
72
72
 
73
73
  | Name | Type | Default | Applies to | Description |
74
74
  | --- | --- | --- | --- | --- |
75
- | `tone` | `accent \| secondary \| success \| warning \| danger` | accent | Button | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
75
+ | `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | accent | Button | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
76
76
  | `variant` | `solid \| outline \| ghost` | solid | Button | How the tone is painted: solid, outline or ghost. |
77
77
  | `size` | `sm \| md \| lg` | md | Button | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
78
78
  | `start` | `ReactNode` | — | Button | Content before the label, such as an icon. It mirrors in a right-to-left document. |
79
79
  | `end` | `ReactNode` | — | Button | Content after the label, such as an icon. It mirrors in a right-to-left document. |
80
80
  | `fullWidth` | `boolean` | false | Button | Fills the inline size of the container. |
81
+ | `justify` | `center \| between` | center | Button | Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document. |
81
82
  | `disabled` | `boolean` | false | Button | Refuses the action and marks the control unavailable. On its own, it sets the native disabled attribute, which also removes the control from the tab sequence. |
82
83
  | `focusableWhenDisabled` | `boolean` | false | Button | Keeps a disabled control in the tab sequence: aria-disabled replaces the native attribute, and activation is still refused. |
83
84
  | `loading` | `boolean` | false | Button | Refuses activation, keeps focus, and shows a progress indicator named by messages.loading. |
@@ -93,12 +94,13 @@ export default function ButtonBasic() {
93
94
  | --- | --- | --- | --- | --- |
94
95
  | `href` | `string` | required without render | ButtonLink | The destination. A disabled ButtonLink does not render it. |
95
96
  | `render` | `(rootProps) => ReactElement` | — | ButtonLink | Renders the root through a router’s link component. The function receives every root prop and must pass all of them on. |
96
- | `tone` | `accent \| secondary \| success \| warning \| danger` | accent | ButtonLink | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
97
+ | `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | accent | ButtonLink | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
97
98
  | `variant` | `solid \| outline \| ghost` | solid | ButtonLink | How the tone is painted: solid, outline or ghost. |
98
99
  | `size` | `sm \| md \| lg` | md | ButtonLink | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
99
100
  | `start` | `ReactNode` | — | ButtonLink | Content before the label, such as an icon. It mirrors in a right-to-left document. |
100
101
  | `end` | `ReactNode` | — | ButtonLink | Content after the label, such as an icon. It mirrors in a right-to-left document. |
101
102
  | `fullWidth` | `boolean` | false | ButtonLink | Fills the inline size of the container. |
103
+ | `justify` | `center \| between` | center | ButtonLink | Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document. |
102
104
  | `disabled` | `boolean` | false | ButtonLink | Removes the href and refuses activation. The link stays focusable with role="link" and aria-disabled. |
103
105
 
104
106
  ### iconButton
@@ -106,7 +108,7 @@ export default function ButtonBasic() {
106
108
  | Name | Type | Default | Applies to | Description |
107
109
  | --- | --- | --- | --- | --- |
108
110
  | `aria-label \| aria-labelledby` | `string` | required | IconButton | The accessible name. Required, because an icon supplies no text. When both are present, aria-labelledby names the button. |
109
- | `tone` | `accent \| secondary \| success \| warning \| danger` | secondary | IconButton | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
111
+ | `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | secondary | IconButton | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
110
112
  | `variant` | `solid \| outline \| ghost` | ghost | IconButton | How the tone is painted: solid, outline or ghost. |
111
113
  | `size` | `sm \| md \| lg` | md | IconButton | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
112
114
  | `shape` | `square \| circle` | square | IconButton | The corners of the control: square keeps the radius of the control scale, circle rounds it fully. Both are as wide as they are tall. |
@@ -125,12 +127,13 @@ export default function ButtonBasic() {
125
127
 
126
128
  | Name | Type | Default | Applies to | Description |
127
129
  | --- | --- | --- | --- | --- |
128
- | `tone` | `accent \| secondary \| success \| warning \| danger` | secondary | ToggleButton | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
130
+ | `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | secondary | ToggleButton | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
129
131
  | `variant` | `solid \| outline \| ghost` | outline | ToggleButton | How the tone is painted: solid, outline or ghost. |
130
132
  | `size` | `sm \| md \| lg` | md | ToggleButton | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
131
133
  | `start` | `ReactNode` | — | ToggleButton | Content before the label, such as an icon. It mirrors in a right-to-left document. |
132
134
  | `end` | `ReactNode` | — | ToggleButton | Content after the label, such as an icon. It mirrors in a right-to-left document. |
133
135
  | `fullWidth` | `boolean` | false | ToggleButton | Fills the inline size of the container. |
136
+ | `justify` | `center \| between` | center | ToggleButton | Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document. |
134
137
  | `disabled` | `boolean` | false | ToggleButton | Refuses the action and marks the control unavailable. On its own, it sets the native disabled attribute, which also removes the control from the tab sequence. |
135
138
  | `focusableWhenDisabled` | `boolean` | false | ToggleButton | Keeps a disabled control in the tab sequence: aria-disabled replaces the native attribute, and activation is still refused. |
136
139
  | `loading` | `boolean` | false | ToggleButton | Refuses activation, keeps focus, and shows a progress indicator named by messages.loading. |
@@ -146,10 +149,11 @@ export default function ButtonBasic() {
146
149
 
147
150
  | Axis | Values | Default |
148
151
  | --- | --- | --- |
149
- | `tone` | `accent`, `secondary`, `success`, `warning`, `danger` | `accent`, `secondary` |
152
+ | `tone` | `accent`, `secondary`, `neutral`, `success`, `warning`, `danger` | `accent`, `secondary` |
150
153
  | `variant` | `solid`, `outline`, `ghost` | `solid`, `ghost`, `outline` |
151
154
  | `size` | `sm`, `md`, `lg` | `md` |
152
155
  | `shape` | `square`, `circle` | `square` |
156
+ | `justify` | `center`, `between` | `center` |
153
157
 
154
158
  ## Rules
155
159
 
@@ -180,7 +184,7 @@ export default function ButtonBasic() {
180
184
 
181
185
  ## Tokens
182
186
 
183
- `--slotted-border-subtle`, `--slotted-border-width-thin`, `--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-font-weight`, `--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-letter-spacing`, `--slotted-control-line-height`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-duration-loop`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-line-height-sm`, `--slotted-radius-full`, `--slotted-space-2`, `--slotted-target-min`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-solid-active`, `--slotted-tone-accent-solid-hover`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-danger-on-solid`, `--slotted-tone-danger-solid`, `--slotted-tone-danger-solid-active`, `--slotted-tone-danger-solid-hover`, `--slotted-tone-danger-text`, `--slotted-tone-secondary-on-solid`, `--slotted-tone-secondary-solid`, `--slotted-tone-secondary-solid-active`, `--slotted-tone-secondary-solid-hover`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-secondary-text`, `--slotted-tone-success-on-solid`, `--slotted-tone-success-solid`, `--slotted-tone-success-solid-active`, `--slotted-tone-success-solid-hover`, `--slotted-tone-success-text`, `--slotted-tone-warning-on-solid`, `--slotted-tone-warning-solid`, `--slotted-tone-warning-solid-active`, `--slotted-tone-warning-solid-hover`, `--slotted-tone-warning-text`
187
+ `--slotted-border-subtle`, `--slotted-border-width-thin`, `--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-font-weight`, `--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-letter-spacing`, `--slotted-control-line-height`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-duration-loop`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-line-height-sm`, `--slotted-radius-full`, `--slotted-space-2`, `--slotted-target-min`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-solid-active`, `--slotted-tone-accent-solid-hover`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-danger-on-solid`, `--slotted-tone-danger-solid`, `--slotted-tone-danger-solid-active`, `--slotted-tone-danger-solid-hover`, `--slotted-tone-danger-text`, `--slotted-tone-neutral-on-solid`, `--slotted-tone-neutral-solid`, `--slotted-tone-neutral-solid-active`, `--slotted-tone-neutral-solid-hover`, `--slotted-tone-neutral-text`, `--slotted-tone-secondary-on-solid`, `--slotted-tone-secondary-solid`, `--slotted-tone-secondary-solid-active`, `--slotted-tone-secondary-solid-hover`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-secondary-text`, `--slotted-tone-success-on-solid`, `--slotted-tone-success-solid`, `--slotted-tone-success-solid-active`, `--slotted-tone-success-solid-hover`, `--slotted-tone-success-text`, `--slotted-tone-warning-on-solid`, `--slotted-tone-warning-solid`, `--slotted-tone-warning-solid-active`, `--slotted-tone-warning-solid-hover`, `--slotted-tone-warning-text`
184
188
 
185
189
  ## Examples
186
190
 
@@ -258,6 +258,13 @@
258
258
  "appliesTo": "Calendar",
259
259
  "description": "The view it opens on."
260
260
  },
261
+ {
262
+ "name": "granularity",
263
+ "type": "'day' | 'month'",
264
+ "defaultValue": "day",
265
+ "appliesTo": "Calendar",
266
+ "description": "What a choice is. month opens on the months of a year and never shows the day grid: a month cell is the value, written as the first day of that month, the arrow keys move one month or one row of four, Home and End reach January and December, Page Up and Page Down move a year, and Enter or Space chooses. A month the bounds leave no day of carries aria-disabled."
267
+ },
261
268
  {
262
269
  "name": "min",
263
270
  "type": "PlainDate",
@@ -51,6 +51,7 @@ Excerpt — not a complete module
51
51
  | `months` | `number` | 1 | Calendar | How many months are drawn side by side. They wrap when they do not fit; nothing is withdrawn. |
52
52
  | `view` | `'day' \| 'month' \| 'year'` | day | Calendar | Which grid is showing. Present means the consumer owns it; defaultView sets the starting one. |
53
53
  | `defaultView` | `'day' \| 'month' \| 'year'` | day | Calendar | The view it opens on. |
54
+ | `granularity` | `'day' \| 'month'` | day | Calendar | What a choice is. month opens on the months of a year and never shows the day grid: a month cell is the value, written as the first day of that month, the arrow keys move one month or one row of four, Home and End reach January and December, Page Up and Page Down move a year, and Enter or Space chooses. A month the bounds leave no day of carries aria-disabled. |
54
55
  | `min` | `PlainDate` | — | Calendar | The earliest date the reader may reach. An arrow that would leave the range stops at the edge. |
55
56
  | `max` | `PlainDate` | — | Calendar | The latest date the reader may reach. |
56
57
  | `isDateUnavailable` | `(date: PlainDate) => boolean` | — | Calendar | Refuses particular dates. A refused date stays focusable and cannot be chosen. |
@@ -202,6 +202,7 @@
202
202
  "tooltip-marker",
203
203
  "tooltip-label",
204
204
  "tooltip-value",
205
+ "tooltip-note",
205
206
  "tooltip-total",
206
207
  "skeleton",
207
208
  "empty",
@@ -416,6 +417,12 @@
416
417
  "required": false,
417
418
  "purpose": "The value in the series’ format, with the share of the whole on a pie."
418
419
  },
420
+ {
421
+ "part": "tooltip-note",
422
+ "element": "div",
423
+ "required": false,
424
+ "purpose": "The label of an upright line on this category, under the title. A label the plot had no room to draw is read here."
425
+ },
419
426
  {
420
427
  "part": "tooltip-total",
421
428
  "element": "div",
@@ -59,6 +59,7 @@ Excerpt — not a complete module
59
59
  | `tooltip-marker` | span | no |
60
60
  | `tooltip-label` | span | no |
61
61
  | `tooltip-value` | span | no |
62
+ | `tooltip-note` | div | no |
62
63
  | `tooltip-total` | div | no |
63
64
  | `skeleton` | div | no |
64
65
  | `empty` | div | no |
@@ -416,7 +416,7 @@
416
416
  {
417
417
  "id": "mount",
418
418
  "title": "When the content exists",
419
- "note": "eager builds it up front so the panel can transition closed, lazy builds it on the first open, active drops it each time, and until-found lets the browser’s own page search open the panel.",
419
+ "note": "eager builds it up front so the panel can transition closed, lazy builds it on the first open, active drops it each time, and until-found lets the browser’s own page search open the panel. A closed item under active commits once and reads no layout and no computed style; it creates no observer and no portal. Fifty closed items inside an Accordion, measured in Chrome: 7 ms of script and 23 ms to layout with a production build of React, 46 ms of script and 83 ms to layout with its development build.",
420
420
  "language": "tsx",
421
421
  "source": "<Collapsible mount=\"until-found\">\n <CollapsibleHeader>\n <CollapsibleTrigger>Histórico de entregas</CollapsibleTrigger>\n </CollapsibleHeader>\n <CollapsiblePanel>Entregue em 2 de setembro por Ana Ribeiro.</CollapsiblePanel>\n</Collapsible>;\n",
422
422
  "verdict": "excerpt"
@@ -187,7 +187,7 @@ Excerpt — not a complete module
187
187
 
188
188
  ### When the content exists
189
189
 
190
- eager builds it up front so the panel can transition closed, lazy builds it on the first open, active drops it each time, and until-found lets the browser’s own page search open the panel.
190
+ eager builds it up front so the panel can transition closed, lazy builds it on the first open, active drops it each time, and until-found lets the browser’s own page search open the panel. A closed item under active commits once and reads no layout and no computed style; it creates no observer and no portal. Fifty closed items inside an Accordion, measured in Chrome: 7 ms of script and 23 ms to layout with a production build of React, 46 ms of script and 83 ms to layout with its development build.
191
191
 
192
192
  Excerpt — not a complete module
193
193
 
@@ -45,6 +45,10 @@
45
45
  "formatOn": [
46
46
  "change",
47
47
  "commit"
48
+ ],
49
+ "appearance": [
50
+ "control",
51
+ "display"
48
52
  ]
49
53
  },
50
54
  "members": {
@@ -61,7 +65,8 @@
61
65
  "formatOn": "change",
62
66
  "currencyDisplay": "symbol",
63
67
  "wheel": false,
64
- "allowEmpty": false
68
+ "allowEmpty": false,
69
+ "appearance": "control"
65
70
  },
66
71
  "capabilities": [
67
72
  "value",
@@ -85,6 +90,7 @@
85
90
  ],
86
91
  "parts": [
87
92
  "root",
93
+ "symbol",
88
94
  "input",
89
95
  "start",
90
96
  "end",
@@ -113,6 +119,12 @@
113
119
  "required": true,
114
120
  "purpose": "The control. Holds the formatted amount, the identifier, aria-valuenow in major units and aria-valuetext as the reader sees it. It is type=\"text\" because type=\"number\" empties itself whenever the text is not a valid floating-point number, so no grouping separator and no currency symbol survives it. ref reaches it."
115
121
  },
122
+ {
123
+ "part": "symbol",
124
+ "element": "span",
125
+ "required": false,
126
+ "purpose": "The currency mark at the display appearance, drawn apart from the digits on the side the locale writes it, muted at the xl step. The input then holds the amount alone and its aria-valuetext carries the mark. Absent under currencyDisplay none and at the control appearance."
127
+ },
116
128
  {
117
129
  "part": "start",
118
130
  "element": "span",
@@ -193,6 +205,13 @@
193
205
  "appliesTo": "CurrencyField, CurrencyFieldDefaultsProvider",
194
206
  "description": "When the text takes the locale’s shape under entry=\"natural\". change regroups on every keystroke; commit holds the reader’s own text until blur, Enter or a step. Cents-first entry generates the text after every edit, so it decides nothing there"
195
207
  },
208
+ {
209
+ "name": "appearance",
210
+ "type": "'control' | 'display'",
211
+ "defaultValue": "control",
212
+ "appliesTo": "CurrencyField",
213
+ "description": "A field among fields, or the headline amount of an entry sheet: the 4xl step, the mark apart and muted, a rule under the amount instead of a box. size and variant do not apply to display"
214
+ },
196
215
  {
197
216
  "name": "align",
198
217
  "type": "'end' | 'start'",
@@ -446,6 +465,7 @@
446
465
  },
447
466
  "tokens": [
448
467
  "--slotted-border-subtle",
468
+ "--slotted-border-width-thin",
449
469
  "--slotted-control-border-color",
450
470
  "--slotted-control-border-width",
451
471
  "--slotted-control-font-family",
@@ -482,6 +502,7 @@
482
502
  "--slotted-currency-field-disabled-background",
483
503
  "--slotted-currency-field-disabled-border-color",
484
504
  "--slotted-currency-field-disabled-color",
505
+ "--slotted-currency-field-display-font-size",
485
506
  "--slotted-currency-field-hover-border-color",
486
507
  "--slotted-currency-field-icon-size-min",
487
508
  "--slotted-currency-field-invalid-border-color",
@@ -503,6 +524,9 @@
503
524
  "--slotted-currency-field-subtle-background",
504
525
  "--slotted-currency-field-subtle-border-color",
505
526
  "--slotted-currency-field-subtle-hover-background",
527
+ "--slotted-currency-field-symbol-color",
528
+ "--slotted-currency-field-symbol-font-size",
529
+ "--slotted-currency-field-underline-color",
506
530
  "--slotted-disabled-background",
507
531
  "--slotted-disabled-border",
508
532
  "--slotted-disabled-foreground",
@@ -510,10 +534,17 @@
510
534
  "--slotted-focus-ring-color-invalid",
511
535
  "--slotted-focus-ring-offset",
512
536
  "--slotted-focus-ring-width",
537
+ "--slotted-font-size-4xl",
538
+ "--slotted-font-size-xl",
539
+ "--slotted-font-weight-medium",
540
+ "--slotted-font-weight-regular",
541
+ "--slotted-letter-spacing-tighter",
542
+ "--slotted-line-height-4xl",
513
543
  "--slotted-radius-none",
514
544
  "--slotted-radius-xs",
515
545
  "--slotted-space-1",
516
546
  "--slotted-space-2",
547
+ "--slotted-space-3",
517
548
  "--slotted-surface-sunken",
518
549
  "--slotted-target-comfortable",
519
550
  "--slotted-target-min",
@@ -27,6 +27,7 @@ Excerpt — not a complete module
27
27
  | --- | --- | --- |
28
28
  | `root` | div, or the element render returns | yes |
29
29
  | `input` | input[type=text][role=spinbutton] | yes |
30
+ | `symbol` | span | no |
30
31
  | `start` | span | no |
31
32
  | `end` | span | no |
32
33
  | `scrub` | span (CurrencyFieldScrub) | no |
@@ -44,6 +45,7 @@ Excerpt — not a complete module
44
45
  | `defaultValue` | `number \| null` | — | CurrencyField | What an uncontrolled control starts from, read once. A native form reset returns to it |
45
46
  | `entry` | `'cents' \| 'natural'` | cents | CurrencyField, CurrencyFieldDefaultsProvider | How the reader types. cents is the cash register: digits enter at the minor unit and shift left, the separator is never typed and the caret has one legal position. natural is the spreadsheet, and the model number-field uses |
46
47
  | `formatOn` | `'change' \| 'commit'` | change | CurrencyField, CurrencyFieldDefaultsProvider | When the text takes the locale’s shape under entry="natural". change regroups on every keystroke; commit holds the reader’s own text until blur, Enter or a step. Cents-first entry generates the text after every edit, so it decides nothing there |
48
+ | `appearance` | `'control' \| 'display'` | control | CurrencyField | A field among fields, or the headline amount of an entry sheet: the 4xl step, the mark apart and muted, a rule under the amount instead of a box. size and variant do not apply to display |
47
49
  | `align` | `'end' \| 'start'` | end | CurrencyField, CurrencyFieldDefaultsProvider | Which edge the amount is set against. end by default: a column of amounts is compared on its last digit, and the cents-first caret already lives there |
48
50
  | `locale` | `string` | the language in force | CurrencyField | BCP 47. It decides the separators, where the symbol goes and the numbering system — never the symbol itself, which is the currency’s |
49
51
  | `format` | `Intl.NumberFormatOptions` | — | CurrencyField | Any other Intl option: currencySign for accounting parentheses, signDisplay, useGrouping, roundingMode. Every key here wins over the family’s own; style and currency are the family’s |
@@ -96,6 +98,7 @@ Excerpt — not a complete module
96
98
  | `clamp` | `blur`, `strict`, `none` | `blur` |
97
99
  | `currencyDisplay` | `symbol`, `narrowSymbol`, `code`, `name`, `none` | `symbol` |
98
100
  | `formatOn` | `change`, `commit` | `change` |
101
+ | `appearance` | `control`, `display` | `control` |
99
102
 
100
103
  ## Rules
101
104
 
@@ -110,7 +113,7 @@ Excerpt — not a complete module
110
113
 
111
114
  ## Tokens
112
115
 
113
- `--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-inner-size-lg`, `--slotted-control-inner-size-md`, `--slotted-control-inner-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-currency-field-action-size`, `--slotted-currency-field-adornment-color`, `--slotted-currency-field-background`, `--slotted-currency-field-border-color`, `--slotted-currency-field-color`, `--slotted-currency-field-disabled-background`, `--slotted-currency-field-disabled-border-color`, `--slotted-currency-field-disabled-color`, `--slotted-currency-field-hover-border-color`, `--slotted-currency-field-icon-size-min`, `--slotted-currency-field-invalid-border-color`, `--slotted-currency-field-invalid-edge-width`, `--slotted-currency-field-invalid-focus-ring-color`, `--slotted-currency-field-placeholder-color`, `--slotted-currency-field-plain-hover-background`, `--slotted-currency-field-radius`, `--slotted-currency-field-readonly-background`, `--slotted-currency-field-readonly-border-color`, `--slotted-currency-field-scrub-active-color`, `--slotted-currency-field-shadow`, `--slotted-currency-field-stepper-active-background`, `--slotted-currency-field-stepper-color`, `--slotted-currency-field-stepper-disabled-background`, `--slotted-currency-field-stepper-disabled-color`, `--slotted-currency-field-stepper-hover-background`, `--slotted-currency-field-stepper-size`, `--slotted-currency-field-subtle-background`, `--slotted-currency-field-subtle-border-color`, `--slotted-currency-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-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
116
+ `--slotted-border-subtle`, `--slotted-border-width-thin`, `--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-inner-size-lg`, `--slotted-control-inner-size-md`, `--slotted-control-inner-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-currency-field-action-size`, `--slotted-currency-field-adornment-color`, `--slotted-currency-field-background`, `--slotted-currency-field-border-color`, `--slotted-currency-field-color`, `--slotted-currency-field-disabled-background`, `--slotted-currency-field-disabled-border-color`, `--slotted-currency-field-disabled-color`, `--slotted-currency-field-display-font-size`, `--slotted-currency-field-hover-border-color`, `--slotted-currency-field-icon-size-min`, `--slotted-currency-field-invalid-border-color`, `--slotted-currency-field-invalid-edge-width`, `--slotted-currency-field-invalid-focus-ring-color`, `--slotted-currency-field-placeholder-color`, `--slotted-currency-field-plain-hover-background`, `--slotted-currency-field-radius`, `--slotted-currency-field-readonly-background`, `--slotted-currency-field-readonly-border-color`, `--slotted-currency-field-scrub-active-color`, `--slotted-currency-field-shadow`, `--slotted-currency-field-stepper-active-background`, `--slotted-currency-field-stepper-color`, `--slotted-currency-field-stepper-disabled-background`, `--slotted-currency-field-stepper-disabled-color`, `--slotted-currency-field-stepper-hover-background`, `--slotted-currency-field-stepper-size`, `--slotted-currency-field-subtle-background`, `--slotted-currency-field-subtle-border-color`, `--slotted-currency-field-subtle-hover-background`, `--slotted-currency-field-symbol-color`, `--slotted-currency-field-symbol-font-size`, `--slotted-currency-field-underline-color`, `--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-size-4xl`, `--slotted-font-size-xl`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-letter-spacing-tighter`, `--slotted-line-height-4xl`, `--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-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
114
117
 
115
118
  ## Examples
116
119
 
@@ -125,7 +125,7 @@
125
125
  "type": "PlainDate | null",
126
126
  "defaultValue": "—",
127
127
  "appliesTo": "DateField",
128
- "description": "The date the control shows. Present means the consumer owns it: the control asks and waits rather than moving it."
128
+ "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': value={parseISODate(iso)} onValueChange={(v) => setIso(v === null ? '' : toISODate(v))}."
129
129
  },
130
130
  {
131
131
  "name": "defaultValue",
@@ -134,6 +134,13 @@
134
134
  "appliesTo": "DateField",
135
135
  "description": "The date the control starts from when nobody else writes one. Read once; a later change to it is not new state."
136
136
  },
137
+ {
138
+ "name": "granularity",
139
+ "type": "'day' | 'month'",
140
+ "defaultValue": "day",
141
+ "appliesTo": "DateField",
142
+ "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."
143
+ },
137
144
  {
138
145
  "name": "min",
139
146
  "type": "PlainDate",
@@ -38,8 +38,9 @@ Excerpt — not a complete module
38
38
 
39
39
  | Name | Type | Default | Applies to | Description |
40
40
  | --- | --- | --- | --- | --- |
41
- | `value` | `PlainDate \| null` | — | DateField | The date the control shows. Present means the consumer owns it: the control asks and waits rather than moving it. |
41
+ | `value` | `PlainDate \| null` | — | DateField | 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': value={parseISODate(iso)} onValueChange={(v) => setIso(v === null ? '' : toISODate(v))}. |
42
42
  | `defaultValue` | `PlainDate \| null` | — | DateField | The date the control starts from when nobody else writes one. Read once; a later change to it is not new state. |
43
+ | `granularity` | `'day' \| 'month'` | day | DateField | 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. |
43
44
  | `min` | `PlainDate` | — | DateField | The earliest date the control accepts. Reported through each segment’s aria-valuemin, and a value below it makes the control invalid. |
44
45
  | `max` | `PlainDate` | — | DateField | The latest date the control accepts, on the same terms as min. |
45
46
  | `isDateUnavailable` | `(date: PlainDate) => boolean` | — | DateField | Refuses particular dates — a weekend, a holiday, a day already booked. A refused date makes the control invalid. |
@@ -740,6 +740,35 @@ export default function DatePickerInvoiceDue() {
740
740
  }
741
741
  ```
742
742
 
743
+ ### iso-date.tsx
744
+
745
+ Example
746
+
747
+ ```tsx
748
+ import { useState } from 'react';
749
+ import { DatePicker } from '@slotted/react/date-picker';
750
+ import { Field, FieldDescription, FieldLabel } from '@slotted/react/field';
751
+ import { isPlainDate, parseISODate, toISODate } from '@slotted/core/date';
752
+
753
+ export default function DatePickerIsoDate() {
754
+ /* The API carries the date as text; the picker holds a PlainDate. */
755
+ const [iso, setIso] = useState('2026-10-19');
756
+
757
+ return (
758
+ <Field>
759
+ <FieldLabel>Statement date</FieldLabel>
760
+ <DatePicker
761
+ onValueChange={(value) => setIso(isPlainDate(value) ? toISODate(value) : '')}
762
+ value={parseISODate(iso)}
763
+ />
764
+ <FieldDescription>
765
+ {iso === '' ? 'No date sent.' : `The API receives ${iso}.`}
766
+ </FieldDescription>
767
+ </Field>
768
+ );
769
+ }
770
+ ```
771
+
743
772
  ### locale.tsx
744
773
 
745
774
  Example
@@ -135,7 +135,7 @@
135
135
  "type": "PlainDate | DateRange | PlainDate[] | null",
136
136
  "defaultValue": "—",
137
137
  "appliesTo": "DatePicker",
138
- "description": "The selected value, whose shape follows selectionMode. Setting it makes the value controlled."
138
+ "description": "The selected value, whose shape follows selectionMode. Setting 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 onValueChange reports: value={parseISODate(iso)} onValueChange={(v) => setIso(isPlainDate(v) ? toISODate(v) : '')}."
139
139
  },
140
140
  {
141
141
  "name": "defaultValue",
@@ -179,6 +179,13 @@
179
179
  "appliesTo": "DatePicker",
180
180
  "description": "Returns true for a date the reader cannot choose. The calendar disables it, and a typed unavailable date marks the date picker invalid."
181
181
  },
182
+ {
183
+ "name": "granularity",
184
+ "type": "'day' | 'month'",
185
+ "defaultValue": "day",
186
+ "appliesTo": "DatePicker",
187
+ "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 }), onValueChange reports one, and name submits YYYY-MM. parseISOYearMonth and toISOYearMonth convert to and from that text. selectionMode, months, isDateUnavailable and the week props do not apply."
188
+ },
182
189
  {
183
190
  "name": "selectionMode",
184
191
  "type": "'single' | 'range' | 'multiple'",
@@ -627,6 +634,14 @@
627
634
  "source": "import { useState } from 'react';\nimport { DatePicker } from '@slotted/react/date-picker';\nimport { Field, FieldDescription, FieldLabel } from '@slotted/react/field';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@slotted/react/select';\nimport { Stack } from '@slotted/react/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\nexport default function DatePickerInvoiceDue() {\n const [issued, setIssued] = useState<PlainDate | null>(plainDate(2026, 9, 30));\n const [terms, setTerms] = useState('net-30');\n const days = TERMS.find((option) => option.value === terms)?.days ?? 0;\n const due = issued === null ? null : addDays(issued, days);\n\n return (\n <Stack gap={5}>\n <Field required>\n <FieldLabel>Invoice date</FieldLabel>\n <DatePicker\n onValueChange={(value) => setIssued(isPlainDate(value) ? value : null)}\n value={issued}\n />\n </Field>\n <Field>\n <FieldLabel>Payment terms</FieldLabel>\n <Select\n items={TERMS}\n onValueChange={(next) => {\n if (typeof next === 'string') setTerms(next);\n }}\n value={terms}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {TERMS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n <Field readOnly>\n <FieldLabel>Due date</FieldLabel>\n <DatePicker value={due} />\n <FieldDescription>\n {due === null ? 'Set the invoice date first.' : `Payment is due ${words.describe(due)}.`}\n </FieldDescription>\n </Field>\n </Stack>\n );\n}\n",
628
635
  "verdict": "example"
629
636
  },
637
+ {
638
+ "id": "iso-date",
639
+ "title": "iso-date.tsx",
640
+ "note": null,
641
+ "language": "tsx",
642
+ "source": "import { useState } from 'react';\nimport { DatePicker } from '@slotted/react/date-picker';\nimport { Field, FieldDescription, FieldLabel } from '@slotted/react/field';\nimport { isPlainDate, parseISODate, toISODate } from '@slotted/core/date';\n\nexport default function DatePickerIsoDate() {\n /* The API carries the date as text; the picker holds a PlainDate. */\n const [iso, setIso] = useState('2026-10-19');\n\n return (\n <Field>\n <FieldLabel>Statement date</FieldLabel>\n <DatePicker\n onValueChange={(value) => setIso(isPlainDate(value) ? toISODate(value) : '')}\n value={parseISODate(iso)}\n />\n <FieldDescription>\n {iso === '' ? 'No date sent.' : `The API receives ${iso}.`}\n </FieldDescription>\n </Field>\n );\n}\n",
643
+ "verdict": "example"
644
+ },
630
645
  {
631
646
  "id": "locale",
632
647
  "title": "locale.tsx",
@@ -44,13 +44,14 @@ export default function DatePickerBasic() {
44
44
 
45
45
  | Name | Type | Default | Applies to | Description |
46
46
  | --- | --- | --- | --- | --- |
47
- | `value` | `PlainDate \| DateRange \| PlainDate[] \| null` | — | DatePicker | The selected value, whose shape follows selectionMode. Setting it makes the value controlled. |
47
+ | `value` | `PlainDate \| DateRange \| PlainDate[] \| null` | — | DatePicker | The selected value, whose shape follows selectionMode. Setting 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 onValueChange reports: value={parseISODate(iso)} onValueChange={(v) => setIso(isPlainDate(v) ? toISODate(v) : '')}. |
48
48
  | `defaultValue` | `PlainDate \| DateRange \| PlainDate[] \| null` | — | DatePicker | The starting value of an uncontrolled date picker. Read once, on the first render. |
49
49
  | `open` | `boolean` | — | DatePicker | Whether the calendar is showing. Setting it makes the open state controlled. |
50
50
  | `defaultOpen` | `boolean` | false | DatePicker | Whether the calendar shows on the first render. Focus does not move into it. |
51
51
  | `min` | `PlainDate` | — | DatePicker | The earliest date the field and the calendar accept. Earlier days are disabled in the calendar, and an earlier typed date marks the date picker invalid. |
52
52
  | `max` | `PlainDate` | — | DatePicker | The latest date the field and the calendar accept. Later days are disabled in the calendar, and a later typed date marks the date picker invalid. |
53
53
  | `isDateUnavailable` | `(date: PlainDate) => boolean` | — | DatePicker | Returns true for a date the reader cannot choose. The calendar disables it, and a typed unavailable date marks the date picker invalid. |
54
+ | `granularity` | `'day' \| 'month'` | day | DatePicker | 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 }), onValueChange reports one, and name submits YYYY-MM. parseISOYearMonth and toISOYearMonth convert to and from that text. selectionMode, months, isDateUnavailable and the week props do not apply. |
54
55
  | `selectionMode` | `'single' \| 'range' \| 'multiple'` | single | DatePicker | 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 DateRangePicker. |
55
56
  | `months` | `number` | 1 | DatePicker | How many months the calendar draws side by side. |
56
57
  | `defaultView` | `'day' \| 'month' \| 'year'` | day | DatePicker | The grid the calendar opens on. |