@cloudgrid-io/ui 0.31.1 → 0.31.3

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 (49) hide show
  1. package/dist/blocks/agent-prompt.d.ts +22 -0
  2. package/dist/blocks/agent-prompt.d.ts.map +1 -1
  3. package/dist/blocks/agent-prompt.js +41 -7
  4. package/dist/blocks/agent-prompt.js.map +1 -1
  5. package/dist/blocks/cloudgrid-install.d.ts.map +1 -1
  6. package/dist/blocks/cloudgrid-install.js +6 -7
  7. package/dist/blocks/cloudgrid-install.js.map +1 -1
  8. package/dist/blocks/icons.d.ts +1 -1
  9. package/dist/blocks/icons.d.ts.map +1 -1
  10. package/dist/blocks/icons.js +1 -1
  11. package/dist/blocks/icons.js.map +1 -1
  12. package/dist/blocks/phosphor-marks.d.ts +2 -0
  13. package/dist/blocks/phosphor-marks.d.ts.map +1 -1
  14. package/dist/blocks/phosphor-marks.js +3 -0
  15. package/dist/blocks/phosphor-marks.js.map +1 -1
  16. package/dist/blocks/showcase-scroll.d.ts +103 -0
  17. package/dist/blocks/showcase-scroll.d.ts.map +1 -0
  18. package/dist/blocks/showcase-scroll.js +432 -0
  19. package/dist/blocks/showcase-scroll.js.map +1 -0
  20. package/dist/brand/showcase/all-the-way-down.webp +0 -0
  21. package/dist/brand/showcase/analytics-dashboard.webp +0 -0
  22. package/dist/brand/showcase/campaign-brief-builder.webp +0 -0
  23. package/dist/brand/showcase/chess-puzzles.webp +0 -0
  24. package/dist/brand/showcase/fox-tales.webp +0 -0
  25. package/dist/brand/showcase/invoices.webp +0 -0
  26. package/dist/brand/showcase/living-board-update.webp +0 -0
  27. package/dist/brand/showcase/moon-run.webp +0 -0
  28. package/dist/brand/showcase/onboarding-guide.webp +0 -0
  29. package/dist/brand/showcase/online-shop.webp +0 -0
  30. package/dist/brand/showcase/operating-review.webp +0 -0
  31. package/dist/brand/showcase/pricing-simulator.webp +0 -0
  32. package/dist/brand/showcase/rent-or-buy.webp +0 -0
  33. package/dist/brand/showcase/sales-call-coach.webp +0 -0
  34. package/dist/brand/showcase/space-today.webp +0 -0
  35. package/dist/brand/showcase/stocks-dashboard.webp +0 -0
  36. package/dist/brand/showcase/task-manager.webp +0 -0
  37. package/dist/brand/showcase/tour-poster.webp +0 -0
  38. package/dist/brand/showcase/your-crm.webp +0 -0
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/theme.css +5 -0
  44. package/dist/tokens/base.json +20 -0
  45. package/dist/tokens/surface-ink.json +21 -0
  46. package/dist/tokens/surface-panel.json +21 -0
  47. package/dist/tokens.css +33 -0
  48. package/dist/tokens.json +8 -2
  49. package/package.json +1 -1
@@ -0,0 +1,432 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Panel } from "../ui/panel.js";
5
+ import { ReactionsIcon, ViewsIcon } from "./icons.js";
6
+ import { cn } from "../lib/cloudgrid-cn.js";
7
+ /**
8
+ * The website's 19 creations: the /thegrid ticker's twelve plus the home page's seven
9
+ * (`cloudgrid-landing` `preview/full-site` @ 2fa378b, `Ticker.astro`).
10
+ *
11
+ * THE NUMBERS ARE ILLUSTRATIVE. They are the website's placeholder figures, kept
12
+ * as the site has them; none of them is real usage data.
13
+ */
14
+ const SHOWCASE_SCROLL_CARDS = [
15
+ { slug: "space-today", name: "Space Today", shape: "square", views: 2481, reactions: 37 },
16
+ { slug: "sales-call-coach", name: "Sales Call Coach", shape: "landscape", views: 248, reactions: 25 },
17
+ { slug: "all-the-way-down", name: "All the Way Down", shape: "landscape", views: 1109, reactions: 18 },
18
+ { slug: "pricing-simulator", name: "Pricing Simulator", shape: "landscape", views: 186, reactions: 17 },
19
+ { slug: "fox-tales", name: "Fox Tales", shape: "square", views: 864, reactions: 52 },
20
+ { slug: "moon-run", name: "Moon Run", shape: "landscape", views: 1420, reactions: 110 },
21
+ { slug: "chess-puzzles", name: "Chess Puzzles", shape: "square", views: 318, reactions: 9 },
22
+ { slug: "campaign-brief-builder", name: "Campaign Brief Builder", shape: "landscape", views: 324, reactions: 38 },
23
+ { slug: "tour-poster", name: "Tour Poster", shape: "portrait", views: 1742, reactions: 64 },
24
+ { slug: "onboarding-guide", name: "Onboarding Guide", shape: "landscape", views: 412, reactions: 40 },
25
+ { slug: "operating-review", name: "Operating Review", shape: "square", views: 126, reactions: 5 },
26
+ { slug: "living-board-update", name: "Living Board Update", shape: "landscape", views: 96, reactions: 11 },
27
+ { slug: "analytics-dashboard", name: "Analytics Dashboard", shape: "square", views: 1318, reactions: 41 },
28
+ { slug: "online-shop", name: "Online Shop", shape: "landscape", views: 2204, reactions: 73 },
29
+ { slug: "stocks-dashboard", name: "Stocks Dashboard", shape: "landscape", views: 689, reactions: 22 },
30
+ { slug: "invoices", name: "Invoices", shape: "square", views: 402, reactions: 14 },
31
+ { slug: "task-manager", name: "Task Manager", shape: "landscape", views: 957, reactions: 36 },
32
+ { slug: "your-crm", name: "Your CRM", shape: "landscape", views: 533, reactions: 19 },
33
+ { slug: "rent-or-buy", name: "Rent or Buy", shape: "landscape", views: 1476, reactions: 58 },
34
+ ];
35
+ /**
36
+ * The default cards dealt into columns BY HAND, as the mock deals them: light and
37
+ * dark cards alternate down each column, every column mixes the three shapes, and
38
+ * no card is in two columns. Used only with the default cards; an override is dealt
39
+ * round-robin.
40
+ */
41
+ const SHOWCASE_SCROLL_COLUMNS = {
42
+ 3: [
43
+ ["moon-run", "campaign-brief-builder", "analytics-dashboard", "rent-or-buy", "fox-tales", "living-board-update", "sales-call-coach"],
44
+ ["online-shop", "tour-poster", "pricing-simulator", "stocks-dashboard", "onboarding-guide", "operating-review"],
45
+ ["space-today", "invoices", "all-the-way-down", "task-manager", "chess-puzzles", "your-crm"],
46
+ ],
47
+ 2: [
48
+ ["moon-run", "campaign-brief-builder", "analytics-dashboard", "rent-or-buy", "space-today", "task-manager", "fox-tales", "living-board-update", "sales-call-coach", "your-crm"],
49
+ ["online-shop", "tour-poster", "pricing-simulator", "stocks-dashboard", "invoices", "all-the-way-down", "onboarding-guide", "chess-puzzles", "operating-review"],
50
+ ],
51
+ };
52
+ /** The founder's speed, px/s, for the outer columns (2026-10-06). */
53
+ const SHOWCASE_SCROLL_SPEED = 46;
54
+ /** The middle column runs at this share of the speed: the parallax. */
55
+ const MIDDLE_COLUMN_FACTOR = 0.8;
56
+ /** Where each column's first card opens, in 4:3 card heights above the padding line. */
57
+ const START_OFFSETS = [0, -0.5, -0.33];
58
+ /** The count-up, as on the website's ticker. */
59
+ const COUNT_MS = 780;
60
+ const MIN_COPIES = 3;
61
+ const MAX_COPIES = 12;
62
+ /**
63
+ * Everything a utility class cannot carry cleanly: keyframes, a 17-stop mask, a
64
+ * container query that swaps the deal, a hover chain across elements, and the
65
+ * reduced-motion overrides. Every value is a token or a geometry of the mock's.
66
+ *
67
+ * Emitted as a React 19 hoistable stylesheet (`href` + `precedence`), so React puts
68
+ * it in the head once however many panels render. It sits in `@layer components`,
69
+ * under a consumer's own utilities. It opens by declaring Tailwind v4's layer order:
70
+ * layer order is set by FIRST appearance, so if this sheet ever reached the page
71
+ * before the consumer's Tailwind CSS, `components` would otherwise rank below
72
+ * `base`, and preflight's `img { height: auto }` would undo the cover-fit pictures.
73
+ *
74
+ * The mask's stops are written as `color-mix(in srgb, black N%, transparent)`. A mask
75
+ * paints nothing; only each stop's ALPHA is read, so these are opacities on the
76
+ * smoothstep curve, not colours.
77
+ */
78
+ const STYLES = `
79
+ @layer theme, base, components, utilities;
80
+ @layer components {
81
+ [data-slot="showcase-scroll"] {
82
+ container: cg-showcase / inline-size;
83
+ position: relative;
84
+ overflow: hidden;
85
+ isolation: isolate;
86
+ /* The mock's lift and rise: between --cg-duration (180) and -slow (280). */
87
+ --cg-showcase-lift: 200ms;
88
+ }
89
+ [data-slot="showcase-scroll-frame"] {
90
+ position: absolute;
91
+ inset: 0;
92
+ }
93
+ [data-slot="showcase-scroll-layout"] {
94
+ position: absolute;
95
+ inset: 0;
96
+ display: grid;
97
+ grid-template-columns: repeat(var(--cg-showcase-columns), minmax(0, 1fr));
98
+ gap: var(--cg-space-4);
99
+ padding: 0 var(--cg-space-8);
100
+ --cg-showcase-fade-size: 15%;
101
+ --cg-showcase-fade: linear-gradient(to bottom,
102
+ transparent 0,
103
+ color-mix(in srgb, black 3%, transparent) calc(var(--cg-showcase-fade-size) * 0.125),
104
+ color-mix(in srgb, black 10%, transparent) calc(var(--cg-showcase-fade-size) * 0.25),
105
+ color-mix(in srgb, black 22%, transparent) calc(var(--cg-showcase-fade-size) * 0.375),
106
+ color-mix(in srgb, black 37%, transparent) calc(var(--cg-showcase-fade-size) * 0.5),
107
+ color-mix(in srgb, black 55%, transparent) calc(var(--cg-showcase-fade-size) * 0.625),
108
+ color-mix(in srgb, black 73%, transparent) calc(var(--cg-showcase-fade-size) * 0.75),
109
+ color-mix(in srgb, black 88%, transparent) calc(var(--cg-showcase-fade-size) * 0.875),
110
+ black var(--cg-showcase-fade-size),
111
+ black calc(100% - var(--cg-showcase-fade-size)),
112
+ color-mix(in srgb, black 88%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.875),
113
+ color-mix(in srgb, black 73%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.75),
114
+ color-mix(in srgb, black 55%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.625),
115
+ color-mix(in srgb, black 37%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.5),
116
+ color-mix(in srgb, black 22%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.375),
117
+ color-mix(in srgb, black 10%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.25),
118
+ color-mix(in srgb, black 3%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.125),
119
+ transparent 100%);
120
+ -webkit-mask-image: var(--cg-showcase-fade);
121
+ mask-image: var(--cg-showcase-fade);
122
+ }
123
+ [data-slot="showcase-scroll-layout"][data-columns="3"] { display: none; }
124
+ @container cg-showcase (min-width: 544px) {
125
+ [data-slot="showcase-scroll-layout"][data-columns="2"] { display: none; }
126
+ [data-slot="showcase-scroll-layout"][data-columns="3"] { display: grid; }
127
+ }
128
+ [data-slot="showcase-scroll-column"] {
129
+ container-type: inline-size;
130
+ position: relative;
131
+ min-width: 0;
132
+ }
133
+ [data-slot="showcase-scroll-offset"] {
134
+ transform: translate3d(0, calc(var(--cg-space-8) + var(--cg-showcase-start) * 75cqw), 0);
135
+ }
136
+ [data-slot="showcase-scroll-track"] {
137
+ will-change: transform;
138
+ animation-duration: var(--cg-showcase-duration, 30s);
139
+ animation-timing-function: linear;
140
+ animation-iteration-count: infinite;
141
+ }
142
+ [data-slot="showcase-scroll-column"][data-direction="up"] [data-slot="showcase-scroll-track"] {
143
+ animation-name: cg-showcase-up;
144
+ }
145
+ [data-slot="showcase-scroll-column"][data-direction="down"] [data-slot="showcase-scroll-track"] {
146
+ animation-name: cg-showcase-down;
147
+ }
148
+ [data-slot="showcase-scroll"]:not([data-running]) [data-slot="showcase-scroll-track"] {
149
+ animation-play-state: paused;
150
+ }
151
+ @media (hover: hover) {
152
+ [data-slot="showcase-scroll-column"]:hover [data-slot="showcase-scroll-track"] {
153
+ animation-play-state: paused;
154
+ }
155
+ }
156
+ [data-slot="showcase-scroll-copy"] {
157
+ display: flex;
158
+ flex-direction: column;
159
+ gap: var(--cg-space-4);
160
+ padding-bottom: var(--cg-space-4);
161
+ }
162
+ [data-slot="showcase-scroll-card"] {
163
+ position: relative;
164
+ overflow: hidden;
165
+ border-radius: var(--cg-radius-xl);
166
+ background: var(--cg-neutral-50);
167
+ box-shadow: var(--cg-shadow-tile);
168
+ transition:
169
+ transform var(--cg-showcase-lift) var(--cg-ease-out),
170
+ box-shadow var(--cg-showcase-lift) var(--cg-ease-out);
171
+ }
172
+ [data-slot="showcase-scroll-card"][data-shape="landscape"] { aspect-ratio: 4 / 3; }
173
+ [data-slot="showcase-scroll-card"][data-shape="square"] { aspect-ratio: 1 / 1; }
174
+ [data-slot="showcase-scroll-card"][data-shape="portrait"] { aspect-ratio: 3 / 4; }
175
+ [data-slot="showcase-scroll-card"] > img {
176
+ position: absolute;
177
+ inset: 0;
178
+ display: block;
179
+ width: 100%;
180
+ height: 100%;
181
+ max-width: none;
182
+ object-fit: cover;
183
+ user-select: none;
184
+ -webkit-user-drag: none;
185
+ }
186
+ @media (hover: hover) {
187
+ [data-slot="showcase-scroll-card"]:hover {
188
+ transform: scale(1.02);
189
+ box-shadow: var(--cg-shadow-tile-hover);
190
+ z-index: 2;
191
+ }
192
+ }
193
+ [data-slot="showcase-scroll-stats"] {
194
+ position: absolute;
195
+ left: var(--cg-space-2);
196
+ bottom: var(--cg-space-2);
197
+ z-index: 3;
198
+ display: flex;
199
+ flex-direction: column;
200
+ align-items: flex-start;
201
+ gap: var(--cg-space-1);
202
+ pointer-events: none;
203
+ animation: cg-showcase-rise var(--cg-showcase-lift) var(--cg-ease-out) both;
204
+ }
205
+ @media (hover: none) {
206
+ [data-slot="showcase-scroll-stats"] { display: none; }
207
+ }
208
+ [data-slot="showcase-scroll-chip"] {
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 7px;
212
+ height: var(--cg-space-8);
213
+ padding: 0 10px 0 5px;
214
+ border: var(--cg-border-width) solid var(--cg-border-hairline);
215
+ border-radius: var(--cg-radius-xs);
216
+ background: var(--cg-surface-card);
217
+ box-shadow: var(--cg-shadow-card);
218
+ white-space: nowrap;
219
+ }
220
+ [data-slot="showcase-scroll-plate"] {
221
+ display: grid;
222
+ place-items: center;
223
+ flex: none;
224
+ width: 22px;
225
+ height: 22px;
226
+ border-radius: var(--cg-radius-2xs);
227
+ background: var(--cg-surface-page);
228
+ color: var(--cg-text-accent);
229
+ }
230
+ [data-slot="showcase-scroll-plate"] > svg { width: 14px; height: 14px; }
231
+ [data-slot="showcase-scroll-figure"] {
232
+ display: flex;
233
+ align-items: baseline;
234
+ gap: 5px;
235
+ font-family: var(--cg-font-body);
236
+ }
237
+ [data-slot="showcase-scroll-number"] {
238
+ font-size: var(--cg-body-md);
239
+ font-weight: var(--cg-weight-medium);
240
+ line-height: 1;
241
+ color: var(--cg-text-primary);
242
+ font-variant-numeric: tabular-nums;
243
+ }
244
+ [data-slot="showcase-scroll-label"] {
245
+ font-size: var(--cg-caption);
246
+ font-weight: var(--cg-weight-regular);
247
+ line-height: 1;
248
+ color: var(--cg-text-secondary);
249
+ }
250
+ [data-slot="showcase-scroll-stats"][data-compact] [data-slot="showcase-scroll-chip"] {
251
+ height: auto;
252
+ padding-top: 5px;
253
+ padding-bottom: 5px;
254
+ }
255
+ [data-slot="showcase-scroll-stats"][data-compact] [data-slot="showcase-scroll-figure"] {
256
+ flex-direction: column;
257
+ align-items: flex-start;
258
+ gap: 3px;
259
+ }
260
+ @media (prefers-reduced-motion: reduce) {
261
+ [data-slot="showcase-scroll-layout"] {
262
+ padding-top: var(--cg-space-8);
263
+ --cg-showcase-fade: linear-gradient(to bottom,
264
+ black calc(100% - var(--cg-showcase-fade-size)),
265
+ color-mix(in srgb, black 55%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.625),
266
+ color-mix(in srgb, black 10%, transparent) calc(100% - var(--cg-showcase-fade-size) * 0.25),
267
+ transparent 100%);
268
+ }
269
+ [data-slot="showcase-scroll-offset"],
270
+ [data-slot="showcase-scroll-track"] { animation: none; transform: none; }
271
+ [data-slot="showcase-scroll-card"],
272
+ [data-slot="showcase-scroll-stats"] { transition: none; animation: none; }
273
+ [data-slot="showcase-scroll-card"]:hover { transform: none; }
274
+ }
275
+ }
276
+ @keyframes cg-showcase-up {
277
+ from { transform: translate3d(0, calc(-100% / var(--cg-showcase-copies)), 0); }
278
+ to { transform: translate3d(0, calc(-200% / var(--cg-showcase-copies)), 0); }
279
+ }
280
+ @keyframes cg-showcase-down {
281
+ from { transform: translate3d(0, calc(-200% / var(--cg-showcase-copies)), 0); }
282
+ to { transform: translate3d(0, calc(-100% / var(--cg-showcase-copies)), 0); }
283
+ }
284
+ @keyframes cg-showcase-rise {
285
+ from { opacity: 0; transform: translate3d(0, var(--cg-space-1), 0); }
286
+ to { opacity: 1; transform: none; }
287
+ }
288
+ `;
289
+ function deal(cards, usesDefaults) {
290
+ return [3, 2].map((columns) => {
291
+ if (usesDefaults) {
292
+ const bySlug = new Map(cards.map((c) => [c.slug, c]));
293
+ return {
294
+ columns,
295
+ cols: SHOWCASE_SCROLL_COLUMNS[columns].map((slugs) => slugs.map((s) => bySlug.get(s)).filter((c) => Boolean(c))),
296
+ };
297
+ }
298
+ const cols = Array.from({ length: columns }, () => []);
299
+ cards.forEach((card, i) => cols[i % columns].push(card));
300
+ return { columns, cols };
301
+ });
302
+ }
303
+ const format = (n) => Math.round(n).toLocaleString("en-US");
304
+ /** The ticker's count curve: ease in, ease out. */
305
+ const climb = (u) => (u < 0.5 ? 2 * u * u : 1 - Math.pow(-2 * u + 2, 2) / 2);
306
+ function reducedMotion() {
307
+ return typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
308
+ }
309
+ /** The two chips, inside the hovered card's bottom-left corner. */
310
+ function ShowcaseStats({ views, reactions }) {
311
+ const ref = React.useRef(null);
312
+ const [compact, setCompact] = React.useState(false);
313
+ // Rendered at the final numbers first, so the narrow-card check measures the
314
+ // widest the chips will ever be, then counted up from zero before the first paint.
315
+ const [progress, setProgress] = React.useState(1);
316
+ React.useLayoutEffect(() => {
317
+ const el = ref.current;
318
+ const card = el?.parentElement;
319
+ if (el && card)
320
+ setCompact(el.scrollWidth > card.clientWidth - 16);
321
+ if (reducedMotion())
322
+ return;
323
+ setProgress(0);
324
+ let raf = 0;
325
+ const t0 = performance.now();
326
+ const step = (now) => {
327
+ const g = Math.min(1, (now - t0) / COUNT_MS);
328
+ setProgress(g);
329
+ if (g < 1)
330
+ raf = requestAnimationFrame(step);
331
+ };
332
+ raf = requestAnimationFrame(step);
333
+ return () => cancelAnimationFrame(raf);
334
+ }, []);
335
+ const shown = (n) => format(progress >= 1 ? n : n * climb(progress));
336
+ return (_jsxs("div", { ref: ref, "data-slot": "showcase-scroll-stats", "data-compact": compact ? "" : undefined, "data-theme": "default", children: [_jsxs("div", { "data-slot": "showcase-scroll-chip", "data-stat": "views", children: [_jsx("span", { "data-slot": "showcase-scroll-plate", children: _jsx(ViewsIcon, {}) }), _jsxs("span", { "data-slot": "showcase-scroll-figure", children: [_jsx("b", { "data-slot": "showcase-scroll-number", children: shown(views) }), _jsx("small", { "data-slot": "showcase-scroll-label", children: "Views" })] })] }), _jsxs("div", { "data-slot": "showcase-scroll-chip", "data-stat": "reactions", children: [_jsx("span", { "data-slot": "showcase-scroll-plate", children: _jsx(ReactionsIcon, {}) }), _jsxs("span", { "data-slot": "showcase-scroll-figure", children: [_jsx("b", { "data-slot": "showcase-scroll-number", children: shown(reactions) }), _jsx("small", { "data-slot": "showcase-scroll-label", children: "Reactions" })] })] })] }));
337
+ }
338
+ const ShowcaseCard = React.memo(function ShowcaseCard({ id, card, src, eager, active, }) {
339
+ return (_jsxs("div", { "data-slot": "showcase-scroll-card", "data-card": card.slug, "data-shape": card.shape, "data-tile": id, children: [src ? _jsx("img", { src: src, alt: "", loading: eager ? "eager" : "lazy", decoding: "async", draggable: false }) : null, active ? _jsx(ShowcaseStats, { views: card.views, reactions: card.reactions }) : null] }));
340
+ });
341
+ function ShowcaseScroll({ cards, resolveSrc, speed = SHOWCASE_SCROLL_SPEED, paused = false, className, ...props }) {
342
+ const rootRef = React.useRef(null);
343
+ const source = cards ?? SHOWCASE_SCROLL_CARDS;
344
+ const deals = React.useMemo(() => deal(source, !cards), [source, cards]);
345
+ const [copies, setCopies] = React.useState(MIN_COPIES);
346
+ const [durations, setDurations] = React.useState({});
347
+ const [hovered, setHovered] = React.useState(null);
348
+ // False until the panel is laid out with a size. Pictures are `lazy` until then,
349
+ // so a panel the shell hides (phones) fetches nothing, and `eager` after, so the
350
+ // 19 files arrive before their cards scroll in: lazy loading treats a card below
351
+ // the panel's clipped edge as out of view until it is already entering.
352
+ const [shown, setShown] = React.useState(false);
353
+ // One copy's height over the speed is each column's duration, and the panel's
354
+ // height decides how many copies keep the column covered for a whole loop.
355
+ React.useLayoutEffect(() => {
356
+ const root = rootRef.current;
357
+ if (!root)
358
+ return;
359
+ const measure = () => {
360
+ const panelH = root.clientHeight;
361
+ if (panelH > 0 && root.clientWidth > 0)
362
+ setShown(true);
363
+ const next = {};
364
+ let need = MIN_COPIES;
365
+ root.querySelectorAll('[data-slot="showcase-scroll-column"]').forEach((col) => {
366
+ if (col.getClientRects().length === 0)
367
+ return;
368
+ const copy = col.querySelector('[data-slot="showcase-scroll-copy"]');
369
+ const offset = col.querySelector('[data-slot="showcase-scroll-offset"]');
370
+ const h = copy?.getBoundingClientRect().height ?? 0;
371
+ if (!h)
372
+ return;
373
+ const factor = Number(col.dataset.speedFactor) || 1;
374
+ next[col.dataset.column] = h / (speed * factor);
375
+ // The track starts one copy up (two for a down column) from this offset,
376
+ // so it must reach the panel's bottom with two copies spent.
377
+ const t = offset && typeof DOMMatrixReadOnly !== "undefined"
378
+ ? new DOMMatrixReadOnly(getComputedStyle(offset).transform).m42
379
+ : 0;
380
+ need = Math.max(need, Math.ceil(2 + (panelH - t) / h));
381
+ });
382
+ setCopies((c) => {
383
+ const n = Math.min(MAX_COPIES, need);
384
+ return c === n ? c : n;
385
+ });
386
+ setDurations((prev) => {
387
+ const keys = Object.keys(next);
388
+ if (keys.length === Object.keys(prev).length && keys.every((k) => Math.abs(prev[k] - next[k]) < 1e-6)) {
389
+ return prev;
390
+ }
391
+ return next;
392
+ });
393
+ };
394
+ measure();
395
+ // Absent in jsdom and other non-browser hosts: the block then renders its
396
+ // first frame and holds it, rather than throwing in a consumer's unit tests.
397
+ if (typeof ResizeObserver === "undefined")
398
+ return;
399
+ const ro = new ResizeObserver(measure);
400
+ ro.observe(root);
401
+ return () => ro.disconnect();
402
+ }, [speed, deals]);
403
+ const running = !paused && Object.keys(durations).length > 0;
404
+ const onPointerOver = (e) => {
405
+ if (e.pointerType !== "mouse")
406
+ return;
407
+ const tile = e.target.closest('[data-slot="showcase-scroll-card"]');
408
+ if (tile?.dataset.tile)
409
+ setHovered(tile.dataset.tile);
410
+ };
411
+ const onPointerOut = (e) => {
412
+ if (e.pointerType !== "mouse")
413
+ return;
414
+ const to = e.relatedTarget instanceof Element ? e.relatedTarget.closest('[data-slot="showcase-scroll-card"]') : null;
415
+ if (!to)
416
+ setHovered(null);
417
+ };
418
+ return (_jsxs(Panel, { ...props, inset: "flush", padding: "md", "data-slot": "showcase-scroll", "data-running": running ? "" : undefined, className: cn("h-full rounded-3xl p-0", className), "aria-hidden": "true", onPointerOver: onPointerOver, onPointerOut: onPointerOut, children: [_jsx("style", { href: "cg-showcase-scroll", precedence: "medium", children: STYLES }), _jsx("div", { ref: rootRef, "data-slot": "showcase-scroll-frame", children: deals.map(({ columns, cols }) => (_jsx("div", { "data-slot": "showcase-scroll-layout", "data-columns": columns, style: { "--cg-showcase-columns": columns }, children: cols.map((col, ci) => (_jsx(ShowcaseColumn, { id: `${columns}-${ci}`, index: ci, cards: col, copies: copies, duration: durations[`${columns}-${ci}`], hovered: hovered, eager: shown, resolveSrc: resolveSrc }, ci))) }, columns))) })] }));
419
+ }
420
+ /** One column: a static start offset around a track of identical copies. */
421
+ function ShowcaseColumn({ id, index, cards, copies, duration, hovered, eager, resolveSrc, }) {
422
+ const trackStyle = {
423
+ "--cg-showcase-copies": copies,
424
+ ...(duration ? { "--cg-showcase-duration": `${duration}s` } : {}),
425
+ };
426
+ return (_jsx("div", { "data-slot": "showcase-scroll-column", "data-column": id, "data-direction": index % 2 ? "down" : "up", "data-speed-factor": index === 1 ? MIDDLE_COLUMN_FACTOR : 1, style: { "--cg-showcase-start": START_OFFSETS[index] ?? 0 }, children: _jsx("div", { "data-slot": "showcase-scroll-offset", children: _jsx("div", { "data-slot": "showcase-scroll-track", style: trackStyle, children: Array.from({ length: copies }, (_, k) => (_jsx("div", { "data-slot": "showcase-scroll-copy", children: cards.map((card, i) => {
427
+ const tile = `${id}-${k}-${i}`;
428
+ return (_jsx(ShowcaseCard, { id: tile, card: card, src: card.src ?? resolveSrc?.(card), eager: eager, active: hovered === tile }, tile));
429
+ }) }, k))) }) }) }));
430
+ }
431
+ export { ShowcaseScroll, SHOWCASE_SCROLL_CARDS, SHOWCASE_SCROLL_COLUMNS, SHOWCASE_SCROLL_SPEED };
432
+ //# sourceMappingURL=showcase-scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-scroll.js","sourceRoot":"","sources":["../../src/blocks/showcase-scroll.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -54,6 +54,7 @@ export * from "./blocks/pricing-tiers.js";
54
54
  export * from "./blocks/prompt-block.js";
55
55
  export * from "./blocks/quote.js";
56
56
  export * from "./blocks/rich-text.js";
57
+ export * from "./blocks/showcase-scroll.js";
57
58
  export * from "./blocks/side-nav.js";
58
59
  export * from "./blocks/sign-in-options.js";
59
60
  export * from "./blocks/stage-panel.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAGtC,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAGtC,cAAc,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -71,6 +71,7 @@ export * from "./blocks/pricing-tiers.js";
71
71
  export * from "./blocks/prompt-block.js";
72
72
  export * from "./blocks/quote.js";
73
73
  export * from "./blocks/rich-text.js";
74
+ export * from "./blocks/showcase-scroll.js";
74
75
  export * from "./blocks/side-nav.js";
75
76
  export * from "./blocks/sign-in-options.js";
76
77
  export * from "./blocks/stage-panel.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,EAAE;AACF,kEAAkE;AAClE,8EAA8E;AAC9E,uEAAuE;AAEvE,cAAc;AACd,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,mBAAmB;AACnB,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,0EAA0E;AAC1E,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,EAAE;AACF,kEAAkE;AAClE,8EAA8E;AAC9E,uEAAuE;AAEvE,cAAc;AACd,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,mBAAmB;AACnB,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,0EAA0E;AAC1E,cAAc,uBAAuB,CAAA"}
package/dist/theme.css CHANGED
@@ -451,6 +451,11 @@
451
451
  --shadow-raised: var(--cg-shadow-raised);
452
452
  --shadow-hover: var(--cg-shadow-hover);
453
453
  --shadow-panel: var(--cg-shadow-panel);
454
+ /* A picture tile sitting straight on a surface (#283). These two FLIP: the
455
+ panel scope redeclares them in violet, because an ink shadow vanishes on the
456
+ purple. `inline` is what lets shadow-tile follow the scope at the element. */
457
+ --shadow-tile: var(--cg-shadow-tile);
458
+ --shadow-tile-hover: var(--cg-shadow-tile-hover);
454
459
  --shadow-focus: var(--cg-ring-focus);
455
460
  /* The live dot's halo (#154), paired with --cg-live-halo the way --shadow-focus
456
461
  is paired with --cg-focus-ring. */
@@ -1735,6 +1735,26 @@
1735
1735
  }
1736
1736
  }
1737
1737
  },
1738
+ "shadow-tile": {
1739
+ "$value": "{elevation.shadow-card}",
1740
+ "$description": "The lift under a picture tile that sits directly on a surface: the showcase's\ncreation cards (#283). A ROLE, declared in all three scopes, because the value that\nreads depends on the ground. On white and on ink it is --cg-shadow-card. On the\npurple panel an ink shadow at 4% vanishes, so the panel scope redeclares it as the\nsame geometry in a deep violet (surface-panel.json).\n\nDeclared on ink as well, as the card shadow, so a tile inside an ink block that is\nitself inside the panel does not inherit the violet.",
1741
+ "$extensions": {
1742
+ "io.cloudgrid": {
1743
+ "raw": true,
1744
+ "css": "--cg-shadow-tile"
1745
+ }
1746
+ }
1747
+ },
1748
+ "shadow-tile-hover": {
1749
+ "$value": "{elevation.shadow-hover}",
1750
+ "$description": "The deeper lift of a hovered picture tile (#283). Same three-scope reasoning as\n--cg-shadow-tile: --cg-shadow-hover on white and on ink, a violet on the panel.",
1751
+ "$extensions": {
1752
+ "io.cloudgrid": {
1753
+ "raw": true,
1754
+ "css": "--cg-shadow-tile-hover"
1755
+ }
1756
+ }
1757
+ },
1738
1758
  "ring-focus": {
1739
1759
  "$value": "0 0 0 3px var(--cg-focus-ring)",
1740
1760
  "$extensions": {
@@ -338,5 +338,26 @@
338
338
  }
339
339
  }
340
340
  }
341
+ },
342
+ "elevation": {
343
+ "$description": "elevation: the picture-tile shadows, pinned back to the card shadows on ink (#283).\n\nNo ink value was designed. These exist so a tile on ink nested inside the panel\ndoes not inherit the panel's violet.",
344
+ "shadow-tile": {
345
+ "$value": "{elevation.shadow-card}",
346
+ "$extensions": {
347
+ "io.cloudgrid": {
348
+ "raw": true,
349
+ "css": "--cg-shadow-tile"
350
+ }
351
+ }
352
+ },
353
+ "shadow-tile-hover": {
354
+ "$value": "{elevation.shadow-hover}",
355
+ "$extensions": {
356
+ "io.cloudgrid": {
357
+ "raw": true,
358
+ "css": "--cg-shadow-tile-hover"
359
+ }
360
+ }
361
+ }
341
362
  }
342
363
  }
@@ -324,5 +324,26 @@
324
324
  }
325
325
  }
326
326
  }
327
+ },
328
+ "elevation": {
329
+ "$description": "elevation: the picture-tile shadows, redeclared for the purple ground (#283).\n\nSOURCE: the founder-approved showcase mock (v3, 2026-10-06). The library's ink\nshadows are 4-8% of #222 and disappear on #5a47f0, so a tile looked pasted on rather\nthan sitting on the panel. These are a deep violet, rgb(24, 12, 110): the panel's\nown hue taken down to near-black, so the shadow reads as the panel in shade rather\nthan as a grey cast on it.",
330
+ "shadow-tile": {
331
+ "$value": "0 1px 2px rgba(24, 12, 110, 0.16), 0 6px 16px -4px rgba(24, 12, 110, 0.26)",
332
+ "$extensions": {
333
+ "io.cloudgrid": {
334
+ "raw": true,
335
+ "css": "--cg-shadow-tile"
336
+ }
337
+ }
338
+ },
339
+ "shadow-tile-hover": {
340
+ "$value": "0 2px 4px rgba(24, 12, 110, 0.18), 0 16px 32px -8px rgba(24, 12, 110, 0.42)",
341
+ "$extensions": {
342
+ "io.cloudgrid": {
343
+ "raw": true,
344
+ "css": "--cg-shadow-tile-hover"
345
+ }
346
+ }
347
+ }
327
348
  }
328
349
  }