/** * Button Component Styles * * Three appearance variants × five semantic flavors × three tones (+/base/-). * Each variant uses ONE token system: * * - solid → flat per-segment tokens --ty-solid-{flavor}{,-hover,-active, * -strong,-soft,-fg}. Derived in tyrell-theme.css via OKLCH on * 3 axes (color / hover-active / theme chroma-hue); literal in * tyrell.css. The component does no color math for the fill. * Depth chrome (border + drop shadow) IS computed here, from * the fill, via relative color — see "Depth chrome" below. * - outlined → --ty-color-{flavor}-{strong|base|soft} (text === border at * rest); hover/active/focus always resolve to -strong, * whatever the resting tone was — see "Hover escalation". * - ghost → same as outlined, text only (no border), --ty-bg-{flavor}-soft * background on hover. * * Neutral is the exception in both outlined and ghost: its `+` tone reads * --ty-solid-neutral-strong (the ink dial solid buttons use — the only * value that actually inverts light↔dark for full contrast) instead of the * generic --ty-color-neutral-strong text-emphasis token. Base/soft neutral * stay on the generic token like every other flavor. * * Depth chrome (solid only): a 1px border + soft drop shadow, both derived * from the fill via oklch(from …), scaled by --ty-button-depth (0–1). The * border reads the TONE'S RESTING fill (not the current/hover one) so it * stays stationary while the fill rises toward it on interaction. Offset * direction/magnitude is --ty-button-border-l (mode-flipped: no border at * all for colored solids in dark, a lit edge in light) with its own * stronger dial for neutral, --ty-button-border-l-neutral (ink has no hue * to separate it from the canvas). Escape hatches --ty-solid-border-color * / --ty-solid-border-width outrank the derivation entirely. * * Hover escalation (outlined/ghost): :hover/:active/:focus-visible always * resolve to the -strong tier regardless of starting tone — soft and base * both rise to the same peak on interaction. Composes with `muted` rather * than fighting it (see the escalation rules themselves for the exact * split) — a pressed muted button lands on the same color as a pressed * plain one of the same flavor. * * Per-instance overrides via host CSS variables: * --ty-button-bg, --ty-button-bg-hover, --ty-button-color, --ty-button-border, * --ty-solid-border-color, --ty-solid-border-width */ /** Rules for one custom (non-built-in) flavor across all three appearances. */ export declare const buttonCustomFlavorCss: (base: string) => string; export declare const buttonStyles: string; //# sourceMappingURL=button.d.ts.map