@cloudgrid-io/ui 0.39.0 → 0.41.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 +9 -5
- package/dist/badge/palette.d.ts +1 -1
- package/dist/badge/palette.d.ts.map +1 -1
- package/dist/badge/palette.js +2 -2
- package/dist/badge/palette.js.map +1 -1
- package/dist/blocks/action-link.d.ts +31 -0
- package/dist/blocks/action-link.d.ts.map +1 -0
- package/dist/blocks/action-link.js +40 -0
- package/dist/blocks/action-link.js.map +1 -0
- package/dist/blocks/activity-row.d.ts +42 -0
- package/dist/blocks/activity-row.d.ts.map +1 -0
- package/dist/blocks/activity-row.js +37 -0
- package/dist/blocks/activity-row.js.map +1 -0
- package/dist/blocks/add-tile.d.ts +31 -0
- package/dist/blocks/add-tile.d.ts.map +1 -0
- package/dist/blocks/add-tile.js +29 -0
- package/dist/blocks/add-tile.js.map +1 -0
- package/dist/blocks/avatar-stack.d.ts +40 -0
- package/dist/blocks/avatar-stack.d.ts.map +1 -0
- package/dist/blocks/avatar-stack.js +41 -0
- package/dist/blocks/avatar-stack.js.map +1 -0
- package/dist/blocks/avatar.d.ts +31 -5
- package/dist/blocks/avatar.d.ts.map +1 -1
- package/dist/blocks/avatar.js +57 -9
- package/dist/blocks/avatar.js.map +1 -1
- package/dist/blocks/copy-button.d.ts +59 -0
- package/dist/blocks/copy-button.d.ts.map +1 -0
- package/dist/blocks/copy-button.js +76 -0
- package/dist/blocks/copy-button.js.map +1 -0
- package/dist/blocks/dashed-banner.d.ts +36 -0
- package/dist/blocks/dashed-banner.d.ts.map +1 -0
- package/dist/blocks/dashed-banner.js +31 -0
- package/dist/blocks/dashed-banner.js.map +1 -0
- package/dist/blocks/dashed-line.d.ts +44 -0
- package/dist/blocks/dashed-line.d.ts.map +1 -0
- package/dist/blocks/dashed-line.js +46 -0
- package/dist/blocks/dashed-line.js.map +1 -0
- package/dist/blocks/empty-creations.d.ts +18 -1
- package/dist/blocks/empty-creations.d.ts.map +1 -1
- package/dist/blocks/empty-creations.js +25 -9
- package/dist/blocks/empty-creations.js.map +1 -1
- package/dist/blocks/entity-card.d.ts +37 -2
- package/dist/blocks/entity-card.d.ts.map +1 -1
- package/dist/blocks/entity-card.js +70 -7
- package/dist/blocks/entity-card.js.map +1 -1
- package/dist/blocks/filter-tabs.d.ts +45 -0
- package/dist/blocks/filter-tabs.d.ts.map +1 -0
- package/dist/blocks/filter-tabs.js +48 -0
- package/dist/blocks/filter-tabs.js.map +1 -0
- package/dist/blocks/header-menu.d.ts +54 -0
- package/dist/blocks/header-menu.d.ts.map +1 -0
- package/dist/blocks/header-menu.js +63 -0
- package/dist/blocks/header-menu.js.map +1 -0
- package/dist/blocks/header-pill.d.ts +41 -0
- package/dist/blocks/header-pill.d.ts.map +1 -0
- package/dist/blocks/header-pill.js +67 -0
- package/dist/blocks/header-pill.js.map +1 -0
- package/dist/blocks/icons.d.ts +47 -2
- package/dist/blocks/icons.d.ts.map +1 -1
- package/dist/blocks/icons.js +50 -2
- package/dist/blocks/icons.js.map +1 -1
- package/dist/blocks/menu-trigger.d.ts +35 -0
- package/dist/blocks/menu-trigger.d.ts.map +1 -0
- package/dist/blocks/menu-trigger.js +24 -0
- package/dist/blocks/menu-trigger.js.map +1 -0
- package/dist/blocks/meter.d.ts +9 -1
- package/dist/blocks/meter.d.ts.map +1 -1
- package/dist/blocks/meter.js +6 -2
- package/dist/blocks/meter.js.map +1 -1
- package/dist/blocks/phosphor-marks.d.ts +48 -2
- package/dist/blocks/phosphor-marks.d.ts.map +1 -1
- package/dist/blocks/phosphor-marks.js +72 -3
- package/dist/blocks/phosphor-marks.js.map +1 -1
- package/dist/blocks/plugged-dialog.d.ts +102 -0
- package/dist/blocks/plugged-dialog.d.ts.map +1 -0
- package/dist/blocks/plugged-dialog.js +93 -0
- package/dist/blocks/plugged-dialog.js.map +1 -0
- package/dist/blocks/ranked-list.d.ts +15 -1
- package/dist/blocks/ranked-list.d.ts.map +1 -1
- package/dist/blocks/ranked-list.js +18 -5
- package/dist/blocks/ranked-list.js.map +1 -1
- package/dist/blocks/scroll-rail.d.ts +15 -0
- package/dist/blocks/scroll-rail.d.ts.map +1 -0
- package/dist/blocks/scroll-rail.js +134 -0
- package/dist/blocks/scroll-rail.js.map +1 -0
- package/dist/blocks/section-heading.d.ts +21 -0
- package/dist/blocks/section-heading.d.ts.map +1 -0
- package/dist/blocks/section-heading.js +18 -0
- package/dist/blocks/section-heading.js.map +1 -0
- package/dist/blocks/side-nav.d.ts +12 -2
- package/dist/blocks/side-nav.d.ts.map +1 -1
- package/dist/blocks/side-nav.js +49 -15
- package/dist/blocks/side-nav.js.map +1 -1
- package/dist/blocks/stat-tile.d.ts +21 -1
- package/dist/blocks/stat-tile.d.ts.map +1 -1
- package/dist/blocks/stat-tile.js +11 -6
- package/dist/blocks/stat-tile.js.map +1 -1
- package/dist/console.css +55 -19
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/theme.css +36 -0
- package/dist/tokens/base.json +55 -5
- package/dist/tokens.css +46 -12
- package/dist/tokens.json +8 -3
- package/dist/ui/button.d.ts +2 -2
- package/dist/ui/button.d.ts.map +1 -1
- package/dist/ui/button.js +26 -0
- package/dist/ui/button.js.map +1 -1
- package/dist/ui/dialog.d.ts +6 -0
- package/dist/ui/dialog.d.ts.map +1 -1
- package/dist/ui/dialog.js +7 -1
- package/dist/ui/dialog.js.map +1 -1
- package/dist/ui/drawer.d.ts +7 -5
- package/dist/ui/drawer.d.ts.map +1 -1
- package/dist/ui/drawer.js +7 -5
- package/dist/ui/drawer.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,10 +45,14 @@ The order matters, and getting it wrong fails quietly rather than loudly.
|
|
|
45
45
|
- `theme.css` maps Tailwind utilities onto the tokens. Before `tokens.css` has run there is
|
|
46
46
|
nothing to map, so every utility resolves to nothing and the page renders unstyled
|
|
47
47
|
instead of erroring.
|
|
48
|
-
- `console.css` is a **product preset**, not part of the base. It re-declares the body
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
- `console.css` is a **product preset**, not part of the base. It re-declares the body face
|
|
49
|
+
as the UI face, Manrope, and leaves the display face on Tanker, as the CloudGrid 2026
|
|
50
|
+
Figma has it (#371). The CloudGrid Console imports it; so should any product whose body
|
|
51
|
+
type is the UI face. Everyone else leaves the line out and keeps the default. The
|
|
52
|
+
Console's five type roles, as tokens: **Body** `text-body-sm` (15 / 1.46), **Body Bold**
|
|
53
|
+
`text-body-sm font-bold`, **Small** `text-caption` (13 / 1.46), **H4**
|
|
54
|
+
`text-heading-lg font-medium` (22 / 1.2), **Headline** `font-display` (Tanker). A page
|
|
55
|
+
picks a role, not a size. It has to sit **after `tokens.css`**, which is what it
|
|
52
56
|
re-declares: import it before `tokens.css` and the default face wins at equal specificity,
|
|
53
57
|
silently. Its position relative to `theme.css` does not matter. `theme.css` is
|
|
54
58
|
`@theme inline`, so the utilities it emits are live `var()` references that resolve
|
|
@@ -150,7 +154,7 @@ rest).
|
|
|
150
154
|
| | |
|
|
151
155
|
|---|---|
|
|
152
156
|
| `@cloudgrid-io/ui/tokens.css` | every value as a CSS custom property |
|
|
153
|
-
| `@cloudgrid-io/ui/console.css` | product preset: body
|
|
157
|
+
| `@cloudgrid-io/ui/console.css` | product preset: body type set to Manrope, headlines stay Tanker |
|
|
154
158
|
| `@cloudgrid-io/ui/docs.css` | product preset: the Starlight docs site, light only, see below |
|
|
155
159
|
| `@cloudgrid-io/ui/expressive-code` | the docs site's code blocks: Expressive Code theme and overrides, monochrome on ink |
|
|
156
160
|
| `@cloudgrid-io/ui/theme.css` | maps Tailwind utilities onto the tokens |
|
package/dist/badge/palette.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Every badge token as one declaration list, for the badge root's rule. */
|
|
2
|
-
export declare const BADGE_TOKEN_DECLARATIONS = "--cg-primary:#5a47f0;--cg-primary-press:#4b39db;--cg-primary-tint:#eeecfe;--cg-secondary:#b6de68;--cg-secondary-press:#a6cf57;--cg-tertiary:#60e9f0;--cg-tertiary-press:#4dd8e0;--cg-accent:#0061f0;--cg-cyan-200:#dffbfc;--cg-lime-200:#eef7dc;--cg-surface-card:#ffffff;--cg-surface-raised:#f4f6f8;--cg-surface-control:#e3e3e3;--cg-surface-subtle:#f2f1f7;--cg-hover:rgba(34, 34, 34, 0.045);--cg-scrim:rgba(
|
|
2
|
+
export declare const BADGE_TOKEN_DECLARATIONS = "--cg-primary:#5a47f0;--cg-primary-press:#4b39db;--cg-primary-tint:#eeecfe;--cg-secondary:#b6de68;--cg-secondary-press:#a6cf57;--cg-tertiary:#60e9f0;--cg-tertiary-press:#4dd8e0;--cg-accent:#0061f0;--cg-cyan-200:#dffbfc;--cg-lime-200:#eef7dc;--cg-surface-card:#ffffff;--cg-surface-raised:#f4f6f8;--cg-surface-control:#e3e3e3;--cg-surface-subtle:#f2f1f7;--cg-hover:rgba(34, 34, 34, 0.045);--cg-scrim:rgba(46, 30, 172, 0.46);--cg-text-primary:#222222;--cg-text-secondary:#595959;--cg-text-muted:#858585;--cg-text-muted-strong:#6a6a6a;--cg-text-placeholder:#acacac;--cg-text-accent:#5a47f0;--cg-text-on-primary:#ffffff;--cg-text-on-accent:#222222;--cg-border-hairline:#e6e8ea;--cg-border-control:#e3e3e3;--cg-border-accent:#5a47f0;--cg-focus-ring:rgba(90, 71, 240, 0.28);--cg-online:#00a05c;--cg-online-fill:#e6f7ef;--cg-online-strong:#085d3a;--cg-expired-fill:#fdf3e0;--cg-expired-border:#fedf89;--cg-expired-strong:#7a3d0a;--cg-font-ui:'Manrope Variable', 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--cg-font-body:'Space Grotesk Variable', 'Space Grotesk', 'Manrope Variable', 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--cg-font-mono:'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--cg-weight-regular:400;--cg-weight-medium:500;--cg-weight-bold:600;--cg-body-18:18px;--cg-body-md:16px;--cg-body-sm:15px;--cg-body-14:14px;--cg-caption:13px;--cg-body-line:1.46;--cg-mono-size:14px;--cg-mono-line:1.7;--cg-radius-xs:8px;--cg-radius-sm:10px;--cg-radius-md:12px;--cg-radius-lg:14px;--cg-radius-xl:16px;--cg-radius-container:20px;--cg-radius-pill:999px;--cg-shadow-card:0 4px 16px rgba(34, 34, 34, 0.04), 0 4px 4px rgba(34, 34, 34, 0.04);--cg-shadow-hover:0 8px 24px rgba(34, 34, 34, 0.08);--cg-shadow-card-hover:0 8px 24px rgba(34, 34, 34, 0.08), 0 4px 6px rgba(34, 34, 34, 0.06);--cg-shadow-panel:0 10px 40px rgba(90, 71, 240, 0.18);--cg-duration-fast:120ms;--cg-duration:180ms;--cg-duration-slow:280ms;--cg-ease-out:cubic-bezier(0, 0, 0.2, 1);--cg-ease-out-expo:cubic-bezier(0.16, 1, 0.3, 1);--cg-ease-out-quint:cubic-bezier(0.22, 1, 0.36, 1);--cg-ease-out-quart:cubic-bezier(0.25, 1, 0.5, 1);--cg-ease-in-out-cubic:cubic-bezier(0.65, 0, 0.35, 1);--cg-ease-in:cubic-bezier(0.5, 0, 0.75, 0);--cg-ease-spring:cubic-bezier(0.34, 1.56, 0.64, 1);--cg-ease-spring-damped:linear(0, 0.034, 0.122, 0.244, 0.383, 0.526, 0.662, 0.785, 0.889, 0.974, 1.038, 1.083, 1.111, 1.124, 1.126, 1.119, 1.106, 1.09, 1.072, 1.054, 1.038, 1.023, 1.01, 1, 0.993, 0.988, 0.985, 0.984, 0.984, 0.985, 0.987, 0.989, 0.992, 0.994, 0.996, 0.998, 0.999, 1, 1.001, 1.002, 1);";
|
|
3
3
|
/** The same values as a map, for tests and the gallery. Not needed at runtime. */
|
|
4
4
|
export declare const BADGE_TOKENS: Readonly<Record<string, string>>;
|
|
5
5
|
/** `--cg-font-ui`: Manrope. The tab label and button labels. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/badge/palette.ts"],"names":[],"mappings":"AAMA,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/badge/palette.ts"],"names":[],"mappings":"AAMA,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,8kFACwiF,CAAA;AAE7kF,kFAAkF;AAClF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuEzD,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,aAAa,6FAA6F,CAAA;AAEvH,iEAAiE;AACjE,eAAO,MAAM,eAAe,wIAAwI,CAAA;AAEpK;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACrB,CAGA,CAAA"}
|
package/dist/badge/palette.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// carries its token values with it. Each is the resolved value of the token of
|
|
5
5
|
// the same name at :root. Retune the token and rebuild; this file follows.
|
|
6
6
|
/** Every badge token as one declaration list, for the badge root's rule. */
|
|
7
|
-
export const BADGE_TOKEN_DECLARATIONS = "--cg-primary:#5a47f0;--cg-primary-press:#4b39db;--cg-primary-tint:#eeecfe;--cg-secondary:#b6de68;--cg-secondary-press:#a6cf57;--cg-tertiary:#60e9f0;--cg-tertiary-press:#4dd8e0;--cg-accent:#0061f0;--cg-cyan-200:#dffbfc;--cg-lime-200:#eef7dc;--cg-surface-card:#ffffff;--cg-surface-raised:#f4f6f8;--cg-surface-control:#e3e3e3;--cg-surface-subtle:#f2f1f7;--cg-hover:rgba(34, 34, 34, 0.045);--cg-scrim:rgba(
|
|
7
|
+
export const BADGE_TOKEN_DECLARATIONS = "--cg-primary:#5a47f0;--cg-primary-press:#4b39db;--cg-primary-tint:#eeecfe;--cg-secondary:#b6de68;--cg-secondary-press:#a6cf57;--cg-tertiary:#60e9f0;--cg-tertiary-press:#4dd8e0;--cg-accent:#0061f0;--cg-cyan-200:#dffbfc;--cg-lime-200:#eef7dc;--cg-surface-card:#ffffff;--cg-surface-raised:#f4f6f8;--cg-surface-control:#e3e3e3;--cg-surface-subtle:#f2f1f7;--cg-hover:rgba(34, 34, 34, 0.045);--cg-scrim:rgba(46, 30, 172, 0.46);--cg-text-primary:#222222;--cg-text-secondary:#595959;--cg-text-muted:#858585;--cg-text-muted-strong:#6a6a6a;--cg-text-placeholder:#acacac;--cg-text-accent:#5a47f0;--cg-text-on-primary:#ffffff;--cg-text-on-accent:#222222;--cg-border-hairline:#e6e8ea;--cg-border-control:#e3e3e3;--cg-border-accent:#5a47f0;--cg-focus-ring:rgba(90, 71, 240, 0.28);--cg-online:#00a05c;--cg-online-fill:#e6f7ef;--cg-online-strong:#085d3a;--cg-expired-fill:#fdf3e0;--cg-expired-border:#fedf89;--cg-expired-strong:#7a3d0a;--cg-font-ui:'Manrope Variable', 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--cg-font-body:'Space Grotesk Variable', 'Space Grotesk', 'Manrope Variable', 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--cg-font-mono:'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--cg-weight-regular:400;--cg-weight-medium:500;--cg-weight-bold:600;--cg-body-18:18px;--cg-body-md:16px;--cg-body-sm:15px;--cg-body-14:14px;--cg-caption:13px;--cg-body-line:1.46;--cg-mono-size:14px;--cg-mono-line:1.7;--cg-radius-xs:8px;--cg-radius-sm:10px;--cg-radius-md:12px;--cg-radius-lg:14px;--cg-radius-xl:16px;--cg-radius-container:20px;--cg-radius-pill:999px;--cg-shadow-card:0 4px 16px rgba(34, 34, 34, 0.04), 0 4px 4px rgba(34, 34, 34, 0.04);--cg-shadow-hover:0 8px 24px rgba(34, 34, 34, 0.08);--cg-shadow-card-hover:0 8px 24px rgba(34, 34, 34, 0.08), 0 4px 6px rgba(34, 34, 34, 0.06);--cg-shadow-panel:0 10px 40px rgba(90, 71, 240, 0.18);--cg-duration-fast:120ms;--cg-duration:180ms;--cg-duration-slow:280ms;--cg-ease-out:cubic-bezier(0, 0, 0.2, 1);--cg-ease-out-expo:cubic-bezier(0.16, 1, 0.3, 1);--cg-ease-out-quint:cubic-bezier(0.22, 1, 0.36, 1);--cg-ease-out-quart:cubic-bezier(0.25, 1, 0.5, 1);--cg-ease-in-out-cubic:cubic-bezier(0.65, 0, 0.35, 1);--cg-ease-in:cubic-bezier(0.5, 0, 0.75, 0);--cg-ease-spring:cubic-bezier(0.34, 1.56, 0.64, 1);--cg-ease-spring-damped:linear(0, 0.034, 0.122, 0.244, 0.383, 0.526, 0.662, 0.785, 0.889, 0.974, 1.038, 1.083, 1.111, 1.124, 1.126, 1.119, 1.106, 1.09, 1.072, 1.054, 1.038, 1.023, 1.01, 1, 0.993, 0.988, 0.985, 0.984, 0.984, 0.985, 0.987, 0.989, 0.992, 0.994, 0.996, 0.998, 0.999, 1, 1.001, 1.002, 1);";
|
|
8
8
|
/** The same values as a map, for tests and the gallery. Not needed at runtime. */
|
|
9
9
|
export const BADGE_TOKENS = {
|
|
10
10
|
"--cg-primary": "#5a47f0",
|
|
@@ -22,7 +22,7 @@ export const BADGE_TOKENS = {
|
|
|
22
22
|
"--cg-surface-control": "#e3e3e3",
|
|
23
23
|
"--cg-surface-subtle": "#f2f1f7",
|
|
24
24
|
"--cg-hover": "rgba(34, 34, 34, 0.045)",
|
|
25
|
-
"--cg-scrim": "rgba(
|
|
25
|
+
"--cg-scrim": "rgba(46, 30, 172, 0.46)",
|
|
26
26
|
"--cg-text-primary": "#222222",
|
|
27
27
|
"--cg-text-secondary": "#595959",
|
|
28
28
|
"--cg-text-muted": "#858585",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/badge/palette.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,+EAA+E;AAC/E,2EAA2E;AAE3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GACnC,
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/badge/palette.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
/**
|
|
3
|
+
* The teal text link of the 2026 Home (#382): "Explore All", "Open",
|
|
4
|
+
* "Dismiss", "onboard an agent" (spec §4.3 to §4.8, Figma Tertiary Dark).
|
|
5
|
+
*
|
|
6
|
+
* Body (15) in `--cg-tertiary-dark` (#45CDD4), no underline at rest, an
|
|
7
|
+
* underline on hover (the frames draw no hover state; this is the library's
|
|
8
|
+
* feedback for a text link), the focus ring on keyboard focus.
|
|
9
|
+
*
|
|
10
|
+
* ## The colour is under AA, on purpose
|
|
11
|
+
*
|
|
12
|
+
* #45CDD4 measures 1.92:1 on white. The design uses it knowingly (Gilad,
|
|
13
|
+
* 2026-11-01, spec §6.1), and every link drawn in it also carries an
|
|
14
|
+
* accessible name, so a reader who cannot see the colour still gets the words.
|
|
15
|
+
*
|
|
16
|
+
* ## The token comes from ui#381
|
|
17
|
+
*
|
|
18
|
+
* `--cg-tertiary-dark` is the header set's token (ui#381); this block reads it
|
|
19
|
+
* and does not declare it.
|
|
20
|
+
*
|
|
21
|
+
* `ACTION_LINK_CLASS` is exported for a control that is not an anchor but
|
|
22
|
+
* should look like one: Dismiss (a button) and the empty state's "onboard an
|
|
23
|
+
* agent" (a `CopyButton`).
|
|
24
|
+
*/
|
|
25
|
+
declare const ACTION_LINK_CLASS = "inline-flex items-center rounded-2xs text-body-sm text-(--cg-tertiary-dark) no-underline underline-offset-4 hover:underline outline-none focus-visible:ring-3 focus-visible:ring-ring";
|
|
26
|
+
declare function ActionLink({ render, weight, className, ...props }: useRender.ComponentProps<"a"> & {
|
|
27
|
+
/** `regular` (Body: Open, "onboard an agent") or `bold` (Body Bold: Explore All, Dismiss). */
|
|
28
|
+
weight?: "regular" | "bold";
|
|
29
|
+
}): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
30
|
+
export { ACTION_LINK_CLASS, ActionLink };
|
|
31
|
+
//# sourceMappingURL=action-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-link.d.ts","sourceRoot":"","sources":["../../src/blocks/action-link.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,iBAAiB,0LACkK,CAAA;AAEzL,iBAAS,UAAU,CAAC,EAClB,MAAM,EACN,MAAkB,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IACjC,8FAA8F;IAC9F,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;CAC5B,8FAUA;AAED,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
3
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
/**
|
|
5
|
+
* The teal text link of the 2026 Home (#382): "Explore All", "Open",
|
|
6
|
+
* "Dismiss", "onboard an agent" (spec §4.3 to §4.8, Figma Tertiary Dark).
|
|
7
|
+
*
|
|
8
|
+
* Body (15) in `--cg-tertiary-dark` (#45CDD4), no underline at rest, an
|
|
9
|
+
* underline on hover (the frames draw no hover state; this is the library's
|
|
10
|
+
* feedback for a text link), the focus ring on keyboard focus.
|
|
11
|
+
*
|
|
12
|
+
* ## The colour is under AA, on purpose
|
|
13
|
+
*
|
|
14
|
+
* #45CDD4 measures 1.92:1 on white. The design uses it knowingly (Gilad,
|
|
15
|
+
* 2026-11-01, spec §6.1), and every link drawn in it also carries an
|
|
16
|
+
* accessible name, so a reader who cannot see the colour still gets the words.
|
|
17
|
+
*
|
|
18
|
+
* ## The token comes from ui#381
|
|
19
|
+
*
|
|
20
|
+
* `--cg-tertiary-dark` is the header set's token (ui#381); this block reads it
|
|
21
|
+
* and does not declare it.
|
|
22
|
+
*
|
|
23
|
+
* `ACTION_LINK_CLASS` is exported for a control that is not an anchor but
|
|
24
|
+
* should look like one: Dismiss (a button) and the empty state's "onboard an
|
|
25
|
+
* agent" (a `CopyButton`).
|
|
26
|
+
*/
|
|
27
|
+
const ACTION_LINK_CLASS = "inline-flex items-center rounded-2xs text-body-sm text-(--cg-tertiary-dark) no-underline underline-offset-4 hover:underline outline-none focus-visible:ring-3 focus-visible:ring-ring";
|
|
28
|
+
function ActionLink({ render, weight = "regular", className, ...props }) {
|
|
29
|
+
return useRender({
|
|
30
|
+
render,
|
|
31
|
+
defaultTagName: "a",
|
|
32
|
+
props: {
|
|
33
|
+
"data-slot": "action-link",
|
|
34
|
+
className: cn(ACTION_LINK_CLASS, weight === "bold" && "font-bold", className),
|
|
35
|
+
...props,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export { ACTION_LINK_CLASS, ActionLink };
|
|
40
|
+
//# sourceMappingURL=action-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-link.js","sourceRoot":"","sources":["../../src/blocks/action-link.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,iBAAiB,GACrB,uLAAuL,CAAA;AAEzL,SAAS,UAAU,CAAC,EAClB,MAAM,EACN,MAAM,GAAG,SAAS,EAClB,SAAS,EACT,GAAG,KAAK,EAIT;IACC,OAAO,SAAS,CAAC;QACf,MAAM;QACN,cAAc,EAAE,GAAG;QACnB,KAAK,EAAE;YACL,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,IAAI,WAAW,EAAE,SAAS,CAAC;YAC7E,GAAG,KAAK;SACT;KACF,CAAC,CAAA;AACJ,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { useRender } from "@base-ui/react/use-render";
|
|
3
|
+
/**
|
|
4
|
+
* One line of activity: Home's "My Focus" row (#382, spec §4.7, Figma
|
|
5
|
+
* `11323:8714`, drawn there as "Grid Pulse").
|
|
6
|
+
*
|
|
7
|
+
* White, a 1px hairline, radius 12, 16 inside (the hairline drawn inside it, so
|
|
8
|
+
* the row is the frame's 54 tall), the content centred 20 apart: the time
|
|
9
|
+
* (Small, muted), a picture, one sentence (Body) and a teal "Open".
|
|
10
|
+
*
|
|
11
|
+
* ## The picture overhangs
|
|
12
|
+
*
|
|
13
|
+
* The frame lays the picture out in a 96 x 22 box (a Body line) and paints the
|
|
14
|
+
* 96 x 64 image centred on it, so it pokes 5px past the row's top and bottom
|
|
15
|
+
* and the row stays one line tall. Drawn the same way: a 22px box and an
|
|
16
|
+
* absolutely placed image. Decorative (`alt=""`); the sentence names the thing.
|
|
17
|
+
*
|
|
18
|
+
* ## Narrow widths
|
|
19
|
+
*
|
|
20
|
+
* The row lays out by its own width (a container query). Under 36rem the
|
|
21
|
+
* sentence wraps onto its own line under the picture (spec §4.12).
|
|
22
|
+
*
|
|
23
|
+
* The time is muted-strong rather than the frame's slate-500 (3.41:1): it is
|
|
24
|
+
* content (#232). The action is described by the row's sentence
|
|
25
|
+
* (`aria-describedby`), so a list of rows' "Open" links reads apart.
|
|
26
|
+
*/
|
|
27
|
+
declare function ActivityRow({ time, thumbnailSrc, actionLabel, href, render, className, children, ...props }: Omit<React.ComponentProps<"div">, "children"> & {
|
|
28
|
+
/** "Just now". Pass a `<time>` for a machine-readable date. */
|
|
29
|
+
time: React.ReactNode;
|
|
30
|
+
/** The creation's picture. */
|
|
31
|
+
thumbnailSrc?: string;
|
|
32
|
+
/** The sentence. */
|
|
33
|
+
children: React.ReactNode;
|
|
34
|
+
/** The action's words. Default "Open". */
|
|
35
|
+
actionLabel?: string;
|
|
36
|
+
/** Where the action goes. */
|
|
37
|
+
href?: string;
|
|
38
|
+
/** The action's element, for a router's link: `render={<Link href="…" />}`. */
|
|
39
|
+
render?: useRender.ComponentProps<"a">["render"];
|
|
40
|
+
}): React.JSX.Element;
|
|
41
|
+
export { ActivityRow };
|
|
42
|
+
//# sourceMappingURL=activity-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-row.d.ts","sourceRoot":"","sources":["../../src/blocks/activity-row.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAK1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,iBAAS,WAAW,CAAC,EACnB,IAAI,EACJ,YAAY,EACZ,WAAoB,EACpB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IACjD,+DAA+D;IAC/D,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,MAAM,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;CACjD,qBA2CA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 { ActionLink } from "./action-link.js";
|
|
5
|
+
/**
|
|
6
|
+
* One line of activity: Home's "My Focus" row (#382, spec §4.7, Figma
|
|
7
|
+
* `11323:8714`, drawn there as "Grid Pulse").
|
|
8
|
+
*
|
|
9
|
+
* White, a 1px hairline, radius 12, 16 inside (the hairline drawn inside it, so
|
|
10
|
+
* the row is the frame's 54 tall), the content centred 20 apart: the time
|
|
11
|
+
* (Small, muted), a picture, one sentence (Body) and a teal "Open".
|
|
12
|
+
*
|
|
13
|
+
* ## The picture overhangs
|
|
14
|
+
*
|
|
15
|
+
* The frame lays the picture out in a 96 x 22 box (a Body line) and paints the
|
|
16
|
+
* 96 x 64 image centred on it, so it pokes 5px past the row's top and bottom
|
|
17
|
+
* and the row stays one line tall. Drawn the same way: a 22px box and an
|
|
18
|
+
* absolutely placed image. Decorative (`alt=""`); the sentence names the thing.
|
|
19
|
+
*
|
|
20
|
+
* ## Narrow widths
|
|
21
|
+
*
|
|
22
|
+
* The row lays out by its own width (a container query). Under 36rem the
|
|
23
|
+
* sentence wraps onto its own line under the picture (spec §4.12).
|
|
24
|
+
*
|
|
25
|
+
* The time is muted-strong rather than the frame's slate-500 (3.41:1): it is
|
|
26
|
+
* content (#232). The action is described by the row's sentence
|
|
27
|
+
* (`aria-describedby`), so a list of rows' "Open" links reads apart.
|
|
28
|
+
*/
|
|
29
|
+
function ActivityRow({ time, thumbnailSrc, actionLabel = "Open", href, render, className, children, ...props }) {
|
|
30
|
+
const hasAction = href !== undefined || render !== undefined;
|
|
31
|
+
// Every row's action is "Open", so a screen reader's list of links would show
|
|
32
|
+
// N identical entries. The link is described by its own row's sentence.
|
|
33
|
+
const textId = React.useId();
|
|
34
|
+
return (_jsx("div", { "data-slot": "activity-row", className: cn("@container/activity-row rounded-md border border-hairline bg-card p-[15px] text-ink", className), ...props, children: _jsxs("div", { "data-slot": "activity-row-content", className: "flex items-center justify-center gap-5 @max-[36rem]/activity-row:flex-wrap @max-[36rem]/activity-row:justify-start", children: [_jsx("span", { "data-slot": "activity-row-time", className: "shrink-0 text-caption text-faint-strong", children: time }), thumbnailSrc !== undefined ? (_jsx("span", { "data-slot": "activity-row-thumbnail", className: "relative block h-[22px] w-24 shrink-0", children: _jsx("img", { src: thumbnailSrc, alt: "", decoding: "async", draggable: false, className: "absolute top-1/2 left-0 block h-16 w-24 -translate-y-1/2 rounded-xs object-cover" }) })) : null, _jsx("span", { id: textId, "data-slot": "activity-row-text", className: "min-w-0 text-body-sm @max-[36rem]/activity-row:basis-full", children: children }), hasAction ? (_jsx(ActionLink, { href: href, render: render, "aria-describedby": textId, className: "shrink-0", children: actionLabel })) : null] }) }));
|
|
35
|
+
}
|
|
36
|
+
export { ActivityRow };
|
|
37
|
+
//# sourceMappingURL=activity-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-row.js","sourceRoot":"","sources":["../../src/blocks/activity-row.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,WAAW,CAAC,EACnB,IAAI,EACJ,YAAY,EACZ,WAAW,GAAG,MAAM,EACpB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAcT;IACC,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAA;IAC5D,8EAA8E;IAC9E,wEAAwE;IACxE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IAE5B,OAAO,CACL,2BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,qFAAqF,EAAE,SAAS,CAAC,KAC3G,KAAK,YAIT,4BACY,sBAAsB,EAChC,SAAS,EAAC,oHAAoH,aAEhI,4BAAgB,mBAAmB,EAAC,SAAS,EAAC,yCAAyC,YACpF,IAAI,GACA,EACN,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5B,4BAAgB,wBAAwB,EAAC,SAAS,EAAC,uCAAuC,YACxF,cACE,GAAG,EAAE,YAAY,EACjB,GAAG,EAAC,EAAE,EACN,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAE,KAAK,EAChB,SAAS,EAAC,kFAAkF,GAC5F,GACG,CACR,CAAC,CAAC,CAAC,IAAI,EACR,eAAM,EAAE,EAAE,MAAM,eAAY,mBAAmB,EAAC,SAAS,EAAC,2DAA2D,YAClH,QAAQ,GACJ,EACN,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAoB,MAAM,EAAE,SAAS,EAAC,UAAU,YACnF,WAAW,GACD,CACd,CAAC,CAAC,CAAC,IAAI,IACF,GACF,CACP,CAAA;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type EntityCardTileSize } from "./entity-card.js";
|
|
3
|
+
/**
|
|
4
|
+
* The dashed Add tile at the end of a row of cards (#382, spec §4.4, Figma
|
|
5
|
+
* `11324:91317`).
|
|
6
|
+
*
|
|
7
|
+
* Home's My Creations ends its Recent row with it: beside a single card in the
|
|
8
|
+
* "one creation" frame, past the scroll in the "several" frame. It is the box
|
|
9
|
+
* of the card it sits beside, read from `ENTITY_CARD_TILE_BOX` so the two cannot
|
|
10
|
+
* differ, at radius 20 with the library's one dashed line, holding the 48px
|
|
11
|
+
* `cta` Add (`Button size="2xl"`) with its plus after the label.
|
|
12
|
+
*
|
|
13
|
+
* The tile is not itself the control: the button is, so the hit area and the
|
|
14
|
+
* focus ring are the button's, as drawn. With `href` it renders as a link
|
|
15
|
+
* through `linkComponent` (Next's `Link`) and keeps the link role, the shape
|
|
16
|
+
* `EmptyCreations` uses; with only `onClick` it is a button.
|
|
17
|
+
*/
|
|
18
|
+
declare function AddTile({ size, label, href, linkComponent, onClick, className, ...props }: Omit<React.ComponentProps<"div">, "children" | "onClick"> & {
|
|
19
|
+
/** The card box it matches: `tile-lg` 329x242 (default) or `tile` 250x184. */
|
|
20
|
+
size?: EntityCardTileSize;
|
|
21
|
+
/** The button's label, and so its accessible name. */
|
|
22
|
+
label?: string;
|
|
23
|
+
/** Where Add goes. Renders the control as a link. */
|
|
24
|
+
href?: string;
|
|
25
|
+
/** The element a link renders through, for a router's own link. */
|
|
26
|
+
linkComponent?: React.ElementType;
|
|
27
|
+
/** Called when Add is pressed. With `href` too, it runs before the navigation. */
|
|
28
|
+
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
29
|
+
}): React.JSX.Element;
|
|
30
|
+
export { AddTile };
|
|
31
|
+
//# sourceMappingURL=add-tile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-tile.d.ts","sourceRoot":"","sources":["../../src/blocks/add-tile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAGzF;;;;;;;;;;;;;;GAcG;AACH,iBAAS,OAAO,CAAC,EACf,IAAgB,EAChB,KAAa,EACb,IAAI,EACJ,aAAa,EACb,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG;IAC7D,8EAA8E;IAC9E,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,aAAa,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACjC,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;CAC/C,qBAuCA;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
import { Button } from "../ui/button.js";
|
|
5
|
+
import { DASHED_LINE_CLASS } from "./dashed-line.js";
|
|
6
|
+
import { ENTITY_CARD_TILE_BOX } from "./entity-card.js";
|
|
7
|
+
import { PlusIcon } from "./icons.js";
|
|
8
|
+
/**
|
|
9
|
+
* The dashed Add tile at the end of a row of cards (#382, spec §4.4, Figma
|
|
10
|
+
* `11324:91317`).
|
|
11
|
+
*
|
|
12
|
+
* Home's My Creations ends its Recent row with it: beside a single card in the
|
|
13
|
+
* "one creation" frame, past the scroll in the "several" frame. It is the box
|
|
14
|
+
* of the card it sits beside, read from `ENTITY_CARD_TILE_BOX` so the two cannot
|
|
15
|
+
* differ, at radius 20 with the library's one dashed line, holding the 48px
|
|
16
|
+
* `cta` Add (`Button size="2xl"`) with its plus after the label.
|
|
17
|
+
*
|
|
18
|
+
* The tile is not itself the control: the button is, so the hit area and the
|
|
19
|
+
* focus ring are the button's, as drawn. With `href` it renders as a link
|
|
20
|
+
* through `linkComponent` (Next's `Link`) and keeps the link role, the shape
|
|
21
|
+
* `EmptyCreations` uses; with only `onClick` it is a button.
|
|
22
|
+
*/
|
|
23
|
+
function AddTile({ size = "tile-lg", label = "Add", href, linkComponent, onClick, className, ...props }) {
|
|
24
|
+
const Link = linkComponent ?? "a";
|
|
25
|
+
const content = (_jsxs(_Fragment, { children: [label, _jsx(PlusIcon, {})] }));
|
|
26
|
+
return (_jsx("div", { "data-slot": "add-tile", className: cn("flex shrink-0 items-center justify-center rounded-container", ENTITY_CARD_TILE_BOX[size], DASHED_LINE_CLASS, className), ...props, children: href !== undefined ? (_jsx(Button, { "data-slot": "add-tile-action", variant: "cta", size: "2xl", render: _jsx(Link, { href: href }), nativeButton: false, role: "link", onClick: onClick, children: content })) : (_jsx(Button, { "data-slot": "add-tile-action", variant: "cta", size: "2xl", type: "button", onClick: onClick, children: content })) }));
|
|
27
|
+
}
|
|
28
|
+
export { AddTile };
|
|
29
|
+
//# sourceMappingURL=add-tile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-tile.js","sourceRoot":"","sources":["../../src/blocks/add-tile.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAA2B,MAAM,2BAA2B,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C;;;;;;;;;;;;;;GAcG;AACH,SAAS,OAAO,CAAC,EACf,IAAI,GAAG,SAAS,EAChB,KAAK,GAAG,KAAK,EACb,IAAI,EACJ,aAAa,EACb,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EAYT;IACC,MAAM,IAAI,GAAsB,aAAa,IAAI,GAAG,CAAA;IACpD,MAAM,OAAO,GAAG,CACd,8BACG,KAAK,EACN,KAAC,QAAQ,KAAG,IACX,CACJ,CAAA;IAED,OAAO,CACL,2BACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,6DAA6D,EAC7D,oBAAoB,CAAC,IAAI,CAAC,EAC1B,iBAAiB,EACjB,SAAS,CACV,KACG,KAAK,YAER,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CACpB,KAAC,MAAM,iBACK,iBAAiB,EAC3B,OAAO,EAAC,KAAK,EACb,IAAI,EAAC,KAAK,EACV,MAAM,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,EAC5B,YAAY,EAAE,KAAK,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,OAAO,YAEf,OAAO,GACD,CACV,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,iBAAW,iBAAiB,EAAC,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,YACxF,OAAO,GACD,CACV,GACG,CACP,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
3
|
+
import { type AvatarDiameter } from "./avatar.js";
|
|
4
|
+
/**
|
|
5
|
+
* THE AVATAR STACK (#381): overlapping faces with a "+N" chip, as the
|
|
6
|
+
* CloudGrid-2026 header draws the people in a grid (frame 11493:9953).
|
|
7
|
+
*
|
|
8
|
+
* Measured: 32px faces, a 1.5px ring in the page colour inside each face, a
|
|
9
|
+
* 12px overlap (a 20px step), and the chip last and on top: the page colour,
|
|
10
|
+
* a 1px slate-500 line, 13px slate-500 text, as big as a face.
|
|
11
|
+
*
|
|
12
|
+
* The Console carried two local copies of this (`chrome/InviteControl.tsx`,
|
|
13
|
+
* `onboarding/invite/AvatarStack.tsx`); both move onto it.
|
|
14
|
+
*
|
|
15
|
+
* One accessible name for the whole stack, from `label`. The faces and the
|
|
16
|
+
* count are hidden, because the label says what they show ("Members, 6"). With
|
|
17
|
+
* `onClick` it is a button, with `href` an anchor, with neither a named image,
|
|
18
|
+
* and with no label it is decorative.
|
|
19
|
+
*/
|
|
20
|
+
export type AvatarStackPerson = {
|
|
21
|
+
name: string;
|
|
22
|
+
seed?: string;
|
|
23
|
+
src?: string;
|
|
24
|
+
};
|
|
25
|
+
declare function AvatarStack({ people, max, size, label, href, onClick, render, className, ...props }: Omit<useRender.ComponentProps<"span">, "children"> & {
|
|
26
|
+
/** Who is in the stack, in the order they are drawn, first leftmost. */
|
|
27
|
+
people: readonly AvatarStackPerson[];
|
|
28
|
+
/** Faces drawn before the chip. Default 3; anything below 1 draws one. */
|
|
29
|
+
max?: number;
|
|
30
|
+
/** The diameter of every face and of the chip. Default 32, the frame's. */
|
|
31
|
+
size?: AvatarDiameter;
|
|
32
|
+
/** The accessible name of the whole stack, e.g. "Members, 6". */
|
|
33
|
+
label?: string;
|
|
34
|
+
/** Renders an anchor. */
|
|
35
|
+
href?: string;
|
|
36
|
+
/** Renders a `<button type="button">`. */
|
|
37
|
+
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
38
|
+
}): React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null;
|
|
39
|
+
export { AvatarStack };
|
|
40
|
+
//# sourceMappingURL=avatar-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.d.ts","sourceRoot":"","sources":["../../src/blocks/avatar-stack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAGrD,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAElE;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAI7E,iBAAS,WAAW,CAAC,EACnB,MAAM,EACN,GAAO,EACP,IAAS,EACT,KAAK,EACL,IAAI,EACJ,OAAO,EACP,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACtD,wEAAwE;IACxE,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACpC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2EAA2E;IAC3E,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;CAC/C,iFAmEA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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 { useRender } from "@base-ui/react/use-render";
|
|
5
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
6
|
+
import { Avatar } from "./avatar.js";
|
|
7
|
+
const OVERLAP = "-ml-3";
|
|
8
|
+
function AvatarStack({ people, max = 3, size = 32, label, href, onClick, render, className, ...props }) {
|
|
9
|
+
const shown = Math.min(people.length, Math.max(1, Math.floor(max)));
|
|
10
|
+
const rest = people.length - shown;
|
|
11
|
+
const interactive = Boolean(render || href || onClick);
|
|
12
|
+
const tag = href ? "a" : onClick ? "button" : "span";
|
|
13
|
+
// An interactive stack is never nameless: without a label it says its head count.
|
|
14
|
+
const name = label ?? (interactive ? `${people.length} ${people.length === 1 ? "person" : "people"}` : undefined);
|
|
15
|
+
const element = useRender({
|
|
16
|
+
render,
|
|
17
|
+
defaultTagName: tag,
|
|
18
|
+
props: {
|
|
19
|
+
"data-slot": "avatar-stack",
|
|
20
|
+
...(tag === "button" && !render ? { type: "button" } : {}),
|
|
21
|
+
...(href ? { href } : {}),
|
|
22
|
+
...(onClick ? { onClick } : {}),
|
|
23
|
+
...(interactive
|
|
24
|
+
? { "aria-label": name }
|
|
25
|
+
: label
|
|
26
|
+
? { role: "img", "aria-label": label }
|
|
27
|
+
: { "aria-hidden": true }),
|
|
28
|
+
className: cn("inline-flex items-center text-ink no-underline", interactive &&
|
|
29
|
+
"cursor-pointer rounded-pill focus-visible:ring-3 focus-visible:ring-ring focus-visible:outline-none", className),
|
|
30
|
+
children: (_jsxs(_Fragment, { children: [people.slice(0, shown).map((person, i) => (_jsxs("span", { "data-slot": "avatar-stack-face", "aria-hidden": "true", className: cn("relative inline-flex shrink-0 rounded-pill", i > 0 && OVERLAP), children: [_jsx(Avatar, { name: person.name, seed: person.seed, src: person.src, size: size }), _jsx("span", { "data-slot": "avatar-stack-ring", className: "pointer-events-none absolute inset-0 rounded-pill", style: {
|
|
31
|
+
boxShadow: "inset 0 0 0 var(--cg-border-width-strong) var(--cg-surface-page)",
|
|
32
|
+
} })] }, `${person.seed ?? person.name}-${i}`))), rest > 0 ? (_jsxs("span", { "data-slot": "avatar-stack-more", "aria-hidden": "true", className: cn("relative inline-flex shrink-0 items-center justify-center rounded-pill border border-steel bg-page text-caption text-steel", OVERLAP), style: { width: size, height: size }, children: ["+", rest] })) : null] })),
|
|
33
|
+
...props,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
if (people.length === 0)
|
|
37
|
+
return null;
|
|
38
|
+
return element;
|
|
39
|
+
}
|
|
40
|
+
export { AvatarStack };
|
|
41
|
+
//# sourceMappingURL=avatar-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.js","sourceRoot":"","sources":["../../src/blocks/avatar-stack.tsx"],"names":[],"mappings":"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"}
|
package/dist/blocks/avatar.d.ts
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
* alone with no name in the markup.
|
|
60
60
|
*/
|
|
61
61
|
/**
|
|
62
|
-
* The ramp: 18, 24, 32, 38. The rung IS the diameter.
|
|
62
|
+
* The ramp: 18, 24, 32, 38, 56, 64. The rung IS the diameter.
|
|
63
63
|
*
|
|
64
64
|
* ## Why the letters went away (#212)
|
|
65
65
|
*
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
* 56 (cloudgrid-console#944), and `AvatarPicker` renders that picture through
|
|
93
93
|
* this ramp. There is no letter for it, for the reason there is none for 32.
|
|
94
94
|
*/
|
|
95
|
-
export declare const AVATAR_DIAMETERS: readonly [18, 24, 32, 38, 56];
|
|
96
|
-
/** 18, 24, 32, 38 or
|
|
95
|
+
export declare const AVATAR_DIAMETERS: readonly [18, 24, 32, 38, 56, 64];
|
|
96
|
+
/** 18, 24, 32, 38, 56 or 64 across. */
|
|
97
97
|
export type AvatarDiameter = (typeof AVATAR_DIAMETERS)[number];
|
|
98
98
|
/**
|
|
99
99
|
* The 0.26 letter names, and what each one was worth in pixels.
|
|
@@ -117,7 +117,28 @@ export declare const AVATAR_SIZES: {
|
|
|
117
117
|
};
|
|
118
118
|
/** @deprecated Use `AvatarDiameter`. Removed in 0.29. See #216. */
|
|
119
119
|
export type AvatarSize = keyof typeof AVATAR_SIZES;
|
|
120
|
-
|
|
120
|
+
/**
|
|
121
|
+
* #381 — THE GRID AVATAR of the CloudGrid-2026 header: a rounded square on a
|
|
122
|
+
* pastel ground with one Ink letter (frames 11323:8600, 11324:90635, 11324:90641).
|
|
123
|
+
*
|
|
124
|
+
* The pastel is picked by `entityIdentitySeed`, the library's one identity hash,
|
|
125
|
+
* so a grid keeps the same pastel at every size and shape, for every member,
|
|
126
|
+
* on every screen. The letters are Ink and do not flip: the pastels are
|
|
127
|
+
* identity colours declared at `:root` only, so on a purple panel the mark
|
|
128
|
+
* keeps its ground and its letter rather than inverting into a second look.
|
|
129
|
+
* Measured: 12.02:1, 10.74:1 and 11.43:1.
|
|
130
|
+
*
|
|
131
|
+
* The frames draw "A" for Atomic Labs, so the pastel look draws ONE letter, the
|
|
132
|
+
* first of the name; an explicit `monogram` still wins. Letters are Manrope
|
|
133
|
+
* Regular at 15/32 of the box (15px at 32, as the frame).
|
|
134
|
+
*/
|
|
135
|
+
export declare const AVATAR_PASTELS: readonly ["--cg-avatar-pastel-1", "--cg-avatar-pastel-2", "--cg-avatar-pastel-3"];
|
|
136
|
+
export type AvatarPastel = (typeof AVATAR_PASTELS)[number];
|
|
137
|
+
export type AvatarShape = "circle" | "square";
|
|
138
|
+
export type AvatarLook = "identity" | "pastel";
|
|
139
|
+
/** The pastel a seed lands on: the same hash the identity look reads. */
|
|
140
|
+
export declare function avatarPastel(seed: string): AvatarPastel;
|
|
141
|
+
declare function Avatar({ name, seed, src, alt, size, monogram, shape, look: lookName, className, style, ...props }: Omit<React.ComponentProps<"span">, "children"> & {
|
|
121
142
|
/** Whose mark this is. Read for the initials, and for the hue unless `seed` is given. */
|
|
122
143
|
name: string;
|
|
123
144
|
/**
|
|
@@ -136,7 +157,8 @@ declare function Avatar({ name, seed, src, alt, size, monogram, className, style
|
|
|
136
157
|
*/
|
|
137
158
|
alt?: string;
|
|
138
159
|
/**
|
|
139
|
-
* The diameter: `18`, `24`, `32`, `38` or `
|
|
160
|
+
* The diameter: `18`, `24`, `32`, `38`, `56` or `64` (#381, the account
|
|
161
|
+
* menu's header).
|
|
140
162
|
*
|
|
141
163
|
* The 0.26 letters — `'s'`, `'m'`, `'l'` — still resolve to 18, 24 and 38
|
|
142
164
|
* through 0.28. They are deprecated; see `AVATAR_DIAMETERS`.
|
|
@@ -144,6 +166,10 @@ declare function Avatar({ name, seed, src, alt, size, monogram, className, style
|
|
|
144
166
|
size?: AvatarDiameter | AvatarSize;
|
|
145
167
|
/** Overrides the derived initials, for a name they read badly from. */
|
|
146
168
|
monogram?: string;
|
|
169
|
+
/** `circle` (the default) or `square`, the grid avatar's rounded square (#381). */
|
|
170
|
+
shape?: AvatarShape;
|
|
171
|
+
/** `identity` (the default) or `pastel`, the grid avatar's pastel ground and Ink letter (#381). */
|
|
172
|
+
look?: AvatarLook;
|
|
147
173
|
}): import("react").JSX.Element;
|
|
148
174
|
export { Avatar };
|
|
149
175
|
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/blocks/avatar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/blocks/avatar.tsx"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,gBAAgB,mCAAoC,CAAA;AAEjE,uCAAuC;AACvC,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY;;;;CAIf,CAAA;AAEV,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAA;AAgBlD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,mFAIjB,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAC1D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC7C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAA;AAE9C,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEvD;AAuBD,iBAAS,MAAM,CAAC,EACd,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAS,EACT,QAAQ,EACR,KAAgB,EAChB,IAAI,EAAE,QAAqB,EAC3B,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAClD,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,cAAc,GAAG,UAAU,CAAA;IAClC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,mGAAmG;IACnG,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB,+BAoEA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
|