@baseplate-dev/project-builder-lib 0.3.8 → 0.4.1

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.
Files changed (90) hide show
  1. package/dist/compiler/model-transformer-compiler-spec.d.ts +1 -1
  2. package/dist/compiler/model-transformer-compiler-spec.d.ts.map +1 -1
  3. package/dist/definition/apps/app-utils.d.ts +4 -3
  4. package/dist/definition/apps/app-utils.d.ts.map +1 -1
  5. package/dist/definition/apps/app-utils.js +6 -6
  6. package/dist/definition/apps/app-utils.js.map +1 -1
  7. package/dist/definition/project-definition-container.test-utils.d.ts.map +1 -1
  8. package/dist/definition/project-definition-container.test-utils.js +10 -1
  9. package/dist/definition/project-definition-container.test-utils.js.map +1 -1
  10. package/dist/index.d.ts +0 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/migrations/index.d.ts.map +1 -1
  13. package/dist/migrations/index.js +2 -0
  14. package/dist/migrations/index.js.map +1 -1
  15. package/dist/migrations/migration-020-move-redis-to-infrastructure.d.ts +56 -0
  16. package/dist/migrations/migration-020-move-redis-to-infrastructure.d.ts.map +1 -0
  17. package/dist/migrations/migration-020-move-redis-to-infrastructure.js +44 -0
  18. package/dist/migrations/migration-020-move-redis-to-infrastructure.js.map +1 -0
  19. package/dist/parser/types.d.ts +21 -0
  20. package/dist/parser/types.d.ts.map +1 -1
  21. package/dist/schema/apps/backend/index.d.ts +0 -8
  22. package/dist/schema/apps/backend/index.d.ts.map +1 -1
  23. package/dist/schema/apps/backend/index.js +0 -1
  24. package/dist/schema/apps/backend/index.js.map +1 -1
  25. package/dist/schema/apps/base.d.ts +0 -4
  26. package/dist/schema/apps/base.d.ts.map +1 -1
  27. package/dist/schema/apps/base.js +0 -6
  28. package/dist/schema/apps/base.js.map +1 -1
  29. package/dist/schema/apps/web/web-app.d.ts +0 -4
  30. package/dist/schema/apps/web/web-app.d.ts.map +1 -1
  31. package/dist/schema/features/index.d.ts +0 -1
  32. package/dist/schema/features/index.d.ts.map +1 -1
  33. package/dist/schema/features/index.js +0 -1
  34. package/dist/schema/features/index.js.map +1 -1
  35. package/dist/schema/index.d.ts +1 -2
  36. package/dist/schema/index.d.ts.map +1 -1
  37. package/dist/schema/index.js +1 -2
  38. package/dist/schema/index.js.map +1 -1
  39. package/dist/schema/models/transformers/built-in-transformers.d.ts +2 -34
  40. package/dist/schema/models/transformers/built-in-transformers.d.ts.map +1 -1
  41. package/dist/schema/models/transformers/built-in-transformers.js +0 -13
  42. package/dist/schema/models/transformers/built-in-transformers.js.map +1 -1
  43. package/dist/schema/project-definition.d.ts +57 -37
  44. package/dist/schema/project-definition.d.ts.map +1 -1
  45. package/dist/schema/project-definition.js +1 -1
  46. package/dist/schema/project-definition.js.map +1 -1
  47. package/dist/schema/settings/general.d.ts +50 -0
  48. package/dist/schema/settings/general.d.ts.map +1 -0
  49. package/dist/schema/settings/general.js +42 -0
  50. package/dist/schema/settings/general.js.map +1 -0
  51. package/dist/schema/settings/index.d.ts +7 -0
  52. package/dist/schema/settings/index.d.ts.map +1 -0
  53. package/dist/schema/settings/index.js +7 -0
  54. package/dist/schema/settings/index.js.map +1 -0
  55. package/dist/schema/settings/infrastructure.d.ts +47 -0
  56. package/dist/schema/settings/infrastructure.d.ts.map +1 -0
  57. package/dist/schema/settings/infrastructure.js +29 -0
  58. package/dist/schema/settings/infrastructure.js.map +1 -0
  59. package/dist/schema/settings/monorepo.d.ts +33 -0
  60. package/dist/schema/settings/monorepo.d.ts.map +1 -0
  61. package/dist/schema/settings/monorepo.js +27 -0
  62. package/dist/schema/settings/monorepo.js.map +1 -0
  63. package/dist/schema/{settings.d.ts → settings/settings.d.ts} +76 -32
  64. package/dist/schema/settings/settings.d.ts.map +1 -0
  65. package/dist/schema/settings/settings.js +52 -0
  66. package/dist/schema/settings/settings.js.map +1 -0
  67. package/dist/schema/settings/template-extractor.d.ts +52 -0
  68. package/dist/schema/settings/template-extractor.d.ts.map +1 -0
  69. package/dist/schema/settings/template-extractor.js +42 -0
  70. package/dist/schema/settings/template-extractor.js.map +1 -0
  71. package/dist/schema/{features → settings}/theme.d.ts +118 -0
  72. package/dist/schema/settings/theme.d.ts.map +1 -0
  73. package/dist/schema/settings/theme.js +97 -0
  74. package/dist/schema/settings/theme.js.map +1 -0
  75. package/dist/utils/theme.d.ts +1 -1
  76. package/package.json +6 -6
  77. package/dist/schema/features/theme.d.ts.map +0 -1
  78. package/dist/schema/features/theme.js +0 -35
  79. package/dist/schema/features/theme.js.map +0 -1
  80. package/dist/schema/settings.d.ts.map +0 -1
  81. package/dist/schema/settings.js +0 -32
  82. package/dist/schema/settings.js.map +0 -1
  83. package/dist/schema/template-extractor/index.d.ts +0 -26
  84. package/dist/schema/template-extractor/index.d.ts.map +0 -1
  85. package/dist/schema/template-extractor/index.js +0 -19
  86. package/dist/schema/template-extractor/index.js.map +0 -1
  87. package/dist/types/files.d.ts +0 -8
  88. package/dist/types/files.d.ts.map +0 -1
  89. package/dist/types/files.js +0 -2
  90. package/dist/types/files.js.map +0 -1
@@ -1,41 +1,21 @@
1
1
  import { z } from 'zod';
2
- export declare const generalSettingsSchema: z.ZodObject<{
2
+ /**
3
+ * Complete project settings schema
4
+ *
5
+ * Combines all settings categories:
6
+ * - general: Project name, scope, and port configuration
7
+ * - infrastructure: Infrastructure services (Postgres, Redis)
8
+ * - monorepo: Monorepo folder configuration (optional)
9
+ * - templateExtractor: Template extraction configuration (optional)
10
+ * - theme: UI theme and color palette configuration (optional)
11
+ */
12
+ export declare const createSettingsSchema: (context: import("../index.js").DefinitionSchemaParserContext) => z.ZodObject<{
3
13
  /**
4
- * The name of the project.
14
+ * General project settings (required)
5
15
  */
6
- name: z.ZodString;
7
- /**
8
- * The package scope of the project if any e.g. halfdomelabs for @baseplate-dev/package-name.
9
- */
10
- packageScope: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"">, z.ZodString]>>;
11
- /**
12
- * The port offset to base the app ports on for development (e.g. 8000 => 8432 for DB).
13
- */
14
- portOffset: z.ZodEffects<z.ZodNumber, number, number>;
15
- }, "strip", z.ZodTypeAny, {
16
- name: string;
17
- packageScope: string;
18
- portOffset: number;
19
- }, {
20
- name: string;
21
- portOffset: number;
22
- packageScope?: string | undefined;
23
- }>;
24
- export type GeneralSettingsInput = z.input<typeof generalSettingsSchema>;
25
- export type GeneralSettingsDefinition = z.output<typeof generalSettingsSchema>;
26
- export declare const createSettingsSchema: (context: import("./index.js").DefinitionSchemaParserContext) => z.ZodObject<{
27
16
  general: z.ZodObject<{
28
- /**
29
- * The name of the project.
30
- */
31
17
  name: z.ZodString;
32
- /**
33
- * The package scope of the project if any e.g. halfdomelabs for @baseplate-dev/package-name.
34
- */
35
18
  packageScope: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"">, z.ZodString]>>;
36
- /**
37
- * The port offset to base the app ports on for development (e.g. 8000 => 8432 for DB).
38
- */
39
19
  portOffset: z.ZodEffects<z.ZodNumber, number, number>;
40
20
  }, "strip", z.ZodTypeAny, {
41
21
  name: string;
@@ -46,6 +26,48 @@ export declare const createSettingsSchema: (context: import("./index.js").Defini
46
26
  portOffset: number;
47
27
  packageScope?: string | undefined;
48
28
  }>;
29
+ /**
30
+ * Infrastructure settings (optional)
31
+ *
32
+ * Configures infrastructure services like Postgres and Redis.
33
+ * When omitted, uses default configuration (Postgres enabled, Redis disabled).
34
+ */
35
+ infrastructure: z.ZodOptional<z.ZodObject<{
36
+ redis: z.ZodOptional<z.ZodObject<{
37
+ enabled: z.ZodDefault<z.ZodBoolean>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ enabled: boolean;
40
+ }, {
41
+ enabled?: boolean | undefined;
42
+ }>>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ redis?: {
45
+ enabled: boolean;
46
+ } | undefined;
47
+ }, {
48
+ redis?: {
49
+ enabled?: boolean | undefined;
50
+ } | undefined;
51
+ }>>;
52
+ /**
53
+ * Monorepo configuration (optional)
54
+ *
55
+ * Configures the folder structure for monorepo packages.
56
+ * When omitted, uses default folder structure (apps/*).
57
+ */
58
+ monorepo: z.ZodOptional<z.ZodObject<{
59
+ appsFolder: z.ZodDefault<z.ZodString>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ appsFolder: string;
62
+ }, {
63
+ appsFolder?: string | undefined;
64
+ }>>;
65
+ /**
66
+ * Template extractor configuration (optional)
67
+ *
68
+ * Controls how template extraction works when syncing projects.
69
+ * Only needed when developing generators or extracting templates.
70
+ */
49
71
  templateExtractor: z.ZodOptional<z.ZodObject<{
50
72
  writeMetadata: z.ZodDefault<z.ZodBoolean>;
51
73
  fileIdRegexWhitelist: z.ZodDefault<z.ZodString>;
@@ -56,6 +78,12 @@ export declare const createSettingsSchema: (context: import("./index.js").Defini
56
78
  writeMetadata?: boolean | undefined;
57
79
  fileIdRegexWhitelist?: string | undefined;
58
80
  }>>;
81
+ /**
82
+ * Theme configuration (optional)
83
+ *
84
+ * Defines color palettes and semantic color mappings for the UI.
85
+ * When omitted, uses default theme configuration.
86
+ */
59
87
  theme: z.ZodOptional<z.ZodObject<{
60
88
  palettes: z.ZodObject<{
61
89
  base: z.ZodEffects<z.ZodObject<{
@@ -174,6 +202,14 @@ export declare const createSettingsSchema: (context: import("./index.js").Defini
174
202
  packageScope: string;
175
203
  portOffset: number;
176
204
  };
205
+ infrastructure?: {
206
+ redis?: {
207
+ enabled: boolean;
208
+ } | undefined;
209
+ } | undefined;
210
+ monorepo?: {
211
+ appsFolder: string;
212
+ } | undefined;
177
213
  templateExtractor?: {
178
214
  writeMetadata: boolean;
179
215
  fileIdRegexWhitelist: string;
@@ -202,6 +238,14 @@ export declare const createSettingsSchema: (context: import("./index.js").Defini
202
238
  portOffset: number;
203
239
  packageScope?: string | undefined;
204
240
  };
241
+ infrastructure?: {
242
+ redis?: {
243
+ enabled?: boolean | undefined;
244
+ } | undefined;
245
+ } | undefined;
246
+ monorepo?: {
247
+ appsFolder?: string | undefined;
248
+ } | undefined;
205
249
  templateExtractor?: {
206
250
  writeMetadata?: boolean | undefined;
207
251
  fileIdRegexWhitelist?: string | undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/schema/settings/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB;IAE7B;;OAEG;;;;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGN,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import { definitionSchema } from '#src/schema/creator/schema-creator.js';
3
+ import { generalSettingsSchema } from './general.js';
4
+ import { infrastructureSettingsSchema } from './infrastructure.js';
5
+ import { monorepoSettingsSchema } from './monorepo.js';
6
+ import { createTemplateExtractorSchema } from './template-extractor.js';
7
+ import { createThemeSchema } from './theme.js';
8
+ /**
9
+ * Complete project settings schema
10
+ *
11
+ * Combines all settings categories:
12
+ * - general: Project name, scope, and port configuration
13
+ * - infrastructure: Infrastructure services (Postgres, Redis)
14
+ * - monorepo: Monorepo folder configuration (optional)
15
+ * - templateExtractor: Template extraction configuration (optional)
16
+ * - theme: UI theme and color palette configuration (optional)
17
+ */
18
+ export const createSettingsSchema = definitionSchema((ctx) => z.object({
19
+ /**
20
+ * General project settings (required)
21
+ */
22
+ general: generalSettingsSchema,
23
+ /**
24
+ * Infrastructure settings (optional)
25
+ *
26
+ * Configures infrastructure services like Postgres and Redis.
27
+ * When omitted, uses default configuration (Postgres enabled, Redis disabled).
28
+ */
29
+ infrastructure: infrastructureSettingsSchema.optional(),
30
+ /**
31
+ * Monorepo configuration (optional)
32
+ *
33
+ * Configures the folder structure for monorepo packages.
34
+ * When omitted, uses default folder structure (apps/*).
35
+ */
36
+ monorepo: monorepoSettingsSchema.optional(),
37
+ /**
38
+ * Template extractor configuration (optional)
39
+ *
40
+ * Controls how template extraction works when syncing projects.
41
+ * Only needed when developing generators or extracting templates.
42
+ */
43
+ templateExtractor: createTemplateExtractorSchema(ctx).optional(),
44
+ /**
45
+ * Theme configuration (optional)
46
+ *
47
+ * Defines color palettes and semantic color mappings for the UI.
48
+ * When omitted, uses default theme configuration.
49
+ */
50
+ theme: createThemeSchema(ctx).optional(),
51
+ }));
52
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/schema/settings/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3D,CAAC,CAAC,MAAM,CAAC;IACP;;OAEG;IACH,OAAO,EAAE,qBAAqB;IAE9B;;;;;OAKG;IACH,cAAc,EAAE,4BAA4B,CAAC,QAAQ,EAAE;IAEvD;;;;;OAKG;IACH,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAE3C;;;;;OAKG;IACH,iBAAiB,EAAE,6BAA6B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAEhE;;;;;OAKG;IACH,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CACH,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import type { def } from '../creator/index.js';
3
+ /**
4
+ * Template extractor configuration schema
5
+ *
6
+ * Controls how template extraction works when syncing projects.
7
+ * Template extraction allows updating generator templates from working code.
8
+ */
9
+ export declare const createTemplateExtractorSchema: (context: import("../creator/types.js").DefinitionSchemaParserContext) => z.ZodObject<{
10
+ /**
11
+ * Whether to write template extractor metadata when writing files to the project.
12
+ *
13
+ * When enabled, Baseplate will write `.templates-info.json` files that track
14
+ * which generated files correspond to which templates. This metadata enables
15
+ * the template extraction process to update the generator's templates from
16
+ * your working code.
17
+ *
18
+ * Useful for: Generator development, template refinement, extracting patterns
19
+ * Default: false
20
+ */
21
+ writeMetadata: z.ZodDefault<z.ZodBoolean>;
22
+ /**
23
+ * A list of file IDs to include in the template extractor metadata.
24
+ *
25
+ * Used for generators that have manually assigned file IDs, particularly
26
+ * generators with multiple instances (e.g. one generator per model).
27
+ *
28
+ * Format: Newline-delimited list of patterns
29
+ * Supports wildcards: Use * to match any number of characters
30
+ *
31
+ * Example:
32
+ * ```
33
+ * user-*
34
+ * post-*
35
+ * comment-service-*
36
+ * ```
37
+ *
38
+ * Default: empty string (no file ID whitelist)
39
+ */
40
+ fileIdRegexWhitelist: z.ZodDefault<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ writeMetadata: boolean;
43
+ fileIdRegexWhitelist: string;
44
+ }, {
45
+ writeMetadata?: boolean | undefined;
46
+ fileIdRegexWhitelist?: string | undefined;
47
+ }>;
48
+ /**
49
+ * Template extractor configuration type (output after validation)
50
+ */
51
+ export type TemplateExtractorDefinition = def.InferOutput<typeof createTemplateExtractorSchema>;
52
+ //# sourceMappingURL=template-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-extractor.d.ts","sourceRoot":"","sources":["../../../src/schema/settings/template-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B;IAEtC;;;;;;;;;;OAUG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;;;;;;;EAGN,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,GAAG,CAAC,WAAW,CACvD,OAAO,6BAA6B,CACrC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ import { definitionSchema } from '#src/schema/creator/schema-creator.js';
3
+ /**
4
+ * Template extractor configuration schema
5
+ *
6
+ * Controls how template extraction works when syncing projects.
7
+ * Template extraction allows updating generator templates from working code.
8
+ */
9
+ export const createTemplateExtractorSchema = definitionSchema(() => z.object({
10
+ /**
11
+ * Whether to write template extractor metadata when writing files to the project.
12
+ *
13
+ * When enabled, Baseplate will write `.templates-info.json` files that track
14
+ * which generated files correspond to which templates. This metadata enables
15
+ * the template extraction process to update the generator's templates from
16
+ * your working code.
17
+ *
18
+ * Useful for: Generator development, template refinement, extracting patterns
19
+ * Default: false
20
+ */
21
+ writeMetadata: z.boolean().default(false),
22
+ /**
23
+ * A list of file IDs to include in the template extractor metadata.
24
+ *
25
+ * Used for generators that have manually assigned file IDs, particularly
26
+ * generators with multiple instances (e.g. one generator per model).
27
+ *
28
+ * Format: Newline-delimited list of patterns
29
+ * Supports wildcards: Use * to match any number of characters
30
+ *
31
+ * Example:
32
+ * ```
33
+ * user-*
34
+ * post-*
35
+ * comment-service-*
36
+ * ```
37
+ *
38
+ * Default: empty string (no file ID whitelist)
39
+ */
40
+ fileIdRegexWhitelist: z.string().default(''),
41
+ }));
42
+ //# sourceMappingURL=template-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-extractor.js","sourceRoot":"","sources":["../../../src/schema/settings/template-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAIzE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,gBAAgB,CAAC,GAAG,EAAE,CACjE,CAAC,CAAC,MAAM,CAAC;IACP;;;;;;;;;;OAUG;IACH,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAEzC;;;;;;;;;;;;;;;;;OAiBG;IACH,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7C,CAAC,CACH,CAAC"}
@@ -1,13 +1,53 @@
1
1
  import { z } from 'zod';
2
2
  import type { PaletteShade } from '#src/constants/colors.js';
3
3
  import type { def } from '#src/schema/creator/index.js';
4
+ /**
5
+ * OKLCH color format validator
6
+ *
7
+ * OKLCH is a perceptually uniform color space that provides better color manipulation than RGB/HEX.
8
+ * Format: oklch(l c h [/ a]) where:
9
+ * - l (lightness): 0-1
10
+ * - c (chroma): 0-1
11
+ * - h (hue): 0-360
12
+ * - a (alpha, optional): 0-100
13
+ *
14
+ * Example: "oklch(0.5 0.2 180)" or "oklch(0.5 0.2 180 / 50)"
15
+ */
4
16
  export declare const oklchColor: z.ZodString;
17
+ /**
18
+ * Theme color configuration
19
+ *
20
+ * Maps semantic color keys (e.g. "background", "foreground", "primary") to OKLCH color values.
21
+ */
5
22
  export declare const themeColorSchema: z.ZodRecord<z.ZodEnum<["link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring", ...("link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring")[]]>, z.ZodString>;
23
+ /**
24
+ * Theme colors configuration type
25
+ */
6
26
  export type ThemeColorsConfig = z.infer<typeof themeColorSchema>;
27
+ /**
28
+ * Palette shades type - maps shade names to OKLCH colors
29
+ */
7
30
  export type PaletteShades = Record<PaletteShade, string>;
31
+ /**
32
+ * Palette configuration schema
33
+ *
34
+ * Defines a color palette with a base color and generated shades.
35
+ * Palettes can use predefined bases (zinc, slate, etc.) or a custom base color.
36
+ */
8
37
  export declare const paletteSchema: z.ZodEffects<z.ZodObject<{
38
+ /**
39
+ * Name of the palette base (e.g. "zinc", "slate") or "custom" for custom base color
40
+ */
9
41
  paletteName: z.ZodString;
42
+ /**
43
+ * Custom base color in OKLCH format.
44
+ * Required when paletteName is "custom", ignored otherwise.
45
+ */
10
46
  customBase: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
+ /**
48
+ * Generated color shades (50, 100, 200, ..., 950)
49
+ * Automatically computed from the base color
50
+ */
11
51
  shades: z.ZodRecord<z.ZodEnum<["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"]>, z.ZodString>;
12
52
  }, "strip", z.ZodTypeAny, {
13
53
  paletteName: string;
@@ -26,10 +66,29 @@ export declare const paletteSchema: z.ZodEffects<z.ZodObject<{
26
66
  shades: Partial<Record<"50" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | "950", string>>;
27
67
  customBase?: string | null | undefined;
28
68
  }>;
69
+ /**
70
+ * Palettes configuration schema
71
+ *
72
+ * Defines base (neutral colors) and primary (brand colors) palettes
73
+ */
29
74
  export declare const palettesSchema: z.ZodObject<{
75
+ /**
76
+ * Base palette used for neutral colors (backgrounds, borders, text)
77
+ */
30
78
  base: z.ZodEffects<z.ZodObject<{
79
+ /**
80
+ * Name of the palette base (e.g. "zinc", "slate") or "custom" for custom base color
81
+ */
31
82
  paletteName: z.ZodString;
83
+ /**
84
+ * Custom base color in OKLCH format.
85
+ * Required when paletteName is "custom", ignored otherwise.
86
+ */
32
87
  customBase: z.ZodOptional<z.ZodNullable<z.ZodString>>;
88
+ /**
89
+ * Generated color shades (50, 100, 200, ..., 950)
90
+ * Automatically computed from the base color
91
+ */
33
92
  shades: z.ZodRecord<z.ZodEnum<["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"]>, z.ZodString>;
34
93
  }, "strip", z.ZodTypeAny, {
35
94
  paletteName: string;
@@ -48,9 +107,23 @@ export declare const palettesSchema: z.ZodObject<{
48
107
  shades: Partial<Record<"50" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | "950", string>>;
49
108
  customBase?: string | null | undefined;
50
109
  }>;
110
+ /**
111
+ * Primary palette used for brand colors (buttons, links, highlights)
112
+ */
51
113
  primary: z.ZodEffects<z.ZodObject<{
114
+ /**
115
+ * Name of the palette base (e.g. "zinc", "slate") or "custom" for custom base color
116
+ */
52
117
  paletteName: z.ZodString;
118
+ /**
119
+ * Custom base color in OKLCH format.
120
+ * Required when paletteName is "custom", ignored otherwise.
121
+ */
53
122
  customBase: z.ZodOptional<z.ZodNullable<z.ZodString>>;
123
+ /**
124
+ * Generated color shades (50, 100, 200, ..., 950)
125
+ * Automatically computed from the base color
126
+ */
54
127
  shades: z.ZodRecord<z.ZodEnum<["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"]>, z.ZodString>;
55
128
  }, "strip", z.ZodTypeAny, {
56
129
  paletteName: string;
@@ -92,12 +165,34 @@ export declare const palettesSchema: z.ZodObject<{
92
165
  customBase?: string | null | undefined;
93
166
  };
94
167
  }>;
168
+ /**
169
+ * Palettes configuration type
170
+ */
95
171
  export type PalettesConfig = z.infer<typeof palettesSchema>;
172
+ /**
173
+ * Theme configuration schema
174
+ *
175
+ * Defines the complete theme including palettes and semantic color mappings for light and dark modes.
176
+ */
96
177
  export declare const createThemeSchema: (context: import("#src/schema/creator/index.js").DefinitionSchemaParserContext) => z.ZodObject<{
178
+ /**
179
+ * Color palettes for base and primary colors
180
+ */
97
181
  palettes: z.ZodObject<{
98
182
  base: z.ZodEffects<z.ZodObject<{
183
+ /**
184
+ * Name of the palette base (e.g. "zinc", "slate") or "custom" for custom base color
185
+ */
99
186
  paletteName: z.ZodString;
187
+ /**
188
+ * Custom base color in OKLCH format.
189
+ * Required when paletteName is "custom", ignored otherwise.
190
+ */
100
191
  customBase: z.ZodOptional<z.ZodNullable<z.ZodString>>;
192
+ /**
193
+ * Generated color shades (50, 100, 200, ..., 950)
194
+ * Automatically computed from the base color
195
+ */
101
196
  shades: z.ZodRecord<z.ZodEnum<["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"]>, z.ZodString>;
102
197
  }, "strip", z.ZodTypeAny, {
103
198
  paletteName: string;
@@ -117,8 +212,19 @@ export declare const createThemeSchema: (context: import("#src/schema/creator/in
117
212
  customBase?: string | null | undefined;
118
213
  }>;
119
214
  primary: z.ZodEffects<z.ZodObject<{
215
+ /**
216
+ * Name of the palette base (e.g. "zinc", "slate") or "custom" for custom base color
217
+ */
120
218
  paletteName: z.ZodString;
219
+ /**
220
+ * Custom base color in OKLCH format.
221
+ * Required when paletteName is "custom", ignored otherwise.
222
+ */
121
223
  customBase: z.ZodOptional<z.ZodNullable<z.ZodString>>;
224
+ /**
225
+ * Generated color shades (50, 100, 200, ..., 950)
226
+ * Automatically computed from the base color
227
+ */
122
228
  shades: z.ZodRecord<z.ZodEnum<["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"]>, z.ZodString>;
123
229
  }, "strip", z.ZodTypeAny, {
124
230
  paletteName: string;
@@ -160,8 +266,17 @@ export declare const createThemeSchema: (context: import("#src/schema/creator/in
160
266
  customBase?: string | null | undefined;
161
267
  };
162
268
  }>;
269
+ /**
270
+ * Semantic color mappings for light and dark modes
271
+ */
163
272
  colors: z.ZodObject<{
273
+ /**
274
+ * Light mode color mappings
275
+ */
164
276
  light: z.ZodRecord<z.ZodEnum<["link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring", ...("link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring")[]]>, z.ZodString>;
277
+ /**
278
+ * Dark mode color mappings
279
+ */
165
280
  dark: z.ZodRecord<z.ZodEnum<["link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring", ...("link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring")[]]>, z.ZodString>;
166
281
  }, "strip", z.ZodTypeAny, {
167
282
  light: Partial<Record<"link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring", string>>;
@@ -205,5 +320,8 @@ export declare const createThemeSchema: (context: import("#src/schema/creator/in
205
320
  dark: Partial<Record<"link" | "success" | "background" | "foreground" | "muted" | "mutedForeground" | "card" | "cardForeground" | "popover" | "popoverForeground" | "accent" | "accentForeground" | "successForeground" | "warning" | "warningForeground" | "error" | "errorForeground" | "primary" | "primaryHover" | "primaryForeground" | "secondary" | "secondaryHover" | "secondaryForeground" | "destructive" | "destructiveHover" | "destructiveForeground" | "linkVisited" | "border" | "input" | "ring", string>>;
206
321
  };
207
322
  }>;
323
+ /**
324
+ * Theme configuration type (output after validation)
325
+ */
208
326
  export type ThemeConfig = def.InferOutput<typeof createThemeSchema>;
209
327
  //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/schema/settings/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAMxD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,aAQpB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,w+BAG5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,aAAa;IAEtB;;OAEG;;IAGH;;;OAGG;;IAGH;;;OAGG;;;;;;;;;;;;;;;;;;EAMH,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;;QA9BD;;WAEG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;;;;;;;;;;;;;;;;;IAmBL;;OAEG;;QAnCD;;WAEG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBL,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAE1B;;OAEG;;;YArDH;;eAEG;;YAGH;;;eAGG;;YAGH;;;eAGG;;;;;;;;;;;;;;;;;;;;YAdH;;eAEG;;YAGH;;;eAGG;;YAGH;;;eAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6CH;;OAEG;;QAED;;WAEG;;QAGH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIR,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod';
2
+ import { PALETTE_SHADES } from '#src/constants/colors.js';
3
+ import { THEME_COLOR_KEYS } from '#src/constants/theme-colors.js';
4
+ import { definitionSchema } from '#src/schema/creator/schema-creator.js';
5
+ /**
6
+ * OKLCH color format validator
7
+ *
8
+ * OKLCH is a perceptually uniform color space that provides better color manipulation than RGB/HEX.
9
+ * Format: oklch(l c h [/ a]) where:
10
+ * - l (lightness): 0-1
11
+ * - c (chroma): 0-1
12
+ * - h (hue): 0-360
13
+ * - a (alpha, optional): 0-100
14
+ *
15
+ * Example: "oklch(0.5 0.2 180)" or "oklch(0.5 0.2 180 / 50)"
16
+ */
17
+ export const oklchColor = z
18
+ .string()
19
+ .regex(/^oklch\(\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+))?\s*\)$/, {
20
+ message: 'OKLCH color must be of the format "oklch(l c h [/ a])" where l and c are between 0 and 1 and h is between 0 and 360 and a is between 0 and 100',
21
+ });
22
+ /**
23
+ * Theme color configuration
24
+ *
25
+ * Maps semantic color keys (e.g. "background", "foreground", "primary") to OKLCH color values.
26
+ */
27
+ export const themeColorSchema = z.record(z.enum(THEME_COLOR_KEYS), oklchColor);
28
+ /**
29
+ * Palette configuration schema
30
+ *
31
+ * Defines a color palette with a base color and generated shades.
32
+ * Palettes can use predefined bases (zinc, slate, etc.) or a custom base color.
33
+ */
34
+ export const paletteSchema = z
35
+ .object({
36
+ /**
37
+ * Name of the palette base (e.g. "zinc", "slate") or "custom" for custom base color
38
+ */
39
+ paletteName: z.string().min(1),
40
+ /**
41
+ * Custom base color in OKLCH format.
42
+ * Required when paletteName is "custom", ignored otherwise.
43
+ */
44
+ customBase: oklchColor.nullish(),
45
+ /**
46
+ * Generated color shades (50, 100, 200, ..., 950)
47
+ * Automatically computed from the base color
48
+ */
49
+ shades: z.record(z.enum(PALETTE_SHADES), oklchColor),
50
+ })
51
+ .refine((data) => data.paletteName !== 'custom' || !!data.customBase, {
52
+ message: 'A custom base color is required if using a custom base palette',
53
+ path: ['customBase'],
54
+ });
55
+ /**
56
+ * Palettes configuration schema
57
+ *
58
+ * Defines base (neutral colors) and primary (brand colors) palettes
59
+ */
60
+ export const palettesSchema = z.object({
61
+ /**
62
+ * Base palette used for neutral colors (backgrounds, borders, text)
63
+ */
64
+ base: paletteSchema,
65
+ /**
66
+ * Primary palette used for brand colors (buttons, links, highlights)
67
+ */
68
+ primary: paletteSchema,
69
+ });
70
+ /**
71
+ * Theme configuration schema
72
+ *
73
+ * Defines the complete theme including palettes and semantic color mappings for light and dark modes.
74
+ */
75
+ export const createThemeSchema = definitionSchema(() => z.object({
76
+ /**
77
+ * Color palettes for base and primary colors
78
+ */
79
+ palettes: z.object({
80
+ base: paletteSchema,
81
+ primary: paletteSchema,
82
+ }),
83
+ /**
84
+ * Semantic color mappings for light and dark modes
85
+ */
86
+ colors: z.object({
87
+ /**
88
+ * Light mode color mappings
89
+ */
90
+ light: themeColorSchema,
91
+ /**
92
+ * Dark mode color mappings
93
+ */
94
+ dark: themeColorSchema,
95
+ }),
96
+ }));
97
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/schema/settings/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,KAAK,CACJ,sEAAsE,EACtE;IACE,OAAO,EACL,gJAAgJ;CACnJ,CACF,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CACtC,CAAC,CAAC,IAAI,CAAC,gBAAuD,CAAC,EAC/D,UAAU,CACX,CAAC;AAYF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE;IAEhC;;;OAGG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;CACrD,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;IACpE,OAAO,EAAE,gEAAgE;IACzE,IAAI,EAAE,CAAC,YAAY,CAAC;CACrB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC;;OAEG;IACH,IAAI,EAAE,aAAa;IAEnB;;OAEG;IACH,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,GAAG,EAAE,CACrD,CAAC,CAAC,MAAM,CAAC;IACP;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,aAAa;KACvB,CAAC;IAEF;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf;;WAEG;QACH,KAAK,EAAE,gBAAgB;QAEvB;;WAEG;QACH,IAAI,EAAE,gBAAgB;KACvB,CAAC;CACH,CAAC,CACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ThemeColorKey } from '#src/constants/theme-colors.js';
2
- import type { PalettesConfig, ThemeColorsConfig, ThemeConfig } from '#src/schema/features/theme.js';
2
+ import type { PalettesConfig, ThemeColorsConfig, ThemeConfig } from '#src/schema/settings/theme.js';
3
3
  export declare function getDefaultThemeColorFromShade(palettes: PalettesConfig, mode: 'light' | 'dark', themeColorKey: ThemeColorKey): string | undefined;
4
4
  export declare function generateThemeColorsFromShade(palettes: PalettesConfig, mode: 'light' | 'dark', previousValues?: {
5
5
  palettes: PalettesConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baseplate-dev/project-builder-lib",
3
- "version": "0.3.8",
3
+ "version": "0.4.1",
4
4
  "description": "Library for Project Builder using Baseplate generators",
5
5
  "keywords": [
6
6
  "configuration",
@@ -47,9 +47,9 @@
47
47
  "react-hook-form": "7.60.0",
48
48
  "zod": "3.25.76",
49
49
  "zustand": "5.0.3",
50
- "@baseplate-dev/sync": "0.3.8",
51
- "@baseplate-dev/ui-components": "0.3.8",
52
- "@baseplate-dev/utils": "0.3.8"
50
+ "@baseplate-dev/sync": "0.4.1",
51
+ "@baseplate-dev/ui-components": "0.4.1",
52
+ "@baseplate-dev/utils": "0.4.1"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@faker-js/faker": "9.8.0",
@@ -61,9 +61,9 @@
61
61
  "prettier": "3.6.2",
62
62
  "type-fest": "4.41.0",
63
63
  "typescript": "5.8.3",
64
- "vite": "7.1.5",
64
+ "vite": "7.1.12",
65
65
  "vitest": "3.2.4",
66
- "@baseplate-dev/tools": "0.3.8"
66
+ "@baseplate-dev/tools": "0.4.1"
67
67
  },
68
68
  "engines": {
69
69
  "node": "^22.0.0"
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/schema/features/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAMxD,eAAO,MAAM,UAAU,aAQpB,CAAC;AAEJ,eAAO,MAAM,gBAAgB,w+BAG5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEjE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;EAStB,CAAC;AAEL,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC"}