@expressivecss/expressive 0.12.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.
- package/CHANGELOG.md +231 -1
- package/README.md +37 -1
- package/dist/css/expressive.css +5111 -36
- package/dist/css/expressive.css.map +1 -1
- package/dist/css/expressive.min.css +1 -1
- package/dist/css/expressive.min.css.map +1 -1
- package/dist/fonts/material-symbols-outlined.woff2 +0 -0
- package/dist/fonts/material-symbols-rounded.woff2 +0 -0
- package/dist/fonts/material-symbols-sharp.woff2 +0 -0
- package/dist/js/chunks/{chunk-HLDXZ7XB.mjs → chunk-3CLXLPYS.mjs} +2 -2
- package/dist/js/chunks/chunk-3DHK5CZU.mjs +105 -0
- package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +7 -0
- package/dist/js/chunks/chunk-4PWAPV6F.mjs +7 -0
- package/dist/js/chunks/chunk-4PWAPV6F.mjs.map +7 -0
- package/dist/js/chunks/{chunk-HB6IW7QQ.mjs → chunk-55IA2XUC.mjs} +2 -2
- package/dist/js/chunks/chunk-CCWDV5CR.mjs +292 -0
- package/dist/js/chunks/chunk-CCWDV5CR.mjs.map +7 -0
- package/dist/js/chunks/chunk-DTKR54I6.mjs +270 -0
- package/dist/js/chunks/chunk-DTKR54I6.mjs.map +7 -0
- package/dist/js/chunks/chunk-GVGT6MIU.mjs +47 -0
- package/dist/js/chunks/chunk-GVGT6MIU.mjs.map +7 -0
- package/dist/js/chunks/chunk-HKT2S7VM.mjs +48 -0
- package/dist/js/chunks/chunk-HKT2S7VM.mjs.map +7 -0
- package/dist/js/chunks/chunk-K4CJCRGE.mjs +262 -0
- package/dist/js/chunks/chunk-K4CJCRGE.mjs.map +7 -0
- package/dist/js/chunks/chunk-LNCCYGPC.mjs +163 -0
- package/dist/js/chunks/chunk-LNCCYGPC.mjs.map +7 -0
- package/dist/js/chunks/chunk-NQLC3YMW.mjs +1 -0
- package/dist/js/chunks/chunk-O5XPWXIQ.mjs +406 -0
- package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +7 -0
- package/dist/js/chunks/chunk-P3G3QHII.mjs +166 -0
- package/dist/js/chunks/chunk-P3G3QHII.mjs.map +7 -0
- package/dist/js/chunks/{chunk-H2WA4XHH.mjs → chunk-PLYXLSH3.mjs} +4 -4
- package/dist/js/chunks/chunk-QKWPQK5N.mjs +179 -0
- package/dist/js/chunks/chunk-QKWPQK5N.mjs.map +7 -0
- package/dist/js/chunks/chunk-RHRQKTTX.mjs +139 -0
- package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +7 -0
- package/dist/js/chunks/chunk-SPETGK25.mjs +59 -0
- package/dist/js/chunks/chunk-SPETGK25.mjs.map +7 -0
- package/dist/js/chunks/{chunk-YSBCHYXP.mjs → chunk-U2OTHOTI.mjs} +116 -12
- package/dist/js/chunks/chunk-U2OTHOTI.mjs.map +7 -0
- package/dist/js/chunks/chunk-VTLBW7QS.mjs +124 -0
- package/dist/js/chunks/chunk-VTLBW7QS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-RFZZCYVU.mjs → chunk-XGHORT7J.mjs} +2 -2
- package/dist/js/chunks/{chunk-HNFSMIBY.mjs → chunk-XH6BEEMY.mjs} +69 -16
- package/dist/js/chunks/chunk-XH6BEEMY.mjs.map +7 -0
- package/dist/js/expressive.cjs +2209 -32
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +2209 -32
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +10 -10
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +68 -20
- package/dist/js/expressive.mjs.map +1 -1
- package/dist/js/internal/behaviors/forms.mjs +1 -1
- package/dist/js/internal/components/autocomplete.mjs +2 -2
- package/dist/js/internal/components/barChart.mjs +10 -0
- package/dist/js/internal/components/barChart.mjs.map +7 -0
- package/dist/js/internal/components/chips.mjs +3 -3
- package/dist/js/internal/components/columnChart.mjs +9 -0
- package/dist/js/internal/components/columnChart.mjs.map +7 -0
- package/dist/js/internal/components/commandPalette.mjs +9 -0
- package/dist/js/internal/components/commandPalette.mjs.map +7 -0
- package/dist/js/internal/components/datepicker.mjs +3 -3
- package/dist/js/internal/components/heatmapChart.mjs +9 -0
- package/dist/js/internal/components/heatmapChart.mjs.map +7 -0
- package/dist/js/internal/components/index.mjs +65 -17
- package/dist/js/internal/components/lineChart.mjs +12 -0
- package/dist/js/internal/components/lineChart.mjs.map +7 -0
- package/dist/js/internal/components/menu.mjs +1 -1
- package/dist/js/internal/components/messageScroller.mjs +9 -0
- package/dist/js/internal/components/messageScroller.mjs.map +7 -0
- package/dist/js/internal/components/mixedChart.mjs +10 -0
- package/dist/js/internal/components/mixedChart.mjs.map +7 -0
- package/dist/js/internal/components/pieChart.mjs +9 -0
- package/dist/js/internal/components/pieChart.mjs.map +7 -0
- package/dist/js/internal/components/questionnaire.mjs +9 -0
- package/dist/js/internal/components/questionnaire.mjs.map +7 -0
- package/dist/js/internal/components/radarChart.mjs +9 -0
- package/dist/js/internal/components/radarChart.mjs.map +7 -0
- package/dist/js/internal/components/radialChart.mjs +9 -0
- package/dist/js/internal/components/radialChart.mjs.map +7 -0
- package/dist/js/internal/components/registry.mjs +23 -11
- package/dist/js/internal/components/richTextEditor.mjs +9 -0
- package/dist/js/internal/components/richTextEditor.mjs.map +7 -0
- package/dist/js/internal/components/select.mjs +2 -2
- package/dist/js/modular.mjs +68 -20
- package/dist/types/behaviors/forms.d.ts +22 -0
- package/dist/types/components/barChart.d.ts +24 -0
- package/dist/types/components/columnChart.d.ts +21 -0
- package/dist/types/components/commandPalette.d.ts +96 -0
- package/dist/types/components/heatmapChart.d.ts +49 -0
- package/dist/types/components/index.d.ts +12 -0
- package/dist/types/components/lineChart.d.ts +134 -0
- package/dist/types/components/menu.d.ts +31 -0
- package/dist/types/components/messageScroller.d.ts +111 -0
- package/dist/types/components/mixedChart.d.ts +25 -0
- package/dist/types/components/pieChart.d.ts +40 -0
- package/dist/types/components/questionnaire.d.ts +96 -0
- package/dist/types/components/radarChart.d.ts +39 -0
- package/dist/types/components/radialChart.d.ts +45 -0
- package/dist/types/components/registry.d.ts +44 -0
- package/dist/types/components/richTextEditor.d.ts +71 -0
- package/dist/types/modular.d.ts +10 -1
- package/package.json +4 -1
- package/src/sass/README.md +3 -6
- package/src/sass/abstracts/_index.scss +1 -1
- package/src/sass/abstracts/_mixins.scss +226 -0
- package/src/sass/abstracts/_variables.scss +14 -0
- package/src/sass/base/_typography.scss +45 -0
- package/src/sass/components/_accordion.scss +161 -0
- package/src/sass/components/_aura.scss +119 -0
- package/src/sass/components/_avatar.scss +86 -0
- package/src/sass/components/_bar-chart.scss +285 -0
- package/src/sass/components/_bottom-sheet.scss +1 -0
- package/src/sass/components/_button-groups.scss +13 -3
- package/src/sass/components/_cards.scss +16 -13
- package/src/sass/components/_column-chart.scss +134 -0
- package/src/sass/components/_command-palette.scss +140 -0
- package/src/sass/components/_countdown.scss +89 -0
- package/src/sass/components/_data-table.scss +188 -0
- package/src/sass/components/_dialog.scss +1 -0
- package/src/sass/components/_empty-state.scss +78 -0
- package/src/sass/components/_expanding-card.scss +3 -0
- package/src/sass/components/_heatmap-chart.scss +156 -0
- package/src/sass/components/_index.scss +27 -0
- package/src/sass/components/_kpi.scss +162 -0
- package/src/sass/components/_line-chart.scss +102 -0
- package/src/sass/components/_marquee.scss +111 -0
- package/src/sass/components/_menu.scss +10 -0
- package/src/sass/components/_message-scroller.scss +66 -0
- package/src/sass/components/_message.scss +202 -0
- package/src/sass/components/_mixed-chart.scss +157 -0
- package/src/sass/components/_navigation-bar.scss +1 -0
- package/src/sass/components/_navigation-rail.scss +9 -0
- package/src/sass/components/_pie-chart.scss +203 -0
- package/src/sass/components/_popover.scss +112 -0
- package/src/sass/components/_questionnaire.scss +144 -0
- package/src/sass/components/_radar-chart.scss +205 -0
- package/src/sass/components/_radial-chart.scss +174 -0
- package/src/sass/components/_rich-text-editor.scss +99 -0
- package/src/sass/components/_search.scss +1 -0
- package/src/sass/components/_side-sheet.scss +1 -0
- package/src/sass/components/_skeleton.scss +81 -0
- package/src/sass/components/_snackbar.scss +1 -0
- package/src/sass/components/_stat.scss +86 -0
- package/src/sass/components/_stepper.scss +190 -0
- package/src/sass/components/_timeline.scss +114 -0
- package/src/sass/components/_toolbar.scss +1 -0
- package/src/sass/components/_tooltip.scss +2 -0
- package/src/sass/components/_tree.scss +139 -0
- package/src/sass/components/forms/_drop-zone.scss +128 -0
- package/src/sass/components/forms/_index.scss +2 -0
- package/src/sass/components/forms/_input-fields.scss +133 -2
- package/src/sass/components/forms/_rating.scss +165 -0
- package/src/sass/tokens/_reference.scss +3 -15
- package/src/sass/utilities/_index.scss +2 -0
- package/src/sass/utilities/_scroll-area.scss +35 -0
- package/src/sass/utilities/_shapes.scss +164 -0
- package/dist/js/chunks/chunk-G3I5H2U3.mjs +0 -7
- package/dist/js/chunks/chunk-G3I5H2U3.mjs.map +0 -7
- package/dist/js/chunks/chunk-HNFSMIBY.mjs.map +0 -7
- package/dist/js/chunks/chunk-PSSHQWCX.mjs +0 -100
- package/dist/js/chunks/chunk-PSSHQWCX.mjs.map +0 -7
- package/dist/js/chunks/chunk-WWPAPHMA.mjs +0 -1
- package/dist/js/chunks/chunk-YSBCHYXP.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-HLDXZ7XB.mjs.map → chunk-3CLXLPYS.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-HB6IW7QQ.mjs.map → chunk-55IA2XUC.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-WWPAPHMA.mjs.map → chunk-NQLC3YMW.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-H2WA4XHH.mjs.map → chunk-PLYXLSH3.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-RFZZCYVU.mjs.map → chunk-XGHORT7J.mjs.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,234 @@ the format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.13.1] - 2026-10-08
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- The capability roadmap's source links point at a commit on `master`. The
|
|
13
|
+
0.13.0 links pointed at a pull request commit that no longer exists, which
|
|
14
|
+
stopped the 0.13.0 release before it reached npm. 0.13.1 contains the
|
|
15
|
+
0.13.0 changes below.
|
|
16
|
+
|
|
17
|
+
## [0.13.0] - 2026-10-08
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- `.rich-text-editor` turns a `<textarea>` into a Tiptap editor with a
|
|
22
|
+
docked toolbar. The page installs Tiptap and passes its `Editor` class and
|
|
23
|
+
extensions to `RichTextEditor.init()`; ExpressiveCSS does not bundle it.
|
|
24
|
+
A toolbar button's `data-command` names a Tiptap command and
|
|
25
|
+
`data-attributes` holds its JSON argument. Buttons are disabled when their
|
|
26
|
+
command cannot run, and `toggle` commands set `aria-pressed` and `.active`.
|
|
27
|
+
The textarea keeps the editor's HTML, so it submits with its form, and
|
|
28
|
+
names the editable textbox.
|
|
29
|
+
- `.marquee` scrolls a row of logos, images or text without end. Write
|
|
30
|
+
the items in two `.marquee-content` groups, the second marked
|
|
31
|
+
`aria-hidden="true"`. `vertical`, `reverse` and `fade` change the
|
|
32
|
+
direction and edges, `paused` stops it, and hover or focus inside pauses
|
|
33
|
+
it. Reduced motion stops the scroll and hides the copy. CSS only.
|
|
34
|
+
- `<mark>` highlights part of a text in the tertiary container colors,
|
|
35
|
+
with no padding so a match inside a word keeps its spacing.
|
|
36
|
+
`::highlight(mark)` paints ranges registered with the CSS Custom
|
|
37
|
+
Highlight API the same way.
|
|
38
|
+
- `.message-scroller` scrolls a conversation. While the reader is at the
|
|
39
|
+
end it follows streamed replies, and scrolling up releases it. A message
|
|
40
|
+
appended with `data-scroll-anchor` starts a turn and is scrolled to the
|
|
41
|
+
top, leaving 64px of the previous message in view. Messages added above
|
|
42
|
+
keep the reader's place. A transcript can open at its end, its start or
|
|
43
|
+
its last turn, `scrollToMessage(id)` jumps to any message, and an optional
|
|
44
|
+
`.message-scroller-button` scrolls to the latest message.
|
|
45
|
+
- `form.questionnaire` asks one question at a time. Each `<fieldset>` is a
|
|
46
|
+
question with radio, checkbox or text answers, and footer buttons marked
|
|
47
|
+
`value="previous"`, `"skip"` and `"next"` move between them. The component
|
|
48
|
+
adds a progress row, checks each question with the browser's validation
|
|
49
|
+
(`data-required` asks for at least one checkbox), shows the question's
|
|
50
|
+
`.questionnaire-error`, offers Skip on optional questions and leaves out
|
|
51
|
+
disabled ones so pages can branch. The form submits normally, and without
|
|
52
|
+
JavaScript every question shows at once.
|
|
53
|
+
- KPI component: `article.kpi` is a card for one key figure, with its
|
|
54
|
+
label and value in a `<dl>`, a `.kpi-trend` chip that takes `up`, `down`
|
|
55
|
+
and `negative`, an optional `.kpi-icon`, a `.kpi-actions` corner button,
|
|
56
|
+
a sparkline chart, a progress bar and a `.kpi-footer`. A `negative` trend
|
|
57
|
+
also turns the sparkline to the error color. CSS only.
|
|
58
|
+
- `.countdown` shows a whole number from 0 to 999 and rolls its digits up
|
|
59
|
+
or down when `--md-comp-countdown-value` changes. The element's text is
|
|
60
|
+
the value screen readers read. `--md-comp-countdown-digits` pads with
|
|
61
|
+
leading zeros, and reduced motion turns the roll off. CSS only.
|
|
62
|
+
- `.aura` wraps one button, card or panel and runs a light around a ring
|
|
63
|
+
just outside it, to mark the one thing a screen most needs the user to
|
|
64
|
+
see. `dual`, `rainbow` and `glow` change the light, and tokens set its
|
|
65
|
+
color, width, corners and speed. The ring is fully rounded around a
|
|
66
|
+
button, stops turning under reduced motion and stays out of the
|
|
67
|
+
accessibility tree.
|
|
68
|
+
- The agent skill gains an `expressivecss-charts` guide for building charts
|
|
69
|
+
and chart dashboards. It covers choosing a chart for the question asked,
|
|
70
|
+
table cells the charts can read, chart cards with stats, tokens,
|
|
71
|
+
sparklines and redrawing. Its recipes cover a period switch, a KPI row,
|
|
72
|
+
a donut with its total, a budget meter, a gauge, a heatmap and a
|
|
73
|
+
dashboard section. The root skill routes chart work to it.
|
|
74
|
+
- `.mixed-chart` draws a `<figure>`'s data table as columns, lines and
|
|
75
|
+
areas on one plot, chosen by each series header's class: `column`,
|
|
76
|
+
`area`, or a line by default, with `dashed` lines. A series with `end`
|
|
77
|
+
is drawn against a second scale, set by `data-end-min` and
|
|
78
|
+
`data-end-max`, for values in other units. The tooltip, cursor points,
|
|
79
|
+
legend and `sparkline` work as in the line chart.
|
|
80
|
+
- `.radial-chart` draws a `<figure>`'s data table as rings, one per row,
|
|
81
|
+
filled clockwise from the top as a share of `data-max` (100 by default),
|
|
82
|
+
with a legend, tracks, and a tooltip that follows the pointer across the
|
|
83
|
+
rings or the arrow keys. `gauge` draws half circles, a `<tfoot>` row shows
|
|
84
|
+
in the middle, and `sparkline` is a small chart. Ring width, gap and track
|
|
85
|
+
color are tokens.
|
|
86
|
+
- `.heatmap-chart` draws a `<figure>`'s data table as a grid of cells shaded
|
|
87
|
+
from the lowest value to the highest, with the row headers beside it, the
|
|
88
|
+
column headers below and a scale naming the lowest and highest cells. A
|
|
89
|
+
tooltip follows the pointer or the arrow keys from cell to cell. `values`
|
|
90
|
+
writes each cell's text on it in black or white, whichever reads on the
|
|
91
|
+
shade; `data-label` shortens or hides a header on the grid; `data-min` and
|
|
92
|
+
`data-max` fix the scale.
|
|
93
|
+
- `.radar-chart` draws a `<figure>`'s data table as shapes on spokes from a
|
|
94
|
+
shared middle, one spoke per row clockwise from the top and one shape per
|
|
95
|
+
series, with each row's label past its spoke, a legend, and a tooltip that
|
|
96
|
+
follows the pointer round the chart or the arrow keys. `area` fills the
|
|
97
|
+
shapes, `points` marks each value, and `sparkline` is a small chart.
|
|
98
|
+
- `.pie-chart` draws a `<figure>`'s data table as slices of a whole,
|
|
99
|
+
clockwise from the top, with a legend of each row's cell and share and a
|
|
100
|
+
tooltip that follows the pointer round the pie or the arrow keys. `donut`
|
|
101
|
+
cuts a hole and shows a `<tfoot>` total in it, `values` writes each share
|
|
102
|
+
on its slice, and `sparkline` is a small pie. Further value columns show in
|
|
103
|
+
the tooltip.
|
|
104
|
+
- `.bar-chart` draws a `<figure>`'s data table as horizontal bars from zero,
|
|
105
|
+
with each row's label beside it, a legend, and a highlight band and tooltip
|
|
106
|
+
that follow the pointer or the up and down arrows. The plot grows with its
|
|
107
|
+
rows. `stacked`, `split`, `track`, `values` and `sparkline` vary it: `values`
|
|
108
|
+
writes each cell from its bar's base, running past a short bar, and a
|
|
109
|
+
stacked, split row on a track with `data-max` is a meter. It shares the column chart's runtime and markup, and
|
|
110
|
+
the bars grow leftwards in a right-to-left page.
|
|
111
|
+
- Line, column and bar charts: a tap on a touch screen shows the tapped row
|
|
112
|
+
instead of the first, keeps it when the finger lifts, and hides it when the
|
|
113
|
+
page scrolls.
|
|
114
|
+
- `.column-chart` draws a `<figure>`'s data table as columns from zero, one
|
|
115
|
+
group per row, with x labels, a legend, and a highlight band and tooltip that
|
|
116
|
+
follow the pointer or the arrow keys. `stacked`, `fade`, `track` and
|
|
117
|
+
`sparkline` vary it, and negative values hang below zero. It shares the line
|
|
118
|
+
chart's runtime, markup and accessibility; the table stays as the text
|
|
119
|
+
alternative and the no-JavaScript fallback.
|
|
120
|
+
- Line chart: `stacked` draws each series on the total of the ones before it
|
|
121
|
+
and fills the band between them, from a zero baseline. The tooltip still
|
|
122
|
+
shows each cell, and an empty cell breaks the series above it. The docs add chart card layouts with a period switch, a
|
|
123
|
+
compact chart and a side sparkline.
|
|
124
|
+
|
|
125
|
+
- Message component: `.message` lays out one message in a conversation with an
|
|
126
|
+
optional `.message-avatar`, `.message-header` and `.message-footer` around a
|
|
127
|
+
`.message-bubble`. `end` moves a message to the sender's side,
|
|
128
|
+
`.message-group` stacks consecutive messages and joins their corners, and
|
|
129
|
+
`.message-bubble.outlined` holds attachments. CSS only.
|
|
130
|
+
- Accordion component: `.accordion` stacks native `<details>` items as joined
|
|
131
|
+
tiles with a turning chevron. A shared `name` keeps one item open, and
|
|
132
|
+
opening animates where the engine can transition to `auto` height. CSS only.
|
|
133
|
+
- Data table component: `.data-table` wraps a native `<table>` in a scrolling,
|
|
134
|
+
outlined container with a sticky header row. `numeric` aligns number columns,
|
|
135
|
+
`dense` shortens rows, `aria-sort` on a header draws its sort arrow, and a
|
|
136
|
+
checked checkbox in the first cell selects the row. The page owns sorting.
|
|
137
|
+
CSS only.
|
|
138
|
+
- Avatar component: `.avatar` shows a person as a circular image, initials or
|
|
139
|
+
icon in `small`, default and `large` sizes. `.avatar-group` overlaps avatars
|
|
140
|
+
with a surface ring. CSS only.
|
|
141
|
+
- Skeleton component: `.skeleton` draws placeholder boxes, `text` lines and
|
|
142
|
+
`circle` shapes with a shimmer that stops under reduced motion. CSS only.
|
|
143
|
+
- Empty state component: `.empty-state` centers an icon or illustration, a
|
|
144
|
+
heading, supporting text and an `.empty-state-actions` row. CSS only.
|
|
145
|
+
- Popover component: `.popover` styles a native `[popover]` panel opened by a
|
|
146
|
+
`popovertarget` button and places it with CSS anchor positioning, below the
|
|
147
|
+
button by default or with `top`, `start` and `end`, flipping to stay on
|
|
148
|
+
screen. Use it for toggletips and small action panels. CSS only.
|
|
149
|
+
- Stepper component: `ol.stepper` numbers a fixed sequence of steps.
|
|
150
|
+
`aria-current="step"`, `complete` and `invalid` mark each step's state, and
|
|
151
|
+
the complete and invalid states are spoken through translatable tokens.
|
|
152
|
+
`vertical` stacks the steps and takes a `.stepper-content` panel. CSS only.
|
|
153
|
+
- Drop zone component: `.drop-zone` stretches a native file input over a large
|
|
154
|
+
labelled target. The Forms behavior marks a drag with `dragover` and lists
|
|
155
|
+
each chosen file's name and size in `.drop-zone-files`.
|
|
156
|
+
- Text fields take a trailing `.icon-button.suffix` as a clickable control.
|
|
157
|
+
`password-toggle` on that button shows and hides the password and reports
|
|
158
|
+
its state with `aria-pressed`. `input.otp` draws one native input as a row of
|
|
159
|
+
one-time code cells.
|
|
160
|
+
- Menu `contextMenu` option, also set by `data-context-menu` on the trigger:
|
|
161
|
+
the trigger is a region, and its menu opens at the pointer on right-click,
|
|
162
|
+
long-press, the menu key or Shift+F10, flipping to stay on screen.
|
|
163
|
+
- Timeline component: `ol.timeline` marks each event with a dot joined to the
|
|
164
|
+
next by a line, or with a leading icon in a tonal circle. CSS only.
|
|
165
|
+
- Stat component: `dl.stats` lays out key figures as wrapping tiles, with a
|
|
166
|
+
`.stat-change` line that takes `up`, `down` and `negative`. CSS only.
|
|
167
|
+
- Tree component: `ul.tree` nests lists of native disclosures and links with
|
|
168
|
+
guide lines, turning chevrons and an `aria-current` row. It takes no tree
|
|
169
|
+
role. CSS only.
|
|
170
|
+
- Rating component: `fieldset.rating` draws native radios as stars that fill
|
|
171
|
+
up to the choice and preview on hover; `.rating[role="img"]` with
|
|
172
|
+
`--md-comp-rating-value` shows a score, halves included. CSS only.
|
|
173
|
+
- Command palette component: `dialog.command-palette` with a search input and
|
|
174
|
+
a list of link or button commands. `CommandPalette` filters by text and
|
|
175
|
+
`data-keywords`, moves the active command with the arrow keys, runs it with
|
|
176
|
+
Enter and opens on Ctrl+K or Command+K. `AutoInit()` starts it.
|
|
177
|
+
- `<kbd>` is drawn as a keycap; an outer `<kbd>` around a combination stays
|
|
178
|
+
plain.
|
|
179
|
+
- `.line-chart` draws a `<figure>`'s data table as smooth SVG lines with x
|
|
180
|
+
labels, a legend, and a cursor and tooltip that follow the pointer or the
|
|
181
|
+
arrow keys. `area`, `fade`, `sparkline` and `<th class="dashed">` vary it.
|
|
182
|
+
The table stays as the text alternative and the no-JavaScript fallback.
|
|
183
|
+
- `.scroll-area` styles native scrollbars with theme-aware colors and thin
|
|
184
|
+
sizing, with a WebKit fallback and system scrollbars in forced-colors mode.
|
|
185
|
+
- `.shape-*` cuts images, videos, buttons, and other elements to twenty
|
|
186
|
+
rounded shapes after the M3 Expressive shape library, such as
|
|
187
|
+
`.shape-scallop-6`, `.shape-spark`, and `.shape-bloom-4`. Focused shapes draw
|
|
188
|
+
their focus ring inside the edge. CSS only.
|
|
189
|
+
- Frosted glass for floating surfaces. `--expressive-glass: true` on `:root` or
|
|
190
|
+
a wrapper turns it on. `--expressive-glass-blur` (default `16px`) sets the
|
|
191
|
+
frost thickness, and `--expressive-glass-opacity` (default `72%`) sets how
|
|
192
|
+
much of the surface color is kept. Sass `$expressive-glass`,
|
|
193
|
+
`$expressive-glass-blur`, and `$expressive-glass-opacity` change the defaults,
|
|
194
|
+
and `--expressive-glass: false` turns the effect off within a region. Surfaces
|
|
195
|
+
turn solid when the user prefers reduced transparency or more contrast.
|
|
196
|
+
- The docs site opens on a landing page with a features overview, a live
|
|
197
|
+
code demo and the installation guide. Ctrl+K, Command+K or the app bar's
|
|
198
|
+
search button opens a search of every documentation page. Pages now carry
|
|
199
|
+
a meta description and Open Graph tags, and the site publishes
|
|
200
|
+
`sitemap.xml` and `robots.txt`.
|
|
201
|
+
|
|
202
|
+
### Changed
|
|
203
|
+
|
|
204
|
+
- The default theme seed is Mist Iris (`#c6a0f6`). The docs picker uses the
|
|
205
|
+
same default for its initial value and Reset action. Set `--md-source` or
|
|
206
|
+
Sass `$md-source` to retain an application's existing brand color.
|
|
207
|
+
- The agent skill workflow is version 0.9.0 and costs fewer tokens to read.
|
|
208
|
+
Sub-skill scope now lives only in each frontmatter description, without
|
|
209
|
+
repeated "When to use" sections. Generated component guides no
|
|
210
|
+
longer repeat the page description or the generic rule and documentation
|
|
211
|
+
notes, and the theming, usage, dashboard and charts guides link to the
|
|
212
|
+
reference that owns a rule instead of restating it. Each sub-skill says when
|
|
213
|
+
to read each reference, long references open with a contents list, and the
|
|
214
|
+
design guide links its dated component reviews directly. A new delegation
|
|
215
|
+
reference explains how to split a large audit across subagents and merge
|
|
216
|
+
their findings. The install and runtime guides end with checklists, and the
|
|
217
|
+
charts guide asks for honest scales and labelled sample data. Component
|
|
218
|
+
guides drop the source list and the two notes every guide repeated; the
|
|
219
|
+
root skill states the rule-ID convention once and tells agents to treat
|
|
220
|
+
page content and tool output as evidence, not instructions. Performance
|
|
221
|
+
measurement moved from the design guide into its own reference.
|
|
222
|
+
|
|
223
|
+
### Fixed
|
|
224
|
+
|
|
225
|
+
- A focused line, column, bar or pie chart no longer cancels Escape when its
|
|
226
|
+
tooltip is already hidden, so a dialog or sheet around the chart can close.
|
|
227
|
+
Pressing a chart's plot away from its marks focuses it without showing the
|
|
228
|
+
first row's tooltip; keyboard focus still shows it.
|
|
229
|
+
- A drawn chart's hidden data table no longer makes a narrow tile or its page
|
|
230
|
+
scroll. The table keeps a fixed 1px layout, as the heatmap's already did,
|
|
231
|
+
and hangs up from the figure's bottom edge, so its rows cannot add overflow
|
|
232
|
+
below it.
|
|
233
|
+
- The line chart docs' chart cards pad their stat and chart off the card's
|
|
234
|
+
border.
|
|
235
|
+
|
|
8
236
|
## [0.12.0] - 2026-10-01
|
|
9
237
|
|
|
10
238
|
### Added
|
|
@@ -1919,7 +2147,9 @@ are no compatibility aliases.
|
|
|
1919
2147
|
- `.tabs` nested in a header or app bar as a secondary row. `.tabs` is a
|
|
1920
2148
|
standalone component; the `.tabs.transparent` app bar variant is gone with it.
|
|
1921
2149
|
|
|
1922
|
-
[Unreleased]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.
|
|
2150
|
+
[Unreleased]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.13.1...HEAD
|
|
2151
|
+
[0.13.1]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.13.0...v0.13.1
|
|
2152
|
+
[0.13.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.12.0...v0.13.0
|
|
1923
2153
|
[0.12.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.11.0...v0.12.0
|
|
1924
2154
|
[0.11.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.10.1...v0.11.0
|
|
1925
2155
|
[0.10.1]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.10.0...v0.10.1
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ ExpressiveCSS is a Material Design 3 front-end framework built with Sass and
|
|
|
4
4
|
TypeScript. It provides theme tokens, layout and utility classes, styled form
|
|
5
5
|
controls, and JavaScript components in browser, ES module, and CommonJS builds.
|
|
6
6
|
|
|
7
|
-
> ExpressiveCSS version `0.
|
|
7
|
+
> ExpressiveCSS version `0.13.1` is under active development.
|
|
8
8
|
|
|
9
9
|
Documentation: [www.expressivecss.com](https://www.expressivecss.com)
|
|
10
10
|
|
|
@@ -326,6 +326,42 @@ After building, run `node --test tests/selective-builds.test.js`. It records raw
|
|
|
326
326
|
gzip, and Brotli sizes in `.cache/selective-builds/sizes.json`. The browser suite
|
|
327
327
|
records font requests and full/selective screenshots separately in that directory.
|
|
328
328
|
|
|
329
|
+
### Frosted glass
|
|
330
|
+
|
|
331
|
+
Floating surfaces can blur the page behind them. The effect is off by default.
|
|
332
|
+
Turn it on in CSS for the whole page or for one region:
|
|
333
|
+
|
|
334
|
+
```css
|
|
335
|
+
:root {
|
|
336
|
+
--expressive-glass: true;
|
|
337
|
+
--expressive-glass-blur: 16px; /* frost thickness */
|
|
338
|
+
--expressive-glass-opacity: 72%; /* share of the surface color kept; 100% is solid */
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
The blur and opacity lines are optional and show the defaults. Set
|
|
343
|
+
`--expressive-glass` on `:root` or on an element that contains the surfaces. The
|
|
344
|
+
browser reads the value from a surface's parent, so setting it on the surface
|
|
345
|
+
itself has no effect. `--expressive-glass: false` turns the effect off again inside
|
|
346
|
+
a region.
|
|
347
|
+
|
|
348
|
+
Sass builds can turn glass on by default and change the default values. The CSS
|
|
349
|
+
properties still override these settings:
|
|
350
|
+
|
|
351
|
+
```scss
|
|
352
|
+
@use "@expressivecss/expressive/src/sass/expressive" with (
|
|
353
|
+
$expressive-glass: true,
|
|
354
|
+
$expressive-glass-blur: 16px,
|
|
355
|
+
$expressive-glass-opacity: 72%
|
|
356
|
+
);
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
The effect applies to menus, tooltips, dialogs, bottom and side sheets, the
|
|
360
|
+
snackbar, the navigation bar and rail, toolbars, and the search view. Grouped menus
|
|
361
|
+
and a modal navigation rail keep a solid surface. The rail would otherwise clip its
|
|
362
|
+
own scrim. Users who request reduced transparency or more contrast in their system
|
|
363
|
+
settings see solid surfaces. The switch uses CSS style queries.
|
|
364
|
+
|
|
329
365
|
### Themes
|
|
330
366
|
|
|
331
367
|
ExpressiveCSS uses the `theme` attribute on the root element:
|