@cloudgrid-io/ui 0.33.0 → 0.35.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.
Files changed (126) hide show
  1. package/README.md +25 -0
  2. package/dist/badge/css-live.d.ts +7 -4
  3. package/dist/badge/css-live.d.ts.map +1 -1
  4. package/dist/badge/css-live.js +9 -6
  5. package/dist/badge/css-live.js.map +1 -1
  6. package/dist/badge/palette.d.ts +1 -1
  7. package/dist/badge/palette.d.ts.map +1 -1
  8. package/dist/badge/palette.js +2 -1
  9. package/dist/badge/palette.js.map +1 -1
  10. package/dist/blocks/bar-chart.d.ts +97 -0
  11. package/dist/blocks/bar-chart.d.ts.map +1 -0
  12. package/dist/blocks/bar-chart.js +25 -0
  13. package/dist/blocks/bar-chart.js.map +1 -0
  14. package/dist/blocks/chart-parts.d.ts +101 -0
  15. package/dist/blocks/chart-parts.d.ts.map +1 -0
  16. package/dist/blocks/chart-parts.js +96 -0
  17. package/dist/blocks/chart-parts.js.map +1 -0
  18. package/dist/blocks/coming-soon-tag.d.ts +34 -0
  19. package/dist/blocks/coming-soon-tag.d.ts.map +1 -0
  20. package/dist/blocks/coming-soon-tag.js +37 -0
  21. package/dist/blocks/coming-soon-tag.js.map +1 -0
  22. package/dist/blocks/disabled-button.d.ts +43 -0
  23. package/dist/blocks/disabled-button.d.ts.map +1 -0
  24. package/dist/blocks/disabled-button.js +50 -0
  25. package/dist/blocks/disabled-button.js.map +1 -0
  26. package/dist/blocks/entity-card.d.ts.map +1 -1
  27. package/dist/blocks/entity-card.js +3 -1
  28. package/dist/blocks/entity-card.js.map +1 -1
  29. package/dist/blocks/full-screen-button.d.ts +9 -0
  30. package/dist/blocks/full-screen-button.d.ts.map +1 -0
  31. package/dist/blocks/full-screen-button.js +51 -0
  32. package/dist/blocks/full-screen-button.js.map +1 -0
  33. package/dist/blocks/icons.d.ts +30 -0
  34. package/dist/blocks/icons.d.ts.map +1 -1
  35. package/dist/blocks/icons.js +30 -0
  36. package/dist/blocks/icons.js.map +1 -1
  37. package/dist/blocks/invite-popup.d.ts +156 -0
  38. package/dist/blocks/invite-popup.d.ts.map +1 -0
  39. package/dist/blocks/invite-popup.js +99 -0
  40. package/dist/blocks/invite-popup.js.map +1 -0
  41. package/dist/blocks/meter.d.ts +57 -0
  42. package/dist/blocks/meter.d.ts.map +1 -0
  43. package/dist/blocks/meter.js +19 -0
  44. package/dist/blocks/meter.js.map +1 -0
  45. package/dist/blocks/notice.d.ts +87 -0
  46. package/dist/blocks/notice.d.ts.map +1 -0
  47. package/dist/blocks/notice.js +26 -0
  48. package/dist/blocks/notice.js.map +1 -0
  49. package/dist/blocks/pager.d.ts +76 -0
  50. package/dist/blocks/pager.d.ts.map +1 -0
  51. package/dist/blocks/pager.js +86 -0
  52. package/dist/blocks/pager.js.map +1 -0
  53. package/dist/blocks/phosphor-marks.d.ts +20 -0
  54. package/dist/blocks/phosphor-marks.d.ts.map +1 -1
  55. package/dist/blocks/phosphor-marks.js +30 -0
  56. package/dist/blocks/phosphor-marks.js.map +1 -1
  57. package/dist/blocks/ranked-list.d.ts +67 -0
  58. package/dist/blocks/ranked-list.d.ts.map +1 -0
  59. package/dist/blocks/ranked-list.js +32 -0
  60. package/dist/blocks/ranked-list.js.map +1 -0
  61. package/dist/blocks/side-nav.d.ts.map +1 -1
  62. package/dist/blocks/side-nav.js +3 -1
  63. package/dist/blocks/side-nav.js.map +1 -1
  64. package/dist/blocks/sign-in-options.d.ts.map +1 -1
  65. package/dist/blocks/sign-in-options.js +3 -1
  66. package/dist/blocks/sign-in-options.js.map +1 -1
  67. package/dist/blocks/stacked-bar.d.ts +64 -0
  68. package/dist/blocks/stacked-bar.d.ts.map +1 -0
  69. package/dist/blocks/stacked-bar.js +18 -0
  70. package/dist/blocks/stacked-bar.js.map +1 -0
  71. package/dist/blocks/stat-tile.d.ts +42 -1
  72. package/dist/blocks/stat-tile.d.ts.map +1 -1
  73. package/dist/blocks/stat-tile.js +23 -4
  74. package/dist/blocks/stat-tile.js.map +1 -1
  75. package/dist/blocks/tab-bar.d.ts.map +1 -1
  76. package/dist/blocks/tab-bar.js +3 -1
  77. package/dist/blocks/tab-bar.js.map +1 -1
  78. package/dist/blocks/timeline.d.ts +53 -0
  79. package/dist/blocks/timeline.d.ts.map +1 -0
  80. package/dist/blocks/timeline.js +18 -0
  81. package/dist/blocks/timeline.js.map +1 -0
  82. package/dist/blocks/tool-setup.d.ts.map +1 -1
  83. package/dist/blocks/tool-setup.js +3 -1
  84. package/dist/blocks/tool-setup.js.map +1 -1
  85. package/dist/blocks/trend.d.ts +33 -0
  86. package/dist/blocks/trend.d.ts.map +1 -0
  87. package/dist/blocks/trend.js +13 -0
  88. package/dist/blocks/trend.js.map +1 -0
  89. package/dist/claim-banner/css.d.ts +39 -0
  90. package/dist/claim-banner/css.d.ts.map +1 -0
  91. package/dist/claim-banner/css.js +87 -0
  92. package/dist/claim-banner/css.js.map +1 -0
  93. package/dist/claim-banner/index.d.ts +122 -0
  94. package/dist/claim-banner/index.d.ts.map +1 -0
  95. package/dist/claim-banner/index.js +135 -0
  96. package/dist/claim-banner/index.js.map +1 -0
  97. package/dist/docs.css +466 -0
  98. package/dist/expressive-code-palette.d.ts +5 -0
  99. package/dist/expressive-code-palette.d.ts.map +1 -0
  100. package/dist/expressive-code-palette.js +10 -0
  101. package/dist/expressive-code-palette.js.map +1 -0
  102. package/dist/expressive-code.d.ts +57 -0
  103. package/dist/expressive-code.d.ts.map +1 -0
  104. package/dist/expressive-code.js +101 -0
  105. package/dist/expressive-code.js.map +1 -0
  106. package/dist/index.d.ts +13 -0
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +13 -0
  109. package/dist/index.js.map +1 -1
  110. package/dist/tokens/base.json +13 -0
  111. package/dist/tokens/surface-ink.json +13 -0
  112. package/dist/tokens/surface-panel.json +13 -0
  113. package/dist/tokens.css +36 -0
  114. package/dist/tokens.json +6 -3
  115. package/dist/ui/card.d.ts +23 -2
  116. package/dist/ui/card.d.ts.map +1 -1
  117. package/dist/ui/card.js +16 -5
  118. package/dist/ui/card.js.map +1 -1
  119. package/dist/ui/drawer.d.ts +37 -6
  120. package/dist/ui/drawer.d.ts.map +1 -1
  121. package/dist/ui/drawer.js +31 -7
  122. package/dist/ui/drawer.js.map +1 -1
  123. package/dist/ui/input-group.d.ts.map +1 -1
  124. package/dist/ui/input-group.js +3 -1
  125. package/dist/ui/input-group.js.map +1 -1
  126. package/package.json +18 -3
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
5
+ import { Button } from "../ui/button.js";
6
+ import { CheckIcon, CloseIcon, CopyIcon, InvitePersonIcon } from "./icons.js";
7
+ import { cn } from "../lib/cloudgrid-cn.js";
8
+ const INVITE_DEFAULTS = {
9
+ title: "Know someone who'd use CloudGrid?",
10
+ description: "Send them this link to start their own grid.",
11
+ copyLabel: "Copy",
12
+ copiedLabel: "Copied",
13
+ blockedLabel: "Blocked",
14
+ copyAriaLabel: "Copy the invite link",
15
+ closeLabel: "Close",
16
+ pillLabel: "Invite people",
17
+ };
18
+ /** How long Copied shows before the label returns to Copy. `CommandField`'s. */
19
+ const COPIED_MS = 1600;
20
+ // The focus ring the library's hand-built controls use (AgentPrompt, the
21
+ // gallery's own copy control), so the x and the pill ring like everything else.
22
+ const FOCUS_RING = "outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring";
23
+ // The card. 384 wide, 16px corners, padding 18 / 20 / 20, the badge owner
24
+ // panel's two shadows. `max-w` keeps it on screen in a window narrower than
25
+ // 432px with `layout="card"` pinned.
26
+ const CARD = "right-6 bottom-6 w-96 max-w-[calc(100vw-3rem)] rounded-xl border px-5 pt-4.5 pb-5";
27
+ // The sheet. Full width, 20px top corners (`--cg-radius-container`), no bottom
28
+ // border, padding 8 / 16 / 34; the 34 is the frame's, room for a phone's home
29
+ // indicator, and the safe area wins where it is larger.
30
+ const SHEET = "inset-x-0 bottom-0 w-full max-w-none rounded-t-container rounded-b-none border-x border-t border-b-0 px-4 pt-2 pb-[max(2.125rem,env(safe-area-inset-bottom))]";
31
+ const SHEET_BELOW_SM = "max-sm:inset-x-0 max-sm:bottom-0 max-sm:w-full max-sm:max-w-none max-sm:rounded-t-container max-sm:rounded-b-none max-sm:border-x max-sm:border-t max-sm:border-b-0 max-sm:px-4 max-sm:pt-2 max-sm:pb-[max(2.125rem,env(safe-area-inset-bottom))]";
32
+ const LAYOUT_CLASS = {
33
+ auto: cn(CARD, SHEET_BELOW_SM),
34
+ card: CARD,
35
+ sheet: SHEET,
36
+ };
37
+ const GRABBER_ROW_CLASS = {
38
+ auto: "hidden max-sm:flex",
39
+ card: "hidden",
40
+ sheet: "flex",
41
+ };
42
+ /**
43
+ * The collapsed invite: a 44px pill with the UserPlus mark and "Invite people".
44
+ *
45
+ * A plain button. Inside `InvitePopup` it is the dialog's trigger; on its own it
46
+ * takes `onClick` like any button. Its `fixed` corner placement is `InvitePopup`'s
47
+ * business (`placed`), not the pill's, so a consumer can put one in a toolbar.
48
+ */
49
+ function InvitePill({ label = INVITE_DEFAULTS.pillLabel, placed = false, className, type = "button", ...props }) {
50
+ return (_jsxs("button", { "data-slot": "invite-pill", type: type, className: cn("inline-flex h-11 shrink-0 items-center gap-2 rounded-pill border border-hairline pr-4.5 pl-3.5", "bg-popover text-ink in-data-[cg-surface=panel]:bg-panel in-data-[cg-surface=ink]:bg-code", "font-ui text-body-sm leading-none font-bold whitespace-nowrap shadow-(--cg-shadow-card-hover)", "cursor-pointer transition-[background-color,box-shadow] duration-(--cg-duration) ease-out hover:shadow-(--cg-shadow-hover) hover:bg-raised in-data-[cg-surface=panel]:hover:bg-(--cg-hover) in-data-[cg-surface=ink]:hover:bg-(--cg-hover)", FOCUS_RING, placed && "fixed right-6 bottom-6 z-50", className), ...props, children: [_jsx(InvitePersonIcon, { className: "size-4.5 text-(--cg-text-accent)" }), label] }));
51
+ }
52
+ function InvitePopup({ link, open, onOpenChange, onCopy, pill = true, layout = "auto", copyState, initialFocus = true, container, title = INVITE_DEFAULTS.title, description = INVITE_DEFAULTS.description, copyLabel = INVITE_DEFAULTS.copyLabel, copiedLabel = INVITE_DEFAULTS.copiedLabel, blockedLabel = INVITE_DEFAULTS.blockedLabel, copyAriaLabel = INVITE_DEFAULTS.copyAriaLabel, closeLabel = INVITE_DEFAULTS.closeLabel, pillLabel = INVITE_DEFAULTS.pillLabel, className, }) {
53
+ const [ownState, setOwnState] = React.useState("idle");
54
+ const state = copyState ?? ownState;
55
+ const timer = React.useRef(undefined);
56
+ const popupRef = React.useRef(null);
57
+ const pillRef = React.useRef(null);
58
+ React.useEffect(() => () => clearTimeout(timer.current), []);
59
+ async function copy() {
60
+ let next;
61
+ try {
62
+ await navigator.clipboard.writeText(link);
63
+ next = "copied";
64
+ }
65
+ catch {
66
+ next = "blocked";
67
+ }
68
+ setOwnState(next);
69
+ if (next === "copied")
70
+ onCopy?.(link);
71
+ clearTimeout(timer.current);
72
+ timer.current = setTimeout(() => setOwnState("idle"), COPIED_MS);
73
+ }
74
+ const labels = {
75
+ idle: copyLabel,
76
+ copied: copiedLabel,
77
+ blocked: blockedLabel,
78
+ };
79
+ return (_jsxs(DialogPrimitive.Root, { open: open, onOpenChange: (next) => onOpenChange(next), modal: false, disablePointerDismissal: true, children: [pill ? (_jsx(DialogPrimitive.Trigger, { ref: pillRef,
80
+ // Hidden, not unmounted, while the card is open: the pill is where
81
+ // focus returns, so it has to be the same element when it comes back.
82
+ render: _jsx(InvitePill, { label: pillLabel, placed: true, className: open ? "hidden" : undefined }) })) : null, _jsx(DialogPrimitive.Portal, { container: container, children: _jsxs(DialogPrimitive.Popup, { ref: popupRef, "data-slot": "invite-popup", "data-layout": layout, initialFocus: initialFocus ? popupRef : false, finalFocus: pill ? pillRef : undefined, className: cn("fixed z-50 flex flex-col gap-3.5 border-hairline text-ink outline-none", "bg-popover in-data-[cg-surface=panel]:bg-panel in-data-[cg-surface=ink]:bg-code", "shadow-[var(--cg-shadow-panel),var(--cg-shadow-hover)]", "duration-150 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", LAYOUT_CLASS[layout], className), children: [_jsx("div", { "data-slot": "invite-popup-grabber", "aria-hidden": "true", className: cn("justify-center", GRABBER_ROW_CLASS[layout]), children: _jsx("span", { className: "block h-1 w-9 rounded-pill bg-control" }) }), _jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx(DialogPrimitive.Title, { "data-slot": "invite-popup-title", className: "m-0 min-w-0 flex-1 font-ui text-body-18 leading-heading font-bold text-ink", children: title }), _jsx(DialogPrimitive.Close, { "data-slot": "invite-popup-close", "aria-label": closeLabel, className: cn("relative grid size-7 shrink-0 cursor-pointer place-items-center rounded-pill text-body", "transition-colors duration-(--cg-duration) ease-out hover:bg-(--cg-hover) hover:text-ink",
83
+ // The 44px hit area round a 28px drawing.
84
+ "before:absolute before:-inset-2 before:content-['']", FOCUS_RING), children: _jsx(CloseIcon, { className: "size-4" }) })] }), _jsx(DialogPrimitive.Description, { "data-slot": "invite-popup-description", className: "m-0 font-body text-[length:var(--cg-body-14)] leading-body text-body", children: description }), _jsxs("div", { "data-slot": "invite-popup-field", className: cn("flex items-center gap-2 rounded-md border border-hairline py-1.5 pr-1.5 pl-3.5", "bg-raised in-data-[cg-surface=panel]:bg-(--cg-hover) in-data-[cg-surface=ink]:bg-(--cg-hover)"), children: [_jsx("code", { "data-slot": "invite-popup-link", title: link, className: "min-w-0 flex-1 truncate font-mono text-caption text-ink", children: link.replace(/^https?:\/\//, "") }), _jsxs(Button, { type: "button", variant: "cta", onClick: copy, "data-slot": "invite-popup-copy", "data-state": state, "aria-label": copyAriaLabel, className: cn(
85
+ // EmptyCreations' Add, the frame's same button: 40px, 16px corners,
86
+ // Manrope 600 at 15px. 12 / 14 padding round a 20px mark.
87
+ "relative h-10 min-w-27 gap-1.5 rounded-xl pr-3.5 pl-3 font-ui text-body-sm font-bold",
88
+ // The 44px hit area: 2px above and below, inside the field's padding.
89
+ // 3px from the pseudo's origin, because an absolute box is placed
90
+ // against the PADDING box and Button carries a 1px transparent
91
+ // border: 38 + 3 + 3 = 44, where -0.5 measured 42 (e2e).
92
+ "before:absolute before:inset-x-0 before:-inset-y-0.75 before:content-['']"), children: [state === "copied" ? _jsx(CheckIcon, { className: "size-5" }) : _jsx(CopyIcon, { className: "size-5" }), _jsx("span", { className: "grid", children: ["idle", "copied", "blocked"].map((s) => (_jsx("span", { "data-label": s, "aria-hidden": s === state ? undefined : true, className: cn("[grid-area:1/1]", s === state ? "visible" : "invisible"), children: labels[s] }, s))) })] })] }), _jsx("span", { "data-slot": "invite-popup-status", "aria-live": "polite", className: "sr-only", children: state === "copied"
93
+ ? copiedLabel
94
+ : state === "blocked"
95
+ ? "The browser blocked the copy"
96
+ : "" })] }) })] }));
97
+ }
98
+ export { InvitePill, InvitePopup, INVITE_DEFAULTS };
99
+ //# sourceMappingURL=invite-popup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-popup.js","sourceRoot":"","sources":["../../src/blocks/invite-popup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import * as React from "react";
2
+ /**
3
+ * A determinate bar: how much of something there is (#333). Reach ("312 active
4
+ * of 540 with access") and each row of `RankedList`.
5
+ *
6
+ * `ProgressBar` is the other bar in the library and is not this: it is work in
7
+ * flight, with no value. A meter is a measurement and has one.
8
+ *
9
+ * ## Base UI's Meter underneath
10
+ *
11
+ * `role="meter"` with `aria-valuenow`, `-min`, `-max` and `aria-valuetext`, from
12
+ * `@base-ui/react/meter`. The value text defaults to the share ("58%"); a caller
13
+ * with better words passes `valueText` ("312 active of 540 with access"). The
14
+ * number format is fixed to `en-US` unless `locale` says otherwise, so a server
15
+ * render and a hydrated one agree on "58%". `label` is the accessible name and
16
+ * is required in spirit: a meter with no name is a number about nothing. A
17
+ * meter that only repeats a number printed beside it can be hidden instead
18
+ * (`aria-hidden`), which is what `RankedList` does.
19
+ *
20
+ * ## Two sizes, both from the frames
21
+ *
22
+ * - `default`: 16px, 4px rounded ends. Reach.
23
+ * - `sm`: 4px, a pill. The rows of Most used by.
24
+ *
25
+ * ## Colour
26
+ *
27
+ * The fill is `--cg-text-accent` (purple on the page, white on the panel, lime
28
+ * on ink). The track is `--cg-border-hairline`, the light grey the frames draw,
29
+ * redeclared in both dark scopes so it stays a step off the surface there.
30
+ *
31
+ * ## Pending
32
+ *
33
+ * `pending` draws the track alone, pulsing, with no fill and no value: the
34
+ * number is on its way. A real zero is `value={0}`, which draws an empty track
35
+ * and says "0%".
36
+ */
37
+ /** The bar's height: `default` 16px (Reach), `sm` 4px (a ranked row). */
38
+ export type MeterSize = "default" | "sm";
39
+ declare function Meter({ value, min, max, label, valueText, locale, size, pending, className, ...props }: Omit<React.ComponentProps<"div">, "children" | "role"> & {
40
+ /** The measurement. Clamped to `min`..`max`. */
41
+ value: number;
42
+ /** @default 0 */
43
+ min?: number;
44
+ /** @default 100 */
45
+ max?: number;
46
+ /** The accessible name, such as "Reach". */
47
+ label?: string;
48
+ /** What a screen reader says for the value. Defaults to the share, "58%". */
49
+ valueText?: string;
50
+ /** The locale the default value text is formatted in. */
51
+ locale?: Intl.LocalesArgument;
52
+ size?: MeterSize;
53
+ /** The value is on its way: draw the track alone, never a zero. */
54
+ pending?: boolean;
55
+ }): React.JSX.Element;
56
+ export { Meter };
57
+ //# sourceMappingURL=meter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../src/blocks/meter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,yEAAyE;AACzE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAA;AAOxC,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,GAAO,EACP,GAAS,EACT,KAAK,EACL,SAAS,EACT,MAAgB,EAChB,IAAgB,EAChB,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG;IAC1D,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CAAA;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBA8CA;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Meter as MeterPrimitive } from "@base-ui/react/meter";
4
+ import { cn } from "../lib/cloudgrid-cn.js";
5
+ import { CHART_LOADING_TEXT } from "./chart-parts.js";
6
+ const TRACK_SIZE = {
7
+ default: "h-4 rounded-[4px]",
8
+ sm: "h-1 rounded-pill",
9
+ };
10
+ function Meter({ value, min = 0, max = 100, label, valueText, locale = "en-US", size = "default", pending = false, className, ...props }) {
11
+ if (pending) {
12
+ return (_jsxs("div", { "data-slot": "meter", "data-size": size, "data-pending": "", "aria-busy": "true", className: cn("w-full", className), ...props, children: [_jsx("span", { className: "sr-only", children: label ? `${label}: ${CHART_LOADING_TEXT}` : CHART_LOADING_TEXT }), _jsx("div", { "aria-hidden": "true", className: cn("w-full animate-pulse bg-hairline", TRACK_SIZE[size]) })] }));
13
+ }
14
+ // A max at or under min has no range; draw empty rather than divide by zero.
15
+ const safeMax = max > min ? max : min + 1;
16
+ return (_jsx(MeterPrimitive.Root, { "data-slot": "meter", "data-size": size, value: Number.isFinite(value) ? value : min, min: min, max: safeMax, locale: locale, "aria-label": label, ...(valueText !== undefined ? { "aria-valuetext": valueText } : {}), className: cn("w-full", className), ...props, children: _jsx(MeterPrimitive.Track, { "data-slot": "meter-track", className: cn("block w-full overflow-hidden bg-hairline", TRACK_SIZE[size]), children: _jsx(MeterPrimitive.Indicator, { "data-slot": "meter-indicator", className: "block h-full bg-(--cg-text-accent)" }) }) }));
17
+ }
18
+ export { Meter };
19
+ //# sourceMappingURL=meter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["../../src/blocks/meter.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAyC9D,MAAM,UAAU,GAA8B;IAC5C,OAAO,EAAE,mBAAmB;IAC5B,EAAE,EAAE,kBAAkB;CACvB,CAAA;AAED,SAAS,KAAK,CAAC,EACb,KAAK,EACL,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,GAAG,EACT,KAAK,EACL,SAAS,EACT,MAAM,GAAG,OAAO,EAChB,IAAI,GAAG,SAAS,EAChB,OAAO,GAAG,KAAK,EACf,SAAS,EACT,GAAG,KAAK,EAiBT;IACC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,4BACY,OAAO,eACN,IAAI,kBACF,EAAE,eACL,MAAM,EAChB,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,KAC9B,KAAK,aAET,eAAM,SAAS,EAAC,SAAS,YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,kBAAkB,EAAE,CAAC,CAAC,CAAC,kBAAkB,GAAQ,EACjG,6BAAiB,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,GAAI,IAC3F,CACP,CAAA;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAEzC,OAAO,CACL,KAAC,cAAc,CAAC,IAAI,iBACR,OAAO,eACN,IAAI,EACf,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAC3C,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,gBACF,KAAK,KAGb,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,KAC9B,KAAK,YAET,KAAC,cAAc,CAAC,KAAK,iBACT,aAAa,EACvB,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,YAE3E,KAAC,cAAc,CAAC,SAAS,iBACb,iBAAiB,EAC3B,SAAS,EAAC,oCAAoC,GAC9C,GACmB,GACH,CACvB,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,87 @@
1
+ import * as React from "react";
2
+ /**
3
+ * THE NOTICE (#334, Figma 10780:7160 "Needs attention").
4
+ *
5
+ * A banner at the top of a page that says something needs the reader, shows
6
+ * what, and offers one way to deal with it. The App page v2's Overview opens
7
+ * with one when a setup step is unfinished:
8
+ *
9
+ * ```
10
+ * Needs attention
11
+ * (Pending) Verify rfp.acme.com [ Continue setup ]
12
+ * ```
13
+ *
14
+ * `ExpiryNotice` is the same shape for one subject, expiry, with its words and
15
+ * variants built in. This is the general one: the caller supplies the title,
16
+ * the content row and the action, and the block owns the arrangement, the
17
+ * ground and the accessibility.
18
+ *
19
+ * ## Props
20
+ *
21
+ * - `title`: the heading. "Needs attention".
22
+ * - `children`: the content row. The frame draws a status chip and one line
23
+ * ("Pending" + "Verify rfp.acme.com"); any inline content fits.
24
+ * - `action`: at most one. `{ label, onClick }` for a button, or
25
+ * `{ label, href }` for a link (rendered as an `<a>` through `Button`'s
26
+ * `render`). The URL is the caller's: build it with the Console's URL
27
+ * helpers, never inline. Leave it out and the notice is read-only.
28
+ *
29
+ * ## Ground
30
+ *
31
+ * The warm `--cg-expired-fill`, the value the frame draws (#fdf3e0) and the
32
+ * ground `ExpiryNotice` uses for its own warning, so two notices on one page
33
+ * read as one family. One tone only, because the frames draw one; a second is
34
+ * a design decision, not a prop to add speculatively.
35
+ *
36
+ * It is a self-contained light card on every surface (`data-theme="default"`,
37
+ * the base scope tokens.css declares beside `:root`), the arrangement
38
+ * `ExpiryNotice`'s `from-email` variant and `EntityCard`'s panel use. Measured,
39
+ * not preferred: inside the purple panel the fill resolves to a 16% white wash,
40
+ * and the panel's white text on it is 4.33:1, under the floor for 17px type.
41
+ * Reset, the title and the content are the page's ink on the warm fill on the
42
+ * page, the panel and ink alike.
43
+ *
44
+ * The action IS the library's secondary button: `Button` outline at its
45
+ * default size, with no class of its own (founder, 2026-10-19: "the same
46
+ * language" as every other secondary action). The frame drew a 40px pill; the
47
+ * library's control wins.
48
+ *
49
+ * ## Why the root redeclares five shadcn variables
50
+ *
51
+ * The outline variant paints through shadcn's bridge (`--background`,
52
+ * `--border`, `--muted`, `--foreground`, `--ring`). `shadcn.css` declares the
53
+ * bridge on `:root` and on the two dark surfaces, not on a `data-theme` reset,
54
+ * and a custom property is resolved where it is declared (CLAUDE.md rule 2). So
55
+ * inside this reset on the purple panel the button would inherit the PANEL's
56
+ * values: a purple button on a cream card. The root restates those five with
57
+ * the exact `:root` mapping from `shadcn.css`, declared here, so they resolve
58
+ * against the reset's light tokens and the button is pixel for pixel the one on
59
+ * white. `test/app-page-shell.test.mjs` reads `shadcn.css` and fails if the two
60
+ * mappings drift apart.
61
+ *
62
+ * ## Accessibility
63
+ *
64
+ * A region named by its title (`aria-labelledby`), with `role="status"` as
65
+ * `ExpiryNotice` has: polite, so a notice that appears while the reader is on
66
+ * the page is announced without taking focus. The action is described by the
67
+ * content row, so a screen reader that lands on "Continue setup" hears what it
68
+ * continues. On a phone the action drops under the content, at its own width.
69
+ */
70
+ export type NoticeAction = {
71
+ label: string;
72
+ onClick: () => void;
73
+ href?: never;
74
+ } | {
75
+ label: string;
76
+ href: string;
77
+ onClick?: () => void;
78
+ };
79
+ export interface NoticeProps extends Omit<React.ComponentProps<"section">, "title"> {
80
+ /** The heading. "Needs attention". */
81
+ title: React.ReactNode;
82
+ /** One way to deal with it. Leave out for a reader who cannot act. */
83
+ action?: NoticeAction;
84
+ }
85
+ declare function Notice({ title, action, className, children, ...props }: NoticeProps): React.JSX.Element;
86
+ export { Notice };
87
+ //# sourceMappingURL=notice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notice.d.ts","sourceRoot":"","sources":["../../src/blocks/notice.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH,MAAM,MAAM,YAAY,GACpB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GACpD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAEzD,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IACjF,sCAAsC;IACtC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,sEAAsE;IACtE,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAUD,iBAAS,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,qBA6C5E;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/cloudgrid-cn.js";
5
+ import { Button } from "../ui/button.js";
6
+ /**
7
+ * shadcn's `:root` bridge for the five variables the outline Button reads,
8
+ * restated on the reset so they resolve against its light tokens. The same
9
+ * mapping as `shadcn.css`; see "Why the root redeclares" above.
10
+ */
11
+ const BRIDGE_RESET = "[--background:var(--cg-surface-page)] [--border:var(--cg-border-hairline)] [--muted:var(--cg-surface-subtle)] [--foreground:var(--cg-text-primary)] [--ring:var(--cg-text-accent)]";
12
+ function Notice({ title, action, className, children, ...props }) {
13
+ const titleId = React.useId();
14
+ const bodyId = React.useId();
15
+ return (_jsxs("section", { role: "status", "aria-labelledby": titleId, "data-slot": "notice", "data-theme": "default",
16
+ // text-ink on the root, because text does not flip by inheritance (rule 3).
17
+ className: cn("grid gap-1 rounded-xl bg-expired-fill px-6 py-4 text-ink", BRIDGE_RESET, className), ...props, children: [_jsx("p", { id: titleId, "data-slot": "notice-title", className: "m-0 text-heading-sm font-medium text-ink", children: title }), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4 max-md:flex-col max-md:items-start", children: [_jsx("div", { id: bodyId, "data-slot": "notice-body", className: "flex min-w-0 flex-1 flex-wrap items-center gap-2 text-body-sm text-ink", children: children }), action ? (_jsx(Button, { variant: "outline", "data-slot": "notice-action", "aria-describedby": bodyId, onClick: action.onClick, ...(action.href !== undefined
18
+ ? {
19
+ // eslint-disable-next-line jsx-a11y/anchor-has-content -- a Base UI render target: the button's children (the label) are rendered into this anchor
20
+ render: _jsx("a", { href: action.href }),
21
+ nativeButton: false,
22
+ }
23
+ : { type: "button" }), children: action.label })) : null] })] }));
24
+ }
25
+ export { Notice };
26
+ //# sourceMappingURL=notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notice.js","sourceRoot":"","sources":["../../src/blocks/notice.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAkF7C;;;;GAIG;AACH,MAAM,YAAY,GAChB,oLAAoL,CAAA;AAEtL,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAe;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IAE5B,OAAO,CACL,mBACE,IAAI,EAAC,QAAQ,qBACI,OAAO,eACd,QAAQ,gBACP,SAAS;QACpB,4EAA4E;QAC5E,SAAS,EAAE,EAAE,CAAC,0DAA0D,EAAE,YAAY,EAAE,SAAS,CAAC,KAC9F,KAAK,aAET,YAAG,EAAE,EAAE,OAAO,eAAY,cAAc,EAAC,SAAS,EAAC,0CAA0C,YAC1F,KAAK,GACJ,EACJ,eAAK,SAAS,EAAC,sFAAsF,aACnG,cACE,EAAE,EAAE,MAAM,eACA,aAAa,EACvB,SAAS,EAAC,wEAAwE,YAEjF,QAAQ,GACL,EACL,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,eACP,eAAe,sBACP,MAAM,EACxB,OAAO,EAAE,MAAM,CAAC,OAAO,KACnB,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;4BAC5B,CAAC,CAAC;gCACE,mJAAmJ;gCACnJ,MAAM,EAAE,YAAG,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI;gCAChC,YAAY,EAAE,KAAK;6BACpB;4BACH,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,YAE/B,MAAM,CAAC,KAAK,GACN,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,IACE,CACX,CAAA;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,76 @@
1
+ import * as React from "react";
2
+ /**
3
+ * One item at a time, with previous and next and "1 of 2" between them (#333):
4
+ * the Comments card on the App page's Overview (Figma "App page: final cut", 01,
5
+ * "One-comment pager").
6
+ *
7
+ * `Carousel` is the library's other one-at-a-time block and does not fit: it is a
8
+ * strip of images that scrolls. This shows one node and swaps it.
9
+ *
10
+ * ## Items are nodes, rendered by the caller
11
+ *
12
+ * `items` is an array of nodes, each one whole item (a `FeedPost`, a quote), so
13
+ * the pager knows nothing about comments. It fetches nothing; "1 of 2" counts
14
+ * what it was given.
15
+ *
16
+ * ## Keyboard and screen reader
17
+ *
18
+ * The WAI carousel pattern, without rotation: a region named by `label` with
19
+ * `aria-roledescription="carousel"`, the visible item a group named "1 of 2"
20
+ * with `aria-roledescription="slide"`, and that item in a polite live region,
21
+ * so pressing Next reads the new item. Previous and Next are Base UI buttons,
22
+ * reached with Tab and pressed with Enter or Space; Left and Right arrows move
23
+ * too while focus is on either. At the first item Previous is disabled, at the
24
+ * last Next is, and both stay focusable while disabled, so focus is not dropped
25
+ * onto the page when the pressed button stops applying.
26
+ *
27
+ * Disabled is `aria-disabled`, set here, rather than Base UI's `disabled` with
28
+ * `focusableWhenDisabled`. Base UI's disabled button swallows every keydown, so
29
+ * the arrow keys would stop working on the very button focus has just landed
30
+ * on, and the handler cannot move to the wrapper because a key handler on a
31
+ * static element is what jsx-a11y rejects. `go` ignores a move past either end,
32
+ * so a press on a disabled button does nothing. With one item there is nothing to page and the
33
+ * controls are not drawn.
34
+ *
35
+ * ## Controlled or not
36
+ *
37
+ * `defaultIndex` for a pager that keeps its own place; `index` and
38
+ * `onIndexChange` for one the caller drives.
39
+ *
40
+ * ## Icons
41
+ *
42
+ * The frame draws Phosphor ArrowLeft and ArrowRight. The library has the right
43
+ * arrow only (`ForwardIcon`), so the default pair is the chevrons, which match
44
+ * each other; `previousIcon` and `nextIcon` take any mark from
45
+ * `blocks/icons.tsx`.
46
+ *
47
+ * ## States
48
+ *
49
+ * Empty prints `emptyLabel`. Pending draws a skeleton and says "Loading".
50
+ */
51
+ declare function Pager({ items, label, index: indexProp, defaultIndex, onIndexChange, previousLabel, nextLabel, previousIcon, nextIcon, emptyLabel, pending, className, ...props }: Omit<React.ComponentProps<"section">, "children"> & {
52
+ /** One node per item, in order. */
53
+ items: readonly React.ReactNode[];
54
+ /** The region's accessible name, such as "Comments". */
55
+ label: string;
56
+ /** The shown item, when the caller drives the pager. */
57
+ index?: number;
58
+ /** The first item shown, when the pager keeps its own place. */
59
+ defaultIndex?: number;
60
+ /** Called with the new index when Previous or Next is pressed. */
61
+ onIndexChange?: (index: number) => void;
62
+ /** Previous's accessible name. */
63
+ previousLabel?: string;
64
+ /** Next's accessible name. */
65
+ nextLabel?: string;
66
+ /** Previous's mark. Defaults to the left chevron. */
67
+ previousIcon?: React.ReactNode;
68
+ /** Next's mark. Defaults to the right chevron. */
69
+ nextIcon?: React.ReactNode;
70
+ /** Printed when there are no items. */
71
+ emptyLabel?: React.ReactNode;
72
+ /** The items are on their way: draw a skeleton. */
73
+ pending?: boolean;
74
+ }): React.JSX.Element;
75
+ export { Pager };
76
+ //# sourceMappingURL=pager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pager.d.ts","sourceRoot":"","sources":["../../src/blocks/pager.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,KAAK,EACL,KAAK,EAAE,SAAS,EAChB,YAAgB,EAChB,aAAa,EACb,aAA0B,EAC1B,SAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,UAA2B,EAC3B,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;IACrD,mCAAmC;IACnC,KAAK,EAAE,SAAS,KAAK,CAAC,SAAS,EAAE,CAAA;IACjC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBA6FA;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,86 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/cloudgrid-cn.js";
5
+ import { Button } from "../ui/button.js";
6
+ import { CHART_LOADING_TEXT, ChartEmpty } from "./chart-parts.js";
7
+ import { ChevronLeftIcon, ChevronRightIcon } from "./icons.js";
8
+ import { Skeleton } from "../ui/skeleton.js";
9
+ /**
10
+ * One item at a time, with previous and next and "1 of 2" between them (#333):
11
+ * the Comments card on the App page's Overview (Figma "App page: final cut", 01,
12
+ * "One-comment pager").
13
+ *
14
+ * `Carousel` is the library's other one-at-a-time block and does not fit: it is a
15
+ * strip of images that scrolls. This shows one node and swaps it.
16
+ *
17
+ * ## Items are nodes, rendered by the caller
18
+ *
19
+ * `items` is an array of nodes, each one whole item (a `FeedPost`, a quote), so
20
+ * the pager knows nothing about comments. It fetches nothing; "1 of 2" counts
21
+ * what it was given.
22
+ *
23
+ * ## Keyboard and screen reader
24
+ *
25
+ * The WAI carousel pattern, without rotation: a region named by `label` with
26
+ * `aria-roledescription="carousel"`, the visible item a group named "1 of 2"
27
+ * with `aria-roledescription="slide"`, and that item in a polite live region,
28
+ * so pressing Next reads the new item. Previous and Next are Base UI buttons,
29
+ * reached with Tab and pressed with Enter or Space; Left and Right arrows move
30
+ * too while focus is on either. At the first item Previous is disabled, at the
31
+ * last Next is, and both stay focusable while disabled, so focus is not dropped
32
+ * onto the page when the pressed button stops applying.
33
+ *
34
+ * Disabled is `aria-disabled`, set here, rather than Base UI's `disabled` with
35
+ * `focusableWhenDisabled`. Base UI's disabled button swallows every keydown, so
36
+ * the arrow keys would stop working on the very button focus has just landed
37
+ * on, and the handler cannot move to the wrapper because a key handler on a
38
+ * static element is what jsx-a11y rejects. `go` ignores a move past either end,
39
+ * so a press on a disabled button does nothing. With one item there is nothing to page and the
40
+ * controls are not drawn.
41
+ *
42
+ * ## Controlled or not
43
+ *
44
+ * `defaultIndex` for a pager that keeps its own place; `index` and
45
+ * `onIndexChange` for one the caller drives.
46
+ *
47
+ * ## Icons
48
+ *
49
+ * The frame draws Phosphor ArrowLeft and ArrowRight. The library has the right
50
+ * arrow only (`ForwardIcon`), so the default pair is the chevrons, which match
51
+ * each other; `previousIcon` and `nextIcon` take any mark from
52
+ * `blocks/icons.tsx`.
53
+ *
54
+ * ## States
55
+ *
56
+ * Empty prints `emptyLabel`. Pending draws a skeleton and says "Loading".
57
+ */
58
+ function Pager({ items, label, index: indexProp, defaultIndex = 0, onIndexChange, previousLabel = "Previous", nextLabel = "Next", previousIcon, nextIcon, emptyLabel = "Nothing yet.", pending = false, className, ...props }) {
59
+ const [ownIndex, setOwnIndex] = React.useState(defaultIndex);
60
+ const count = items.length;
61
+ const raw = indexProp ?? ownIndex;
62
+ const index = count === 0 ? 0 : Math.min(Math.max(0, raw), count - 1);
63
+ const go = (next) => {
64
+ if (next < 0 || next >= count || next === index)
65
+ return;
66
+ if (indexProp === undefined)
67
+ setOwnIndex(next);
68
+ onIndexChange?.(next);
69
+ };
70
+ const onKeyDown = (event) => {
71
+ if (event.key === "ArrowLeft") {
72
+ event.preventDefault();
73
+ go(index - 1);
74
+ }
75
+ else if (event.key === "ArrowRight") {
76
+ event.preventDefault();
77
+ go(index + 1);
78
+ }
79
+ };
80
+ const position = `${index + 1} of ${count}`;
81
+ return (_jsx("section", { "data-slot": "pager", "data-pending": pending ? "" : undefined, "data-empty": !pending && count === 0 ? "" : undefined, "aria-roledescription": "carousel", "aria-label": label, "aria-busy": pending || undefined,
82
+ // text-ink on the root, because text does not flip by inheritance (rule 3).
83
+ className: cn("flex min-w-0 flex-col gap-4 text-ink", className), ...props, children: pending ? (_jsxs("div", { "data-slot": "pager-pending", className: "grid gap-2", children: [_jsx("span", { className: "sr-only", children: CHART_LOADING_TEXT }), _jsx(Skeleton, { "aria-hidden": "true", className: "h-8 w-1/2" }), _jsx(Skeleton, { "aria-hidden": "true", className: "h-16 w-full" })] })) : count === 0 ? (_jsx(ChartEmpty, { children: emptyLabel })) : (_jsxs(_Fragment, { children: [_jsx("div", { "data-slot": "pager-viewport", "aria-live": "polite", className: "min-w-0 flex-1", children: _jsx("div", { "data-slot": "pager-item", role: "group", "aria-roledescription": "slide", "aria-label": position, children: items[index] }, index) }), count > 1 ? (_jsxs("div", { "data-slot": "pager-controls", className: "mt-auto flex items-center justify-between gap-3", children: [_jsx(Button, { "data-slot": "pager-previous", onKeyDown: onKeyDown, variant: "ghost", size: "icon-sm", "aria-label": previousLabel, "aria-disabled": index === 0 || undefined, onClick: () => go(index - 1), className: "aria-disabled:cursor-default aria-disabled:opacity-50 aria-disabled:hover:bg-transparent [&_svg]:size-5", children: previousIcon ?? _jsx(ChevronLeftIcon, {}) }), _jsx("span", { "data-slot": "pager-position", "aria-hidden": "true", className: "text-caption text-faint-strong tabular-nums", children: position }), _jsx(Button, { "data-slot": "pager-next", onKeyDown: onKeyDown, variant: "ghost", size: "icon-sm", "aria-label": nextLabel, "aria-disabled": index === count - 1 || undefined, onClick: () => go(index + 1), className: "aria-disabled:cursor-default aria-disabled:opacity-50 aria-disabled:hover:bg-transparent [&_svg]:size-5", children: nextIcon ?? _jsx(ChevronRightIcon, {}) })] })) : null] })) }));
84
+ }
85
+ export { Pager };
86
+ //# sourceMappingURL=pager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pager.js","sourceRoot":"","sources":["../../src/blocks/pager.tsx"],"names":[],"mappings":"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"}
@@ -223,6 +223,26 @@ export declare const SlidersMark: ({ className }: PhosphorMarkProps) => React.JS
223
223
  export declare const ChatTeardropTextMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
224
224
  /** Close, on a small filled control under 16px. Phosphor `x`, bold. */
225
225
  export declare const XBoldMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
226
+ /** Audience: unique visitors, people with access. Phosphor `users-three`, regular. */
227
+ export declare const UsersThreeMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
228
+ /** Pickups: other people copying an app. Phosphor `git-fork`, regular. */
229
+ export declare const GitForkMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
230
+ /** Comments, as a counted metric on a KPI tile. Phosphor `chat-circle-text`, regular. */
231
+ export declare const ChatCircleTextMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
232
+ /** Growth against the previous period. Phosphor `trend-up`, regular. */
233
+ export declare const TrendUpMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
234
+ /** Active users: people who came back. Phosphor `user-switch`, regular. */
235
+ export declare const UserSwitchMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
236
+ /** Ask a question about this app. Phosphor `chat-teardrop-dots`, regular. */
237
+ export declare const ChatTeardropDotsMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
238
+ /** Full screen. Phosphor `arrows-out`, regular. */
239
+ export declare const ArrowsOutMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
240
+ /** Exit full screen. Phosphor `arrows-in`, regular. */
241
+ export declare const ArrowsInMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
242
+ /** A measured span of time. Phosphor `timer`, regular. */
243
+ export declare const TimerMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
244
+ /** Live: plugged and running. Phosphor `plugs-connected`, regular. */
245
+ export declare const PlugsConnectedMark: ({ className }: PhosphorMarkProps) => React.JSX.Element;
226
246
  /** Keyed by the label a caller shows, the same shape as TOOL_MARKS. */
227
247
  export declare const PHOSPHOR_MARKS: {
228
248
  readonly "A friend": ({ className }: PhosphorMarkProps) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"phosphor-marks.d.ts","sourceRoot":"","sources":["../../src/blocks/phosphor-marks.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phosphor-marks.d.ts","sourceRoot":"","sources":["../../src/blocks/phosphor-marks.tsx"],"names":[],"mappings":"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"}