@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.
@@ -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` and
62
- * `revealTitle` entries are empty: a row has no stat rule and no reveal panel.
63
- * They are present rather than omitted so the record stays total and a fourth
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
- reveal: "gap-1.5 p-3",
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
- reveal: "gap-1 p-2",
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 1200/630 ratio is a 67px picture, so a row is a little over
102
- * 90px tall with its padding. A 28px kind badge would cover a fifth of that
103
- * thumbnail, which is why the row uses the small one.
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
- * `size` is the only variant: `md` is the 28px disc that sits on a preview,
152
- * `sm` the 20px one that sits beside a title. Both render a 16px-class glyph,
153
- * which is what the marks were picked to survive.
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-pill bg-raised text-on-accent", size === "md" ? "size-7" : "size-5", className), style: {
158
- // Mixed from --cg-ink rather than taken from --cg-border-hairline, and
159
- // for the same reason the ground and the glyph are pinned: the hairline
160
- // is a white wash on both dark surfaces, so a badge inside
161
- // data-cg-surface="ink" would lose its edge while the disc under it
162
- // stayed light. The mesh in EntityIdentity mixes its own line the same
163
- // way, at 8%.
164
- border: "1px solid color-mix(in srgb, var(--cg-ink) 12%, transparent)",
165
- }, ...props, children: [_jsx(Icon, { className: size === "md" ? "size-4" : "size-3.5" }), _jsx("span", { className: "sr-only", children: ENTITY_KIND_LABEL[kind] })] }));
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", className: "inline-flex items-center gap-1 rounded-pill border border-hairline px-2 py-1 text-caption 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-3.5" }), "Open"] })) : (_jsxs("a", { "data-slot": "entity-card-open", "data-disabled": "true", role: "link", "aria-disabled": "true",
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
- // label under the panel's AA floor on purpose — WCAG 1.4.3 exempts an
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 pill lands on the pill. With Open
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 gap-1 rounded-pill border border-hairline px-2 py-1 text-caption no-underline opacity-50", children: [_jsx(OpenLiveIcon, { className: "size-3.5" }), "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 items-center gap-1 rounded-pill border border-hairline px-2 py-1 text-caption no-underline focus-visible:ring-3 focus-visible:ring-ring focus-visible:outline-none", openLive
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-3.5" }), "Dashboard"] })) : null] }));
256
- const body = children ??
257
- (_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",
258
- // items-center against the title's first line, and -mt-1 to pull an
259
- // icon button's own padding back so the glyph optically lines up
260
- // with the title rather than sitting a couple of pixels low.
261
- 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] }));
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 two things that differ
266
- * between the stacked sizes and the row are its shape and whether a panel goes
267
- * over it. Everything that is easy to get wrong — the capture painting over
268
- * the identity rather than instead of it, the badge sitting after the panel so
269
- * the scrim does not smudge it, the badge not eating a click meant for the
270
- * link — is written once and is the same picture in every size.
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, panel) => 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",
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, panel, kind ? (_jsx(EntityKindBadge, { kind: kind, size: badgeSize, className: cn("pointer-events-none absolute", badgeSize === "md" ? "top-2 right-2" : "top-1 right-1") })) : null] })) : 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
- * The reveal panel, which belongs to the stacked sizes only.
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
- * Extracted to a variable rather than left inline because `previewRegion`
284
- * above is now shared with the row, and the row deliberately has no panel to
285
- * pass it. The alternative a boolean the region branches on would put the
286
- * decision in two places instead of one.
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-cg-surface": "ink", className: cn("absolute inset-0 flex flex-col justify-end bg-scrim-strong text-ink",
289
- // The only thing compact changes about this panel is its
290
- // measurements. Same scrim, same ink surface, same two
291
- // foregrounds a panel that got smaller AND paler would be
292
- // trading contrast for space, which is the one thing the
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 }), description ? (_jsx("p", { "data-slot": "entity-card-reveal-description", dir: "auto",
302
- // text-body, never text-faint. The secondary measures 6.18:1
303
- // on this scrim and the guardrail holds it there; the muted
304
- // rung measures 4.06:1, under AA, and is deliberately outside
305
- // that assertion because it is documented as non-essential
306
- // text. So there is no muted tier available on this panel.
307
- className: "m-0 truncate text-caption text-body", children: description })) : null, creator || status ? (_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.5 text-caption text-body", 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 })] })) : (_jsx("span", {})), status ? _jsx("span", { className: "shrink-0", children: status }) : null] })) : null, !openLive && openDisabledReason ? (_jsx("p", { "data-slot": "entity-card-reveal-reason", dir: "auto", "aria-hidden": "true",
308
- // text-body, never text-faint. Same rung as the description above and
309
- // for the same measured reason: the muted tier is 4.06:1 on this
310
- // scrim, under AA, and this line is the one thing on the panel a
311
- // reader most needs to be able to read.
312
- className: "m-0 truncate text-caption text-body", children: openDisabledReason })) : null, _jsx("div", { className: "flex items-center gap-2 pt-0.5", children: actionPair })] })) : null;
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 save toggle rather than on the row
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("relative flex-row items-center gap-3 p-(--card-spacing)", sized.cardSpacing, className), ...props, children: [previewRegion(
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, and it carries a full hairline rather
352
- // than the media card's single bottom rule.
353
- cn("overflow-hidden rounded-lg border border-hairline", ROW_THUMBNAIL), "sm", null), _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",
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
- // gap-0 py-0: `Card` pads itself for a header/content/footer stack, and
363
- // this card's preview is full bleed to the top edge. The padding moves
364
- // inside, onto the body, so the preview can touch the corners.
365
- // No hover lift, shadow, scale or colour change, even when the whole card
366
- // is a link. That is the console's founder card spec (2026-08-16) carried
367
- // across rather than re-decided here, and it matches this system's own
368
- // canon: containment is a hairline, not elevation. The reveal panel is
369
- // this rule's one exception, and only on the media variant: see the note
370
- // at the top of this file.
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 the
374
- // row even when the grid was told `items-start`.
375
- className: cn("gap-0 py-0", sized.cardSpacing, href && !revealed && "h-full", className), ...props, children: [previewRegion(
376
- // rounded-t-xl is the same --cg-radius-xl the card rounds to, and
377
- // overflow-hidden is what keeps the reveal panel inside it. The card
378
- // already clips; stating it here means the panel can never paint a
379
- // corner the card does not have.
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":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAkTvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAU,CAAA;AAIzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoE;IAC/F,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,mBAAmB;IAChC,GAAG,EAAE,WAAW;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,KAAK;CACX,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAU,CAAA;AAI5E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,GAaZ;IACF,OAAO,EAAE;QACP,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,cAAc;KAC5B;IACD,OAAO,EAAE;QACP,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,cAAc;KAC5B;IACD,GAAG,EAAE;QACH,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,EAAE;KAChB;CACF,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,aAAa,GAAG,MAAM,CAAA;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,MAAM,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,CAAA;QAC3B,yEAAyE;QACzE,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,EACvB,IAAI,EACJ,IAAI,GAAG,IAAI,EACX,SAAS,EACT,GAAG,KAAK,EAIT;IACC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAEnC,OAAO,CACL,6BACY,kBAAkB,eACjB,IAAI,EACf,SAAS,EAAE,EAAE,CACX,wFAAwF,EACxF,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EACnC,SAAS,CACV,EACD,KAAK,EAAE;YACL,uEAAuE;YACvE,wEAAwE;YACxE,2DAA2D;YAC3D,oEAAoE;YACpE,uEAAuE;YACvE,cAAc;YACd,MAAM,EAAE,8DAA8D;SACvE,KACG,KAAK,aAKT,KAAC,IAAI,IAAC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAI,EAK1D,eAAM,SAAS,EAAC,SAAS,YAAE,iBAAiB,CAAC,IAAI,CAAC,GAAQ,IACrD,CACR,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,IAAI,EACJ,WAAW,EACX,IAAI,GAAG,SAAS,EAChB,UAAU,GAAG,CAAC,EACd,gBAAgB,GAAG,CAAC,EACpB,MAAM,EACN,aAAa,EACb,KAAK,EACL,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAmHT;IACC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAE9B,8EAA8E;IAC9E,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,EAAE;IACF,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,CAAA;IAE1D,yEAAyE;IACzE,8EAA8E;IAC9E,iEAAiE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9B,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,sCAAsC;IACtC,MAAM,eAAe,GAAG,aAAa,IAAI,YAAY,CAAA;IAErD,4EAA4E;IAC5E,+EAA+E;IAC/E,wEAAwE;IACxE,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,UAAU,GAAG,KAAK,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAE1E,8EAA8E;IAC9E,wDAAwD;IACxD,MAAM,gBAAgB,GACpB,IAAI,KAAK,SAAS,IAAI,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAA;IAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,MAAM,UAAU,GAAG,CACjB,8BACG,QAAQ,CAAC,CAAC,CAAC,CACV,aACE,IAAI,EAAE,IAAI,eACA,kBAAkB,EAC5B,SAAS,EAAC,gOAAgO,aAE1O,KAAC,YAAY,IAAC,SAAS,EAAC,UAAU,GAAG,YAEnC,CACL,CAAC,CAAC,CAAC,CACF,0BAUY,kBAAkB,mBACd,MAAM,EACpB,IAAI,EAAC,MAAM,mBACG,MAAM;gBACpB,mEAAmE;gBACnE,oEAAoE;gBACpE,sEAAsE;gBACtE,sEAAsE;gBACtE,+CAA+C;gBAC/C,EAAE;gBACF,kEAAkE;gBAClE,qEAAqE;gBACrE,wCAAwC;gBACxC,SAAS,EAAC,oJAAoJ,aAE9J,KAAC,YAAY,IAAC,SAAS,EAAC,UAAU,GAAG,UAOpC,kBAAkB,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,SAAS,YAAE,kBAAkB,GAAQ,CAAC,CAAC,CAAC,IAAI,IAChF,CACL,EACA,eAAe,CAAC,CAAC,CAAC,CACjB,aACE,IAAI,EAAE,eAAe,eACX,uBAAuB,oBAIjB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAC7C,SAAS,EAAE,EAAE,CACX,gLAAgL,EAChL,QAAQ;oBACN,CAAC,CAAC,kEAAkE;wBAClE,sBAAsB;wBACtB,+GAA+G;oBACjH,CAAC,CAAC,6DAA6D;wBAC7D,8DAA8D;wBAC9D,iDAAiD;wBACjD,iDAAiD,CACtD,aAKD,KAAC,mBAAmB,IAAC,SAAS,EAAC,UAAU,GAAG,iBAE1C,CACL,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAA;IAED,MAAM,IAAI,GACR,QAAQ;QACR,CACE,8BACE,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,gBAAgB,aAC7B,gBACE,GAAG,EAAC,MAAM,eACA,mBAAmB,EAC7B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,KAAK,CAAC,KAAK,EACX,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAC/C,aAMA,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACf,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,uBAAuB,GAAG,CAC5E,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,IACD,EACN,IAAI,CAAC,CAAC,CAAC,CACN,eACE,GAAG,EAAC,MAAM,eACA,kBAAkB,EAC5B,KAAK,EAAE,IAAI,EACX,SAAS,EAAC,yDAAyD,YAElE,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,UAAU,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,EAKxD,aAAa,CAAC,CAAC,CAAC,CACf,2BACY,qBAAqB;4BAC/B,oEAAoE;4BACpE,iEAAiE;4BACjE,6DAA6D;4BAC7D,SAAS,EAAC,wCAAwC,YAEjD,aAAa,GACV,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EAEL,WAAW,CAAC,CAAC,CAAC,CACb,YACE,GAAG,EAAC,MAAM,eACA,yBAAyB,EACnC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,YAElE,WAAW,GACV,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,IAAI,EAKL,6BAAiB,MAAM,EAAC,SAAS,EAAC,MAAM,GAAG,EAE1C,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrC,2BACY,mBAAmB,EAC7B,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,KAAK,CAAC,KAAK,CACZ,YAEA,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACxB,gBAAuB,SAAS,EAAC,kCAAkC,aAChE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACX,8BAAkB,MAAM,EAAC,SAAS,EAAC,4BAA4B,YAC5D,IAAI,CAAC,IAAI,GACL,CACR,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,KAAK,EAKX,eAAM,SAAS,EAAC,SAAS,YAAE,IAAI,CAAC,KAAK,GAAQ,KAXpC,IAAI,CAAC,KAAK,CAYd,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,MAAM,IACN,CACJ,CAAA;IAEH;;;;;;;;;OASG;IACH,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,SAAsB,EAAE,KAAsB,EAAE,EAAE,CACtF,IAAI,CAAC,CAAC,CAAC,CACL,4BAAe,qBAAqB,EAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,aAC5E,KAAC,cAAc,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAI,EAC1C,UAAU,CAAC,CAAC,CAAC,CACZ,2BACY,qBAAqB,iBACnB,MAAM,EAClB,SAAS,EAAC,qCAAqC;gBAC/C,mEAAmE;gBACnE,kEAAkE;gBAClE,qEAAqE;gBACrE,iEAAiE;gBACjE,mEAAmE;gBACnE,gBAAgB;gBAChB,KAAK,EAAE,EAAE,eAAe,EAAE,QAAQ,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAChE,CACH,CAAC,CAAC,CAAC,IAAI,EAEP,KAAK,EAQL,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CACvD,GACD,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;IAEV;;;;;;;OAOG;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAC7B,4BACY,oBAAoB,qBAKd,KAAK,EACrB,SAAS,EAAE,EAAE,CACX,qEAAqE;QACrE,yDAAyD;QACzD,uDAAuD;QACvD,4DAA4D;QAC5D,yDAAyD;QACzD,4BAA4B;QAC5B,KAAK,CAAC,MAAM;QACZ,8DAA8D;QAC9D,8DAA8D;QAC9D,kDAAkD;QAClD,qEAAqE,EACrE,kEAAkE;QAClE,8DAA8D;QAC9D,uDAAuD;QACvD,+BAA+B,CAChC,aAED,4BACY,0BAA0B,EACpC,GAAG,EAAC,MAAM,EACV,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,WAAW,CAAC,YAEvD,KAAK,GACD,EAEN,WAAW,CAAC,CAAC,CAAC,CACb,yBACY,gCAAgC,EAC1C,GAAG,EAAC,MAAM;gBACV,6DAA6D;gBAC7D,4DAA4D;gBAC5D,8DAA8D;gBAC9D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,SAAS,EAAC,qCAAqC,YAE9C,WAAW,GACV,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CACnB,eAAK,SAAS,EAAC,iDAAiD,aAC7D,OAAO,CAAC,CAAC,CAAC,CACT,6BACY,4BAA4B,EACtC,SAAS,EAAC,0DAA0D,aAEnE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAChB,8BACc,MAAM,EAClB,SAAS,EAAC,0EAA0E,YAEnF,OAAO,CAAC,MAAM,GACV,CACR,CAAC,CAAC,CAAC,IAAI,EACR,eAAM,SAAS,EAAC,UAAU,YAAE,OAAO,CAAC,IAAI,GAAQ,IAC3C,CACR,CAAC,CAAC,CAAC,CACF,gBAAQ,CACT,EACA,MAAM,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,GAAQ,CAAC,CAAC,CAAC,IAAI,IACvD,CACP,CAAC,CAAC,CAAC,IAAI,EAYP,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC,CACjC,yBACY,2BAA2B,EACrC,GAAG,EAAC,MAAM,iBACE,MAAM;gBAClB,sEAAsE;gBACtE,iEAAiE;gBACjE,iEAAiE;gBACjE,wCAAwC;gBACxC,SAAS,EAAC,qCAAqC,YAE9C,kBAAkB,GACjB,CACL,CAAC,CAAC,CAAC,IAAI,EAER,cAAK,SAAS,EAAC,gCAAgC,YAAE,UAAU,GAAO,IAC9D,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;IAER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,CACL,MAAC,IAAI,iBACO,aAAa,sBACN,KAAK,EACtB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,KAAK,CAAC,WAAW,EACjB,SAAS,CACV,KACG,KAAK,aAER,aAAa;gBACZ,iEAAiE;gBACjE,qEAAqE;gBACrE,4CAA4C;gBAC5C,EAAE,CAAC,mDAAmD,EAAE,aAAa,CAAC,EACtE,IAAI,EACJ,IAAI,CACL,EAwBD,cAAK,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,KAAK,CAAC,IAAI,CAAC,YAC/D,QAAQ,IAAI,CACX,8BACE,gBACE,GAAG,EAAC,MAAM,eACA,mBAAmB,EAC7B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,KAAK,CAAC,KAAK,CAAC,aAIhE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACf,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,uBAAuB,GAAG,CAC5E,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,IACD,EAEN,IAAI,CAAC,CAAC,CAAC,CACN,eACE,GAAG,EAAC,MAAM,eACA,kBAAkB,EAC5B,KAAK,EAAE,IAAI,EACX,SAAS,EAAC,kDAAkD,YAE3D,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,EAEP,WAAW,CAAC,CAAC,CAAC,CACb,YACE,GAAG,EAAC,MAAM,eACA,yBAAyB,EACnC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,KAAK,CAAC,WAAW,CAAC,YAEzD,WAAW,GACV,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CACjB,eAAK,SAAS,EAAC,wDAAwD,aACpE,OAAO,CAAC,CAAC,CAAC,CACT,6BACY,qBAAqB,EAC/B,SAAS,EAAC,mCAAmC,aAE5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAChB,8BACc,MAAM,EAClB,SAAS,EAAC,0EAA0E,YAEnF,OAAO,CAAC,MAAM,GACV,CACR,CAAC,CAAC,CAAC,IAAI,EACR,eAAM,SAAS,EAAC,UAAU,YAAE,OAAO,CAAC,IAAI,GAAQ,IAC3C,CACR,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,IACD,CACP,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,GACG,EAEN,eAAK,SAAS,EAAC,kCAAkC,aAC9C,MAAM,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC1D,aAAa,CAAC,CAAC,CAAC,CACf,2BACY,qBAAqB,EAC/B,SAAS,EAAC,gDAAgD,YAEzD,aAAa,GACV,CACP,CAAC,CAAC,CAAC,IAAI,EAQR,2BACY,yBAAyB,EACnC,SAAS,EAAE,EAAE,CACX,kCAAkC;4BAClC,sDAAsD;4BACtD,+DAA+D;4BAC/D,4BAA4B;4BAC5B,qEAAqE,EACrE,kEAAkE;4BAClE,oDAAoD;4BACpD,+BAA+B,CAChC,YAEA,UAAU,GACP,IACF,IACD,CACR,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,CACX,MAAC,IAAI,iBACO,aAAa,sBAOL,IAAI;QACtB,wEAAwE;QACxE,uEAAuE;QACvE,+DAA+D;QAC/D,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,uEAAuE;QACvE,yEAAyE;QACzE,2BAA2B;QAC3B,wEAAwE;QACxE,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,SAAS,EAAE,EAAE,CACX,YAAY,EACZ,KAAK,CAAC,WAAW,EACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAC7B,SAAS,CACV,KACG,KAAK,aAER,aAAa;YACZ,kEAAkE;YAClE,qEAAqE;YACrE,mEAAmE;YACnE,iCAAiC;YACjC,uDAAuD,EACvD,IAAI,EACJ,WAAW,CACZ,EAED,cAAK,SAAS,EAAE,EAAE,CAAC,iDAAiD,EAAE,KAAK,CAAC,IAAI,CAAC,YAC9E,IAAI,GACD,IACD,CACR,CAAA;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,4BAA4B;IAC5B,IAAI,CAAC,IAAI,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAA;IAElC,OAAO,CACL,YACE,IAAI,EAAE,IAAI,gBACE,SAAS,IAAI,KAAK;QAC9B,wEAAwE;QACxE,yEAAyE;QACzE,gEAAgE;QAChE,SAAS,EAAC,6GAA6G,YAEtH,IAAI,GACH,CACL,CAAA;AACH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"entity-card.js","sourceRoot":"","sources":["../../src/blocks/entity-card.tsx"],"names":[],"mappings":"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"}