@cloudgrid-io/ui 0.22.0 → 0.24.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/dist/blocks/entity-card.d.ts +189 -71
- package/dist/blocks/entity-card.d.ts.map +1 -1
- package/dist/blocks/entity-card.js +284 -86
- package/dist/blocks/entity-card.js.map +1 -1
- package/dist/blocks/entity-status.d.ts +32 -1
- package/dist/blocks/entity-status.d.ts.map +1 -1
- package/dist/blocks/entity-status.js +35 -1
- package/dist/blocks/entity-status.js.map +1 -1
- package/dist/blocks/icons.d.ts +58 -29
- package/dist/blocks/icons.d.ts.map +1 -1
- package/dist/blocks/icons.js +58 -29
- package/dist/blocks/icons.js.map +1 -1
- package/dist/blocks/phosphor-marks.d.ts +10 -10
- package/dist/blocks/phosphor-marks.d.ts.map +1 -1
- package/dist/blocks/phosphor-marks.js +15 -15
- package/dist/blocks/phosphor-marks.js.map +1 -1
- package/dist/theme.css +16 -0
- package/dist/tokens/base.json +70 -6
- package/dist/tokens.css +62 -6
- package/dist/tokens.json +11 -5
- package/package.json +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
2
3
|
import { Card } from "../ui/card.js";
|
|
3
4
|
import { EntityIdentity } from "./entity-identity.js";
|
|
5
|
+
import { EntityStateDot, EntityStatus } from "./entity-status.js";
|
|
4
6
|
import { EntityDashboardIcon, KindAgentIcon, KindAppIcon, KindInspirationIcon, OpenLiveIcon, } from "./icons.js";
|
|
5
7
|
import { cn } from "../lib/cloudgrid-cn.js";
|
|
6
8
|
/**
|
|
@@ -34,6 +36,29 @@ export const ENTITY_KIND_LABEL = {
|
|
|
34
36
|
inspiration: "Inspiration",
|
|
35
37
|
app: "App",
|
|
36
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* THE TINTS. What a kind's badge sits on.
|
|
41
|
+
*
|
|
42
|
+
* A third table beside the marks and the words, added with the founder's
|
|
43
|
+
* 2026-09-09 draft (#196): the badge used to be one neutral disc for all three
|
|
44
|
+
* kinds, so the mark was the only thing telling them apart and it is 16px wide.
|
|
45
|
+
* A tint is legible from across a listing; a glyph is not.
|
|
46
|
+
*
|
|
47
|
+
* Every entry is a utility over a `--cg-kind-*` token, and those three are
|
|
48
|
+
* declared at `:root` ONLY. That is the identity tile's rule applied to a mark:
|
|
49
|
+
* the badge sits on a screenshot, and a picture does not flip. The glyph stays
|
|
50
|
+
* `--cg-text-on-accent`, which is ink at every scope, and it measures 12.74:1,
|
|
51
|
+
* 14.65:1 and 10.24:1 on the three grounds.
|
|
52
|
+
*
|
|
53
|
+
* `agent` is a PROPOSAL. The draft never draws an agent badge; #d1c9ff is its
|
|
54
|
+
* own "Secondary2 30" style, which is the nearest thing in the same set to the
|
|
55
|
+
* two it does draw. Founder may veto, and a veto is one value in tokens.
|
|
56
|
+
*/
|
|
57
|
+
export const ENTITY_KIND_TINT = {
|
|
58
|
+
agent: "bg-kind-agent",
|
|
59
|
+
inspiration: "bg-kind-inspiration",
|
|
60
|
+
app: "bg-kind-app",
|
|
61
|
+
};
|
|
37
62
|
/**
|
|
38
63
|
* The sizes, in the order they get smaller. Read from the console census
|
|
39
64
|
* (2026-09-08) rather than invented: `default` is the 360px track, `compact`
|
|
@@ -58,10 +83,10 @@ export const ENTITY_CARD_SIZE_ORDER = ["default", "compact", "row"];
|
|
|
58
83
|
* whole point of the axis is that the sizes stay comparable. Three ternaries in
|
|
59
84
|
* three places is how one of them silently stops matching the other two.
|
|
60
85
|
*
|
|
61
|
-
* `row` builds its own composition below, so its `stats`, `reveal`
|
|
62
|
-
* `revealTitle` entries are empty: a row has no stat rule
|
|
63
|
-
* They are present rather than omitted so the record
|
|
64
|
-
* size cannot be half-added.
|
|
86
|
+
* `row` builds its own composition below, so its `nameRow`, `stats`, `reveal`
|
|
87
|
+
* and `revealTitle` entries are empty: a row has no stat rule, no reveal panel
|
|
88
|
+
* and no name row of its own. They are present rather than omitted so the record
|
|
89
|
+
* stays total and a fourth size cannot be half-added.
|
|
65
90
|
*/
|
|
66
91
|
const SIZE_STYLE = {
|
|
67
92
|
default: {
|
|
@@ -70,7 +95,8 @@ const SIZE_STYLE = {
|
|
|
70
95
|
title: "text-body-sm",
|
|
71
96
|
description: "text-body-sm",
|
|
72
97
|
stats: "gap-4 pt-3",
|
|
73
|
-
|
|
98
|
+
nameRow: "gap-2 px-[11px] pb-[11px]",
|
|
99
|
+
reveal: "gap-3 px-[15px] pt-[15px] pb-[11px]",
|
|
74
100
|
revealTitle: "text-body-sm",
|
|
75
101
|
},
|
|
76
102
|
compact: {
|
|
@@ -79,7 +105,8 @@ const SIZE_STYLE = {
|
|
|
79
105
|
title: "text-caption",
|
|
80
106
|
description: "text-caption",
|
|
81
107
|
stats: "gap-3 pt-2",
|
|
82
|
-
|
|
108
|
+
nameRow: "gap-1.5 px-2 pb-2",
|
|
109
|
+
reveal: "gap-2 px-3 pt-3 pb-2",
|
|
83
110
|
revealTitle: "text-caption",
|
|
84
111
|
},
|
|
85
112
|
row: {
|
|
@@ -88,6 +115,7 @@ const SIZE_STYLE = {
|
|
|
88
115
|
title: "text-body-sm",
|
|
89
116
|
description: "text-caption",
|
|
90
117
|
stats: "",
|
|
118
|
+
nameRow: "",
|
|
91
119
|
reveal: "",
|
|
92
120
|
revealTitle: "",
|
|
93
121
|
},
|
|
@@ -98,9 +126,9 @@ const SIZE_STYLE = {
|
|
|
98
126
|
* scannable, and what a percentage width would lose the moment the column
|
|
99
127
|
* resized.
|
|
100
128
|
*
|
|
101
|
-
* 128px against the
|
|
102
|
-
*
|
|
103
|
-
* thumbnail, which is why the row uses the
|
|
129
|
+
* 128px against the 159/92 ratio is a 74px picture, so a row is a little under
|
|
130
|
+
* 100px tall with its padding. Even a 20px kind badge would take a sixth of that
|
|
131
|
+
* thumbnail, which is why the row uses the 16px one.
|
|
104
132
|
*/
|
|
105
133
|
const ROW_THUMBNAIL = "w-32";
|
|
106
134
|
/**
|
|
@@ -148,23 +176,62 @@ function cssUrlString(url) {
|
|
|
148
176
|
* The kind badge on its own, exported because a listing header, a detail page or
|
|
149
177
|
* a row may want the same mark without a card around it.
|
|
150
178
|
*
|
|
151
|
-
*
|
|
152
|
-
* `
|
|
153
|
-
*
|
|
179
|
+
* 20 x 20 at a 6px corner with a 16px glyph, tinted per kind, lifted off the
|
|
180
|
+
* picture by `shadow-mark` — the founder's 2026-09-09 draft (#196). It was a
|
|
181
|
+
* 28px neutral disc with a mixed hairline; what changed is that the ground now
|
|
182
|
+
* says which kind it is and the mark is small enough to stop competing with the
|
|
183
|
+
* thumbnail it sits on.
|
|
184
|
+
*
|
|
185
|
+
* `size` is the only variant: `md` is the badge that sits on a preview, `sm` the
|
|
186
|
+
* 16px one that sits beside a title, where a 20px disc leads the line rather
|
|
187
|
+
* than following it.
|
|
188
|
+
*
|
|
189
|
+
* The badge does NOT flip per surface, and that is the identity tile's rule
|
|
190
|
+
* applied to a mark. Its ground is a `--cg-kind-*` tint and its glyph is
|
|
191
|
+
* `--cg-text-on-accent`, all four declared at `:root` only, so a tinted square
|
|
192
|
+
* with an ink glyph is what renders on white, on the purple panel and on ink
|
|
193
|
+
* alike. The alternative — a badge painted with `--cg-surface-card` and
|
|
194
|
+
* `--cg-text-primary` — inverts to white-on-white the moment the card sits
|
|
195
|
+
* inside `data-cg-surface="ink"`, because half of what it reads flips and the
|
|
196
|
+
* picture under it does not.
|
|
197
|
+
*
|
|
198
|
+
* The hairline is gone with the neutral disc: an edge existed to separate a
|
|
199
|
+
* white disc from a light screenshot, and a tint plus a drop shadow does that
|
|
200
|
+
* job without drawing a line the draft does not have.
|
|
201
|
+
*
|
|
202
|
+
* The kind is announced. The glyph is `aria-hidden` and the word rides along in
|
|
203
|
+
* an `sr-only` span, because "agent" is information and a decorative mark is not
|
|
204
|
+
* a way to convey it.
|
|
154
205
|
*/
|
|
155
206
|
function EntityKindBadge({ kind, size = "md", className, ...props }) {
|
|
156
207
|
const Icon = ENTITY_KIND_ICON[kind];
|
|
157
|
-
return (_jsxs("span", { "data-slot": "entity-card-kind", "data-kind": kind, className: cn("inline-flex shrink-0 items-center justify-center rounded-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
208
|
+
return (_jsxs("span", { "data-slot": "entity-card-kind", "data-kind": kind, className: cn("inline-flex shrink-0 items-center justify-center rounded-2xs text-on-accent shadow-mark", ENTITY_KIND_TINT[kind], size === "md" ? "size-5" : "size-4", className), ...props, children: [_jsx(Icon, { className: size === "md" ? "size-4" : "size-3" }), _jsx("span", { className: "sr-only", children: ENTITY_KIND_LABEL[kind] })] }));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The state as a dot, when the caller has not supplied one.
|
|
212
|
+
*
|
|
213
|
+
* `status` is a node and stays a node: this card does not know the wire status
|
|
214
|
+
* vocabulary and is not learning it here. What this does is recognise the
|
|
215
|
+
* library's OWN chip and take the state off it, so a caller who already passes
|
|
216
|
+
* `<EntityStatus status="live" />` gets the draft's dot with no edit at all
|
|
217
|
+
* (#196). Anything else — a console chip, a bare string, a fragment — returns
|
|
218
|
+
* null, and the card falls back to rendering the node it was given.
|
|
219
|
+
*
|
|
220
|
+
* Deliberately not a `state="live"` prop. That would be the vocabulary itself,
|
|
221
|
+
* in the props table, on a card whose whole design is that the product's words
|
|
222
|
+
* stay in the product.
|
|
223
|
+
*/
|
|
224
|
+
function statusDotFrom(status) {
|
|
225
|
+
if (!React.isValidElement(status))
|
|
226
|
+
return null;
|
|
227
|
+
if (status.type !== EntityStatus)
|
|
228
|
+
return null;
|
|
229
|
+
const props = status.props;
|
|
230
|
+
if (!props.status)
|
|
231
|
+
return null;
|
|
232
|
+
return _jsx(EntityStateDot, { status: props.status, label: props.label });
|
|
166
233
|
}
|
|
167
|
-
function EntityCard({ title, slug, description, size = "default", titleLines = 2, descriptionLines = 1, status, headerActions, stats, seed, previewUrl, kind, reveal = false, openDisabledReason, dashboardHref, settingsHref, creator, href, ariaLabel, meta, footer, className, children, ...props }) {
|
|
234
|
+
function EntityCard({ title, slug, description, size = "default", titleLines = 2, descriptionLines = 1, status, statusDot, headerActions, stats, seed, previewUrl, kind, reveal = false, openDisabledReason, dashboardHref, settingsHref, creator, href, ariaLabel, meta, footer, className, children, ...props }) {
|
|
168
235
|
const sized = SIZE_STYLE[size];
|
|
169
236
|
// The reveal owns the preview, so `seed` is what it needs and all it needs: a
|
|
170
237
|
// panel over nothing is not a panel. It deliberately does NOT ask for an
|
|
@@ -197,6 +264,19 @@ function EntityCard({ title, slug, description, size = "default", titleLines = 2
|
|
|
197
264
|
// One line on compact and on row, whatever the caller asked for. See the note
|
|
198
265
|
// on the prop: this is a height rule, not a preference.
|
|
199
266
|
const clampDescription = size === "default" && descriptionLines === 2 ? "line-clamp-2" : "truncate";
|
|
267
|
+
// The dot, and the one place it is resolved. Explicit first, derived from the
|
|
268
|
+
// library's own chip second, nothing third — see `statusDotFrom` (#196).
|
|
269
|
+
const dot = statusDot ?? statusDotFrom(status);
|
|
270
|
+
// A card with a panel keeps its rest state to the picture, the name and the
|
|
271
|
+
// dot (#196). Everything else the caller passed — the line, the creator, the
|
|
272
|
+
// state, the stats, the controls — is what the panel is FOR, and rendering it
|
|
273
|
+
// twice is how a listing turns back into a wall of text.
|
|
274
|
+
//
|
|
275
|
+
// Tied to `revealed` rather than to `size`, and that is the whole safety of
|
|
276
|
+
// this change: a card with no panel has nowhere to move that information TO,
|
|
277
|
+
// so it keeps the body it always had. Every existing caller that does not pass
|
|
278
|
+
// `reveal` renders exactly as it did.
|
|
279
|
+
const minimal = revealed;
|
|
200
280
|
/**
|
|
201
281
|
* THE TWO ACTIONS. One pair, written once, used by the reveal panel and by the
|
|
202
282
|
* row alike — because #182's premise is that every entity card offers the same
|
|
@@ -235,61 +315,145 @@ function EntityCard({ title, slug, description, size = "default", titleLines = 2
|
|
|
235
315
|
* above the overlay: a control that reads as disabled has to be inert when it
|
|
236
316
|
* is tapped, not a second way to reach Dashboard.
|
|
237
317
|
*/
|
|
238
|
-
const actionPair = (_jsxs(_Fragment, { children: [openLive ? (_jsxs("a", { href: href, "data-slot": "entity-card-open",
|
|
318
|
+
const actionPair = (_jsxs(_Fragment, { children: [openLive ? (_jsxs("a", { href: href, "data-slot": "entity-card-open",
|
|
319
|
+
// A NEW TAB, at every size, and it is the default rather than a prop
|
|
320
|
+
// (#200). Founder ruling 2026-09-10: Open leaves for the live entity,
|
|
321
|
+
// which is not this application — the console is a place a person is
|
|
322
|
+
// working, and navigating it away to look at one card's app costs
|
|
323
|
+
// them the list they were reading and every filter that got them to
|
|
324
|
+
// it. A back button does not restore a scroll position in a virtual
|
|
325
|
+
// grid, and on a phone it often does not restore the page at all.
|
|
326
|
+
//
|
|
327
|
+
// `rel` is not decoration. `target="_blank"` hands the opened
|
|
328
|
+
// document a live `window.opener` back into this origin, and the
|
|
329
|
+
// opened document is a TENANT'S app: `noopener` is what stops it
|
|
330
|
+
// reaching in, and `noreferrer` is what stops the console's URL —
|
|
331
|
+
// which carries the grid and the entity — travelling to it as a
|
|
332
|
+
// Referer header. Both, always, and never one without the other.
|
|
333
|
+
//
|
|
334
|
+
// Only this half of the pair. Dashboard stays in the tab (it is the
|
|
335
|
+
// console itself), and the disabled Open below has no `href`, so a
|
|
336
|
+
// `target` on it would be a promise about a navigation that cannot
|
|
337
|
+
// happen.
|
|
338
|
+
target: "_blank", rel: "noopener noreferrer",
|
|
339
|
+
// The word is not drawn. The founder's draft puts one 20px arrow at
|
|
340
|
+
// the top right of the panel and no label, and a pill with "Open" in
|
|
341
|
+
// it would be the widest thing on a 260px card. `sr-only` is what
|
|
342
|
+
// keeps the action named: an icon link with no accessible name is a
|
|
343
|
+
// link a screen reader announces as its own URL.
|
|
344
|
+
className: "inline-flex size-7 shrink-0 items-center justify-center rounded-pill text-ink no-underline after:absolute after:inset-0 after:content-[''] focus-visible:ring-3 focus-visible:ring-ring focus-visible:outline-none", children: [_jsx(OpenLiveIcon, { className: "size-5" }), _jsx("span", { className: "sr-only", children: "Open" })] })) : (_jsxs("a", { "data-slot": "entity-card-open", "data-disabled": "true", role: "link", "aria-disabled": "true",
|
|
239
345
|
// opacity-50 and a not-allowed cursor: this library's own disabled
|
|
240
346
|
// convention, and the one every other block here uses. It takes the
|
|
241
|
-
//
|
|
347
|
+
// mark under the panel's AA floor on purpose — WCAG 1.4.3 exempts an
|
|
242
348
|
// inactive control, and a disabled action that reads at full strength
|
|
243
349
|
// is the failure this state exists to prevent.
|
|
244
350
|
//
|
|
245
|
-
// relative z-10 so a tap on the
|
|
351
|
+
// relative z-10 so a tap on the mark lands on the mark. With Open
|
|
246
352
|
// disabled the panel's stretched layer is Dashboard's, and it covers
|
|
247
353
|
// this pill along with everything else.
|
|
248
|
-
className: "relative z-10 inline-flex cursor-not-allowed items-center
|
|
354
|
+
className: "relative z-10 inline-flex size-7 shrink-0 cursor-not-allowed items-center justify-center rounded-pill text-ink no-underline opacity-50", children: [_jsx(OpenLiveIcon, { className: "size-5" }), _jsx("span", { className: "sr-only", children: "Open" }), openDisabledReason ? _jsx("span", { className: "sr-only", children: openDisabledReason }) : null] })), dashboardTarget ? (_jsxs("a", { href: dashboardTarget, "data-slot": "entity-card-dashboard", "data-stretched": openLive ? undefined : "true", className: cn("inline-flex size-7 shrink-0 items-center justify-center rounded-pill text-ink no-underline focus-visible:ring-3 focus-visible:ring-ring focus-visible:outline-none", openLive
|
|
249
355
|
? // Lifted above Open's overlay, and therefore dead until the panel
|
|
250
356
|
// can be seen (#171).
|
|
251
357
|
"pointer-events-none relative group-hover/card:pointer-events-auto group-focus-within/card:pointer-events-auto"
|
|
252
358
|
: // Open is disabled, so this is the card's one door: it takes
|
|
253
359
|
// Open's hit model wholesale — unpositioned, stretched, never
|
|
254
360
|
// gated, which is what makes it work on a phone.
|
|
255
|
-
"after:absolute after:inset-0 after:content-['']"), children: [_jsx(EntityDashboardIcon, { className: "size-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
361
|
+
"after:absolute after:inset-0 after:content-['']"), children: [_jsx(EntityDashboardIcon, { className: "size-5" }), _jsx("span", { className: "sr-only", children: "Dashboard" })] })) : null] }));
|
|
362
|
+
/**
|
|
363
|
+
* THE FULL BODY: the card as it was before the panel existed.
|
|
364
|
+
*
|
|
365
|
+
* Rendered by a card with no reveal panel — a text card, a card whose caller
|
|
366
|
+
* did not ask for one — because there is nowhere else for any of it to go.
|
|
367
|
+
* A card WITH a panel renders `nameRow` below instead (#196).
|
|
368
|
+
*/
|
|
369
|
+
const fullBody = (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("span", { dir: "auto", "data-slot": "entity-card-title", title: title, className: cn("block font-medium break-words text-ink", sized.title, titleLines === 1 ? "truncate" : "line-clamp-2"), children: [kind && !seed ? (_jsx(EntityKindBadge, { kind: kind, size: "sm", className: "mr-1.5 align-[-0.2em]" })) : null, title] }), slug ? (_jsx("span", { dir: "auto", "data-slot": "entity-card-slug", title: slug, className: "mt-0.5 block truncate font-mono text-caption text-faint", children: slug })) : null] }), status ? _jsx("div", { className: "shrink-0", children: status }) : null, headerActions ? (_jsx("div", { "data-slot": "entity-card-actions",
|
|
370
|
+
// items-center against the title's first line, and -mt-1 to pull an
|
|
371
|
+
// icon button's own padding back so the glyph optically lines up
|
|
372
|
+
// with the title rather than sitting a couple of pixels low.
|
|
373
|
+
className: "-mt-1 flex shrink-0 items-center gap-1", children: headerActions })) : null] }), description ? (_jsx("p", { dir: "auto", "data-slot": "entity-card-description", title: description, className: cn("m-0 text-body", sized.description, clampDescription), children: description })) : null, meta, _jsx("div", { "aria-hidden": "true", className: "grow" }), shownStats && shownStats.length > 0 ? (_jsx("div", { "data-slot": "entity-card-stats", className: cn("flex flex-wrap items-center border-t border-hairline text-caption text-body", sized.stats), children: shownStats.map((stat) => (_jsxs("span", { className: "inline-flex items-center gap-1.5", children: [stat.icon ? (_jsx("span", { "aria-hidden": "true", className: "inline-flex [&>svg]:size-4", children: stat.icon })) : null, stat.value, _jsx("span", { className: "sr-only", children: stat.label })] }, stat.label))) })) : null, footer] }));
|
|
374
|
+
/**
|
|
375
|
+
* THE REST STATE of a card that has a panel: the name, and the dot (#196).
|
|
376
|
+
*
|
|
377
|
+
* The founder's draft is one picture, one name and one 10px dot, and it is not
|
|
378
|
+
* a smaller version of the body above — it is the body above with everything
|
|
379
|
+
* that belongs in the panel taken out of it. A listing of these reads as a
|
|
380
|
+
* wall of PICTURES, which is what a listing of somebody's work should be.
|
|
381
|
+
*
|
|
382
|
+
* The name keeps `data-slot="entity-card-title"`, because it is the title.
|
|
383
|
+
* `truncate`, always: this row is one line by construction, and `titleLines`
|
|
384
|
+
* is the body's rule, not this one's.
|
|
385
|
+
*/
|
|
386
|
+
const nameRow = (_jsxs("div", { className: cn("flex w-full min-w-0 items-center", sized.nameRow), children: [_jsx("span", { dir: "auto", "data-slot": "entity-card-title", title: title, className: cn("min-w-0 flex-1 truncate font-medium text-ink", sized.title), children: title }), dot ? (_jsx("span", { "data-slot": "entity-card-state", className: "flex shrink-0 items-center", children: dot })) : null] }));
|
|
262
387
|
/**
|
|
263
388
|
* The preview region, shared by all three sizes.
|
|
264
389
|
*
|
|
265
|
-
* A function rather than a second copy, because the
|
|
266
|
-
* between the stacked sizes and the row
|
|
267
|
-
*
|
|
268
|
-
* the
|
|
269
|
-
* the
|
|
270
|
-
*
|
|
390
|
+
* A function rather than a second copy, because the only thing that differs
|
|
391
|
+
* between the stacked sizes and the row is its shape. Everything that is easy
|
|
392
|
+
* to get wrong — the capture painting over the identity rather than instead of
|
|
393
|
+
* it, the badge not eating a click meant for the link — is written once and is
|
|
394
|
+
* the same picture in every size.
|
|
395
|
+
*
|
|
396
|
+
* The panel is no longer passed in here (#196). It is anchored to the CARD's
|
|
397
|
+
* bottom edge now, because it covers the name row as well as the lower half of
|
|
398
|
+
* the picture, and a child of the preview cannot reach outside it.
|
|
271
399
|
*/
|
|
272
|
-
const previewRegion = (shape, badgeSize
|
|
400
|
+
const previewRegion = (shape, badgeSize) => seed ? (_jsxs("div", { "data-slot": "entity-card-preview", className: cn("relative shrink-0", shape), children: [_jsx(EntityIdentity, { seed: seed, name: title }), previewUrl ? (_jsx("div", { "data-slot": "entity-card-capture", "aria-hidden": "true", className: "absolute inset-0 bg-cover bg-center",
|
|
273
401
|
// A background image, not an <img>: a URL that 404s paints nothing
|
|
274
402
|
// and the identity tile below shows through, with no state and no
|
|
275
403
|
// client boundary. The URL goes out exactly as the caller wrote it —
|
|
276
404
|
// `cssUrlString` escapes only the quote and backslash that would
|
|
277
405
|
// break out of url("..."), and never re-encodes an already-encoded
|
|
278
406
|
// URL (ui#178).
|
|
279
|
-
style: { backgroundImage: `url("${cssUrlString(previewUrl)}")` } })) : null,
|
|
407
|
+
style: { backgroundImage: `url("${cssUrlString(previewUrl)}")` } })) : null, kind ? (_jsx(EntityKindBadge, { kind: kind, size: badgeSize, className: cn("pointer-events-none absolute", badgeSize === "md" ? "top-[7px] right-[7px]" : "top-1 right-1") })) : null] })) : null;
|
|
280
408
|
/**
|
|
281
|
-
*
|
|
409
|
+
* THE PANEL — which IS the open state (#196).
|
|
410
|
+
*
|
|
411
|
+
* The founder's ruling of 2026-09-09: the panel is not a hover affordance over
|
|
412
|
+
* a card, it is the card open. So it carries what the rest state gave up — the
|
|
413
|
+
* line about the thing, who made it, the controls — and the rest state is
|
|
414
|
+
* lighter for it.
|
|
415
|
+
*
|
|
416
|
+
* Four things changed, and each one had a reason on the old side too:
|
|
282
417
|
*
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
*
|
|
418
|
+
* **It is white, not a scrim, and the ink surface is gone.** A dark wash over
|
|
419
|
+
* a screenshot made the picture a texture behind grey text, and every entity's
|
|
420
|
+
* panel looked like every other entity's. On white the panel is a piece of
|
|
421
|
+
* paper laid over the lower half of the picture: the type is the page's own
|
|
422
|
+
* ink at the page's own contrast, and the picture above it stays a picture.
|
|
423
|
+
* The scrim treatment is retired for this card — `--cg-scrim-strong` is still
|
|
424
|
+
* a token, and nothing else here reaches for it.
|
|
425
|
+
*
|
|
426
|
+
* **It is anchored to the card's bottom edge, not to the preview's box.** It
|
|
427
|
+
* covers the name row as well as the lower picture, which is what lets the
|
|
428
|
+
* title stay in the same place when the panel arrives instead of jumping up
|
|
429
|
+
* into the thumbnail.
|
|
430
|
+
*
|
|
431
|
+
* **The state is the same dot the rest row shows**, in the same place at the
|
|
432
|
+
* end of the title. A chip here and a dot there would be two vocabularies for
|
|
433
|
+
* one fact. A caller whose state this card cannot read still gets its node
|
|
434
|
+
* rendered — see `statusDot`.
|
|
435
|
+
*
|
|
436
|
+
* **`headerActions` moved INTO it** (#196, and it supersedes only the
|
|
437
|
+
* PLACEMENT half of #176). The rule #176 exists for is that a control renders
|
|
438
|
+
* once and never twice; that is unchanged. What changed is which single place:
|
|
439
|
+
* the rest state no longer has a header row to put a pin toggle in, and the
|
|
440
|
+
* panel's creator line has a right edge that is empty. They sit there, gated
|
|
441
|
+
* exactly like Dashboard is — invisible at rest means inert at rest (#171).
|
|
287
442
|
*/
|
|
288
|
-
const revealPanel = revealed ? (_jsxs("div", { "data-slot": "entity-card-reveal", "data-
|
|
289
|
-
//
|
|
290
|
-
//
|
|
291
|
-
//
|
|
292
|
-
//
|
|
443
|
+
const revealPanel = revealed ? (_jsxs("div", { "data-slot": "entity-card-reveal", "data-theme": "default", className: cn(
|
|
444
|
+
// inset-x-px / bottom-px, not inset-x-0: the card carries a 1px pad so
|
|
445
|
+
// its hairline is never painted over, and the panel's radius is the
|
|
446
|
+
// card's less that pixel. Same arithmetic as the preview above it, which
|
|
447
|
+
// is what keeps the two from disagreeing about a corner.
|
|
448
|
+
// bg-(--cg-surface-card), not `bg-card`: the shadcn bridge declares
|
|
449
|
+
// `--card` per surface too, and a bridged name is NOT re-declared by
|
|
450
|
+
// data-theme="default" — so `bg-card` here stays transparent inside a
|
|
451
|
+
// purple panel however the CloudGrid token resolves. Reading the
|
|
452
|
+
// --cg- token directly is what makes the attribute above work.
|
|
453
|
+
"absolute inset-x-px bottom-px flex flex-col justify-end rounded-[calc(var(--cg-radius-md)-1px)] bg-(--cg-surface-card) text-ink",
|
|
454
|
+
// The only thing compact changes about this panel is its measurements.
|
|
455
|
+
// Same ground, same two foregrounds — a panel that got smaller AND
|
|
456
|
+
// paler would be trading contrast for space, which is the one thing the
|
|
293
457
|
// guardrail exists to stop.
|
|
294
458
|
sized.reveal,
|
|
295
459
|
// opacity-0, not hidden: the panel is in the tab order at all
|
|
@@ -298,18 +462,24 @@ function EntityCard({ title, slug, description, size = "default", titleLines = 2
|
|
|
298
462
|
"opacity-0 transition-opacity duration-[var(--cg-duration)] ease-out", "group-hover/card:opacity-100 group-focus-within/card:opacity-100",
|
|
299
463
|
// Reduced motion removes the FADE, not the panel. Someone who
|
|
300
464
|
// has asked for less movement still needs the actions.
|
|
301
|
-
"motion-reduce:transition-none"), children: [_jsx("span", { "data-slot": "entity-card-reveal-title", dir: "auto", className: cn("truncate font-medium", sized.revealTitle), children: title }),
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
// text
|
|
307
|
-
|
|
308
|
-
// text
|
|
309
|
-
//
|
|
310
|
-
//
|
|
311
|
-
|
|
312
|
-
|
|
465
|
+
"motion-reduce:transition-none"), children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { "data-slot": "entity-card-reveal-title", dir: "auto", className: cn("min-w-0 flex-1 truncate font-medium text-ink", sized.revealTitle), children: title }), dot ? (_jsx("span", { "data-slot": "entity-card-reveal-state", className: "flex shrink-0 items-center", children: dot })) : (
|
|
466
|
+
// The fallback, and the only place a caller's own chip still lands on
|
|
467
|
+
// a card that reveals: better a chip in the panel than a state the
|
|
468
|
+
// card silently dropped.
|
|
469
|
+
status ?? null), _jsx("span", { className: "flex shrink-0 items-center gap-1", children: actionPair })] }), description ? (_jsx("p", { "data-slot": "entity-card-reveal-description", dir: "auto",
|
|
470
|
+
// text-body, the page's secondary rung: 7:1 on this white panel. The
|
|
471
|
+
// draft's own #828c98 measures 3.41:1 there, under the 4.5:1 AA floor
|
|
472
|
+
// for normal text, so the value is deliberately NOT adopted — see the
|
|
473
|
+
// note in the PR. The muted rung is 3.69:1 and is out for the same
|
|
474
|
+
// reason.
|
|
475
|
+
className: cn("m-0 text-caption text-body", size === "compact" ? "truncate" : "line-clamp-2"), children: description })) : null, !openLive && openDisabledReason ? (_jsx("p", { "data-slot": "entity-card-reveal-reason", dir: "auto", "aria-hidden": "true", className: "m-0 truncate text-caption text-body", children: openDisabledReason })) : null, creator || headerActions ? (_jsxs("div", { className: "flex min-w-0 items-center justify-between gap-2", children: [creator ? (_jsxs("span", { "data-slot": "entity-card-reveal-creator", className: "flex min-w-0 items-center gap-1 text-caption text-ink", children: [creator.avatar ? (_jsx("span", { "aria-hidden": "true", className: "inline-flex size-6 shrink-0 overflow-hidden rounded-pill [&>*]:size-full", children: creator.avatar })) : null, _jsx("span", { className: "truncate", children: creator.name })] })) : (_jsx("span", {})), headerActions ? (_jsx("div", { "data-slot": "entity-card-actions", className: cn(
|
|
476
|
+
// relative z-10 to sit above Open's stretched layer, so a tap on
|
|
477
|
+
// the pin toggle reaches the toggle.
|
|
478
|
+
"relative z-10 flex shrink-0 items-center gap-1",
|
|
479
|
+
// And dead while the panel cannot be seen, which is Dashboard's
|
|
480
|
+
// rule and #171's: an invisible control that behaves differently
|
|
481
|
+
// from the pixels around it is a trap a reader cannot see.
|
|
482
|
+
"pointer-events-none group-hover/card:pointer-events-auto group-focus-within/card:pointer-events-auto"), children: headerActions })) : null] })) : null] })) : null;
|
|
313
483
|
/**
|
|
314
484
|
* THE ROW. The same card, running across instead of down.
|
|
315
485
|
*
|
|
@@ -338,7 +508,7 @@ function EntityCard({ title, slug, description, size = "default", titleLines = 2
|
|
|
338
508
|
* and nothing is stretched over it. Here it sits inside Open's hit area, so it
|
|
339
509
|
* carries `relative z-10` to stay above it. That is safe in a way the same
|
|
340
510
|
* treatment on the panel's Dashboard was not (#171): these controls are
|
|
341
|
-
* VISIBLE at rest, so a tap landing on the
|
|
511
|
+
* VISIBLE at rest, so a tap landing on the pin toggle rather than on the row
|
|
342
512
|
* is what a reader can see is going to happen. The invisible-at-rest rule
|
|
343
513
|
* still binds the two actions, which is why Dashboard keeps its
|
|
344
514
|
* `pointer-events-none`.
|
|
@@ -346,11 +516,16 @@ function EntityCard({ title, slug, description, size = "default", titleLines = 2
|
|
|
346
516
|
* `stats` and `footer` are not rendered here — see the size note at the top.
|
|
347
517
|
*/
|
|
348
518
|
if (size === "row") {
|
|
349
|
-
return (_jsxs(Card, { "data-slot": "entity-card", "data-entity-size": "row", className: cn(
|
|
519
|
+
return (_jsxs(Card, { "data-slot": "entity-card", "data-entity-size": "row", className: cn(
|
|
520
|
+
// The same chrome the media card takes (#196): the hairline, the 12px
|
|
521
|
+
// corner and Elevation 1, in place of Card's own ring. A list and a
|
|
522
|
+
// grid of the same thing must not be two different objects.
|
|
523
|
+
"relative flex-row items-center gap-3 rounded-md border border-hairline p-(--card-spacing) shadow-card ring-0", sized.cardSpacing, className), ...props, children: [previewRegion(
|
|
350
524
|
// A left thumbnail, so it rounds on all four corners rather than
|
|
351
|
-
// sharing the card's top edge
|
|
352
|
-
//
|
|
353
|
-
|
|
525
|
+
// sharing the card's top edge. Its own hairline is gone with the
|
|
526
|
+
// restyle: the card has one now, and two lines 3px apart read as a
|
|
527
|
+
// mistake.
|
|
528
|
+
cn("aspect-[159/92] overflow-hidden rounded-sm", ROW_THUMBNAIL), "sm"), _jsx("div", { className: cn("flex w-0 min-w-0 flex-1 flex-col", sized.body), children: children ?? (_jsxs(_Fragment, { children: [_jsxs("span", { dir: "auto", "data-slot": "entity-card-title", title: title, className: cn("block truncate font-medium text-ink", sized.title), children: [kind && !seed ? (_jsx(EntityKindBadge, { kind: kind, size: "sm", className: "mr-1.5 align-[-0.2em]" })) : null, title] }), slug ? (_jsx("span", { dir: "auto", "data-slot": "entity-card-slug", title: slug, className: "block truncate font-mono text-caption text-faint", children: slug })) : null, description ? (_jsx("p", { dir: "auto", "data-slot": "entity-card-description", title: description, className: cn("m-0 truncate text-body", sized.description), children: description })) : null, creator || meta ? (_jsxs("div", { className: "flex min-w-0 items-center gap-2 text-caption text-body", children: [creator ? (_jsxs("span", { "data-slot": "entity-card-creator", className: "flex min-w-0 items-center gap-1.5", children: [creator.avatar ? (_jsx("span", { "aria-hidden": "true", className: "inline-flex size-4 shrink-0 overflow-hidden rounded-pill [&>*]:size-full", children: creator.avatar })) : null, _jsx("span", { className: "truncate", children: creator.name })] })) : null, meta] })) : null] })) }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [status ? _jsx("span", { className: "shrink-0", children: status }) : null, headerActions ? (_jsx("div", { "data-slot": "entity-card-actions", className: "relative z-10 flex shrink-0 items-center gap-1", children: headerActions })) : null, _jsx("div", { "data-slot": "entity-card-row-actions", className: cn("flex shrink-0 items-center gap-2",
|
|
354
529
|
// The row's whole hover behaviour, and all of it: the
|
|
355
530
|
// information is already on screen, so what arrives is the two
|
|
356
531
|
// actions and nothing else.
|
|
@@ -358,31 +533,54 @@ function EntityCard({ title, slug, description, size = "default", titleLines = 2
|
|
|
358
533
|
// Reduced motion removes the FADE, not the actions.
|
|
359
534
|
"motion-reduce:transition-none"), children: actionPair })] })] }));
|
|
360
535
|
}
|
|
361
|
-
const card = (_jsxs(Card, { "data-slot": "entity-card", "data-entity-size": size,
|
|
362
|
-
//
|
|
363
|
-
//
|
|
364
|
-
// inside
|
|
365
|
-
//
|
|
366
|
-
//
|
|
367
|
-
//
|
|
368
|
-
//
|
|
369
|
-
//
|
|
370
|
-
// at
|
|
536
|
+
const card = (_jsxs(Card, { "data-slot": "entity-card", "data-entity-size": size, className: cn(
|
|
537
|
+
// THE CHROME, to the founder's 2026-09-09 draft (#196): a white card at
|
|
538
|
+
// a 12px corner, a 1px hairline, Elevation 1, and a 1px pad so the
|
|
539
|
+
// picture inside sits at 11px and never paints over the line. `ring-0`
|
|
540
|
+
// because `Card` contains itself with a ring by default and a ring plus
|
|
541
|
+
// a border is two edges.
|
|
542
|
+
//
|
|
543
|
+
// The shadow is the one departure from "containment is a hairline, not
|
|
544
|
+
// elevation", and the page ground is why: on white a card had nothing
|
|
545
|
+
// but its own line, and at 4% over 16px this is a lift you read rather
|
|
546
|
+
// than see. There is still no hover lift, no scale and no colour change
|
|
547
|
+
// on the card itself.
|
|
548
|
+
//
|
|
549
|
+
// p-px and the gap from the size table: `Card` pads itself for a
|
|
550
|
+
// header/content/footer stack, and this card's preview is full bleed.
|
|
551
|
+
// The padding moves inside, onto the body or the name row, and the 12px
|
|
552
|
+
// between the picture and the name is the card's own gap — the draft's.
|
|
553
|
+
//
|
|
554
|
+
// relative, and it is load-bearing now: the panel is anchored to THIS
|
|
555
|
+
// element rather than to the preview (#196), and Open's stretched
|
|
556
|
+
// ::after sizes to the panel inside it.
|
|
557
|
+
"relative rounded-md border border-hairline p-px shadow-card ring-0", sized.body,
|
|
371
558
|
// `h-full` only inside the link wrapper, where the card has to fill the
|
|
372
559
|
// anchor. As a direct grid item it must NOT be h-full: a grid area has a
|
|
373
|
-
// definite height, so height:100% pins the card to the tallest card in
|
|
374
|
-
// row even when the grid was told `items-start`.
|
|
375
|
-
|
|
376
|
-
//
|
|
377
|
-
//
|
|
378
|
-
//
|
|
379
|
-
|
|
380
|
-
"overflow-hidden rounded-t-xl border-b border-hairline", "md", revealPanel), _jsx("div", { className: cn("flex min-h-0 flex-1 flex-col p-(--card-spacing)", sized.body), children: body })] }));
|
|
560
|
+
// definite height, so height:100% pins the card to the tallest card in
|
|
561
|
+
// the row even when the grid was told `items-start`.
|
|
562
|
+
href && !revealed && "h-full", sized.cardSpacing, className), ...props, children: [previewRegion(
|
|
563
|
+
// 159/92, the draft's ratio, and an 11px corner: the card's 12 less the
|
|
564
|
+
// 1px pad around it. Written as the arithmetic rather than as a second
|
|
565
|
+
// radius token, so the two can never drift apart.
|
|
566
|
+
"aspect-[159/92] overflow-hidden rounded-[calc(var(--cg-radius-md)-1px)]", "md"), children ? (_jsx("div", { className: cn("flex min-h-0 flex-1 flex-col p-(--card-spacing)", sized.body), children: children })) : minimal ? (nameRow) : (_jsx("div", { className: cn("flex min-h-0 flex-1 flex-col p-(--card-spacing)", sized.body), children: fullBody })), revealPanel] }));
|
|
381
567
|
// A revealed card is never wrapped: the panel's Open action is already an
|
|
382
568
|
// anchor, and an anchor inside an anchor is invalid HTML that browsers repair
|
|
383
569
|
// by closing the outer one.
|
|
384
570
|
if (!href || revealed)
|
|
385
571
|
return card;
|
|
572
|
+
// NO `target` here, and it is a scope decision rather than an oversight.
|
|
573
|
+
// #200's ruling is about the card's Open ACTION, which is what every revealed
|
|
574
|
+
// card — the founder's v2 card, and the shape the console ships — actually
|
|
575
|
+
// offers: with `reveal` set, Open's stretched layer IS the click target, so a
|
|
576
|
+
// click on the card opens the tab.
|
|
577
|
+
//
|
|
578
|
+
// This wrapper is the older shape, a card that is a link in its own right, and
|
|
579
|
+
// a caller reaching for it has made the card a navigation element on its own
|
|
580
|
+
// page. Silently retargeting that is a behaviour change for a surface the
|
|
581
|
+
// ruling did not look at. If the founder wants the whole card to spawn a tab
|
|
582
|
+
// too, it is this one attribute — and it should be decided on a screen, not
|
|
583
|
+
// inferred here.
|
|
386
584
|
return (_jsx("a", { href: href, "aria-label": ariaLabel ?? title,
|
|
387
585
|
// The focus ring is the same token every control uses, so it flips with
|
|
388
586
|
// the surface. A card-sized link with no visible focus state is unusable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-card.js","sourceRoot":"","sources":["../../src/blocks/entity-card.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entity-card.js","sourceRoot":"","sources":["../../src/blocks/entity-card.tsx"],"names":[],"mappings":"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"}
|