/** * One categorical index → class map, the twin of * `intentStyles.ts`. * * Its own file rather than ten more entries in that one, because * the two families are keyed by different things and mean different * things. `intentStyles.ts` opens by explaining that it exists to * delete rip-deck's duplicated `TONE_CLASS` — a *status* map, where * every key is a claim about state. Nothing here is a claim about * anything: an index is a user's pick for a label, and the only * thing a component may do with it is paint it. Keeping them apart * is also what keeps `IntentName` an exhaustive union that * `getAsyncIntent` can switch over. * * **Every class name is written out in full, and that is not * negotiable.** Tailwind v4 scans source text for *complete* class * strings, so `` `bg-categorical-${index}-solid` `` generates * nothing at all — the badge renders unstyled with no error, no * warning, and no failing test unless something checks. Something * does: `tailwindCandidates.test.ts` compiles every literal in this * package through the real Tailwind and fails on any candidate it * cannot generate. Forty lines of near-duplication is the price, * and the alternative is the `--color-danger-9` that shipped in * Docket: a token name that had never existed, resolving to * nothing, painting transparent, and passing every assertion about * whether the element was rendered. */ import type { CategoricalIndex } from "@charcuterie/tokens"; import type { IntentAppearance } from "./intentStyles.ts"; export declare const CATEGORICAL_APPEARANCE_CLASS: Record>; /** * Hover, split out for exactly the reason `INTENT_HOVER_CLASS` is: * most things wearing a colour are not interactive. A label pill in * a task list that lightens under the cursor is telling the user it * can be clicked, and a `Badge` cannot be. So an interactive * component opts in, and a static one cannot accidentally opt in. * * `solid` hovers toward `solidHover`, which for this family is * **brighter** rather than deeper — the fill carries a near-black * label, so it moves away from it in the opposite direction to an * intent's white-labelled fill. */ export declare const CATEGORICAL_HOVER_CLASS: Record>; /** * The fill on its own, for the parts of a component that are a dot * or a bar rather than a box — the swatch beside a label in a * picker, a series marker on a chart. Same values, no border and no * hover, because neither of those is a surface anyone can point at. */ export declare const CATEGORICAL_SOLID_FILL_CLASS: Record; /** The same ten as text, for a glyph or a dot's ring. */ export declare const CATEGORICAL_CONTENT_CLASS: Record; /** * The hover BORDER, which `CATEGORICAL_HOVER_CLASS` deliberately * does not carry. * * That map answers "what does this surface do under the pointer", * and a `Badge` has no border state to change. A tile does: it is a * bordered card, and the whole point of colouring one is that the * box reacts in its own hue rather than in the neutral * `border-strong` every other box uses. Kept separate rather than * added as a fifth appearance key, because an appearance is a claim * about the fill and this is not one. * * Written out in full for the reason this file opens with. */ export declare const CATEGORICAL_HOVER_BORDER_CLASS: Record; /** * A halo the width of a ring, in the hue's SURFACE. * * `surface` and not `border`: this sits directly against the solid * fill it surrounds, so it is a soft step out of the colour rather * than a second line around it. `PortraitTiles` draws it around a * face, where a hard outline reads as a frame and this reads as * light. * * Written out in full for the reason this file opens with. */ export declare const CATEGORICAL_RING_CLASS: Record; //# sourceMappingURL=categoricalStyles.d.ts.map