@cueplusplus/ui 0.18.2 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +100 -0
- package/dist/brand/_motif-seed.js +20 -0
- package/dist/brand/gloss-object.d.ts +23 -0
- package/dist/brand/gloss-object.js +108 -0
- package/dist/brand/halftone.d.ts +23 -0
- package/dist/brand/halftone.js +54 -0
- package/dist/brand/index.d.ts +8 -1
- package/dist/brand/motif.d.ts +32 -0
- package/dist/brand/motif.js +71 -0
- package/dist/brand/particle-logo.d.ts +50 -0
- package/dist/brand/particle-logo.js +437 -0
- package/dist/brand/particle-mark.d.ts +29 -0
- package/dist/brand/particle-mark.js +137 -0
- package/dist/brand/ribbon.d.ts +20 -0
- package/dist/brand/ribbon.js +54 -0
- package/dist/brand/text-scramble.d.ts +42 -0
- package/dist/brand/text-scramble.js +160 -0
- package/dist/chat/delegation-card.js +2 -1
- package/dist/chat/message.js +12 -13
- package/dist/chrome/announcement-bar.d.ts +30 -0
- package/dist/chrome/announcement-bar.js +38 -0
- package/dist/chrome/app-bar.d.ts +4 -1
- package/dist/chrome/app-bar.js +7 -2
- package/dist/chrome/app-shell.js +8 -1
- package/dist/chrome/band.d.ts +3 -1
- package/dist/chrome/band.js +4 -3
- package/dist/chrome/hero.d.ts +61 -0
- package/dist/chrome/hero.js +108 -0
- package/dist/chrome/index.d.ts +6 -1
- package/dist/chrome/index.js +6 -1
- package/dist/chrome/keyword.d.ts +22 -0
- package/dist/chrome/keyword.js +28 -0
- package/dist/chrome/logo-strip.d.ts +23 -0
- package/dist/chrome/logo-strip.js +43 -0
- package/dist/chrome/page-shell.js +13 -1
- package/dist/chrome/stat-band.d.ts +32 -0
- package/dist/chrome/stat-band.js +39 -0
- package/dist/color/color-area.js +2 -1
- package/dist/dmx/channel-matrix.js +5 -3
- package/dist/dmx/dmx-strip.js +5 -3
- package/dist/elements/animated-number.js +4 -1
- package/dist/elements/replay.d.ts +1 -1
- package/dist/elements/replay.js +5 -2
- package/dist/elements/scroll-anchor.js +4 -1
- package/dist/forms/_chassis.d.ts +1 -1
- package/dist/forms/_chassis.js +2 -2
- package/dist/forms/env-var-input.js +2 -1
- package/dist/forms/file-upload.js +2 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +18 -2
- package/dist/instruments/data-table.js +3 -2
- package/dist/instruments/index.js +1 -1
- package/dist/instruments/stat.js +1 -1
- package/dist/instruments/table.js +1 -1
- package/dist/instruments/terminal-frame.js +5 -2
- package/dist/layout/grid.js +4 -2
- package/dist/layout/index.d.ts +2 -1
- package/dist/layout/index.js +2 -1
- package/dist/layout/preview.js +4 -188
- package/dist/layout/reveal.d.ts +44 -0
- package/dist/layout/reveal.js +106 -0
- package/dist/layout/sidebar.js +88 -52
- package/dist/lib/cn.js +23 -5
- package/dist/lib/particle-field-shaders.js +236 -0
- package/dist/lib/particle-field.js +210 -0
- package/dist/midi/spectrum-visualizer.js +2 -1
- package/dist/overlays/_surface.d.ts +2 -2
- package/dist/primitives/button.js +22 -3
- package/dist/primitives/chip.d.ts +1 -1
- package/dist/primitives/chip.js +63 -6
- package/dist/styles.css +26 -0
- package/dist/system/_scoped-pairing.js +18 -0
- package/dist/system/_stage-scope.js +199 -0
- package/dist/system/_style-check.js +1 -1
- package/dist/system/_style-chip.js +1 -1
- package/dist/system/_style-field-chassis.js +14 -1
- package/dist/system/_style-group-label.js +7 -3
- package/dist/system/_style-hero-title.js +41 -0
- package/dist/system/_style-kbd.js +1 -1
- package/dist/system/_style-label-ink.js +12 -5
- package/dist/system/_style-menu.js +1 -1
- package/dist/system/_style-page-title.js +1 -1
- package/dist/system/_style-segmented-control.js +1 -1
- package/dist/system/_style-skeleton.js +1 -1
- package/dist/system/_style-tab.js +1 -1
- package/dist/system/font-scope.d.ts +38 -0
- package/dist/system/font-scope.js +69 -0
- package/dist/system/frame-clock.d.ts +33 -0
- package/dist/system/frame-clock.js +55 -0
- package/dist/system/index.d.ts +4 -1
- package/dist/system/index.js +4 -1
- package/dist/system/portal.js +7 -1
- package/dist/system/still.d.ts +32 -0
- package/dist/system/still.js +60 -0
- package/manifest/components/alert-dialog.json +1 -1
- package/manifest/components/announcement-bar.json +82 -0
- package/manifest/components/app-bar.json +3 -2
- package/manifest/components/app-shell.json +3 -0
- package/manifest/components/autocomplete.json +2 -0
- package/manifest/components/band.json +2 -1
- package/manifest/components/bento.json +13 -13
- package/manifest/components/button.json +1 -0
- package/manifest/components/channel-matrix.json +1 -0
- package/manifest/components/chart-tooltip-content.json +1 -0
- package/manifest/components/checkbox-group.json +1 -1
- package/manifest/components/checkbox.json +1 -1
- package/manifest/components/chip.json +1 -0
- package/manifest/components/color-area.json +10 -0
- package/manifest/components/color-field.json +3 -0
- package/manifest/components/color-picker.json +3 -0
- package/manifest/components/combobox.json +2 -0
- package/manifest/components/command-palette.json +1 -0
- package/manifest/components/composer.json +3 -0
- package/manifest/components/context-menu.json +1 -1
- package/manifest/components/data-table-pagination.json +3 -0
- package/manifest/components/data-table-toolbar.json +3 -0
- package/manifest/components/date-field.json +3 -0
- package/manifest/components/date-picker.json +3 -0
- package/manifest/components/date-range-picker.json +3 -0
- package/manifest/components/delegation-card.json +6 -0
- package/manifest/components/density.json +6 -2
- package/manifest/components/dialog.json +1 -1
- package/manifest/components/dmx-bar.json +1 -1
- package/manifest/components/dmx-strip.json +1 -1
- package/manifest/components/drawer.json +1 -1
- package/manifest/components/dropdown-menu.json +1 -0
- package/manifest/components/env-var-input.json +3 -0
- package/manifest/components/file-upload.json +5 -0
- package/manifest/components/font-scope.json +82 -0
- package/manifest/components/footer.json +0 -1
- package/manifest/components/gloss-object.json +81 -0
- package/manifest/components/grid.json +6 -6
- package/manifest/components/halftone.json +79 -0
- package/manifest/components/hero.json +204 -0
- package/manifest/components/hover-card.json +1 -1
- package/manifest/components/input-group.json +3 -0
- package/manifest/components/input.json +3 -0
- package/manifest/components/kbd.json +1 -0
- package/manifest/components/keyword.json +67 -0
- package/manifest/components/ledger.json +5 -5
- package/manifest/components/logo-strip.json +93 -0
- package/manifest/components/markdown-text.json +3 -3
- package/manifest/components/menubar.json +1 -1
- package/manifest/components/message.json +8 -0
- package/manifest/components/motif.json +90 -0
- package/manifest/components/multi-select.json +2 -0
- package/manifest/components/musical-time-input.json +3 -0
- package/manifest/components/navigation-menu.json +1 -0
- package/manifest/components/number-field.json +3 -0
- package/manifest/components/otp-field.json +3 -0
- package/manifest/components/page-shell.json +5 -0
- package/manifest/components/particle-logo.json +140 -0
- package/manifest/components/particle-mark.json +75 -0
- package/manifest/components/password-input.json +3 -0
- package/manifest/components/popover.json +1 -1
- package/manifest/components/preview.json +10 -4
- package/manifest/components/radio-group.json +0 -1
- package/manifest/components/radio.json +0 -1
- package/manifest/components/reveal.json +106 -0
- package/manifest/components/ribbon.json +65 -0
- package/manifest/components/scrollable-tabs-list.json +1 -0
- package/manifest/components/scrub-input.json +3 -0
- package/manifest/components/search-input.json +3 -0
- package/manifest/components/segmented-control.json +1 -0
- package/manifest/components/select.json +3 -0
- package/manifest/components/sheet.json +1 -1
- package/manifest/components/sidebar.json +1 -0
- package/manifest/components/skeleton.json +1 -0
- package/manifest/components/spectrum-visualizer.json +10 -0
- package/manifest/components/stack.json +4 -4
- package/manifest/components/stat-band.json +68 -0
- package/manifest/components/stat.json +1 -1
- package/manifest/components/still-provider.json +60 -0
- package/manifest/components/switch.json +0 -1
- package/manifest/components/table.json +2 -2
- package/manifest/components/tabs.json +1 -0
- package/manifest/components/tags-input.json +2 -0
- package/manifest/components/text-scramble.json +90 -0
- package/manifest/components/textarea.json +3 -0
- package/manifest/components/theme-configurator.json +1 -0
- package/manifest/components/theme-provider.json +10 -4
- package/manifest/components/time-field.json +3 -0
- package/manifest/components/toast.json +1 -0
- package/manifest/components/tooltip.json +1 -1
- package/manifest/fixtures.json +18 -0
- package/manifest/manifest.json +368 -80
- package/manifest/tokens.json +93 -3
- package/package.json +6 -6
- package/dist/system/_paint-ground-pattern.js +0 -30
package/dist/system/portal.js
CHANGED
|
@@ -4,6 +4,7 @@ import { AgentSkinContext } from "./agent-skin.js";
|
|
|
4
4
|
import { useRead } from "./published.js";
|
|
5
5
|
import { DensityContext, PaintContext, StyleSetContext } from "./density.js";
|
|
6
6
|
import { OverridesContext } from "./overrides.js";
|
|
7
|
+
import { ScopedPairingContext } from "./_scoped-pairing.js";
|
|
7
8
|
import { FontFamiliesContext, FontScaleContext, PairingSeedContext, ThemeContext } from "./theme-provider.js";
|
|
8
9
|
import * as React from "react";
|
|
9
10
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -33,6 +34,7 @@ function usePortalStamp() {
|
|
|
33
34
|
const skin = React.useContext(AgentSkinContext);
|
|
34
35
|
const styleSet = useRead(StyleSetContext);
|
|
35
36
|
const paint = useRead(PaintContext);
|
|
37
|
+
const scopedPairing = React.useContext(ScopedPairingContext);
|
|
36
38
|
return {
|
|
37
39
|
theme: theme?.theme ?? DEFAULT_THEME,
|
|
38
40
|
density: island ?? theme?.density ?? "compact",
|
|
@@ -44,7 +46,8 @@ function usePortalStamp() {
|
|
|
44
46
|
skin: skin?.skin ?? null,
|
|
45
47
|
fidelity: skin?.fidelity ?? null,
|
|
46
48
|
styleSet,
|
|
47
|
-
paint
|
|
49
|
+
paint,
|
|
50
|
+
scopedPairing
|
|
48
51
|
};
|
|
49
52
|
}
|
|
50
53
|
/**
|
|
@@ -155,6 +158,8 @@ function applyStamp(element, stamp) {
|
|
|
155
158
|
else element.setAttribute("data-cue-fidelity", stamp.fidelity);
|
|
156
159
|
const overrides = stamp.overrides ?? {};
|
|
157
160
|
for (const property of stampedOverrides.get(element) ?? []) if (!(property in overrides)) element.style.removeProperty(property);
|
|
161
|
+
if (stamp.scopedPairing) element.style.setProperty("font-family", "var(--cue-font-sans)");
|
|
162
|
+
else element.style.removeProperty("font-family");
|
|
158
163
|
if (stamp.fontScale === null) element.style.removeProperty(FONT_SCALE_PROPERTY);
|
|
159
164
|
else element.style.setProperty(FONT_SCALE_PROPERTY, String(stamp.fontScale));
|
|
160
165
|
setOptionalProperty(element, FONT_SANS_PROPERTY, stamp.fontFamilies?.sans);
|
|
@@ -186,6 +191,7 @@ function CuePortalFrame({ children, className, style }) {
|
|
|
186
191
|
const stamp = usePortalStamp();
|
|
187
192
|
const frameStyle = {
|
|
188
193
|
display: "contents",
|
|
194
|
+
...stamp.scopedPairing ? { fontFamily: "var(--cue-font-sans)" } : null,
|
|
189
195
|
...stamp.fontScale === null ? null : { [FONT_SCALE_PROPERTY]: stamp.fontScale },
|
|
190
196
|
...stamp.fontFamilies?.sans === void 0 ? null : { [FONT_SANS_PROPERTY]: stamp.fontFamilies.sans },
|
|
191
197
|
...stamp.fontFamilies?.mono === void 0 ? null : { [FONT_MONO_PROPERTY]: stamp.fontFamilies.mono },
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/system/still.d.ts
|
|
3
|
+
interface StillProviderProps {
|
|
4
|
+
/** `true` holds everything under it still. Nested providers can only add stillness, never remove it. */
|
|
5
|
+
still: boolean;
|
|
6
|
+
/** What it holds still. Optional, as `ThemeProvider`'s is: an empty provider renders nothing. */
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Hold a subtree still (see {@link useStill}). A gallery frame mounts one with
|
|
11
|
+
* `still` when it is a thumbnail.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <StillProvider still><Page /></StillProvider>
|
|
15
|
+
*/
|
|
16
|
+
declare function StillProvider({ still, children }: StillProviderProps): React.JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* `true` under a still {@link StillProvider}, or while the reader prefers reduced
|
|
19
|
+
* motion. Live: it changes when the preference does. `false` on the server, where
|
|
20
|
+
* nothing animates anyway.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const still = useStill();
|
|
24
|
+
* React.useEffect(() => {
|
|
25
|
+
* if (still) return;
|
|
26
|
+
* const frame = requestAnimationFrame(step);
|
|
27
|
+
* return () => cancelAnimationFrame(frame);
|
|
28
|
+
* }, [still]);
|
|
29
|
+
*/
|
|
30
|
+
declare function useStill(): boolean;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { StillProvider, StillProviderProps, useStill };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { usePrefersReducedMotion } from "../instruments/_motion.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/system/still.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Whether this subtree must hold still: no motif animates, no replay plays, no
|
|
8
|
+
* live readout loops. A gallery thumbnail is the case it exists for (spec
|
|
9
|
+
* 2026-10-02 §6.2) — a scrolled gallery of twenty live pages must cost nothing at
|
|
10
|
+
* rest — and a reader's `prefers-reduced-motion` is folded in, so a consumer asks
|
|
11
|
+
* one question.
|
|
12
|
+
*/
|
|
13
|
+
const StillContext = React.createContext(false);
|
|
14
|
+
/**
|
|
15
|
+
* Hold a subtree still (see {@link useStill}). A gallery frame mounts one with
|
|
16
|
+
* `still` when it is a thumbnail.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <StillProvider still><Page /></StillProvider>
|
|
20
|
+
*/
|
|
21
|
+
function StillProvider({ still, children }) {
|
|
22
|
+
const outer = React.useContext(StillContext);
|
|
23
|
+
return /* @__PURE__ */ jsx(StillContext.Provider, {
|
|
24
|
+
value: outer || still,
|
|
25
|
+
children
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* `true` under a still {@link StillProvider}, or while the reader prefers reduced
|
|
30
|
+
* motion. Live: it changes when the preference does. `false` on the server, where
|
|
31
|
+
* nothing animates anyway.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const still = useStill();
|
|
35
|
+
* React.useEffect(() => {
|
|
36
|
+
* if (still) return;
|
|
37
|
+
* const frame = requestAnimationFrame(step);
|
|
38
|
+
* return () => cancelAnimationFrame(frame);
|
|
39
|
+
* }, [still]);
|
|
40
|
+
*/
|
|
41
|
+
function useStill() {
|
|
42
|
+
const still = React.useContext(StillContext);
|
|
43
|
+
const reduced = usePrefersReducedMotion();
|
|
44
|
+
return still || reduced;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether a {@link StillProvider} above holds this subtree still — the
|
|
48
|
+
* provider's half of {@link useStill}, without the reader's motion preference.
|
|
49
|
+
* For the one component that must tell a held thumbnail from a reader who
|
|
50
|
+
* prefers reduced motion, because the two mean different things to it
|
|
51
|
+
* (`TextScramble`: a thumbnail holds the first phrase, reduced motion still
|
|
52
|
+
* cycles phrases without scrambling them, as cueplusplus.com does).
|
|
53
|
+
*
|
|
54
|
+
* @internal Not part of the public API.
|
|
55
|
+
*/
|
|
56
|
+
function useStillHeld() {
|
|
57
|
+
return React.useContext(StillContext);
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { StillProvider, useStill, useStillHeld };
|
|
@@ -171,7 +171,6 @@
|
|
|
171
171
|
"--cue-control-sm",
|
|
172
172
|
"--cue-fg",
|
|
173
173
|
"--cue-fg-muted",
|
|
174
|
-
"--cue-fg-subtle",
|
|
175
174
|
"--cue-font-mono",
|
|
176
175
|
"--cue-leading-ui",
|
|
177
176
|
"--cue-paint-rim-width",
|
|
@@ -200,6 +199,7 @@
|
|
|
200
199
|
"--cue-style-body-size",
|
|
201
200
|
"--cue-style-body-weight",
|
|
202
201
|
"--cue-style-control-face",
|
|
202
|
+
"--cue-style-control-radius",
|
|
203
203
|
"--cue-style-dialog-radius",
|
|
204
204
|
"--cue-style-display-variation",
|
|
205
205
|
"--cue-style-group-label-ink",
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AnnouncementBar",
|
|
3
|
+
"slug": "announcement-bar",
|
|
4
|
+
"group": "chrome",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "One line across the top of a page, and one link: a launch, a change, a date.\n\nFilled in the accent, centred, and as short as its line. It is not a\nnotification: it says the same thing to every reader and cannot be dismissed,\nso use `Toast` or `Alert` for anything that is about the reader.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "children",
|
|
12
|
+
"type": "ReactNode",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The one line.",
|
|
16
|
+
"control": {
|
|
17
|
+
"kind": "node",
|
|
18
|
+
"fixture": "children.text"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "action",
|
|
23
|
+
"type": "AnnouncementBarAction",
|
|
24
|
+
"required": false,
|
|
25
|
+
"defaultValue": null,
|
|
26
|
+
"description": "One link, read as the bar's action.",
|
|
27
|
+
"control": {
|
|
28
|
+
"kind": "opaque"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-accent-fill",
|
|
41
|
+
"--cue-accent-fill-fg",
|
|
42
|
+
"--cue-space-2",
|
|
43
|
+
"--cue-space-3",
|
|
44
|
+
"--cue-space-5",
|
|
45
|
+
"--cue-text-ui"
|
|
46
|
+
],
|
|
47
|
+
"summary": "One line across the top of a page, and one link: a launch, a change, a date.",
|
|
48
|
+
"examples": [
|
|
49
|
+
{
|
|
50
|
+
"title": "Usage",
|
|
51
|
+
"code": "<AnnouncementBar action={{ label: \"Learn more\", href: \"/changelog\" }}>Plans for teams are here.</AnnouncementBar>",
|
|
52
|
+
"language": "tsx"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"status": "stable",
|
|
56
|
+
"url": "/docs/components/announcement-bar",
|
|
57
|
+
"mdUrl": "/docs/components/announcement-bar.md",
|
|
58
|
+
"jsonUrl": "/r/components/announcement-bar.json",
|
|
59
|
+
"whenToUse": [
|
|
60
|
+
"A product page's launch or pricing news, shown to every reader.",
|
|
61
|
+
"Above a `SiteNav`-style `AppBar` on a marketing page."
|
|
62
|
+
],
|
|
63
|
+
"whenNotToUse": [
|
|
64
|
+
"Anything about the reader or their account. Use `Alert` or `Toast`.",
|
|
65
|
+
"Something the reader must dismiss or act on. This bar cannot be dismissed."
|
|
66
|
+
],
|
|
67
|
+
"commonMistakes": [
|
|
68
|
+
"Putting more than one link in it. It is one line and one action."
|
|
69
|
+
],
|
|
70
|
+
"specimens": [
|
|
71
|
+
{
|
|
72
|
+
"title": "AnnouncementBar",
|
|
73
|
+
"group": "chrome",
|
|
74
|
+
"components": [
|
|
75
|
+
"AnnouncementBar"
|
|
76
|
+
],
|
|
77
|
+
"code": "<AnnouncementBar action={{ label: \"Read the release notes\", href: \"#\" }}>\n The structural Looks are here.\n</AnnouncementBar>",
|
|
78
|
+
"note": "One line and one link, above the page's own chrome.",
|
|
79
|
+
"interaction": "the link is an ordinary anchor."
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"name": "align",
|
|
88
88
|
"type": "\"center\" | \"end\" | \"start\"",
|
|
89
89
|
"required": false,
|
|
90
|
-
"defaultValue":
|
|
91
|
-
"description": "Where the links sit when they are narrower than the space.
|
|
90
|
+
"defaultValue": null,
|
|
91
|
+
"description": "Where the links sit when they are narrower than the space. Omitted, the style\nset's `style-nav-align` decides, and without one it is `\"end\"`.",
|
|
92
92
|
"control": {
|
|
93
93
|
"kind": "enum",
|
|
94
94
|
"members": [
|
|
@@ -290,6 +290,7 @@
|
|
|
290
290
|
"--cue-style-chrome-rule-style",
|
|
291
291
|
"--cue-style-focus-width",
|
|
292
292
|
"--cue-style-hover-ink",
|
|
293
|
+
"--cue-style-nav-align",
|
|
293
294
|
"--cue-style-nav-case",
|
|
294
295
|
"--cue-style-nav-face",
|
|
295
296
|
"--cue-style-nav-hover-ground",
|
|
@@ -268,6 +268,7 @@
|
|
|
268
268
|
"--cue-style-chip-size",
|
|
269
269
|
"--cue-style-chip-tracking",
|
|
270
270
|
"--cue-style-control-face",
|
|
271
|
+
"--cue-style-control-radius",
|
|
271
272
|
"--cue-style-control-step-size",
|
|
272
273
|
"--cue-style-disabled-edge",
|
|
273
274
|
"--cue-style-disabled-fill",
|
|
@@ -277,6 +278,7 @@
|
|
|
277
278
|
"--cue-style-field-focus-offset",
|
|
278
279
|
"--cue-style-field-hover-edge",
|
|
279
280
|
"--cue-style-field-pad",
|
|
281
|
+
"--cue-style-field-radius",
|
|
280
282
|
"--cue-style-focus-edge",
|
|
281
283
|
"--cue-style-focus-width",
|
|
282
284
|
"--cue-style-glyph-ink",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"importPath": "@cueplusplus/ui",
|
|
6
6
|
"peerDependencies": [],
|
|
7
7
|
"clientOnly": false,
|
|
8
|
-
"description": "A full-bleed horizontal section: the page's rhythm, its separation, and a\ncolumn at the measure.\n\nThis is `Footer`'s recipe with the footer taken out of it — a `w-full`\nelement, a rule running edge to edge, and a centred `Container` inside so the\nline reaches the window while the words stop at the measure. `Footer` is\nbuilt on this rather than beside it; the recipe exists once.\n\nEvery dimension it spends belongs to the style axis, so the same markup\ncomposes differently under `[data-style]` without a prop changing: the\nvertical rhythm is `--cue-band-y` (one `--cue-space-7` with no set, doubled\nunder `editorial`, trebled under `marketing` and `graphite`), the column is\n`--cue-measure-prose` unless `width` names a fixed rung, and the rule and the\nground are `--cue-band-rule` and `--cue-band-ground`. Read `separation`'s own\ndocumentation before choosing one, because two of the four can come out to\nnothing and they do not vanish symmetrically: `--cue-band-ground` is\n`transparent` on `:root` and on every set but `marketing` and `kiln`, so a\n`\"ground\"` paints nothing on most pages, while `--cue-band-rule` is `0px`\nunder those two alone
|
|
8
|
+
"description": "A full-bleed horizontal section: the page's rhythm, its separation, and a\ncolumn at the measure.\n\nThis is `Footer`'s recipe with the footer taken out of it — a `w-full`\nelement, a rule running edge to edge, and a centred `Container` inside so the\nline reaches the window while the words stop at the measure. `Footer` is\nbuilt on this rather than beside it; the recipe exists once.\n\nEvery dimension it spends belongs to the style axis, so the same markup\ncomposes differently under `[data-style]` without a prop changing: the\nvertical rhythm is `--cue-band-y` (one `--cue-space-7` with no set, doubled\nunder `editorial`, trebled under `marketing` and `graphite`), the column is\n`--cue-measure-prose` unless `width` names a fixed rung, and the rule and the\nground are `--cue-band-rule` and `--cue-band-ground`. Read `separation`'s own\ndocumentation before choosing one, because two of the four can come out to\nnothing and they do not vanish symmetrically: `--cue-band-ground` is\n`transparent` on `:root` and on every set but `marketing` and `kiln`, so a\n`\"ground\"` paints nothing on most pages, while `--cue-band-rule` is `0px`\nunder those two and under `ledger` and `prism`, which separate bands by\nrhythm alone (and `prism`'s by a ground image, `style-band-ground-image`).\nBoth are deliberate and nothing warns.\n\n**Two substitution boundaries, because `--cue-band-y` is a `calc()` resolved\nat the element that declares it.** A `<Density>` island nested inside a\nstyled page moves every `--cue-space-*` and the band rhythm does **not**\nfollow it — the island inherits the rhythm already resolved above. Restate\nthe set on the island (`<Density density=\"compact\" styleSet=\"editorial\">`) to\nre-resolve it against that island's rung. Likewise a hand-stamped\n`[data-theme]` element under a marketing page paints the **outer** theme's\n`--cue-surface-1` through an already-resolved `--cue-band-ground`, and its\nrule in the outer theme's border. The library's own theme islands do not: a\nnested `ThemeProvider` that names a theme or a mode, and a `Preview` stage\nwith a theme, a mode or a pairing, restate the set in force beside it, so a\nband inside one paints that island's ground and rule.\n\nIt renders a `<section>`, which is not a landmark until it has an accessible\nname — so a band with a heading should carry `aria-labelledby` pointing at\nit, and a band without one costs the document nothing.\n\nStatic markup — no `\"use client\"`.",
|
|
9
9
|
"props": [
|
|
10
10
|
{
|
|
11
11
|
"name": "separation",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"--cue-paint-texture-blend",
|
|
86
86
|
"--cue-paint-texture-opacity",
|
|
87
87
|
"--cue-paint-texture-size",
|
|
88
|
+
"--cue-style-band-ground-image",
|
|
88
89
|
"--cue-style-band-width"
|
|
89
90
|
],
|
|
90
91
|
"summary": "A full-bleed horizontal section: a rule to the window's edge, a column at the measure.",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"props": [
|
|
21
21
|
{
|
|
22
22
|
"name": "cols",
|
|
23
|
-
"type": "
|
|
23
|
+
"type": "2 | 4 | 3",
|
|
24
24
|
"required": false,
|
|
25
25
|
"defaultValue": "3",
|
|
26
26
|
"description": "How many columns at `lg`. Defaults to `3`. Two from `sm`, one below it.",
|
|
27
27
|
"control": {
|
|
28
28
|
"kind": "enum",
|
|
29
29
|
"members": [
|
|
30
|
-
4,
|
|
31
30
|
2,
|
|
32
|
-
3
|
|
31
|
+
3,
|
|
32
|
+
4
|
|
33
33
|
],
|
|
34
34
|
"min": 2,
|
|
35
35
|
"max": 4
|
|
@@ -37,17 +37,17 @@
|
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"name": "rows",
|
|
40
|
-
"type": "
|
|
40
|
+
"type": "1 | 2 | 4 | 3",
|
|
41
41
|
"required": false,
|
|
42
42
|
"defaultValue": null,
|
|
43
43
|
"description": "How many rows to declare from `sm` up.\n\nOnly worth setting where a tile spans rows: a `rowSpan` over implicit\ntracks sizes itself to the tile's own content, which is not a span.",
|
|
44
44
|
"control": {
|
|
45
45
|
"kind": "enum",
|
|
46
46
|
"members": [
|
|
47
|
-
4,
|
|
48
47
|
1,
|
|
49
48
|
2,
|
|
50
|
-
3
|
|
49
|
+
3,
|
|
50
|
+
4
|
|
51
51
|
],
|
|
52
52
|
"min": 1,
|
|
53
53
|
"max": 4
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
"name": "gap",
|
|
68
|
-
"type": "0 |
|
|
68
|
+
"type": "0 | 1 | 2 | 4 | 8 | 3 | 5 | 6 | 7",
|
|
69
69
|
"required": false,
|
|
70
70
|
"defaultValue": "4",
|
|
71
71
|
"description": "Which rung of the density space ladder to spend between tiles. Defaults to `4`.",
|
|
@@ -73,14 +73,14 @@
|
|
|
73
73
|
"kind": "enum",
|
|
74
74
|
"members": [
|
|
75
75
|
0,
|
|
76
|
-
4,
|
|
77
|
-
8,
|
|
78
76
|
1,
|
|
79
77
|
2,
|
|
80
78
|
3,
|
|
79
|
+
4,
|
|
81
80
|
5,
|
|
82
81
|
6,
|
|
83
|
-
7
|
|
82
|
+
7,
|
|
83
|
+
8
|
|
84
84
|
],
|
|
85
85
|
"min": 0,
|
|
86
86
|
"max": 8
|
|
@@ -109,17 +109,17 @@
|
|
|
109
109
|
"props": [
|
|
110
110
|
{
|
|
111
111
|
"name": "span",
|
|
112
|
-
"type": "
|
|
112
|
+
"type": "1 | 2 | 4 | 3",
|
|
113
113
|
"required": false,
|
|
114
114
|
"defaultValue": null,
|
|
115
115
|
"description": "How many columns to cover. Clamped by the container to its own `cols`.",
|
|
116
116
|
"control": {
|
|
117
117
|
"kind": "enum",
|
|
118
118
|
"members": [
|
|
119
|
-
4,
|
|
120
119
|
1,
|
|
121
120
|
2,
|
|
122
|
-
3
|
|
121
|
+
3,
|
|
122
|
+
4
|
|
123
123
|
],
|
|
124
124
|
"min": 1,
|
|
125
125
|
"max": 4
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"--cue-danger-fg",
|
|
37
37
|
"--cue-fg",
|
|
38
38
|
"--cue-fg-muted",
|
|
39
|
-
"--cue-fg-subtle",
|
|
40
39
|
"--cue-focus",
|
|
41
40
|
"--cue-focus-ring",
|
|
42
41
|
"--cue-font-mono",
|
|
@@ -60,6 +59,7 @@
|
|
|
60
59
|
"--cue-style-choice-gap",
|
|
61
60
|
"--cue-style-control-face",
|
|
62
61
|
"--cue-style-control-label-leading",
|
|
62
|
+
"--cue-style-control-radius",
|
|
63
63
|
"--cue-style-disabled-edge",
|
|
64
64
|
"--cue-style-disabled-fill",
|
|
65
65
|
"--cue-style-disabled-ink",
|
|
@@ -61,7 +61,6 @@
|
|
|
61
61
|
"--cue-danger-fg",
|
|
62
62
|
"--cue-fg",
|
|
63
63
|
"--cue-fg-muted",
|
|
64
|
-
"--cue-fg-subtle",
|
|
65
64
|
"--cue-focus",
|
|
66
65
|
"--cue-focus-ring",
|
|
67
66
|
"--cue-font-mono",
|
|
@@ -85,6 +84,7 @@
|
|
|
85
84
|
"--cue-style-choice-gap",
|
|
86
85
|
"--cue-style-control-face",
|
|
87
86
|
"--cue-style-control-label-leading",
|
|
87
|
+
"--cue-style-control-radius",
|
|
88
88
|
"--cue-style-disabled-edge",
|
|
89
89
|
"--cue-style-disabled-fill",
|
|
90
90
|
"--cue-style-disabled-ink",
|
|
@@ -30,10 +30,20 @@
|
|
|
30
30
|
"tokensUsed": [
|
|
31
31
|
"--cue-bg",
|
|
32
32
|
"--cue-border",
|
|
33
|
+
"--cue-border-strong",
|
|
34
|
+
"--cue-danger",
|
|
33
35
|
"--cue-fg",
|
|
34
36
|
"--cue-focus",
|
|
35
37
|
"--cue-focus-ring",
|
|
36
38
|
"--cue-radius-control",
|
|
39
|
+
"--cue-radius-scale",
|
|
40
|
+
"--cue-space-3",
|
|
41
|
+
"--cue-space-4",
|
|
42
|
+
"--cue-space-5",
|
|
43
|
+
"--cue-style-control-radius",
|
|
44
|
+
"--cue-style-field-hover-edge",
|
|
45
|
+
"--cue-style-field-pad",
|
|
46
|
+
"--cue-style-field-radius",
|
|
37
47
|
"--cue-style-focus-width"
|
|
38
48
|
],
|
|
39
49
|
"summary": "The two-axis colour field — saturation against brightness by default.",
|
|
@@ -76,12 +76,14 @@
|
|
|
76
76
|
"--cue-paint-stroke-to",
|
|
77
77
|
"--cue-paint-stroke-width",
|
|
78
78
|
"--cue-radius-control",
|
|
79
|
+
"--cue-radius-scale",
|
|
79
80
|
"--cue-space-1",
|
|
80
81
|
"--cue-space-3",
|
|
81
82
|
"--cue-space-4",
|
|
82
83
|
"--cue-space-5",
|
|
83
84
|
"--cue-style-body-weight",
|
|
84
85
|
"--cue-style-check-edge",
|
|
86
|
+
"--cue-style-control-radius",
|
|
85
87
|
"--cue-style-control-step-size",
|
|
86
88
|
"--cue-style-disabled-edge",
|
|
87
89
|
"--cue-style-disabled-fill",
|
|
@@ -90,6 +92,7 @@
|
|
|
90
92
|
"--cue-style-field-focus-offset",
|
|
91
93
|
"--cue-style-field-hover-edge",
|
|
92
94
|
"--cue-style-field-pad",
|
|
95
|
+
"--cue-style-field-radius",
|
|
93
96
|
"--cue-style-focus-edge",
|
|
94
97
|
"--cue-style-focus-width",
|
|
95
98
|
"--cue-style-input-face",
|
|
@@ -210,12 +210,14 @@
|
|
|
210
210
|
"--cue-paint-stroke-to",
|
|
211
211
|
"--cue-paint-stroke-width",
|
|
212
212
|
"--cue-radius-control",
|
|
213
|
+
"--cue-radius-scale",
|
|
213
214
|
"--cue-space-2",
|
|
214
215
|
"--cue-space-3",
|
|
215
216
|
"--cue-space-4",
|
|
216
217
|
"--cue-space-5",
|
|
217
218
|
"--cue-style-body-weight",
|
|
218
219
|
"--cue-style-check-edge",
|
|
220
|
+
"--cue-style-control-radius",
|
|
219
221
|
"--cue-style-control-step-size",
|
|
220
222
|
"--cue-style-disabled-edge",
|
|
221
223
|
"--cue-style-disabled-fill",
|
|
@@ -224,6 +226,7 @@
|
|
|
224
226
|
"--cue-style-field-focus-offset",
|
|
225
227
|
"--cue-style-field-hover-edge",
|
|
226
228
|
"--cue-style-field-pad",
|
|
229
|
+
"--cue-style-field-radius",
|
|
227
230
|
"--cue-style-focus-edge",
|
|
228
231
|
"--cue-style-focus-width",
|
|
229
232
|
"--cue-style-input-face",
|
|
@@ -271,6 +271,7 @@
|
|
|
271
271
|
"--cue-style-chip-size",
|
|
272
272
|
"--cue-style-chip-tracking",
|
|
273
273
|
"--cue-style-control-face",
|
|
274
|
+
"--cue-style-control-radius",
|
|
274
275
|
"--cue-style-control-step-size",
|
|
275
276
|
"--cue-style-disabled-edge",
|
|
276
277
|
"--cue-style-disabled-fill",
|
|
@@ -280,6 +281,7 @@
|
|
|
280
281
|
"--cue-style-field-focus-offset",
|
|
281
282
|
"--cue-style-field-hover-edge",
|
|
282
283
|
"--cue-style-field-pad",
|
|
284
|
+
"--cue-style-field-radius",
|
|
283
285
|
"--cue-style-focus-edge",
|
|
284
286
|
"--cue-style-focus-width",
|
|
285
287
|
"--cue-style-glyph-ink",
|
|
@@ -212,12 +212,14 @@
|
|
|
212
212
|
"--cue-paint-stroke-to",
|
|
213
213
|
"--cue-paint-stroke-width",
|
|
214
214
|
"--cue-radius-control",
|
|
215
|
+
"--cue-radius-scale",
|
|
215
216
|
"--cue-space-2",
|
|
216
217
|
"--cue-space-3",
|
|
217
218
|
"--cue-space-4",
|
|
218
219
|
"--cue-space-5",
|
|
219
220
|
"--cue-style-body-weight",
|
|
220
221
|
"--cue-style-check-edge",
|
|
222
|
+
"--cue-style-control-radius",
|
|
221
223
|
"--cue-style-control-step-size",
|
|
222
224
|
"--cue-style-disabled-edge",
|
|
223
225
|
"--cue-style-disabled-fill",
|
|
@@ -226,6 +228,7 @@
|
|
|
226
228
|
"--cue-style-field-focus-offset",
|
|
227
229
|
"--cue-style-field-hover-edge",
|
|
228
230
|
"--cue-style-field-pad",
|
|
231
|
+
"--cue-style-field-radius",
|
|
229
232
|
"--cue-style-focus-edge",
|
|
230
233
|
"--cue-style-focus-width",
|
|
231
234
|
"--cue-style-input-face",
|
|
@@ -92,7 +92,6 @@
|
|
|
92
92
|
"--cue-control-sm",
|
|
93
93
|
"--cue-fg",
|
|
94
94
|
"--cue-fg-muted",
|
|
95
|
-
"--cue-fg-subtle",
|
|
96
95
|
"--cue-font-mono",
|
|
97
96
|
"--cue-leading-ui",
|
|
98
97
|
"--cue-paint-rim-width",
|
|
@@ -119,6 +118,7 @@
|
|
|
119
118
|
"--cue-style-body-size",
|
|
120
119
|
"--cue-style-body-weight",
|
|
121
120
|
"--cue-style-control-face",
|
|
121
|
+
"--cue-style-control-radius",
|
|
122
122
|
"--cue-style-display-variation",
|
|
123
123
|
"--cue-style-group-label-ink",
|
|
124
124
|
"--cue-style-group-label-pad",
|
|
@@ -63,9 +63,12 @@
|
|
|
63
63
|
"--cue-fg",
|
|
64
64
|
"--cue-fg-subtle",
|
|
65
65
|
"--cue-font-mono",
|
|
66
|
+
"--cue-pad-row-x",
|
|
66
67
|
"--cue-space-1",
|
|
67
68
|
"--cue-space-2",
|
|
68
69
|
"--cue-space-3",
|
|
70
|
+
"--cue-style-cell-leading",
|
|
71
|
+
"--cue-style-cell-pad",
|
|
69
72
|
"--cue-text-label"
|
|
70
73
|
],
|
|
71
74
|
"summary": "The pager: four buttons, the position, and the row count.",
|
|
@@ -93,9 +93,12 @@
|
|
|
93
93
|
"--cue-fg",
|
|
94
94
|
"--cue-fg-subtle",
|
|
95
95
|
"--cue-font-mono",
|
|
96
|
+
"--cue-pad-row-x",
|
|
96
97
|
"--cue-space-1",
|
|
97
98
|
"--cue-space-2",
|
|
98
99
|
"--cue-space-3",
|
|
100
|
+
"--cue-style-cell-leading",
|
|
101
|
+
"--cue-style-cell-pad",
|
|
99
102
|
"--cue-text-label"
|
|
100
103
|
],
|
|
101
104
|
"summary": "The strip above a table: one search box, a match count, your controls.",
|
|
@@ -67,12 +67,14 @@
|
|
|
67
67
|
"--cue-paint-stroke-to",
|
|
68
68
|
"--cue-paint-stroke-width",
|
|
69
69
|
"--cue-radius-control",
|
|
70
|
+
"--cue-radius-scale",
|
|
70
71
|
"--cue-space-1",
|
|
71
72
|
"--cue-space-3",
|
|
72
73
|
"--cue-space-4",
|
|
73
74
|
"--cue-space-5",
|
|
74
75
|
"--cue-style-body-weight",
|
|
75
76
|
"--cue-style-check-edge",
|
|
77
|
+
"--cue-style-control-radius",
|
|
76
78
|
"--cue-style-control-step-size",
|
|
77
79
|
"--cue-style-disabled-edge",
|
|
78
80
|
"--cue-style-disabled-fill",
|
|
@@ -81,6 +83,7 @@
|
|
|
81
83
|
"--cue-style-field-focus-offset",
|
|
82
84
|
"--cue-style-field-hover-edge",
|
|
83
85
|
"--cue-style-field-pad",
|
|
86
|
+
"--cue-style-field-radius",
|
|
84
87
|
"--cue-style-focus-edge",
|
|
85
88
|
"--cue-style-focus-width",
|
|
86
89
|
"--cue-style-input-face",
|