/** * `guuey.json#app.theme` — the app's chat theme AS CODE (theme-as-code, * guuey#341 spec §2/§3). * * The manifest block IS the stored `GuueyApp.chatTheme` document (the * `@guuey/chat` `GuueyChatTheme` vocabulary — ONE document, never a second * theme language), submitted STRICTLY: unknown keys reject loudly in CI * where the stored/read tier stays lenient (strict submit, lenient store — * the reconcile philosophy split, spec D3). The schemas here are * hand-mirrored strict twins of the kit's lenient ones; `theme.sync.test.ts` * pins the vocabularies key-for-key so the mirror cannot drift (the same * pattern as the CLI's wire mirrors — this package must not carry the kit * as a runtime dependency just to borrow eight key names). * * Colour VALUES are validated server-side by the platform's one grammar * (6/8-digit hex + canonical `rgb()`/`rgba()` — `validateChatTheme`); this * schema deliberately checks shape only, so the CLI's plan/apply surfaces * the server validator's exact message rather than a divergent local one. * * Sections a manifest omits (`name`, `typography`, `shape`) are filled with * the kit defaults by the SERVER's one derivation site at reconcile time — * constants, so the fill is deterministic and the idempotency byte-match * holds. */ import { z } from 'zod'; /** One mode's full palette — every token stated (the kit requires complete palettes). */ export declare const ThemePaletteV1: z.ZodObject<{ accent: z.ZodString; onAccent: z.ZodString; ink: z.ZodString; inkMuted: z.ZodString; surface: z.ZodString; canvas: z.ZodString; canvasMuted: z.ZodString; error: z.ZodString; link: z.ZodOptional; secondaryAccent: z.ZodOptional; onSecondaryAccent: z.ZodOptional; success: z.ZodOptional; warning: z.ZodOptional; info: z.ZodOptional; }, z.core.$strict>; export type ThemePaletteV1 = z.infer; /** One declared face (D3). `src` must be `https:` on an admitted host — the server's write gate decides. */ export declare const ThemeFaceV1: z.ZodObject<{ family: z.ZodString; src: z.ZodString; weight: z.ZodOptional; style: z.ZodOptional; display: z.ZodOptional; }, z.core.$strict>; export type ThemeFaceV1 = z.infer; /** Shadow colour / intensity — the per-app half of elevation. */ export declare const ThemeShadowV1: z.ZodObject<{ color: z.ZodOptional; intensity: z.ZodOptional; }, z.core.$strict>; export type ThemeShadowV1 = z.infer; /** * Glass (guuey#1151) — the widget CHROME's translucency: the fill alpha * (`opacity`, 0–1; 1 = opaque = off) and the backdrop blur (`blur`, px, * 0–64, optional — the loader applies 16px when unstated). Chrome only: * the host-page panel, bar and shell and the frame's full-bleed strips — * never generated cards or bubbles. One value next to `shadow`. */ export declare const ThemeGlassV1: z.ZodObject<{ opacity: z.ZodNumber; blur: z.ZodOptional; }, z.core.$strict>; export type ThemeGlassV1 = z.infer; /** * One court's override document (guuey#519 / the #536 grammar completion): * a PARTIAL theme — every member optional (present members merge per-token * over the base at resolution), palettes partial, and no nested `courts` * (courts do not nest — the server gate enforces the same). */ export declare const AppCourtThemeV1: z.ZodObject<{ name: z.ZodOptional; mode: z.ZodOptional>; colors: z.ZodOptional; onAccent: z.ZodOptional; ink: z.ZodOptional; inkMuted: z.ZodOptional; surface: z.ZodOptional; canvas: z.ZodOptional; canvasMuted: z.ZodOptional; error: z.ZodOptional; link: z.ZodOptional>; secondaryAccent: z.ZodOptional>; onSecondaryAccent: z.ZodOptional>; success: z.ZodOptional>; warning: z.ZodOptional>; info: z.ZodOptional>; }, z.core.$strict>>; dark: z.ZodOptional; onAccent: z.ZodOptional; ink: z.ZodOptional; inkMuted: z.ZodOptional; surface: z.ZodOptional; canvas: z.ZodOptional; canvasMuted: z.ZodOptional; error: z.ZodOptional; link: z.ZodOptional>; secondaryAccent: z.ZodOptional>; onSecondaryAccent: z.ZodOptional>; success: z.ZodOptional>; warning: z.ZodOptional>; info: z.ZodOptional>; }, z.core.$strict>>; }, z.core.$strict>>; typography: z.ZodOptional; monoFontFamily: z.ZodOptional; headingFontFamily: z.ZodOptional; scale: z.ZodOptional; faces: z.ZodOptional; style: z.ZodOptional; display: z.ZodOptional; }, z.core.$strict>>>; }, z.core.$strict>>; shape: z.ZodOptional>; density: z.ZodOptional>; shadow: z.ZodOptional; intensity: z.ZodOptional; }, z.core.$strict>>; glass: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; typeScale: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; h1: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; h2: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; body: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; label: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; rhythm: z.ZodOptional; inset: z.ZodOptional; }, z.core.$strict>>; motion: z.ZodOptional; base: z.ZodOptional; slow: z.ZodOptional; }, z.core.$strict>>; easing: z.ZodOptional; emphasized: z.ZodOptional; exit: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; scrim: z.ZodOptional; opacity: z.ZodNumber; blur: z.ZodNumber; }, z.core.$strict>>; }, z.core.$strict>; export type AppCourtThemeV1 = z.infer; /** * The app theme document `guuey.json` is validated against. * * CARRIED, NOT YET PAINTED (guuey#1419): `motion` validates here, survives * `guuey deploy`, and no surface projects it — see the member's own comment for * the measurement. Stated here as well because a comment on an inner schema is * dropped from the emitted `.d.ts` and this declaration's is not: a sentence a * consumer's editor never shows is a sentence that does not exist. * * Both copies leave with the projection that paints the member, in the same * publication; `CARRIED, NOT YET PAINTED` finds every one of them. */ export declare const AppThemeV1: z.ZodObject<{ name: z.ZodOptional; mode: z.ZodEnum<{ light: "light"; dark: "dark"; }>; colors: z.ZodObject<{ light: z.ZodObject<{ accent: z.ZodString; onAccent: z.ZodString; ink: z.ZodString; inkMuted: z.ZodString; surface: z.ZodString; canvas: z.ZodString; canvasMuted: z.ZodString; error: z.ZodString; link: z.ZodOptional; secondaryAccent: z.ZodOptional; onSecondaryAccent: z.ZodOptional; success: z.ZodOptional; warning: z.ZodOptional; info: z.ZodOptional; }, z.core.$strict>; dark: z.ZodObject<{ accent: z.ZodString; onAccent: z.ZodString; ink: z.ZodString; inkMuted: z.ZodString; surface: z.ZodString; canvas: z.ZodString; canvasMuted: z.ZodString; error: z.ZodString; link: z.ZodOptional; secondaryAccent: z.ZodOptional; onSecondaryAccent: z.ZodOptional; success: z.ZodOptional; warning: z.ZodOptional; info: z.ZodOptional; }, z.core.$strict>; }, z.core.$strict>; typography: z.ZodOptional; monoFontFamily: z.ZodOptional; headingFontFamily: z.ZodOptional; scale: z.ZodOptional; faces: z.ZodOptional; style: z.ZodOptional; display: z.ZodOptional; }, z.core.$strict>>>; }, z.core.$strict>>; shape: z.ZodOptional; density: z.ZodEnum<{ compact: "compact"; comfortable: "comfortable"; }>; shadow: z.ZodOptional; intensity: z.ZodOptional; }, z.core.$strict>>; glass: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; typeScale: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; h1: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; h2: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; body: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; label: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; rhythm: z.ZodOptional; inset: z.ZodOptional; }, z.core.$strict>>; motion: z.ZodOptional; base: z.ZodOptional; slow: z.ZodOptional; }, z.core.$strict>>; easing: z.ZodOptional; emphasized: z.ZodOptional; exit: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; scrim: z.ZodOptional; opacity: z.ZodNumber; blur: z.ZodNumber; }, z.core.$strict>>; courts: z.ZodOptional; mode: z.ZodOptional>; colors: z.ZodOptional; onAccent: z.ZodOptional; ink: z.ZodOptional; inkMuted: z.ZodOptional; surface: z.ZodOptional; canvas: z.ZodOptional; canvasMuted: z.ZodOptional; error: z.ZodOptional; link: z.ZodOptional>; secondaryAccent: z.ZodOptional>; onSecondaryAccent: z.ZodOptional>; success: z.ZodOptional>; warning: z.ZodOptional>; info: z.ZodOptional>; }, z.core.$strict>>; dark: z.ZodOptional; onAccent: z.ZodOptional; ink: z.ZodOptional; inkMuted: z.ZodOptional; surface: z.ZodOptional; canvas: z.ZodOptional; canvasMuted: z.ZodOptional; error: z.ZodOptional; link: z.ZodOptional>; secondaryAccent: z.ZodOptional>; onSecondaryAccent: z.ZodOptional>; success: z.ZodOptional>; warning: z.ZodOptional>; info: z.ZodOptional>; }, z.core.$strict>>; }, z.core.$strict>>; typography: z.ZodOptional; monoFontFamily: z.ZodOptional; headingFontFamily: z.ZodOptional; scale: z.ZodOptional; faces: z.ZodOptional; style: z.ZodOptional; display: z.ZodOptional; }, z.core.$strict>>>; }, z.core.$strict>>; shape: z.ZodOptional>; density: z.ZodOptional>; shadow: z.ZodOptional; intensity: z.ZodOptional; }, z.core.$strict>>; glass: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; typeScale: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; h1: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; h2: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; body: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; label: z.ZodOptional; weight: z.ZodOptional; tracking: z.ZodOptional; leading: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; rhythm: z.ZodOptional; inset: z.ZodOptional; }, z.core.$strict>>; motion: z.ZodOptional; base: z.ZodOptional; slow: z.ZodOptional; }, z.core.$strict>>; easing: z.ZodOptional; emphasized: z.ZodOptional; exit: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; scrim: z.ZodOptional; opacity: z.ZodNumber; blur: z.ZodNumber; }, z.core.$strict>>; }, z.core.$strict>>>; }, z.core.$strict>; export type GuueyAppTheme = z.infer; //# sourceMappingURL=theme.d.ts.map