@galaxy-io/dls 2.7.0 → 2.8.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/dist/brand/GalaxyAlchemyWordmark.d.ts +31 -0
- package/dist/brand/GalaxyAlchemyWordmark.js +38 -0
- package/dist/brand/brandMark.js +3 -2
- package/dist/brand/internal/svg/GalaxyAlchemyWordmarkSvg.d.ts +13 -0
- package/dist/brand/internal/svg/GalaxyAlchemyWordmarkSvg.js +29 -0
- package/dist/charts/BarChart.js +1 -1
- package/dist/charts/BigNumber.d.ts +66 -0
- package/dist/charts/{StatChart.js → BigNumber.js} +57 -20
- package/dist/charts/BigNumberGroup.d.ts +51 -0
- package/dist/charts/BigNumberGroup.js +112 -0
- package/dist/charts/ChartCategoryTargets.js +1 -1
- package/dist/charts/ChartFrame.js +14 -15
- package/dist/charts/ChartPrimitives.d.ts +5 -0
- package/dist/charts/ChartPrimitives.js +22 -17
- package/dist/charts/Heatmap.js +2 -2
- package/dist/charts/LineChart.js +1 -1
- package/dist/charts/PieChart.js +10 -4
- package/dist/charts/Sparkline.js +1 -1
- package/dist/charts/types.d.ts +1 -1
- package/dist/charts/useChartInteraction.js +0 -2
- package/dist/inputs/PasswordInput.d.ts +1 -1
- package/dist/styles.css +1 -1
- package/package.json +13 -5
- package/dist/charts/StatChart.d.ts +0 -48
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties } from "react";
|
|
2
|
+
export interface GalaxyAlchemyWordmarkProps extends AriaAttributes {
|
|
3
|
+
/**
|
|
4
|
+
* Height of the wordmark in px, descender included. The width follows the aspect ratio
|
|
5
|
+
* (≈ 2.77 × height).
|
|
6
|
+
* @default 20
|
|
7
|
+
*/
|
|
8
|
+
size?: number;
|
|
9
|
+
/**
|
|
10
|
+
* For a wordmark on an inverted fill (`text.primary`): paints `background.base`.
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
isInverse?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Accessible name. Pass `""` to make it decorative (`aria-hidden`) when the name is already in
|
|
16
|
+
* the surrounding text.
|
|
17
|
+
* @default Alchemy
|
|
18
|
+
*/
|
|
19
|
+
ariaLabel?: string;
|
|
20
|
+
/** DOM id on the `<svg>`. */
|
|
21
|
+
id?: string;
|
|
22
|
+
/** Any `data-*` attribute, forwarded to the `<svg>`. */
|
|
23
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
24
|
+
/** Extra class on the `<svg>`. */
|
|
25
|
+
className?: string;
|
|
26
|
+
/** Inline style on the `<svg>`. */
|
|
27
|
+
style?: CSSProperties;
|
|
28
|
+
}
|
|
29
|
+
/** Alchemy's product wordmark, painted `text.primary`. Labelled "Alchemy" unless `ariaLabel=""`. */
|
|
30
|
+
declare const GalaxyAlchemyWordmark: import("react").ForwardRefExoticComponent<GalaxyAlchemyWordmarkProps & import("react").RefAttributes<SVGSVGElement>>;
|
|
31
|
+
export default GalaxyAlchemyWordmark;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BRAND_MARK_INVERSE_CSS, BRAND_MARK_NEUTRAL_CSS, BRAND_MARK_SVG_CSS, brandMarkAriaProps } from "./brandMark.js";
|
|
2
|
+
import GalaxyAlchemyWordmarkSvg, { GALAXY_ALCHEMY_WORDMARK_VIEW_BOX } from "./internal/svg/GalaxyAlchemyWordmarkSvg.js";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { cx } from "@linaria/core";
|
|
6
|
+
//#region src/brand/GalaxyAlchemyWordmark.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Alchemy's product wordmark: the word "alchemy" in a heavy connected script, as one inline SVG.
|
|
9
|
+
* It behaves exactly like `GalaxyWordmark`: it paints `text.primary`, reads only CSS variables,
|
|
10
|
+
* and is SSR-safe.
|
|
11
|
+
*
|
|
12
|
+
* The artwork is `src/brand/assets/galaxy-alchemy-wordmark.svg`, compiled by `pnpm assets` into
|
|
13
|
+
* the private `GalaxyAlchemyWordmarkSvg`; the aspect ratio comes from its
|
|
14
|
+
* `GALAXY_ALCHEMY_WORDMARK_VIEW_BOX`.
|
|
15
|
+
*/
|
|
16
|
+
/** Width ÷ height of the artwork, from its viewBox. */
|
|
17
|
+
var GALAXY_ALCHEMY_WORDMARK_ASPECT_RATIO = GALAXY_ALCHEMY_WORDMARK_VIEW_BOX.width / GALAXY_ALCHEMY_WORDMARK_VIEW_BOX.height;
|
|
18
|
+
/** Alchemy's product wordmark, painted `text.primary`. Labelled "Alchemy" unless `ariaLabel=""`. */
|
|
19
|
+
var GalaxyAlchemyWordmark = forwardRef(function GalaxyAlchemyWordmark({ size = 20, isInverse = false, ariaLabel = "Alchemy", id, className, style, ...rest }, ref) {
|
|
20
|
+
const aria = brandMarkAriaProps(ariaLabel);
|
|
21
|
+
return /* @__PURE__ */ jsx(GalaxyAlchemyWordmarkSvg, {
|
|
22
|
+
ref,
|
|
23
|
+
id,
|
|
24
|
+
role: aria.role,
|
|
25
|
+
"aria-label": aria["aria-label"],
|
|
26
|
+
"aria-hidden": aria["aria-hidden"],
|
|
27
|
+
...rest,
|
|
28
|
+
width: size * GALAXY_ALCHEMY_WORDMARK_ASPECT_RATIO,
|
|
29
|
+
height: size,
|
|
30
|
+
fill: "currentColor",
|
|
31
|
+
focusable: "false",
|
|
32
|
+
className: cx(BRAND_MARK_SVG_CSS, isInverse ? BRAND_MARK_INVERSE_CSS : BRAND_MARK_NEUTRAL_CSS, className),
|
|
33
|
+
style
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
GalaxyAlchemyWordmark.displayName = "GalaxyAlchemyWordmark";
|
|
37
|
+
//#endregion
|
|
38
|
+
export { GalaxyAlchemyWordmark as default };
|
package/dist/brand/brandMark.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/brand/brandMark.ts
|
|
3
3
|
/**
|
|
4
|
-
* @internal Shared by the
|
|
5
|
-
* `GalaxyFilamentWordmark`, `
|
|
4
|
+
* @internal Shared by the six brand components (`GalaxyLogomark`, `GalaxyWordmark`,
|
|
5
|
+
* `GalaxyFilamentWordmark`, `GalaxyAlchemyWordmark`, `GalaxyLogomarkAnimation`,
|
|
6
|
+
* `GalaxyLogomark3D`); not documented API.
|
|
6
7
|
*
|
|
7
8
|
* The marks are one inline SVG painted with `fill="currentColor"`, so their color is CSS: exactly
|
|
8
9
|
* one of the color classes below sets `color` on the mark. One class never overrides another, so
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Generated by `pnpm assets` from `src/brand/assets/galaxy-alchemy-wordmark.svg`.
|
|
3
|
+
* Do not edit: change the SVG and run `pnpm assets`. Every fill is `currentColor` and the
|
|
4
|
+
* root has no size; the public mark that renders this sets both.
|
|
5
|
+
*/
|
|
6
|
+
import { type SVGProps } from "react";
|
|
7
|
+
declare const GalaxyAlchemyWordmarkSvg: import("react").ForwardRefExoticComponent<Omit<SVGProps<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
8
|
+
export default GalaxyAlchemyWordmarkSvg;
|
|
9
|
+
/** @internal The artwork's viewBox; the public mark derives its width as `size × width / height`. */
|
|
10
|
+
export declare const GALAXY_ALCHEMY_WORDMARK_VIEW_BOX: {
|
|
11
|
+
readonly width: 697;
|
|
12
|
+
readonly height: 252;
|
|
13
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/brand/internal/svg/GalaxyAlchemyWordmarkSvg.tsx
|
|
4
|
+
/**
|
|
5
|
+
* @internal Generated by `pnpm assets` from `src/brand/assets/galaxy-alchemy-wordmark.svg`.
|
|
6
|
+
* Do not edit: change the SVG and run `pnpm assets`. Every fill is `currentColor` and the
|
|
7
|
+
* root has no size; the public mark that renders this sets both.
|
|
8
|
+
*/
|
|
9
|
+
var GalaxyAlchemyWordmarkSvg = forwardRef(function GalaxyAlchemyWordmarkSvg(props, ref) {
|
|
10
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
11
|
+
viewBox: "0 0 697 252",
|
|
12
|
+
fill: "currentColor",
|
|
13
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
14
|
+
ref,
|
|
15
|
+
...props,
|
|
16
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
17
|
+
d: "M46.56 188.16C-1.52588e-05 184.08 16.8 64.5601 70.56 77.28C75.6 78.48 81.36 83.04 84.24 91.92C93.12 67.92 122.16 72.96 126.24 82.8C115.92 94.8 115.2 124.56 116.4 138C118.32 157.2 128.64 142.8 132.96 117.36C133.68 113.52 143.28 114.48 142.32 119.28C136.8 147.36 130.8 187.92 109.68 187.92C82.8 187.92 83.52 152.16 83.52 140.88C83.52 139.92 82.08 139.92 82.08 140.88C78.96 158.16 72.96 190.56 46.56 188.16ZM71.76 93.6C61.2 94.3199 52.32 140.16 58.56 145.44C66 151.44 79.2 92.88 71.76 93.6ZM198.219 37.2C170.859 38.64 167.259 107.28 169.419 138C170.859 157.2 179.259 142.8 183.099 117.36C183.579 113.52 194.139 114.48 193.179 119.28C188.139 147.36 186.699 186.72 162.219 187.92C135.099 189.36 129.819 150.48 130.539 111.12C131.019 78.48 134.619 45.84 139.419 33.84C151.179 3.35999 196.539 8.40002 198.219 37.2ZM213.855 186.96C190.335 183.84 177.135 156.24 179.055 129.36C180.975 103.2 197.775 77.76 224.655 75.6C254.175 73.4399 260.895 101.28 257.055 114.96C250.095 139.92 218.655 135.6 222.015 110.16C223.215 101.52 229.935 95.28 236.895 96.72C235.935 90.24 229.455 91.2 226.575 93.36C211.695 104.16 214.335 138.72 230.175 143.04C246.975 147.36 260.175 126.24 261.855 117.6C262.575 113.52 271.935 115.44 271.215 119.52C267.615 137.04 253.455 192.48 213.855 186.96ZM325.474 38.16C304.834 43.4401 297.154 71.76 294.514 104.16C294.274 104.64 294.994 104.88 295.234 104.16C303.154 83.04 315.634 74.88 329.074 76.5601C342.994 78.24 351.634 87.12 353.314 98.16C355.954 118.8 345.394 146.64 353.554 148.32C357.634 149.04 363.394 135.36 366.514 117.36C367.234 113.52 376.834 114.48 375.874 119.28C370.354 147.36 362.434 186.96 340.114 187.92C288.994 190.32 323.074 103.92 317.794 100.32C307.714 93.12 298.834 148.08 302.914 177.36C304.834 192.72 263.314 194.88 262.354 180C260.434 149.28 256.114 71.28 267.154 36.96C279.394 0 326.674 7.91998 325.474 38.16ZM401.691 188.16C374.811 187.2 360.891 155.52 362.811 127.68C364.731 101.04 380.811 75.6 406.971 75.36C424.491 75.12 440.091 88.5601 434.571 114.48C430.011 137.52 410.571 144.96 402.411 132.72C401.931 132 401.211 131.28 401.451 132.24C401.691 142.56 410.811 149.76 418.251 149.28C429.051 148.56 436.731 135.84 440.331 117.84C441.051 114.72 449.211 115.92 448.731 119.28C446.091 144.24 435.291 189.6 401.691 188.16ZM412.011 91.2C405.771 94.08 400.971 116.16 403.611 118.56C409.371 123.6 420.651 86.88 412.011 91.2ZM473.587 104.16C481.267 81.6 493.987 76.08 507.427 76.5601C519.667 76.8 527.587 84.72 530.707 93.6C544.148 67.6801 580.388 73.4399 583.747 98.16C586.388 118.8 575.828 146.64 584.227 148.32C588.068 149.04 593.828 135.36 596.948 117.36C597.667 113.52 607.268 114.48 606.307 119.28C600.787 147.36 593.107 186.96 570.547 187.92C519.427 190.32 553.508 103.92 548.227 100.32C538.147 93.12 528.787 140.64 534.547 175.92C536.707 190.56 494.227 196.32 492.547 177.36C488.707 130.32 502.387 104.4 497.107 101.52C486.547 95.04 475.027 141.36 480.547 176.64C483.188 192 444.067 195.6 440.707 180.96C437.347 164.64 435.667 119.52 441.427 84.96C442.147 70.8 477.908 72 475.987 89.28C475.027 94.8 473.347 97.92 472.867 104.16C472.867 104.64 473.587 104.88 473.587 104.16ZM694.247 82.8C667.847 100.8 696.887 160.08 686.567 208.32C681.287 232.56 659.447 251.76 633.287 247.68C613.367 244.56 597.527 224.64 603.527 200.88C611.207 213.12 629.927 215.76 640.487 201.36C650.327 187.92 655.847 160.32 651.767 137.28C651.527 136.56 650.327 136.8 650.087 137.52C647.927 155.28 640.967 190.56 614.327 188.16C578.807 185.04 588.407 122.4 604.967 80.64C609.767 68.4 642.887 74.88 635.927 91.4399C627.527 111.36 621.047 140.88 626.567 145.44C628.967 147.36 631.847 142.32 634.727 134.88C642.167 114.24 642.887 77.52 670.727 74.16C680.807 72.72 691.367 75.84 694.247 82.8Z",
|
|
18
|
+
fill: "currentColor"
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
GalaxyAlchemyWordmarkSvg.displayName = "GalaxyAlchemyWordmarkSvg";
|
|
23
|
+
/** @internal The artwork's viewBox; the public mark derives its width as `size × width / height`. */
|
|
24
|
+
var GALAXY_ALCHEMY_WORDMARK_VIEW_BOX = {
|
|
25
|
+
width: 697,
|
|
26
|
+
height: 252
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { GALAXY_ALCHEMY_WORDMARK_VIEW_BOX, GalaxyAlchemyWordmarkSvg as default };
|
package/dist/charts/BarChart.js
CHANGED
|
@@ -274,7 +274,7 @@ function BarChartInner(props, ref) {
|
|
|
274
274
|
y: activeBand.y,
|
|
275
275
|
width: activeBand.width,
|
|
276
276
|
height: activeBand.height,
|
|
277
|
-
className: "gx-ChartPrimitives-CHART_CURSOR_BAND_CSS-
|
|
277
|
+
className: "gx-ChartPrimitives-CHART_CURSOR_BAND_CSS-cz6jod1"
|
|
278
278
|
}),
|
|
279
279
|
geometry.rects.map((rect) => /* @__PURE__ */ jsx("path", {
|
|
280
280
|
d: roundedRectPath(rect.x, rect.y, rect.width, rect.height, rect.radius, rect.corners),
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
/** Tile fill (Constitution V surface set: containers). */
|
|
3
|
+
export declare enum BigNumberVariant {
|
|
4
|
+
/** The canvas fill, `background.base`. */
|
|
5
|
+
BASE = "BASE",
|
|
6
|
+
/** A panel fill, `background.primary`. The default (1.x). */
|
|
7
|
+
PRIMARY = "PRIMARY",
|
|
8
|
+
/** A raised fill, `background.secondary`. */
|
|
9
|
+
SECONDARY = "SECONDARY",
|
|
10
|
+
/** The most elevated fill, `background.tertiary`. */
|
|
11
|
+
TERTIARY = "TERTIARY"
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Which slot of a `BigNumberGroup` a tile sits in.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare enum BigNumberGroupSlot {
|
|
18
|
+
/** The lead tiles on the left, on the frame's own surface: no fill, no border. */
|
|
19
|
+
PRIMARY = "PRIMARY",
|
|
20
|
+
/** The scrolling strip on the right: bordered by default, the tile's own fill. */
|
|
21
|
+
SECONDARY = "SECONDARY"
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The slot a tile renders in; `null` outside a `BigNumberGroup`. Set by `BigNumberGroup` around
|
|
25
|
+
* each of its two slots.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare const BigNumberGroupContext: import("react").Context<BigNumberGroupSlot | null>;
|
|
29
|
+
export interface BigNumberProps extends AriaAttributes {
|
|
30
|
+
/** What the number means. Small, tertiary, one line above the value. */
|
|
31
|
+
label: string;
|
|
32
|
+
/** The headline figure. A string or number renders as `body_lg` medium with tabular numerals; pass a node for a value with a unit or a custom treatment. */
|
|
33
|
+
value: ReactNode;
|
|
34
|
+
/** One short line under the value: the comparison or context ("+4% vs last week"). */
|
|
35
|
+
description?: string;
|
|
36
|
+
/** Pinned 8px after the number, vertically centered, however wide the tile: a status `Square`, a small `Icon`, a unit. */
|
|
37
|
+
suffix?: ReactNode;
|
|
38
|
+
/** At the far end of the value row, vertically centered: a `Sparkline`, a `Chip`, a delta. */
|
|
39
|
+
trailing?: ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* Surface fill of the tile. Ignored in a `BigNumberGroup`'s primary slot, which draws no fill.
|
|
42
|
+
* @default BigNumberVariant.PRIMARY
|
|
43
|
+
*/
|
|
44
|
+
variant?: BigNumberVariant;
|
|
45
|
+
/**
|
|
46
|
+
* Adds the 1px hairline. Use it for tiles on a page; leave it off inside an already-bordered container. In a `BigNumberGroup`'s strip it defaults to `true`.
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
hasBorder?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Replaces `value` with a `Skeleton` line and hides `description`, `suffix` and `trailing`; the label stays. Sets `aria-busy`.
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
isLoading?: boolean;
|
|
55
|
+
/** DOM id on the root. */
|
|
56
|
+
id?: string;
|
|
57
|
+
/** Any `data-*` attribute, forwarded to the root. */
|
|
58
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
59
|
+
/** Extra class on the root. */
|
|
60
|
+
className?: string;
|
|
61
|
+
/** Inline style on the root; only for setting CSS custom properties. */
|
|
62
|
+
style?: CSSProperties;
|
|
63
|
+
}
|
|
64
|
+
/** A KPI tile: label, headline value, optional description, suffix mark and trailing trend. */
|
|
65
|
+
declare const BigNumber: import("react").ForwardRefExoticComponent<BigNumberProps & import("react").RefAttributes<HTMLElement>>;
|
|
66
|
+
export default BigNumber;
|
|
@@ -5,41 +5,64 @@ import Flex, { AlignItems, FlexDirection } from "../layout/Flex.js";
|
|
|
5
5
|
import Box, { BoxVariant } from "../layout/Box.js";
|
|
6
6
|
import FlexItem from "../layout/FlexItem.js";
|
|
7
7
|
/* empty css */
|
|
8
|
-
import { forwardRef } from "react";
|
|
8
|
+
import { createContext, forwardRef, useContext } from "react";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { cx } from "@linaria/core";
|
|
11
|
-
//#region src/charts/
|
|
11
|
+
//#region src/charts/BigNumber.tsx
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* BigNumber is the KPI tile: one number with its label, on a quiet surface, sized so a row of them
|
|
14
14
|
* lines up. A `label` ("Active users"), a `value` ("1,284"), an optional `description` under the
|
|
15
|
-
* value ("+4% vs last week")
|
|
15
|
+
* value ("+4% vs last week"), an optional `suffix` pinned 8px after the number (a status `Square`,
|
|
16
|
+
* a small `Icon`, a unit) and an optional `trailing` slot at the far end of the value row for a
|
|
16
17
|
* `Sparkline` or a `Chip`. The tile is a `Box`: `variant` picks its surface step and `hasBorder`
|
|
17
18
|
* adds the hairline. `isLoading` swaps the value for a `Skeleton` line of the same height.
|
|
18
19
|
*
|
|
20
|
+
* Inside a `BigNumberGroup` the tile takes its slot's defaults through `BigNumberGroupContext`: in
|
|
21
|
+
* the primary slot no fill and no border (the frame's own surface), in the strip a hairline. An
|
|
22
|
+
* explicit `hasBorder` always wins.
|
|
23
|
+
*
|
|
19
24
|
* It draws no chart itself and imports no chart code (no d3). It is not a card with a header and
|
|
20
|
-
* actions (`Widget`) and not a list of label/value pairs (`DescriptionList`).
|
|
25
|
+
* actions (`Widget`) and not a list of label/value pairs (`DescriptionList`). Renamed from 1.x
|
|
26
|
+
* `StatChart`.
|
|
21
27
|
*/
|
|
22
28
|
/** Tile fill (Constitution V surface set: containers). */
|
|
23
|
-
var
|
|
29
|
+
var BigNumberVariant = /* @__PURE__ */ function(BigNumberVariant) {
|
|
24
30
|
/** The canvas fill, `background.base`. */
|
|
25
|
-
|
|
31
|
+
BigNumberVariant["BASE"] = "BASE";
|
|
26
32
|
/** A panel fill, `background.primary`. The default (1.x). */
|
|
27
|
-
|
|
33
|
+
BigNumberVariant["PRIMARY"] = "PRIMARY";
|
|
28
34
|
/** A raised fill, `background.secondary`. */
|
|
29
|
-
|
|
35
|
+
BigNumberVariant["SECONDARY"] = "SECONDARY";
|
|
30
36
|
/** The most elevated fill, `background.tertiary`. */
|
|
31
|
-
|
|
32
|
-
return
|
|
37
|
+
BigNumberVariant["TERTIARY"] = "TERTIARY";
|
|
38
|
+
return BigNumberVariant;
|
|
39
|
+
}({});
|
|
40
|
+
/**
|
|
41
|
+
* Which slot of a `BigNumberGroup` a tile sits in.
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
var BigNumberGroupSlot = /* @__PURE__ */ function(BigNumberGroupSlot) {
|
|
45
|
+
/** The lead tiles on the left, on the frame's own surface: no fill, no border. */
|
|
46
|
+
BigNumberGroupSlot["PRIMARY"] = "PRIMARY";
|
|
47
|
+
/** The scrolling strip on the right: bordered by default, the tile's own fill. */
|
|
48
|
+
BigNumberGroupSlot["SECONDARY"] = "SECONDARY";
|
|
49
|
+
return BigNumberGroupSlot;
|
|
33
50
|
}({});
|
|
51
|
+
/**
|
|
52
|
+
* The slot a tile renders in; `null` outside a `BigNumberGroup`. Set by `BigNumberGroup` around
|
|
53
|
+
* each of its two slots.
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
var BigNumberGroupContext = createContext(null);
|
|
34
57
|
/** Identity by member name: `Box` owns the fill and the hairline. */
|
|
35
|
-
var
|
|
58
|
+
var BIG_NUMBER_VARIANT_TO_BOX_VARIANT_MAP = {
|
|
36
59
|
["BASE"]: BoxVariant.BASE,
|
|
37
60
|
["PRIMARY"]: BoxVariant.PRIMARY,
|
|
38
61
|
["SECONDARY"]: BoxVariant.SECONDARY,
|
|
39
62
|
["TERTIARY"]: BoxVariant.TERTIARY
|
|
40
63
|
};
|
|
41
64
|
/** Tiles in a `Flex` row keep their width; in a `Grid` they stretch to the track (1.x). */
|
|
42
|
-
var ROOT_CSS = "gx-
|
|
65
|
+
var ROOT_CSS = "gx-BigNumber-ROOT_CSS-r1lifffw";
|
|
43
66
|
/** A string or number as the headline figure; a node as given. */
|
|
44
67
|
function renderValue(value) {
|
|
45
68
|
if (typeof value === "string" || typeof value === "number") return /* @__PURE__ */ jsx(Text, {
|
|
@@ -51,15 +74,17 @@ function renderValue(value) {
|
|
|
51
74
|
});
|
|
52
75
|
return value;
|
|
53
76
|
}
|
|
54
|
-
/** A KPI tile: label, headline value, optional description and trailing trend. */
|
|
55
|
-
var
|
|
77
|
+
/** A KPI tile: label, headline value, optional description, suffix mark and trailing trend. */
|
|
78
|
+
var BigNumber = forwardRef(function BigNumber({ label, value, description, suffix, trailing, variant = "PRIMARY", hasBorder, isLoading = false, id, className, style, ...rest }, ref) {
|
|
79
|
+
const slot = useContext(BigNumberGroupContext);
|
|
80
|
+
const isPrimarySlot = slot === "PRIMARY";
|
|
56
81
|
return /* @__PURE__ */ jsx(Box, {
|
|
57
82
|
...rest,
|
|
58
83
|
...isLoading ? { "aria-busy": true } : {},
|
|
59
84
|
ref,
|
|
60
85
|
...id === void 0 ? {} : { id },
|
|
61
|
-
variant:
|
|
62
|
-
hasBorder,
|
|
86
|
+
...isPrimarySlot ? {} : { variant: BIG_NUMBER_VARIANT_TO_BOX_VARIANT_MAP[variant] },
|
|
87
|
+
hasBorder: hasBorder ?? slot === "SECONDARY",
|
|
63
88
|
radius: Radius.LG,
|
|
64
89
|
padding: [12, 16],
|
|
65
90
|
minWidth: 140,
|
|
@@ -88,7 +113,19 @@ var StatChart = forwardRef(function StatChart({ label, value, description, trail
|
|
|
88
113
|
children: [/* @__PURE__ */ jsx(FlexItem, {
|
|
89
114
|
grow: 1,
|
|
90
115
|
minWidth: 0,
|
|
91
|
-
children: renderValue(value)
|
|
116
|
+
children: suffix === void 0 || suffix === null || suffix === false ? renderValue(value) : /* @__PURE__ */ jsxs(Flex, {
|
|
117
|
+
alignItems: AlignItems.CENTER,
|
|
118
|
+
gap: 8,
|
|
119
|
+
minWidth: 0,
|
|
120
|
+
children: [/* @__PURE__ */ jsx(FlexItem, {
|
|
121
|
+
minWidth: 0,
|
|
122
|
+
children: renderValue(value)
|
|
123
|
+
}), /* @__PURE__ */ jsx(Flex, {
|
|
124
|
+
alignItems: AlignItems.CENTER,
|
|
125
|
+
shrink: 0,
|
|
126
|
+
children: suffix
|
|
127
|
+
})]
|
|
128
|
+
})
|
|
92
129
|
}), trailing]
|
|
93
130
|
}), description ? /* @__PURE__ */ jsx(Text, {
|
|
94
131
|
size: TextSize.BODY_SM,
|
|
@@ -100,6 +137,6 @@ var StatChart = forwardRef(function StatChart({ label, value, description, trail
|
|
|
100
137
|
})
|
|
101
138
|
});
|
|
102
139
|
});
|
|
103
|
-
|
|
140
|
+
BigNumber.displayName = "BigNumber";
|
|
104
141
|
//#endregion
|
|
105
|
-
export {
|
|
142
|
+
export { BigNumberGroupContext, BigNumberGroupSlot, BigNumberVariant, BigNumber as default };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
/** Frame fill (surface set: containers). Leave `variant` unset for no fill. */
|
|
3
|
+
export declare enum BigNumberGroupVariant {
|
|
4
|
+
/** The canvas fill, `background.base`. */
|
|
5
|
+
BASE = "BASE",
|
|
6
|
+
/** A panel fill, `background.primary`. */
|
|
7
|
+
PRIMARY = "PRIMARY",
|
|
8
|
+
/** A raised fill, `background.secondary`. */
|
|
9
|
+
SECONDARY = "SECONDARY",
|
|
10
|
+
/** The most elevated fill, `background.tertiary`. */
|
|
11
|
+
TERTIARY = "TERTIARY"
|
|
12
|
+
}
|
|
13
|
+
export interface BigNumberGroupProps extends AriaAttributes {
|
|
14
|
+
/** The strip's `BigNumber` tiles, right of `primary`. Bordered by default; each keeps its own `variant`. */
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
/** One or more lead `BigNumber` tiles on the left, on the frame's own surface with no fill and no border. */
|
|
17
|
+
primary?: ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Surface fill of the frame. Unset draws no fill: the parent shows through.
|
|
20
|
+
* @default undefined (no fill)
|
|
21
|
+
*/
|
|
22
|
+
variant?: BigNumberGroupVariant;
|
|
23
|
+
/**
|
|
24
|
+
* Adds the 1px hairline around the frame. Leave it off inside an already-bordered container (a `Widget`).
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
hasBorder?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Span the parent's width; the primary tiles take the spare width and the strip sits at the far end. Off: the frame hugs its tiles.
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
fillWidth?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Fade the strip toward each edge that has more tiles beyond it.
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
hasFadeEdges?: boolean;
|
|
38
|
+
/** Names the scrolling strip (`role="region"`), announced when it takes focus. */
|
|
39
|
+
ariaLabel?: string;
|
|
40
|
+
/** DOM id on the root. */
|
|
41
|
+
id?: string;
|
|
42
|
+
/** Any `data-*` attribute, forwarded to the root. */
|
|
43
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
44
|
+
/** Extra class on the root. */
|
|
45
|
+
className?: string;
|
|
46
|
+
/** Inline style on the root; only for setting CSS custom properties. */
|
|
47
|
+
style?: CSSProperties;
|
|
48
|
+
}
|
|
49
|
+
/** A row of KPI tiles: lead tiles on the left, a sideways-scrolling strip of the rest on the right. */
|
|
50
|
+
declare const BigNumberGroup: import("react").ForwardRefExoticComponent<BigNumberGroupProps & import("react").RefAttributes<HTMLElement>>;
|
|
51
|
+
export default BigNumberGroup;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Radius } from "../theme/enums.js";
|
|
2
|
+
import Flex, { AlignItems } from "../layout/Flex.js";
|
|
3
|
+
import Box, { BoxVariant } from "../layout/Box.js";
|
|
4
|
+
import ScrollArea from "../layout/ScrollArea.js";
|
|
5
|
+
import FlexItem from "../layout/FlexItem.js";
|
|
6
|
+
import { BigNumberGroupContext, BigNumberGroupSlot } from "./BigNumber.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { forwardRef } from "react";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { cx } from "@linaria/core";
|
|
11
|
+
//#region src/charts/BigNumberGroup.tsx
|
|
12
|
+
/**
|
|
13
|
+
* BigNumberGroup is a row of `BigNumber` tiles in one frame: the lead figure on the left and the
|
|
14
|
+
* breakdown in a strip on the right that scrolls sideways when the row is wider than its parent
|
|
15
|
+
* (the Filament observability summary). `primary` holds one or more tiles on the frame's own
|
|
16
|
+
* surface, borderless; `children` are the strip's tiles, bordered by default and filled with
|
|
17
|
+
* whatever `variant` each was given (`TERTIARY` reads raised). The slots set those defaults through
|
|
18
|
+
* `BigNumberGroupContext`; an explicit `hasBorder` on a tile always wins.
|
|
19
|
+
*
|
|
20
|
+
* The frame is a `Box` (radius `lg`, overflow hidden): `variant` picks its surface step and
|
|
21
|
+
* `hasBorder` adds the hairline. It hugs its tiles by default, so the strip only scrolls when the
|
|
22
|
+
* parent is narrower than the row; `fillWidth` spans the parent and gives the spare width to the
|
|
23
|
+
* primary tiles, pushing the strip to the far end. `hasFadeEdges` fades the strip toward each edge
|
|
24
|
+
* with more tiles beyond it. An overflowing strip is a tab stop (arrow keys scroll it); a strip
|
|
25
|
+
* that fits is not.
|
|
26
|
+
*
|
|
27
|
+
* Not a grid of equal cards (`Grid` of bordered `BigNumber`s), not a card with a header (`Widget`).
|
|
28
|
+
*/
|
|
29
|
+
/** Frame fill (surface set: containers). Leave `variant` unset for no fill. */
|
|
30
|
+
var BigNumberGroupVariant = /* @__PURE__ */ function(BigNumberGroupVariant) {
|
|
31
|
+
/** The canvas fill, `background.base`. */
|
|
32
|
+
BigNumberGroupVariant["BASE"] = "BASE";
|
|
33
|
+
/** A panel fill, `background.primary`. */
|
|
34
|
+
BigNumberGroupVariant["PRIMARY"] = "PRIMARY";
|
|
35
|
+
/** A raised fill, `background.secondary`. */
|
|
36
|
+
BigNumberGroupVariant["SECONDARY"] = "SECONDARY";
|
|
37
|
+
/** The most elevated fill, `background.tertiary`. */
|
|
38
|
+
BigNumberGroupVariant["TERTIARY"] = "TERTIARY";
|
|
39
|
+
return BigNumberGroupVariant;
|
|
40
|
+
}({});
|
|
41
|
+
/** Identity by member name: `Box` owns the fill and the hairline. */
|
|
42
|
+
var BIG_NUMBER_GROUP_VARIANT_TO_BOX_VARIANT_MAP = {
|
|
43
|
+
["BASE"]: BoxVariant.BASE,
|
|
44
|
+
["PRIMARY"]: BoxVariant.PRIMARY,
|
|
45
|
+
["SECONDARY"]: BoxVariant.SECONDARY,
|
|
46
|
+
["TERTIARY"]: BoxVariant.TERTIARY
|
|
47
|
+
};
|
|
48
|
+
/** Hugging: as wide as the tiles, never wider than the parent (then the strip scrolls). */
|
|
49
|
+
var HUG_CSS = "gx-BigNumberGroup-HUG_CSS-h10zwtj7";
|
|
50
|
+
/** A row of KPI tiles: lead tiles on the left, a sideways-scrolling strip of the rest on the right. */
|
|
51
|
+
var BigNumberGroup = forwardRef(function BigNumberGroup({ children, primary, variant, hasBorder = false, fillWidth = false, hasFadeEdges = false, ariaLabel, id, className, style, ...rest }, ref) {
|
|
52
|
+
const hasPrimary = primary !== void 0 && primary !== null && primary !== false;
|
|
53
|
+
return /* @__PURE__ */ jsx(Box, {
|
|
54
|
+
...rest,
|
|
55
|
+
ref,
|
|
56
|
+
...id === void 0 ? {} : { id },
|
|
57
|
+
...variant === void 0 ? {} : { variant: BIG_NUMBER_GROUP_VARIANT_TO_BOX_VARIANT_MAP[variant] },
|
|
58
|
+
hasBorder,
|
|
59
|
+
radius: Radius.LG,
|
|
60
|
+
overflow: "hidden",
|
|
61
|
+
fillWidth,
|
|
62
|
+
className: cx(!fillWidth && HUG_CSS, className),
|
|
63
|
+
...style === void 0 ? {} : { style },
|
|
64
|
+
children: /* @__PURE__ */ jsxs(Flex, {
|
|
65
|
+
alignItems: AlignItems.CENTER,
|
|
66
|
+
gap: 16,
|
|
67
|
+
padding: [
|
|
68
|
+
0,
|
|
69
|
+
0,
|
|
70
|
+
0,
|
|
71
|
+
12
|
|
72
|
+
],
|
|
73
|
+
children: [hasPrimary ? /* @__PURE__ */ jsx(FlexItem, {
|
|
74
|
+
grow: 1,
|
|
75
|
+
shrink: 0,
|
|
76
|
+
children: /* @__PURE__ */ jsx(Flex, {
|
|
77
|
+
gap: 12,
|
|
78
|
+
padding: [12, 0],
|
|
79
|
+
children: /* @__PURE__ */ jsx(BigNumberGroupContext.Provider, {
|
|
80
|
+
value: BigNumberGroupSlot.PRIMARY,
|
|
81
|
+
children: primary
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
}) : null, /* @__PURE__ */ jsx(FlexItem, {
|
|
85
|
+
grow: 0,
|
|
86
|
+
shrink: 1,
|
|
87
|
+
minWidth: 0,
|
|
88
|
+
children: /* @__PURE__ */ jsx(ScrollArea, {
|
|
89
|
+
canScrollHorizontally: true,
|
|
90
|
+
hasFadeEdges,
|
|
91
|
+
...ariaLabel === void 0 ? {} : { ariaLabel },
|
|
92
|
+
children: /* @__PURE__ */ jsx(Flex, {
|
|
93
|
+
gap: 12,
|
|
94
|
+
padding: [
|
|
95
|
+
12,
|
|
96
|
+
12,
|
|
97
|
+
12,
|
|
98
|
+
0
|
|
99
|
+
],
|
|
100
|
+
children: /* @__PURE__ */ jsx(BigNumberGroupContext.Provider, {
|
|
101
|
+
value: BigNumberGroupSlot.SECONDARY,
|
|
102
|
+
children
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
})]
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
BigNumberGroup.displayName = "BigNumberGroup";
|
|
111
|
+
//#endregion
|
|
112
|
+
export { BigNumberGroupVariant, BigNumberGroup as default };
|
|
@@ -12,7 +12,7 @@ import { cx } from "@linaria/core";
|
|
|
12
12
|
*/
|
|
13
13
|
/** @internal The category hit layer. */
|
|
14
14
|
function ChartCategoryTargets({ targets, onEnter, onLeave, onSelect }) {
|
|
15
|
-
const className = cx(CHART_HIT_TARGET_CSS, onSelect && "gx-ChartPrimitives-CHART_HIT_TARGET_CLICKABLE_CSS-
|
|
15
|
+
const className = cx(CHART_HIT_TARGET_CSS, onSelect && "gx-ChartPrimitives-CHART_HIT_TARGET_CLICKABLE_CSS-c1armna5");
|
|
16
16
|
return /* @__PURE__ */ jsx(Fragment, { children: targets.map((target, index) => {
|
|
17
17
|
const handlers = {
|
|
18
18
|
onMouseEnter: () => onEnter(index),
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import Skeleton, { SkeletonVariant } from "../feedback/Skeleton.js";
|
|
2
1
|
import { ChartKind, ChartLegendPlacement } from "./types.js";
|
|
3
2
|
import { CHART_LEGEND_FILTER_EXTENT, CHART_LEGEND_SIDE_GAP } from "./constants.js";
|
|
4
3
|
import Chip, { ChipSize } from "../chips/Chip.js";
|
|
@@ -18,8 +17,9 @@ import { FunnelSimpleIcon } from "@phosphor-icons/react";
|
|
|
18
17
|
/**
|
|
19
18
|
* @internal The shell every chart renders into: the root (sizing, legend placement, passthrough),
|
|
20
19
|
* the measured plot box (one tab stop when interactive), the SVG and its inset translate, axes,
|
|
21
|
-
* marks, hit targets, the in-chart tooltip, the empty
|
|
22
|
-
* the legend
|
|
20
|
+
* marks, hit targets, the in-chart tooltip, the empty overlay, the loading pulse (the whole plot
|
|
21
|
+
* fades in and out while the legend holds, so a loading chart still reads as a chart), the live
|
|
22
|
+
* region and the legend. On a filterable chart dismissible filter chips follow the legend entries while
|
|
23
23
|
* something is pinned. One pin shows a chip per part ("06:00" and "Failed" for one segment): a
|
|
24
24
|
* chip's × drops that part and keeps the other. Several pins collapse into one "3 filters" chip
|
|
25
25
|
* (the list in its tooltip) whose × clears them all. It knows nothing about scales or geometry: axes and marks arrive as nodes, and every
|
|
@@ -58,8 +58,12 @@ var Overlay = /*#__PURE__*/ styled("div")({
|
|
|
58
58
|
class: "gx-ChartFrame-Overlay-o1itt7vl",
|
|
59
59
|
propsAsIs: false
|
|
60
60
|
});
|
|
61
|
-
/**
|
|
62
|
-
|
|
61
|
+
/**
|
|
62
|
+
* The loading pulse on the plot box: axes, marks and the plot overlay fade together, 1 → 0.25 → 1
|
|
63
|
+
* on the Skeleton's 2.4s curve, while the legend holds. Under `REDUCED_MOTION` the plot rests at
|
|
64
|
+
* half strength instead. The keyframes are global, so the name is `gx-` prefixed.
|
|
65
|
+
*/
|
|
66
|
+
var PLOT_LOADING_CSS = "gx-ChartFrame-PLOT_LOADING_CSS-p1oi7u1q";
|
|
63
67
|
/**
|
|
64
68
|
* A chart's own legend (Heatmap's steps) with the filter chip after it. Both carry the legend's 12px
|
|
65
69
|
* top padding and center on each other, so the chip centers on the legend's text line.
|
|
@@ -209,7 +213,6 @@ function ChartFrame({ rootRef, plotRef, id, className, style, rest, dimensions,
|
|
|
209
213
|
role: "img",
|
|
210
214
|
"aria-label": resolvedAriaLabel
|
|
211
215
|
};
|
|
212
|
-
const isSkeleton = isLoading && isEmpty;
|
|
213
216
|
const isSideLegend = legendPlacement === ChartLegendPlacement.RIGHT;
|
|
214
217
|
const categoryLabel = (key) => formatCategoryKey?.(key) ?? key;
|
|
215
218
|
const seriesLabel = (key) => legendItems.find((item) => item.key === key)?.label ?? key;
|
|
@@ -244,7 +247,7 @@ function ChartFrame({ rootRef, plotRef, id, className, style, rest, dimensions,
|
|
|
244
247
|
tooltip: part.key === "all" ? interaction.selection.map(describePin).join(", ") : "",
|
|
245
248
|
onDismiss: () => handleFilterDismiss(part.rest)
|
|
246
249
|
}, part.key));
|
|
247
|
-
const legendNode = !hasLegend
|
|
250
|
+
const legendNode = !hasLegend ? null : legend ?? /* @__PURE__ */ jsx(ChartLegend, {
|
|
248
251
|
items: legendItems,
|
|
249
252
|
placement: legendPlacement,
|
|
250
253
|
swatch,
|
|
@@ -275,9 +278,9 @@ function ChartFrame({ rootRef, plotRef, id, className, style, rest, dimensions,
|
|
|
275
278
|
...plotAriaRest,
|
|
276
279
|
...plotA11yProps,
|
|
277
280
|
ref: plotRef,
|
|
278
|
-
className: cx(isInteractive && PLOT_INTERACTIVE_CSS, plotClassName),
|
|
281
|
+
className: cx(isInteractive && PLOT_INTERACTIVE_CSS, isLoading && PLOT_LOADING_CSS, plotClassName),
|
|
279
282
|
children: [
|
|
280
|
-
isMeasured &&
|
|
283
|
+
isMeasured && /* @__PURE__ */ jsx(ChartSvg, {
|
|
281
284
|
"aria-hidden": "true",
|
|
282
285
|
width,
|
|
283
286
|
height,
|
|
@@ -303,17 +306,13 @@ function ChartFrame({ rootRef, plotRef, id, className, style, rest, dimensions,
|
|
|
303
306
|
]
|
|
304
307
|
})
|
|
305
308
|
}),
|
|
306
|
-
isMeasured &&
|
|
309
|
+
isMeasured && plotOverlay,
|
|
307
310
|
isMeasured && isEmpty && !isLoading && /* @__PURE__ */ jsx(Overlay, { children: /* @__PURE__ */ jsx(EmptyState, {
|
|
308
311
|
size: EmptyStateSize.SMALL,
|
|
309
312
|
header: placeholder,
|
|
310
313
|
role: "status"
|
|
311
314
|
}) }),
|
|
312
|
-
|
|
313
|
-
variant: SkeletonVariant.RECT,
|
|
314
|
-
className: LOADING_SKELETON_CSS
|
|
315
|
-
}),
|
|
316
|
-
isMeasured && hasTooltip && !isSkeleton && /* @__PURE__ */ jsx(ChartTooltip, {
|
|
315
|
+
isMeasured && hasTooltip && /* @__PURE__ */ jsx(ChartTooltip, {
|
|
317
316
|
model: tooltipModel,
|
|
318
317
|
containerWidth: width,
|
|
319
318
|
containerHeight: height,
|
|
@@ -13,6 +13,11 @@ export declare const CHART_AREA_STACKED_CSS: import("@linaria/core").LinariaClas
|
|
|
13
13
|
export declare const CHART_BAR_CSS: import("@linaria/core").LinariaClassName;
|
|
14
14
|
/** @internal A pie arc. */
|
|
15
15
|
export declare const CHART_ARC_CSS: import("@linaria/core").LinariaClassName;
|
|
16
|
+
/**
|
|
17
|
+
* @internal The track a loading pie with no slices draws at its radii: the grid hairline bent into
|
|
18
|
+
* a ring, so the pulse has the shape of the chart it is about to be.
|
|
19
|
+
*/
|
|
20
|
+
export declare const CHART_PIE_TRACK_CSS: import("@linaria/core").LinariaClassName;
|
|
16
21
|
/** @internal A point dot, haloed by the canvas so it reads over the line. */
|
|
17
22
|
export declare const CHART_POINT_CSS: import("@linaria/core").LinariaClassName;
|
|
18
23
|
/** @internal A filled heatmap cell: its ramp step arrives as `--gx-chart-mark-color`. */
|