@cloudgrid-io/ui 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/blocks/compare-table.d.ts.map +1 -1
  2. package/dist/blocks/compare-table.js +10 -8
  3. package/dist/blocks/compare-table.js.map +1 -1
  4. package/dist/blocks/drop-zone.js +2 -2
  5. package/dist/blocks/drop-zone.js.map +1 -1
  6. package/dist/blocks/entity-card.d.ts +190 -13
  7. package/dist/blocks/entity-card.d.ts.map +1 -1
  8. package/dist/blocks/entity-card.js +223 -52
  9. package/dist/blocks/entity-card.js.map +1 -1
  10. package/dist/blocks/eyebrow.d.ts +43 -0
  11. package/dist/blocks/eyebrow.d.ts.map +1 -0
  12. package/dist/blocks/eyebrow.js +53 -0
  13. package/dist/blocks/eyebrow.js.map +1 -0
  14. package/dist/blocks/feature-cells.d.ts +12 -7
  15. package/dist/blocks/feature-cells.d.ts.map +1 -1
  16. package/dist/blocks/feature-cells.js +11 -11
  17. package/dist/blocks/feature-cells.js.map +1 -1
  18. package/dist/blocks/icons.d.ts +68 -10
  19. package/dist/blocks/icons.d.ts.map +1 -1
  20. package/dist/blocks/icons.js +68 -10
  21. package/dist/blocks/icons.js.map +1 -1
  22. package/dist/blocks/onboarding-question.js +2 -2
  23. package/dist/blocks/onboarding-question.js.map +1 -1
  24. package/dist/blocks/page-heading.d.ts +5 -0
  25. package/dist/blocks/page-heading.d.ts.map +1 -1
  26. package/dist/blocks/page-heading.js +7 -1
  27. package/dist/blocks/page-heading.js.map +1 -1
  28. package/dist/blocks/phosphor-marks.d.ts +99 -22
  29. package/dist/blocks/phosphor-marks.d.ts.map +1 -1
  30. package/dist/blocks/phosphor-marks.js +155 -25
  31. package/dist/blocks/phosphor-marks.js.map +1 -1
  32. package/dist/blocks/pricing-tier-cards.d.ts +6 -3
  33. package/dist/blocks/pricing-tier-cards.d.ts.map +1 -1
  34. package/dist/blocks/pricing-tier-cards.js +2 -2
  35. package/dist/blocks/pricing-tier-cards.js.map +1 -1
  36. package/dist/blocks/token-specimen.d.ts +59 -0
  37. package/dist/blocks/token-specimen.d.ts.map +1 -0
  38. package/dist/blocks/token-specimen.js +61 -0
  39. package/dist/blocks/token-specimen.js.map +1 -0
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +2 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/ui/accordion.d.ts.map +1 -1
  45. package/dist/ui/accordion.js +2 -2
  46. package/dist/ui/accordion.js.map +1 -1
  47. package/dist/ui/badge.d.ts +1 -1
  48. package/dist/ui/button.d.ts +1 -1
  49. package/dist/ui/checkbox.d.ts.map +1 -1
  50. package/dist/ui/checkbox.js +2 -2
  51. package/dist/ui/checkbox.js.map +1 -1
  52. package/dist/ui/code-block.js +1 -1
  53. package/dist/ui/code-block.js.map +1 -1
  54. package/dist/ui/combobox.js +3 -3
  55. package/dist/ui/combobox.js.map +1 -1
  56. package/dist/ui/dialog.d.ts.map +1 -1
  57. package/dist/ui/dialog.js +2 -2
  58. package/dist/ui/dialog.js.map +1 -1
  59. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  60. package/dist/ui/dropdown-menu.js +1 -1
  61. package/dist/ui/dropdown-menu.js.map +1 -1
  62. package/dist/ui/number-field.js +1 -1
  63. package/dist/ui/number-field.js.map +1 -1
  64. package/dist/ui/select.d.ts.map +1 -1
  65. package/dist/ui/select.js +1 -1
  66. package/dist/ui/select.js.map +1 -1
  67. package/dist/ui/sonner.js +5 -5
  68. package/dist/ui/sonner.js.map +1 -1
  69. package/package.json +1 -2
@@ -1 +1 @@
1
- {"version":3,"file":"compare-table.d.ts","sourceRoot":"","sources":["../../src/blocks/compare-table.tsx"],"names":[],"mappings":"AAqCA,KAAK,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAe1C,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAA;CACnB,+BA+DA;AAED,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,YAAY,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"compare-table.d.ts","sourceRoot":"","sources":["../../src/blocks/compare-table.tsx"],"names":[],"mappings":"AAuCA,KAAK,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAY1C,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAA;CACnB,+BA+DA;AAED,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,YAAY,EAAE,UAAU,EAAE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CircleCheck, CircleX } from "lucide-react";
2
+ import { IncludedIcon, NotIncludedIcon } from "./icons.js";
3
3
  import { Logo } from "./logo.js";
4
4
  import { cn } from "../lib/cloudgrid-cn.js";
5
5
  /**
@@ -25,17 +25,19 @@ import { cn } from "../lib/cloudgrid-cn.js";
25
25
  * represents a rival is the caller's call, not this component's. Pass a
26
26
  * `rivalLogo` if you have one. Without it the name alone reads fine.
27
27
  *
28
- * ## Marks are lucide, and they carry text
28
+ * ## Marks are the library's, and they carry text
29
29
  *
30
- * Phosphor inlined strings become `CircleCheck` / `CircleX`, as elsewhere. The
31
- * icons are `aria-hidden` and each cell carries visually-hidden "Included" or
32
- * "Not included", so a screen reader hears the claim rather than nothing, and so
33
- * does anything reading the markup.
30
+ * `IncludedIcon` / `NotIncludedIcon` from `@/registry/ui/icons` Phosphor
31
+ * `check-circle` and `x-circle`, which is what v0's inlined SVG strings were
32
+ * before they were transcribed (#167). The marks set `aria-hidden` themselves
33
+ * and each cell carries visually-hidden "Included" or "Not included", so a
34
+ * screen reader hears the claim rather than nothing, and so does anything
35
+ * reading the markup.
34
36
  */
35
37
  const VALID = ["both", "us", "them", "neither"];
36
38
  function Mark({ yes }) {
37
- const Icon = yes ? CircleCheck : CircleX;
38
- return (_jsxs(_Fragment, { children: [_jsx(Icon, { "aria-hidden": "true", className: cn("inline-block size-[22px]", yes ? "text-brand" : "text-faint") }), _jsx("span", { className: "sr-only", children: yes ? "Included" : "Not included" })] }));
39
+ const Icon = yes ? IncludedIcon : NotIncludedIcon;
40
+ return (_jsxs(_Fragment, { children: [_jsx(Icon, { className: cn("inline-block size-[22px]", yes ? "text-brand" : "text-faint") }), _jsx("span", { className: "sr-only", children: yes ? "Included" : "Not included" })] }));
39
41
  }
40
42
  function CompareTable({ rival, rivalLogo, rows, className, ...props }) {
41
43
  const parsed = rows.map((pair) => {
@@ -1 +1 @@
1
- {"version":3,"file":"compare-table.js","sourceRoot":"","sources":["../../src/blocks/compare-table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-table.js","sourceRoot":"","sources":["../../src/blocks/compare-table.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
- import { ArrowDownIcon, TriangleAlertIcon } from "lucide-react";
4
+ import { ArrowDownIcon, WarningIcon } from "./icons.js";
5
5
  import { cn } from "../lib/cloudgrid-cn.js";
6
6
  /**
7
7
  * `accept` on the input governs the PICKER only. A drag and drop hands over
@@ -109,7 +109,7 @@ function DropZone({ onDrop, onReject, accept, multiple = false, disabled = false
109
109
  // utility for `--cg-text-accent`. `text-ring` resolves to the same value
110
110
  // through the bridge and was used here first, but one spelling per
111
111
  // concept is worth more than saving eight characters.
112
- bad ? "text-destructive" : "text-(--cg-text-accent)"), children: bad ? _jsx(TriangleAlertIcon, { className: "size-5" }) : _jsx(ArrowDownIcon, { className: "size-5" }) }), _jsx("span", { id: `${base}-prompt`, className: "text-body-sm text-muted-foreground", children: prompt })] }), _jsx("span", { id: `${base}-status`, role: bad ? "alert" : undefined, "aria-live": "polite", className: cn("text-caption", bad ? "text-destructive" : "text-faint"), children: taken.length === 1
112
+ bad ? "text-destructive" : "text-(--cg-text-accent)"), children: bad ? _jsx(WarningIcon, { className: "size-5" }) : _jsx(ArrowDownIcon, { className: "size-5" }) }), _jsx("span", { id: `${base}-prompt`, className: "text-body-sm text-muted-foreground", children: prompt })] }), _jsx("span", { id: `${base}-status`, role: bad ? "alert" : undefined, "aria-live": "polite", className: cn("text-caption", bad ? "text-destructive" : "text-faint"), children: taken.length === 1
113
113
  ? taken[0].name
114
114
  : taken.length > 1
115
115
  ? `${taken.length} ready`
@@ -1 +1 @@
1
- {"version":3,"file":"drop-zone.js","sourceRoot":"","sources":["../../src/blocks/drop-zone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drop-zone.js","sourceRoot":"","sources":["../../src/blocks/drop-zone.tsx"],"names":[],"mappings":"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"}
@@ -14,6 +14,71 @@
14
14
  * does not route. All of that stays where it belongs. A design system that
15
15
  * learns the product's rules stops being a design system.
16
16
  *
17
+ * ## Three sizes, one card underneath them
18
+ *
19
+ * `size` is `default`, `compact` or `row`. Founder direction 2026-09-08 (#182):
20
+ * every entity card in the console behaves the same way, and the only things
21
+ * that vary are its SIZE and, later, its MODE. The console census of the same
22
+ * day found eight renderers, three hand-built tiles and three track widths
23
+ * across Home, Discover, Spaces, Saved and the inspired-by rails. This axis is
24
+ * what lets all of them route through one block.
25
+ *
26
+ * Every size carries the same kind badge, the same state node and the same two
27
+ * actions. What changes is the type scale, the padding, how much of the
28
+ * description survives the clamp, and — on `row` — the direction the card runs
29
+ * in.
30
+ *
31
+ * **One recommended grid track per size**, because a card sized for a track it
32
+ * is not in is the failure this axis exists to prevent:
33
+ *
34
+ * default the 1200/630 media card this file already was. Track:
35
+ * `repeat(auto-fill, minmax(320px, 1fr))`, which is the 360px the
36
+ * console's Discover grid renders today.
37
+ * compact the same card at the console's 260 and 280 tracks. Track:
38
+ * `repeat(auto-fill, minmax(240px, 1fr))`.
39
+ * row not a track at all. One column, at least 640px of it. That floor
40
+ * is measured rather than picked: the two actions RESERVE their
41
+ * width at rest so that nothing reflows when they appear, and with
42
+ * the state chip beside them the end of a row costs about 245px
43
+ * whether or not anything is hovering it. Add the 128px thumbnail
44
+ * and the padding and a row cannot go under about 420px at all;
45
+ * between 420 and 640 the description is truncated to a few words.
46
+ * Under 640, `compact` is the right form — not a narrower row.
47
+ *
48
+ * **Rest and hover are identical on `default` and `compact`.** The reveal panel,
49
+ * its scrim, the ink surface it declares and the tap-target rule below all carry
50
+ * across unchanged. Compact reduces the type and the padding and nothing else.
51
+ *
52
+ * Two things compact does drop, and both are about height rather than taste. The
53
+ * description is clamped to one line whatever `descriptionLines` says, and the
54
+ * stats collapse to the first: at 260px a second stat wraps, which takes that
55
+ * card a line taller than the ones beside it and breaks the row it sits in.
56
+ *
57
+ * **`row` is the one that differs, and not for space.** A reveal exists to show
58
+ * what a thumbnail is covering — the title, the line, the creator, the state. A
59
+ * row shows all of that already, so there is nothing left to reveal, and a panel
60
+ * sliding over a 128px thumbnail would hide the smallest part of the card to
61
+ * repeat what the widest part already says. What appears on hover and on
62
+ * focus-within is the two actions, and only those.
63
+ *
64
+ * `stats` and `footer` are not rendered on a row. They are the stacked sizes'
65
+ * furniture: a stat rule under a one-line description makes the row two and a
66
+ * half lines tall, and a list of those stops being scannable. `meta` is
67
+ * rendered, on the creator's line, because the console's residence line is one
68
+ * line and belongs next to who made the thing.
69
+ *
70
+ * ## The open mode is NOT here
71
+ *
72
+ * #182 names a second axis as well: `open`, the card expanded in place with the
73
+ * full information — description unclamped, the residence grid, the owner, the
74
+ * tags — without navigating anywhere. It is deliberately not built. Its content
75
+ * comes from Figma frames that have not been shared yet, and a mode invented
76
+ * ahead of them is a second thing to unpick rather than a head start.
77
+ *
78
+ * The seam is `size`'s own: a `mode` prop beside it, resolved in the same place,
79
+ * with `SIZE_STYLE` below gaining a column rather than this component gaining a
80
+ * branch. Nothing here forecloses it, and nothing here pretends it exists.
81
+ *
17
82
  * ## Two tiers of preview, and neither can fail dark
18
83
  *
19
84
  * `seed` turns the preview region on. With `seed` alone the card shows the
@@ -66,10 +131,23 @@
66
131
  * ## The hover reveal, and the rule it supersedes
67
132
  *
68
133
  * `reveal` puts a panel over the preview carrying the title, one line of
69
- * description, the creator, the status and two real links: Open and Settings.
134
+ * description, the creator, the status and two real links: Open and Dashboard.
70
135
  * It shows on hover and on `:focus-within`, and it respects
71
136
  * `prefers-reduced-motion` by arriving without the fade rather than not at all.
72
137
  *
138
+ * **The second action is Dashboard, and it is not a gear.** Founder direction
139
+ * 2026-09-08 (#182). The door it opens is the entity's page in the console,
140
+ * which shows analytics and what runs under the hood — so what it promises is
141
+ * "look inside", and a gear promises "change how this is configured". Those are
142
+ * different pages and a reader who takes one for the other has been misled by
143
+ * the icon rather than by the label. The mark is `EntityDashboardIcon`
144
+ * (Phosphor `gauge`); `SettingsIcon` is still exported for the surfaces that
145
+ * really are settings.
146
+ *
147
+ * The prop is `dashboardHref`. `settingsHref` is kept as a deprecated alias for
148
+ * this minor and maps straight to it, so no caller breaks on the rename — see
149
+ * the note on the prop.
150
+ *
73
151
  * **This supersedes the "cards are visually static" rule of the console's
74
152
  * 2026-08-16 card spec, for the media variant only.** Founder direction
75
153
  * 2026-09-08 (#165). The rest of that rule stands and is unchanged: no lift, no
@@ -84,22 +162,22 @@
84
162
  * browsers repair it by closing the outer one — which silently unlinks the card
85
163
  * and leaves the actions where the parser decides to put them. The panel is the
86
164
  * link surface instead: Open stretches across the whole panel with an
87
- * `::after`, so a click anywhere on the thumbnail opens the entity, and Settings
88
- * sits above it. Every existing caller is unaffected — `reveal` defaults off and
89
- * the wrapper behaves exactly as it did.
165
+ * `::after`, so a click anywhere on the thumbnail opens the entity, and
166
+ * Dashboard sits above it. Every existing caller is unaffected — `reveal`
167
+ * defaults off and the wrapper behaves exactly as it did.
90
168
  *
91
- * **The panel stays clickable while it is invisible — except Settings.**
169
+ * **The panel stays clickable while it is invisible — except Dashboard.**
92
170
  * `opacity-0` is a paint state, not a pointer state, so a touch user with no
93
171
  * hover at all still gets Open by tapping the thumbnail. Gating Open's pointer
94
172
  * events on hover would make the card do nothing on a phone.
95
173
  *
96
- * Settings is the one exception, and it has to be. It is `relative`, so it
174
+ * Dashboard is the one exception, and it has to be. It is `relative`, so it
97
175
  * stacks above Open's stretched hit area; live at rest, that made a pill-sized
98
- * region of an invisible panel go to Settings on a tap — different from every
176
+ * region of an invisible panel go to that link on a tap — different from every
99
177
  * pixel around it, and impossible to see (#171). So it carries
100
178
  * `pointer-events-none` until the panel is revealed by hover or focus-within,
101
179
  * which is the reasoning the kind mark beside it already carried. Open's
102
- * overlay is untouched, so a tap anywhere on the thumbnail — Settings' pill
180
+ * overlay is untouched, so a tap anywhere on the thumbnail — the second pill
103
181
  * included — opens the entity, and the touch fallback is exactly as it was.
104
182
  *
105
183
  * **It is an ink surface, declared.** The panel carries
@@ -122,6 +200,51 @@
122
200
  * is product knowledge. The console maps its wire status through its own table
123
201
  * and drops the result in here.
124
202
  *
203
+ * ## `headerActions` is the OTHER slot, and the difference is where it renders
204
+ *
205
+ * `status` is one node rendered in TWO places: the header row and the reveal
206
+ * panel. That is right for a state chip — what an entity currently is stays true
207
+ * while you hover it — and wrong for everything else, because a slot rendered
208
+ * twice can only carry something that belongs in both.
209
+ *
210
+ * The console found the edge (#176, cloudgrid-console#654). Its cards carry a
211
+ * save toggle and an overflow menu at the header's right, which is exactly where
212
+ * `status` sits. Putting them in that slot duplicates two interactive controls
213
+ * into an invisible hover panel: two menu triggers with the same accessible name
214
+ * on every card, two save buttons, and a kebab whose dropdown opens inside a
215
+ * panel that disappears when the pointer leaves. So the console moved them to
216
+ * its footer instead — nothing lost, nothing duplicated, and the controls a row
217
+ * below where the design puts them for a library reason rather than a design
218
+ * one.
219
+ *
220
+ * `headerActions` is that slot. It renders **once**, in the header row, to the
221
+ * right of `status`, and never in the reveal panel. Nothing else about the card
222
+ * changes and no existing caller is affected.
223
+ *
224
+ * Three things about it:
225
+ *
226
+ * **The panel deliberately has no equivalent.** The reveal already carries the
227
+ * two actions it can carry — Open, and Dashboard — and its own hit model is one
228
+ * stretched anchor with a single exception lifted above it. A third control in
229
+ * there would need the same `pointer-events` gating Dashboard carries, for the
230
+ * same reason (#171), and would be invisible on a phone. The panel's actions are
231
+ * a fixed pair by design; the header's are the caller's.
232
+ *
233
+ * **Interactive controls inside a whole-card link are the caller's problem, and
234
+ * they are a real one.** With `href` set and `reveal` off, this card is wrapped
235
+ * in an `<a>`. A `<button>` inside an anchor is invalid HTML, and even where a
236
+ * browser tolerates it a click on the button also activates the link. This card
237
+ * cannot fix that for you: stopping the event needs a handler, a handler needs
238
+ * `"use client"`, and that would put a client boundary on a card that is
239
+ * otherwise entirely static — on every listing that renders it, for a slot most
240
+ * callers never pass. So a caller passing controls here either composes its own
241
+ * wrapper (which is what the console does, for `next/link`) or drops the
242
+ * whole-card `href` and gives the title its own link.
243
+ *
244
+ * **It does not render when `children` replaces the body.** Same as `status`:
245
+ * both live in the default body, and a caller supplying its own body owns its
246
+ * own header row.
247
+ *
125
248
  * ## Surfaces
126
249
  *
127
250
  * The chrome flips: ground, hairlines, title, body text and the stat rule all
@@ -165,6 +288,18 @@ export declare const ENTITY_KIND_ICON: Record<EntityKind, React.ComponentType<{
165
288
  * Plain nouns, no adjective: this names a thing, it does not sell it.
166
289
  */
167
290
  export declare const ENTITY_KIND_LABEL: Record<EntityKind, string>;
291
+ /**
292
+ * The sizes, in the order they get smaller. Read from the console census
293
+ * (2026-09-08) rather than invented: `default` is the 360px track, `compact`
294
+ * covers the 260 and 280 ones, `row` is the list surfaces, the rails and the
295
+ * sidebar.
296
+ *
297
+ * The array is the source and the type is derived from it, the same arrangement
298
+ * `ENTITY_KIND_ORDER` uses: a size added here is immediately missing from
299
+ * `SIZE_STYLE` and typecheck says so.
300
+ */
301
+ export declare const ENTITY_CARD_SIZE_ORDER: readonly ["default", "compact", "row"];
302
+ export type EntityCardSize = (typeof ENTITY_CARD_SIZE_ORDER)[number];
168
303
  /**
169
304
  * The kind badge on its own, exported because a listing header, a detail page or
170
305
  * a row may want the same mark without a card around it.
@@ -177,15 +312,41 @@ declare function EntityKindBadge({ kind, size, className, ...props }: Omit<React
177
312
  kind: EntityKind;
178
313
  size?: "sm" | "md";
179
314
  }): import("react").JSX.Element;
180
- declare function EntityCard({ title, slug, description, titleLines, descriptionLines, status, stats, seed, previewUrl, kind, reveal, settingsHref, creator, href, ariaLabel, meta, footer, className, children, ...props }: Omit<React.ComponentProps<"div">, "ref" | "title"> & {
315
+ declare function EntityCard({ title, slug, description, size, titleLines, descriptionLines, status, headerActions, stats, seed, previewUrl, kind, reveal, dashboardHref, settingsHref, creator, href, ariaLabel, meta, footer, className, children, ...props }: Omit<React.ComponentProps<"div">, "ref" | "title"> & {
181
316
  title: string;
182
317
  /** The entity's address, in the mono utility face. */
183
318
  slug?: string;
184
319
  description?: string;
320
+ /**
321
+ * How big, and which way up. `default` is the 1200/630 media card, `compact`
322
+ * the same card at the console's 260 and 280 tracks, `row` the horizontal
323
+ * list form. See the note at the top of this file for the grid track each one
324
+ * is meant for, and for what `row` deliberately does differently.
325
+ */
326
+ size?: EntityCardSize;
185
327
  titleLines?: 1 | 2;
328
+ /**
329
+ * Ignored on `compact` and on `row`, both of which always clamp to one line.
330
+ * At 260px a second line of description takes the card taller than the ones
331
+ * beside it, and a row has one line by definition.
332
+ */
186
333
  descriptionLines?: 1 | 2;
187
- /** Top right of the header row. Drop an `EntityStatus` in. */
334
+ /**
335
+ * Top right of the header row, and ALSO inside the reveal panel. One node,
336
+ * two places, so it can only carry something true in both: drop an
337
+ * `EntityStatus` in. Row controls go in `headerActions`.
338
+ */
188
339
  status?: React.ReactNode;
340
+ /**
341
+ * The header row's own controls — a save toggle, an overflow menu — to the
342
+ * right of `status`. Rendered **once**, in the header, never in the reveal
343
+ * panel (#176).
344
+ *
345
+ * Read the note above before passing an interactive control together with
346
+ * `href`: this card wraps itself in an anchor, and it cannot intercept the
347
+ * click for you without becoming a client component.
348
+ */
349
+ headerActions?: React.ReactNode;
189
350
  stats?: EntityCardStat[];
190
351
  /**
191
352
  * The entity's stable id. Its presence is what turns the preview region on,
@@ -213,7 +374,19 @@ declare function EntityCard({ title, slug, description, titleLines, descriptionL
213
374
  * and an anchor inside an anchor is invalid HTML. See the note above.
214
375
  */
215
376
  reveal?: boolean;
216
- /** The Settings action's target. Only read when `reveal` is on. */
377
+ /**
378
+ * The Dashboard action's target: the entity's page in the console, where the
379
+ * analytics and what runs under the hood live. Only read when `reveal` is on.
380
+ */
381
+ dashboardHref?: string;
382
+ /**
383
+ * @deprecated Renamed to `dashboardHref` in #182 — the action is Dashboard,
384
+ * not Settings, because that is what the page it opens actually is.
385
+ *
386
+ * Kept for this minor and mapped straight through, so no caller breaks on the
387
+ * rename. `dashboardHref` wins if both are given. It will be removed in the
388
+ * next major; the fix is one word at each call site.
389
+ */
217
390
  settingsHref?: string;
218
391
  /**
219
392
  * Who made it, shown on the reveal panel. `avatar` is a node so a consumer can
@@ -228,9 +401,13 @@ declare function EntityCard({ title, slug, description, titleLines, descriptionL
228
401
  href?: string;
229
402
  /** Accessible name for the whole-card link. Defaults to `title`. */
230
403
  ariaLabel?: string;
231
- /** Between the description and the stats. The console puts its residence line here. */
404
+ /**
405
+ * Between the description and the stats. The console puts its residence line
406
+ * here. On a `row` it sits on the creator's line instead, which is the only
407
+ * line a row has left.
408
+ */
232
409
  meta?: React.ReactNode;
233
- /** Below everything, under no rule of its own. */
410
+ /** Below everything, under no rule of its own. Not rendered on a `row`. */
234
411
  footer?: React.ReactNode;
235
412
  /** Replaces the whole body. The preview and the card chrome still render. */
236
413
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"entity-card.d.ts","sourceRoot":"","sources":["../../src/blocks/entity-card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-card.d.ts","sourceRoot":"","sources":["../../src/blocks/entity-card.tsx"],"names":[],"mappings":"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"}