mtrl 0.10.0-next.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) hide show
  1. package/README.md +130 -84
  2. package/dist/README.md +130 -84
  3. package/dist/components/badge/features.js +1 -1
  4. package/dist/components/bottom-sheet/api.d.ts +4 -3
  5. package/dist/components/bottom-sheet/features/drag.d.ts +3 -0
  6. package/dist/components/bottom-sheet/features/drag.js +23 -0
  7. package/dist/components/bottom-sheet/features/state.js +20 -1
  8. package/dist/components/bottom-sheet/features/structure.js +4 -3
  9. package/dist/components/button/features/progress.js +5 -3
  10. package/dist/components/button-group/button-group.js +3 -1
  11. package/dist/components/button-group/config.d.ts +8 -8
  12. package/dist/components/button-group/config.js +3 -2
  13. package/dist/components/button-group/constants.d.ts +7 -2
  14. package/dist/components/button-group/constants.js +5 -5
  15. package/dist/components/button-group/types.d.ts +5 -0
  16. package/dist/components/card/api.d.ts +4 -0
  17. package/dist/components/card/api.js +8 -0
  18. package/dist/components/card/card.js +1 -2
  19. package/dist/components/card/config.js +2 -14
  20. package/dist/components/card/content.js +1 -6
  21. package/dist/components/card/features.d.ts +5 -19
  22. package/dist/components/card/features.js +1 -11
  23. package/dist/components/card/index.d.ts +1 -1
  24. package/dist/components/card/types.d.ts +34 -3
  25. package/dist/components/carousel/features/scroll.js +7 -3
  26. package/dist/components/checkbox/config.js +18 -6
  27. package/dist/components/chips/api.js +1 -1
  28. package/dist/components/chips/config.js +1 -1
  29. package/dist/components/chips/features/controller.js +12 -6
  30. package/dist/components/chips/index.d.ts +1 -1
  31. package/dist/components/chips/types.d.ts +24 -5
  32. package/dist/components/datepicker/datepicker.d.ts +8 -2
  33. package/dist/components/datepicker/datepicker.js +61 -25
  34. package/dist/components/datepicker/index.d.ts +1 -1
  35. package/dist/components/datepicker/types.d.ts +63 -30
  36. package/dist/components/datepicker/utils.d.ts +5 -0
  37. package/dist/components/datepicker/utils.js +2 -0
  38. package/dist/components/dialog/features.js +21 -12
  39. package/dist/components/dialog/types.d.ts +4 -2
  40. package/dist/components/divider/features.js +3 -2
  41. package/dist/components/drawer/features/items.js +1 -0
  42. package/dist/components/drawer/types.d.ts +6 -0
  43. package/dist/components/extended-fab/api.d.ts +2 -0
  44. package/dist/components/extended-fab/api.js +2 -0
  45. package/dist/components/extended-fab/types.d.ts +6 -2
  46. package/dist/components/fab-menu/config.d.ts +11 -0
  47. package/dist/components/fab-menu/config.js +15 -0
  48. package/dist/components/fab-menu/constants.d.ts +59 -0
  49. package/dist/components/fab-menu/constants.js +30 -0
  50. package/dist/components/fab-menu/fab-menu.d.ts +40 -0
  51. package/dist/components/fab-menu/fab-menu.js +315 -0
  52. package/dist/components/fab-menu/index.d.ts +6 -0
  53. package/dist/components/fab-menu/index.js +4 -0
  54. package/dist/components/fab-menu/stagger.d.ts +10 -0
  55. package/dist/components/fab-menu/stagger.js +24 -0
  56. package/dist/components/fab-menu/types.d.ts +110 -0
  57. package/dist/components/fab-menu/types.js +1 -0
  58. package/dist/components/icon-button/features/toggle.d.ts +1 -0
  59. package/dist/components/icon-button/features/toggle.js +1 -0
  60. package/dist/components/icon-button/icon-button.d.ts +2 -2
  61. package/dist/components/icon-button/index.d.ts +2 -2
  62. package/dist/components/icon-button/types.d.ts +9 -2
  63. package/dist/components/index.d.ts +4 -0
  64. package/dist/components/index.js +2 -0
  65. package/dist/components/list/api.d.ts +2 -2
  66. package/dist/components/list/features/selection.js +1 -1
  67. package/dist/components/list/types.d.ts +5 -0
  68. package/dist/components/menu/features/controller.d.ts +2 -0
  69. package/dist/components/menu/features/controller.js +36 -34
  70. package/dist/components/menu/features/index.d.ts +1 -2
  71. package/dist/components/menu/features/index.js +1 -2
  72. package/dist/components/menu/features/loader.d.ts +35 -0
  73. package/dist/components/menu/features/loader.js +64 -0
  74. package/dist/components/menu/features/position.js +32 -32
  75. package/dist/components/menu/menu.js +2 -2
  76. package/dist/components/menu/types.d.ts +10 -2
  77. package/dist/components/navigation-rail/navigation-rail.js +1 -1
  78. package/dist/components/navigation-rail/types.d.ts +2 -0
  79. package/dist/components/progress/api.d.ts +4 -0
  80. package/dist/components/progress/api.js +17 -10
  81. package/dist/components/progress/config.js +3 -11
  82. package/dist/components/progress/features/canvas.d.ts +1 -0
  83. package/dist/components/progress/features/canvas.js +1 -1
  84. package/dist/components/progress/features/circular.js +7 -1
  85. package/dist/components/progress/features/state.js +5 -3
  86. package/dist/components/progress/index.d.ts +1 -1
  87. package/dist/components/progress/types.d.ts +21 -12
  88. package/dist/components/radios/radio.js +1 -3
  89. package/dist/components/search/api.d.ts +1 -1
  90. package/dist/components/search/api.js +2 -2
  91. package/dist/components/search/config.d.ts +2 -2
  92. package/dist/components/search/config.js +1 -1
  93. package/dist/components/search/features/suggestions.d.ts +2 -1
  94. package/dist/components/search/types.d.ts +2 -2
  95. package/dist/components/segmented-button/config.d.ts +1 -1
  96. package/dist/components/segmented-button/segmented-button.js +1 -43
  97. package/dist/components/segmented-button/types.d.ts +3 -3
  98. package/dist/components/select/features.js +2 -15
  99. package/dist/components/side-sheet/api.d.ts +4 -3
  100. package/dist/components/side-sheet/features/state.js +20 -1
  101. package/dist/components/slider/api.js +2 -2
  102. package/dist/components/slider/features/controller.d.ts +14 -14
  103. package/dist/components/slider/features/controller.js +2 -2
  104. package/dist/components/slider/features/tracks.d.ts +0 -9
  105. package/dist/components/slider/features/tracks.js +3 -1
  106. package/dist/components/slider/types.d.ts +2 -2
  107. package/dist/components/split-button/api.js +2 -1
  108. package/dist/components/split-button/types.d.ts +2 -0
  109. package/dist/components/switch/api.js +7 -0
  110. package/dist/components/switch/features.d.ts +4 -0
  111. package/dist/components/switch/features.js +9 -2
  112. package/dist/components/switch/types.d.ts +6 -0
  113. package/dist/components/tabs/api.js +0 -9
  114. package/dist/components/tabs/types.d.ts +1 -1
  115. package/dist/components/textfield/api.d.ts +1 -0
  116. package/dist/components/textfield/api.js +4 -1
  117. package/dist/components/textfield/constants.d.ts +5 -1
  118. package/dist/components/textfield/features/counter.d.ts +29 -0
  119. package/dist/components/textfield/features/counter.js +54 -0
  120. package/dist/components/textfield/features/field.d.ts +37 -0
  121. package/dist/components/textfield/features/field.js +39 -0
  122. package/dist/components/textfield/features/index.d.ts +4 -0
  123. package/dist/components/textfield/features/index.js +2 -0
  124. package/dist/components/textfield/features/leading-icon.js +2 -1
  125. package/dist/components/textfield/features/placement.js +65 -60
  126. package/dist/components/textfield/features/prefix-text.js +2 -1
  127. package/dist/components/textfield/features/suffix-text.js +2 -1
  128. package/dist/components/textfield/features/supporting-text.js +16 -33
  129. package/dist/components/textfield/features/trailing-icon.js +2 -1
  130. package/dist/components/textfield/textfield.js +2 -2
  131. package/dist/components/textfield/types.d.ts +7 -0
  132. package/dist/components/timepicker/api.js +4 -7
  133. package/dist/components/timepicker/config.d.ts +3 -3
  134. package/dist/components/timepicker/dial.d.ts +3 -3
  135. package/dist/components/timepicker/index.d.ts +2 -1
  136. package/dist/components/timepicker/types.d.ts +28 -14
  137. package/dist/components/timepicker/utils.d.ts +2 -2
  138. package/dist/components/toolbar/config.d.ts +19 -0
  139. package/dist/components/toolbar/config.js +46 -0
  140. package/dist/components/toolbar/constants.d.ts +66 -0
  141. package/dist/components/toolbar/constants.js +32 -0
  142. package/dist/components/toolbar/index.d.ts +6 -0
  143. package/dist/components/toolbar/index.js +4 -0
  144. package/dist/components/toolbar/toolbar.d.ts +29 -0
  145. package/dist/components/toolbar/toolbar.js +204 -0
  146. package/dist/components/toolbar/types.d.ts +152 -0
  147. package/dist/components/toolbar/types.js +1 -0
  148. package/dist/components/tooltip/types.d.ts +3 -2
  149. package/dist/core/compose/features/checkable.d.ts +3 -6
  150. package/dist/core/compose/features/checkable.js +4 -20
  151. package/dist/core/compose/features/disabled.js +14 -14
  152. package/dist/core/compose/features/events.d.ts +16 -4
  153. package/dist/core/compose/features/input.js +1 -4
  154. package/dist/core/compose/features/textinput.js +18 -18
  155. package/dist/core/compose/features/textlabel.js +6 -7
  156. package/dist/core/dom/index.d.ts +3 -1
  157. package/dist/core/dom/index.js +2 -1
  158. package/dist/core/dom/layer.d.ts +8 -0
  159. package/dist/core/dom/layer.js +26 -0
  160. package/dist/core/dom/roving.d.ts +30 -0
  161. package/dist/core/dom/roving.js +75 -0
  162. package/dist/core/index.d.ts +2 -0
  163. package/dist/core/index.js +1 -0
  164. package/dist/core/state/emitter.d.ts +8 -2
  165. package/dist/core/state/events.d.ts +4 -3
  166. package/dist/core/theme/index.d.ts +7 -0
  167. package/dist/core/theme/index.js +2 -0
  168. package/dist/core/theme/shape.d.ts +9 -0
  169. package/dist/core/theme/shape.js +1 -0
  170. package/dist/core/theme/tokens.d.ts +45 -0
  171. package/dist/core/theme/tokens.js +36 -0
  172. package/dist/core/utils/theme.d.ts +7 -2
  173. package/dist/core/utils/theme.js +21 -23
  174. package/dist/core/utils/warn.d.ts +8 -0
  175. package/dist/core/utils/warn.js +5 -0
  176. package/dist/elements/adapter.d.ts +3 -0
  177. package/dist/elements/adapter.js +3 -0
  178. package/dist/elements/badge.d.ts +8 -0
  179. package/dist/elements/bottom-app-bar.d.ts +9 -0
  180. package/dist/elements/bottom-app-bar.js +1 -0
  181. package/dist/elements/bottom-sheet.d.ts +9 -0
  182. package/dist/elements/bottom-sheet.js +1 -0
  183. package/dist/elements/button-group.d.ts +9 -0
  184. package/dist/elements/button.d.ts +8 -0
  185. package/dist/elements/card.d.ts +9 -0
  186. package/dist/elements/card.js +1 -0
  187. package/dist/elements/carousel.d.ts +9 -0
  188. package/dist/elements/checkbox.d.ts +8 -0
  189. package/dist/elements/chips.d.ts +10 -0
  190. package/dist/elements/chips.js +1 -3
  191. package/dist/elements/css/badge.js +3 -2
  192. package/dist/elements/css/bottom-app-bar.js +3 -2
  193. package/dist/elements/css/bottom-sheet.js +3 -2
  194. package/dist/elements/css/button-group.js +3 -2
  195. package/dist/elements/css/button.js +3 -2
  196. package/dist/elements/css/card.js +3 -2
  197. package/dist/elements/css/carousel.js +3 -2
  198. package/dist/elements/css/checkbox.js +3 -2
  199. package/dist/elements/css/chips.js +3 -2
  200. package/dist/elements/css/datepicker.js +3 -2
  201. package/dist/elements/css/dialog.js +3 -2
  202. package/dist/elements/css/divider.js +2 -1
  203. package/dist/elements/css/drawer.js +3 -2
  204. package/dist/elements/css/extended-fab.js +3 -2
  205. package/dist/elements/css/fab-menu.d.ts +1 -0
  206. package/dist/elements/css/fab-menu.js +6 -0
  207. package/dist/elements/css/fab.js +3 -2
  208. package/dist/elements/css/icon-button.js +3 -2
  209. package/dist/elements/css/index.js +2 -0
  210. package/dist/elements/css/list.js +3 -2
  211. package/dist/elements/css/loading-indicator.js +3 -2
  212. package/dist/elements/css/menu.js +3 -2
  213. package/dist/elements/css/navigation-rail.js +3 -2
  214. package/dist/elements/css/progress.js +3 -2
  215. package/dist/elements/css/radios.js +3 -2
  216. package/dist/elements/css/search.js +3 -2
  217. package/dist/elements/css/select.js +3 -2
  218. package/dist/elements/css/side-sheet.js +3 -2
  219. package/dist/elements/css/slider.js +3 -2
  220. package/dist/elements/css/snackbar.js +3 -2
  221. package/dist/elements/css/split-button.js +3 -2
  222. package/dist/elements/css/switch.js +3 -2
  223. package/dist/elements/css/tabs.js +3 -2
  224. package/dist/elements/css/textfield.js +3 -2
  225. package/dist/elements/css/timepicker.js +3 -2
  226. package/dist/elements/css/toolbar.d.ts +1 -0
  227. package/dist/elements/css/toolbar.js +6 -0
  228. package/dist/elements/css/tooltip.js +3 -2
  229. package/dist/elements/css/top-app-bar.js +3 -2
  230. package/dist/elements/datepicker.d.ts +17 -9
  231. package/dist/elements/datepicker.js +13 -43
  232. package/dist/elements/define.d.ts +30 -2
  233. package/dist/elements/define.js +84 -9
  234. package/dist/elements/dialog.d.ts +9 -0
  235. package/dist/elements/dialog.js +1 -0
  236. package/dist/elements/divider.d.ts +8 -0
  237. package/dist/elements/drawer.d.ts +10 -0
  238. package/dist/elements/extended-fab.d.ts +16 -0
  239. package/dist/elements/extended-fab.js +4 -0
  240. package/dist/elements/fab-menu.d.ts +112 -0
  241. package/dist/elements/fab-menu.js +68 -0
  242. package/dist/elements/fab.d.ts +8 -0
  243. package/dist/elements/icon-button.d.ts +17 -1
  244. package/dist/elements/icon-button.js +6 -4
  245. package/dist/elements/index.d.ts +21 -1
  246. package/dist/elements/index.js +9 -0
  247. package/dist/elements/list.d.ts +9 -0
  248. package/dist/elements/loading-indicator.d.ts +8 -0
  249. package/dist/elements/menu.d.ts +9 -0
  250. package/dist/elements/navigation-rail.d.ts +11 -0
  251. package/dist/elements/navigation-rail.js +1 -0
  252. package/dist/elements/preupgrade.css +2 -0
  253. package/dist/elements/preupgrade.css.d.ts +1 -0
  254. package/dist/elements/preupgrade.d.ts +2 -0
  255. package/dist/elements/preupgrade.js +4 -0
  256. package/dist/elements/progress.d.ts +8 -0
  257. package/dist/elements/radios.d.ts +9 -0
  258. package/dist/elements/search.d.ts +10 -0
  259. package/dist/elements/select.d.ts +9 -0
  260. package/dist/elements/side-sheet.d.ts +9 -0
  261. package/dist/elements/side-sheet.js +1 -0
  262. package/dist/elements/slider.d.ts +9 -0
  263. package/dist/elements/snackbar.d.ts +8 -0
  264. package/dist/elements/split-button.d.ts +8 -0
  265. package/dist/elements/styles.d.ts +18 -0
  266. package/dist/elements/styles.js +41 -0
  267. package/dist/elements/switch.d.ts +10 -0
  268. package/dist/elements/switch.js +2 -2
  269. package/dist/elements/tabs.d.ts +9 -0
  270. package/dist/elements/textfield.d.ts +11 -1
  271. package/dist/elements/textfield.js +1 -6
  272. package/dist/elements/timepicker.d.ts +9 -0
  273. package/dist/elements/timepicker.js +5 -5
  274. package/dist/elements/toolbar.d.ts +103 -0
  275. package/dist/elements/toolbar.js +77 -0
  276. package/dist/elements/tooltip.d.ts +8 -0
  277. package/dist/elements/top-app-bar.d.ts +9 -0
  278. package/dist/elements/top-app-bar.js +1 -0
  279. package/dist/index.cjs +0 -0
  280. package/dist/package.json +16 -2
  281. package/dist/react/badge.d.ts +4 -0
  282. package/dist/react/badge.js +7 -0
  283. package/dist/react/bottom-app-bar.d.ts +4 -0
  284. package/dist/react/bottom-app-bar.js +7 -0
  285. package/dist/react/bottom-sheet.d.ts +4 -0
  286. package/dist/react/bottom-sheet.js +7 -0
  287. package/dist/react/button-group-item.d.ts +3 -0
  288. package/dist/react/button-group-item.js +6 -0
  289. package/dist/react/button-group.d.ts +7 -0
  290. package/dist/react/button-group.js +10 -0
  291. package/dist/react/button.d.ts +5 -0
  292. package/dist/react/button.js +8 -0
  293. package/dist/react/card.d.ts +4 -0
  294. package/dist/react/card.js +7 -0
  295. package/dist/react/carousel-item.d.ts +3 -0
  296. package/dist/react/carousel-item.js +6 -0
  297. package/dist/react/carousel.d.ts +4 -0
  298. package/dist/react/carousel.js +7 -0
  299. package/dist/react/checkbox.d.ts +4 -0
  300. package/dist/react/checkbox.js +7 -0
  301. package/dist/react/chip.d.ts +3 -0
  302. package/dist/react/chip.js +6 -0
  303. package/dist/react/chips.d.ts +4 -0
  304. package/dist/react/chips.js +7 -0
  305. package/dist/react/create.d.ts +11 -2
  306. package/dist/react/create.js +12 -2
  307. package/dist/react/datepicker.d.ts +4 -0
  308. package/dist/react/datepicker.js +7 -0
  309. package/dist/react/dialog.d.ts +4 -0
  310. package/dist/react/dialog.js +7 -0
  311. package/dist/react/divider.d.ts +4 -0
  312. package/dist/react/divider.js +7 -0
  313. package/dist/react/drawer-item.d.ts +3 -0
  314. package/dist/react/drawer-item.js +6 -0
  315. package/dist/react/drawer.d.ts +4 -0
  316. package/dist/react/drawer.js +7 -0
  317. package/dist/react/extended-fab.d.ts +4 -0
  318. package/dist/react/extended-fab.js +7 -0
  319. package/dist/react/fab-menu-item.d.ts +3 -0
  320. package/dist/react/fab-menu-item.js +6 -0
  321. package/dist/react/fab-menu.d.ts +6 -0
  322. package/dist/react/fab-menu.js +9 -0
  323. package/dist/react/fab.d.ts +4 -0
  324. package/dist/react/fab.js +7 -0
  325. package/dist/react/icon-button.d.ts +4 -0
  326. package/dist/react/icon-button.js +7 -0
  327. package/dist/react/index.d.ts +48 -81
  328. package/dist/react/index.js +48 -81
  329. package/dist/react/jsx.d.ts +74 -0
  330. package/dist/react/jsx.js +2 -0
  331. package/dist/react/list-item.d.ts +3 -0
  332. package/dist/react/list-item.js +6 -0
  333. package/dist/react/list.d.ts +4 -0
  334. package/dist/react/list.js +7 -0
  335. package/dist/react/loading-indicator.d.ts +4 -0
  336. package/dist/react/loading-indicator.js +7 -0
  337. package/dist/react/menu-item.d.ts +3 -0
  338. package/dist/react/menu-item.js +6 -0
  339. package/dist/react/menu.d.ts +4 -0
  340. package/dist/react/menu.js +7 -0
  341. package/dist/react/navigation-rail-item.d.ts +3 -0
  342. package/dist/react/navigation-rail-item.js +6 -0
  343. package/dist/react/navigation-rail.d.ts +4 -0
  344. package/dist/react/navigation-rail.js +7 -0
  345. package/dist/react/progress.d.ts +4 -0
  346. package/dist/react/progress.js +7 -0
  347. package/dist/react/radio.d.ts +3 -0
  348. package/dist/react/radio.js +6 -0
  349. package/dist/react/radios.d.ts +4 -0
  350. package/dist/react/radios.js +7 -0
  351. package/dist/react/search-suggestion.d.ts +3 -0
  352. package/dist/react/search-suggestion.js +6 -0
  353. package/dist/react/search.d.ts +4 -0
  354. package/dist/react/search.js +7 -0
  355. package/dist/react/select-option.d.ts +3 -0
  356. package/dist/react/select-option.js +6 -0
  357. package/dist/react/select.d.ts +6 -0
  358. package/dist/react/select.js +9 -0
  359. package/dist/react/side-sheet.d.ts +4 -0
  360. package/dist/react/side-sheet.js +7 -0
  361. package/dist/react/slider.d.ts +4 -0
  362. package/dist/react/slider.js +7 -0
  363. package/dist/react/snackbar.d.ts +7 -0
  364. package/dist/react/snackbar.js +10 -0
  365. package/dist/react/split-button.d.ts +7 -0
  366. package/dist/react/split-button.js +10 -0
  367. package/dist/react/switch.d.ts +4 -0
  368. package/dist/react/switch.js +7 -0
  369. package/dist/react/tab.d.ts +3 -0
  370. package/dist/react/tab.js +6 -0
  371. package/dist/react/tabs.d.ts +7 -0
  372. package/dist/react/tabs.js +10 -0
  373. package/dist/react/textfield.d.ts +4 -0
  374. package/dist/react/textfield.js +7 -0
  375. package/dist/react/timepicker.d.ts +4 -0
  376. package/dist/react/timepicker.js +7 -0
  377. package/dist/react/toolbar.d.ts +5 -0
  378. package/dist/react/toolbar.js +8 -0
  379. package/dist/react/tooltip.d.ts +4 -0
  380. package/dist/react/tooltip.js +7 -0
  381. package/dist/react/top-app-bar.d.ts +4 -0
  382. package/dist/react/top-app-bar.js +7 -0
  383. package/dist/solid/badge.d.ts +4 -0
  384. package/dist/solid/badge.js +6 -0
  385. package/dist/solid/bottom-app-bar.d.ts +4 -0
  386. package/dist/solid/bottom-app-bar.js +6 -0
  387. package/dist/solid/bottom-sheet.d.ts +4 -0
  388. package/dist/solid/bottom-sheet.js +6 -0
  389. package/dist/solid/button-group-item.d.ts +3 -0
  390. package/dist/solid/button-group-item.js +5 -0
  391. package/dist/solid/button-group.d.ts +7 -0
  392. package/dist/solid/button-group.js +9 -0
  393. package/dist/solid/button.d.ts +5 -0
  394. package/dist/solid/button.js +7 -0
  395. package/dist/solid/card.d.ts +4 -0
  396. package/dist/solid/card.js +6 -0
  397. package/dist/solid/carousel-item.d.ts +3 -0
  398. package/dist/solid/carousel-item.js +5 -0
  399. package/dist/solid/carousel.d.ts +4 -0
  400. package/dist/solid/carousel.js +6 -0
  401. package/dist/solid/checkbox.d.ts +4 -0
  402. package/dist/solid/checkbox.js +6 -0
  403. package/dist/solid/chip.d.ts +3 -0
  404. package/dist/solid/chip.js +5 -0
  405. package/dist/solid/chips.d.ts +4 -0
  406. package/dist/solid/chips.js +6 -0
  407. package/dist/solid/create.d.ts +11 -2
  408. package/dist/solid/create.js +22 -4
  409. package/dist/solid/datepicker.d.ts +4 -0
  410. package/dist/solid/datepicker.js +6 -0
  411. package/dist/solid/dialog.d.ts +4 -0
  412. package/dist/solid/dialog.js +6 -0
  413. package/dist/solid/divider.d.ts +4 -0
  414. package/dist/solid/divider.js +6 -0
  415. package/dist/solid/drawer-item.d.ts +3 -0
  416. package/dist/solid/drawer-item.js +5 -0
  417. package/dist/solid/drawer.d.ts +4 -0
  418. package/dist/solid/drawer.js +6 -0
  419. package/dist/solid/extended-fab.d.ts +4 -0
  420. package/dist/solid/extended-fab.js +6 -0
  421. package/dist/solid/fab-menu-item.d.ts +3 -0
  422. package/dist/solid/fab-menu-item.js +5 -0
  423. package/dist/solid/fab-menu.d.ts +6 -0
  424. package/dist/solid/fab-menu.js +8 -0
  425. package/dist/solid/fab.d.ts +4 -0
  426. package/dist/solid/fab.js +6 -0
  427. package/dist/solid/icon-button.d.ts +4 -0
  428. package/dist/solid/icon-button.js +6 -0
  429. package/dist/solid/index.d.ts +48 -81
  430. package/dist/solid/index.js +48 -81
  431. package/dist/solid/jsx.d.ts +96 -0
  432. package/dist/solid/jsx.js +1 -0
  433. package/dist/solid/list-item.d.ts +3 -0
  434. package/dist/solid/list-item.js +5 -0
  435. package/dist/solid/list.d.ts +4 -0
  436. package/dist/solid/list.js +6 -0
  437. package/dist/solid/loading-indicator.d.ts +4 -0
  438. package/dist/solid/loading-indicator.js +6 -0
  439. package/dist/solid/menu-item.d.ts +3 -0
  440. package/dist/solid/menu-item.js +5 -0
  441. package/dist/solid/menu.d.ts +4 -0
  442. package/dist/solid/menu.js +6 -0
  443. package/dist/solid/navigation-rail-item.d.ts +3 -0
  444. package/dist/solid/navigation-rail-item.js +5 -0
  445. package/dist/solid/navigation-rail.d.ts +4 -0
  446. package/dist/solid/navigation-rail.js +6 -0
  447. package/dist/solid/progress.d.ts +4 -0
  448. package/dist/solid/progress.js +6 -0
  449. package/dist/solid/radio.d.ts +3 -0
  450. package/dist/solid/radio.js +5 -0
  451. package/dist/solid/radios.d.ts +4 -0
  452. package/dist/solid/radios.js +6 -0
  453. package/dist/solid/search-suggestion.d.ts +3 -0
  454. package/dist/solid/search-suggestion.js +5 -0
  455. package/dist/solid/search.d.ts +4 -0
  456. package/dist/solid/search.js +6 -0
  457. package/dist/solid/select-option.d.ts +3 -0
  458. package/dist/solid/select-option.js +5 -0
  459. package/dist/solid/select.d.ts +6 -0
  460. package/dist/solid/select.js +8 -0
  461. package/dist/solid/side-sheet.d.ts +4 -0
  462. package/dist/solid/side-sheet.js +6 -0
  463. package/dist/solid/slider.d.ts +4 -0
  464. package/dist/solid/slider.js +6 -0
  465. package/dist/solid/snackbar.d.ts +7 -0
  466. package/dist/solid/snackbar.js +9 -0
  467. package/dist/solid/split-button.d.ts +7 -0
  468. package/dist/solid/split-button.js +9 -0
  469. package/dist/solid/switch.d.ts +4 -0
  470. package/dist/solid/switch.js +6 -0
  471. package/dist/solid/tab.d.ts +3 -0
  472. package/dist/solid/tab.js +5 -0
  473. package/dist/solid/tabs.d.ts +7 -0
  474. package/dist/solid/tabs.js +9 -0
  475. package/dist/solid/textfield.d.ts +4 -0
  476. package/dist/solid/textfield.js +6 -0
  477. package/dist/solid/timepicker.d.ts +4 -0
  478. package/dist/solid/timepicker.js +6 -0
  479. package/dist/solid/toolbar.d.ts +5 -0
  480. package/dist/solid/toolbar.js +7 -0
  481. package/dist/solid/tooltip.d.ts +4 -0
  482. package/dist/solid/tooltip.js +6 -0
  483. package/dist/solid/top-app-bar.d.ts +4 -0
  484. package/dist/solid/top-app-bar.js +6 -0
  485. package/dist/styles/badge.css +2 -2
  486. package/dist/styles/base.css +2 -2
  487. package/dist/styles/bottom-app-bar.css +2 -2
  488. package/dist/styles/bottom-sheet.css +2 -2
  489. package/dist/styles/button-group.css +2 -2
  490. package/dist/styles/button.css +2 -2
  491. package/dist/styles/card.css +2 -2
  492. package/dist/styles/carousel.css +2 -2
  493. package/dist/styles/checkbox.css +2 -2
  494. package/dist/styles/chips.css +2 -2
  495. package/dist/styles/datepicker.css +2 -2
  496. package/dist/styles/dialog.css +2 -2
  497. package/dist/styles/divider.css +2 -2
  498. package/dist/styles/drawer.css +2 -2
  499. package/dist/styles/extended-fab.css +2 -2
  500. package/dist/styles/fab-menu.css +2 -0
  501. package/dist/styles/fab-menu.d.ts +1 -0
  502. package/dist/styles/fab-menu.js +3 -0
  503. package/dist/styles/fab.css +2 -2
  504. package/dist/styles/icon-button.css +2 -2
  505. package/dist/styles/list.css +2 -2
  506. package/dist/styles/loading-indicator.css +2 -2
  507. package/dist/styles/menu.css +2 -2
  508. package/dist/styles/navigation-rail.css +2 -2
  509. package/dist/styles/progress.css +2 -2
  510. package/dist/styles/radios.css +2 -2
  511. package/dist/styles/search.css +2 -2
  512. package/dist/styles/segmented-button.css +2 -2
  513. package/dist/styles/select.css +2 -2
  514. package/dist/styles/side-sheet.css +2 -2
  515. package/dist/styles/slider.css +2 -2
  516. package/dist/styles/snackbar.css +2 -2
  517. package/dist/styles/split-button.css +2 -2
  518. package/dist/styles/switch.css +2 -2
  519. package/dist/styles/tabs.css +2 -2
  520. package/dist/styles/textfield.css +2 -2
  521. package/dist/styles/timepicker.css +2 -2
  522. package/dist/styles/toolbar.css +2 -0
  523. package/dist/styles/toolbar.d.ts +1 -0
  524. package/dist/styles/toolbar.js +3 -0
  525. package/dist/styles/tooltip.css +2 -2
  526. package/dist/styles/top-app-bar.css +2 -2
  527. package/dist/styles/utilities.css +2 -2
  528. package/dist/styles.css +2 -2
  529. package/dist/svelte/Badge.svelte +7 -2
  530. package/dist/svelte/Badge.svelte.d.ts +2 -2
  531. package/dist/svelte/BottomAppBar.svelte +7 -2
  532. package/dist/svelte/BottomAppBar.svelte.d.ts +2 -2
  533. package/dist/svelte/BottomSheet.svelte +7 -2
  534. package/dist/svelte/BottomSheet.svelte.d.ts +2 -2
  535. package/dist/svelte/Button.svelte +8 -2
  536. package/dist/svelte/Button.svelte.d.ts +2 -2
  537. package/dist/svelte/ButtonGroup.svelte +10 -2
  538. package/dist/svelte/ButtonGroup.svelte.d.ts +2 -2
  539. package/dist/svelte/ButtonGroupItem.svelte +1 -1
  540. package/dist/svelte/Card.svelte +7 -2
  541. package/dist/svelte/Card.svelte.d.ts +2 -2
  542. package/dist/svelte/Carousel.svelte +7 -2
  543. package/dist/svelte/Carousel.svelte.d.ts +2 -2
  544. package/dist/svelte/CarouselItem.svelte +1 -1
  545. package/dist/svelte/Checkbox.svelte +7 -2
  546. package/dist/svelte/Checkbox.svelte.d.ts +2 -2
  547. package/dist/svelte/Chip.svelte +1 -1
  548. package/dist/svelte/Chips.svelte +7 -2
  549. package/dist/svelte/Chips.svelte.d.ts +2 -2
  550. package/dist/svelte/Datepicker.svelte +7 -2
  551. package/dist/svelte/Datepicker.svelte.d.ts +2 -2
  552. package/dist/svelte/Dialog.svelte +7 -2
  553. package/dist/svelte/Dialog.svelte.d.ts +2 -2
  554. package/dist/svelte/Divider.svelte +7 -2
  555. package/dist/svelte/Divider.svelte.d.ts +2 -2
  556. package/dist/svelte/Drawer.svelte +7 -2
  557. package/dist/svelte/Drawer.svelte.d.ts +2 -2
  558. package/dist/svelte/DrawerItem.svelte +1 -1
  559. package/dist/svelte/ExtendedFab.svelte +7 -2
  560. package/dist/svelte/ExtendedFab.svelte.d.ts +2 -2
  561. package/dist/svelte/Fab.svelte +7 -2
  562. package/dist/svelte/Fab.svelte.d.ts +2 -2
  563. package/dist/svelte/FabMenu.svelte +26 -0
  564. package/dist/svelte/FabMenu.svelte.d.ts +5 -0
  565. package/dist/svelte/FabMenuItem.svelte +11 -0
  566. package/dist/svelte/FabMenuItem.svelte.d.ts +5 -0
  567. package/dist/svelte/IconButton.svelte +7 -2
  568. package/dist/svelte/IconButton.svelte.d.ts +2 -2
  569. package/dist/svelte/List.svelte +7 -2
  570. package/dist/svelte/List.svelte.d.ts +2 -2
  571. package/dist/svelte/ListItem.svelte +1 -1
  572. package/dist/svelte/LoadingIndicator.svelte +7 -2
  573. package/dist/svelte/LoadingIndicator.svelte.d.ts +2 -2
  574. package/dist/svelte/Menu.svelte +7 -2
  575. package/dist/svelte/Menu.svelte.d.ts +2 -2
  576. package/dist/svelte/MenuItem.svelte +1 -1
  577. package/dist/svelte/NavigationRail.svelte +7 -2
  578. package/dist/svelte/NavigationRail.svelte.d.ts +2 -2
  579. package/dist/svelte/NavigationRailItem.svelte +1 -1
  580. package/dist/svelte/Progress.svelte +7 -2
  581. package/dist/svelte/Progress.svelte.d.ts +2 -2
  582. package/dist/svelte/Radio.svelte +1 -1
  583. package/dist/svelte/Radios.svelte +7 -2
  584. package/dist/svelte/Radios.svelte.d.ts +2 -2
  585. package/dist/svelte/Search.svelte +7 -2
  586. package/dist/svelte/Search.svelte.d.ts +2 -2
  587. package/dist/svelte/SearchSuggestion.svelte +1 -1
  588. package/dist/svelte/Select.svelte +9 -2
  589. package/dist/svelte/Select.svelte.d.ts +2 -2
  590. package/dist/svelte/SelectOption.svelte +1 -1
  591. package/dist/svelte/SideSheet.svelte +7 -2
  592. package/dist/svelte/SideSheet.svelte.d.ts +2 -2
  593. package/dist/svelte/Slider.svelte +7 -2
  594. package/dist/svelte/Slider.svelte.d.ts +2 -2
  595. package/dist/svelte/Snackbar.svelte +10 -2
  596. package/dist/svelte/Snackbar.svelte.d.ts +2 -2
  597. package/dist/svelte/SplitButton.svelte +10 -2
  598. package/dist/svelte/SplitButton.svelte.d.ts +2 -2
  599. package/dist/svelte/Switch.svelte +7 -2
  600. package/dist/svelte/Switch.svelte.d.ts +2 -2
  601. package/dist/svelte/Tab.svelte +1 -1
  602. package/dist/svelte/Tabs.svelte +10 -2
  603. package/dist/svelte/Tabs.svelte.d.ts +2 -2
  604. package/dist/svelte/Textfield.svelte +7 -2
  605. package/dist/svelte/Textfield.svelte.d.ts +2 -2
  606. package/dist/svelte/Timepicker.svelte +7 -2
  607. package/dist/svelte/Timepicker.svelte.d.ts +2 -2
  608. package/dist/svelte/Toolbar.svelte +25 -0
  609. package/dist/svelte/Toolbar.svelte.d.ts +5 -0
  610. package/dist/svelte/Tooltip.svelte +7 -2
  611. package/dist/svelte/Tooltip.svelte.d.ts +2 -2
  612. package/dist/svelte/TopAppBar.svelte +7 -2
  613. package/dist/svelte/TopAppBar.svelte.d.ts +2 -2
  614. package/dist/svelte/index.d.ts +3 -0
  615. package/dist/svelte/index.js +3 -34
  616. package/dist/svelte/runtime.d.ts +12 -2
  617. package/dist/svelte/runtime.js +11 -2
  618. package/dist/themes/autumn.css +2 -2
  619. package/dist/themes/baseline.css +2 -2
  620. package/dist/themes/brownbeige.css +2 -2
  621. package/dist/themes/browngreen.css +2 -2
  622. package/dist/themes/content.css +2 -0
  623. package/dist/themes/desert.css +2 -2
  624. package/dist/themes/expressive.css +2 -0
  625. package/dist/themes/fidelity.css +2 -0
  626. package/dist/themes/forest.css +2 -2
  627. package/dist/themes/fruit-salad.css +2 -0
  628. package/dist/themes/highcontrast.css +2 -2
  629. package/dist/themes/legacy.css +2 -2
  630. package/dist/themes/material.css +2 -2
  631. package/dist/themes/monochrome.css +2 -0
  632. package/dist/themes/neutral.css +2 -0
  633. package/dist/themes/ocean.css +2 -2
  634. package/dist/themes/rainbow.css +2 -0
  635. package/dist/themes/sageivory.css +2 -2
  636. package/dist/themes/spring.css +2 -2
  637. package/dist/themes/summer.css +2 -2
  638. package/dist/themes/sunset.css +2 -2
  639. package/dist/themes/tealcaramel.css +2 -2
  640. package/dist/themes/vibrant.css +2 -0
  641. package/dist/themes/winter.css +2 -2
  642. package/dist/vue/badge.d.ts +4 -0
  643. package/dist/vue/badge.js +6 -0
  644. package/dist/vue/bottom-app-bar.d.ts +4 -0
  645. package/dist/vue/bottom-app-bar.js +6 -0
  646. package/dist/vue/bottom-sheet.d.ts +4 -0
  647. package/dist/vue/bottom-sheet.js +6 -0
  648. package/dist/vue/button-group-item.d.ts +3 -0
  649. package/dist/vue/button-group-item.js +5 -0
  650. package/dist/vue/button-group.d.ts +7 -0
  651. package/dist/vue/button-group.js +9 -0
  652. package/dist/vue/button.d.ts +5 -0
  653. package/dist/vue/button.js +7 -0
  654. package/dist/vue/card.d.ts +4 -0
  655. package/dist/vue/card.js +6 -0
  656. package/dist/vue/carousel-item.d.ts +3 -0
  657. package/dist/vue/carousel-item.js +5 -0
  658. package/dist/vue/carousel.d.ts +4 -0
  659. package/dist/vue/carousel.js +6 -0
  660. package/dist/vue/checkbox.d.ts +4 -0
  661. package/dist/vue/checkbox.js +6 -0
  662. package/dist/vue/chip.d.ts +3 -0
  663. package/dist/vue/chip.js +5 -0
  664. package/dist/vue/chips.d.ts +4 -0
  665. package/dist/vue/chips.js +6 -0
  666. package/dist/vue/create.d.ts +9 -3
  667. package/dist/vue/create.js +15 -2
  668. package/dist/vue/datepicker.d.ts +4 -0
  669. package/dist/vue/datepicker.js +6 -0
  670. package/dist/vue/dialog.d.ts +4 -0
  671. package/dist/vue/dialog.js +6 -0
  672. package/dist/vue/divider.d.ts +4 -0
  673. package/dist/vue/divider.js +6 -0
  674. package/dist/vue/drawer-item.d.ts +3 -0
  675. package/dist/vue/drawer-item.js +5 -0
  676. package/dist/vue/drawer.d.ts +4 -0
  677. package/dist/vue/drawer.js +6 -0
  678. package/dist/vue/extended-fab.d.ts +4 -0
  679. package/dist/vue/extended-fab.js +6 -0
  680. package/dist/vue/fab-menu-item.d.ts +3 -0
  681. package/dist/vue/fab-menu-item.js +5 -0
  682. package/dist/vue/fab-menu.d.ts +6 -0
  683. package/dist/vue/fab-menu.js +8 -0
  684. package/dist/vue/fab.d.ts +4 -0
  685. package/dist/vue/fab.js +6 -0
  686. package/dist/vue/icon-button.d.ts +4 -0
  687. package/dist/vue/icon-button.js +6 -0
  688. package/dist/vue/index.d.ts +49 -82
  689. package/dist/vue/index.js +48 -81
  690. package/dist/vue/list-item.d.ts +3 -0
  691. package/dist/vue/list-item.js +5 -0
  692. package/dist/vue/list.d.ts +4 -0
  693. package/dist/vue/list.js +6 -0
  694. package/dist/vue/loading-indicator.d.ts +4 -0
  695. package/dist/vue/loading-indicator.js +6 -0
  696. package/dist/vue/menu-item.d.ts +3 -0
  697. package/dist/vue/menu-item.js +5 -0
  698. package/dist/vue/menu.d.ts +4 -0
  699. package/dist/vue/menu.js +6 -0
  700. package/dist/vue/navigation-rail-item.d.ts +3 -0
  701. package/dist/vue/navigation-rail-item.js +5 -0
  702. package/dist/vue/navigation-rail.d.ts +4 -0
  703. package/dist/vue/navigation-rail.js +6 -0
  704. package/dist/vue/progress.d.ts +4 -0
  705. package/dist/vue/progress.js +6 -0
  706. package/dist/vue/radio.d.ts +3 -0
  707. package/dist/vue/radio.js +5 -0
  708. package/dist/vue/radios.d.ts +4 -0
  709. package/dist/vue/radios.js +6 -0
  710. package/dist/vue/search-suggestion.d.ts +3 -0
  711. package/dist/vue/search-suggestion.js +5 -0
  712. package/dist/vue/search.d.ts +4 -0
  713. package/dist/vue/search.js +6 -0
  714. package/dist/vue/select-option.d.ts +3 -0
  715. package/dist/vue/select-option.js +5 -0
  716. package/dist/vue/select.d.ts +6 -0
  717. package/dist/vue/select.js +8 -0
  718. package/dist/vue/side-sheet.d.ts +4 -0
  719. package/dist/vue/side-sheet.js +6 -0
  720. package/dist/vue/slider.d.ts +4 -0
  721. package/dist/vue/slider.js +6 -0
  722. package/dist/vue/snackbar.d.ts +7 -0
  723. package/dist/vue/snackbar.js +9 -0
  724. package/dist/vue/split-button.d.ts +7 -0
  725. package/dist/vue/split-button.js +9 -0
  726. package/dist/vue/switch.d.ts +4 -0
  727. package/dist/vue/switch.js +6 -0
  728. package/dist/vue/tab.d.ts +3 -0
  729. package/dist/vue/tab.js +5 -0
  730. package/dist/vue/tabs.d.ts +7 -0
  731. package/dist/vue/tabs.js +9 -0
  732. package/dist/vue/textfield.d.ts +4 -0
  733. package/dist/vue/textfield.js +6 -0
  734. package/dist/vue/timepicker.d.ts +4 -0
  735. package/dist/vue/timepicker.js +6 -0
  736. package/dist/vue/toolbar.d.ts +5 -0
  737. package/dist/vue/toolbar.js +7 -0
  738. package/dist/vue/tooltip.d.ts +4 -0
  739. package/dist/vue/tooltip.js +6 -0
  740. package/dist/vue/top-app-bar.d.ts +4 -0
  741. package/dist/vue/top-app-bar.js +6 -0
  742. package/package.json +119 -20
  743. package/src/styles/abstract/_functions.scss +13 -1
  744. package/src/styles/abstract/_mixins.scss +16 -1
  745. package/src/styles/abstract/_theme.scss +4 -88
  746. package/src/styles/abstract/_variables.scss +20 -1
  747. package/src/styles/base/_tokens.scss +2 -13
  748. package/src/styles/base/_typography.scss +14 -70
  749. package/src/styles/components/_badge.scss +2 -2
  750. package/src/styles/components/_bottom-app-bar.scss +0 -4
  751. package/src/styles/components/_bottom-sheet.scss +26 -6
  752. package/src/styles/components/_button-group.scss +5 -2
  753. package/src/styles/components/_button.scss +29 -43
  754. package/src/styles/components/_card.scss +0 -2
  755. package/src/styles/components/_carousel.scss +2 -1
  756. package/src/styles/components/_datepicker.scss +4 -0
  757. package/src/styles/components/_divider.scss +1 -1
  758. package/src/styles/components/_drawer.scss +11 -11
  759. package/src/styles/components/_fab-menu.scss +228 -0
  760. package/src/styles/components/_icon-button.scss +18 -14
  761. package/src/styles/components/_list.scss +3 -2
  762. package/src/styles/components/_menu.scss +13 -2
  763. package/src/styles/components/_navigation-rail.scss +5 -4
  764. package/src/styles/components/_search.scss +2 -1
  765. package/src/styles/components/_select.scss +9 -89
  766. package/src/styles/components/_side-sheet.scss +7 -4
  767. package/src/styles/components/_slider.scss +2 -2
  768. package/src/styles/components/_split-button.scss +5 -5
  769. package/src/styles/components/_switch.scss +1 -1
  770. package/src/styles/components/_textfield.scss +144 -93
  771. package/src/styles/components/_toolbar.scss +203 -0
  772. package/src/styles/components/_tooltip.scss +20 -12
  773. package/src/styles/elements/_badge.scss +12 -0
  774. package/src/styles/elements/_bottom-app-bar.scss +27 -0
  775. package/src/styles/elements/_bottom-sheet.scss +6 -0
  776. package/src/styles/elements/_button-group.scss +25 -0
  777. package/src/styles/elements/_button.scss +78 -0
  778. package/src/styles/elements/_card.scss +57 -0
  779. package/src/styles/elements/_carousel.scss +12 -0
  780. package/src/styles/elements/_checkbox.scss +38 -0
  781. package/src/styles/elements/_chips.scss +33 -0
  782. package/src/styles/elements/_config.scss +48 -0
  783. package/src/styles/elements/_datepicker.scss +31 -0
  784. package/src/styles/elements/_dialog.scss +6 -0
  785. package/src/styles/elements/_divider.scss +19 -0
  786. package/src/styles/elements/_drawer.scss +23 -0
  787. package/src/styles/elements/_extended-fab.scss +57 -0
  788. package/src/styles/elements/_fab-menu.scss +43 -0
  789. package/src/styles/elements/_fab.scss +33 -0
  790. package/src/styles/elements/_field.scss +111 -0
  791. package/src/styles/elements/_icon-button.scss +55 -0
  792. package/src/styles/elements/_index.scss +41 -0
  793. package/src/styles/elements/_list.scss +34 -0
  794. package/src/styles/elements/_loading-indicator.scss +13 -0
  795. package/src/styles/elements/_menu.scss +6 -0
  796. package/src/styles/elements/_navigation-rail.scss +24 -0
  797. package/src/styles/elements/_progress.scss +24 -0
  798. package/src/styles/elements/_radios.scss +23 -0
  799. package/src/styles/elements/_search.scss +36 -0
  800. package/src/styles/elements/_select.scss +15 -0
  801. package/src/styles/elements/_side-sheet.scss +6 -0
  802. package/src/styles/elements/_slider.scss +10 -0
  803. package/src/styles/elements/_snackbar.scss +6 -0
  804. package/src/styles/elements/_split-button.scss +53 -0
  805. package/src/styles/elements/_switch.scss +51 -0
  806. package/src/styles/elements/_tabs.scss +22 -0
  807. package/src/styles/elements/_textfield.scss +9 -0
  808. package/src/styles/elements/_timepicker.scss +6 -0
  809. package/src/styles/elements/_toolbar.scss +47 -0
  810. package/src/styles/elements/_tooltip.scss +6 -0
  811. package/src/styles/elements/_top-app-bar.scss +57 -0
  812. package/src/styles/main.scss +2 -0
  813. package/src/styles/themes/_autumn.scss +18 -17
  814. package/src/styles/themes/_base-theme.scss +29 -39
  815. package/src/styles/themes/_baseline.scss +58 -83
  816. package/src/styles/themes/_brownbeige.scss +95 -123
  817. package/src/styles/themes/_browngreen.scss +1 -49
  818. package/src/styles/themes/_content.scss +108 -0
  819. package/src/styles/themes/_desert.scss +94 -80
  820. package/src/styles/themes/_expressive.scss +108 -0
  821. package/src/styles/themes/_fidelity.scss +108 -0
  822. package/src/styles/themes/_forest.scss +19 -3
  823. package/src/styles/themes/_fruit-salad.scss +108 -0
  824. package/src/styles/themes/_highcontrast.scss +91 -149
  825. package/src/styles/themes/_legacy.scss +1 -2
  826. package/src/styles/themes/_material.scss +1 -50
  827. package/src/styles/themes/_monochrome.scss +108 -0
  828. package/src/styles/themes/_neutral.scss +108 -0
  829. package/src/styles/themes/_ocean.scss +19 -3
  830. package/src/styles/themes/_rainbow.scss +108 -0
  831. package/src/styles/themes/_sageivory.scss +95 -125
  832. package/src/styles/themes/_spring.scss +19 -3
  833. package/src/styles/themes/_summer.scss +95 -87
  834. package/src/styles/themes/_sunset.scss +19 -3
  835. package/src/styles/themes/_tealcaramel.scss +94 -124
  836. package/src/styles/themes/_vibrant.scss +108 -0
  837. package/src/styles/themes/_winter.scss +1 -3
  838. package/src/styles/themes/_bluekhaki.scss +0 -136
  839. package/src/styles/themes/_greenbeige.scss +0 -138
@@ -5,7 +5,7 @@ const COLOR_ERROR = 'error';
5
5
  const POSITION_TOP_RIGHT = 'top-right';
6
6
  export const withVisibility = () => (component) => {
7
7
  const visible = component.config.visible !== false;
8
- const nothingToShow = isEmptyBadgeLabel(formatBadgeLabel(component.config.label ?? "", component.config.max));
8
+ const nothingToShow = component.config.variant !== "small" && isEmptyBadgeLabel(formatBadgeLabel(component.config.label ?? "", component.config.max));
9
9
  if (!visible || nothingToShow) {
10
10
  component.element.classList.add(`${component.getClass('badge')}--invisible`);
11
11
  }
@@ -1,4 +1,5 @@
1
1
  import { BottomSheetComponent, BottomSheetEventHandlers, BottomSheetState } from "./types.js";
2
+ import type { EventCallback } from "../../core/state/emitter.js";
2
3
  interface ApiOptions {
3
4
  state: {
4
5
  open: () => void;
@@ -23,8 +24,8 @@ interface ApiOptions {
23
24
  interface BaseComponent {
24
25
  element: HTMLElement;
25
26
  getClass: (name: string) => string;
26
- on: (event: string, handler: (...args: never[]) => void) => unknown;
27
- off: (event: string, handler: (...args: never[]) => void) => unknown;
27
+ on: (event: string, handler: EventCallback) => unknown;
28
+ off: (event: string, handler: EventCallback) => unknown;
28
29
  }
29
30
  /**
30
31
  * The public surface. Every method here is backed by a feature above it; none
@@ -38,6 +39,6 @@ export declare const withAPI: ({ state, structure, drag, lifecycle }: ApiOptions
38
39
  * so handlers passed at creation are silently dropped. This one reads it.
39
40
  */
40
41
  export declare const applyEventHandlers: (component: {
41
- on: (event: string, handler: (...args: never[]) => void) => unknown;
42
+ on: (event: string, handler: EventCallback) => unknown;
42
43
  }, handlers?: BottomSheetEventHandlers) => void;
43
44
  export {};
@@ -2,6 +2,8 @@ import { BottomSheetState } from "../types.js";
2
2
  interface DragComponent {
3
3
  getClass: (name: string) => string;
4
4
  emit: (event: string, data?: unknown) => unknown;
5
+ on?: (event: string, handler: () => void) => unknown;
6
+ off?: (event: string, handler: () => void) => unknown;
5
7
  structure: {
6
8
  container: HTMLElement;
7
9
  handle: HTMLElement | null;
@@ -9,6 +11,7 @@ interface DragComponent {
9
11
  state: {
10
12
  getState: () => BottomSheetState;
11
13
  setState: (next: BottomSheetState) => void;
14
+ open: (to?: BottomSheetState) => void;
12
15
  close: () => void;
13
16
  };
14
17
  }
@@ -8,6 +8,25 @@ export const withDrag = () => (component) => {
8
8
  let startTime = 0;
9
9
  let offset = 0;
10
10
  let dragging = false;
11
+ let dragged = false;
12
+ const label = () => {
13
+ handle.setAttribute("aria-label", state.getState() === BOTTOM_SHEET_STATES.EXPANDED ? "Close sheet" : "Expand sheet");
14
+ };
15
+ const onClick = () => {
16
+ if (dragged) {
17
+ dragged = false;
18
+ return;
19
+ }
20
+ const current = state.getState();
21
+ if (current === BOTTOM_SHEET_STATES.EXPANDED)
22
+ state.close();
23
+ else if (current === BOTTOM_SHEET_STATES.PARTIAL)
24
+ state.setState(BOTTOM_SHEET_STATES.EXPANDED);
25
+ else
26
+ state.open();
27
+ };
28
+ label();
29
+ component.on?.(BOTTOM_SHEET_EVENTS.STATE_CHANGE, label);
11
30
  const settle = (distance, velocity) => {
12
31
  const current = state.getState();
13
32
  const far = Math.abs(distance) >= BOTTOM_SHEET_DEFAULTS.POSITIONAL_THRESHOLD;
@@ -45,6 +64,7 @@ export const withDrag = () => (component) => {
45
64
  const velocity = (offset / elapsed) * 1000;
46
65
  structure.container.style.transition = "";
47
66
  structure.container.style.transform = "";
67
+ dragged = Math.abs(offset) > 4;
48
68
  const previous = state.getState();
49
69
  const next = settle(offset, velocity);
50
70
  if (next === BOTTOM_SHEET_STATES.HIDDEN)
@@ -57,6 +77,7 @@ export const withDrag = () => (component) => {
57
77
  handle.addEventListener("pointermove", onPointerMove);
58
78
  handle.addEventListener("pointerup", onPointerUp);
59
79
  handle.addEventListener("pointercancel", onPointerUp);
80
+ handle.addEventListener("click", onClick);
60
81
  return {
61
82
  ...component,
62
83
  drag: {
@@ -65,6 +86,8 @@ export const withDrag = () => (component) => {
65
86
  handle.removeEventListener("pointermove", onPointerMove);
66
87
  handle.removeEventListener("pointerup", onPointerUp);
67
88
  handle.removeEventListener("pointercancel", onPointerUp);
89
+ handle.removeEventListener("click", onClick);
90
+ component.off?.(BOTTOM_SHEET_EVENTS.STATE_CHANGE, label);
68
91
  },
69
92
  },
70
93
  };
@@ -1,6 +1,6 @@
1
1
  import { BOTTOM_SHEET_CLASSES, BOTTOM_SHEET_EVENTS, BOTTOM_SHEET_STATES, BOTTOM_SHEET_VARIANTS, } from "../constants.js";
2
2
  import { deepActiveElement, wrapTab } from "../../../core/dom/focus.js";
3
- import { hideFromTopLayer, onTopLayerClose, showInTopLayer, } from "../../../core/dom/layer.js";
3
+ import { hideFromTopLayer, inertOutside, onTopLayerClose, showInTopLayer, } from "../../../core/dom/layer.js";
4
4
  export const withState = (config) => (component) => {
5
5
  const { element, getClass, structure } = component;
6
6
  const root = getClass(BOTTOM_SHEET_CLASSES.ROOT);
@@ -8,6 +8,20 @@ export const withState = (config) => (component) => {
8
8
  const top = config.layer === "top";
9
9
  let state = config.initialState ?? BOTTOM_SHEET_STATES.HIDDEN;
10
10
  let previouslyFocused = null;
11
+ let restorePage = null;
12
+ const trap = (on) => {
13
+ if (!isModal || top)
14
+ return;
15
+ if (on && !restorePage) {
16
+ restorePage = inertOutside(element);
17
+ element.addEventListener("keydown", handleTab);
18
+ }
19
+ else if (!on && restorePage) {
20
+ restorePage();
21
+ restorePage = null;
22
+ element.removeEventListener("keydown", handleTab);
23
+ }
24
+ };
11
25
  const applyState = (next) => {
12
26
  for (const name of Object.values(BOTTOM_SHEET_STATES)) {
13
27
  element.classList.toggle(`${root}--${name}`, name === next);
@@ -31,6 +45,8 @@ export const withState = (config) => (component) => {
31
45
  return;
32
46
  if (!config.closeOnEscape)
33
47
  return;
48
+ if (!isModal && !event.composedPath().includes(element))
49
+ return;
34
50
  event.preventDefault();
35
51
  close();
36
52
  };
@@ -62,6 +78,7 @@ export const withState = (config) => (component) => {
62
78
  }
63
79
  setState(to);
64
80
  if (wasHidden) {
81
+ trap(true);
65
82
  if (isModal)
66
83
  structure.container.focus();
67
84
  component.emit(BOTTOM_SHEET_EVENTS.OPEN);
@@ -71,6 +88,7 @@ export const withState = (config) => (component) => {
71
88
  if (state === BOTTOM_SHEET_STATES.HIDDEN)
72
89
  return;
73
90
  setState(BOTTOM_SHEET_STATES.HIDDEN);
91
+ trap(false);
74
92
  if (top)
75
93
  hideFromTopLayer(element);
76
94
  if (isModal && previouslyFocused?.isConnected) {
@@ -110,6 +128,7 @@ export const withState = (config) => (component) => {
110
128
  element.removeEventListener("cancel", handleCancel);
111
129
  element.removeEventListener("click", handleBackdropClick);
112
130
  element.removeEventListener("keydown", handleTab);
131
+ trap(false);
113
132
  stopCloses?.();
114
133
  if (top)
115
134
  hideFromTopLayer(element);
@@ -26,9 +26,10 @@ export const withStructure = (config) => (component) => {
26
26
  }
27
27
  let handle = null;
28
28
  if (config.dragHandle) {
29
- handle = document.createElement("div");
30
- handle.className = getClass(BOTTOM_SHEET_CLASSES.HANDLE);
31
- handle.setAttribute("aria-hidden", "true");
29
+ const button = document.createElement("button");
30
+ button.type = "button";
31
+ button.className = getClass(BOTTOM_SHEET_CLASSES.HANDLE);
32
+ handle = button;
32
33
  container.appendChild(handle);
33
34
  }
34
35
  let title = null;
@@ -35,9 +35,11 @@ export const withProgress = (config) => (component) => {
35
35
  progress = p;
36
36
  addClass(progress.element, component.getClass("button__progress"));
37
37
  progress.element.style.display = "none";
38
- Object.entries(progressEventHandlers).forEach(([event, handler]) => {
39
- p.on(event, handler);
40
- });
38
+ for (const event of Object.keys(progressEventHandlers)) {
39
+ const handler = progressEventHandlers[event];
40
+ if (handler)
41
+ p.on(event, handler);
42
+ }
41
43
  component.progress = progress;
42
44
  return progress;
43
45
  });
@@ -98,6 +98,7 @@ const createButtonGroup = (config = {}) => {
98
98
  const changeEvent = {
99
99
  buttonGroup,
100
100
  values: selected.map(valueOf),
101
+ value: selection === 'multi' ? selected.map(valueOf) : (selected[0] ? valueOf(selected[0]) : null),
101
102
  selected,
102
103
  button,
103
104
  originalEvent
@@ -128,7 +129,8 @@ const createButtonGroup = (config = {}) => {
128
129
  else
129
130
  selectedValues.delete(value);
130
131
  applySelectedState(target, selected);
131
- emitChange(button ?? target, originalEvent);
132
+ if (button)
133
+ emitChange(button, originalEvent);
132
134
  return true;
133
135
  };
134
136
  buttonConfigs.forEach((buttonConfig, index) => {
@@ -90,13 +90,13 @@ export declare const getButtonConfig: (buttonConfig: NonNullable<ButtonGroupConf
90
90
  rawClass?: string | string[] | undefined;
91
91
  progress?: (import("../index.js").ProgressConfig | boolean) | undefined;
92
92
  toggle?: boolean | undefined;
93
- prefix?: string | undefined;
94
- iconSize?: string | undefined;
95
93
  componentName?: string | undefined;
96
94
  type?: "button" | "submit" | "reset" | undefined;
97
- showProgress?: boolean | undefined;
98
- toggleOnClick?: boolean | undefined;
95
+ prefix?: string | undefined;
99
96
  parent?: (HTMLElement | string | null) | undefined;
97
+ iconSize?: string | undefined;
98
+ toggleOnClick?: boolean | undefined;
99
+ showProgress?: boolean | undefined;
100
100
  } | {
101
101
  variant: ButtonGroupVariant | undefined;
102
102
  size: import("./types.js").ButtonGroupSize;
@@ -129,13 +129,13 @@ export declare const getButtonConfig: (buttonConfig: NonNullable<ButtonGroupConf
129
129
  rawClass?: string | string[] | undefined;
130
130
  progress?: (import("../index.js").ProgressConfig | boolean) | undefined;
131
131
  toggle?: boolean | undefined;
132
- prefix?: string | undefined;
133
- iconSize?: string | undefined;
134
132
  componentName?: string | undefined;
135
133
  type?: "button" | "submit" | "reset" | undefined;
136
- showProgress?: boolean | undefined;
137
- toggleOnClick?: boolean | undefined;
134
+ prefix?: string | undefined;
138
135
  parent?: (HTMLElement | string | null) | undefined;
136
+ iconSize?: string | undefined;
137
+ toggleOnClick?: boolean | undefined;
138
+ showProgress?: boolean | undefined;
139
139
  };
140
140
  /**
141
141
  * Maps variant name to button variant
@@ -1,4 +1,5 @@
1
1
  import { createComponentConfig } from "../../core/config/component.js";
2
+ import { cornerToken } from "../../core/theme/shape.js";
2
3
  import { BUTTON_GROUP_DEFAULTS, BUTTON_GROUP_DENSITY, BUTTON_GROUP_SIZE_TOKENS, BUTTON_GROUP_CONNECTED_GAP, BUTTON_GROUP_CONNECTED_PRESSED_CORNER, BUTTON_GROUP_DENSITY_STEP } from "./constants.js";
3
4
  export const DEFAULT_CONFIG = {
4
5
  kind: BUTTON_GROUP_DEFAULTS.KIND,
@@ -70,8 +71,8 @@ export const getSizeStyles = (prefix, size, kind, density = BUTTON_GROUP_DENSITY
70
71
  [`--${prefix}-button-group-height`]: `${height}px`,
71
72
  [`--${prefix}-button-group-icon`]: `${tokens.icon}px`,
72
73
  [`--${prefix}-button-group-gap`]: `${gap}px`,
73
- [`--${prefix}-button-group-inner-corner`]: `${tokens.connectedCorner}px`,
74
- [`--${prefix}-button-group-pressed-corner`]: `${BUTTON_GROUP_CONNECTED_PRESSED_CORNER}px`,
74
+ [`--${prefix}-button-group-inner-corner`]: cornerToken(tokens.connectedStep, tokens.connectedCorner, prefix),
75
+ [`--${prefix}-button-group-pressed-corner`]: cornerToken("extra-small", BUTTON_GROUP_CONNECTED_PRESSED_CORNER, prefix),
75
76
  [`--${prefix}-button-group-radius`]: `${height / 2}px`
76
77
  };
77
78
  };
@@ -72,8 +72,8 @@ export declare const BUTTON_GROUP_SIZES: {
72
72
  };
73
73
  /**
74
74
  * Material 3 button group tokens per size (dp): container height, button
75
- * icon size, standard between-space, connected inner corner
76
- * (m3.material.io button group specs; ButtonGroupSmallTokens.kt and
75
+ * icon size, standard between-space, connected inner corner and its shape
76
+ * scale step (FLO-331) (m3.material.io button group specs; ButtonGroupSmallTokens.kt and
77
77
  * ConnectedButtonGroupSmallTokens.kt for the s size)
78
78
  */
79
79
  export declare const BUTTON_GROUP_SIZE_TOKENS: {
@@ -82,30 +82,35 @@ export declare const BUTTON_GROUP_SIZE_TOKENS: {
82
82
  readonly icon: 20;
83
83
  readonly standardGap: 18;
84
84
  readonly connectedCorner: 4;
85
+ readonly connectedStep: "extra-small";
85
86
  };
86
87
  readonly s: {
87
88
  readonly height: 40;
88
89
  readonly icon: 20;
89
90
  readonly standardGap: 12;
90
91
  readonly connectedCorner: 8;
92
+ readonly connectedStep: "small";
91
93
  };
92
94
  readonly m: {
93
95
  readonly height: 56;
94
96
  readonly icon: 24;
95
97
  readonly standardGap: 8;
96
98
  readonly connectedCorner: 8;
99
+ readonly connectedStep: "small";
97
100
  };
98
101
  readonly l: {
99
102
  readonly height: 96;
100
103
  readonly icon: 32;
101
104
  readonly standardGap: 8;
102
105
  readonly connectedCorner: 16;
106
+ readonly connectedStep: "large";
103
107
  };
104
108
  readonly xl: {
105
109
  readonly height: 136;
106
110
  readonly icon: 40;
107
111
  readonly standardGap: 8;
108
112
  readonly connectedCorner: 20;
113
+ readonly connectedStep: "large-increased";
109
114
  };
110
115
  };
111
116
  /** Connected groups use 2dp between buttons at every size */
@@ -41,11 +41,11 @@ export const BUTTON_GROUP_SIZES = {
41
41
  XL: 'xl'
42
42
  };
43
43
  export const BUTTON_GROUP_SIZE_TOKENS = {
44
- xs: { height: 32, icon: 20, standardGap: 18, connectedCorner: 4 },
45
- s: { height: 40, icon: 20, standardGap: 12, connectedCorner: 8 },
46
- m: { height: 56, icon: 24, standardGap: 8, connectedCorner: 8 },
47
- l: { height: 96, icon: 32, standardGap: 8, connectedCorner: 16 },
48
- xl: { height: 136, icon: 40, standardGap: 8, connectedCorner: 20 }
44
+ xs: { height: 32, icon: 20, standardGap: 18, connectedCorner: 4, connectedStep: "extra-small" },
45
+ s: { height: 40, icon: 20, standardGap: 12, connectedCorner: 8, connectedStep: "small" },
46
+ m: { height: 56, icon: 24, standardGap: 8, connectedCorner: 8, connectedStep: "small" },
47
+ l: { height: 96, icon: 32, standardGap: 8, connectedCorner: 16, connectedStep: "large" },
48
+ xl: { height: 136, icon: 40, standardGap: 8, connectedCorner: 20, connectedStep: "large-increased" }
49
49
  };
50
50
  export const BUTTON_GROUP_CONNECTED_GAP = 2;
51
51
  export const BUTTON_GROUP_CONNECTED_PRESSED_CORNER = 4;
@@ -38,6 +38,11 @@ export interface ButtonGroupChangeEvent {
38
38
  buttonGroup: ButtonGroupComponent;
39
39
  /** Values of the selected buttons, in button order */
40
40
  values: string[];
41
+ /**
42
+ * The selection in the `value` shape of the `<m-button-group>` element's
43
+ * `change`: an array for a multi-select group, a string or null otherwise.
44
+ */
45
+ value: string | string[] | null;
41
46
  selected: ButtonComponent[];
42
47
  /** The button whose click caused the change, if any */
43
48
  button?: ButtonComponent;
@@ -1,4 +1,5 @@
1
1
  import { BaseComponent, CardComponent, ApiOptions } from "./types.js";
2
+ import type { EventCallback } from "../../core/state/emitter.js";
2
3
  /**
3
4
  * Enhances a card component with API methods.
4
5
  * This follows the higher-order function pattern to add public API methods
@@ -15,6 +16,9 @@ import { BaseComponent, CardComponent, ApiOptions } from "./types.js";
15
16
  */
16
17
  type ComponentWithElements = Omit<BaseComponent, 'config' | 'addClass'> & {
17
18
  addClass: (...classes: string[]) => unknown;
19
+ /** From withEvents in the card's pipe */
20
+ on: (event: string, handler: EventCallback) => unknown;
21
+ off: (event: string, handler: EventCallback) => unknown;
18
22
  };
19
23
  export declare const withAPI: ({ lifecycle, config }: ApiOptions) => (component: ComponentWithElements) => CardComponent;
20
24
  export {};
@@ -2,6 +2,14 @@ export const withAPI = ({ lifecycle, config }) => (component) => ({
2
2
  ...component,
3
3
  element: component.element,
4
4
  config,
5
+ on(event, handler) {
6
+ component.on(event, handler);
7
+ return this;
8
+ },
9
+ off(event, handler) {
10
+ component.off(event, handler);
11
+ return this;
12
+ },
5
13
  addContent(contentElement) {
6
14
  if (contentElement && contentElement.classList.contains(`${component.getClass('card')}__content`)) {
7
15
  component.element.appendChild(contentElement);
@@ -3,12 +3,11 @@ import { createBase, withElement } from "../../core/compose/component.js";
3
3
  import { withEvents, withVariant, withRipple, withLifecycle } from "../../core/compose/features/index.js";
4
4
  import { withAPI } from "./api.js";
5
5
  import { createBaseConfig, getElementConfig, getApiConfig, withInteractiveBehavior, processInlineConfig, applyInlineConfiguration } from "./config.js";
6
- import { withElevation } from "./features.js";
7
6
  const createCard = (config = {}) => {
8
7
  const processedConfig = processInlineConfig(config);
9
8
  const baseConfig = createBaseConfig(processedConfig);
10
9
  try {
11
- const card = pipe(createBase, withEvents(), withElement(getElementConfig(baseConfig)), withVariant(baseConfig), baseConfig.clickable ? withRipple(baseConfig) : (c) => c, withLifecycle(), withInteractiveBehavior, withElevation, comp => withAPI({ ...getApiConfig(comp), config: baseConfig })(comp))(baseConfig);
10
+ const card = pipe(createBase, withEvents(), withElement(getElementConfig(baseConfig)), withVariant(baseConfig), baseConfig.clickable ? withRipple(baseConfig) : (c) => c, withLifecycle(), withInteractiveBehavior, comp => withAPI({ ...getApiConfig(comp), config: baseConfig })(comp))(baseConfig);
12
11
  applyInlineConfiguration(card, processedConfig);
13
12
  return card;
14
13
  }
@@ -70,7 +70,7 @@ export const applyInlineConfiguration = (card, config) => {
70
70
  export const createBaseConfig = (config = {}) => createComponentConfig(defaultConfig, config, "card");
71
71
  export const getElementConfig = (config) => {
72
72
  const isInteractive = config.interactive || config.clickable;
73
- const defaultRole = isInteractive ? "button" : "region";
73
+ const defaultRole = config.clickable ? "button" : "article";
74
74
  const ariaAttributes = {};
75
75
  if (config.aria) {
76
76
  Object.entries(config.aria).forEach(([key, value]) => {
@@ -83,7 +83,7 @@ export const getElementConfig = (config) => {
83
83
  if (!ariaAttributes["role"] && !config.aria?.role) {
84
84
  ariaAttributes["role"] = defaultRole;
85
85
  }
86
- if (isInteractive && !ariaAttributes["tabindex"]) {
86
+ if (config.clickable && !ariaAttributes["tabindex"]) {
87
87
  ariaAttributes["tabindex"] = "0";
88
88
  }
89
89
  return createElementConfig(config, {
@@ -115,16 +115,6 @@ export const withInteractiveBehavior = (comp) => {
115
115
  const config = comp.config;
116
116
  const isInteractive = config.interactive || config.clickable;
117
117
  if (isInteractive) {
118
- comp.element.addEventListener("mouseenter", () => {
119
- if (config.variant === CARD_VARIANTS.ELEVATED) {
120
- comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL2));
121
- }
122
- });
123
- comp.element.addEventListener("mouseleave", () => {
124
- if (config.variant === CARD_VARIANTS.ELEVATED) {
125
- comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL1));
126
- }
127
- });
128
118
  comp.element.addEventListener("keydown", (e) => {
129
119
  if ((e.key === "Enter" || e.key === " ") && config.clickable) {
130
120
  e.preventDefault();
@@ -141,7 +131,6 @@ export const withInteractiveBehavior = (comp) => {
141
131
  if (config.draggable) {
142
132
  comp.element.setAttribute("draggable", "true");
143
133
  comp.element.addEventListener("dragstart", (e) => {
144
- comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL4));
145
134
  comp.element.classList.add(`${comp.getClass("card")}--dragging`);
146
135
  comp.emit?.("dragstart", { event: e });
147
136
  if (e.dataTransfer) {
@@ -151,7 +140,6 @@ export const withInteractiveBehavior = (comp) => {
151
140
  }
152
141
  });
153
142
  comp.element.addEventListener("dragend", (e) => {
154
- comp.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL1));
155
143
  comp.element.classList.remove(`${comp.getClass("card")}--dragging`);
156
144
  comp.emit?.("dragend", { event: e });
157
145
  });
@@ -21,7 +21,6 @@ export const createCardContent = (config = {}) => {
21
21
  config.padding === false ? `${PREFIX}-card__content--no-padding` : null
22
22
  ].filter((name) => Boolean(name)),
23
23
  attributes: {
24
- 'role': 'region',
25
24
  'style': 'display: block; color: inherit;'
26
25
  }
27
26
  }))(baseConfig);
@@ -58,10 +57,6 @@ export const createCardHeader = (config = {}) => {
58
57
  tag: 'div',
59
58
  componentName: 'card__header',
60
59
  className: config.class,
61
- attributes: {
62
- 'role': 'heading',
63
- 'aria-level': '3'
64
- }
65
60
  }))(baseConfig);
66
61
  const textContainer = createElement({
67
62
  tag: 'div',
@@ -81,7 +76,7 @@ export const createCardHeader = (config = {}) => {
81
76
  }
82
77
  if (config.subtitle) {
83
78
  createElement({
84
- tag: 'h4',
79
+ tag: 'p',
85
80
  className: `${PREFIX}-card__header-subtitle`,
86
81
  text: config.subtitle,
87
82
  container: textContainer
@@ -52,27 +52,13 @@ export declare const withLoading: (config?: LoadingConfig) => (component: BaseCo
52
52
  loading: LoadingFeature;
53
53
  };
54
54
  /**
55
- * Higher-order function to add elevation to a card based on its variant.
55
+ * Did nothing visible: it wrote a `--{prefix}-card-elevation` custom property
56
+ * that no stylesheet reads. A card's elevation comes from its variant and
57
+ * state classes in the stylesheet.
56
58
  *
57
- * Sets the initial elevation CSS variable according to Material Design 3 guidelines:
58
- * - Elevated variant: 1dp elevation
59
- * - Filled and outlined variants: 0dp elevation
60
- *
61
- * These elevation values affect shadows and surface appearance of the card
62
- * to create appropriate visual hierarchy.
63
- *
64
- * @param {BaseComponent} component - Card component
65
- * @returns {BaseComponent} Card component with elevation applied
59
+ * @deprecated Since 0.10 (FLO-323): a no-op, removed in 1.0. Drop it from
60
+ * the composition.
66
61
  * @category Components
67
- * @example
68
- * ```typescript
69
- * // Apply elevation in the composition chain
70
- * const card = pipe(
71
- * createBase,
72
- * withElement(config),
73
- * withElevation
74
- * )(baseConfig);
75
- * ```
76
62
  */
77
63
  export declare const withElevation: <C extends ElementComponent>(component: C) => C;
78
64
  /**
@@ -6,7 +6,6 @@ const HIDDEN_ACTION_STYLE = {
6
6
  visibility: "hidden",
7
7
  };
8
8
  import { createElement } from "../../core/dom/create.js";
9
- import { CARD_ELEVATION_LEVELS } from "./config.js";
10
9
  export const withLoading = (config = {}) => (component) => {
11
10
  const initialState = config.initialState || false;
12
11
  let loadingElement = null;
@@ -50,16 +49,7 @@ export const withLoading = (config = {}) => (component) => {
50
49
  },
51
50
  };
52
51
  };
53
- export const withElevation = (component) => {
54
- const config = component.config;
55
- if (config.variant === "elevated") {
56
- component.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL1));
57
- }
58
- else {
59
- component.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL0));
60
- }
61
- return component;
62
- };
52
+ export const withElevation = (component) => component;
63
53
  export const withExpandable = (config = {}) => (component) => {
64
54
  const initialExpanded = config.initialExpanded || false;
65
55
  let isExpanded = initialExpanded;
@@ -65,7 +65,7 @@ export { default } from "./card.js";
65
65
  *
66
66
  * These types define the structure and behavior of the Card component.
67
67
  */
68
- export type { CardVariant, CardElevationLevel, CardSchema, CardHeaderConfig, CardContentConfig, CardActionsConfig, CardMediaConfig, CardAriaAttributes, CardComponent, LoadingFeature, ExpandableFeature, SwipeableFeature, } from "./types.js";
68
+ export type { CardVariant, CardElevationLevel, CardSchema, CardHeaderConfig, CardContentConfig, CardActionsConfig, CardMediaConfig, CardAriaAttributes, CardComponent, CardEvents, LoadingFeature, ExpandableFeature, SwipeableFeature, } from "./types.js";
69
69
  export { createCardContent, createCardHeader, createCardActions, createCardMedia, } from "./content.js";
70
70
  export { withAPI } from "./api.js";
71
71
  export { withLoading, withExpandable, withSwipeable, withElevation, } from "./features.js";
@@ -1,4 +1,5 @@
1
1
  import type { ButtonConfig as BaseButtonConfig } from "../button/types.js";
2
+ import type { ForwardedEventPayload } from "../../core/dom/index.js";
2
3
  /**
3
4
  * Card variant types following Material Design 3 guidelines.
4
5
  * - elevated: Card with shadow elevation (default)
@@ -58,11 +59,18 @@ export interface ButtonConfig extends Omit<BaseButtonConfig, "variant"> {
58
59
  export interface CardSchema {
59
60
  /** Card variant type (elevated, filled, outlined) */
60
61
  variant?: CardVariant | string;
61
- /** Whether the card is interactive */
62
+ /**
63
+ * The hover and press states and their elevation, for a card the app
64
+ * makes interactive itself. Not a control: no role of button and no tab
65
+ * stop; `clickable` is (FLO-109).
66
+ */
62
67
  interactive?: boolean;
63
68
  /** Whether the card should take full width */
64
69
  fullWidth?: boolean;
65
- /** Whether the card is clickable (with ripple effect) */
70
+ /**
71
+ * A card that acts on activation: a button (role, tab stop, Enter and
72
+ * Space click it) with the ripple (FLO-109)
73
+ */
66
74
  clickable?: boolean;
67
75
  /** Whether the card is draggable */
68
76
  draggable?: boolean;
@@ -109,7 +117,7 @@ export interface CardAriaAttributes {
109
117
  labelledby?: string;
110
118
  /** ARIA describedby */
111
119
  describedby?: string;
112
- /** ARIA role (default is 'region' for non-interactive, 'button' for interactive) */
120
+ /** ARIA role (default: 'button' for a clickable card, 'article' for any other) */
113
121
  role?: string;
114
122
  /** Additional ARIA attributes as key-value pairs */
115
123
  [key: string]: string | undefined;
@@ -277,6 +285,25 @@ export interface CardComponentConfig extends CardSchema {
277
285
  /** CSS class prefix */
278
286
  prefix: string;
279
287
  }
288
+ /**
289
+ * The card's events (FLO-323). A clickable card forwards `click`; an
290
+ * interactive one `mouseenter`, `mouseleave`, `keydown`, `focus` and `blur`;
291
+ * a draggable one emits `dragstart` and `dragend`.
292
+ */
293
+ export interface CardEvents {
294
+ click: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
295
+ mouseenter: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
296
+ mouseleave: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
297
+ keydown: (payload: ForwardedEventPayload<KeyboardEvent, HTMLElement>) => void;
298
+ focus: (payload: ForwardedEventPayload<FocusEvent, HTMLElement>) => void;
299
+ blur: (payload: ForwardedEventPayload<FocusEvent, HTMLElement>) => void;
300
+ dragstart: (payload: {
301
+ event: DragEvent;
302
+ }) => void;
303
+ dragend: (payload: {
304
+ event: DragEvent;
305
+ }) => void;
306
+ }
280
307
  /**
281
308
  * Card component interface with methods.
282
309
  * This is the public API of the card component that users interact with.
@@ -286,6 +313,10 @@ export interface CardComponentConfig extends CardSchema {
286
313
  * @category Components
287
314
  */
288
315
  export interface CardComponent extends BaseComponent {
316
+ /** Subscribes to one of the card's events (FLO-323) */
317
+ on: <K extends keyof CardEvents>(event: K, handler: CardEvents[K]) => CardComponent;
318
+ /** Removes a handler added with `on` */
319
+ off: <K extends keyof CardEvents>(event: K, handler: CardEvents[K]) => CardComponent;
289
320
  /**
290
321
  * Adds content to the card.
291
322
  * This method appends content to the card component.
@@ -1,5 +1,6 @@
1
1
  import { CAROUSEL_DEFAULTS, CAROUSEL_EVENTS, CAROUSEL_VARIANTS } from "../constants.js";
2
2
  import { resolveLayoutDefaults } from "../config.js";
3
+ import { cornerToken } from "../../../core/theme/shape.js";
3
4
  import { multiBrowseKeylines, heroKeylines, uncontainedKeylines, fullScreenKeylines, } from "../keylines.js";
4
5
  import { createStrategy, keylinesForScrollOffset, snapPositionOffset, maxScrollOffset, placeItem, } from "../strategy.js";
5
6
  const FLING_VELOCITY = 0.4;
@@ -14,6 +15,9 @@ export const withScroll = (config) => (component) => {
14
15
  mediumLargeThreshold: CAROUSEL_DEFAULTS.MEDIUM_LARGE_THRESHOLD,
15
16
  };
16
17
  const cornerRadius = config.cornerRadius ?? CAROUSEL_DEFAULTS.CORNER_RADIUS;
18
+ const corner = cornerRadius === CAROUSEL_DEFAULTS.CORNER_RADIUS
19
+ ? cornerToken("extra-large", cornerRadius, config.prefix)
20
+ : `${cornerRadius}px`;
17
21
  const reduceMotion = typeof window !== "undefined" && typeof window.matchMedia === "function"
18
22
  ? window.matchMedia("(prefers-reduced-motion: reduce)")
19
23
  : null;
@@ -121,7 +125,7 @@ export const withScroll = (config) => (component) => {
121
125
  el.style[vertical ? "height" : "width"] = `${strategy.itemSize}px`;
122
126
  el.style[vertical ? "width" : "height"] = "";
123
127
  });
124
- element.style.setProperty(`--${config.prefix}-carousel-corner`, `${cornerRadius}px`);
128
+ element.style.setProperty(`--${config.prefix}-carousel-corner`, corner);
125
129
  };
126
130
  const layout = () => {
127
131
  if (!strategy)
@@ -152,8 +156,8 @@ export const withScroll = (config) => (component) => {
152
156
  el.style.visibility = "";
153
157
  el.style.transform = vertical ? `translate3d(0, ${start}px, 0)` : `translate3d(${start}px, 0, 0)`;
154
158
  el.style.clipPath = vertical
155
- ? `inset(${inset}px 0 round ${cornerRadius}px)`
156
- : `inset(0 ${inset}px round ${cornerRadius}px)`;
159
+ ? `inset(${inset}px 0 round ${corner})`
160
+ : `inset(0 ${inset}px round ${corner})`;
157
161
  el.style.setProperty(`--${config.prefix}-carousel-fade`, fade.toFixed(3));
158
162
  }
159
163
  if (pending !== null) {