@c4a/context 0.7.14 → 0.7.16

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.
@@ -319,6 +319,12 @@ input without that flag to continue. A preview is not approval and does not make
319
319
  a stale revision valid.
320
320
 
321
321
  Review can approve checked pages while leaving repair pages pending. The HTML
322
+ report shows the current site navigation, candidate changes and expected file
323
+ paths. Unchanged approved pages retain their titles with omitted bodies. Enter
324
+ revision instructions directly in the report; the copied code and following
325
+ instruction lines must be returned together without edits. The CLI binds them to
326
+ the reviewed content and baseline and returns repair commands while leaving
327
+ those pages pending. Changed candidates require a fresh review. The HTML
322
328
  review code includes pending positions; managed Review provides the same current
323
329
  scope as a JSON template. Send decisions only for pages actually reviewed. Omit
324
330
  means a durable exclusion, not repair. Partial approval alone does not build.
@@ -124,3 +124,41 @@ fixed. Accepted failures remain visible as warnings and unavailable-resource
124
124
  notices; they are never represented as downloaded evidence. Review shows
125
125
  available previews, references, and warnings so the human or managed policy can
126
126
  assess the page with its non-text evidence.
127
+
128
+ ## Image choices for a production task
129
+
130
+ The work-start report asks once when a task contains more than 30 distinct images
131
+ and has no explicit image policy. The choices are intelligent conversion and
132
+ inclusion (recommended), include all as images with compression, or include none
133
+ with placeholders. Count the whole task, not each capture or writing batch.
134
+ Review reports show the resulting image handling and any fallbacks.
135
+
136
+ To skip image acquisition while preserving visible source placeholders:
137
+
138
+ ```ts
139
+ captureLark({ source: handbook, resources: { images: "reference-only" } });
140
+ ```
141
+
142
+ To retain static images but exclude GIF files:
143
+
144
+ ```ts
145
+ captureLark({ source: handbook, resources: { gifs: "reference-only" } });
146
+ ```
147
+
148
+ Both fields also accept `bundle`; omitted fields retain normal capture behavior.
149
+ Known GIF metadata avoids downloading; when a source only supplies an opaque
150
+ media token, identification may require downloading the file. Such a GIF is then
151
+ excluded from the snapshot assets and knowledge, rather than decoded or retained.
152
+ Existing evidence is not deleted by changing a policy. Already approved image
153
+ references must be revised through the normal Review flow to change their content.
154
+
155
+ Inclusion does not mean lossless original-byte delivery. The package optimizer
156
+ preserves animations without decoding every frame or silently flattening them.
157
+ Codec failures and images that cannot fit delivery budgets become visible output
158
+ placeholders with a build warning; approved source bytes remain unchanged.
159
+ Do not rewrite approved prose to repair a codec error or disable pixel safety
160
+ limits. The reading meaning of an image is handled in writing and Review.
161
+
162
+ Source document links can be retained for viewing under the reader's permissions.
163
+ Temporary signed media links are not durable image hosting. Do not embed access
164
+ tokens in generated pages or claim that excluded images have been interpreted.
@@ -93,8 +93,14 @@ The website uses a full-width VitePress theme with system fonts, compact navigat
93
93
  a wide reading area and a smaller article outline. It starts in
94
94
  light mode regardless of the operating system; an explicit reader choice is
95
95
  remembered in browser storage. Search runs locally, without a search service.
96
- Mermaid renders in the browser with a restrained theme; invalid diagrams retain
97
- their source instead of blocking publication. Code samples and raw HTML are
96
+ Mermaid renders in the browser using the website theme, with fit, original-size,
97
+ zoom, full-screen and source controls. Controls appear on hover or keyboard focus
98
+ (and remain visible on touch devices). Layout and source/copy actions are on the
99
+ left, sizing actions on the right. Source view replaces the diagram. Flowcharts default to ELK and can switch to Dagre without changing the article. Offline Review reports use the same
100
+ viewer and include its resources only when a candidate contains Mermaid.
101
+ Article provenance initially shows ten sources; Show more reveals the full list.
102
+ Invalid diagrams and diagrams with embedded image/HTML resources retain their
103
+ source with a rendering notice instead of blocking publication. Code samples and raw HTML are
98
104
  displayed as content, not executed as Vue components or scripts.
99
105
 
100
106
  The accepted `src/knowledge-map.yaml` controls sidebar organization. Entries
@@ -501,3 +507,31 @@ result instead of guessing a hostname. No new workspace configuration is needed.
501
507
  The address is an access hint, not proof of publication or content freshness.
502
508
  Query Skills use it only to append related links in the final summary, with no
503
509
  network probes or version checks. Packages without the map work as before.
510
+
511
+ ### Shared color theme
512
+
513
+ Website builds create `src/site/theme.json` with the current default light and
514
+ dark palettes if the file is missing. Edit this optional JSON file to customize
515
+ all websites and offline Review reports in the workspace. It is configuration,
516
+ not a generated HTML file: builds never overwrite existing values. Deleting it
517
+ restores built-in defaults; Review does not need the file or an existing website
518
+ build. The next website build recreates it.
519
+
520
+ Each `light`/`dark` object supports `brand`, `accent`, `background`, `surface`,
521
+ `text`, `mutedText`, and `border`. Values are hexadecimal CSS colors (`#RGB`,
522
+ `#RRGGBB`, or `#RRGGBBAA`). Partial objects inherit missing default colors. Invalid
523
+ JSON or colors produce a configuration error identifying the optional file.
524
+
525
+ A package may override these colors through `kbPackage({ site: { theme: {
526
+ light: { brand: "#6750a4" }, dark: { brand: "#d0bcff" }
527
+ } } })`. Precedence is built-in defaults, workspace file, then `site.theme`.
528
+ A Review with one website package uses that package's overrides. With multiple
529
+ website packages it uses the shared workspace theme, without selecting an
530
+ arbitrary package. New/Modify/approve/reject status colors remain independent.
531
+
532
+ The compiler projects tokens into VitePress and standalone Review CSS. Mermaid
533
+ reads the same resolved colors. Changes to the theme invalidate website build
534
+ receipts. Arbitrary extension CSS is not copied into Review; custom components
535
+ can consume `--context-brand`, `--context-accent`, `--context-background`,
536
+ `--context-surface`, `--context-text`, `--context-muted-text`, and
537
+ `--context-border` rather than hard-coding colors.
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { siteThemeSchema, DEFAULT_SITE_THEME, type SiteTheme, type SiteThemeColors } from "./siteTheme.js";
1
2
  import { type PackageSiteDefinition } from "./packageSite.js";
2
3
  export { packageSiteSchema, type PackageSiteDefinition } from "./packageSite.js";
3
4
  import type { PackageNavigationDefinition, PackageSelectDefinition } from "./contracts.js";
package/index.js CHANGED
@@ -10888,6 +10888,22 @@ var coerce = {
10888
10888
  date: (arg) => ZodDate.create({ ...arg, coerce: true })
10889
10889
  };
10890
10890
  var NEVER = INVALID;
10891
+ // src/siteTheme.ts
10892
+ var color = exports_external.string().regex(/^#(?:[\da-f]{3}|[\da-f]{6}|[\da-f]{8})$/iu, "Use a hexadecimal CSS color (#RGB, #RRGGBB or #RRGGBBAA)");
10893
+ var siteThemeColorsSchema = exports_external.object({
10894
+ brand: color.optional(),
10895
+ accent: color.optional(),
10896
+ background: color.optional(),
10897
+ surface: color.optional(),
10898
+ text: color.optional(),
10899
+ mutedText: color.optional(),
10900
+ border: color.optional()
10901
+ }).strict();
10902
+ var siteThemeSchema = exports_external.object({ light: siteThemeColorsSchema.optional(), dark: siteThemeColorsSchema.optional() }).strict();
10903
+ var DEFAULT_SITE_THEME = {
10904
+ light: { brand: "#2563eb", accent: "#00bec8", background: "#ffffff", surface: "#f8f9fc", text: "#161e2e", mutedText: "#646b7c", border: "#e7e9ef" },
10905
+ dark: { brand: "#8eb7ff", accent: "#b3cfff", background: "#171b24", surface: "#1b1d24", text: "#e2e4ed", mutedText: "#a1a6b7", border: "#303440" }
10906
+ };
10891
10907
  // src/packageSite.ts
10892
10908
  var siteHrefSchema = exports_external.string().trim().min(1).refine((value) => /^(?:https?:\/\/|mailto:|\/(?!\/)|#)/u.test(value), "Use an https URL, mailto URL, root-relative path, or page anchor");
10893
10909
  var packageSiteHomeActionSchema = exports_external.object({
@@ -10913,6 +10929,7 @@ var packageSiteHomeSchema = exports_external.object({
10913
10929
  resources: exports_external.array(packageSiteHomeResourceSchema).optional()
10914
10930
  }).strict();
10915
10931
  var packageSiteSchema = exports_external.object({
10932
+ theme: siteThemeSchema.optional(),
10916
10933
  title: exports_external.string().trim().min(1).optional(),
10917
10934
  description: exports_external.string().optional(),
10918
10935
  lang: exports_external.string().min(1).default("en-US"),
@@ -31425,6 +31442,12 @@ var captureFile = (definition) => {
31425
31442
  var captureLark = (definition) => {
31426
31443
  const sourceDefinition = bindSourceType(definition.source, "lark", "captureLark source");
31427
31444
  const sourceId = getSourceName(sourceDefinition);
31445
+ for (const key of ["images", "gifs"]) {
31446
+ const value = definition.resources?.[key];
31447
+ if (value !== undefined && value !== "bundle" && value !== "reference-only") {
31448
+ throw new TypeError(`captureLark resources.${key} must be bundle or reference-only`);
31449
+ }
31450
+ }
31428
31451
  const maxBytesPerResource = definition.resources?.maxBytesPerResource ?? 20 * 1024 * 1024;
31429
31452
  const maxTotalBytes = definition.resources?.maxTotalBytes ?? 200 * 1024 * 1024;
31430
31453
  if (!Number.isSafeInteger(maxBytesPerResource) || maxBytesPerResource < 1) {
@@ -31443,6 +31466,8 @@ var captureLark = (definition) => {
31443
31466
  writes: [sourceSnapshotResource(sourceDefinition, "lark")],
31444
31467
  source: sourceDefinition,
31445
31468
  resources: {
31469
+ ...definition.resources?.images === undefined ? {} : { images: definition.resources.images },
31470
+ ...definition.resources?.gifs === undefined ? {} : { gifs: definition.resources.gifs },
31446
31471
  videos: definition.resources?.videos ?? "reference-only",
31447
31472
  maxBytesPerResource,
31448
31473
  maxTotalBytes
@@ -32405,6 +32430,7 @@ export {
32405
32430
  startIndexerMainRun,
32406
32431
  sourceUpdateSemanticInputSchema,
32407
32432
  source,
32433
+ siteThemeSchema,
32408
32434
  sessionChangesSchema,
32409
32435
  sessionChangeSchema,
32410
32436
  sameIndexerParserExecutionPlan,
@@ -32979,6 +33005,7 @@ export {
32979
33005
  DOCUMENT_SECTION_CONTENT_MODES,
32980
33006
  DOCUMENT_EVIDENCE_SECTION_VALIDATION_STAGES,
32981
33007
  DOCUMENT_COMPILE_ACTION_SCHEMA_VERSION,
33008
+ DEFAULT_SITE_THEME,
32982
33009
  DEFAULT_REPO_SOURCES_REGISTRY_PATH,
32983
33010
  DEFAULT_PACKAGE_NAVIGATION,
32984
33011
  DEFAULT_LARK_SOURCES_REGISTRY_PATH,
@@ -10,11 +10,11 @@ export declare const indexerArtifactPolicyEligibilitySchema: z.ZodObject<{
10
10
  path: z.ZodString;
11
11
  value: z.ZodType<IndexerJson, z.ZodTypeDef, IndexerJson>;
12
12
  }, "strict", z.ZodTypeAny, {
13
- path: string;
14
13
  value: IndexerJson;
15
- }, {
16
14
  path: string;
15
+ }, {
17
16
  value: IndexerJson;
17
+ path: string;
18
18
  }>, "many">;
19
19
  provider_supported_variants: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
20
20
  eligible_variants: z.ZodArray<z.ZodObject<{
@@ -71,8 +71,8 @@ export declare const indexerArtifactPolicyEligibilitySchema: z.ZodObject<{
71
71
  profile_id: string;
72
72
  profile_contract_digest: string;
73
73
  canonical_facts: {
74
- path: string;
75
74
  value: IndexerJson;
75
+ path: string;
76
76
  }[];
77
77
  provider_supported_variants: string[];
78
78
  eligible_variants: {
@@ -94,8 +94,8 @@ export declare const indexerArtifactPolicyEligibilitySchema: z.ZodObject<{
94
94
  profile_id: string;
95
95
  profile_contract_digest: string;
96
96
  canonical_facts: {
97
- path: string;
98
97
  value: IndexerJson;
98
+ path: string;
99
99
  }[];
100
100
  provider_supported_variants: string[];
101
101
  eligible_variants: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c4a/context",
3
- "version": "0.7.14",
3
+ "version": "0.7.16",
4
4
  "type": "module",
5
5
  "description": "Declarative SDK for Context knowledge sources, workflows, review, and package outputs",
6
6
  "license": "MIT",
package/packageSite.d.ts CHANGED
@@ -1,6 +1,96 @@
1
1
  import { z } from "zod";
2
2
  /** Static website in a sibling dist/<name-without-trailing-kb>-site directory. */
3
3
  export declare const packageSiteSchema: z.ZodObject<{
4
+ theme: z.ZodOptional<z.ZodObject<{
5
+ light: z.ZodOptional<z.ZodObject<{
6
+ brand: z.ZodOptional<z.ZodString>;
7
+ accent: z.ZodOptional<z.ZodString>;
8
+ background: z.ZodOptional<z.ZodString>;
9
+ surface: z.ZodOptional<z.ZodString>;
10
+ text: z.ZodOptional<z.ZodString>;
11
+ mutedText: z.ZodOptional<z.ZodString>;
12
+ border: z.ZodOptional<z.ZodString>;
13
+ }, "strict", z.ZodTypeAny, {
14
+ brand?: string | undefined;
15
+ accent?: string | undefined;
16
+ background?: string | undefined;
17
+ surface?: string | undefined;
18
+ text?: string | undefined;
19
+ mutedText?: string | undefined;
20
+ border?: string | undefined;
21
+ }, {
22
+ brand?: string | undefined;
23
+ accent?: string | undefined;
24
+ background?: string | undefined;
25
+ surface?: string | undefined;
26
+ text?: string | undefined;
27
+ mutedText?: string | undefined;
28
+ border?: string | undefined;
29
+ }>>;
30
+ dark: z.ZodOptional<z.ZodObject<{
31
+ brand: z.ZodOptional<z.ZodString>;
32
+ accent: z.ZodOptional<z.ZodString>;
33
+ background: z.ZodOptional<z.ZodString>;
34
+ surface: z.ZodOptional<z.ZodString>;
35
+ text: z.ZodOptional<z.ZodString>;
36
+ mutedText: z.ZodOptional<z.ZodString>;
37
+ border: z.ZodOptional<z.ZodString>;
38
+ }, "strict", z.ZodTypeAny, {
39
+ brand?: string | undefined;
40
+ accent?: string | undefined;
41
+ background?: string | undefined;
42
+ surface?: string | undefined;
43
+ text?: string | undefined;
44
+ mutedText?: string | undefined;
45
+ border?: string | undefined;
46
+ }, {
47
+ brand?: string | undefined;
48
+ accent?: string | undefined;
49
+ background?: string | undefined;
50
+ surface?: string | undefined;
51
+ text?: string | undefined;
52
+ mutedText?: string | undefined;
53
+ border?: string | undefined;
54
+ }>>;
55
+ }, "strict", z.ZodTypeAny, {
56
+ light?: {
57
+ brand?: string | undefined;
58
+ accent?: string | undefined;
59
+ background?: string | undefined;
60
+ surface?: string | undefined;
61
+ text?: string | undefined;
62
+ mutedText?: string | undefined;
63
+ border?: string | undefined;
64
+ } | undefined;
65
+ dark?: {
66
+ brand?: string | undefined;
67
+ accent?: string | undefined;
68
+ background?: string | undefined;
69
+ surface?: string | undefined;
70
+ text?: string | undefined;
71
+ mutedText?: string | undefined;
72
+ border?: string | undefined;
73
+ } | undefined;
74
+ }, {
75
+ light?: {
76
+ brand?: string | undefined;
77
+ accent?: string | undefined;
78
+ background?: string | undefined;
79
+ surface?: string | undefined;
80
+ text?: string | undefined;
81
+ mutedText?: string | undefined;
82
+ border?: string | undefined;
83
+ } | undefined;
84
+ dark?: {
85
+ brand?: string | undefined;
86
+ accent?: string | undefined;
87
+ background?: string | undefined;
88
+ surface?: string | undefined;
89
+ text?: string | undefined;
90
+ mutedText?: string | undefined;
91
+ border?: string | undefined;
92
+ } | undefined;
93
+ }>>;
4
94
  title: z.ZodOptional<z.ZodString>;
5
95
  description: z.ZodOptional<z.ZodString>;
6
96
  lang: z.ZodDefault<z.ZodString>;
@@ -140,6 +230,26 @@ export declare const packageSiteSchema: z.ZodObject<{
140
230
  }, "strict", z.ZodTypeAny, {
141
231
  lang: string;
142
232
  base: string;
233
+ theme?: {
234
+ light?: {
235
+ brand?: string | undefined;
236
+ accent?: string | undefined;
237
+ background?: string | undefined;
238
+ surface?: string | undefined;
239
+ text?: string | undefined;
240
+ mutedText?: string | undefined;
241
+ border?: string | undefined;
242
+ } | undefined;
243
+ dark?: {
244
+ brand?: string | undefined;
245
+ accent?: string | undefined;
246
+ background?: string | undefined;
247
+ surface?: string | undefined;
248
+ text?: string | undefined;
249
+ mutedText?: string | undefined;
250
+ border?: string | undefined;
251
+ } | undefined;
252
+ } | undefined;
143
253
  title?: string | undefined;
144
254
  description?: string | undefined;
145
255
  home?: {
@@ -172,6 +282,26 @@ export declare const packageSiteSchema: z.ZodObject<{
172
282
  pages?: Record<string, string> | undefined;
173
283
  } | undefined;
174
284
  }, {
285
+ theme?: {
286
+ light?: {
287
+ brand?: string | undefined;
288
+ accent?: string | undefined;
289
+ background?: string | undefined;
290
+ surface?: string | undefined;
291
+ text?: string | undefined;
292
+ mutedText?: string | undefined;
293
+ border?: string | undefined;
294
+ } | undefined;
295
+ dark?: {
296
+ brand?: string | undefined;
297
+ accent?: string | undefined;
298
+ background?: string | undefined;
299
+ surface?: string | undefined;
300
+ text?: string | undefined;
301
+ mutedText?: string | undefined;
302
+ border?: string | undefined;
303
+ } | undefined;
304
+ } | undefined;
175
305
  title?: string | undefined;
176
306
  description?: string | undefined;
177
307
  lang?: string | undefined;
@@ -210,6 +340,26 @@ export type PackageSiteDefinition = z.input<typeof packageSiteSchema>;
210
340
  export declare function normalizePackageSite(value: PackageSiteDefinition | undefined): {
211
341
  lang: string;
212
342
  base: string;
343
+ theme?: {
344
+ light?: {
345
+ brand?: string | undefined;
346
+ accent?: string | undefined;
347
+ background?: string | undefined;
348
+ surface?: string | undefined;
349
+ text?: string | undefined;
350
+ mutedText?: string | undefined;
351
+ border?: string | undefined;
352
+ } | undefined;
353
+ dark?: {
354
+ brand?: string | undefined;
355
+ accent?: string | undefined;
356
+ background?: string | undefined;
357
+ surface?: string | undefined;
358
+ text?: string | undefined;
359
+ mutedText?: string | undefined;
360
+ border?: string | undefined;
361
+ } | undefined;
362
+ } | undefined;
213
363
  title?: string | undefined;
214
364
  description?: string | undefined;
215
365
  home?: {
package/phases.d.ts CHANGED
@@ -50,6 +50,8 @@ export type CaptureLarkPhaseDefinition = {
50
50
  writes: readonly PhaseResourceReference[];
51
51
  source: LarkSourceDefinition | LarkSourceReference;
52
52
  resources: {
53
+ images?: "reference-only" | "bundle";
54
+ gifs?: "reference-only" | "bundle";
53
55
  videos: "reference-only" | "bundle";
54
56
  maxBytesPerResource: number;
55
57
  maxTotalBytes: number;
@@ -76,6 +78,8 @@ export declare const captureFile: (definition: {
76
78
  export declare const captureLark: (definition: {
77
79
  source: LarkSourceDefinition | LarkSourceReference;
78
80
  resources?: {
81
+ images?: "reference-only" | "bundle";
82
+ gifs?: "reference-only" | "bundle";
79
83
  videos?: "reference-only" | "bundle";
80
84
  maxBytesPerResource?: number;
81
85
  maxTotalBytes?: number;
package/siteTheme.d.ts ADDED
@@ -0,0 +1,122 @@
1
+ import { z } from "zod";
2
+ export declare const siteThemeColorsSchema: z.ZodObject<{
3
+ brand: z.ZodOptional<z.ZodString>;
4
+ accent: z.ZodOptional<z.ZodString>;
5
+ background: z.ZodOptional<z.ZodString>;
6
+ surface: z.ZodOptional<z.ZodString>;
7
+ text: z.ZodOptional<z.ZodString>;
8
+ mutedText: z.ZodOptional<z.ZodString>;
9
+ border: z.ZodOptional<z.ZodString>;
10
+ }, "strict", z.ZodTypeAny, {
11
+ brand?: string | undefined;
12
+ accent?: string | undefined;
13
+ background?: string | undefined;
14
+ surface?: string | undefined;
15
+ text?: string | undefined;
16
+ mutedText?: string | undefined;
17
+ border?: string | undefined;
18
+ }, {
19
+ brand?: string | undefined;
20
+ accent?: string | undefined;
21
+ background?: string | undefined;
22
+ surface?: string | undefined;
23
+ text?: string | undefined;
24
+ mutedText?: string | undefined;
25
+ border?: string | undefined;
26
+ }>;
27
+ export declare const siteThemeSchema: z.ZodObject<{
28
+ light: z.ZodOptional<z.ZodObject<{
29
+ brand: z.ZodOptional<z.ZodString>;
30
+ accent: z.ZodOptional<z.ZodString>;
31
+ background: z.ZodOptional<z.ZodString>;
32
+ surface: z.ZodOptional<z.ZodString>;
33
+ text: z.ZodOptional<z.ZodString>;
34
+ mutedText: z.ZodOptional<z.ZodString>;
35
+ border: z.ZodOptional<z.ZodString>;
36
+ }, "strict", z.ZodTypeAny, {
37
+ brand?: string | undefined;
38
+ accent?: string | undefined;
39
+ background?: string | undefined;
40
+ surface?: string | undefined;
41
+ text?: string | undefined;
42
+ mutedText?: string | undefined;
43
+ border?: string | undefined;
44
+ }, {
45
+ brand?: string | undefined;
46
+ accent?: string | undefined;
47
+ background?: string | undefined;
48
+ surface?: string | undefined;
49
+ text?: string | undefined;
50
+ mutedText?: string | undefined;
51
+ border?: string | undefined;
52
+ }>>;
53
+ dark: z.ZodOptional<z.ZodObject<{
54
+ brand: z.ZodOptional<z.ZodString>;
55
+ accent: z.ZodOptional<z.ZodString>;
56
+ background: z.ZodOptional<z.ZodString>;
57
+ surface: z.ZodOptional<z.ZodString>;
58
+ text: z.ZodOptional<z.ZodString>;
59
+ mutedText: z.ZodOptional<z.ZodString>;
60
+ border: z.ZodOptional<z.ZodString>;
61
+ }, "strict", z.ZodTypeAny, {
62
+ brand?: string | undefined;
63
+ accent?: string | undefined;
64
+ background?: string | undefined;
65
+ surface?: string | undefined;
66
+ text?: string | undefined;
67
+ mutedText?: string | undefined;
68
+ border?: string | undefined;
69
+ }, {
70
+ brand?: string | undefined;
71
+ accent?: string | undefined;
72
+ background?: string | undefined;
73
+ surface?: string | undefined;
74
+ text?: string | undefined;
75
+ mutedText?: string | undefined;
76
+ border?: string | undefined;
77
+ }>>;
78
+ }, "strict", z.ZodTypeAny, {
79
+ light?: {
80
+ brand?: string | undefined;
81
+ accent?: string | undefined;
82
+ background?: string | undefined;
83
+ surface?: string | undefined;
84
+ text?: string | undefined;
85
+ mutedText?: string | undefined;
86
+ border?: string | undefined;
87
+ } | undefined;
88
+ dark?: {
89
+ brand?: string | undefined;
90
+ accent?: string | undefined;
91
+ background?: string | undefined;
92
+ surface?: string | undefined;
93
+ text?: string | undefined;
94
+ mutedText?: string | undefined;
95
+ border?: string | undefined;
96
+ } | undefined;
97
+ }, {
98
+ light?: {
99
+ brand?: string | undefined;
100
+ accent?: string | undefined;
101
+ background?: string | undefined;
102
+ surface?: string | undefined;
103
+ text?: string | undefined;
104
+ mutedText?: string | undefined;
105
+ border?: string | undefined;
106
+ } | undefined;
107
+ dark?: {
108
+ brand?: string | undefined;
109
+ accent?: string | undefined;
110
+ background?: string | undefined;
111
+ surface?: string | undefined;
112
+ text?: string | undefined;
113
+ mutedText?: string | undefined;
114
+ border?: string | undefined;
115
+ } | undefined;
116
+ }>;
117
+ export type SiteTheme = z.infer<typeof siteThemeSchema>;
118
+ export type SiteThemeColors = Required<z.infer<typeof siteThemeColorsSchema>>;
119
+ export declare const DEFAULT_SITE_THEME: {
120
+ light: SiteThemeColors;
121
+ dark: SiteThemeColors;
122
+ };