registry
@automindzsheets 01–77shadcn 4.x
SHEET 26

Content Card

component / marketing / layout

One card in five shapes — copy, media on top, media beside, figure-first stat and quote — plus a grid that lays them out, with every state drawn and five opt-in effects.

type
component
files
2
registry deps
badge, card, skeleton, @automindz/render-link
npm deps
lucide-react

installs

  • components/automindz/content-card.tsx
  • styles/automindz-card.css
  • Five shapes: copy, media, horizontal, stat, quote.
  • emphasis spends the consumer's primary token, not ours.
  • A stat's series reads out; sr-only carries it on touch.

variant changes the markup, not a flag: outline, media, horizontal, stat, quote. href makes the card one anchor, action puts your control in the footer, and the types reject both. emphasis and fx are opt-in and spend your own tokens: fx takes any of beam, spotlight, glare, tilt and glow, and needs styles/automindz-card.css imported once in your root layout or the effects are inert. A stat's sparkline formats no number: pass sparklineFormat.

Variations

one state per section

01

Beam, spotlight and tilt at once

The loudest this card gets, and every bit of it is opt-in: fx={["beam", "spotlight", "tilt"]} on a card that is otherwise the same card as the last variant. **Hover it, then move the cursor around inside it.** An arc of the consumer's primary is already lapping the perimeter before you arrive — that one runs whether or not anybody is pointing at the card, over a faint static rail of the same colour. Under the cursor, the edge nearest it lights up and the card turns to face you, capped at 5°, while the badge, the copy, the footer and the picture move at four different rates — the marks fastest and with you, the picture slowest and against you. There is no translateZ anywhere in it: the card is overflow-hidden, and any overflow but visible forces transform-style: flat, so the depth is four 2D speeds rather than four z-offsets. Nothing here is a new dependency — a registered <angle>, a conic gradient, two masks composited with exclude, and the one pointermove handler the card already had.

fluid
Long read
Field guide
Where the metering data lands, which of the three timestamps Stripe actually bills on, and how to tell a runaway integration from a customer who simply grew.
Anaya Okonkwo · 9 min read
02

Beam: a lit arc on the perimeter

**Nothing to hover — this one is already running.** A conic gradient painted into a ring the width of one property: padding on one overlay pseudo-element makes the frame, then the content box and the whole box are masked and composited with exclude, which keeps the difference between them. That difference is the border. The angle is a registered @property, which is the only reason it can be interpolated at all, and it is also the fallback — without @property the var() inside the gradient is invalid, the whole background is dropped, and what is left is the static rail underneath rather than a beam frozen in one corner. This card sets --card-beam-duration: 3.4s and --card-beam-arc: 26% in its className; the shipped defaults are 6s and 16%. The cost is honest: an animated gradient repaints every frame instead of compositing, so this is one or two cards on a screen, not twelve.

fluid
Deliveries
Why the delivery id is the wrong key, what to store instead, and how long to keep it.
Reference
03

Spotlight: light the edge, pay for the face

**Move the cursor slowly across the card.** Two layers, and the split between them is arithmetic rather than taste. The **edge** takes the light at full strength — the same masked ring the beam uses, so it paints no pixel a glyph sits on and costs nobody any contrast. The **face** takes a 12% wash, which is not free: muted-foreground on card is 4.73:1 with stock tokens, the card's own hover ground already spends part of that (4.61:1), and a primary wash over the description lands at 3.60:1. The previous pass answered that by keeping the light inside the media frame. This one pays instead: while a face-painting effect is installed, the muted copy is raised to foreground at 70%, measured at 6.71:1 on stock tokens and 6.62:1 with primary pushed to black — the worst a light theme can do to it. Tab into the card and the same light parks at its centre; a keyboard has no cursor to follow. An emphasis="fill" card gets the edge and no wash at all: its ground is already primary and its copy already primary-foreground at full strength, so there is no headroom left to spend.

fluid
On call
Runbook
Nine times out of ten it is the metering write, not the API. This is the order to rule things out in, and the two dashboards that answer it in under a minute.
Reviewed 6 Aug 2026
04

Glare: one crossing per hover

**Hover it once, move away, hover again.** A single diagonal band travels the card and stops — it rests off the left edge, so before and after the crossing there is nothing to see and nothing to undo. The card's own overflow-hidden and radius trim it to the corners for free; nothing here clips anything on purpose. This card is emphasis="fill", which is where the token the effects spend becomes visible: every effect reads --card-ink, and on a fill card that is primary-foreground rather than primary, because the ground is already primary and a beam of it would be invisible. Exactly one declaration of --card-ink is ever on the element, so which token gets spent never depends on stylesheet source order. 10% is the band's whole budget, and it is the number the spotlight's contrast table was measured with — a glare you have to read through has to be cheap. Under reduced motion the sweep is replaced by a still highlight that fades in where it would have crossed, which is the same trade the card's hover rule already makes.

fluid
Shipped
Changelog
Rotate without dropping a delivery: both secrets verify during the window, and the old one stops on a schedule you set.
18 Aug 2026
05

Tilt: four rates, no z-axis

**Move the cursor to each corner in turn.** The card faces the pointer — the corner under it comes toward you, the opposite one goes back — and the four things inside it move at four different speeds: the badge most and with the cursor, then the copy, then the footer, and the picture least and *against* it. Opposed directions at four speeds is what makes this read as depth rather than as one plane turning. 5° at the edge is a ceiling rather than a default; past about 7° the type on the far side smears and a card that flops is worse than a flat one. --card-tilt will let you do it anyway. The rotation comes from --card-nx / --card-ny, the pointer's position as a signed unitless fraction — an angle needs a number to multiply and CSS cannot turn a percentage into one — written by the same coalesced handler that positions the light, so this is still one listener per card and still nothing React ever hears about. Keyboard focus gets no rotation and that is correct rather than missing: with no pointer the fraction is 0 and the transform is the identity, so focus gets every other cue plus the ring.

fluid
Incident
Postmortem
One downstream 429 became 1,412 replays in ninety seconds. The fix was four lines and the wrong default.
Kwame Boateng · 12 min read
06

Glow: a bloom, on hover and on focus

**Hover it, then tab to it.** No offset, a wide blur, a negative spread — the card's own colour in the air around it rather than a sheet lifted off the page, which is the one place in this family a shadow earns itself. It is also the one effect with no reduced-motion branch: a bloom is a state, not a gesture, so only the transition into it is behind the guard. The mechanism is worth a line, because box-shadow is a trap here: the card's ring, its inset-ring and its focus ring are all that same property, and a rule in the stylesheet would win the cascade and take all three with it. So the stylesheet hands over a *value* as --card-bloom and a Tailwind shadow-(--card-bloom) utility composes it with the rest — which is also why an unimported stylesheet leaves no glow rather than a broken ring: the variable never resolves and --tw-shadow falls back to its registered initial. The figure keeps its readout: run the pointer along the series at the card's floor while the bloom is up, and the bubble still tracks the viewport rather than the card.

fluid
Metering
Live
Down−38msvs. Q2
p95 from event received to billable record
12 points, oldest first: w/c 2 Jun 521ms, w/c 9 Jun 498ms, w/c 16 Jun 506ms, w/c 23 Jun 470ms, w/c 30 Jun 461ms, w/c 7 Jul 433ms, w/c 14 Jul 447ms, w/c 21 Jul 421ms, w/c 28 Jul 418ms, w/c 4 Aug 412ms, w/c 11 Aug 409ms, w/c 18 Aug 412ms. Low 409ms, high 521ms, latest 412ms.
One-minute samples, measured at the edge
07

A section, not a row of equals

featured claims two tracks and — once it has media to fill them — two rows, so one card plus two ordinary ones closes a 3×2 block. The lead card is emphasis="fill": the ground becomes the consumer's own primary and every neutral in it flips to primary-foreground at full opacity. The two figures beside it are emphasis="accent", which spends the same token on marks only — the rule at the top edge and the series at the floor. The lead card is also the only link here, so it is the only one that answers a hover at all — and the only one with a picture, so it is the only one whose artwork the pointer can light. The light stays primary even on a fill: over that frame's primary-foreground/10 it pulls back toward the base ground, which *raises* the label contrast inside it rather than spending it.

fluid
Long read
Field guide
Where the metering data lands, which of the three timestamps Stripe actually bills on, and how to tell a runaway integration from a customer who simply grew.
Anaya Okonkwo · 9 min read
Reliability
99.982%
Up+0.014vs. Q2
API availability over the last 90 days
7 points, oldest first: Feb 99.910%, Mar 99.940%, Apr 99.930%, May 99.970%, Jun 99.960%, Jul 99.980%, Aug 99.982%. Low 99.910%, high 99.982%, latest 99.982%.
Deliveries
1,412
Down−54%vs. last week
Webhooks retried this week
12 points, oldest first: w/c 2 Jun 412, w/c 9 Jun 398, w/c 16 Jun 431, w/c 23 Jun 470, w/c 30 Jun 452, w/c 7 Jul 388, w/c 14 Jul 341, w/c 21 Jul 366, w/c 28 Jul 309, w/c 4 Aug 274, w/c 11 Aug 233, w/c 18 Aug 188. Low 188, high 470, latest 188.
08

Figure between two edges

The stat card is three bands, not a stack of small type: a full-bleed spec strip carrying the icon, eyebrow and badge on one line; the figure at 60px with its first digit's sidebearing hung past the copy below it; and the series as the card's floor, bleeding to both edges. The delta's direction is a glyph and a word — accent colours the trace, never the reading. Run the pointer along the floor: it snaps to the nearest week, a dot marks it, and one bubble prints “w/c 21 Jul · 421ms”. The unit is yours — this card formats no number, so sparklineFormat is the seam it refuses to guess, and the band prints the same twelve readings as sr-only text for touch and for a screen reader.

fluid
Metering
Live
412ms
Down−38msvs. Q2
p95 from event received to billable record
12 points, oldest first: w/c 2 Jun 521ms, w/c 9 Jun 498ms, w/c 16 Jun 506ms, w/c 23 Jun 470ms, w/c 30 Jun 461ms, w/c 7 Jul 433ms, w/c 14 Jul 447ms, w/c 21 Jul 421ms, w/c 28 Jul 418ms, w/c 4 Aug 412ms, w/c 11 Aug 409ms, w/c 18 Aug 412ms. Low 409ms, high 521ms, latest 412ms.
One-minute samples, measured at the edge
09

Quote with an actual mark

The mark is a display-size serif glyph in the flow, leading the quotation instead of sitting behind it — a watermark under copy is contrast spent on decoration, and on a filled card at 25% it drags the quotation to 3.90:1. In front of the text it owes nothing, so it can be strong. Under it, a real cite at 24px over a hairline that thickens with the card.

fluid
We had four different card components and none of them handled the disabled case. Deleting three of them was the whole migration.
PR
Priya Raghavan
VP Engineering, Northwind Logistics
10

Media beside inverted copy

Two fifths media, three fifths copy, stacking below 640px — on a fill, where the hairline between the columns is cut from primary-foreground. Now hover it: **nothing happens.** This card holds an action rather than an href, so it is not a target, and a card that lit up under the cursor while only its button was clickable would be lying about where to click. The button answers instead. That is also the seam the card refuses to close: a default Button here is primary on primary and vanishes, so the action is variant="secondary".

fluid
Postmortem
Incident review
Why 1,412 webhook deliveries retried at once
A downstream 429 turned into a retry stampede because the backoff jitter was applied per worker, not per endpoint. The fix, and what the replay queue looked like on the way out.
Updated 3 days ago
12

Pending, blocked, and no artwork

Left: the skeleton reserves the figure at display height, the delta as the same pill and the series as the same 56px band — nothing moves when the numbers land. Middle: emphasis="fill" is passed and deliberately ignored, because a blocked card shouting the brand colour reads as available; what you get is a dashed outline, a lock and the reason in words. **Both of them are also passed all five fx effects, and both ignore every one.** Run the cursor over all three: no beam, no bloom, no tilt, nothing — and the blocked one is the point, because a card that lights up under the pointer and then refuses the click is the worst version of this. The overlay the effects paint into is not even rendered, so a skeleton is not quietly wearing a light show either. The series readout follows the same rule: the loading band is a skeleton at the same 56px and a disabled card's band never listens for a pointer at all, though it keeps its sr-only readings either way. Right: no media, so the frame keeps its ratio and says which of the two it is.

fluid
Loading
Security
SCIM directory sync
Provision and deprovision members from your identity provider.
Available on Enterprise. Ask an owner to upgrade the workspace.
No image
Changelog
Rotating a signing secret without dropping a delivery during the overlap window
21 Aug 2026
13

Divided grid

One shared hairline between cells rather than a border per card: each cell draws its top and left edge and is pulled back a pixel. No eyebrow and no badge on these, so no spec strip is drawn and the figure is the first thing in the cell. Five figures in a three-up grid, so the short last row proves it leaves no stray fill behind. The fourth cell carries a series: hover its left-most and right-most points and the bubble stays whole, which is the cheapest proof that it is one fixed node on the body rather than something absolutely positioned inside a square, overflow-hidden cell.

fluid
18,204
Up+1,138
Active seats
99.982%
Up+0.014
Availability
412ms
Down−38ms
p95 latency
1,412
Down−54%
Webhooks retried
12 points, oldest first: w/c 2 Jun 412, w/c 9 Jun 398, w/c 16 Jun 431, w/c 23 Jun 470, w/c 30 Jun 452, w/c 7 Jul 388, w/c 14 Jul 341, w/c 21 Jul 366, w/c 28 Jul 309, w/c 4 Aug 274, w/c 11 Aug 233, w/c 18 Aug 188. Low 188, high 470, latest 188.
6
No change0
Open incidents