@expressivecss/expressive 0.13.1 → 0.15.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 (257) hide show
  1. package/CHANGELOG.md +196 -1
  2. package/README.md +2 -1
  3. package/dist/css/expressive.css +432 -311
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/js/chunks/{chunk-DTKR54I6.mjs → chunk-33QVDDGR.mjs} +3 -3
  8. package/dist/js/chunks/{chunk-SPETGK25.mjs → chunk-45FER6RI.mjs} +5 -5
  9. package/dist/js/chunks/chunk-45FER6RI.mjs.map +7 -0
  10. package/dist/js/chunks/{chunk-WJXDBPXQ.mjs → chunk-5CEAOLUA.mjs} +17 -20
  11. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +7 -0
  12. package/dist/js/chunks/{chunk-CKQP6P76.mjs → chunk-6VATUZC6.mjs} +12 -7
  13. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +7 -0
  14. package/dist/js/chunks/{chunk-QDAL4IYN.mjs → chunk-74MXKKLN.mjs} +2 -2
  15. package/dist/js/chunks/{chunk-QDAL4IYN.mjs.map → chunk-74MXKKLN.mjs.map} +2 -2
  16. package/dist/js/chunks/{chunk-DLWYKFEI.mjs → chunk-AIURVCG6.mjs} +3 -3
  17. package/dist/js/chunks/{chunk-NNYP33NB.mjs → chunk-BGZLF6JZ.mjs} +19 -18
  18. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +7 -0
  19. package/dist/js/chunks/chunk-C6CHEWYP.mjs +154 -0
  20. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +7 -0
  21. package/dist/js/chunks/{chunk-GVGT6MIU.mjs → chunk-CK2XCICY.mjs} +2 -2
  22. package/dist/js/chunks/{chunk-XGHORT7J.mjs → chunk-CXXM2L4F.mjs} +8 -9
  23. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +7 -0
  24. package/dist/js/chunks/{chunk-QVVEWBOF.mjs → chunk-DXGRXYYL.mjs} +25 -37
  25. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +7 -0
  26. package/dist/js/chunks/{chunk-QV2JAWIZ.mjs → chunk-FM5CZOUB.mjs} +5 -8
  27. package/dist/js/chunks/{chunk-QV2JAWIZ.mjs.map → chunk-FM5CZOUB.mjs.map} +2 -2
  28. package/dist/js/chunks/{chunk-PLYXLSH3.mjs → chunk-GJL6GCIU.mjs} +46 -58
  29. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +7 -0
  30. package/dist/js/chunks/chunk-K3HZMFMD.mjs +135 -0
  31. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +7 -0
  32. package/dist/js/chunks/chunk-KHXZ2A4K.mjs +395 -0
  33. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +7 -0
  34. package/dist/js/chunks/chunk-KQACNQ22.mjs +7 -0
  35. package/dist/js/chunks/{chunk-4PWAPV6F.mjs.map → chunk-KQACNQ22.mjs.map} +1 -1
  36. package/dist/js/chunks/chunk-KUFHW3DS.mjs +214 -0
  37. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +7 -0
  38. package/dist/js/chunks/{chunk-LWBQIX5J.mjs → chunk-KVJAVDBC.mjs} +46 -57
  39. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +7 -0
  40. package/dist/js/chunks/{chunk-YDCS5S3J.mjs → chunk-L27Q6ZMI.mjs} +2 -2
  41. package/dist/js/chunks/{chunk-CCWDV5CR.mjs → chunk-LQWUDNHZ.mjs} +3 -3
  42. package/dist/js/chunks/{chunk-6OMRGML6.mjs → chunk-M372EDXD.mjs} +7 -13
  43. package/dist/js/chunks/{chunk-6OMRGML6.mjs.map → chunk-M372EDXD.mjs.map} +2 -2
  44. package/dist/js/chunks/{chunk-EC63CHXU.mjs → chunk-M3MURWMB.mjs} +20 -16
  45. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +7 -0
  46. package/dist/js/chunks/{chunk-U2OTHOTI.mjs → chunk-NUHMOAOY.mjs} +19 -33
  47. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +7 -0
  48. package/dist/js/chunks/{chunk-P3G3QHII.mjs → chunk-OWG3LMUL.mjs} +17 -14
  49. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +7 -0
  50. package/dist/js/chunks/{chunk-LTWPGFBR.mjs → chunk-PD6HYHAE.mjs} +4 -15
  51. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +7 -0
  52. package/dist/js/chunks/{chunk-PIJ2TAR3.mjs → chunk-PDG64UHF.mjs} +3 -3
  53. package/dist/js/chunks/{chunk-IFXVDDDH.mjs → chunk-PO3AXVR3.mjs} +38 -64
  54. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +7 -0
  55. package/dist/js/chunks/{chunk-QKWPQK5N.mjs → chunk-QYGK36OG.mjs} +16 -14
  56. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +7 -0
  57. package/dist/js/chunks/{chunk-UNEMYWEW.mjs → chunk-SFI2U4YW.mjs} +28 -44
  58. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +7 -0
  59. package/dist/js/chunks/{chunk-VTLBW7QS.mjs → chunk-SMY7GJSS.mjs} +3 -3
  60. package/dist/js/chunks/{chunk-O5XPWXIQ.mjs → chunk-TCCA2HDG.mjs} +39 -31
  61. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +7 -0
  62. package/dist/js/chunks/{chunk-UBLRRJ7N.mjs → chunk-TSZYSW7F.mjs} +4 -4
  63. package/dist/js/chunks/{chunk-UBLRRJ7N.mjs.map → chunk-TSZYSW7F.mjs.map} +2 -2
  64. package/dist/js/chunks/{chunk-UEZUJQ66.mjs → chunk-UAZSDUVP.mjs} +3 -4
  65. package/dist/js/chunks/{chunk-UEZUJQ66.mjs.map → chunk-UAZSDUVP.mjs.map} +2 -2
  66. package/dist/js/chunks/{chunk-6N2XAEFK.mjs → chunk-UBRZZWRA.mjs} +10 -8
  67. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +7 -0
  68. package/dist/js/chunks/{chunk-3VOK6J7U.mjs → chunk-UCOE7ZDL.mjs} +47 -45
  69. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +7 -0
  70. package/dist/js/chunks/{chunk-K4CJCRGE.mjs → chunk-UETTGDLI.mjs} +3 -3
  71. package/dist/js/chunks/{chunk-RHRQKTTX.mjs → chunk-UNCRDLP6.mjs} +6 -9
  72. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +7 -0
  73. package/dist/js/chunks/{chunk-LNCCYGPC.mjs → chunk-VGNYF6FB.mjs} +8 -10
  74. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-UAEAQBRC.mjs → chunk-VGPGBNGL.mjs} +4 -12
  76. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +7 -0
  77. package/dist/js/chunks/chunk-VKAUVTQY.mjs +1 -0
  78. package/dist/js/chunks/{chunk-HKT2S7VM.mjs → chunk-VM4FTS7L.mjs} +3 -3
  79. package/dist/js/chunks/{chunk-55IA2XUC.mjs → chunk-WDK4T63U.mjs} +8 -11
  80. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-XH6BEEMY.mjs → chunk-WOCCTVUF.mjs} +51 -39
  82. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-GZWPXXY6.mjs → chunk-WQYN5L4E.mjs} +14 -16
  84. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +7 -0
  85. package/dist/js/chunks/{chunk-6WLSDZ4O.mjs → chunk-X4ISMKE2.mjs} +2 -2
  86. package/dist/js/chunks/{chunk-3DHK5CZU.mjs → chunk-XAEAEHIX.mjs} +6 -8
  87. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +7 -0
  88. package/dist/js/chunks/{chunk-3CLXLPYS.mjs → chunk-ZX6M7SWO.mjs} +43 -29
  89. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +7 -0
  90. package/dist/js/expressive.cjs +1337 -572
  91. package/dist/js/expressive.cjs.map +4 -4
  92. package/dist/js/expressive.js +1337 -572
  93. package/dist/js/expressive.js.map +4 -4
  94. package/dist/js/expressive.min.js +10 -13
  95. package/dist/js/expressive.min.js.map +4 -4
  96. package/dist/js/expressive.mjs +71 -55
  97. package/dist/js/expressive.mjs.map +1 -1
  98. package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
  99. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  100. package/dist/js/internal/behaviors/forms.mjs +2 -2
  101. package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
  102. package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
  103. package/dist/js/internal/components/appBar.mjs +2 -2
  104. package/dist/js/internal/components/autocomplete.mjs +4 -4
  105. package/dist/js/internal/components/barChart.mjs +4 -4
  106. package/dist/js/internal/components/buttonGroup.mjs +2 -2
  107. package/dist/js/internal/components/buttons.mjs +3 -3
  108. package/dist/js/internal/components/cards.mjs +3 -3
  109. package/dist/js/internal/components/carousel.mjs +3 -3
  110. package/dist/js/internal/components/characterCounter.mjs +2 -2
  111. package/dist/js/internal/components/chips.mjs +5 -5
  112. package/dist/js/internal/components/columnChart.mjs +3 -3
  113. package/dist/js/internal/components/commandPalette.mjs +3 -3
  114. package/dist/js/internal/components/confetti.mjs +8 -0
  115. package/dist/js/internal/components/confetti.mjs.map +7 -0
  116. package/dist/js/internal/components/datepicker.mjs +6 -6
  117. package/dist/js/internal/components/expandingCard.mjs +3 -3
  118. package/dist/js/internal/components/heatmapChart.mjs +3 -3
  119. package/dist/js/internal/components/index.mjs +64 -48
  120. package/dist/js/internal/components/keypad.mjs +9 -0
  121. package/dist/js/internal/components/keypad.mjs.map +7 -0
  122. package/dist/js/internal/components/lightbox.mjs +3 -3
  123. package/dist/js/internal/components/lineChart.mjs +6 -2
  124. package/dist/js/internal/components/mapView.mjs +9 -0
  125. package/dist/js/internal/components/mapView.mjs.map +7 -0
  126. package/dist/js/internal/components/menu.mjs +3 -3
  127. package/dist/js/internal/components/messageScroller.mjs +3 -3
  128. package/dist/js/internal/components/mixedChart.mjs +4 -4
  129. package/dist/js/internal/components/navigationRail.mjs +2 -2
  130. package/dist/js/internal/components/particles.mjs +8 -0
  131. package/dist/js/internal/components/particles.mjs.map +7 -0
  132. package/dist/js/internal/components/pieChart.mjs +3 -3
  133. package/dist/js/internal/components/questionnaire.mjs +3 -3
  134. package/dist/js/internal/components/radarChart.mjs +3 -3
  135. package/dist/js/internal/components/radialChart.mjs +3 -3
  136. package/dist/js/internal/components/registry.mjs +41 -37
  137. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  138. package/dist/js/internal/components/scrollspy.mjs +2 -2
  139. package/dist/js/internal/components/select.mjs +4 -4
  140. package/dist/js/internal/components/slider.mjs +3 -3
  141. package/dist/js/internal/components/snackbar.mjs +2 -2
  142. package/dist/js/internal/components/tabs.mjs +4 -4
  143. package/dist/js/internal/components/timepicker.mjs +4 -4
  144. package/dist/js/internal/components/tooltip.mjs +3 -3
  145. package/dist/js/internal/core/component.mjs +1 -1
  146. package/dist/js/internal/core/utils.mjs +1 -1
  147. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  148. package/dist/js/modular.mjs +71 -55
  149. package/dist/types/behaviors/forms.d.ts +5 -0
  150. package/dist/types/components/autocomplete.d.ts +1 -0
  151. package/dist/types/components/carousel.d.ts +2 -0
  152. package/dist/types/components/confetti.d.ts +103 -0
  153. package/dist/types/components/datepicker.d.ts +5 -4
  154. package/dist/types/components/expandingCard.d.ts +2 -0
  155. package/dist/types/components/index.d.ts +4 -0
  156. package/dist/types/components/keypad.d.ts +34 -0
  157. package/dist/types/components/lightbox.d.ts +3 -5
  158. package/dist/types/components/lineChart.d.ts +4 -0
  159. package/dist/types/components/mapView.d.ts +151 -0
  160. package/dist/types/components/menu.d.ts +1 -0
  161. package/dist/types/components/particles.d.ts +72 -0
  162. package/dist/types/components/pieChart.d.ts +3 -0
  163. package/dist/types/components/radialChart.d.ts +0 -1
  164. package/dist/types/components/registry.d.ts +12 -0
  165. package/dist/types/components/slider.d.ts +3 -1
  166. package/dist/types/components/snackbar.d.ts +3 -0
  167. package/dist/types/components/tabs.d.ts +5 -1
  168. package/dist/types/components/timepicker.d.ts +2 -0
  169. package/dist/types/modular.d.ts +1 -1
  170. package/dist/types/plugins/dockedDisplayPlugin.d.ts +4 -3
  171. package/package.json +2 -1
  172. package/src/sass/abstracts/_breakpoints.scss +0 -1
  173. package/src/sass/abstracts/_elevation.scss +1 -1
  174. package/src/sass/abstracts/_mixins.scss +20 -60
  175. package/src/sass/abstracts/_variables.scss +10 -0
  176. package/src/sass/base/_global.scss +3 -12
  177. package/src/sass/base/_index.scss +1 -1
  178. package/src/sass/components/_badges.scss +1 -8
  179. package/src/sass/components/_bar-chart.scss +1 -1
  180. package/src/sass/components/_button-groups.scss +31 -66
  181. package/src/sass/components/_buttons.scss +1 -1
  182. package/src/sass/components/_cards.scss +6 -25
  183. package/src/sass/components/_carousel.scss +16 -55
  184. package/src/sass/components/_chips.scss +0 -6
  185. package/src/sass/components/_column-chart.scss +1 -1
  186. package/src/sass/components/_confetti.scss +14 -0
  187. package/src/sass/components/_data-table.scss +1 -3
  188. package/src/sass/components/_datepicker.scss +3 -22
  189. package/src/sass/components/_dialog.scss +1 -4
  190. package/src/sass/components/_heatmap-chart.scss +2 -2
  191. package/src/sass/components/_icon-buttons.scss +0 -1
  192. package/src/sass/components/_index.scss +4 -0
  193. package/src/sass/components/_keypad.scss +162 -0
  194. package/src/sass/components/_lightbox.scss +3 -8
  195. package/src/sass/components/_map.scss +188 -0
  196. package/src/sass/components/_menu.scss +31 -74
  197. package/src/sass/components/_mixed-chart.scss +1 -1
  198. package/src/sass/components/_navbar.scss +9 -45
  199. package/src/sass/components/_navigation-rail.scss +23 -32
  200. package/src/sass/components/_page-footer.scss +15 -12
  201. package/src/sass/components/_panes.scss +2 -6
  202. package/src/sass/components/_particles.scss +14 -0
  203. package/src/sass/components/_progress.scss +6 -4
  204. package/src/sass/components/_side-sheet.scss +1 -4
  205. package/src/sass/components/_stepper.scss +0 -4
  206. package/src/sass/components/_table_of_contents.scss +3 -1
  207. package/src/sass/components/_timepicker.scss +4 -36
  208. package/src/sass/components/_toolbar.scss +0 -4
  209. package/src/sass/components/forms/_checkboxes.scss +44 -67
  210. package/src/sass/components/forms/_fieldset.scss +3 -3
  211. package/src/sass/components/forms/_file-input.scss +0 -1
  212. package/src/sass/components/forms/_radio-buttons.scss +10 -36
  213. package/src/sass/components/forms/_select.scss +0 -3
  214. package/src/sass/components/forms/_slider.scss +72 -259
  215. package/src/sass/tokens/_state.scss +2 -2
  216. package/src/sass/tokens/_theme.scss +1 -1
  217. package/src/sass/utilities/_colors.scss +6 -1
  218. package/src/sass/utilities/_index.scss +1 -1
  219. package/dist/js/chunks/chunk-3CLXLPYS.mjs.map +0 -7
  220. package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +0 -7
  221. package/dist/js/chunks/chunk-3VOK6J7U.mjs.map +0 -7
  222. package/dist/js/chunks/chunk-4PWAPV6F.mjs +0 -7
  223. package/dist/js/chunks/chunk-55IA2XUC.mjs.map +0 -7
  224. package/dist/js/chunks/chunk-6N2XAEFK.mjs.map +0 -7
  225. package/dist/js/chunks/chunk-CKQP6P76.mjs.map +0 -7
  226. package/dist/js/chunks/chunk-EC63CHXU.mjs.map +0 -7
  227. package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +0 -7
  228. package/dist/js/chunks/chunk-IFXVDDDH.mjs.map +0 -7
  229. package/dist/js/chunks/chunk-LNCCYGPC.mjs.map +0 -7
  230. package/dist/js/chunks/chunk-LTWPGFBR.mjs.map +0 -7
  231. package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +0 -7
  232. package/dist/js/chunks/chunk-NNYP33NB.mjs.map +0 -7
  233. package/dist/js/chunks/chunk-NQLC3YMW.mjs +0 -1
  234. package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +0 -7
  235. package/dist/js/chunks/chunk-P3G3QHII.mjs.map +0 -7
  236. package/dist/js/chunks/chunk-PLYXLSH3.mjs.map +0 -7
  237. package/dist/js/chunks/chunk-QKWPQK5N.mjs.map +0 -7
  238. package/dist/js/chunks/chunk-QVVEWBOF.mjs.map +0 -7
  239. package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +0 -7
  240. package/dist/js/chunks/chunk-SPETGK25.mjs.map +0 -7
  241. package/dist/js/chunks/chunk-U2OTHOTI.mjs.map +0 -7
  242. package/dist/js/chunks/chunk-UAEAQBRC.mjs.map +0 -7
  243. package/dist/js/chunks/chunk-UNEMYWEW.mjs.map +0 -7
  244. package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +0 -7
  245. package/dist/js/chunks/chunk-XGHORT7J.mjs.map +0 -7
  246. package/dist/js/chunks/chunk-XH6BEEMY.mjs.map +0 -7
  247. /package/dist/js/chunks/{chunk-DTKR54I6.mjs.map → chunk-33QVDDGR.mjs.map} +0 -0
  248. /package/dist/js/chunks/{chunk-DLWYKFEI.mjs.map → chunk-AIURVCG6.mjs.map} +0 -0
  249. /package/dist/js/chunks/{chunk-GVGT6MIU.mjs.map → chunk-CK2XCICY.mjs.map} +0 -0
  250. /package/dist/js/chunks/{chunk-YDCS5S3J.mjs.map → chunk-L27Q6ZMI.mjs.map} +0 -0
  251. /package/dist/js/chunks/{chunk-CCWDV5CR.mjs.map → chunk-LQWUDNHZ.mjs.map} +0 -0
  252. /package/dist/js/chunks/{chunk-PIJ2TAR3.mjs.map → chunk-PDG64UHF.mjs.map} +0 -0
  253. /package/dist/js/chunks/{chunk-VTLBW7QS.mjs.map → chunk-SMY7GJSS.mjs.map} +0 -0
  254. /package/dist/js/chunks/{chunk-K4CJCRGE.mjs.map → chunk-UETTGDLI.mjs.map} +0 -0
  255. /package/dist/js/chunks/{chunk-NQLC3YMW.mjs.map → chunk-VKAUVTQY.mjs.map} +0 -0
  256. /package/dist/js/chunks/{chunk-HKT2S7VM.mjs.map → chunk-VM4FTS7L.mjs.map} +0 -0
  257. /package/dist/js/chunks/{chunk-6WLSDZ4O.mjs.map → chunk-X4ISMKE2.mjs.map} +0 -0
@@ -0,0 +1,72 @@
1
+ import { Component, BaseOptions, InitElements, InitElement } from '../core/component';
2
+ export interface ParticlesOptions extends BaseOptions {
3
+ /**
4
+ * Number of particles.
5
+ * @default 100
6
+ */
7
+ quantity: number;
8
+ /**
9
+ * How firmly particles hold their place against the pointer. Lower
10
+ * follows the pointer further.
11
+ * @default 50
12
+ */
13
+ staticity: number;
14
+ /**
15
+ * Frames a particle takes to catch up with the pointer. Higher is slower.
16
+ * @default 50
17
+ */
18
+ ease: number;
19
+ /**
20
+ * Base radius in pixels. Each particle adds 0 or 1 to it.
21
+ * @default 0.4
22
+ */
23
+ size: number;
24
+ /**
25
+ * A CSS color. Empty uses the canvas's CSS `color`, which defaults to the
26
+ * theme's on-surface color.
27
+ * @default ''
28
+ */
29
+ color: string;
30
+ /**
31
+ * Horizontal drift in pixels per frame. Negative drifts left.
32
+ * @default 0
33
+ */
34
+ vx: number;
35
+ /**
36
+ * Vertical drift in pixels per frame. Negative drifts up.
37
+ * @default 0
38
+ */
39
+ vy: number;
40
+ }
41
+ /**
42
+ * Particles. A `<canvas class="particles">` covers its nearest positioned
43
+ * ancestor with slowly drifting dots that lean toward the pointer. Under
44
+ * reduced motion the dots are drawn once and stay still.
45
+ */
46
+ export declare class Particles extends Component<ParticlesOptions> {
47
+ el: HTMLCanvasElement;
48
+ private _ctx;
49
+ private _style;
50
+ private _particles;
51
+ private _width;
52
+ private _height;
53
+ private _frame;
54
+ private _last;
55
+ private _mouse;
56
+ private _still;
57
+ private _resizeObserver;
58
+ private _visibility;
59
+ constructor(el: HTMLElement, options: Partial<ParticlesOptions>);
60
+ static get defaults(): ParticlesOptions;
61
+ static init(el: HTMLElement, options?: Partial<ParticlesOptions>): Particles;
62
+ static init(els: InitElements<InitElement>, options?: Partial<ParticlesOptions>): Particles[];
63
+ static getInstance(el: HTMLElement): Particles;
64
+ destroy(): void;
65
+ private _start;
66
+ private _stop;
67
+ private _onPointerMove;
68
+ private _reset;
69
+ private _particle;
70
+ private _draw;
71
+ private _paint;
72
+ }
@@ -15,6 +15,8 @@ export declare class PieChart extends LineChart {
15
15
  /** Each row's color, or undefined for a row with no slice. */
16
16
  private _colors;
17
17
  private _slices;
18
+ /** Percent formatters by fraction digits, rebuilt once per legend. */
19
+ private _percents;
18
20
  protected get _type(): string;
19
21
  protected get _key(): string;
20
22
  protected get _points(): boolean;
@@ -27,6 +29,7 @@ export declare class PieChart extends LineChart {
27
29
  protected _place(index: number): void;
28
30
  /** The row's share of the whole as a percentage, or '' for none. */
29
31
  private _share;
32
+ private _percent;
30
33
  /** The legend: every row with its color, its cell and its share. */
31
34
  protected _guides(): Element[];
32
35
  /** The row under the pointer by its angle from the middle, or -1 off the slices. */
@@ -29,7 +29,6 @@ export declare class RadialChart extends LineChart {
29
29
  show(index: number): void;
30
30
  /** The tooltip sits where the ring's fill ends. */
31
31
  protected _place(index: number): void;
32
- private _color;
33
32
  /** A fraction of the ring as a turn clockwise from the top. */
34
33
  private _turn;
35
34
  /** For more than one row, a legend of every row with its color and cell. */
@@ -43,6 +43,18 @@ export declare const AUTO_INIT_COMPONENTS: {
43
43
  component: typeof Components.Chips;
44
44
  selector: string;
45
45
  };
46
+ Confetti: {
47
+ component: typeof Components.Confetti;
48
+ selector: string;
49
+ };
50
+ Particles: {
51
+ component: typeof Components.Particles;
52
+ selector: string;
53
+ };
54
+ Keypad: {
55
+ component: typeof Components.Keypad;
56
+ selector: string;
57
+ };
46
58
  ColumnChart: {
47
59
  component: typeof Components.ColumnChart;
48
60
  selector: string;
@@ -28,7 +28,7 @@ export declare class Slider extends Component<SliderOptions> {
28
28
  _removeEventHandlers(): void;
29
29
  _handleRangeChange: () => void;
30
30
  _handleRangePointerDown: (e: PointerEvent) => void;
31
- _handleRangeInputOrMove: (e: Event) => void;
31
+ _handleRangeInput: () => void;
32
32
  _handleRangePointerUp: (e: PointerEvent) => void;
33
33
  _handleRangeRelease: () => void;
34
34
  _setupThumb(): void;
@@ -36,6 +36,8 @@ export declare class Slider extends Component<SliderOptions> {
36
36
  _isVertical(): boolean;
37
37
  _host(): HTMLElement | null;
38
38
  _clampDual(): void;
39
+ /** The input's range, defaulting like the browser does: 0 to 100. */
40
+ private _bounds;
39
41
  _fraction(el: HTMLInputElement): number;
40
42
  _sync(): void;
41
43
  /**
@@ -90,6 +90,8 @@ export declare class Snackbar {
90
90
  time: number;
91
91
  deltaX: number;
92
92
  velocityX: number;
93
+ /** Swipe distance that dismisses, measured once when the drag starts. */
94
+ private _activationDistance;
93
95
  private _dismissed;
94
96
  private _returnFocus;
95
97
  private _events;
@@ -116,6 +118,7 @@ export declare class Snackbar {
116
118
  * over, so the movement so far says nothing about what the user wanted.
117
119
  */
118
120
  static _onDragCancel(e: PointerEvent): void;
121
+ private _snapBack;
119
122
  /**
120
123
  * dismiss all snackbars.
121
124
  */
@@ -57,10 +57,14 @@ export declare class Tabs extends Component<TabsOptions> {
57
57
  get index(): number;
58
58
  _setupEventHandlers(): void;
59
59
  _removeEventHandlers(): void;
60
- _handleWindowResize: () => void;
60
+ _handleWindowResize: (...args: unknown[]) => void;
61
61
  _queryTabLinks(): NodeListOf<HTMLAnchorElement>;
62
62
  _handleTabClick: (e: MouseEvent) => void;
63
63
  _createIndicator(): void;
64
+ /** Reads both positions before writing either. */
65
+ private _positionIndicator;
66
+ /** The panel a link shows, or null for a `target` link or one without a hash. */
67
+ private _panelFor;
64
68
  /**
65
69
  * Which tab is current, for the eye and for assistive technology.
66
70
  *
@@ -168,6 +168,7 @@ export declare class Timepicker extends Component<TimepickerOptions> {
168
168
  destroy(): void;
169
169
  _setupEventHandlers(): void;
170
170
  _removeEventHandlers(): void;
171
+ private _removeDragListeners;
171
172
  _handleInputClick: () => void;
172
173
  _handleInputKeydown: (e: KeyboardEvent) => void;
173
174
  _handleClockClickStart: (e: PointerEvent) => void;
@@ -194,6 +195,7 @@ export declare class Timepicker extends Component<TimepickerOptions> {
194
195
  _buildHoursView(): void;
195
196
  _buildHoursTick(i: number, radian: number, radius: number): void;
196
197
  _buildMinutesView(): void;
198
+ private _placeTick;
197
199
  _handleAmPmClick: (e: MouseEvent) => void;
198
200
  _handleAmPmInteraction: (e: HTMLElement) => void;
199
201
  _updateAmPmView(): void;
@@ -5,7 +5,7 @@ export { SideSheets } from './behaviors/sideSheets';
5
5
  export { Forms } from './behaviors/forms';
6
6
  export { AutoInit } from './components/registry';
7
7
  export type { AutoInitOptions } from './components/registry';
8
- export declare const version = "0.13.1";
8
+ export declare const version = "0.15.0";
9
9
  export type * from './components/autocomplete';
10
10
  export type * from './components/appBar';
11
11
  export type * from './components/buttons';
@@ -23,10 +23,11 @@ export declare class DockedDisplayPlugin {
23
23
  private visible;
24
24
  constructor(el: HTMLElement, container: HTMLElement, options: Partial<DockedDisplayPluginOptions>);
25
25
  private _handleDocumentClick;
26
+ private get _transition();
26
27
  /**
27
- * Tears the plugin down. The document listener holds a reference to this
28
- * instance - and through it the whole picker subtree - so the owning
29
- * component must call this from its own destroy().
28
+ * Tears the plugin down. While shown, the document listener holds a
29
+ * reference to this instance - and through it the whole picker subtree - so
30
+ * the owning component must call this from its own destroy().
30
31
  */
31
32
  destroy: () => void;
32
33
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expressivecss/expressive",
3
- "version": "0.13.1",
3
+ "version": "0.15.0",
4
4
  "description": "ExpressiveCSS - a Material Design 3 front-end framework.",
5
5
  "license": "MIT",
6
6
  "author": "BaezFJ <baezdevs@gmail.com>",
@@ -137,6 +137,7 @@
137
137
  "esbuild": "^0.28.2",
138
138
  "fallow": "^3.23.0",
139
139
  "jsdom": "^30.0.1",
140
+ "maplibre-gl": "^6.13.0",
140
141
  "npm-run-all2": "^9.0.3",
141
142
  "sass": "^1.102.0",
142
143
  "smol-toml": "^1.8.0",
@@ -1,5 +1,4 @@
1
1
  @use "sass:map";
2
- @use "sass:list";
3
2
 
4
3
  // Material 3 window size classes, expressed as media-query boundaries.
5
4
  //
@@ -6,7 +6,7 @@
6
6
  // only resolves if the extending partial loads the module that defines the
7
7
  // class, which forced every component to `@use` a CSS-emitting file and let
8
8
  // the dependency graph - not expressive.scss - decide the output order.
9
- // The `.z-depth-N` classes in base/_global.scss are generated from this map,
9
+ // The `.z-depth-N` classes in utilities/_z-depth.scss are generated from this map,
10
10
  // so the class list and the mixin can never drift apart.
11
11
 
12
12
  $elevations: (
@@ -62,52 +62,32 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
62
62
  // State layers mix the on-color into the container in oklab; the opacities come
63
63
  // from md.sys.state via `state-opacity()`. Filled and tonal have no elevation.
64
64
 
65
- @mixin btn-filled {
66
- color: var(--md-comp-filled-button-label-text-color, var(--md-sys-color-on-primary));
67
- background-color: var(--md-comp-filled-button-container-color, var(--md-sys-color-primary));
68
-
65
+ // Shared by filled, tonal, outlined and flat. Elevated also moves z-depth.
66
+ @mixin _btn-states($on, $base) {
69
67
  &:hover {
70
- background-color: color-mix(
71
- in oklab,
72
- var(--md-sys-color-on-primary) state-opacity("hover"),
73
- var(--md-sys-color-primary)
74
- );
68
+ background-color: color-mix(in oklab, #{$on} state-opacity("hover"), #{$base});
75
69
  }
76
70
 
77
71
  &:active,
78
72
  &:focus {
79
- background-color: color-mix(
80
- in oklab,
81
- var(--md-sys-color-on-primary) state-opacity("focus"),
82
- var(--md-sys-color-primary)
83
- );
73
+ background-color: color-mix(in oklab, #{$on} state-opacity("focus"), #{$base});
84
74
  }
85
75
 
86
76
  @include focus-visible();
87
77
  }
88
78
 
79
+ @mixin btn-filled {
80
+ color: var(--md-comp-filled-button-label-text-color, var(--md-sys-color-on-primary));
81
+ background-color: var(--md-comp-filled-button-container-color, var(--md-sys-color-primary));
82
+
83
+ @include _btn-states(var(--md-sys-color-on-primary), var(--md-sys-color-primary));
84
+ }
85
+
89
86
  @mixin btn-tonal {
90
87
  color: var(--md-sys-color-on-secondary-container);
91
88
  background-color: var(--md-sys-color-secondary-container);
92
89
 
93
- &:hover {
94
- background-color: color-mix(
95
- in oklab,
96
- var(--md-sys-color-on-secondary-container) state-opacity("hover"),
97
- var(--md-sys-color-secondary-container)
98
- );
99
- }
100
-
101
- &:active,
102
- &:focus {
103
- background-color: color-mix(
104
- in oklab,
105
- var(--md-sys-color-on-secondary-container) state-opacity("focus"),
106
- var(--md-sys-color-secondary-container)
107
- );
108
- }
109
-
110
- @include focus-visible();
90
+ @include _btn-states(var(--md-sys-color-on-secondary-container), var(--md-sys-color-secondary-container));
111
91
  }
112
92
 
113
93
  @mixin btn-elevated {
@@ -138,16 +118,7 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
138
118
  // height right.
139
119
  border: var(--md-comp-filled-button-outline-width, 1px) solid var(--md-sys-color-outline);
140
120
 
141
- &:hover {
142
- background-color: color-mix(in oklab, var(--md-sys-color-primary) state-opacity("hover"), transparent);
143
- }
144
-
145
- &:active,
146
- &:focus {
147
- background-color: color-mix(in oklab, var(--md-sys-color-primary) state-opacity("focus"), transparent);
148
- }
149
-
150
- @include focus-visible();
121
+ @include _btn-states(var(--md-sys-color-primary), transparent);
151
122
  }
152
123
 
153
124
  @mixin btn-flat {
@@ -156,16 +127,7 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
156
127
  background-color: transparent;
157
128
  border-color: transparent;
158
129
 
159
- &:hover {
160
- background-color: color-mix(in oklab, var(--md-sys-color-primary) state-opacity("hover"), transparent);
161
- }
162
-
163
- &:active,
164
- &:focus {
165
- background-color: color-mix(in oklab, var(--md-sys-color-primary) state-opacity("focus"), transparent);
166
- }
167
-
168
- @include focus-visible();
130
+ @include _btn-states(var(--md-sys-color-primary), transparent);
169
131
  }
170
132
 
171
133
  @mixin btn-disabled {
@@ -174,7 +136,6 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
174
136
  background-color: color-mix(in oklab, var(--md-sys-color-on-surface) 12%, transparent);
175
137
  border-color: transparent;
176
138
  pointer-events: none;
177
- box-shadow: none;
178
139
  cursor: default;
179
140
  }
180
141
 
@@ -234,8 +195,7 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
234
195
  ///
235
196
  /// Checkboxes and radio buttons have no room for an overlay pseudo-element, so
236
197
  /// they grow a `box-shadow` from the control's edge out to the state layer
237
- /// size. `color-mix()` wants a percentage where the token is a number, hence
238
- /// the `* 100%`.
198
+ /// size.
239
199
  @mixin state-layer-ring($outer, $inner, $color, $state) {
240
200
  box-shadow: 0 0 0 calc((#{$outer} - #{$inner}) / 2)
241
201
  color-mix(
@@ -367,17 +327,17 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
367
327
  margin: $element-top-margin 0 $element-bottom-margin;
368
328
  color: var(--md-sys-color-on-surface);
369
329
 
370
- > figcaption {
371
- color: var(--md-sys-color-on-surface-variant);
372
- @include typescale("title-small");
373
- }
374
-
375
330
  // A table keeps its content size under visually-hidden, so anchor it
376
331
  // here rather than at some distant positioned ancestor. A fixed layout
377
332
  // holds it to the 1px wide it is given. Its rows still set its height, so
378
333
  // it hangs up from the bottom edge, where the overflow cannot scroll.
379
334
  position: relative;
380
335
 
336
+ > figcaption {
337
+ color: var(--md-sys-color-on-surface-variant);
338
+ @include typescale("title-small");
339
+ }
340
+
381
341
  &:has(> .#{$name}-plot) > table {
382
342
  @include visually-hidden;
383
343
  inset: auto auto 0 0;
@@ -137,3 +137,13 @@ $icon-button-sizes: (
137
137
  "large": (height: 96px, icon: 32px, space: 32px, narrow: 16px, wide: 48px, square: 28px, pressed: 16px, outline: 2px),
138
138
  "xlarge": (height: 136px, icon: 40px, space: 48px, narrow: 32px, wide: 72px, square: 28px, pressed: 16px, outline: 3px),
139
139
  );
140
+
141
+ // Material's fast-spatial spring (damping .9, stiffness 1400), sampled into a
142
+ // CSS linear easing. Button groups and keypads both press with it, so the
143
+ // curve lives here once.
144
+ $motion-fast-spatial: linear(
145
+ 0, .056 5%, .1796 10%, .3252 15%, .4675 20%, .5936 25%,
146
+ .6988 30%, .7828 35%, .8475 40%, .8959 45%, .931 50%,
147
+ .9559 55%, .973 60%, .9845 65%, .9919 70%, .9965 75%,
148
+ .9992 80%, 1.0006 85%, 1.0013 90%, 1.0015 95%, 1.0015
149
+ );
@@ -99,9 +99,6 @@ td, th {
99
99
  @include bp-down("expanded") {
100
100
 
101
101
  table.responsive-table {
102
- width: 100%;
103
- border-collapse: collapse;
104
- border-spacing: 0;
105
102
  display: block;
106
103
  position: relative;
107
104
 
@@ -113,12 +110,12 @@ td, th {
113
110
  margin: 0;
114
111
  vertical-align: top;
115
112
  }
116
- th {
117
- text-align: left;
118
- }
119
113
  thead {
120
114
  display: block;
121
115
  float: left;
116
+ /* sort out borders */
117
+ border: 0;
118
+ border-right: 1px solid var(--md-sys-color-outline-variant);
122
119
 
123
120
  tr {
124
121
  display: block;
@@ -148,16 +145,10 @@ td, th {
148
145
  td {
149
146
  display: block;
150
147
  min-height: 1.25em;
151
- text-align: left;
152
148
  }
153
149
  tr {
154
150
  border-bottom: none;
155
151
  padding: 0 10px;
156
152
  }
157
- /* sort out borders */
158
- thead {
159
- border: 0;
160
- border-right: 1px solid var(--md-sys-color-outline-variant);
161
- }
162
153
  }
163
154
  }
@@ -1,6 +1,6 @@
1
1
  // Element-level styling: no component classes live here.
2
2
 
3
3
  @forward "normalize";
4
- @forward "global"; // z-depth, spacing helpers, positioning, element defaults
4
+ @forward "global"; // element defaults: links, blockquotes, tables
5
5
  @forward "typography";
6
6
  @forward "grid"; // .container, .row, .s1–.s12 … .xxl1–.xxl12
@@ -55,14 +55,7 @@
55
55
 
56
56
  // Child of an icon: sit on the upper trailing corner of the 24dp
57
57
  // glyph, even when the <i> is a larger indicator pill.
58
- :is(
59
- i,
60
- .material-symbols,
61
- .material-symbols-outlined,
62
- .material-symbols-rounded,
63
- .material-symbols-sharp,
64
- .material-icons
65
- ) {
58
+ #{$icon} {
66
59
  position: relative;
67
60
  overflow: visible;
68
61
 
@@ -250,7 +250,7 @@
250
250
  inset-inline: 0;
251
251
  height: calc(100% / var(--rows, 1));
252
252
  border-radius: var(--md-comp-bar-chart-shape);
253
- background-color: color-mix(in srgb, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
253
+ background-color: color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
254
254
  translate: 0 -50%;
255
255
  }
256
256