@expressivecss/expressive 0.11.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/CHANGELOG.md +392 -7
  2. package/README.md +37 -1
  3. package/dist/css/expressive.css +5440 -234
  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/fonts/material-symbols-outlined.woff2 +0 -0
  8. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  9. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  10. package/dist/js/chunks/{chunk-AYYYWUJ4.mjs → chunk-3CLXLPYS.mjs} +17 -11
  11. package/dist/js/chunks/chunk-3CLXLPYS.mjs.map +7 -0
  12. package/dist/js/chunks/chunk-3DHK5CZU.mjs +105 -0
  13. package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +7 -0
  14. package/dist/js/chunks/{chunk-IMUPRRI6.mjs → chunk-3VOK6J7U.mjs} +3 -3
  15. package/dist/js/chunks/chunk-4PWAPV6F.mjs +7 -0
  16. package/dist/js/chunks/chunk-4PWAPV6F.mjs.map +7 -0
  17. package/dist/js/chunks/{chunk-XFJ452AZ.mjs → chunk-55IA2XUC.mjs} +5 -6
  18. package/dist/js/chunks/{chunk-XFJ452AZ.mjs.map → chunk-55IA2XUC.mjs.map} +2 -2
  19. package/dist/js/chunks/{chunk-XDB3G6RL.mjs → chunk-6N2XAEFK.mjs} +15 -4
  20. package/dist/js/chunks/{chunk-XDB3G6RL.mjs.map → chunk-6N2XAEFK.mjs.map} +2 -2
  21. package/dist/js/chunks/{chunk-MISGHDUU.mjs → chunk-6OMRGML6.mjs} +9 -7
  22. package/dist/js/chunks/{chunk-MISGHDUU.mjs.map → chunk-6OMRGML6.mjs.map} +2 -2
  23. package/dist/js/chunks/{chunk-A3BJA7V4.mjs → chunk-6WLSDZ4O.mjs} +2 -2
  24. package/dist/js/chunks/chunk-CCWDV5CR.mjs +292 -0
  25. package/dist/js/chunks/chunk-CCWDV5CR.mjs.map +7 -0
  26. package/dist/js/chunks/{chunk-JODJAGFS.mjs → chunk-CKQP6P76.mjs} +31 -8
  27. package/dist/js/chunks/chunk-CKQP6P76.mjs.map +7 -0
  28. package/dist/js/chunks/{chunk-KR44BSYQ.mjs → chunk-DLWYKFEI.mjs} +3 -3
  29. package/dist/js/chunks/chunk-DTKR54I6.mjs +270 -0
  30. package/dist/js/chunks/chunk-DTKR54I6.mjs.map +7 -0
  31. package/dist/js/chunks/{chunk-SLFNPY5M.mjs → chunk-EC63CHXU.mjs} +2 -2
  32. package/dist/js/chunks/chunk-GVGT6MIU.mjs +47 -0
  33. package/dist/js/chunks/chunk-GVGT6MIU.mjs.map +7 -0
  34. package/dist/js/chunks/{chunk-LZVBJ33S.mjs → chunk-GZWPXXY6.mjs} +15 -8
  35. package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +7 -0
  36. package/dist/js/chunks/chunk-HKT2S7VM.mjs +48 -0
  37. package/dist/js/chunks/chunk-HKT2S7VM.mjs.map +7 -0
  38. package/dist/js/chunks/{chunk-D4UZ4HFN.mjs → chunk-IFXVDDDH.mjs} +23 -11
  39. package/dist/js/chunks/chunk-IFXVDDDH.mjs.map +7 -0
  40. package/dist/js/chunks/chunk-K4CJCRGE.mjs +262 -0
  41. package/dist/js/chunks/chunk-K4CJCRGE.mjs.map +7 -0
  42. package/dist/js/chunks/chunk-LNCCYGPC.mjs +163 -0
  43. package/dist/js/chunks/chunk-LNCCYGPC.mjs.map +7 -0
  44. package/dist/js/chunks/{chunk-QSQ24FYT.mjs → chunk-LTWPGFBR.mjs} +2 -2
  45. package/dist/js/chunks/{chunk-QSQ24FYT.mjs.map → chunk-LTWPGFBR.mjs.map} +2 -2
  46. package/dist/js/chunks/{chunk-I5KR22BY.mjs → chunk-LWBQIX5J.mjs} +15 -15
  47. package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +7 -0
  48. package/dist/js/chunks/{chunk-GY2Z5CJ2.mjs → chunk-NNYP33NB.mjs} +67 -32
  49. package/dist/js/chunks/chunk-NNYP33NB.mjs.map +7 -0
  50. package/dist/js/chunks/chunk-NQLC3YMW.mjs +1 -0
  51. package/dist/js/chunks/chunk-O5XPWXIQ.mjs +406 -0
  52. package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +7 -0
  53. package/dist/js/chunks/chunk-P3G3QHII.mjs +166 -0
  54. package/dist/js/chunks/chunk-P3G3QHII.mjs.map +7 -0
  55. package/dist/js/chunks/{chunk-VAS6JQ6P.mjs → chunk-PIJ2TAR3.mjs} +3 -3
  56. package/dist/js/chunks/{chunk-74N6U5JJ.mjs → chunk-PLYXLSH3.mjs} +38 -37
  57. package/dist/js/chunks/chunk-PLYXLSH3.mjs.map +7 -0
  58. package/dist/js/chunks/{chunk-PIIAEYAJ.mjs → chunk-QDAL4IYN.mjs} +2 -2
  59. package/dist/js/chunks/chunk-QKWPQK5N.mjs +179 -0
  60. package/dist/js/chunks/chunk-QKWPQK5N.mjs.map +7 -0
  61. package/dist/js/chunks/{chunk-FRB7TOCS.mjs → chunk-QV2JAWIZ.mjs} +2 -2
  62. package/dist/js/chunks/{chunk-N3UHGN3N.mjs → chunk-QVVEWBOF.mjs} +3 -3
  63. package/dist/js/chunks/chunk-RHRQKTTX.mjs +139 -0
  64. package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-SPETGK25.mjs +59 -0
  66. package/dist/js/chunks/chunk-SPETGK25.mjs.map +7 -0
  67. package/dist/js/chunks/{chunk-TK6PX2GC.mjs → chunk-U2OTHOTI.mjs} +131 -19
  68. package/dist/js/chunks/chunk-U2OTHOTI.mjs.map +7 -0
  69. package/dist/js/chunks/{chunk-TYM6U5DY.mjs → chunk-UAEAQBRC.mjs} +2 -2
  70. package/dist/js/chunks/{chunk-7UXHSYIA.mjs → chunk-UBLRRJ7N.mjs} +3 -3
  71. package/dist/js/chunks/{chunk-EP3CVKB5.mjs → chunk-UEZUJQ66.mjs} +8 -5
  72. package/dist/js/chunks/chunk-UEZUJQ66.mjs.map +7 -0
  73. package/dist/js/chunks/{chunk-JNPIWFJT.mjs → chunk-UNEMYWEW.mjs} +3 -3
  74. package/dist/js/chunks/chunk-VTLBW7QS.mjs +124 -0
  75. package/dist/js/chunks/chunk-VTLBW7QS.mjs.map +7 -0
  76. package/dist/js/chunks/{chunk-JKNPQQWY.mjs → chunk-WJXDBPXQ.mjs} +28 -12
  77. package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +7 -0
  78. package/dist/js/chunks/{chunk-CDW6WIRT.mjs → chunk-XGHORT7J.mjs} +18 -11
  79. package/dist/js/chunks/chunk-XGHORT7J.mjs.map +7 -0
  80. package/dist/js/chunks/{chunk-7GKXUG4B.mjs → chunk-XH6BEEMY.mjs} +78 -25
  81. package/dist/js/chunks/chunk-XH6BEEMY.mjs.map +7 -0
  82. package/dist/js/chunks/{chunk-XO5WX3TK.mjs → chunk-YDCS5S3J.mjs} +2 -2
  83. package/dist/js/expressive.cjs +2540 -233
  84. package/dist/js/expressive.cjs.map +4 -4
  85. package/dist/js/expressive.js +2540 -233
  86. package/dist/js/expressive.js.map +4 -4
  87. package/dist/js/expressive.min.js +10 -10
  88. package/dist/js/expressive.min.js.map +4 -4
  89. package/dist/js/expressive.mjs +86 -38
  90. package/dist/js/expressive.mjs.map +1 -1
  91. package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
  92. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  93. package/dist/js/internal/behaviors/forms.mjs +2 -2
  94. package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
  95. package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
  96. package/dist/js/internal/components/appBar.mjs +2 -2
  97. package/dist/js/internal/components/autocomplete.mjs +4 -4
  98. package/dist/js/internal/components/barChart.mjs +10 -0
  99. package/dist/js/internal/components/barChart.mjs.map +7 -0
  100. package/dist/js/internal/components/buttonGroup.mjs +2 -2
  101. package/dist/js/internal/components/buttons.mjs +3 -3
  102. package/dist/js/internal/components/cards.mjs +3 -3
  103. package/dist/js/internal/components/carousel.mjs +3 -3
  104. package/dist/js/internal/components/characterCounter.mjs +2 -2
  105. package/dist/js/internal/components/chips.mjs +5 -5
  106. package/dist/js/internal/components/columnChart.mjs +9 -0
  107. package/dist/js/internal/components/columnChart.mjs.map +7 -0
  108. package/dist/js/internal/components/commandPalette.mjs +9 -0
  109. package/dist/js/internal/components/commandPalette.mjs.map +7 -0
  110. package/dist/js/internal/components/datepicker.mjs +6 -6
  111. package/dist/js/internal/components/expandingCard.mjs +3 -3
  112. package/dist/js/internal/components/heatmapChart.mjs +9 -0
  113. package/dist/js/internal/components/heatmapChart.mjs.map +7 -0
  114. package/dist/js/internal/components/index.mjs +79 -31
  115. package/dist/js/internal/components/lightbox.mjs +3 -3
  116. package/dist/js/internal/components/lineChart.mjs +12 -0
  117. package/dist/js/internal/components/lineChart.mjs.map +7 -0
  118. package/dist/js/internal/components/menu.mjs +3 -3
  119. package/dist/js/internal/components/messageScroller.mjs +9 -0
  120. package/dist/js/internal/components/messageScroller.mjs.map +7 -0
  121. package/dist/js/internal/components/mixedChart.mjs +10 -0
  122. package/dist/js/internal/components/mixedChart.mjs.map +7 -0
  123. package/dist/js/internal/components/navigationRail.mjs +2 -2
  124. package/dist/js/internal/components/pieChart.mjs +9 -0
  125. package/dist/js/internal/components/pieChart.mjs.map +7 -0
  126. package/dist/js/internal/components/questionnaire.mjs +9 -0
  127. package/dist/js/internal/components/questionnaire.mjs.map +7 -0
  128. package/dist/js/internal/components/radarChart.mjs +9 -0
  129. package/dist/js/internal/components/radarChart.mjs.map +7 -0
  130. package/dist/js/internal/components/radialChart.mjs +9 -0
  131. package/dist/js/internal/components/radialChart.mjs.map +7 -0
  132. package/dist/js/internal/components/registry.mjs +37 -25
  133. package/dist/js/internal/components/richTextEditor.mjs +9 -0
  134. package/dist/js/internal/components/richTextEditor.mjs.map +7 -0
  135. package/dist/js/internal/components/scrollspy.mjs +2 -2
  136. package/dist/js/internal/components/select.mjs +4 -4
  137. package/dist/js/internal/components/slider.mjs +3 -3
  138. package/dist/js/internal/components/snackbar.mjs +2 -2
  139. package/dist/js/internal/components/tabs.mjs +4 -4
  140. package/dist/js/internal/components/timepicker.mjs +4 -4
  141. package/dist/js/internal/components/tooltip.mjs +3 -3
  142. package/dist/js/internal/core/component.mjs +1 -1
  143. package/dist/js/internal/core/utils.mjs +1 -1
  144. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  145. package/dist/js/modular.mjs +86 -38
  146. package/dist/types/behaviors/forms.d.ts +22 -0
  147. package/dist/types/components/appBar.d.ts +1 -1
  148. package/dist/types/components/barChart.d.ts +24 -0
  149. package/dist/types/components/columnChart.d.ts +21 -0
  150. package/dist/types/components/commandPalette.d.ts +96 -0
  151. package/dist/types/components/datepicker.d.ts +5 -2
  152. package/dist/types/components/heatmapChart.d.ts +49 -0
  153. package/dist/types/components/index.d.ts +12 -0
  154. package/dist/types/components/lineChart.d.ts +134 -0
  155. package/dist/types/components/menu.d.ts +32 -0
  156. package/dist/types/components/messageScroller.d.ts +111 -0
  157. package/dist/types/components/mixedChart.d.ts +25 -0
  158. package/dist/types/components/pieChart.d.ts +40 -0
  159. package/dist/types/components/questionnaire.d.ts +96 -0
  160. package/dist/types/components/radarChart.d.ts +39 -0
  161. package/dist/types/components/radialChart.d.ts +45 -0
  162. package/dist/types/components/registry.d.ts +44 -0
  163. package/dist/types/components/richTextEditor.d.ts +71 -0
  164. package/dist/types/components/slider.d.ts +1 -0
  165. package/dist/types/components/snackbar.d.ts +6 -0
  166. package/dist/types/components/timepicker.d.ts +4 -1
  167. package/dist/types/components/tooltip.d.ts +2 -1
  168. package/dist/types/modular.d.ts +10 -1
  169. package/package.json +4 -1
  170. package/src/sass/README.md +3 -6
  171. package/src/sass/abstracts/_index.scss +1 -1
  172. package/src/sass/abstracts/_mixins.scss +226 -0
  173. package/src/sass/abstracts/_variables.scss +14 -0
  174. package/src/sass/base/_typography.scss +45 -0
  175. package/src/sass/components/_accordion.scss +161 -0
  176. package/src/sass/components/_aura.scss +119 -0
  177. package/src/sass/components/_avatar.scss +86 -0
  178. package/src/sass/components/_bar-chart.scss +285 -0
  179. package/src/sass/components/_bottom-sheet.scss +1 -0
  180. package/src/sass/components/_button-groups.scss +13 -3
  181. package/src/sass/components/_cards.scss +16 -13
  182. package/src/sass/components/_carousel.scss +9 -7
  183. package/src/sass/components/_column-chart.scss +134 -0
  184. package/src/sass/components/_command-palette.scss +140 -0
  185. package/src/sass/components/_countdown.scss +89 -0
  186. package/src/sass/components/_data-table.scss +188 -0
  187. package/src/sass/components/_dialog.scss +1 -0
  188. package/src/sass/components/_empty-state.scss +78 -0
  189. package/src/sass/components/_expanding-card.scss +3 -0
  190. package/src/sass/components/_heatmap-chart.scss +156 -0
  191. package/src/sass/components/_index.scss +27 -0
  192. package/src/sass/components/_kpi.scss +162 -0
  193. package/src/sass/components/_line-chart.scss +102 -0
  194. package/src/sass/components/_marquee.scss +111 -0
  195. package/src/sass/components/_menu.scss +10 -0
  196. package/src/sass/components/_message-scroller.scss +66 -0
  197. package/src/sass/components/_message.scss +202 -0
  198. package/src/sass/components/_mixed-chart.scss +157 -0
  199. package/src/sass/components/_navbar.scss +11 -6
  200. package/src/sass/components/_navigation-bar.scss +1 -0
  201. package/src/sass/components/_navigation-rail.scss +9 -0
  202. package/src/sass/components/_page-footer.scss +0 -11
  203. package/src/sass/components/_pie-chart.scss +203 -0
  204. package/src/sass/components/_popover.scss +112 -0
  205. package/src/sass/components/_progress.scss +25 -6
  206. package/src/sass/components/_questionnaire.scss +144 -0
  207. package/src/sass/components/_radar-chart.scss +205 -0
  208. package/src/sass/components/_radial-chart.scss +174 -0
  209. package/src/sass/components/_rich-text-editor.scss +99 -0
  210. package/src/sass/components/_search.scss +1 -0
  211. package/src/sass/components/_side-sheet.scss +1 -0
  212. package/src/sass/components/_skeleton.scss +81 -0
  213. package/src/sass/components/_snackbar.scss +2 -1
  214. package/src/sass/components/_stat.scss +86 -0
  215. package/src/sass/components/_stepper.scss +190 -0
  216. package/src/sass/components/_timeline.scss +114 -0
  217. package/src/sass/components/_timepicker.scss +2 -2
  218. package/src/sass/components/_toolbar.scss +2 -1
  219. package/src/sass/components/_tooltip.scss +2 -0
  220. package/src/sass/components/_tree.scss +139 -0
  221. package/src/sass/components/forms/_checkboxes.scss +2 -2
  222. package/src/sass/components/forms/_drop-zone.scss +128 -0
  223. package/src/sass/components/forms/_index.scss +2 -0
  224. package/src/sass/components/forms/_input-fields.scss +166 -15
  225. package/src/sass/components/forms/_radio-buttons.scss +2 -2
  226. package/src/sass/components/forms/_rating.scss +165 -0
  227. package/src/sass/components/forms/_slider.scss +51 -29
  228. package/src/sass/components/forms/_switches.scss +3 -3
  229. package/src/sass/tokens/_reference.scss +3 -15
  230. package/src/sass/utilities/_helpers.scss +14 -0
  231. package/src/sass/utilities/_index.scss +2 -0
  232. package/src/sass/utilities/_scroll-area.scss +35 -0
  233. package/src/sass/utilities/_shapes.scss +164 -0
  234. package/src/sass/utilities/_spacing.scss +29 -23
  235. package/src/sass/utilities/_visibility.scss +3 -2
  236. package/dist/js/chunks/chunk-74N6U5JJ.mjs.map +0 -7
  237. package/dist/js/chunks/chunk-7GKXUG4B.mjs.map +0 -7
  238. package/dist/js/chunks/chunk-AYYYWUJ4.mjs.map +0 -7
  239. package/dist/js/chunks/chunk-CDW6WIRT.mjs.map +0 -7
  240. package/dist/js/chunks/chunk-D4UZ4HFN.mjs.map +0 -7
  241. package/dist/js/chunks/chunk-EP3CVKB5.mjs.map +0 -7
  242. package/dist/js/chunks/chunk-GY2Z5CJ2.mjs.map +0 -7
  243. package/dist/js/chunks/chunk-I5KR22BY.mjs.map +0 -7
  244. package/dist/js/chunks/chunk-JKNPQQWY.mjs.map +0 -7
  245. package/dist/js/chunks/chunk-JODJAGFS.mjs.map +0 -7
  246. package/dist/js/chunks/chunk-JR24UB4X.mjs +0 -100
  247. package/dist/js/chunks/chunk-JR24UB4X.mjs.map +0 -7
  248. package/dist/js/chunks/chunk-LZVBJ33S.mjs.map +0 -7
  249. package/dist/js/chunks/chunk-PMBPAFAS.mjs +0 -7
  250. package/dist/js/chunks/chunk-PMBPAFAS.mjs.map +0 -7
  251. package/dist/js/chunks/chunk-TK6PX2GC.mjs.map +0 -7
  252. package/dist/js/chunks/chunk-WWPAPHMA.mjs +0 -1
  253. /package/dist/js/chunks/{chunk-IMUPRRI6.mjs.map → chunk-3VOK6J7U.mjs.map} +0 -0
  254. /package/dist/js/chunks/{chunk-A3BJA7V4.mjs.map → chunk-6WLSDZ4O.mjs.map} +0 -0
  255. /package/dist/js/chunks/{chunk-KR44BSYQ.mjs.map → chunk-DLWYKFEI.mjs.map} +0 -0
  256. /package/dist/js/chunks/{chunk-SLFNPY5M.mjs.map → chunk-EC63CHXU.mjs.map} +0 -0
  257. /package/dist/js/chunks/{chunk-WWPAPHMA.mjs.map → chunk-NQLC3YMW.mjs.map} +0 -0
  258. /package/dist/js/chunks/{chunk-VAS6JQ6P.mjs.map → chunk-PIJ2TAR3.mjs.map} +0 -0
  259. /package/dist/js/chunks/{chunk-PIIAEYAJ.mjs.map → chunk-QDAL4IYN.mjs.map} +0 -0
  260. /package/dist/js/chunks/{chunk-FRB7TOCS.mjs.map → chunk-QV2JAWIZ.mjs.map} +0 -0
  261. /package/dist/js/chunks/{chunk-N3UHGN3N.mjs.map → chunk-QVVEWBOF.mjs.map} +0 -0
  262. /package/dist/js/chunks/{chunk-TYM6U5DY.mjs.map → chunk-UAEAQBRC.mjs.map} +0 -0
  263. /package/dist/js/chunks/{chunk-7UXHSYIA.mjs.map → chunk-UBLRRJ7N.mjs.map} +0 -0
  264. /package/dist/js/chunks/{chunk-JNPIWFJT.mjs.map → chunk-UNEMYWEW.mjs.map} +0 -0
  265. /package/dist/js/chunks/{chunk-XO5WX3TK.mjs.map → chunk-YDCS5S3J.mjs.map} +0 -0
@@ -0,0 +1,285 @@
1
+ @use "../abstracts" as *;
2
+
3
+ // Bar chart. The column chart's markup and runtime turned on its side:
4
+ // BarChart draws each row of the table as a band of bars growing from zero
5
+ // along the inline axis, with the row's label at the inline start. The
6
+ // plot is as tall as its rows, so --md-comp-bar-chart-height does not
7
+ // apply; set the row height instead.
8
+ //
9
+ // The spans carry the column chart's --top and --bottom, the space after
10
+ // and before each bar on the value axis. They are read across the plot,
11
+ // and swapped when BarChart marks the bars .rtl, where they grow leftwards.
12
+ //
13
+ // Modifiers: .stacked draws one bar per row with each series after the
14
+ // ones before it, .split separates stacked segments and rounds each one,
15
+ // .track draws a full-width track behind each row's bars, .values writes
16
+ // each cell's text from its bar's base, .sparkline is a small chart with
17
+ // no labels, grid, legend or tooltip.
18
+ //
19
+ // Tokens:
20
+ // --md-comp-bar-chart-row-height 40px (sparkline 24px)
21
+ // --md-comp-bar-chart-bar-height 60% of each row's height
22
+ // --md-comp-bar-chart-shape 4px, the bar's end radius
23
+ // --md-comp-bar-chart-track-color surface-container-highest
24
+ // --md-comp-bar-chart-grid-color outline-variant
25
+ // --md-comp-bar-chart-color-1..4 primary, tertiary, secondary,
26
+ // on-surface-variant
27
+ // --md-comp-bar-chart-on-color-1..4 on-primary, on-tertiary,
28
+ // on-secondary, surface; .values text
29
+
30
+ @include chart("bar-chart");
31
+
32
+ .bar-chart {
33
+ --md-comp-bar-chart-row-height: 40px;
34
+ --md-comp-bar-chart-bar-height: 60%;
35
+ --md-comp-bar-chart-shape: 4px;
36
+ --md-comp-bar-chart-track-color: var(--md-sys-color-surface-container-highest);
37
+ --md-comp-bar-chart-on-color-1: var(--md-sys-color-on-primary);
38
+ --md-comp-bar-chart-on-color-2: var(--md-sys-color-on-tertiary);
39
+ --md-comp-bar-chart-on-color-3: var(--md-sys-color-on-secondary);
40
+ --md-comp-bar-chart-on-color-4: var(--md-sys-color-surface);
41
+
42
+ // Labels beside the plot, up to 40% of the width; everything else spans
43
+ // both columns. Dense flow puts the labels in the plot's row.
44
+ // A stretched figure, as in a grid of cards, keeps its rows at their size.
45
+ display: grid;
46
+ grid-template-columns: fit-content(40%) minmax(0, 1fr);
47
+ grid-auto-flow: row dense;
48
+ align-content: start;
49
+ column-gap: 12px;
50
+
51
+ > * {
52
+ grid-column: 1 / -1;
53
+ }
54
+
55
+ > .bar-chart-plot {
56
+ grid-column: 2;
57
+ }
58
+
59
+ > .bar-chart-labels {
60
+ grid-column: 1;
61
+ }
62
+
63
+ &.sparkline {
64
+ --md-comp-bar-chart-row-height: 24px;
65
+
66
+ display: flex;
67
+ }
68
+
69
+ &.split {
70
+ --bar-chart-joint: var(--md-comp-bar-chart-shape);
71
+ --bar-chart-gap: 2px;
72
+ }
73
+ }
74
+
75
+ @for $i from 1 through 4 {
76
+ .bar-chart [data-series="#{$i}"] {
77
+ --bar-chart-on-color: var(--md-comp-bar-chart-on-color-#{$i});
78
+ }
79
+ }
80
+
81
+ // Grid lines run down the plot at each quarter of the value axis.
82
+ .bar-chart-plot {
83
+ isolation: isolate;
84
+ height: calc(var(--rows, 1) * var(--md-comp-bar-chart-row-height));
85
+ border-block-end: 0;
86
+ border-right: 1px solid var(--md-comp-bar-chart-grid-color);
87
+ background: linear-gradient(to right, var(--md-comp-bar-chart-grid-color) 1px, transparent 0) 0 0 / 25% 100%;
88
+ }
89
+
90
+ .bar-chart-labels {
91
+ grid-auto-rows: minmax(0, 1fr);
92
+ grid-auto-flow: row;
93
+ align-items: center;
94
+ text-align: end;
95
+ }
96
+
97
+ // .values adds a copy of the bars for their text; both share the geometry.
98
+ .bar-chart-layers {
99
+ display: contents;
100
+ }
101
+
102
+ :is(.bar-chart-bars, .bar-chart-values) {
103
+ position: absolute;
104
+ inset: 0;
105
+ display: grid;
106
+ grid-auto-rows: minmax(0, 1fr);
107
+
108
+ // A row: its bars one under another, or overlapping when stacked.
109
+ > div {
110
+ display: grid;
111
+ grid-template-columns: minmax(0, 1fr);
112
+ grid-auto-rows: minmax(0, 1fr);
113
+ gap: 2px;
114
+ align-self: center;
115
+ height: var(--md-comp-bar-chart-bar-height);
116
+ border-radius: var(--md-comp-bar-chart-shape);
117
+ }
118
+
119
+ // The space before and after each bar. A split segment stands back
120
+ // from its joints by --bar-chart-base-gap and --bar-chart-tip-gap.
121
+ > div > span {
122
+ --bar-chart-left: calc(var(--bottom, 0%) + var(--bar-chart-base-gap, 0px));
123
+ --bar-chart-right: calc(var(--top, 100%) + var(--bar-chart-tip-gap, 0px));
124
+ }
125
+
126
+ &.rtl > div > span {
127
+ --bar-chart-left: calc(var(--top, 100%) + var(--bar-chart-tip-gap, 0px));
128
+ --bar-chart-right: calc(var(--bottom, 0%) + var(--bar-chart-base-gap, 0px));
129
+ }
130
+ }
131
+
132
+ .bar-chart-bars {
133
+ // --bar-chart-tip rounds the end away from zero, --bar-chart-base the
134
+ // end on zero.
135
+ > div > span {
136
+ --bar-chart-tip: var(--md-comp-bar-chart-shape);
137
+ --bar-chart-base: 0px;
138
+ --bar-chart-zero-left: calc(100% - var(--zero, 100%));
139
+ --bar-chart-zero-right: var(--zero, 100%);
140
+ --bar-chart-ends: var(--bar-chart-base) var(--bar-chart-tip) var(--bar-chart-tip) var(--bar-chart-base);
141
+
142
+ background-color: var(--bar-chart-color);
143
+ clip-path: inset(0 var(--bar-chart-right) 0 var(--bar-chart-left) round var(--bar-chart-ends));
144
+
145
+ // A bar below zero has its tip at the inline start.
146
+ &.negative {
147
+ --bar-chart-ends: var(--bar-chart-tip) var(--bar-chart-base) var(--bar-chart-base) var(--bar-chart-tip);
148
+ }
149
+ }
150
+
151
+ &.rtl > div > span {
152
+ --bar-chart-zero-left: var(--zero, 100%);
153
+ --bar-chart-zero-right: calc(100% - var(--zero, 100%));
154
+ --bar-chart-ends: var(--bar-chart-tip) var(--bar-chart-base) var(--bar-chart-base) var(--bar-chart-tip);
155
+
156
+ &.negative {
157
+ --bar-chart-ends: var(--bar-chart-base) var(--bar-chart-tip) var(--bar-chart-tip) var(--bar-chart-base);
158
+ }
159
+ }
160
+
161
+ @media (prefers-reduced-motion: no-preference) {
162
+ > div > span {
163
+ transition: clip-path 400ms cubic-bezier(0.2, 0, 0, 1);
164
+
165
+ @starting-style {
166
+ clip-path: inset(0 var(--bar-chart-zero-right) 0 var(--bar-chart-zero-left) round var(--bar-chart-ends));
167
+ }
168
+ }
169
+ }
170
+ }
171
+
172
+ // One bar per row, rounded only at the ends of the whole stack unless split.
173
+ .bar-chart.stacked :is(.bar-chart-bars, .bar-chart-values) > div {
174
+ gap: 0;
175
+
176
+ > span {
177
+ grid-area: 1 / 1;
178
+
179
+ &:not(:last-child) {
180
+ --bar-chart-tip: var(--bar-chart-joint, 0px);
181
+ --bar-chart-tip-gap: var(--bar-chart-gap, 0px);
182
+ }
183
+
184
+ &:not(:first-child) {
185
+ --bar-chart-base: var(--bar-chart-joint, 0px);
186
+ --bar-chart-base-gap: var(--bar-chart-gap, 0px);
187
+ }
188
+ }
189
+ }
190
+
191
+ .bar-chart.track .bar-chart-bars > div {
192
+ background-color: var(--md-comp-bar-chart-track-color);
193
+
194
+ > span {
195
+ --bar-chart-base: var(--md-comp-bar-chart-shape);
196
+ }
197
+ }
198
+
199
+ // Each cell's text from its bar's base: the series' on-color over the bar,
200
+ // the label color past its end, so a short bar's value runs on beyond it.
201
+ // The span spans the row, so padding and the gradient share its width.
202
+ .bar-chart-values {
203
+ pointer-events: none;
204
+
205
+ > div > span {
206
+ --bar-chart-text-color: var(--md-sys-color-on-surface);
207
+
208
+ overflow: hidden;
209
+ align-content: center;
210
+ padding: 0 8px 0 calc(var(--bar-chart-left) + 8px);
211
+ background: linear-gradient(to right, var(--bar-chart-text-color) var(--bar-chart-left), var(--bar-chart-on-color) 0 calc(100% - var(--bar-chart-right)), var(--bar-chart-text-color) 0);
212
+ -webkit-background-clip: text;
213
+ background-clip: text;
214
+ color: transparent;
215
+ @include typescale("label-medium");
216
+ font-variant-numeric: tabular-nums;
217
+ text-align: left;
218
+ text-overflow: ellipsis;
219
+ white-space: nowrap;
220
+ }
221
+
222
+ // The base on the right: a bar below zero, or above it in RTL.
223
+ &:not(.rtl) > div > span.negative,
224
+ &.rtl > div > span:not(.negative) {
225
+ padding: 0 calc(var(--bar-chart-right) + 8px) 0 8px;
226
+ text-align: right;
227
+ }
228
+
229
+ @media (prefers-reduced-motion: no-preference) {
230
+ > div > span {
231
+ transition: opacity 200ms linear 400ms;
232
+
233
+ @starting-style {
234
+ opacity: 0;
235
+ }
236
+ }
237
+ }
238
+ }
239
+
240
+ // A stacked segment keeps its text inside it; the next segment follows.
241
+ .bar-chart.stacked .bar-chart-values > div > span {
242
+ padding: 0 calc(var(--bar-chart-right) + 8px) 0 calc(var(--bar-chart-left) + 8px);
243
+ clip-path: inset(0 var(--bar-chart-right) 0 var(--bar-chart-left));
244
+ }
245
+
246
+ // A band behind the highlighted row's bars.
247
+ .bar-chart-cursor {
248
+ z-index: -1;
249
+ inset-block: auto;
250
+ inset-inline: 0;
251
+ height: calc(100% / var(--rows, 1));
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);
254
+ translate: 0 -50%;
255
+ }
256
+
257
+ // Below the highlighted row, or above it in the lower half.
258
+ .bar-chart-tooltip {
259
+ left: 50%;
260
+ translate: -50% calc(var(--md-comp-bar-chart-row-height) / 2);
261
+
262
+ &.end {
263
+ translate: -50% calc(-100% - var(--md-comp-bar-chart-row-height) / 2);
264
+ }
265
+ }
266
+
267
+ @media (forced-colors: active) {
268
+ // The mixin clears the grid, but this partial's plot rule comes later.
269
+ .bar-chart-plot {
270
+ background: none;
271
+ }
272
+
273
+ .bar-chart-bars > div > span,
274
+ .bar-chart-values > div > span {
275
+ forced-color-adjust: none;
276
+ }
277
+
278
+ .bar-chart-values > div > span {
279
+ --bar-chart-text-color: CanvasText;
280
+ }
281
+
282
+ .bar-chart-cursor {
283
+ outline: 1px solid CanvasText;
284
+ }
285
+ }
@@ -53,6 +53,7 @@ dialog.bottom-sheet {
53
53
  @include z-depth("1");
54
54
  translate: 0 var(--md-comp-bottom-sheet-shift);
55
55
  transition: translate 280ms ease;
56
+ @include glass(var(--md-comp-bottom-sheet-container-color));
56
57
 
57
58
  // Non-modal `show()` is not in the top layer — sit above page content
58
59
  // and below snackbars (z-index 10000).
@@ -297,7 +297,6 @@ $_connected-corners: (
297
297
  --md-comp-button-group-container-shape: 9999px;
298
298
  --md-comp-button-group-inner-corner-corner-size: 8px;
299
299
  --md-comp-button-group-pressed-inner-corner-corner-size: 4px;
300
- --md-comp-button-group-selected-inner-corner-corner-size: 50%;
301
300
 
302
301
  display: grid;
303
302
  grid-auto-flow: column;
@@ -323,16 +322,27 @@ $_connected-corners: (
323
322
  // The corner goes through a variable so that pressing an item changes one
324
323
  // value rather than restating `border-radius`. A shorthand for the pressed
325
324
  // state would take the end items' round outer corners with it.
325
+ //
326
+ // md.comp.button-group.connected.selected.inner-corner.corner-size is 50%,
327
+ // which Compose resolves against the shorter side. A CSS percentage
328
+ // resolves per axis and turns a wide item into an ellipse, and 9999px
329
+ // would spend most of the morph above the clamp, so the default is half
330
+ // the item's own height. Setting the token on the group still overrides it.
326
331
  > #{$_item} {
327
332
  --_corner: var(--md-comp-button-group-inner-corner-corner-size);
328
333
  --_outer-corner: var(--md-comp-button-group-container-shape);
334
+ --_round: calc(var(--md-comp-filled-button-container-height, 40px) / 2);
329
335
 
330
336
  flex: 1 1 0;
331
337
  border-radius: var(--_corner);
332
338
 
339
+ &.icon-button {
340
+ --_round: calc(var(--md-comp-icon-button-container-height) / 2);
341
+ }
342
+
333
343
  &[aria-pressed=true] {
334
- --_corner: var(--md-comp-button-group-selected-inner-corner-corner-size);
335
- --_outer-corner: var(--md-comp-button-group-selected-inner-corner-corner-size);
344
+ --_corner: var(--md-comp-button-group-selected-inner-corner-corner-size, var(--_round));
345
+ --_outer-corner: var(--md-comp-button-group-selected-inner-corner-corner-size, var(--_round));
336
346
  }
337
347
 
338
348
  &:is(:active, .button-group-pressed) {
@@ -18,6 +18,9 @@
18
18
  // padding 16dp
19
19
 
20
20
  $_card: "article";
21
+ // A direct <figure> is media, unless it is a chart. :where() keeps the
22
+ // selectors at their old specificity.
23
+ $_media-figure: "figure:where(:not(.line-chart, .column-chart, .bar-chart, .pie-chart, .heatmap-chart, .radar-chart, .radial-chart, .mixed-chart))";
21
24
 
22
25
  :where(#{$_card}) {
23
26
  --md-comp-elevated-card-container-color: var(--md-sys-color-surface-container-low);
@@ -278,10 +281,10 @@ article > .actions {
278
281
 
279
282
  article > img,
280
283
  article > picture,
281
- article > figure,
284
+ article > #{$_media-figure},
282
285
  article > .primary-action > img,
283
286
  article > .primary-action > picture,
284
- article > .primary-action > figure {
287
+ article > .primary-action > #{$_media-figure} {
285
288
  display: block;
286
289
  width: 100%;
287
290
  margin: 0;
@@ -301,16 +304,16 @@ article > .primary-action > figure img {
301
304
  border-radius: var(--md-comp-card-media-shape);
302
305
  }
303
306
 
304
- article > figure {
307
+ article > #{$_media-figure} {
305
308
  position: relative;
306
309
  }
307
310
 
308
- article > .primary-action > figure {
311
+ article > .primary-action > #{$_media-figure} {
309
312
  position: relative;
310
313
  }
311
314
 
312
- article > figure > figcaption,
313
- article > .primary-action > figure > figcaption {
315
+ article > #{$_media-figure} > figcaption,
316
+ article > .primary-action > #{$_media-figure} > figcaption {
314
317
  position: absolute;
315
318
  inset-inline-start: var(--md-comp-card-content-padding);
316
319
  inset-inline-end: auto;
@@ -334,16 +337,16 @@ article > .primary-action > figure > figcaption {
334
337
 
335
338
  // Keep meaningful icons on the same opaque role pair as caption text. The
336
339
  // surface/on-surface pairing isolates both from unpredictable image colors.
337
- article > figure > figcaption > :is(.material-symbols, .card-icon, svg),
338
- article > .primary-action > figure > figcaption > :is(.material-symbols, .card-icon, svg) {
340
+ article > #{$_media-figure} > figcaption > :is(.material-symbols, .card-icon, svg),
341
+ article > .primary-action > #{$_media-figure} > figcaption > :is(.material-symbols, .card-icon, svg) {
339
342
  flex: 0 0 auto;
340
343
  color: inherit;
341
344
  font-size: var(--md-comp-card-icon-size);
342
345
  line-height: 1;
343
346
  }
344
347
 
345
- article > figure > figcaption > svg,
346
- article > .primary-action > figure > figcaption > svg {
348
+ article > #{$_media-figure} > figcaption > svg,
349
+ article > .primary-action > #{$_media-figure} > figcaption > svg {
347
350
  fill: currentColor;
348
351
  }
349
352
 
@@ -442,7 +445,7 @@ article > .primary-action > figure > figcaption > svg {
442
445
 
443
446
  > img,
444
447
  > picture,
445
- > figure {
448
+ > #{$_media-figure} {
446
449
  grid-column: 1;
447
450
  grid-row: 1 / -1;
448
451
  width: 100%;
@@ -507,7 +510,7 @@ article.small, article.medium, article.large {
507
510
  display: flex;
508
511
  flex-direction: column;
509
512
 
510
- > img, > picture, > figure {
513
+ > img, > picture, > #{$_media-figure} {
511
514
  flex: 0 1 60%;
512
515
  min-height: 0;
513
516
  overflow: hidden;
@@ -533,7 +536,7 @@ article.horizontal.medium,
533
536
  article.horizontal.large {
534
537
  display: grid;
535
538
 
536
- > img, > picture, > figure {
539
+ > img, > picture, > #{$_media-figure} {
537
540
  max-height: none;
538
541
  }
539
542
  }
@@ -76,7 +76,6 @@
76
76
  scroll-snap-type: x mandatory;
77
77
  scroll-behavior: smooth;
78
78
  overscroll-behavior-inline: contain;
79
- touch-action: pan-x;
80
79
  scrollbar-width: none;
81
80
 
82
81
  &::-webkit-scrollbar {
@@ -485,7 +484,6 @@
485
484
  scroll-snap-type: y mandatory;
486
485
  overscroll-behavior-inline: auto;
487
486
  overscroll-behavior-block: contain;
488
- touch-action: pan-y;
489
487
  }
490
488
 
491
489
  .carousel-track > .carousel-item {
@@ -527,7 +525,6 @@
527
525
  scroll-snap-type: x mandatory;
528
526
  overscroll-behavior-inline: contain;
529
527
  overscroll-behavior-block: auto;
530
- touch-action: pan-x;
531
528
  }
532
529
 
533
530
  .carousel-track > .carousel-item {
@@ -565,17 +562,22 @@
565
562
  cursor: grab;
566
563
  }
567
564
 
568
- .carousel.dragging {
565
+ // A drag writes the scroll position directly, and snapping would pull each
566
+ // write back to a snap point. Each layout that sets scroll-snap-type with
567
+ // more classes than `.carousel.dragging` needs its own arm here.
568
+ .carousel.dragging,
569
+ .carousel.uncontained.snap.dragging,
570
+ .carousel.full-screen.full-screen-horizontal.dragging {
569
571
  > .carousel-track {
570
572
  cursor: grabbing;
571
573
  scroll-behavior: auto;
572
574
  scroll-snap-type: none;
573
575
  user-select: none;
574
576
  }
577
+ }
575
578
 
576
- .carousel-item {
577
- pointer-events: none;
578
- }
579
+ .carousel.dragging .carousel-item {
580
+ pointer-events: none;
579
581
  }
580
582
  }
581
583
 
@@ -0,0 +1,134 @@
1
+ @use "../abstracts" as *;
2
+
3
+ // Column chart. The same <figure>, <figcaption> and <table> as a line
4
+ // chart; ColumnChart draws each row as a group of columns, one per series,
5
+ // growing from zero. The plot, tooltip, labels and legend come from chart().
6
+ //
7
+ // Each column is a full-height span clipped to its value with clip-path
8
+ // inset(), using the --top and --bottom percentages ColumnChart sets, so
9
+ // the rounded ends keep their radius at any size and resizing needs no
10
+ // script. --zero on the columns is the baseline the columns grow from.
11
+ //
12
+ // Modifiers: .stacked draws one column per row with each series on the
13
+ // ones before it, .fade fades each column toward its base, .track draws a
14
+ // full-height track behind each row's columns, .sparkline is a small chart
15
+ // with no axis, grid, legend or tooltip.
16
+ //
17
+ // Tokens:
18
+ // --md-comp-column-chart-height 240px (sparkline 48px)
19
+ // --md-comp-column-chart-column-width 60% of each row's width
20
+ // --md-comp-column-chart-shape 4px, the column's end radius
21
+ // --md-comp-column-chart-track-color surface-container-highest
22
+ // --md-comp-column-chart-grid-color outline-variant
23
+ // --md-comp-column-chart-color-1..4 primary, tertiary, secondary,
24
+ // on-surface-variant
25
+
26
+ @include chart("column-chart");
27
+
28
+ .column-chart {
29
+ --md-comp-column-chart-column-width: 60%;
30
+ --md-comp-column-chart-shape: 4px;
31
+ --md-comp-column-chart-track-color: var(--md-sys-color-surface-container-highest);
32
+ }
33
+
34
+ .column-chart-columns {
35
+ position: absolute;
36
+ inset: 0;
37
+ display: grid;
38
+ grid-auto-columns: minmax(0, 1fr);
39
+ grid-auto-flow: column;
40
+
41
+ // A row: its columns side by side, or overlapping when stacked.
42
+ > div {
43
+ display: grid;
44
+ grid-auto-columns: minmax(0, 1fr);
45
+ grid-auto-flow: column;
46
+ gap: 2px;
47
+ justify-self: center;
48
+ width: var(--md-comp-column-chart-column-width);
49
+ border-radius: var(--md-comp-column-chart-shape);
50
+ }
51
+
52
+ // --column-chart-tip rounds the end away from zero, --column-chart-base
53
+ // the end on zero.
54
+ > div > span {
55
+ --column-chart-tip: var(--md-comp-column-chart-shape);
56
+ --column-chart-base: 0px;
57
+ --column-chart-ends: var(--column-chart-tip) var(--column-chart-tip) var(--column-chart-base) var(--column-chart-base);
58
+
59
+ background-color: var(--column-chart-color);
60
+ clip-path: inset(var(--top, 100%) 0 var(--bottom, 0%) round var(--column-chart-ends));
61
+
62
+ // A column below zero has its tip at the bottom.
63
+ &.negative {
64
+ --column-chart-ends: var(--column-chart-base) var(--column-chart-base) var(--column-chart-tip) var(--column-chart-tip);
65
+ }
66
+ }
67
+
68
+ @media (prefers-reduced-motion: no-preference) {
69
+ > div > span {
70
+ transition: clip-path 400ms cubic-bezier(0.2, 0, 0, 1);
71
+
72
+ @starting-style {
73
+ clip-path: inset(var(--zero, 100%) 0 calc(100% - var(--zero, 100%)) round var(--column-chart-ends));
74
+ }
75
+ }
76
+ }
77
+ }
78
+
79
+ // One column per row, rounded only at the ends of the whole stack.
80
+ .column-chart.stacked .column-chart-columns > div {
81
+ gap: 0;
82
+
83
+ > span {
84
+ grid-area: 1 / 1;
85
+
86
+ &:not(:last-child) {
87
+ --column-chart-tip: 0px;
88
+ }
89
+
90
+ &:not(:first-child) {
91
+ --column-chart-base: 0px;
92
+ }
93
+ }
94
+ }
95
+
96
+ // Each column fades from its tip toward zero.
97
+ .column-chart.fade .column-chart-columns > div > span {
98
+ background: linear-gradient(var(--column-chart-color) var(--top, 100%), transparent calc(100% - var(--bottom, 0%)));
99
+
100
+ &.negative {
101
+ background: linear-gradient(to top, var(--column-chart-color) var(--bottom, 0%), transparent calc(100% - var(--top, 100%)));
102
+ }
103
+ }
104
+
105
+ .column-chart.track .column-chart-columns > div {
106
+ background-color: var(--md-comp-column-chart-track-color);
107
+
108
+ > span {
109
+ --column-chart-base: var(--md-comp-column-chart-shape);
110
+ }
111
+ }
112
+
113
+ // A band behind the highlighted row's columns.
114
+ .column-chart-plot {
115
+ isolation: isolate;
116
+ }
117
+
118
+ .column-chart-cursor {
119
+ z-index: -1;
120
+ width: calc(100% / var(--rows, 1));
121
+ border-radius: var(--md-comp-column-chart-shape);
122
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
123
+ translate: -50% 0;
124
+ }
125
+
126
+ @media (forced-colors: active) {
127
+ .column-chart-columns > div > span {
128
+ forced-color-adjust: none;
129
+ }
130
+
131
+ .column-chart-cursor {
132
+ outline: 1px solid CanvasText;
133
+ }
134
+ }