@cloudgrid-io/ui 0.32.4 → 0.34.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/README.md +25 -0
- package/dist/badge/css-live.d.ts +7 -4
- package/dist/badge/css-live.d.ts.map +1 -1
- package/dist/badge/css-live.js +9 -6
- package/dist/badge/css-live.js.map +1 -1
- package/dist/badge/css-owner.d.ts.map +1 -1
- package/dist/badge/css-owner.js +11 -2
- package/dist/badge/css-owner.js.map +1 -1
- package/dist/badge/live.d.ts +4 -3
- package/dist/badge/live.d.ts.map +1 -1
- package/dist/badge/live.js +4 -3
- package/dist/badge/live.js.map +1 -1
- package/dist/badge/palette.d.ts +1 -1
- package/dist/badge/palette.d.ts.map +1 -1
- package/dist/badge/palette.js +2 -1
- package/dist/badge/palette.js.map +1 -1
- package/dist/blocks/bar-chart.d.ts +97 -0
- package/dist/blocks/bar-chart.d.ts.map +1 -0
- package/dist/blocks/bar-chart.js +25 -0
- package/dist/blocks/bar-chart.js.map +1 -0
- package/dist/blocks/chart-parts.d.ts +101 -0
- package/dist/blocks/chart-parts.d.ts.map +1 -0
- package/dist/blocks/chart-parts.js +96 -0
- package/dist/blocks/chart-parts.js.map +1 -0
- package/dist/blocks/coming-soon-tag.d.ts +34 -0
- package/dist/blocks/coming-soon-tag.d.ts.map +1 -0
- package/dist/blocks/coming-soon-tag.js +37 -0
- package/dist/blocks/coming-soon-tag.js.map +1 -0
- package/dist/blocks/disabled-button.d.ts +43 -0
- package/dist/blocks/disabled-button.d.ts.map +1 -0
- package/dist/blocks/disabled-button.js +50 -0
- package/dist/blocks/disabled-button.js.map +1 -0
- package/dist/blocks/entity-card.d.ts.map +1 -1
- package/dist/blocks/entity-card.js +3 -1
- package/dist/blocks/entity-card.js.map +1 -1
- package/dist/blocks/full-screen-button.d.ts +9 -0
- package/dist/blocks/full-screen-button.d.ts.map +1 -0
- package/dist/blocks/full-screen-button.js +51 -0
- package/dist/blocks/full-screen-button.js.map +1 -0
- package/dist/blocks/icons.d.ts +30 -0
- package/dist/blocks/icons.d.ts.map +1 -1
- package/dist/blocks/icons.js +30 -0
- package/dist/blocks/icons.js.map +1 -1
- package/dist/blocks/meter.d.ts +57 -0
- package/dist/blocks/meter.d.ts.map +1 -0
- package/dist/blocks/meter.js +19 -0
- package/dist/blocks/meter.js.map +1 -0
- package/dist/blocks/notice.d.ts +87 -0
- package/dist/blocks/notice.d.ts.map +1 -0
- package/dist/blocks/notice.js +26 -0
- package/dist/blocks/notice.js.map +1 -0
- package/dist/blocks/pager.d.ts +76 -0
- package/dist/blocks/pager.d.ts.map +1 -0
- package/dist/blocks/pager.js +86 -0
- package/dist/blocks/pager.js.map +1 -0
- package/dist/blocks/phosphor-marks.d.ts +20 -0
- package/dist/blocks/phosphor-marks.d.ts.map +1 -1
- package/dist/blocks/phosphor-marks.js +30 -0
- package/dist/blocks/phosphor-marks.js.map +1 -1
- package/dist/blocks/ranked-list.d.ts +67 -0
- package/dist/blocks/ranked-list.d.ts.map +1 -0
- package/dist/blocks/ranked-list.js +32 -0
- package/dist/blocks/ranked-list.js.map +1 -0
- package/dist/blocks/side-nav.d.ts.map +1 -1
- package/dist/blocks/side-nav.js +3 -1
- package/dist/blocks/side-nav.js.map +1 -1
- package/dist/blocks/sign-in-options.d.ts.map +1 -1
- package/dist/blocks/sign-in-options.js +3 -1
- package/dist/blocks/sign-in-options.js.map +1 -1
- package/dist/blocks/stacked-bar.d.ts +64 -0
- package/dist/blocks/stacked-bar.d.ts.map +1 -0
- package/dist/blocks/stacked-bar.js +18 -0
- package/dist/blocks/stacked-bar.js.map +1 -0
- package/dist/blocks/stat-tile.d.ts +42 -1
- package/dist/blocks/stat-tile.d.ts.map +1 -1
- package/dist/blocks/stat-tile.js +23 -4
- package/dist/blocks/stat-tile.js.map +1 -1
- package/dist/blocks/tab-bar.d.ts.map +1 -1
- package/dist/blocks/tab-bar.js +3 -1
- package/dist/blocks/tab-bar.js.map +1 -1
- package/dist/blocks/timeline.d.ts +53 -0
- package/dist/blocks/timeline.d.ts.map +1 -0
- package/dist/blocks/timeline.js +18 -0
- package/dist/blocks/timeline.js.map +1 -0
- package/dist/blocks/tool-setup.d.ts.map +1 -1
- package/dist/blocks/tool-setup.js +3 -1
- package/dist/blocks/tool-setup.js.map +1 -1
- package/dist/blocks/trend.d.ts +33 -0
- package/dist/blocks/trend.d.ts.map +1 -0
- package/dist/blocks/trend.js +13 -0
- package/dist/blocks/trend.js.map +1 -0
- package/dist/claim-banner/css.d.ts +39 -0
- package/dist/claim-banner/css.d.ts.map +1 -0
- package/dist/claim-banner/css.js +87 -0
- package/dist/claim-banner/css.js.map +1 -0
- package/dist/claim-banner/index.d.ts +122 -0
- package/dist/claim-banner/index.d.ts.map +1 -0
- package/dist/claim-banner/index.js +135 -0
- package/dist/claim-banner/index.js.map +1 -0
- package/dist/docs.css +466 -0
- package/dist/expressive-code-palette.d.ts +5 -0
- package/dist/expressive-code-palette.d.ts.map +1 -0
- package/dist/expressive-code-palette.js +10 -0
- package/dist/expressive-code-palette.js.map +1 -0
- package/dist/expressive-code.d.ts +57 -0
- package/dist/expressive-code.d.ts.map +1 -0
- package/dist/expressive-code.js +101 -0
- package/dist/expressive-code.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/tokens/base.json +13 -0
- package/dist/tokens/surface-ink.json +13 -0
- package/dist/tokens/surface-panel.json +13 -0
- package/dist/tokens.css +36 -0
- package/dist/tokens.json +6 -3
- package/dist/ui/card.d.ts +23 -2
- package/dist/ui/card.d.ts.map +1 -1
- package/dist/ui/card.js +16 -5
- package/dist/ui/card.js.map +1 -1
- package/dist/ui/drawer.d.ts +37 -6
- package/dist/ui/drawer.d.ts.map +1 -1
- package/dist/ui/drawer.js +31 -7
- package/dist/ui/drawer.js.map +1 -1
- package/dist/ui/input-group.d.ts.map +1 -1
- package/dist/ui/input-group.js +3 -1
- package/dist/ui/input-group.js.map +1 -1
- package/package.json +18 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* People, ranked by a count: an avatar, a name, the count, and a thin meter
|
|
4
|
+
* under the name (#333). "Most used by" on Insights and "Most Active Users" on
|
|
5
|
+
* Overview (Figma "App page: final cut", 01 and 02).
|
|
6
|
+
*
|
|
7
|
+
* ## The rows are the caller's, in the caller's order
|
|
8
|
+
*
|
|
9
|
+
* `items` renders in the order given and is never re-sorted here: the ranking
|
|
10
|
+
* is the server's, and a list that sorted in the browser would hide a server
|
|
11
|
+
* that stopped sorting. Names only. The frames' rule is "no IP addresses", and
|
|
12
|
+
* this block has nowhere to put one.
|
|
13
|
+
*
|
|
14
|
+
* ## Anonymous visitors close the list
|
|
15
|
+
*
|
|
16
|
+
* `anonymous` adds a last row, "Anonymous visitors" by default, with a neutral
|
|
17
|
+
* avatar: the person mark on the hairline grey, since there is no name to derive
|
|
18
|
+
* a colour or initials from. It is last whatever its count, as the frames draw
|
|
19
|
+
* it (9 under a 1): it is not a person and does not rank among them. Leave it
|
|
20
|
+
* out (`undefined`) when the server reports none.
|
|
21
|
+
*
|
|
22
|
+
* ## The meter's scale
|
|
23
|
+
*
|
|
24
|
+
* Each bar is its count over `max`, which defaults to the largest count in the
|
|
25
|
+
* list, anonymous row included, so the longest bar is full and the rest compare
|
|
26
|
+
* against it. Pass `max` for another scale, such as the total.
|
|
27
|
+
*
|
|
28
|
+
* The meters are `aria-hidden`: the count is printed beside the name, and a
|
|
29
|
+
* screen reader hearing "John G, 18, meter, 100%" gets the 18 twice. The list
|
|
30
|
+
* is an `<ol>`, so the rank is read as its position.
|
|
31
|
+
*
|
|
32
|
+
* ## States
|
|
33
|
+
*
|
|
34
|
+
* Empty (no rows and no anonymous row) prints `emptyLabel`. Pending draws
|
|
35
|
+
* skeleton rows, `pendingRows` of them, and says "Loading".
|
|
36
|
+
*/
|
|
37
|
+
/** One person in the ranking. */
|
|
38
|
+
export type RankedListItem = {
|
|
39
|
+
/** A stable id, for the row key and the avatar's colour. Defaults to the name. */
|
|
40
|
+
id?: string;
|
|
41
|
+
/** Who, such as "John G". */
|
|
42
|
+
name: string;
|
|
43
|
+
/** How many, such as 18. */
|
|
44
|
+
count: number;
|
|
45
|
+
/** Their picture, painted over the initials. */
|
|
46
|
+
avatarSrc?: string;
|
|
47
|
+
};
|
|
48
|
+
declare function RankedList({ items, anonymous, anonymousLabel, max, formatCount, emptyLabel, pending, pendingRows, className, ...props }: Omit<React.ComponentProps<"ol">, "children"> & {
|
|
49
|
+
/** The people, in rank order. Rendered as given. */
|
|
50
|
+
items: readonly RankedListItem[];
|
|
51
|
+
/** The anonymous visitors' count. Adds the last row when it is a number. */
|
|
52
|
+
anonymous?: number;
|
|
53
|
+
/** The anonymous row's words. */
|
|
54
|
+
anonymousLabel?: React.ReactNode;
|
|
55
|
+
/** The meters' full scale. Defaults to the largest count shown. */
|
|
56
|
+
max?: number;
|
|
57
|
+
/** Formats each count. Defaults to grouped digits. */
|
|
58
|
+
formatCount?: (value: number) => string;
|
|
59
|
+
/** Printed when there are no rows at all. */
|
|
60
|
+
emptyLabel?: React.ReactNode;
|
|
61
|
+
/** The rows are on their way: draw skeleton rows, never zeros. */
|
|
62
|
+
pending?: boolean;
|
|
63
|
+
/** How many skeleton rows a pending list draws. */
|
|
64
|
+
pendingRows?: number;
|
|
65
|
+
}): React.JSX.Element;
|
|
66
|
+
export { RankedList };
|
|
67
|
+
//# sourceMappingURL=ranked-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranked-list.d.ts","sourceRoot":"","sources":["../../src/blocks/ranked-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG;IAC3B,kFAAkF;IAClF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA6CD,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,SAAS,EACT,cAAgC,EAChC,GAAG,EACH,WAA+B,EAC/B,UAAsC,EACtC,OAAe,EACf,WAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAChD,oDAAoD;IACpD,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IAChC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iCAAiC;IACjC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,qBAoEA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
import { Avatar } from "./avatar.js";
|
|
5
|
+
import { CHART_LOADING_TEXT, ChartEmpty, chartValue, formatChartNumber } from "./chart-parts.js";
|
|
6
|
+
import { PersonIcon } from "./icons.js";
|
|
7
|
+
import { Meter } from "./meter.js";
|
|
8
|
+
import { Skeleton } from "../ui/skeleton.js";
|
|
9
|
+
/** The final row's default words: visitors who were not signed in. */
|
|
10
|
+
const ANONYMOUS_LABEL = "Anonymous visitors";
|
|
11
|
+
/** The frames' avatar size. */
|
|
12
|
+
const AVATAR_SIZE = 32;
|
|
13
|
+
function RankedRow({ avatar, name, count, max, formatCount, anonymous, }) {
|
|
14
|
+
return (_jsxs("li", { "data-slot": "ranked-list-row", "data-anonymous": anonymous ? "" : undefined, className: "flex min-w-0 items-center gap-4", children: [avatar, _jsxs("div", { className: "grid min-w-0 flex-1 gap-2", children: [_jsxs("div", { className: "flex min-w-0 items-baseline justify-between gap-3 text-body-sm leading-none", children: [_jsx("span", { "data-slot": "ranked-list-name", className: "min-w-0 truncate font-medium", children: name }), _jsx("span", { "data-slot": "ranked-list-count", className: "shrink-0 tabular-nums", children: formatCount(count) })] }), _jsx(Meter, { "aria-hidden": "true", size: "sm", value: count, max: max })] })] }));
|
|
15
|
+
}
|
|
16
|
+
function RankedList({ items, anonymous, anonymousLabel = ANONYMOUS_LABEL, max, formatCount = formatChartNumber, emptyLabel = "Nothing in this window.", pending = false, pendingRows = 4, className, ...props }) {
|
|
17
|
+
if (pending) {
|
|
18
|
+
return (_jsxs("div", { "data-slot": "ranked-list", "data-pending": "", "aria-busy": "true", className: cn("grid gap-5", className), children: [_jsx("span", { className: "sr-only", children: CHART_LOADING_TEXT }), Array.from({ length: pendingRows }, (_, i) => (_jsxs("div", { "aria-hidden": "true", className: "flex items-center gap-4", children: [_jsx(Skeleton, { className: "size-8 shrink-0 rounded-pill" }), _jsxs("div", { className: "grid flex-1 gap-2", children: [_jsx(Skeleton, { className: "h-3.5 w-1/3" }), _jsx(Skeleton, { className: "h-1 w-full" })] })] }, i)))] }));
|
|
19
|
+
}
|
|
20
|
+
const hasAnonymous = typeof anonymous === "number";
|
|
21
|
+
if (items.length === 0 && !hasAnonymous) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "ranked-list", "data-empty": "", className: cn("text-ink", className), children: _jsx(ChartEmpty, { children: emptyLabel }) }));
|
|
23
|
+
}
|
|
24
|
+
const counts = items.map((it) => chartValue(it.count));
|
|
25
|
+
const anonymousCount = hasAnonymous ? chartValue(anonymous) : 0;
|
|
26
|
+
const scale = max && max > 0 ? max : Math.max(1, ...counts, anonymousCount);
|
|
27
|
+
return (_jsxs("ol", { "data-slot": "ranked-list",
|
|
28
|
+
// text-ink on the root, because text does not flip by inheritance (rule 3).
|
|
29
|
+
className: cn("m-0 grid list-none gap-5 p-0 text-ink", className), ...props, children: [items.map((it, i) => (_jsx(RankedRow, { avatar: _jsx(Avatar, { name: it.name, seed: it.id, src: it.avatarSrc, size: AVATAR_SIZE }), name: it.name, count: counts[i], max: scale, formatCount: formatCount }, it.id ?? `${it.name}-${i}`))), hasAnonymous ? (_jsx(RankedRow, { anonymous: true, avatar: _jsx("span", { "data-slot": "ranked-list-anonymous-avatar", "aria-hidden": "true", className: "inline-flex size-8 shrink-0 items-center justify-center rounded-pill bg-hairline text-faint-strong", children: _jsx(PersonIcon, { className: "size-4" }) }), name: anonymousLabel, count: anonymousCount, max: scale, formatCount: formatCount })) : null] }));
|
|
30
|
+
}
|
|
31
|
+
export { RankedList };
|
|
32
|
+
//# sourceMappingURL=ranked-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranked-list.js","sourceRoot":"","sources":["../../src/blocks/ranked-list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-nav.d.ts","sourceRoot":"","sources":["../../src/blocks/side-nav.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AA0GrD,iBAAS,OAAO,CAAC,EACf,KAAK,EACL,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,
|
|
1
|
+
{"version":3,"file":"side-nav.d.ts","sourceRoot":"","sources":["../../src/blocks/side-nav.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AA0GrD,iBAAS,OAAO,CAAC,EACf,KAAK,EACL,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,qBAsCA;AAED,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,WAAmB,EACnB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG;IACzD,6DAA6D;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,qBAgGA;AAED,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IACxD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,wFAAwF;IACxF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,0EAmEA;AAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAA"}
|
package/dist/blocks/side-nav.js
CHANGED
|
@@ -117,7 +117,9 @@ function SideNav({ label, context, className, children, onKeyDown, ...props }) {
|
|
|
117
117
|
event.preventDefault();
|
|
118
118
|
rows[(from + step + rows.length) % rows.length]?.focus();
|
|
119
119
|
}
|
|
120
|
-
return (
|
|
120
|
+
return (
|
|
121
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- roving focus: the arrow-key handler is delegated here; the links inside stay the interactive elements
|
|
122
|
+
_jsxs("nav", { "data-slot": "side-nav", "aria-label": label, onKeyDown: handleKeyDown,
|
|
121
123
|
// text-ink because text does not flip by inheritance: without it every
|
|
122
124
|
// row inside a panel would inherit the page's dark ink and stay dark on
|
|
123
125
|
// purple.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-nav.js","sourceRoot":"","sources":["../../src/blocks/side-nav.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AAEH,kEAAkE;AAClE,MAAM,YAAY,GAAG,iEAAiE,CAAA;AAEtF;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAiB;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,YAAY,CAAC,CAAC,CAAC,MAAM,CACxE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CACvE,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EACf,KAAK,EACL,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EAcT;IACC,SAAS,aAAa,CAAC,KAAuC;QAC5D,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;QAClB,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAM;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,IAAI,IAAI,KAAK,CAAC;YAAE,OAAM;QAEtB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAA4B,CAAC,CAAA;QAChE,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE5C,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAC1D,CAAC;IAED,OAAO,
|
|
1
|
+
{"version":3,"file":"side-nav.js","sourceRoot":"","sources":["../../src/blocks/side-nav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign-in-options.d.ts","sourceRoot":"","sources":["../../src/blocks/sign-in-options.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,UAAU,gBAAgB;IACxB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAA;IACV,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GACpB,CAAC,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACvD,CAAC,gBAAgB,GAAG;IAClB,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,CAAA;CAC9D,CAAC,CAAA;AAEN,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,OAAO,EAAE,aAAa,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;IAC/C;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,+DAA+D;IAC/D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,YAAY,CAAA;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACzD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd,qBAsBA;AAmBD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,SAAS,GACV,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"sign-in-options.d.ts","sourceRoot":"","sources":["../../src/blocks/sign-in-options.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,UAAU,gBAAgB;IACxB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAA;IACV,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GACpB,CAAC,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACvD,CAAC,gBAAgB,GAAG;IAClB,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,CAAA;CAC9D,CAAC,CAAA;AAEN,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,OAAO,EAAE,aAAa,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;IAC/C;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,+DAA+D;IAC/D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,YAAY,CAAA;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACzD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd,qBAsBA;AAmBD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,SAAS,GACV,EAAE,kBAAkB,qBAqDpB"}
|
|
@@ -52,6 +52,8 @@ export function SignInOptions({ methods, carry, divider, renderLink, className,
|
|
|
52
52
|
non-native target — put back to `link`, because this one
|
|
53
53
|
really does navigate.
|
|
54
54
|
*/
|
|
55
|
-
_jsx(SignInMethodButton, { "data-method": method.id, render: renderLink?.({ href: withCarried(method.href, entries) }) ?? (
|
|
55
|
+
_jsx(SignInMethodButton, { "data-method": method.id, render: renderLink?.({ href: withCarried(method.href, entries) }) ?? (
|
|
56
|
+
// eslint-disable-next-line jsx-a11y/anchor-has-content -- a Base UI render target: the button's children are rendered into this anchor
|
|
57
|
+
_jsx("a", { href: withCarried(method.href, entries) })), nativeButton: false, role: "link", icon: method.icon, label: method.label, disabled: method.disabled }, method.id)) : (_jsx(SignInMethodButton, { "data-method": method.id, icon: method.icon, label: method.label, disabled: method.disabled, onClick: () => method.onSelect(carried) }, method.id))) })] }, index))) }));
|
|
56
58
|
}
|
|
57
59
|
//# sourceMappingURL=sign-in-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign-in-options.js","sourceRoot":"","sources":["../../src/blocks/sign-in-options.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sign-in-options.js","sourceRoot":"","sources":["../../src/blocks/sign-in-options.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* One bar split into its parts, with a dot legend under it (#332): AI tokens as
|
|
4
|
+
* Input and Output, and the Coming soon Grid tokens (Figma "App page: final
|
|
5
|
+
* cut", 02 Insights).
|
|
6
|
+
*
|
|
7
|
+
* ## Colour follows the part's position, never its size
|
|
8
|
+
*
|
|
9
|
+
* The first part is `--cg-text-accent` (purple on the page, white on the panel,
|
|
10
|
+
* lime on ink), the second `--cg-data-cyan`, the third the muted grey. The frames
|
|
11
|
+
* draw two. A fourth or later part reuses the grey, because a generated hue would
|
|
12
|
+
* be a colour the brand does not have; past three, fold the rest into one "Other"
|
|
13
|
+
* part.
|
|
14
|
+
*
|
|
15
|
+
* `--cg-data-cyan` is the brand cyan as data ink (founder ruling, 2026-10-19). The
|
|
16
|
+
* brand cyan itself is 1.46:1 on white and 1.29:1 on the page ground, under the
|
|
17
|
+
* 3:1 a mark that carries a value needs, so on the page the token is a darker
|
|
18
|
+
* shade of the same hue (3.63:1 on white, 3.22:1 on the page); on the panel and
|
|
19
|
+
* on ink, where the brand cyan already clears, it is the brand cyan. The brand
|
|
20
|
+
* token is unchanged.
|
|
21
|
+
*
|
|
22
|
+
* Swapping the order of `parts` swaps the colours with it, so a caller keeps one
|
|
23
|
+
* order everywhere (Input first) and Input is the same colour on every card.
|
|
24
|
+
*
|
|
25
|
+
* ## Marks
|
|
26
|
+
*
|
|
27
|
+
* 16px tall, 4px rounded ends, and a 2px gap between parts in the surface's own
|
|
28
|
+
* colour (the gap is empty, so the card shows through), so two parts read as two
|
|
29
|
+
* without a stroke drawn round either. A part's width is its share of the total;
|
|
30
|
+
* a part of zero is left out of the bar and kept in the legend.
|
|
31
|
+
*
|
|
32
|
+
* ## For a screen reader
|
|
33
|
+
*
|
|
34
|
+
* The bar is `aria-hidden`. The legend is a list, and each entry carries its
|
|
35
|
+
* value and share in visually hidden text ("Input: 2,100,000, 26%"), so the
|
|
36
|
+
* numbers are read where the names are. `label` names the whole figure.
|
|
37
|
+
*
|
|
38
|
+
* ## States
|
|
39
|
+
*
|
|
40
|
+
* Empty (no parts, or a total of zero) prints `emptyLabel`. Pending draws a
|
|
41
|
+
* skeleton the bar's size and says "Loading".
|
|
42
|
+
*/
|
|
43
|
+
/** One part of the bar. */
|
|
44
|
+
export type StackedBarPart = {
|
|
45
|
+
/** The legend's word for it, such as "Input". */
|
|
46
|
+
label: string;
|
|
47
|
+
value: number;
|
|
48
|
+
};
|
|
49
|
+
declare function StackedBar({ parts, label, legend, formatValue, emptyLabel, pending, className, ...props }: Omit<React.ComponentProps<"figure">, "children"> & {
|
|
50
|
+
/** The parts, in a fixed order: the first takes the accent colour. */
|
|
51
|
+
parts: readonly StackedBarPart[];
|
|
52
|
+
/** The figure's accessible name, such as "AI tokens". */
|
|
53
|
+
label?: string;
|
|
54
|
+
/** Show the dot legend under the bar. On by default. */
|
|
55
|
+
legend?: boolean;
|
|
56
|
+
/** Formats the values a screen reader hears. Defaults to grouped digits. */
|
|
57
|
+
formatValue?: (value: number) => string;
|
|
58
|
+
/** Printed in place of the bar when there is nothing to split. */
|
|
59
|
+
emptyLabel?: React.ReactNode;
|
|
60
|
+
/** The data is on its way: draw a skeleton, never a zero. */
|
|
61
|
+
pending?: boolean;
|
|
62
|
+
}): React.JSX.Element;
|
|
63
|
+
export { StackedBar };
|
|
64
|
+
//# sourceMappingURL=stacked-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacked-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/stacked-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG;IAC3B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AASD,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,KAAK,EACL,MAAa,EACb,WAA+B,EAC/B,UAAsC,EACtC,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IACpD,sEAAsE;IACtE,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IAChC,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,kEAAkE;IAClE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBAoEA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
import { Skeleton } from "../ui/skeleton.js";
|
|
5
|
+
import { CHART_LOADING_TEXT, ChartEmpty, chartValue, formatChartNumber } from "./chart-parts.js";
|
|
6
|
+
/** The part colours, by position. See the docblock: position, not size. */
|
|
7
|
+
const PART_FILL = ["bg-(--cg-text-accent)", "bg-(--cg-data-cyan)", "bg-faint"];
|
|
8
|
+
function partFill(index) {
|
|
9
|
+
return PART_FILL[Math.min(index, PART_FILL.length - 1)];
|
|
10
|
+
}
|
|
11
|
+
function StackedBar({ parts, label, legend = true, formatValue = formatChartNumber, emptyLabel = "Nothing in this window.", pending = false, className, ...props }) {
|
|
12
|
+
const values = parts.map((p) => chartValue(p.value));
|
|
13
|
+
const total = values.reduce((a, b) => a + b, 0);
|
|
14
|
+
const empty = !pending && total === 0;
|
|
15
|
+
return (_jsx("figure", { "data-slot": "stacked-bar", "data-pending": pending ? "" : undefined, "data-empty": empty ? "" : undefined, "aria-label": label, "aria-busy": pending || undefined, className: cn("m-0 grid min-w-0 gap-2 text-ink", className), ...props, children: pending ? (_jsxs("div", { "data-slot": "stacked-bar-pending", children: [_jsx("span", { className: "sr-only", children: CHART_LOADING_TEXT }), _jsx(Skeleton, { "aria-hidden": "true", className: "h-4 w-full" })] })) : empty ? (_jsx(ChartEmpty, { children: emptyLabel })) : (_jsxs(_Fragment, { children: [_jsx("div", { "data-slot": "stacked-bar-track", "aria-hidden": "true", className: "flex h-4 w-full gap-0.5 overflow-hidden rounded-[4px]", children: parts.map((p, i) => values[i] > 0 ? (_jsx("span", { "data-slot": "stacked-bar-part", "data-index": i, title: `${p.label}: ${formatValue(values[i])}`, className: cn("block h-full min-w-0.5", partFill(i)), style: { flexGrow: values[i], flexBasis: 0 } }, `${p.label}-${i}`)) : null) }), _jsx("ul", { "data-slot": "stacked-bar-legend", "data-hidden": legend ? undefined : "", className: cn("m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0", !legend && "sr-only"), children: parts.map((p, i) => (_jsxs("li", { "data-slot": "stacked-bar-legend-item", className: "inline-flex items-center gap-1.5 text-caption text-faint-strong", children: [_jsx("span", { "aria-hidden": "true", className: cn("size-2 shrink-0 rounded-[2px]", partFill(i)) }), p.label, _jsxs("span", { className: "sr-only", children: [": ", formatValue(values[i]), ", ", Math.round((values[i] / total) * 100), "%"] })] }, `${p.label}-${i}`))) })] })) }));
|
|
16
|
+
}
|
|
17
|
+
export { StackedBar };
|
|
18
|
+
//# sourceMappingURL=stacked-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacked-bar.js","sourceRoot":"","sources":["../../src/blocks/stacked-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,42 @@ import * as React from "react";
|
|
|
53
53
|
*/
|
|
54
54
|
/** The hint's tone. `positive` is growth; there is no negative, because the frames draw none. */
|
|
55
55
|
export type StatHintTone = "neutral" | "positive";
|
|
56
|
-
|
|
56
|
+
/**
|
|
57
|
+
* ## The App page v2 additions (#334, Figma 10789:8587)
|
|
58
|
+
*
|
|
59
|
+
* Three opt-in props. Leave all three out and the tile renders exactly what it
|
|
60
|
+
* did before them.
|
|
61
|
+
*
|
|
62
|
+
* `icon` is the KPI row's leading mark: a role from `blocks/icons.tsx`
|
|
63
|
+
* (`ViewsIcon`, `AudienceIcon`, `PickupsIcon`...), drawn at 24px in the brand
|
|
64
|
+
* purple on a 40px `brand-100` square. The frame lays that tile out
|
|
65
|
+
* differently from the plain one, and the icon brings the whole arrangement:
|
|
66
|
+
* the mark on the left, the value over the label, the value on the 24px title
|
|
67
|
+
* rung rather than the 30px display rung, and the label in ink rather than
|
|
68
|
+
* muted, because in that tile the value leads and the label captions it.
|
|
69
|
+
*
|
|
70
|
+
* `valueFirst` is the same order without the icon: the value over the label.
|
|
71
|
+
* The frames draw every icon-less tile on the App page this way (7,112 Total
|
|
72
|
+
* visits; $0.024 Per run), while the tiles that predate them (#227) put the
|
|
73
|
+
* label first, so it is a prop and not a change of default.
|
|
74
|
+
*
|
|
75
|
+
* `example` is the preview state the founder ruled on 2026-10-18: the values
|
|
76
|
+
* are illustrative, so the value and the label are set in the strong muted
|
|
77
|
+
* rung (`--cg-text-muted-strong`) and nothing else changes. No "Example data"
|
|
78
|
+
* line: the card the tile sits in says so with a `ComingSoonTag` in its header.
|
|
79
|
+
* `pending` wins over `example`, since a pending tile has no value to mute.
|
|
80
|
+
*
|
|
81
|
+
* The square's ground is `brand-100` and the mark `text-brand`, neither of
|
|
82
|
+
* which flips by scope. That is deliberate rather than an omission: the square
|
|
83
|
+
* carries its own ground, like a filled control (#225), so the purple-on-violet
|
|
84
|
+
* pair is the same 4.87:1 inside a panel or on ink as on the page, over the 3:1
|
|
85
|
+
* a graphic needs. The mark is decoration (`aria-hidden`); the label names the
|
|
86
|
+
* metric.
|
|
87
|
+
*/
|
|
88
|
+
type StatTileIcon = React.ComponentType<{
|
|
89
|
+
className?: string;
|
|
90
|
+
}>;
|
|
91
|
+
declare function StatTile({ label, value, hint, hintTone, pending, icon: Icon, valueFirst, example, className, ...props }: Omit<React.ComponentProps<"div">, "ref" | "children"> & {
|
|
57
92
|
/** Names the metric. Small and muted, above the value. */
|
|
58
93
|
label: React.ReactNode;
|
|
59
94
|
/** The measurement. Ignored when `pending`. */
|
|
@@ -63,6 +98,12 @@ declare function StatTile({ label, value, hint, hintTone, pending, className, ..
|
|
|
63
98
|
hintTone?: StatHintTone;
|
|
64
99
|
/** The metric is real and the number is not available yet. */
|
|
65
100
|
pending?: boolean;
|
|
101
|
+
/** A leading mark on a brand square: the KPI row's tile. Implies `valueFirst`. */
|
|
102
|
+
icon?: StatTileIcon;
|
|
103
|
+
/** The value over the label, as the App page draws its tiles. */
|
|
104
|
+
valueFirst?: boolean;
|
|
105
|
+
/** The values are illustrative: set them muted. Pair with a ComingSoonTag on the card. */
|
|
106
|
+
example?: boolean;
|
|
66
107
|
}): React.JSX.Element;
|
|
67
108
|
declare function StatTileRow({ className, children, ...props }: Omit<React.ComponentProps<"div">, "ref">): React.JSX.Element;
|
|
68
109
|
export { StatTile, StatTileRow };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat-tile.d.ts","sourceRoot":"","sources":["../../src/blocks/stat-tile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,iGAAiG;AACjG,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAA;AAWjD,iBAAS,QAAQ,CAAC,EAChB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAoB,EACpB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG;IACzD,0DAA0D;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,
|
|
1
|
+
{"version":3,"file":"stat-tile.d.ts","sourceRoot":"","sources":["../../src/blocks/stat-tile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,iGAAiG;AACjG,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAA;AAWjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,KAAK,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE/D,iBAAS,QAAQ,CAAC,EAChB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAoB,EACpB,OAAO,EACP,IAAI,EAAE,IAAI,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG;IACzD,0DAA0D;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kFAAkF;IAClF,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBAsFA;AAsBD,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,qBAiB1C;AAcD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA"}
|
package/dist/blocks/stat-tile.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
4
|
// The label and the neutral hint are content, so they read the strong muted
|
|
@@ -9,12 +9,31 @@ const HINT_TONE = {
|
|
|
9
9
|
neutral: "text-faint-strong",
|
|
10
10
|
positive: "text-online-strong",
|
|
11
11
|
};
|
|
12
|
-
function StatTile({ label, value, hint, hintTone = "neutral", pending, className, ...props }) {
|
|
13
|
-
|
|
12
|
+
function StatTile({ label, value, hint, hintTone = "neutral", pending, icon: Icon, valueFirst, example, className, ...props }) {
|
|
13
|
+
const muted = example && !pending;
|
|
14
|
+
const kpi = Icon !== undefined;
|
|
15
|
+
const order = kpi || valueFirst ? "value-first" : undefined;
|
|
16
|
+
const labelNode = (_jsx("span", { "data-slot": "stat-tile-label", className: "text-caption text-faint-strong", children: label }));
|
|
17
|
+
const valueNode = (_jsx("span", { "data-slot": "stat-tile-value", "data-pending": pending ? "" : undefined, className: cn(
|
|
18
|
+
// The KPI tile's value is the 24px title rung, whose own leading is
|
|
19
|
+
// tight; spelled as a separate string rather than an override, so no
|
|
20
|
+
// merge has to decide between two leadings.
|
|
21
|
+
kpi
|
|
22
|
+
? "font-display text-title-24 font-medium tabular-nums"
|
|
23
|
+
: "font-display text-display-sm leading-display font-medium tabular-nums", pending && "text-faint", muted && "text-faint-strong"), children: pending ? "Coming soon" : value }));
|
|
24
|
+
const hintNode = hint ? (_jsx("span", { "data-slot": "stat-tile-hint", "data-tone": hintTone, className: cn("text-caption", HINT_TONE[hintTone]), children: hint })) : null;
|
|
25
|
+
const lines = order ? (_jsxs(_Fragment, { children: [valueNode, labelNode, hintNode] })) : (_jsxs(_Fragment, { children: [labelNode, valueNode, hintNode] }));
|
|
26
|
+
return (_jsx("div", { "data-slot": "stat-tile", "data-pending": pending ? "" : undefined, "data-example": muted ? "" : undefined, "data-order": order, "data-icon": kpi ? "" : undefined,
|
|
14
27
|
// text-ink on the root, because text does not flip by inheritance
|
|
15
28
|
// (rule 3): without it a tile inside a panel inherits the page's dark ink
|
|
16
29
|
// and its value stays dark on purple.
|
|
17
|
-
className: cn("flex min-w-0 flex-col gap-1 rounded-xl border border-hairline bg-card p-4 text-ink",
|
|
30
|
+
className: cn("flex min-w-0 flex-col gap-1 rounded-xl border border-hairline bg-card p-4 text-ink",
|
|
31
|
+
// The frame's KPI tile: 24px either side, the square 16px from the words.
|
|
32
|
+
kpi && "flex-row items-center gap-4 px-6",
|
|
33
|
+
// In the KPI tile the label captions a value that leads: ink, as drawn.
|
|
34
|
+
// Set from the root so the label keeps its one class string (#232's
|
|
35
|
+
// guardrail pins it).
|
|
36
|
+
kpi && !muted && "**:data-[slot=stat-tile-label]:text-ink", className), ...props, children: kpi ? (_jsxs(_Fragment, { children: [_jsx("span", { "data-slot": "stat-tile-icon", "aria-hidden": "true", className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-brand-100 text-brand", children: _jsx(Icon, { className: "size-6" }) }), _jsx("div", { className: "flex min-w-0 flex-col gap-1", children: lines })] })) : (lines) }));
|
|
18
37
|
}
|
|
19
38
|
/**
|
|
20
39
|
* A row of tiles: two, three or four, side by side, stacking as the column
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat-tile.js","sourceRoot":"","sources":["../../src/blocks/stat-tile.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AA0DvC,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,4DAA4D;AAC5D,MAAM,SAAS,GAAiC;IAC9C,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,oBAAoB;CAC/B,CAAA;
|
|
1
|
+
{"version":3,"file":"stat-tile.js","sourceRoot":"","sources":["../../src/blocks/stat-tile.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AA0DvC,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,4DAA4D;AAC5D,MAAM,SAAS,GAAiC;IAC9C,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,oBAAoB;CAC/B,CAAA;AAoCD,SAAS,QAAQ,CAAC,EAChB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,GAAG,SAAS,EACpB,OAAO,EACP,IAAI,EAAE,IAAI,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EAiBT;IACC,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,CAAA;IACjC,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAA;IAC9B,MAAM,KAAK,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;IAE3D,MAAM,SAAS,GAAG,CAChB,4BAAgB,iBAAiB,EAAC,SAAS,EAAC,gCAAgC,YACzE,KAAK,GACD,CACR,CAAA;IACD,MAAM,SAAS,GAAG,CAChB,4BACY,iBAAiB,kBACb,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACtC,SAAS,EAAE,EAAE;QACX,oEAAoE;QACpE,qEAAqE;QACrE,4CAA4C;QAC5C,GAAG;YACD,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,uEAAuE,EAC3E,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,mBAAmB,CAC7B,YAEA,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAC3B,CACR,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CACtB,4BAAgB,gBAAgB,eAAY,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,YACrG,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CACpB,8BACG,SAAS,EACT,SAAS,EACT,QAAQ,IACR,CACJ,CAAC,CAAC,CAAC,CACF,8BACG,SAAS,EACT,SAAS,EACT,QAAQ,IACR,CACJ,CAAA;IAED,OAAO,CACL,2BACY,WAAW,kBACP,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,kBACxB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,gBACxB,KAAK,eACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAC/B,kEAAkE;QAClE,0EAA0E;QAC1E,sCAAsC;QACtC,SAAS,EAAE,EAAE,CACX,oFAAoF;QACpF,0EAA0E;QAC1E,GAAG,IAAI,kCAAkC;QACzC,wEAAwE;QACxE,oEAAoE;QACpE,sBAAsB;QACtB,GAAG,IAAI,CAAC,KAAK,IAAI,yCAAyC,EAC1D,SAAS,CACV,KACG,KAAK,YAER,GAAG,CAAC,CAAC,CAAC,CACL,8BACE,4BACY,gBAAgB,iBACd,MAAM,EAClB,SAAS,EAAC,sFAAsF,YAEhG,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,GAAG,GACtB,EACP,cAAK,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAO,IACzD,CACJ,CAAC,CAAC,CAAC,CACF,KAAK,CACN,GACG,CACP,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,GAA2B;IAC1C,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,4BAA4B;IAC/B,CAAC,EAAE,2CAA2C;IAC9C,CAAC,EAAE,2CAA2C;CAC/C,CAAA;AAED,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACiC;IACzC,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,wBAAwB;IACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE5D,OAAO,CACL,2BACY,eAAe,gBACb,KAAK,EACjB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KACtD,KAAK,YAER,QAAQ,GACL,CACP,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,QAAyB;IAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/tab-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AAEH;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,KAAK,CAAA;AAW5B,iBAAS,MAAM,CAAC,EACd,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;CACd,
|
|
1
|
+
{"version":3,"file":"tab-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/tab-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AAEH;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,KAAK,CAAA;AAW5B,iBAAS,MAAM,CAAC,EACd,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IAC5C;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;CACd,qBA4CA;AAED,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IACxD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,0EAsEA;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/blocks/tab-bar.js
CHANGED
|
@@ -125,7 +125,9 @@ function TabBar({ label, className, children, onKeyDown, ...props }) {
|
|
|
125
125
|
event.preventDefault();
|
|
126
126
|
items[(from + step + items.length) % items.length]?.focus();
|
|
127
127
|
}
|
|
128
|
-
return (
|
|
128
|
+
return (
|
|
129
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- roving focus: the arrow-key handler is delegated here; the links inside stay the interactive elements
|
|
130
|
+
_jsx("nav", { "data-slot": "tab-bar", "aria-label": label, onKeyDown: handleKeyDown, className: cn("fixed inset-x-0 bottom-0 z-40 border-t border-hairline bg-card",
|
|
129
131
|
// env(safe-area-inset-bottom) is 0 everywhere it does not apply, so
|
|
130
132
|
// this is not a phone-only branch: it is the home-indicator gutter on
|
|
131
133
|
// the hardware that has one and nothing on the hardware that does not.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-bar.js","sourceRoot":"","sources":["../../src/blocks/tab-bar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAE5B,uCAAuC;AACvC,MAAM,aAAa,GAAG,4BAA4B,CAAA;AAElD,SAAS,cAAc,CAAC,IAAiB;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,aAAa,CAAC,CAAC,CAAC,MAAM,CACzE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CACvE,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,EACd,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EAQT;IACC,SAAS,aAAa,CAAC,KAAuC;QAC5D,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;QAClB,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAM;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChF,IAAI,IAAI,KAAK,CAAC;YAAE,OAAM;QAEtB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAA4B,CAAC,CAAA;QACjE,2EAA2E;QAC3E,sDAAsD;QACtD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE7C,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAC7D,CAAC;IAED,OAAO,
|
|
1
|
+
{"version":3,"file":"tab-bar.js","sourceRoot":"","sources":["../../src/blocks/tab-bar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAE5B,uCAAuC;AACvC,MAAM,aAAa,GAAG,4BAA4B,CAAA;AAElD,SAAS,cAAc,CAAC,IAAiB;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,aAAa,CAAC,CAAC,CAAC,MAAM,CACzE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CACvE,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,EACd,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EAQT;IACC,SAAS,aAAa,CAAC,KAAuC;QAC5D,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;QAClB,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAM;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChF,IAAI,IAAI,KAAK,CAAC;YAAE,OAAM;QAEtB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAA4B,CAAC,CAAA;QACjE,2EAA2E;QAC3E,sDAAsD;QACtD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE7C,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAC7D,CAAC;IAED,OAAO;IACL,oLAAoL;IACpL,2BACY,SAAS,gBACP,KAAK,EACjB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,EAAE,CACX,gEAAgE;QAChE,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,wEAAwE;QACxE,kCAAkC;QAClC,uEAAuE;QACvE,sEAAsE;QACtE,uBAAuB;QACvB,UAAU,EACV,SAAS,CACV,KACG,KAAK,YAET,2BAAe,eAAe,EAAC,SAAS,EAAC,oBAAoB,YAC1D,QAAQ,GACL,GACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,SAAS,EACT,GAAG,KAAK,EAwBT;IACC,SAAS,aAAa,CAAC,KAA6C;QAClE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;QAClB,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAM;QAClC,4EAA4E;QAC5E,2EAA2E;QAC3E,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;YAAE,OAAM;QAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAA;QAC9B,IAAI,EAAE,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAM;QACnC,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,OAAO,SAAS,CAAC;QACf,MAAM;QACN,cAAc,EAAE,QAAQ;QACxB,KAAK,EAAE;YACL,WAAW,EAAE,cAAc;YAC3B,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACtC,2EAA2E;YAC3E,uEAAuE;YACvE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC3C,2EAA2E;YAC3E,0CAA0C;YAC1C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC;YAC9C,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,EAAE,CACX,2GAA2G,EAC3G,2FAA2F,EAC3F,MAAM;gBACJ,CAAC,CAAC,qEAAqE;oBACrE,gEAAgE;oBAChE,wDAAwD;oBACxD,qCAAqC;gBACvC,CAAC,CAAC,0BAA0B,EAC9B,SAAS,CACV;YACD,0EAA0E;YAC1E,yEAAyE;YACzE,0EAA0E;YAC1E,QAAQ,EAAE,CACR,8BACG,IAAI,CAAC,CAAC,CAAC,CACN,4BACY,cAAc,EACxB,SAAS,EAAC,uDAAuD,YAEhE,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,EACR,6BAAgB,eAAe,EAAC,SAAS,EAAC,yBAAyB,aACjE,eAAM,SAAS,EAAC,UAAU,YAAE,KAAK,GAAQ,EACxC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,4BACY,eAAe;gCACzB,+DAA+D;gCAC/D,4DAA4D;gCAC5D,6DAA6D;gCAC7D,6CAA6C;gCAC7C,SAAS,EAAC,qEAAqE,YAE9E,KAAK,GACD,CACR,IACI,IACN,CACJ;YACD,GAAG,KAAK;SACT;KACF,CAAC,CAAA;AACJ,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A vertical list of dated events on one rule (#333): Lineage on the App page
|
|
4
|
+
* (Figma "App page: final cut", 01 Overview). "Remixed Monkey Business, Oct 12,
|
|
5
|
+
* 2025", then "10 versions, Oct 13, 2025 - Jan 15, 2026", then "v11, Sep 6,
|
|
6
|
+
* 2026".
|
|
7
|
+
*
|
|
8
|
+
* ## Plain items, printed as given
|
|
9
|
+
*
|
|
10
|
+
* Each event is a `title` (a node, so a name can be set in bold as the frame
|
|
11
|
+
* sets "Monkey Business") and a `date` string. The block never formats a date,
|
|
12
|
+
* so it cannot disagree with the Console about a time zone; `dateTime` puts a
|
|
13
|
+
* machine-readable value on the `<time>` element when the caller has one.
|
|
14
|
+
* Events render in the order given, oldest first in the frames.
|
|
15
|
+
*
|
|
16
|
+
* ## Marks
|
|
17
|
+
*
|
|
18
|
+
* A 1px rule in `--cg-border-control` runs from the first dot past the last, and
|
|
19
|
+
* each event has a 5px dot in the strong muted grey on it, level with its title.
|
|
20
|
+
* Both flip with the surface.
|
|
21
|
+
*
|
|
22
|
+
* ## For a screen reader
|
|
23
|
+
*
|
|
24
|
+
* An `<ol>`, one `<li>` per event, the date in a `<time>`. The rule and the dots
|
|
25
|
+
* are decoration and are hidden.
|
|
26
|
+
*
|
|
27
|
+
* ## States
|
|
28
|
+
*
|
|
29
|
+
* Empty prints `emptyLabel`. Pending draws skeleton events and says "Loading".
|
|
30
|
+
*/
|
|
31
|
+
/** One event on the timeline. */
|
|
32
|
+
export type TimelineItem = {
|
|
33
|
+
/** A stable key. Defaults to the position. */
|
|
34
|
+
id?: string;
|
|
35
|
+
/** What happened, such as "10 versions". */
|
|
36
|
+
title: React.ReactNode;
|
|
37
|
+
/** When, as the reader should see it, such as "Oct 12, 2025". */
|
|
38
|
+
date?: React.ReactNode;
|
|
39
|
+
/** The same moment for a machine, such as "2025-10-12", on the `<time>` element. */
|
|
40
|
+
dateTime?: string;
|
|
41
|
+
};
|
|
42
|
+
declare function Timeline({ items, emptyLabel, pending, pendingRows, className, ...props }: Omit<React.ComponentProps<"ol">, "children"> & {
|
|
43
|
+
/** The events, in order. */
|
|
44
|
+
items: readonly TimelineItem[];
|
|
45
|
+
/** Printed when there are no events. */
|
|
46
|
+
emptyLabel?: React.ReactNode;
|
|
47
|
+
/** The events are on their way: draw skeleton rows. */
|
|
48
|
+
pending?: boolean;
|
|
49
|
+
/** How many skeleton rows a pending timeline draws. */
|
|
50
|
+
pendingRows?: number;
|
|
51
|
+
}): React.JSX.Element;
|
|
52
|
+
export { Timeline };
|
|
53
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/blocks/timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,iCAAiC;AACjC,MAAM,MAAM,YAAY,GAAG;IACzB,8CAA8C;IAC9C,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,4CAA4C;IAC5C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,iEAAiE;IACjE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,iBAAS,QAAQ,CAAC,EAChB,KAAK,EACL,UAA2B,EAC3B,OAAe,EACf,WAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAChD,4BAA4B;IAC5B,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IAC9B,wCAAwC;IACxC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,qBA6DA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
import { CHART_LOADING_TEXT, ChartEmpty } from "./chart-parts.js";
|
|
5
|
+
import { Skeleton } from "../ui/skeleton.js";
|
|
6
|
+
function Timeline({ items, emptyLabel = "Nothing yet.", pending = false, pendingRows = 3, className, ...props }) {
|
|
7
|
+
if (pending) {
|
|
8
|
+
return (_jsxs("div", { "data-slot": "timeline", "data-pending": "", "aria-busy": "true", className: cn("grid gap-4", className), children: [_jsx("span", { className: "sr-only", children: CHART_LOADING_TEXT }), Array.from({ length: pendingRows }, (_, i) => (_jsxs("div", { "aria-hidden": "true", className: "grid gap-1.5 pl-4", children: [_jsx(Skeleton, { className: "h-4 w-1/2" }), _jsx(Skeleton, { className: "h-3 w-1/3" })] }, i)))] }));
|
|
9
|
+
}
|
|
10
|
+
if (items.length === 0) {
|
|
11
|
+
return (_jsx("div", { "data-slot": "timeline", "data-empty": "", className: cn("text-ink", className), children: _jsx(ChartEmpty, { children: emptyLabel }) }));
|
|
12
|
+
}
|
|
13
|
+
return (_jsxs("ol", { "data-slot": "timeline",
|
|
14
|
+
// text-ink on the root, because text does not flip by inheritance (rule 3).
|
|
15
|
+
className: cn("relative m-0 grid list-none gap-4 p-0 pb-3 text-ink", className), ...props, children: [_jsx("span", { "aria-hidden": "true", "data-slot": "timeline-rule", className: "absolute bottom-0 left-[2px] top-[11px] w-px bg-line" }), items.map((item, i) => (_jsxs("li", { "data-slot": "timeline-item", className: "relative grid grid-cols-[5px_minmax(0,1fr)] gap-x-3", children: [_jsx("span", { "aria-hidden": "true", "data-slot": "timeline-dot", className: "mt-[9px] size-[5px] rounded-pill bg-(--cg-text-muted-strong)" }), _jsxs("div", { className: "grid min-w-0", children: [_jsx("span", { "data-slot": "timeline-title", className: "text-body-sm", children: item.title }), item.date ? (_jsx("time", { "data-slot": "timeline-date", dateTime: item.dateTime, className: "text-caption text-faint-strong", children: item.date })) : null] })] }, item.id ?? i)))] }));
|
|
16
|
+
}
|
|
17
|
+
export { Timeline };
|
|
18
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/blocks/timeline.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AA4CjD,SAAS,QAAQ,CAAC,EAChB,KAAK,EACL,UAAU,GAAG,cAAc,EAC3B,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,CAAC,EACf,SAAS,EACT,GAAG,KAAK,EAUT;IACC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,4BAAe,UAAU,kBAAc,EAAE,eAAW,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,aAC/F,eAAM,SAAS,EAAC,SAAS,YAAE,kBAAkB,GAAQ,EACpD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC7C,8BAAyB,MAAM,EAAC,SAAS,EAAC,mBAAmB,aAC3D,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,EAClC,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,GAAG,KAF1B,CAAC,CAGL,CACP,CAAC,IACE,CACP,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CACL,2BAAe,UAAU,gBAAY,EAAE,EAAC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YAC1E,KAAC,UAAU,cAAE,UAAU,GAAc,GACjC,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,2BACY,UAAU;QACpB,4EAA4E;QAC5E,SAAS,EAAE,EAAE,CAAC,qDAAqD,EAAE,SAAS,CAAC,KAC3E,KAAK,aAGT,8BACc,MAAM,eACR,eAAe,EACzB,SAAS,EAAC,sDAAsD,GAChE,EACD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,2BAEY,eAAe,EACzB,SAAS,EAAC,qDAAqD,aAE/D,8BACc,MAAM,eACR,cAAc,EACxB,SAAS,EAAC,8DAA8D,GACxE,EACF,eAAK,SAAS,EAAC,cAAc,aAC3B,4BAAgB,gBAAgB,EAAC,SAAS,EAAC,cAAc,YACtD,IAAI,CAAC,KAAK,GACN,EACN,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACX,4BAAgB,eAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAC,gCAAgC,YAChG,IAAI,CAAC,IAAI,GACL,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,KAlBD,IAAI,CAAC,EAAE,IAAI,CAAC,CAmBd,CACN,CAAC,IACC,CACN,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-setup.d.ts","sourceRoot":"","sources":["../../src/blocks/tool-setup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAOxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,8EAA8E;QAC9E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;QACtB,iEAAiE;QACjE,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;CACF;AAED,UAAU,iBAAiB;IACzB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,2EAA2E;IAC3E,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAC3C,CACI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;CAAE,GAC3D;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;CAAE,CAC9D,CAAA;
|
|
1
|
+
{"version":3,"file":"tool-setup.d.ts","sourceRoot":"","sources":["../../src/blocks/tool-setup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,9 @@ const TRIGGER_CLASS = cn(
|
|
|
55
55
|
const METHOD_TRIGGER_CLASS = cn("h-[30px] flex-none basis-auto rounded-xs px-3 text-caption font-normal text-faint", "data-active:bg-brand data-active:text-on-primary", "hover:text-ink data-active:hover:bg-brand-press data-active:hover:text-on-primary");
|
|
56
56
|
/** The body of one step: prompt, command and link, in that order. */
|
|
57
57
|
function StepBody({ step }) {
|
|
58
|
-
return (_jsxs(_Fragment, { children: [step.body ? _jsx("div", { className: "text-caption text-body", children: step.body }) : null, step.prompt ? _jsx(PromptBlock, { prompt: step.prompt, clip: true }) : null, step.code ? _jsx(CommandField, { command: step.code }) : null, step.link ? (_jsxs(Button, { render:
|
|
58
|
+
return (_jsxs(_Fragment, { children: [step.body ? _jsx("div", { className: "text-caption text-body", children: step.body }) : null, step.prompt ? _jsx(PromptBlock, { prompt: step.prompt, clip: true }) : null, step.code ? _jsx(CommandField, { command: step.code }) : null, step.link ? (_jsxs(Button, { render:
|
|
59
|
+
// eslint-disable-next-line jsx-a11y/anchor-has-content -- a Base UI render target: the button's children are rendered into this anchor
|
|
60
|
+
_jsx("a", { href: step.link.href, target: "_blank", rel: "noopener noreferrer" }),
|
|
59
61
|
// The rendered element is an anchor, so Base UI must not assume native
|
|
60
62
|
// button semantics.
|
|
61
63
|
nativeButton: false, variant: step.link.primary ? "default" : "secondary", size: "sm", className: "w-fit gap-2", children: [step.link.icon, step.link.label] })) : null] }));
|