@nxgt/material 3.10.2 → 3.12.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.
- package/CHANGELOG.md +96 -0
- package/README.md +10 -11
- package/dist/{async-slice-DDjaJY_F.js → async-slice-4qbER86I.js} +1 -1
- package/dist/button-BNjw-pnE.js +327 -0
- package/dist/button-group-context-CaP0X5p_.js +5 -0
- package/dist/{button-tones-BgZJ1tkD.js → button-tones-BwuVvAmd.js} +9 -1
- package/dist/{callout-view-DdJPdFrP.js → callout-view-C6voDS00.js} +1 -1
- package/dist/charts.js +5 -5
- package/dist/{chip-DpySRqCy.js → chip-DLgQTJBZ.js} +4 -4
- package/dist/{code-editor-BiA14xua.js → code-editor-BZbaYLvo.js} +8 -8
- package/dist/code-editor.js +7 -7
- package/dist/{code-language-items-C_dJ6GVs.js → code-language-items-BT5BO5w6.js} +2 -2
- package/dist/components/base.css +21 -6
- package/dist/components/components.css +6 -2
- package/dist/components/type-scale.css +194 -0
- package/dist/components/ui/actions/button/button.css +156 -0
- package/dist/components/ui/actions/button-group/button-group-standard.css +131 -0
- package/dist/components/ui/actions/button-group/button-group.css +4 -1
- package/dist/components/ui/actions/icon-button/icon-button.css +115 -0
- package/dist/components/ui/actions/morph-fill.css +62 -0
- package/dist/components/ui/feedback/toast/toast-expressive.css +17 -0
- package/dist/components/ui/layout/app-shell/activity-backdrop-shapes.css +49 -0
- package/dist/components/ui/layout/app-shell/activity-backdrop.css +0 -17
- package/dist/components/ui/layout/sidebar/sidebar-tokens.css +7 -2
- package/dist/{components-BkF9N-Yx.js → components-yx1t_5_P.js} +13740 -13422
- package/dist/components.js +24 -24
- package/dist/{dialog-CkIYpJXk.js → dialog-BQp5IdFl.js} +147 -147
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-BC5Tbhb9.js → dropdown-menu-BsH9W_3C.js} +3 -3
- package/dist/editor-viewer.js +1 -1
- package/dist/editor.js +13 -13
- package/dist/{empty-state-SeAg2TOX.js → empty-state-WaU4-T2c.js} +5 -5
- package/dist/escape-owner-C4W_sOAU.js +116 -0
- package/dist/{field-blur-DPLsMufs.js → field-blur-CJHzVSh9.js} +1 -1
- package/dist/{field-blur-context-1ZwJgsHE.js → field-blur-context-Cft9s7Hg.js} +2 -2
- package/dist/{hover-card-Cox-tPDz.js → hover-card-C0fw2kLK.js} +72 -71
- package/dist/i18n.js +12 -12
- package/dist/{icon-badge-q3Ve8gra.js → icon-badge-DUAq9f7H.js} +4 -4
- package/dist/icon-button-ifTpXt0A.js +355 -0
- package/dist/{illustration-BfHRpVzM.js → illustration-BmQmvW_4.js} +1 -1
- package/dist/illustrations.js +2 -2
- package/dist/lib/components/ui/actions/button/button-tones.d.ts +16 -0
- package/dist/lib/components/ui/actions/button/button.d.ts +13 -0
- package/dist/lib/components/ui/actions/button/button.variants.d.ts +4 -3
- package/dist/lib/components/ui/actions/button-group/button-group-context.d.ts +16 -0
- package/dist/lib/components/ui/actions/button-group/button-group-reset.d.ts +13 -0
- package/dist/lib/components/ui/actions/button-group/button-group.d.ts +19 -2
- package/dist/lib/components/ui/actions/icon-button/icon-button-shape.d.ts +3 -2
- package/dist/lib/components/ui/actions/icon-button/icon-button.d.ts +18 -4
- package/dist/lib/components/ui/actions/icon-button/icon-button.variants.d.ts +34 -4
- package/dist/lib/components/ui/display/badge/badge.d.ts +7 -2
- package/dist/lib/components/ui/display/entity-header/entity-header.d.ts +9 -1
- package/dist/lib/components/ui/display/entity-header/entity-stats.d.ts +16 -0
- package/dist/lib/components/ui/display/entity-header/partials/entity-header-actions.d.ts +6 -0
- package/dist/lib/components/ui/display/entity-header/partials/entity-header-body.d.ts +14 -0
- package/dist/lib/components/ui/display/entity-header/partials/entity-header-icon.d.ts +6 -0
- package/dist/lib/components/ui/display/entity-header/partials/shown.d.ts +2 -0
- package/dist/lib/components/ui/display/list-tile/list-tile.d.ts +8 -1
- package/dist/lib/components/ui/display/list-tile/partials/list-tile-body.d.ts +2 -1
- package/dist/lib/components/ui/display/stat-card/index.d.ts +1 -1
- package/dist/lib/components/ui/display/stat-card/partials/stat-card-compact.d.ts +12 -0
- package/dist/lib/components/ui/display/stat-card/stat-card-classes.d.ts +3 -2
- package/dist/lib/components/ui/display/stat-card/stat-card.d.ts +2 -2
- package/dist/lib/components/ui/display/stat-card/types.d.ts +9 -0
- package/dist/lib/components/ui/feedback/alert/alert-variants.d.ts +18 -0
- package/dist/lib/components/ui/feedback/alert/alert.d.ts +2 -6
- package/dist/lib/components/ui/feedback/typing-indicator/typing-indicator.d.ts +1 -1
- package/dist/lib/components/ui/fields/slider/split-slider-props.d.ts +1 -1
- package/dist/lib/components/ui/fields/slider/use-slider-control.d.ts +1 -1
- package/dist/lib/components/ui/layout/app-shell/activity-column.d.ts +17 -0
- package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +3 -106
- package/dist/lib/components/ui/layout/app-shell/activity-layout.types.d.ts +113 -0
- package/dist/lib/components/ui/layout/app-shell/app-breadcrumb.d.ts +2 -1
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +11 -0
- package/dist/lib/components/ui/layout/app-shell/keep-shapes-inside.d.ts +6 -0
- package/dist/lib/components/ui/layout/app-shell/observe-layout.d.ts +11 -0
- package/dist/lib/components/ui/layout/app-shell/shape-units.d.ts +16 -0
- package/dist/lib/components/ui/layout/app-shell/shapes-clear-content.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/types.d.ts +10 -0
- package/dist/lib/components/ui/layout/app-shell/use-keep-shapes-inside.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/watch-content.d.ts +19 -0
- package/dist/lib/components/ui/overlays/dialog/dialog-variants.d.ts +1 -1
- package/dist/lib/components/ui/primitives/toggle/toggle.d.ts +1 -1
- package/dist/lib/components/ui/primitives/typography/typography.d.ts +17 -7
- package/dist/lib/components/ui/primitives/typography/typography.variants.d.ts +55 -0
- package/dist/lib/components/ui/selection/choice-group/use-choice-group-field.d.ts +2 -2
- package/dist/lib/components/ui/tones.d.ts +1 -1
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +2 -2
- package/dist/{line-path-BQeLQZ-P.js → line-path-C5pZGC49.js} +1 -1
- package/dist/main.js +29 -29
- package/dist/map.js +9 -9
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/print.js +1 -1
- package/dist/{public-CtpsxV4I.js → public-B0Nq_yYV.js} +524 -524
- package/dist/{render-json-DyFYFIkZ.js → render-json-BOhvPnSv.js} +1 -1
- package/dist/{rich-code-block-C2Fp_FDU.js → rich-code-block-v7WmeZp9.js} +5 -5
- package/dist/{rich-text-viewer-LO1IZCWs.js → rich-text-viewer-W15XIwah.js} +2 -2
- package/dist/{skeleton-Bmp4gWAH.js → skeleton-DSdtr2qc.js} +1 -1
- package/dist/{sortable-provider-pVaEZzty.js → sortable-provider-CgDTolQR.js} +3 -3
- package/dist/{spinner-CsHcmcpF.js → spinner-BtSIYVrC.js} +3 -3
- package/dist/{state-scenes-SGNyZjTz.js → state-scenes-BX03WmSu.js} +1 -1
- package/dist/styles.css +2 -0
- package/dist/theme-picker.js +3 -3
- package/dist/{theme-toggle-oU-fh6WE.js → theme-toggle-B2Pehdhn.js} +2 -2
- package/dist/{toggle-group-j8zaxEg1.js → toggle-group-BMJNcFAC.js} +1 -1
- package/dist/{toolbar-items-CqHvlTU8.js → toolbar-items-rUHdVqAq.js} +399 -398
- package/dist/{tooltip-rhbqNmr3.js → tooltip-CkttDIab.js} +1 -1
- package/dist/{translate-material-CGZljjp1.js → translate-material-Bd_KgfB8.js} +1 -1
- package/dist/{translator-DCYO4Ij3.js → translator-Dje8HrNz.js} +5 -5
- package/dist/{use-chat-composer-nWWfVyrK.js → use-chat-composer-B0_STpQN.js} +4173 -4173
- package/dist/{use-material-translation-DkxcLbLM.js → use-material-translation-B3V_bz-5.js} +1 -1
- package/dist/{utils-Bcd2Z3ea.js → utils-BLfntITJ.js} +14 -1
- package/docs/components/buttons-and-actions.md +64 -15
- package/docs/components/data-display.md +40 -9
- package/docs/components/feedback-and-status.md +12 -1
- package/docs/components/navigation-and-layout.md +4 -3
- package/docs/components/primitives.md +52 -10
- package/docs/guides/app-shell.md +52 -8
- package/docs/guides/backgrounds.md +2 -0
- package/docs/guides/theming.md +55 -3
- package/docs/previews/buttons-actions-button.webp +0 -0
- package/docs/previews/buttons-actions-iconbutton.webp +0 -0
- package/docs/previews/data-display-badge.webp +0 -0
- package/docs/previews/data-display-entityheader.webp +0 -0
- package/docs/previews/data-display-listtile.webp +0 -0
- package/docs/previews/data-display-statcard.webp +0 -0
- package/docs/previews/feedback-status-banner.webp +0 -0
- package/docs/previews/navigation-layout-appshell-footer-icon.webp +0 -0
- package/docs/previews/navigation-layout-appshell-menu-badge.webp +0 -0
- package/docs/previews/navigation-layout-appshell.webp +0 -0
- package/docs/previews/navigation-layout-sidebar.webp +0 -0
- package/docs/previews/primitives-typography.webp +0 -0
- package/docs/roadmap.md +53 -4
- package/docs/troubleshooting.md +75 -4
- package/lib/components/base.css +21 -6
- package/lib/components/components.css +6 -2
- package/lib/components/type-scale.css +194 -0
- package/lib/components/ui/actions/button/button.css +156 -0
- package/lib/components/ui/actions/button-group/button-group-standard.css +131 -0
- package/lib/components/ui/actions/button-group/button-group.css +4 -1
- package/lib/components/ui/actions/icon-button/icon-button.css +115 -0
- package/lib/components/ui/actions/morph-fill.css +62 -0
- package/lib/components/ui/feedback/toast/toast-expressive.css +17 -0
- package/lib/components/ui/layout/app-shell/activity-backdrop-shapes.css +49 -0
- package/lib/components/ui/layout/app-shell/activity-backdrop.css +0 -17
- package/lib/components/ui/layout/sidebar/sidebar-tokens.css +7 -2
- package/lib/styles.css +2 -0
- package/package.json +2 -1
- package/dist/button-DbfdITBB.js +0 -322
- package/dist/components/ui/actions/icon-button/icon-button-morph-media.css +0 -65
- package/dist/components/ui/actions/icon-button/icon-button-morph.css +0 -152
- package/dist/escape-owner-CripBce_.js +0 -57
- package/dist/icon-button-DJcWpIhu.js +0 -319
- package/lib/components/ui/actions/icon-button/icon-button-morph-media.css +0 -65
- package/lib/components/ui/actions/icon-button/icon-button-morph.css +0 -152
|
@@ -181,6 +181,8 @@ of path data; `low-poly` is about 20 KB (210 nodes); `circuit` about 9 KB (90 no
|
|
|
181
181
|
|
|
182
182
|
<img src="../previews/backgrounds-motifs.webp" width="480" alt="The shapes preset behind a card">
|
|
183
183
|
|
|
184
|
+
**Behind an `ActivityLayout`** a preset's discrete shapes are hidden wherever they would lie over the page's text or controls, and fade back when the content moves away (see [Where the shapes go](./app-shell.md#the-themes-background)). A `Background` used on its own, on a page you lay out, draws all its shapes.
|
|
185
|
+
|
|
184
186
|
`shapes`, `confetti-grid`, `constellation`, `halftone`, `truchet`, `floating` and `scatter-icons` draw seeded, deterministic geometry from
|
|
185
187
|
the tone's three colours: the same `seed` gives the same composition on the server and in the
|
|
186
188
|
browser, and a new `seed` redraws it.
|
package/docs/guides/theming.md
CHANGED
|
@@ -35,6 +35,8 @@ at the top are needed is in [getting started](../getting-started.md#styles).
|
|
|
35
35
|
`AttributeForm` and `AttributeValuesForm`, and the required-field mark drawn
|
|
36
36
|
after a `Label` (the first three are dependencies, the rest ship in
|
|
37
37
|
`lib/components/`);
|
|
38
|
+
- the **type scale**: `--text-<role>-<size>` tokens and the `text-title-md` and
|
|
39
|
+
`text-title-md-em` utilities ([Type scale](#type-scale));
|
|
38
40
|
- the **tokens**: CSS variables on `:root`, and their dark values on `.dark`
|
|
39
41
|
and `[data-theme="dark"]`;
|
|
40
42
|
- an `@theme inline` block that maps each token to a Tailwind colour, so
|
|
@@ -576,15 +578,16 @@ rail and menu sheet) is drawn with three tokens, in light and in dark:
|
|
|
576
578
|
| --- | --- | --- | --- |
|
|
577
579
|
| `--sidebar-active` | `bg-sidebar-active` | primary at 15 % | primary at 30 % |
|
|
578
580
|
| `--sidebar-active-hover` | `bg-sidebar-active-hover` | primary at 20 % | primary at 35 % |
|
|
579
|
-
| `--sidebar-active-foreground` | `text-sidebar-active-foreground` |
|
|
581
|
+
| `--sidebar-active-foreground` | `text-sidebar-active-foreground` | `oklch(from var(--primary) calc(l * 0.85) c h)`, 4.5:1 or more on the pill for every theme preset | `oklch(from var(--primary) 0.72 0.15 h)`, 6.3:1 or more on the pill |
|
|
580
582
|
|
|
581
583
|
The pill is the icon's (collapsed rail) or the whole row (expanded), a pill in the collapsed rail and, in the expanded row, an `--nxgt-item-radius` (6px) shape that carries the 3px start bar every chosen row has, drawn in `--sidebar-active-foreground` (a `Highlight` bar in forced colours); the
|
|
582
584
|
foreground is the label and the icon, whose duotone layers both follow it (in
|
|
583
585
|
dark too: the icon of `AppSidebar` is the lifted lavender like its label). The
|
|
584
586
|
label is read on the pill (expanded) or on the sidebar (collapsed rail); the
|
|
585
587
|
icon, on the pill. In browsers without relative colour syntax (before Chrome
|
|
586
|
-
119, Safari 18, Firefox 128) the
|
|
587
|
-
itself, as the dark lift
|
|
588
|
+
119, Safari 18, Firefox 128) the foreground falls back to `--primary`
|
|
589
|
+
itself in light and dark, as both the light darkening and the dark lift need
|
|
590
|
+
`oklch(from …)`.
|
|
588
591
|
|
|
589
592
|
The defaults are derived where the entry is drawn, from the `--primary` it
|
|
590
593
|
sits under, so a `--primary` set on a wrapper recolours the rail inside it.
|
|
@@ -664,6 +667,55 @@ does not set it: without it the title uses the body face. Set it on `:root`
|
|
|
664
667
|
}
|
|
665
668
|
```
|
|
666
669
|
|
|
670
|
+
## Type scale
|
|
671
|
+
|
|
672
|
+
The text sizes are the Material 3 type scale: five roles (`display`, `headline`,
|
|
673
|
+
`title`, `body`, `label`) in three sizes (`lg`, `md`, `sm`), as Tailwind 4
|
|
674
|
+
tokens in `styles.css`. Each step has a size, a line height, a tracking and a
|
|
675
|
+
weight, and an emphasized (heavier) weight:
|
|
676
|
+
|
|
677
|
+
```css
|
|
678
|
+
--text-title-md: 1rem;
|
|
679
|
+
--text-title-md--line-height: 1.5rem;
|
|
680
|
+
--text-title-md--letter-spacing: 0.0094em;
|
|
681
|
+
--text-title-md--font-weight: 500;
|
|
682
|
+
--text-title-md--font-weight-em: 680;
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
They are real Tailwind utilities, so your own markup uses the same steps as
|
|
686
|
+
`Typography`, `Button` and the bare headings:
|
|
687
|
+
|
|
688
|
+
```tsx
|
|
689
|
+
<h2 className="text-headline-sm">Orders</h2>
|
|
690
|
+
<p className="text-body-md">12 orders are waiting.</p>
|
|
691
|
+
<span className="text-title-md-em">Next delivery</span>
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
`text-title-md` sets size, line height, tracking and weight; `text-title-md-em`
|
|
695
|
+
keeps the first three and takes the emphasized weight. `font-bold`,
|
|
696
|
+
`leading-*` and `tracking-*` still win over them. Retune a step with CSS
|
|
697
|
+
variables, on `:root` for the app or on a zone for one part of the page; there
|
|
698
|
+
is no `defineTheme` key:
|
|
699
|
+
|
|
700
|
+
```css
|
|
701
|
+
:root {
|
|
702
|
+
--text-body-md: 0.9375rem;
|
|
703
|
+
--text-body-md--line-height: 1.4rem;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.dense-table {
|
|
707
|
+
--text-title-md--font-weight-em: 600;
|
|
708
|
+
}
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Weights are numeric and read on a variable font's `wght` axis (Inter Variable
|
|
712
|
+
covers 100 to 900); the library sets no `font-variation-settings`, and
|
|
713
|
+
`font-optical-sizing` stays at the browser's `auto`. The bare `h1` to `h6` are
|
|
714
|
+
`headline-md`, `headline-sm`, `title-lg`, `title-md`, `title-sm` and
|
|
715
|
+
`label-md` at weight 500, so a retuned step retunes them too. The
|
|
716
|
+
[Typography component](../components/primitives.md#typography) has the table of
|
|
717
|
+
values and the deprecated names.
|
|
718
|
+
|
|
667
719
|
## Overriding tokens
|
|
668
720
|
|
|
669
721
|
Redefine the variables **after** the import, for light and dark separately:
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/roadmap.md
CHANGED
|
@@ -123,6 +123,18 @@ version they shipped in, and planned entries may name the major they target.
|
|
|
123
123
|
|
|
124
124
|
## Next
|
|
125
125
|
|
|
126
|
+
- **`ButtonGroup` standard look by default, and the old `Typography` names
|
|
127
|
+
removed (4.0)** — `ButtonGroup`'s Material 3 Expressive look (`look="standard"`)
|
|
128
|
+
becomes the default, with `look="legacy"` to keep the original group. The
|
|
129
|
+
fifteen deprecated `Typography` variants (`huge-*`, `headline-larger`,
|
|
130
|
+
`headline-large`... `caption`) are removed in favour of the type scale's
|
|
131
|
+
names, once the other component families read the scale
|
|
132
|
+
([Typography](components/primitives.md#typography)).
|
|
133
|
+
|
|
134
|
+
- **IconButton: `round` or `square` like Button** — a `shape` of `round` or
|
|
135
|
+
`square` on `IconButton`, with the same press morph, beside the expressive
|
|
136
|
+
shape names it takes today.
|
|
137
|
+
|
|
126
138
|
- **DataGrid: row selection on phones** — the phone list gets the selection
|
|
127
139
|
control the grid has with `enableRowSelection`: a checkbox per item and a
|
|
128
140
|
select-all, with the same `rowSelection` state.
|
|
@@ -220,10 +232,11 @@ version they shipped in, and planned entries may name the major they target.
|
|
|
220
232
|
- **`CircularProgress` at Material 3's size** — the default `size` becomes
|
|
221
233
|
Material 3's 40 px (48 px when `wavy`) instead of 100 px. Pass `size` today
|
|
222
234
|
to keep a size across the change.
|
|
223
|
-
- **`Button` on the
|
|
224
|
-
24
|
|
225
|
-
|
|
226
|
-
up
|
|
235
|
+
- **`Button` `xs` and `lg` on the `SplitButton` scale** — 3.11 keeps `Button`
|
|
236
|
+
at 24, 32, 36 and 40 px (and adds `xl` 56 and `2xl` 96); `xs` becoming 28 px
|
|
237
|
+
and `lg` 44 px, the scale `SplitButton` and `ToggleGroup` follow, so a
|
|
238
|
+
`Button` and a `SplitButton` of the same size line up, stays a possible
|
|
239
|
+
change for a major.
|
|
227
240
|
- **A CSP without `style-src-attr 'unsafe-inline'`** — the four form controls'
|
|
228
241
|
hidden inputs and the `Checkbox` indicator no longer need it;
|
|
229
242
|
`SelectValue`, the `RadioGroup` root, `Slider` and popper positioning still
|
|
@@ -295,6 +308,42 @@ version they shipped in, and planned entries may name the major they target.
|
|
|
295
308
|
|
|
296
309
|
## Shipped
|
|
297
310
|
|
|
311
|
+
- **Display polish** — `Badge` is a status badge: a 20 px pill with the
|
|
312
|
+
`label-sm` text and no hover, a `soft` variant (the tone's container under
|
|
313
|
+
the tone's text, 4.5:1) and a `tone` prop for `soft` and `outlined`, taking
|
|
314
|
+
your own tones too; `CountBadge` keeps its own size. `ListTile` with an
|
|
315
|
+
`href` ends with a discreet chevron (`chevron={false}` opts out). `StatCard`
|
|
316
|
+
gets a compact `size="sm"` tile and `EntityHeader` a `stats` prop that shows
|
|
317
|
+
figures as these tiles. `Banner` takes `Alert`'s look. A footer `MenuItem`
|
|
318
|
+
can be `display: 'icon'`, a round icon-only button with a tooltip, 44 px on
|
|
319
|
+
a touch screen; the rail's active label is drawn in a darker primary so it
|
|
320
|
+
reads 4.5:1 on every theme preset. `breadcrumb={false}` hides the trail, and
|
|
321
|
+
so does a trail whose crumbs all render `null` (#1475). `Combobox` rows are
|
|
322
|
+
touch-sized on a touch screen (#1474). The backdrop's shapes are hidden while
|
|
323
|
+
they lie over the page's text or controls, never moved (#1478). Nothing
|
|
324
|
+
changes in core. React only; the
|
|
325
|
+
Vue port is a `vue` issue. Ships in 3.12.0.
|
|
326
|
+
([Data display](components/data-display.md),
|
|
327
|
+
[App shell](guides/app-shell.md))
|
|
328
|
+
|
|
329
|
+
- **Buttons and the type scale in Material 3 Expressive** — `Typography` takes
|
|
330
|
+
the Material 3 scale (`display`, `headline`, `title`, `body`, `label`, each
|
|
331
|
+
`lg`, `md` and `sm`, plus `emphasized`) as Tailwind tokens: `text-title-md`
|
|
332
|
+
and `text-title-md-em` are utilities, and an app or a zone retunes a step
|
|
333
|
+
with CSS variables. The former variants are deprecated aliases (their sizes
|
|
334
|
+
changed) and the bare `h1` to `h6` read the scale. `Button` gains the `xl`
|
|
335
|
+
(56 px) and `2xl` (96 px) sizes, `shape` `round` or `square` with a spring
|
|
336
|
+
press morph, and `selected` (a toggle with an inverted shape and a solid
|
|
337
|
+
fill); every button has a 2 px focus outline, a neutral disabled look and a
|
|
338
|
+
44 px hit area on a coarse pointer. `IconButton` gets `size` `xs` to `xl`
|
|
339
|
+
and `width` `narrow`, `default` or `wide`, on Button's look and the shared
|
|
340
|
+
toggle fill. `ButtonGroup` gets `look="standard"` (the pressed button widens,
|
|
341
|
+
its neighbours give the width back) and a `size` its buttons share. Nothing
|
|
342
|
+
changes in core. React only; the Vue port is a `vue` issue. 3.11.0.
|
|
343
|
+
([Buttons & actions](components/buttons-and-actions.md),
|
|
344
|
+
[Typography](components/primitives.md#typography),
|
|
345
|
+
[Type scale](guides/theming.md#type-scale))
|
|
346
|
+
|
|
298
347
|
- **Icon backgrounds, celestial presets and illustrations** — `Background
|
|
299
348
|
preset="icons"` draws a pattern of icons from the packs, `iconStyle` taking
|
|
300
349
|
one style or a list and `iconMotif` choosing the layout.
|
package/docs/troubleshooting.md
CHANGED
|
@@ -86,6 +86,10 @@ words in your error.
|
|
|
86
86
|
- [A test of the editor's More panel finds nothing (`[data-editor-more]`)](#a-test-of-the-editors-more-panel-finds-nothing-data-editor-more)
|
|
87
87
|
- [An editor, a composer or `PdfReader` looks different after upgrading, and fewer tools fit before More](#an-editor-a-composer-or-pdfreader-looks-different-after-upgrading-and-fewer-tools-fit-before-more)
|
|
88
88
|
- [An `IconButton` with `aria-pressed` now widens and fills when pressed](#an-iconbutton-with-aria-pressed-now-widens-and-fills-when-pressed)
|
|
89
|
+
- [Text got bigger or smaller after upgrading to 3.11 (`Typography` `huge-*`, `headline-*`, `title-*`, `caption`)](#text-got-bigger-or-smaller-after-upgrading-to-311-typography-huge--headline--title--caption)
|
|
90
|
+
- [`Type '"icon"' is not assignable to type '"xs" | "sm" | "default" | "lg" | "xl"'` when spreading Button props into an `IconButton`](#type-icon-is-not-assignable-to-type-xs--sm--default--lg--xl-when-spreading-button-props-into-an-iconbutton)
|
|
91
|
+
- [A pill `IconButton` toggle is the wrong width with a `size-*` class](#a-pill-iconbutton-toggle-is-the-wrong-width-with-a-size--class)
|
|
92
|
+
- [A `Button` with a height class of your own has the wrong corner radius](#a-button-with-a-height-class-of-your-own-has-the-wrong-corner-radius)
|
|
89
93
|
|
|
90
94
|
**Feedback**
|
|
91
95
|
|
|
@@ -105,6 +109,7 @@ words in your error.
|
|
|
105
109
|
|
|
106
110
|
**Navigation**
|
|
107
111
|
|
|
112
|
+
- [A `ListTile` link shows two chevrons](#a-listtile-link-shows-two-chevrons)
|
|
108
113
|
- [A `ListTile` link reloads the whole page](#a-listtile-link-reloads-the-whole-page)
|
|
109
114
|
- [After a link in the phone menu, the focus goes to `<main>`, not to the page's title](#after-a-link-in-the-phone-menu-the-focus-goes-to-main-not-to-the-pages-title)
|
|
110
115
|
- [The phone menu needs two Escapes to close, or a tooltip shows over it](#the-phone-menu-needs-two-escapes-to-close-or-a-tooltip-shows-over-it)
|
|
@@ -975,8 +980,9 @@ your token against the page at 4.5:1:
|
|
|
975
980
|
<Button variant="tonal" color="error">Delete</Button>
|
|
976
981
|
```
|
|
977
982
|
|
|
978
|
-
A `Badge`
|
|
979
|
-
in its `className` puts the fade back: darken
|
|
983
|
+
A `Badge` no longer changes on hover; a hover fade of your own such as
|
|
984
|
+
`[a&]:hover:bg-error/90` in its `className` puts the fade back: darken
|
|
985
|
+
instead, as in
|
|
980
986
|
`[a&]:hover:bg-[color-mix(in_oklab,var(--color-error)_90%,black)]` (with
|
|
981
987
|
your badge's colour in place of `error`). A
|
|
982
988
|
subtitle colour of your own on a selected `ListTile` must reach 4.5:1 on
|
|
@@ -1242,7 +1248,7 @@ inside the child element is clipped without one.
|
|
|
1242
1248
|
**Fix:** update. Then pick, for each long label: leave the ellipsis (give a
|
|
1243
1249
|
`title` so a sighted user can read it whole; the accessible name already
|
|
1244
1250
|
is), let it break onto lines with `wrap`, or give the button a width of
|
|
1245
|
-
your own through `className`. With `asChild`, put the label in a `<span
|
|
1251
|
+
your own through `className`. With `asChild`, put the label in a `<span>` (on a touch screen in Safari an `asChild` host is not clipped, to keep its 44 px hit area, so only a span gets the ellipsis):
|
|
1246
1252
|
|
|
1247
1253
|
```tsx
|
|
1248
1254
|
<Button title="Continue to the payment details">Continue to the payment details</Button>
|
|
@@ -1631,7 +1637,7 @@ screen.getByRole('button', { name: 'Bold', pressed: true });
|
|
|
1631
1637
|
### An `IconButton` with `aria-pressed` now widens and fills when pressed
|
|
1632
1638
|
|
|
1633
1639
|
**When:** after upgrading, an icon toggle (an `IconButton` with `aria-pressed`) grows into a filled pill when pressed and pushes its neighbours by 14 px.
|
|
1634
|
-
**Fix:** `morph="round"` keeps a filled circle that does not widen. A test that read the quiet pressed item's `::after` bar should read its background instead, or query the state: `getByRole('button', { name: 'Favourite', pressed: true })`.
|
|
1640
|
+
**Fix:** `morph="round"` keeps a filled circle that does not widen (a pill toggle's width follows its `size`: see [the wrong width with a `size-*` class](#a-pill-iconbutton-toggle-is-the-wrong-width-with-a-size--class)). A test that read the quiet pressed item's `::after` bar should read its background instead, or query the state: `getByRole('button', { name: 'Favourite', pressed: true })`.
|
|
1635
1641
|
|
|
1636
1642
|
```tsx
|
|
1637
1643
|
<IconButton morph="round" aria-label="Favourite" aria-pressed={on} onClick={toggle}>
|
|
@@ -1658,6 +1664,58 @@ A dialog opened from a bar button that is showing returns the focus to that butt
|
|
|
1658
1664
|
|
|
1659
1665
|
A tool that toggles is a `menuitemcheckbox`, a plain action or a dialog a `menuitem` (a dialog's has `aria-haspopup="dialog"`), the text colour, the highlight and the emoji a `menuitem` that opens their popover at More (a `dialog` named as the tool). The block type, the font, the callout types and the image's upload are submenus; the block type and the font list `menuitemradio` rows, and the submenu's row shows the current one after its name. A folded group of two or more rows is a `group` named by its label; a group of one row lists that row alone, with no group around it; a single-choice group stays a named radio group, even with one row. The alignments are a radio group named "Alignment" of `menuitemradio` rows, the current one checked (`getByRole('menuitemradio', { name: 'Align left' })`), while the bar keeps them as `aria-pressed` buttons. The text and highlight colour pickers are now a `dialog` (the library `Popover`, named as the tool), not a `menu`, in the bar too; a test of `[data-group-id="…"]` waits for its `hidden` attribute, not for it to leave. In the rail the groups are `data-slot="toolbar-group"` (they were `editor-toolbar-group`, which only `layout="wrap"` keeps) and the separators `data-slot="toolbar-separator"`: select a group by `data-group` or `data-group-id`.
|
|
1660
1666
|
|
|
1667
|
+
### Text got bigger or smaller after upgrading to 3.11 (`Typography` `huge-*`, `headline-*`, `title-*`, `caption`)
|
|
1668
|
+
|
|
1669
|
+
**When:** after the upgrade, a heading, a stat or a caption set with a `Typography` `variant` such as `title-medium` (18 to 16 px), `title-large` (20 to 22 px), `headline-large` (36 to 32 px), `huge-large` (96 to 57 px) or `caption` (10 to 11 px) has another size, line height and weight, and so do the bare `h1` to `h6` (`h1` 24 to 28 px, `h2` 20 to 24, `h3` 18 to 22).
|
|
1670
|
+
**Why:** `Typography` moved to the Material 3 type scale. The fifteen former variants are kept, deprecated, as aliases of the scale by name, so the sizes follow the scale; the headings read it too.
|
|
1671
|
+
**Fix:** pick the step you want by its scale name, which also silences the deprecation. The table of former names and sizes is in [Typography](components/primitives.md#typography); to keep an old size in one place, retune the step with CSS variables:
|
|
1672
|
+
|
|
1673
|
+
```tsx
|
|
1674
|
+
// before
|
|
1675
|
+
<Typography variant="title-medium">Next delivery</Typography>
|
|
1676
|
+
// after: the same step, written in the scale
|
|
1677
|
+
<Typography variant="title-md" emphasized>Next delivery</Typography>
|
|
1678
|
+
```
|
|
1679
|
+
|
|
1680
|
+
```css
|
|
1681
|
+
/* or keep 18 px for one zone */
|
|
1682
|
+
.invoice { --text-title-md: 1.125rem; --text-title-md--line-height: 1.75rem; }
|
|
1683
|
+
```
|
|
1684
|
+
|
|
1685
|
+
### `Type '"icon"' is not assignable to type '"xs" | "sm" | "default" | "lg" | "xl"'` when spreading Button props into an `IconButton`
|
|
1686
|
+
|
|
1687
|
+
**When:** a wrapper spreads a `Button`'s props (`ComponentProps<typeof Button>`, `ButtonProps`) into an `IconButton` or `IconLinkButton`, and the compiler rejects `size` after the upgrade, or `shape`.
|
|
1688
|
+
**Why:** `IconButton` has its own typed `size` (`xs` to `xl`), which the `Button`'s `icon`, `icon-xs`, `icon-sm`, `icon-lg` and `2xl` are not; and `Button`'s `shape` is `round` or `square` where `IconButton`'s is an expressive shape name.
|
|
1689
|
+
**Fix:** drop `size` and `shape` before spreading, or pass the ones `IconButton` takes:
|
|
1690
|
+
|
|
1691
|
+
```tsx
|
|
1692
|
+
const { size, shape, ...rest } = props;
|
|
1693
|
+
return <IconButton size="lg" {...rest} />;
|
|
1694
|
+
```
|
|
1695
|
+
|
|
1696
|
+
### A pill `IconButton` toggle is the wrong width with a `size-*` class
|
|
1697
|
+
|
|
1698
|
+
**When:** an `IconButton` toggle (`aria-pressed`, `morph="pill"`) given a `size-*` class of your own (`size-12`) is as wide as its `size` says, not as your class does, when pressed.
|
|
1699
|
+
**Why:** the pill's pressed width follows the button's `size` (24 to 56 px, 36 px unset), so it is the same at every size without the old `::before`.
|
|
1700
|
+
**Fix:** give the button a `size` instead of a `size-*` class; use `width="wide"` for a longer resting button.
|
|
1701
|
+
|
|
1702
|
+
```tsx
|
|
1703
|
+
<IconButton size="xl" aria-pressed={on} aria-label="Favourite">
|
|
1704
|
+
<Star />
|
|
1705
|
+
</IconButton>
|
|
1706
|
+
```
|
|
1707
|
+
|
|
1708
|
+
### A `Button` with a height class of your own has the wrong corner radius
|
|
1709
|
+
|
|
1710
|
+
**When:** a `Button` given a height of its own (`className="h-11"`) is a pill whose corners are those of its `size`: a 44 px button with the 18 px radius of a 36 px one, or a squarer pill than expected, and the corners spring toward the wrong size when pressed.
|
|
1711
|
+
**Why:** a round button's radius is half of `--btn-h`, which its `size` sets (36 px without one); a height class changes the box and not that variable.
|
|
1712
|
+
**Fix:** set `--btn-h` with your height class, or use `size`:
|
|
1713
|
+
|
|
1714
|
+
```tsx
|
|
1715
|
+
<Button className="[--btn-h:44px] h-(--btn-h)">Save</Button>
|
|
1716
|
+
<Button size="xl">Save</Button>
|
|
1717
|
+
```
|
|
1718
|
+
|
|
1661
1719
|
## Feedback
|
|
1662
1720
|
|
|
1663
1721
|
### An `EmptyState` with no `kind` shows "No Data Found" where it showed "Something Went Wrong"
|
|
@@ -1918,6 +1976,19 @@ tree.
|
|
|
1918
1976
|
|
|
1919
1977
|
## Navigation
|
|
1920
1978
|
|
|
1979
|
+
### A `ListTile` link shows two chevrons
|
|
1980
|
+
|
|
1981
|
+
**When:** a `ListTile` with an `href` and a `trailing={<ChevronRight />}` of
|
|
1982
|
+
your own draws a second chevron since the tile adds one.
|
|
1983
|
+
**Why:** a link tile ends with a decorative chevron by default.
|
|
1984
|
+
**Fix:** drop your own, or keep it and pass `chevron={false}`:
|
|
1985
|
+
|
|
1986
|
+
```tsx
|
|
1987
|
+
<ListTile title="Notifications" href="/settings/notifications" />
|
|
1988
|
+
// or, with your own icon
|
|
1989
|
+
<ListTile title="Notifications" href="/settings/notifications" chevron={false} trailing={<MyArrow />} />
|
|
1990
|
+
```
|
|
1991
|
+
|
|
1921
1992
|
### A `ListTile` link reloads the whole page
|
|
1922
1993
|
|
|
1923
1994
|
**When:** a `ListTile` with an `href` is clicked inside a router app: the
|
package/lib/components/base.css
CHANGED
|
@@ -31,28 +31,43 @@
|
|
|
31
31
|
@apply dark:fill-foreground;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/* h1 to h6 read the type scale (type-scale.css); the fallbacks keep the
|
|
35
|
+
old sizes where the scale is not loaded (this file is shared with
|
|
36
|
+
@nxgt/material-vue, which has no scale yet). */
|
|
34
37
|
h1 {
|
|
35
|
-
font-size: var(--text-2xl);
|
|
38
|
+
font-size: var(--text-headline-md, var(--text-2xl));
|
|
39
|
+
line-height: var(--text-headline-md--line-height, inherit);
|
|
40
|
+
letter-spacing: var(--text-headline-md--letter-spacing, inherit);
|
|
36
41
|
font-weight: var(--font-weight-medium);
|
|
37
42
|
}
|
|
38
43
|
h2 {
|
|
39
|
-
font-size: var(--text-xl);
|
|
44
|
+
font-size: var(--text-headline-sm, var(--text-xl));
|
|
45
|
+
line-height: var(--text-headline-sm--line-height, inherit);
|
|
46
|
+
letter-spacing: var(--text-headline-sm--letter-spacing, inherit);
|
|
40
47
|
font-weight: var(--font-weight-medium);
|
|
41
48
|
}
|
|
42
49
|
h3 {
|
|
43
|
-
font-size: var(--text-lg);
|
|
50
|
+
font-size: var(--text-title-lg, var(--text-lg));
|
|
51
|
+
line-height: var(--text-title-lg--line-height, inherit);
|
|
52
|
+
letter-spacing: var(--text-title-lg--letter-spacing, inherit);
|
|
44
53
|
font-weight: var(--font-weight-medium);
|
|
45
54
|
}
|
|
46
55
|
h4 {
|
|
47
|
-
font-size: var(--text-base);
|
|
56
|
+
font-size: var(--text-title-md, var(--text-base));
|
|
57
|
+
line-height: var(--text-title-md--line-height, inherit);
|
|
58
|
+
letter-spacing: var(--text-title-md--letter-spacing, inherit);
|
|
48
59
|
font-weight: var(--font-weight-medium);
|
|
49
60
|
}
|
|
50
61
|
h5 {
|
|
51
|
-
font-size: var(--text-sm);
|
|
62
|
+
font-size: var(--text-title-sm, var(--text-sm));
|
|
63
|
+
line-height: var(--text-title-sm--line-height, inherit);
|
|
64
|
+
letter-spacing: var(--text-title-sm--letter-spacing, inherit);
|
|
52
65
|
font-weight: var(--font-weight-medium);
|
|
53
66
|
}
|
|
54
67
|
h6 {
|
|
55
|
-
font-size: var(--text-xs);
|
|
68
|
+
font-size: var(--text-label-md, var(--text-xs));
|
|
69
|
+
line-height: var(--text-label-md--line-height, inherit);
|
|
70
|
+
letter-spacing: var(--text-label-md--letter-spacing, inherit);
|
|
56
71
|
font-weight: var(--font-weight-medium);
|
|
57
72
|
}
|
|
58
73
|
/* A sidebar entry is a link styled as a menu entry: the prose link style
|
|
@@ -51,9 +51,11 @@
|
|
|
51
51
|
@import "./ui/widgets/editor/extensions/code/code-block.css";
|
|
52
52
|
@import "./ui/widgets/editor/extensions/code/code-block-head.css";
|
|
53
53
|
@import "./ui/actions/button-group/button-group.css";
|
|
54
|
+
@import "./ui/actions/button-group/button-group-standard.css";
|
|
54
55
|
/* ActivityLayout: the route transition (cross-fade, none under reduced motion). */
|
|
55
56
|
@import "./ui/layout/app-shell/route-transition.css";
|
|
56
57
|
@import "./ui/layout/app-shell/activity-backdrop.css";
|
|
58
|
+
@import "./ui/layout/app-shell/activity-backdrop-shapes.css";
|
|
57
59
|
/* DataTable cards and tiles: the item shell (hairline, tint, start bar, columns by the list's width). */
|
|
58
60
|
@import "./ui/collections/data-table/data-table-items.css";
|
|
59
61
|
@import "./ui/collections/data-table/data-table-items-compact.css";
|
|
@@ -79,8 +81,10 @@
|
|
|
79
81
|
@import "./ui/actions/split-button/split-button-sizes.css";
|
|
80
82
|
@import "./ui/actions/split-button/split-button-colors.css";
|
|
81
83
|
@import "./ui/actions/split-button/split-button-states.css";
|
|
82
|
-
|
|
83
|
-
@import "./ui/actions/
|
|
84
|
+
/* Button (sizes, shape morph, selected), the selected fill it shares with IconButton, and IconButton's own rules. */
|
|
85
|
+
@import "./ui/actions/morph-fill.css";
|
|
86
|
+
@import "./ui/actions/button/button.css";
|
|
87
|
+
@import "./ui/actions/icon-button/icon-button.css";
|
|
84
88
|
@import "./ui/actions/fab/fab.css";
|
|
85
89
|
@import "./ui/actions/fab/fab-tones.css";
|
|
86
90
|
@import "./ui/actions/fab/fab-menu.css";
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/* The type scale of @nxgt/material (Material 3 Expressive), imported by
|
|
2
|
+
* lib/styles.css: display, headline, title, body and label, each large, medium
|
|
3
|
+
* and small, as Tailwind tokens. Each role-size has a size, a line height, a
|
|
4
|
+
* tracking and a weight, so `text-title-md` sets all four; `text-title-md-em`
|
|
5
|
+
* keeps the size, line height and tracking and takes the emphasized (heavier)
|
|
6
|
+
* weight. The weights are numbers, so a variable font (Inter) reads them on
|
|
7
|
+
* its wght axis; `font-optical-sizing: auto` (the browser default) picks the
|
|
8
|
+
* opsz axis from the size. No font-variation-settings, no new font.
|
|
9
|
+
*
|
|
10
|
+
* Retune a token with a CSS variable on :root or on a zone, after importing
|
|
11
|
+
* the stylesheet; the utilities read the variable where they are used:
|
|
12
|
+
* :root { --text-title-md: 1.125rem; --text-title-md--line-height: 1.5rem; }
|
|
13
|
+
* The emphasized variants read the base size, line height and tracking, so an
|
|
14
|
+
* override of the base reaches them; their weight is
|
|
15
|
+
* `--text-<role>-<size>--font-weight-em`.
|
|
16
|
+
*
|
|
17
|
+
* Typography (variant="title-md", emphasized) is the component for it. Static:
|
|
18
|
+
* every token is on :root even when no utility uses it. Not shared with
|
|
19
|
+
* @nxgt/material-vue. scripts/type-scale.spec.ts keeps the values. */
|
|
20
|
+
@theme static {
|
|
21
|
+
--text-display-lg: 3.5625rem;
|
|
22
|
+
--text-display-lg--line-height: 4rem;
|
|
23
|
+
--text-display-lg--letter-spacing: -0.0044em;
|
|
24
|
+
--text-display-lg--font-weight: 400;
|
|
25
|
+
--text-display-lg--font-weight-em: 540;
|
|
26
|
+
|
|
27
|
+
--text-display-md: 2.8125rem;
|
|
28
|
+
--text-display-md--line-height: 3.25rem;
|
|
29
|
+
--text-display-md--letter-spacing: 0em;
|
|
30
|
+
--text-display-md--font-weight: 400;
|
|
31
|
+
--text-display-md--font-weight-em: 540;
|
|
32
|
+
|
|
33
|
+
--text-display-sm: 2.25rem;
|
|
34
|
+
--text-display-sm--line-height: 2.75rem;
|
|
35
|
+
--text-display-sm--letter-spacing: 0em;
|
|
36
|
+
--text-display-sm--font-weight: 400;
|
|
37
|
+
--text-display-sm--font-weight-em: 540;
|
|
38
|
+
|
|
39
|
+
--text-headline-lg: 2rem;
|
|
40
|
+
--text-headline-lg--line-height: 2.5rem;
|
|
41
|
+
--text-headline-lg--letter-spacing: 0em;
|
|
42
|
+
--text-headline-lg--font-weight: 400;
|
|
43
|
+
--text-headline-lg--font-weight-em: 560;
|
|
44
|
+
|
|
45
|
+
--text-headline-md: 1.75rem;
|
|
46
|
+
--text-headline-md--line-height: 2.25rem;
|
|
47
|
+
--text-headline-md--letter-spacing: 0em;
|
|
48
|
+
--text-headline-md--font-weight: 400;
|
|
49
|
+
--text-headline-md--font-weight-em: 560;
|
|
50
|
+
|
|
51
|
+
--text-headline-sm: 1.5rem;
|
|
52
|
+
--text-headline-sm--line-height: 2rem;
|
|
53
|
+
--text-headline-sm--letter-spacing: 0em;
|
|
54
|
+
--text-headline-sm--font-weight: 400;
|
|
55
|
+
--text-headline-sm--font-weight-em: 560;
|
|
56
|
+
|
|
57
|
+
--text-title-lg: 1.375rem;
|
|
58
|
+
--text-title-lg--line-height: 1.75rem;
|
|
59
|
+
--text-title-lg--letter-spacing: 0em;
|
|
60
|
+
--text-title-lg--font-weight: 400;
|
|
61
|
+
--text-title-lg--font-weight-em: 580;
|
|
62
|
+
|
|
63
|
+
--text-title-md: 1rem;
|
|
64
|
+
--text-title-md--line-height: 1.5rem;
|
|
65
|
+
--text-title-md--letter-spacing: 0.0094em;
|
|
66
|
+
--text-title-md--font-weight: 500;
|
|
67
|
+
--text-title-md--font-weight-em: 680;
|
|
68
|
+
|
|
69
|
+
--text-title-sm: 0.875rem;
|
|
70
|
+
--text-title-sm--line-height: 1.25rem;
|
|
71
|
+
--text-title-sm--letter-spacing: 0.0071em;
|
|
72
|
+
--text-title-sm--font-weight: 500;
|
|
73
|
+
--text-title-sm--font-weight-em: 680;
|
|
74
|
+
|
|
75
|
+
--text-body-lg: 1rem;
|
|
76
|
+
--text-body-lg--line-height: 1.5rem;
|
|
77
|
+
--text-body-lg--letter-spacing: 0.031em;
|
|
78
|
+
--text-body-lg--font-weight: 400;
|
|
79
|
+
--text-body-lg--font-weight-em: 520;
|
|
80
|
+
|
|
81
|
+
--text-body-md: 0.875rem;
|
|
82
|
+
--text-body-md--line-height: 1.25rem;
|
|
83
|
+
--text-body-md--letter-spacing: 0.0179em;
|
|
84
|
+
--text-body-md--font-weight: 400;
|
|
85
|
+
--text-body-md--font-weight-em: 520;
|
|
86
|
+
|
|
87
|
+
--text-body-sm: 0.75rem;
|
|
88
|
+
--text-body-sm--line-height: 1rem;
|
|
89
|
+
--text-body-sm--letter-spacing: 0.0333em;
|
|
90
|
+
--text-body-sm--font-weight: 400;
|
|
91
|
+
--text-body-sm--font-weight-em: 520;
|
|
92
|
+
|
|
93
|
+
--text-label-lg: 0.875rem;
|
|
94
|
+
--text-label-lg--line-height: 1.25rem;
|
|
95
|
+
--text-label-lg--letter-spacing: 0.0071em;
|
|
96
|
+
--text-label-lg--font-weight: 500;
|
|
97
|
+
--text-label-lg--font-weight-em: 700;
|
|
98
|
+
|
|
99
|
+
--text-label-md: 0.75rem;
|
|
100
|
+
--text-label-md--line-height: 1rem;
|
|
101
|
+
--text-label-md--letter-spacing: 0.0417em;
|
|
102
|
+
--text-label-md--font-weight: 500;
|
|
103
|
+
--text-label-md--font-weight-em: 700;
|
|
104
|
+
|
|
105
|
+
--text-label-sm: 0.6875rem;
|
|
106
|
+
--text-label-sm--line-height: 1rem;
|
|
107
|
+
--text-label-sm--letter-spacing: 0.0455em;
|
|
108
|
+
--text-label-sm--font-weight: 500;
|
|
109
|
+
--text-label-sm--font-weight-em: 700;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Emphasized: the base size, line height and tracking, read where used, and the heavier weight. */
|
|
113
|
+
@theme inline {
|
|
114
|
+
--text-display-lg-em: var(--text-display-lg);
|
|
115
|
+
--text-display-lg-em--line-height: var(--text-display-lg--line-height);
|
|
116
|
+
--text-display-lg-em--letter-spacing: var(--text-display-lg--letter-spacing);
|
|
117
|
+
--text-display-lg-em--font-weight: var(--text-display-lg--font-weight-em);
|
|
118
|
+
|
|
119
|
+
--text-display-md-em: var(--text-display-md);
|
|
120
|
+
--text-display-md-em--line-height: var(--text-display-md--line-height);
|
|
121
|
+
--text-display-md-em--letter-spacing: var(--text-display-md--letter-spacing);
|
|
122
|
+
--text-display-md-em--font-weight: var(--text-display-md--font-weight-em);
|
|
123
|
+
|
|
124
|
+
--text-display-sm-em: var(--text-display-sm);
|
|
125
|
+
--text-display-sm-em--line-height: var(--text-display-sm--line-height);
|
|
126
|
+
--text-display-sm-em--letter-spacing: var(--text-display-sm--letter-spacing);
|
|
127
|
+
--text-display-sm-em--font-weight: var(--text-display-sm--font-weight-em);
|
|
128
|
+
|
|
129
|
+
--text-headline-lg-em: var(--text-headline-lg);
|
|
130
|
+
--text-headline-lg-em--line-height: var(--text-headline-lg--line-height);
|
|
131
|
+
--text-headline-lg-em--letter-spacing: var(
|
|
132
|
+
--text-headline-lg--letter-spacing
|
|
133
|
+
);
|
|
134
|
+
--text-headline-lg-em--font-weight: var(--text-headline-lg--font-weight-em);
|
|
135
|
+
|
|
136
|
+
--text-headline-md-em: var(--text-headline-md);
|
|
137
|
+
--text-headline-md-em--line-height: var(--text-headline-md--line-height);
|
|
138
|
+
--text-headline-md-em--letter-spacing: var(
|
|
139
|
+
--text-headline-md--letter-spacing
|
|
140
|
+
);
|
|
141
|
+
--text-headline-md-em--font-weight: var(--text-headline-md--font-weight-em);
|
|
142
|
+
|
|
143
|
+
--text-headline-sm-em: var(--text-headline-sm);
|
|
144
|
+
--text-headline-sm-em--line-height: var(--text-headline-sm--line-height);
|
|
145
|
+
--text-headline-sm-em--letter-spacing: var(
|
|
146
|
+
--text-headline-sm--letter-spacing
|
|
147
|
+
);
|
|
148
|
+
--text-headline-sm-em--font-weight: var(--text-headline-sm--font-weight-em);
|
|
149
|
+
|
|
150
|
+
--text-title-lg-em: var(--text-title-lg);
|
|
151
|
+
--text-title-lg-em--line-height: var(--text-title-lg--line-height);
|
|
152
|
+
--text-title-lg-em--letter-spacing: var(--text-title-lg--letter-spacing);
|
|
153
|
+
--text-title-lg-em--font-weight: var(--text-title-lg--font-weight-em);
|
|
154
|
+
|
|
155
|
+
--text-title-md-em: var(--text-title-md);
|
|
156
|
+
--text-title-md-em--line-height: var(--text-title-md--line-height);
|
|
157
|
+
--text-title-md-em--letter-spacing: var(--text-title-md--letter-spacing);
|
|
158
|
+
--text-title-md-em--font-weight: var(--text-title-md--font-weight-em);
|
|
159
|
+
|
|
160
|
+
--text-title-sm-em: var(--text-title-sm);
|
|
161
|
+
--text-title-sm-em--line-height: var(--text-title-sm--line-height);
|
|
162
|
+
--text-title-sm-em--letter-spacing: var(--text-title-sm--letter-spacing);
|
|
163
|
+
--text-title-sm-em--font-weight: var(--text-title-sm--font-weight-em);
|
|
164
|
+
|
|
165
|
+
--text-body-lg-em: var(--text-body-lg);
|
|
166
|
+
--text-body-lg-em--line-height: var(--text-body-lg--line-height);
|
|
167
|
+
--text-body-lg-em--letter-spacing: var(--text-body-lg--letter-spacing);
|
|
168
|
+
--text-body-lg-em--font-weight: var(--text-body-lg--font-weight-em);
|
|
169
|
+
|
|
170
|
+
--text-body-md-em: var(--text-body-md);
|
|
171
|
+
--text-body-md-em--line-height: var(--text-body-md--line-height);
|
|
172
|
+
--text-body-md-em--letter-spacing: var(--text-body-md--letter-spacing);
|
|
173
|
+
--text-body-md-em--font-weight: var(--text-body-md--font-weight-em);
|
|
174
|
+
|
|
175
|
+
--text-body-sm-em: var(--text-body-sm);
|
|
176
|
+
--text-body-sm-em--line-height: var(--text-body-sm--line-height);
|
|
177
|
+
--text-body-sm-em--letter-spacing: var(--text-body-sm--letter-spacing);
|
|
178
|
+
--text-body-sm-em--font-weight: var(--text-body-sm--font-weight-em);
|
|
179
|
+
|
|
180
|
+
--text-label-lg-em: var(--text-label-lg);
|
|
181
|
+
--text-label-lg-em--line-height: var(--text-label-lg--line-height);
|
|
182
|
+
--text-label-lg-em--letter-spacing: var(--text-label-lg--letter-spacing);
|
|
183
|
+
--text-label-lg-em--font-weight: var(--text-label-lg--font-weight-em);
|
|
184
|
+
|
|
185
|
+
--text-label-md-em: var(--text-label-md);
|
|
186
|
+
--text-label-md-em--line-height: var(--text-label-md--line-height);
|
|
187
|
+
--text-label-md-em--letter-spacing: var(--text-label-md--letter-spacing);
|
|
188
|
+
--text-label-md-em--font-weight: var(--text-label-md--font-weight-em);
|
|
189
|
+
|
|
190
|
+
--text-label-sm-em: var(--text-label-sm);
|
|
191
|
+
--text-label-sm-em--line-height: var(--text-label-sm--line-height);
|
|
192
|
+
--text-label-sm-em--letter-spacing: var(--text-label-sm--letter-spacing);
|
|
193
|
+
--text-label-sm-em--font-weight: var(--text-label-sm--font-weight-em);
|
|
194
|
+
}
|