@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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Box } from './keep-shapes-inside.js';
|
|
2
|
+
/**
|
|
3
|
+
* The boxes of the text (its glyph runs, not its block) and the controls of the region, in the content's own coordinates.
|
|
4
|
+
* Both walks stop at `MAX_CONTENT_BOXES`: text past it is not collected.
|
|
5
|
+
*/
|
|
6
|
+
export declare function collectOccupied(region: Element): Box[];
|
|
7
|
+
/**
|
|
8
|
+
* Hides, never moves, the shapes of the backdrop that lie over the page's text
|
|
9
|
+
* or controls: a shape whose box meets an occupied box (8px margin) gets
|
|
10
|
+
* `data-hidden` (activity-backdrop.css fades it out) and loses it once clear.
|
|
11
|
+
* The occupied boxes are collected when the content changes or resizes and
|
|
12
|
+
* kept in content coordinates, so a scroll only shifts them: the scroll
|
|
13
|
+
* handler is a rAF-throttled loop over the cached boxes, no layout read.
|
|
14
|
+
*/
|
|
15
|
+
export declare function watchContent(column: HTMLElement, shapes: () => Element[]): {
|
|
16
|
+
/** Reads again, then applies: after layout, a resize or a change of the content. */
|
|
17
|
+
refresh(driftOf: (el: Element) => number): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
};
|
|
@@ -5,7 +5,7 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
5
5
|
* layer, so a utility in `className` still wins (`rounded-lg`, `bg-background`).
|
|
6
6
|
*/
|
|
7
7
|
export declare const dialogContentVariants: (props?: ({
|
|
8
|
-
size?: "
|
|
8
|
+
size?: "lg" | "md" | "sm" | "xl" | "full" | null | undefined;
|
|
9
9
|
mobilePresentation?: "dialog" | "fullscreen" | "bottom-sheet" | null | undefined;
|
|
10
10
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
11
11
|
export type DialogContentVariants = VariantProps<typeof dialogContentVariants>;
|
|
@@ -9,7 +9,7 @@ import { ComponentProps } from 'react';
|
|
|
9
9
|
*/
|
|
10
10
|
declare const toggleVariants: (props?: ({
|
|
11
11
|
variant?: "default" | "outlined" | null | undefined;
|
|
12
|
-
size?: "
|
|
12
|
+
size?: "lg" | "sm" | "default" | null | undefined;
|
|
13
13
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
14
14
|
declare function Toggle({ className, variant, size, ...props }: ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): import("react").JSX.Element;
|
|
15
15
|
export { Toggle, toggleVariants };
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { VariantProps } from 'class-variance-authority';
|
|
2
1
|
import { ComponentProps } from 'react';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { TypographyVariantProps } from './typography.variants.js';
|
|
3
|
+
export { typographyVariants } from './typography.variants.js';
|
|
4
|
+
export type TypographyProps = ComponentProps<'p'> & Omit<TypographyVariantProps, 'variant'> & {
|
|
5
|
+
/**
|
|
6
|
+
* A step of the type scale, `<role>-<size>`: role `display`, `headline`,
|
|
7
|
+
* `title`, `body` or `label`, size `lg`, `md` or `sm`. Default `body-md`.
|
|
8
|
+
*
|
|
9
|
+
* The fifteen former names are kept as aliases of the scale and are
|
|
10
|
+
* deprecated: `normal`, `huge-larger`, `huge-large`, `huge-medium`,
|
|
11
|
+
* `huge-small`, `headline-larger`, `headline-large`, `headline-medium`,
|
|
12
|
+
* `headline-small`, `title-large`, `title-medium`, `title-small`,
|
|
13
|
+
* `body-medium`, `body-small` and `caption`.
|
|
14
|
+
*/
|
|
15
|
+
variant?: TypographyVariantProps['variant'];
|
|
16
|
+
/** The heavier weight of the same step (`text-<step>-em`): same size, line height and tracking. No effect on a deprecated alias that is emphasized already. */
|
|
17
|
+
emphasized?: boolean | null;
|
|
8
18
|
/** The element to render, `div` by default. Intrinsic tags only. */
|
|
9
19
|
as?: keyof React.JSX.IntrinsicElements;
|
|
10
20
|
/** Merge the typography classes onto the single child instead of rendering an element. */
|
|
11
21
|
asChild?: boolean;
|
|
12
22
|
};
|
|
13
|
-
export declare function Typography({ className, variant, tone, as, asChild, ...props }: TypographyProps): import("react").JSX.Element;
|
|
23
|
+
export declare function Typography({ className, variant, emphasized, tone, as, asChild, ...props }: TypographyProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
/** The five roles of the type scale (lib/components/type-scale.css). */
|
|
3
|
+
export declare const typeRoles: readonly ["display", "headline", "title", "body", "label"];
|
|
4
|
+
export declare const typeSizes: readonly ["lg", "md", "sm"];
|
|
5
|
+
type Role = (typeof typeRoles)[number];
|
|
6
|
+
type Size = (typeof typeSizes)[number];
|
|
7
|
+
/** `display-lg`, `title-md`… the fifteen scale variants. */
|
|
8
|
+
export type ScaleVariant = `${Role}-${Size}`;
|
|
9
|
+
export declare const scaleVariants: ScaleVariant[];
|
|
10
|
+
/**
|
|
11
|
+
* The fifteen variants this component had before the scale, each mapped by
|
|
12
|
+
* name onto it: the old semibold ones to the emphasized variant, the others
|
|
13
|
+
* to the plain one. The sizes follow the scale, so they changed (the changelog
|
|
14
|
+
* has the table). `emphasized` has no effect on an alias that is emphasized
|
|
15
|
+
* already.
|
|
16
|
+
*/
|
|
17
|
+
export declare const aliases: {
|
|
18
|
+
/** @deprecated Use `body-md`. */
|
|
19
|
+
readonly normal: "body-md";
|
|
20
|
+
/** @deprecated Use `display-lg` with `emphasized`. */
|
|
21
|
+
readonly 'huge-larger': "display-lg-em";
|
|
22
|
+
/** @deprecated Use `display-lg` with `emphasized`. */
|
|
23
|
+
readonly 'huge-large': "display-lg-em";
|
|
24
|
+
/** @deprecated Use `display-md` with `emphasized`. */
|
|
25
|
+
readonly 'huge-medium': "display-md-em";
|
|
26
|
+
/** @deprecated Use `display-sm` with `emphasized`. */
|
|
27
|
+
readonly 'huge-small': "display-sm-em";
|
|
28
|
+
/** @deprecated Use `display-sm` with `emphasized`. */
|
|
29
|
+
readonly 'headline-larger': "display-sm-em";
|
|
30
|
+
/** @deprecated Use `headline-lg` with `emphasized`. */
|
|
31
|
+
readonly 'headline-large': "headline-lg-em";
|
|
32
|
+
/** @deprecated Use `headline-md` with `emphasized`. */
|
|
33
|
+
readonly 'headline-medium': "headline-md-em";
|
|
34
|
+
/** @deprecated Use `headline-sm` with `emphasized`. */
|
|
35
|
+
readonly 'headline-small': "headline-sm-em";
|
|
36
|
+
/** @deprecated Use `title-lg` with `emphasized`. */
|
|
37
|
+
readonly 'title-large': "title-lg-em";
|
|
38
|
+
/** @deprecated Use `title-md` with `emphasized`. */
|
|
39
|
+
readonly 'title-medium': "title-md-em";
|
|
40
|
+
/** @deprecated Use `title-sm` with `emphasized`. */
|
|
41
|
+
readonly 'title-small': "title-sm-em";
|
|
42
|
+
/** @deprecated Use `body-md`. */
|
|
43
|
+
readonly 'body-medium': "body-md";
|
|
44
|
+
/** @deprecated Use `body-sm`. */
|
|
45
|
+
readonly 'body-small': "body-sm";
|
|
46
|
+
/** @deprecated Use `label-sm` with `tone="muted"`. */
|
|
47
|
+
readonly caption: "label-sm";
|
|
48
|
+
};
|
|
49
|
+
export declare const typographyVariants: (props?: ({
|
|
50
|
+
variant?: "caption" | "normal" | "display-lg" | "display-md" | "display-sm" | "headline-lg" | "headline-md" | "headline-sm" | "title-lg" | "title-md" | "title-sm" | "body-lg" | "body-md" | "body-sm" | "label-lg" | "label-md" | "label-sm" | "huge-larger" | "huge-large" | "huge-medium" | "huge-small" | "headline-larger" | "headline-large" | "headline-medium" | "headline-small" | "title-large" | "title-medium" | "title-small" | "body-medium" | "body-small" | null | undefined;
|
|
51
|
+
emphasized?: boolean | null | undefined;
|
|
52
|
+
tone?: "primary" | "error" | "default" | "muted" | null | undefined;
|
|
53
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
54
|
+
export type TypographyVariantProps = VariantProps<typeof typographyVariants>;
|
|
55
|
+
export {};
|
|
@@ -52,13 +52,13 @@ export declare function useChoiceGroupField(props: ChoiceGroupBase<HTMLButtonEle
|
|
|
52
52
|
name: string | undefined;
|
|
53
53
|
dom: {
|
|
54
54
|
id?: string;
|
|
55
|
+
title?: string | undefined | undefined;
|
|
55
56
|
content?: string | undefined | undefined;
|
|
56
57
|
translate?: "yes" | "no" | undefined | undefined;
|
|
57
58
|
color?: string | undefined | undefined;
|
|
58
59
|
prefix?: string | undefined | undefined;
|
|
59
60
|
slot?: string | undefined | undefined;
|
|
60
61
|
style?: import('react').CSSProperties | undefined;
|
|
61
|
-
title?: string | undefined | undefined;
|
|
62
62
|
key?: import('react').Key | null | undefined;
|
|
63
63
|
defaultChecked?: boolean | undefined | undefined;
|
|
64
64
|
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
@@ -329,13 +329,13 @@ export declare function useChoiceGroupField(props: ChoiceGroupBase<HTMLButtonEle
|
|
|
329
329
|
onTransitionStartCapture?: import('react').TransitionEventHandler<HTMLDivElement> | undefined;
|
|
330
330
|
} | {
|
|
331
331
|
id?: string;
|
|
332
|
+
title?: string | undefined | undefined;
|
|
332
333
|
content?: string | undefined | undefined;
|
|
333
334
|
translate?: "yes" | "no" | undefined | undefined;
|
|
334
335
|
color?: string | undefined | undefined;
|
|
335
336
|
prefix?: string | undefined | undefined;
|
|
336
337
|
slot?: string | undefined | undefined;
|
|
337
338
|
style?: import('react').CSSProperties | undefined;
|
|
338
|
-
title?: string | undefined | undefined;
|
|
339
339
|
key?: import('react').Key | null | undefined;
|
|
340
340
|
defaultChecked?: boolean | undefined | undefined;
|
|
341
341
|
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ShapeTone } from './display/shape/shape-tones.js';
|
|
2
2
|
/**
|
|
3
3
|
* The tones an application adds to the eight of the library, for the
|
|
4
|
-
* components that take a `tone` (`Shape`, `Avatar`, `StatCard`, the metric
|
|
4
|
+
* components that take a `tone` (`Shape`, `Avatar`, `Badge`, `StatCard`, the metric
|
|
5
5
|
* cards, `Sparkline`, `Fab`). An app names its own in the interface and draws it in CSS, with no `style`:
|
|
6
6
|
*
|
|
7
7
|
* ```ts
|