@homepages/template-kit 0.0.1 → 0.2.0

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 (121) hide show
  1. package/CHANGELOG.md +251 -0
  2. package/README.md +77 -11
  3. package/dist/base.css +64 -0
  4. package/dist/browser.d.ts +26 -0
  5. package/dist/browser.js +55 -0
  6. package/dist/cli.js +1 -1
  7. package/dist/contracts/image-descriptor.d.ts +17 -0
  8. package/dist/contracts/markers.d.ts +20 -0
  9. package/dist/contracts/markers.js +21 -0
  10. package/dist/contracts/slot-catalog.d.ts +237 -0
  11. package/dist/contracts/slot-catalog.js +247 -0
  12. package/dist/contracts/transforms.d.ts +108 -0
  13. package/dist/contracts/transforms.js +117 -0
  14. package/dist/design-system/breakpoints.d.ts +5 -0
  15. package/dist/design-system/breakpoints.js +14 -0
  16. package/dist/design-system/theme.d.ts +308 -0
  17. package/dist/design-system/theme.js +102 -0
  18. package/dist/eslint/is-client-file.js +79 -0
  19. package/dist/eslint/rules/image-bare-needs-reason.js +43 -0
  20. package/dist/eslint/rules/no-client-directive-in-contract.js +31 -0
  21. package/dist/eslint/rules/no-client-runtime-in-server.js +103 -0
  22. package/dist/eslint/rules/no-css-import-from-render-path.js +29 -0
  23. package/dist/eslint/rules/no-hex.js +116 -0
  24. package/dist/eslint/rules/no-inline-style.js +27 -0
  25. package/dist/eslint/rules/no-nondeterminism.js +48 -0
  26. package/dist/eslint/rules/no-raw-element.js +37 -0
  27. package/dist/eslint/rules/props-from-schema.js +37 -0
  28. package/dist/eslint/rules/serializable-island-props.js +112 -0
  29. package/dist/eslint/rules/slot-marker-literal.js +38 -0
  30. package/dist/eslint.d.ts +4 -8
  31. package/dist/eslint.js +75 -11
  32. package/dist/fixtures/sample-property.d.ts +67 -0
  33. package/dist/fixtures/sample-property.js +707 -0
  34. package/dist/fixtures.d.ts +2 -0
  35. package/dist/fixtures.js +3 -0
  36. package/dist/index.d.ts +28 -12
  37. package/dist/index.js +34 -2
  38. package/dist/island-runtime.d.ts +30 -0
  39. package/dist/island-runtime.js +73 -0
  40. package/dist/islands/contract.d.ts +56 -0
  41. package/dist/islands/contract.js +71 -0
  42. package/dist/islands/marker.d.ts +16 -0
  43. package/dist/islands/marker.js +18 -0
  44. package/dist/package.js +5 -0
  45. package/dist/primitives/Image.d.ts +49 -0
  46. package/dist/primitives/Image.js +95 -0
  47. package/dist/primitives/Section.d.ts +22 -0
  48. package/dist/primitives/Section.js +26 -0
  49. package/dist/primitives/Slot.d.ts +50 -0
  50. package/dist/primitives/Slot.js +39 -0
  51. package/dist/primitives/SlotGroup.d.ts +38 -0
  52. package/dist/primitives/SlotGroup.js +24 -0
  53. package/dist/primitives/SlotItem.d.ts +43 -0
  54. package/dist/primitives/SlotItem.js +38 -0
  55. package/dist/primitives/index.d.ts +7 -0
  56. package/dist/primitives/picture-sources.d.ts +22 -0
  57. package/dist/primitives/picture-sources.js +52 -0
  58. package/dist/rules/registry.js +16 -0
  59. package/dist/schema/fill-spec.d.ts +692 -0
  60. package/dist/schema/fill-spec.js +98 -0
  61. package/dist/schema/fixture-schema.d.ts +143 -0
  62. package/dist/schema/fixture-schema.js +113 -0
  63. package/dist/schema/index.d.ts +16 -0
  64. package/dist/schema/manifest.d.ts +527 -0
  65. package/dist/schema/manifest.js +73 -0
  66. package/dist/schema/property-facts.d.ts +44 -0
  67. package/dist/schema/resolve-variants.d.ts +11 -0
  68. package/dist/schema/resolve-variants.js +15 -0
  69. package/dist/schema/runtime-values.d.ts +45 -0
  70. package/dist/schema/section-nav.d.ts +7 -0
  71. package/dist/schema/section-props.d.ts +69 -0
  72. package/dist/schema/section-schema.d.ts +533 -0
  73. package/dist/schema/section-schema.js +72 -0
  74. package/dist/schema/slot-types.d.ts +117 -0
  75. package/dist/schema/slot-types.js +181 -0
  76. package/dist/schema/source.d.ts +13 -0
  77. package/dist/schema/source.js +12 -0
  78. package/dist/schema/synthesize-nullable.d.ts +18 -0
  79. package/dist/schema/synthesize-nullable.js +47 -0
  80. package/dist/styles.css +131 -9
  81. package/docs/INDEX.md +7 -4
  82. package/docs/eslint.md +55 -0
  83. package/docs/islands.md +150 -0
  84. package/docs/llms.txt +33 -3
  85. package/docs/primitives.md +214 -0
  86. package/docs/rules/INDEX.md +58 -0
  87. package/docs/rules/audit-severity.md +91 -0
  88. package/docs/rules/bundle-incomplete.md +117 -0
  89. package/docs/rules/css-reason.md +94 -0
  90. package/docs/rules/determinism-drift.md +112 -0
  91. package/docs/rules/image-bare-needs-reason.md +117 -0
  92. package/docs/rules/license-denied.md +106 -0
  93. package/docs/rules/lockfile-missing.md +68 -0
  94. package/docs/rules/lockfile-stale.md +88 -0
  95. package/docs/rules/missing-slot-marker.md +140 -0
  96. package/docs/rules/no-bare-css-import.md +128 -0
  97. package/docs/rules/no-client-directive-in-contract.md +111 -0
  98. package/docs/rules/no-client-runtime-in-server.md +143 -0
  99. package/docs/rules/no-css-import-from-render-path.md +118 -0
  100. package/docs/rules/no-hex.md +97 -0
  101. package/docs/rules/no-inline-style.md +121 -0
  102. package/docs/rules/no-nondeterminism.md +100 -0
  103. package/docs/rules/no-raw-element.md +100 -0
  104. package/docs/rules/props-from-schema.md +119 -0
  105. package/docs/rules/render-invariant.md +165 -0
  106. package/docs/rules/serializable-island-props.md +146 -0
  107. package/docs/rules/server-vs-client.md +105 -0
  108. package/docs/rules/sidebar-order.md +109 -0
  109. package/docs/rules/single-react.md +97 -0
  110. package/docs/rules/size-renderer-bundle.md +109 -0
  111. package/docs/rules/size-section-css.md +95 -0
  112. package/docs/rules/slot-group-marker.md +127 -0
  113. package/docs/rules/slot-marker-literal.md +148 -0
  114. package/docs/rules/typecheck.md +103 -0
  115. package/docs/rules/unlayered-fence.md +113 -0
  116. package/docs/schema-system.md +240 -0
  117. package/docs/theme-and-css.md +225 -0
  118. package/package.json +30 -6
  119. package/tsconfig.base.json +16 -0
  120. package/tsconfig.json +2 -13
  121. package/dist/src-dZr5N30y.js +0 -35
@@ -0,0 +1,45 @@
1
+ import { ResponsiveImage } from "../contracts/image-descriptor.js";
2
+ import { Coordinates, FloorplanAssignment, PropertyFacts, UnitRow } from "./property-facts.js";
3
+ import { VerificationWidth } from "../design-system/breakpoints.js";
4
+ //#region src/schema/runtime-values.d.ts
5
+ type FrameConfig = {
6
+ breakpoint: VerificationWidth;
7
+ desktop: {
8
+ aspect: number;
9
+ nominal?: boolean;
10
+ };
11
+ mobile?: {
12
+ aspect: number;
13
+ nominal?: boolean;
14
+ };
15
+ };
16
+ type ImageValue = {
17
+ photo_id: string;
18
+ url: string;
19
+ alt: string;
20
+ rect?: {
21
+ nx: number;
22
+ ny: number;
23
+ nw: number;
24
+ nh: number;
25
+ } | null;
26
+ ar?: number | null;
27
+ crop_key?: string;
28
+ mobile?: {
29
+ url: string;
30
+ responsive?: ResponsiveImage | null;
31
+ } | null;
32
+ responsive?: ResponsiveImage | null;
33
+ };
34
+ type ImageCollectionValue = ImageValue[];
35
+ type PoiRow = {
36
+ id: string;
37
+ place_id: string;
38
+ name: string;
39
+ address: string | null;
40
+ lat: number;
41
+ lng: number;
42
+ distance_m: number | null;
43
+ };
44
+ //#endregion
45
+ export { type Coordinates, type FloorplanAssignment, FrameConfig, ImageCollectionValue, ImageValue, PoiRow, type PropertyFacts, type UnitRow };
@@ -0,0 +1,7 @@
1
+ //#region src/schema/section-nav.d.ts
2
+ type SectionNav = {
3
+ selfAnchor: string;
4
+ anchors: Record<string, string>;
5
+ };
6
+ //#endregion
7
+ export { SectionNav };
@@ -0,0 +1,69 @@
1
+ import { ImageCollectionValue, ImageValue, PoiRow } from "./runtime-values.js";
2
+ import { SectionNav } from "./section-nav.js";
3
+ import { SectionSchemaShape } from "./section-schema.js";
4
+ //#region src/schema/section-props.d.ts
5
+ type SlotValue<S> = S extends {
6
+ type: "text";
7
+ required: true;
8
+ } ? string : S extends {
9
+ type: "text";
10
+ } ? string | null : S extends {
11
+ type: "number";
12
+ required: true;
13
+ } ? number : S extends {
14
+ type: "number";
15
+ } ? number | null : S extends {
16
+ type: "select";
17
+ required: true;
18
+ } ? string : S extends {
19
+ type: "select";
20
+ } ? string | null : S extends {
21
+ type: "image";
22
+ required: true;
23
+ } ? ImageValue : S extends {
24
+ type: "image";
25
+ } ? ImageValue | null : S extends {
26
+ type: "image_collection";
27
+ } ? ImageCollectionValue : S extends {
28
+ type: "list";
29
+ element: {
30
+ type: "text";
31
+ };
32
+ } ? string[] : S extends {
33
+ type: "list";
34
+ } ? unknown[] : S extends {
35
+ type: "object_list";
36
+ } ? Record<string, unknown>[] : S extends {
37
+ type: "poi_list";
38
+ } ? PoiRow[] : S extends {
39
+ type: "url";
40
+ required: true;
41
+ } ? string : S extends {
42
+ type: "url";
43
+ } ? string | null : never;
44
+ type OptionValue<O> = O extends {
45
+ type: "enum";
46
+ values: readonly (infer V)[];
47
+ } ? V : O extends {
48
+ type: "bool";
49
+ } ? boolean : O extends {
50
+ type: "int";
51
+ } ? number : O extends {
52
+ type: "string";
53
+ } ? string : O extends {
54
+ type: "json";
55
+ } ? unknown : never;
56
+ type OptionsOf<S extends SectionSchemaShape> = S["options"] extends (infer O) ? O extends Record<string, unknown> ? O : Record<string, never> : Record<string, never>;
57
+ type VariantsOf<S extends SectionSchemaShape> = S["meta"] extends {
58
+ variants: infer V;
59
+ } ? V extends Record<string, {
60
+ cases: readonly string[];
61
+ }> ? { [A in keyof V]: V[A]["cases"][number]; } : Record<string, never> : Record<string, never>;
62
+ type SectionProps<S extends SectionSchemaShape> = {
63
+ slots: { [K in keyof S["slots"]]: SlotValue<S["slots"][K]>; };
64
+ options: { [K in keyof OptionsOf<S>]: OptionValue<OptionsOf<S>[K]>; };
65
+ nav: SectionNav;
66
+ variants: VariantsOf<S>;
67
+ };
68
+ //#endregion
69
+ export { OptionValue, SectionProps, SlotValue };
@@ -0,0 +1,533 @@
1
+ import { Coordinates, FloorplanAssignment, PropertyFacts, UnitRow } from "./property-facts.js";
2
+ import { CONTENT_SLOT_TYPES, REFERRAL_FIELDS, REF_SLOT_TYPES, SLOT_TYPES, SlotType } from "../contracts/slot-catalog.js";
3
+ import { VariantSelectorFn } from "./resolve-variants.js";
4
+ import { ContentSlot, Slot, SlotDef, defaultForSlotType } from "./slot-types.js";
5
+ import { FrameConfig, ImageCollectionValue, ImageValue, PoiRow } from "./runtime-values.js";
6
+ import { OptionValue, SectionProps, SlotValue } from "./section-props.js";
7
+ import { derived, direct } from "./source.js";
8
+ import { z } from "zod";
9
+ //#region src/schema/section-schema.d.ts
10
+ declare const OptionDef: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
11
+ user_editable: z.ZodDefault<z.ZodBoolean>;
12
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
13
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
14
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
15
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
16
+ type: z.ZodLiteral<"enum">;
17
+ values: z.ZodArray<z.ZodString, "many">;
18
+ default: z.ZodString;
19
+ }, "strict", z.ZodTypeAny, {
20
+ type: "enum";
21
+ values: string[];
22
+ default: string;
23
+ user_editable: boolean;
24
+ template_overridable: boolean;
25
+ planner_settable: boolean;
26
+ affects_decisions: string[];
27
+ affects_slots: string[];
28
+ }, {
29
+ type: "enum";
30
+ values: string[];
31
+ default: string;
32
+ user_editable?: boolean | undefined;
33
+ template_overridable?: boolean | undefined;
34
+ planner_settable?: boolean | undefined;
35
+ affects_decisions?: string[] | undefined;
36
+ affects_slots?: string[] | undefined;
37
+ }>, z.ZodObject<{
38
+ user_editable: z.ZodDefault<z.ZodBoolean>;
39
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
40
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
41
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
42
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
43
+ type: z.ZodLiteral<"bool">;
44
+ default: z.ZodBoolean;
45
+ }, "strict", z.ZodTypeAny, {
46
+ type: "bool";
47
+ default: boolean;
48
+ user_editable: boolean;
49
+ template_overridable: boolean;
50
+ planner_settable: boolean;
51
+ affects_decisions: string[];
52
+ affects_slots: string[];
53
+ }, {
54
+ type: "bool";
55
+ default: boolean;
56
+ user_editable?: boolean | undefined;
57
+ template_overridable?: boolean | undefined;
58
+ planner_settable?: boolean | undefined;
59
+ affects_decisions?: string[] | undefined;
60
+ affects_slots?: string[] | undefined;
61
+ }>, z.ZodObject<{
62
+ user_editable: z.ZodDefault<z.ZodBoolean>;
63
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
64
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
65
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
66
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
67
+ type: z.ZodLiteral<"int">;
68
+ default: z.ZodNumber;
69
+ min: z.ZodOptional<z.ZodNumber>;
70
+ max: z.ZodOptional<z.ZodNumber>;
71
+ }, "strict", z.ZodTypeAny, {
72
+ type: "int";
73
+ default: number;
74
+ user_editable: boolean;
75
+ template_overridable: boolean;
76
+ planner_settable: boolean;
77
+ affects_decisions: string[];
78
+ affects_slots: string[];
79
+ min?: number | undefined;
80
+ max?: number | undefined;
81
+ }, {
82
+ type: "int";
83
+ default: number;
84
+ user_editable?: boolean | undefined;
85
+ template_overridable?: boolean | undefined;
86
+ planner_settable?: boolean | undefined;
87
+ affects_decisions?: string[] | undefined;
88
+ affects_slots?: string[] | undefined;
89
+ min?: number | undefined;
90
+ max?: number | undefined;
91
+ }>, z.ZodObject<{
92
+ user_editable: z.ZodDefault<z.ZodBoolean>;
93
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
94
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
95
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
96
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
97
+ type: z.ZodLiteral<"string">;
98
+ default: z.ZodString;
99
+ }, "strict", z.ZodTypeAny, {
100
+ type: "string";
101
+ default: string;
102
+ user_editable: boolean;
103
+ template_overridable: boolean;
104
+ planner_settable: boolean;
105
+ affects_decisions: string[];
106
+ affects_slots: string[];
107
+ }, {
108
+ type: "string";
109
+ default: string;
110
+ user_editable?: boolean | undefined;
111
+ template_overridable?: boolean | undefined;
112
+ planner_settable?: boolean | undefined;
113
+ affects_decisions?: string[] | undefined;
114
+ affects_slots?: string[] | undefined;
115
+ }>, z.ZodObject<{
116
+ user_editable: z.ZodDefault<z.ZodBoolean>;
117
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
118
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
119
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
120
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
121
+ type: z.ZodLiteral<"json">;
122
+ default: z.ZodUnknown;
123
+ }, "strict", z.ZodTypeAny, {
124
+ type: "json";
125
+ user_editable: boolean;
126
+ template_overridable: boolean;
127
+ planner_settable: boolean;
128
+ affects_decisions: string[];
129
+ affects_slots: string[];
130
+ default?: unknown;
131
+ }, {
132
+ type: "json";
133
+ default?: unknown;
134
+ user_editable?: boolean | undefined;
135
+ template_overridable?: boolean | undefined;
136
+ planner_settable?: boolean | undefined;
137
+ affects_decisions?: string[] | undefined;
138
+ affects_slots?: string[] | undefined;
139
+ }>]>;
140
+ declare const SlotGroupDef: z.ZodObject<{
141
+ id: z.ZodString;
142
+ label: z.ZodString;
143
+ members: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodString, z.ZodString], null>]>, "many">;
144
+ }, "strict", z.ZodTypeAny, {
145
+ label: string;
146
+ id: string;
147
+ members: (string | [string, string])[];
148
+ }, {
149
+ label: string;
150
+ id: string;
151
+ members: (string | [string, string])[];
152
+ }>;
153
+ type SlotGroupDefShape = z.input<typeof SlotGroupDef>;
154
+ declare const SectionMeta: z.ZodObject<{
155
+ displayName: z.ZodString;
156
+ anchor: z.ZodOptional<z.ZodString>;
157
+ groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
158
+ id: z.ZodString;
159
+ label: z.ZodString;
160
+ members: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodString, z.ZodString], null>]>, "many">;
161
+ }, "strict", z.ZodTypeAny, {
162
+ label: string;
163
+ id: string;
164
+ members: (string | [string, string])[];
165
+ }, {
166
+ label: string;
167
+ id: string;
168
+ members: (string | [string, string])[];
169
+ }>, "many">>;
170
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
171
+ cases: z.ZodArray<z.ZodString, "many">;
172
+ default: z.ZodString;
173
+ select: z.ZodType<VariantSelectorFn, z.ZodTypeDef, VariantSelectorFn>;
174
+ }, "strict", z.ZodTypeAny, {
175
+ default: string;
176
+ cases: string[];
177
+ select: VariantSelectorFn;
178
+ }, {
179
+ default: string;
180
+ cases: string[];
181
+ select: VariantSelectorFn;
182
+ }>>>;
183
+ }, "strict", z.ZodTypeAny, {
184
+ displayName: string;
185
+ anchor?: string | undefined;
186
+ groups?: {
187
+ label: string;
188
+ id: string;
189
+ members: (string | [string, string])[];
190
+ }[] | undefined;
191
+ variants?: Record<string, {
192
+ default: string;
193
+ cases: string[];
194
+ select: VariantSelectorFn;
195
+ }> | undefined;
196
+ }, {
197
+ displayName: string;
198
+ anchor?: string | undefined;
199
+ groups?: {
200
+ label: string;
201
+ id: string;
202
+ members: (string | [string, string])[];
203
+ }[] | undefined;
204
+ variants?: Record<string, {
205
+ default: string;
206
+ cases: string[];
207
+ select: VariantSelectorFn;
208
+ }> | undefined;
209
+ }>;
210
+ type SectionMetaShape = z.input<typeof SectionMeta>;
211
+ declare const SectionSchema: z.ZodObject<{
212
+ meta: z.ZodObject<{
213
+ displayName: z.ZodString;
214
+ anchor: z.ZodOptional<z.ZodString>;
215
+ groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
216
+ id: z.ZodString;
217
+ label: z.ZodString;
218
+ members: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodString, z.ZodString], null>]>, "many">;
219
+ }, "strict", z.ZodTypeAny, {
220
+ label: string;
221
+ id: string;
222
+ members: (string | [string, string])[];
223
+ }, {
224
+ label: string;
225
+ id: string;
226
+ members: (string | [string, string])[];
227
+ }>, "many">>;
228
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
229
+ cases: z.ZodArray<z.ZodString, "many">;
230
+ default: z.ZodString;
231
+ select: z.ZodType<VariantSelectorFn, z.ZodTypeDef, VariantSelectorFn>;
232
+ }, "strict", z.ZodTypeAny, {
233
+ default: string;
234
+ cases: string[];
235
+ select: VariantSelectorFn;
236
+ }, {
237
+ default: string;
238
+ cases: string[];
239
+ select: VariantSelectorFn;
240
+ }>>>;
241
+ }, "strict", z.ZodTypeAny, {
242
+ displayName: string;
243
+ anchor?: string | undefined;
244
+ groups?: {
245
+ label: string;
246
+ id: string;
247
+ members: (string | [string, string])[];
248
+ }[] | undefined;
249
+ variants?: Record<string, {
250
+ default: string;
251
+ cases: string[];
252
+ select: VariantSelectorFn;
253
+ }> | undefined;
254
+ }, {
255
+ displayName: string;
256
+ anchor?: string | undefined;
257
+ groups?: {
258
+ label: string;
259
+ id: string;
260
+ members: (string | [string, string])[];
261
+ }[] | undefined;
262
+ variants?: Record<string, {
263
+ default: string;
264
+ cases: string[];
265
+ select: VariantSelectorFn;
266
+ }> | undefined;
267
+ }>;
268
+ slots: z.ZodRecord<z.ZodString, z.ZodType<Slot, z.ZodTypeDef, Slot>>;
269
+ options: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
270
+ user_editable: z.ZodDefault<z.ZodBoolean>;
271
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
272
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
273
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
274
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
275
+ type: z.ZodLiteral<"enum">;
276
+ values: z.ZodArray<z.ZodString, "many">;
277
+ default: z.ZodString;
278
+ }, "strict", z.ZodTypeAny, {
279
+ type: "enum";
280
+ values: string[];
281
+ default: string;
282
+ user_editable: boolean;
283
+ template_overridable: boolean;
284
+ planner_settable: boolean;
285
+ affects_decisions: string[];
286
+ affects_slots: string[];
287
+ }, {
288
+ type: "enum";
289
+ values: string[];
290
+ default: string;
291
+ user_editable?: boolean | undefined;
292
+ template_overridable?: boolean | undefined;
293
+ planner_settable?: boolean | undefined;
294
+ affects_decisions?: string[] | undefined;
295
+ affects_slots?: string[] | undefined;
296
+ }>, z.ZodObject<{
297
+ user_editable: z.ZodDefault<z.ZodBoolean>;
298
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
299
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
300
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
301
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
302
+ type: z.ZodLiteral<"bool">;
303
+ default: z.ZodBoolean;
304
+ }, "strict", z.ZodTypeAny, {
305
+ type: "bool";
306
+ default: boolean;
307
+ user_editable: boolean;
308
+ template_overridable: boolean;
309
+ planner_settable: boolean;
310
+ affects_decisions: string[];
311
+ affects_slots: string[];
312
+ }, {
313
+ type: "bool";
314
+ default: boolean;
315
+ user_editable?: boolean | undefined;
316
+ template_overridable?: boolean | undefined;
317
+ planner_settable?: boolean | undefined;
318
+ affects_decisions?: string[] | undefined;
319
+ affects_slots?: string[] | undefined;
320
+ }>, z.ZodObject<{
321
+ user_editable: z.ZodDefault<z.ZodBoolean>;
322
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
323
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
324
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
325
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
326
+ type: z.ZodLiteral<"int">;
327
+ default: z.ZodNumber;
328
+ min: z.ZodOptional<z.ZodNumber>;
329
+ max: z.ZodOptional<z.ZodNumber>;
330
+ }, "strict", z.ZodTypeAny, {
331
+ type: "int";
332
+ default: number;
333
+ user_editable: boolean;
334
+ template_overridable: boolean;
335
+ planner_settable: boolean;
336
+ affects_decisions: string[];
337
+ affects_slots: string[];
338
+ min?: number | undefined;
339
+ max?: number | undefined;
340
+ }, {
341
+ type: "int";
342
+ default: number;
343
+ user_editable?: boolean | undefined;
344
+ template_overridable?: boolean | undefined;
345
+ planner_settable?: boolean | undefined;
346
+ affects_decisions?: string[] | undefined;
347
+ affects_slots?: string[] | undefined;
348
+ min?: number | undefined;
349
+ max?: number | undefined;
350
+ }>, z.ZodObject<{
351
+ user_editable: z.ZodDefault<z.ZodBoolean>;
352
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
353
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
354
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
355
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
356
+ type: z.ZodLiteral<"string">;
357
+ default: z.ZodString;
358
+ }, "strict", z.ZodTypeAny, {
359
+ type: "string";
360
+ default: string;
361
+ user_editable: boolean;
362
+ template_overridable: boolean;
363
+ planner_settable: boolean;
364
+ affects_decisions: string[];
365
+ affects_slots: string[];
366
+ }, {
367
+ type: "string";
368
+ default: string;
369
+ user_editable?: boolean | undefined;
370
+ template_overridable?: boolean | undefined;
371
+ planner_settable?: boolean | undefined;
372
+ affects_decisions?: string[] | undefined;
373
+ affects_slots?: string[] | undefined;
374
+ }>, z.ZodObject<{
375
+ user_editable: z.ZodDefault<z.ZodBoolean>;
376
+ template_overridable: z.ZodDefault<z.ZodBoolean>;
377
+ planner_settable: z.ZodDefault<z.ZodBoolean>;
378
+ affects_decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
379
+ affects_slots: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
380
+ type: z.ZodLiteral<"json">;
381
+ default: z.ZodUnknown;
382
+ }, "strict", z.ZodTypeAny, {
383
+ type: "json";
384
+ user_editable: boolean;
385
+ template_overridable: boolean;
386
+ planner_settable: boolean;
387
+ affects_decisions: string[];
388
+ affects_slots: string[];
389
+ default?: unknown;
390
+ }, {
391
+ type: "json";
392
+ default?: unknown;
393
+ user_editable?: boolean | undefined;
394
+ template_overridable?: boolean | undefined;
395
+ planner_settable?: boolean | undefined;
396
+ affects_decisions?: string[] | undefined;
397
+ affects_slots?: string[] | undefined;
398
+ }>]>>>;
399
+ slot_order: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
400
+ }, "strict", z.ZodTypeAny, {
401
+ options: Record<string, {
402
+ type: "enum";
403
+ values: string[];
404
+ default: string;
405
+ user_editable: boolean;
406
+ template_overridable: boolean;
407
+ planner_settable: boolean;
408
+ affects_decisions: string[];
409
+ affects_slots: string[];
410
+ } | {
411
+ type: "bool";
412
+ default: boolean;
413
+ user_editable: boolean;
414
+ template_overridable: boolean;
415
+ planner_settable: boolean;
416
+ affects_decisions: string[];
417
+ affects_slots: string[];
418
+ } | {
419
+ type: "int";
420
+ default: number;
421
+ user_editable: boolean;
422
+ template_overridable: boolean;
423
+ planner_settable: boolean;
424
+ affects_decisions: string[];
425
+ affects_slots: string[];
426
+ min?: number | undefined;
427
+ max?: number | undefined;
428
+ } | {
429
+ type: "string";
430
+ default: string;
431
+ user_editable: boolean;
432
+ template_overridable: boolean;
433
+ planner_settable: boolean;
434
+ affects_decisions: string[];
435
+ affects_slots: string[];
436
+ } | {
437
+ type: "json";
438
+ user_editable: boolean;
439
+ template_overridable: boolean;
440
+ planner_settable: boolean;
441
+ affects_decisions: string[];
442
+ affects_slots: string[];
443
+ default?: unknown;
444
+ }>;
445
+ meta: {
446
+ displayName: string;
447
+ anchor?: string | undefined;
448
+ groups?: {
449
+ label: string;
450
+ id: string;
451
+ members: (string | [string, string])[];
452
+ }[] | undefined;
453
+ variants?: Record<string, {
454
+ default: string;
455
+ cases: string[];
456
+ select: VariantSelectorFn;
457
+ }> | undefined;
458
+ };
459
+ slots: Record<string, Slot>;
460
+ slot_order?: string[] | undefined;
461
+ }, {
462
+ meta: {
463
+ displayName: string;
464
+ anchor?: string | undefined;
465
+ groups?: {
466
+ label: string;
467
+ id: string;
468
+ members: (string | [string, string])[];
469
+ }[] | undefined;
470
+ variants?: Record<string, {
471
+ default: string;
472
+ cases: string[];
473
+ select: VariantSelectorFn;
474
+ }> | undefined;
475
+ };
476
+ slots: Record<string, Slot>;
477
+ options?: Record<string, {
478
+ type: "enum";
479
+ values: string[];
480
+ default: string;
481
+ user_editable?: boolean | undefined;
482
+ template_overridable?: boolean | undefined;
483
+ planner_settable?: boolean | undefined;
484
+ affects_decisions?: string[] | undefined;
485
+ affects_slots?: string[] | undefined;
486
+ } | {
487
+ type: "bool";
488
+ default: boolean;
489
+ user_editable?: boolean | undefined;
490
+ template_overridable?: boolean | undefined;
491
+ planner_settable?: boolean | undefined;
492
+ affects_decisions?: string[] | undefined;
493
+ affects_slots?: string[] | undefined;
494
+ } | {
495
+ type: "int";
496
+ default: number;
497
+ user_editable?: boolean | undefined;
498
+ template_overridable?: boolean | undefined;
499
+ planner_settable?: boolean | undefined;
500
+ affects_decisions?: string[] | undefined;
501
+ affects_slots?: string[] | undefined;
502
+ min?: number | undefined;
503
+ max?: number | undefined;
504
+ } | {
505
+ type: "string";
506
+ default: string;
507
+ user_editable?: boolean | undefined;
508
+ template_overridable?: boolean | undefined;
509
+ planner_settable?: boolean | undefined;
510
+ affects_decisions?: string[] | undefined;
511
+ affects_slots?: string[] | undefined;
512
+ } | {
513
+ type: "json";
514
+ default?: unknown;
515
+ user_editable?: boolean | undefined;
516
+ template_overridable?: boolean | undefined;
517
+ planner_settable?: boolean | undefined;
518
+ affects_decisions?: string[] | undefined;
519
+ affects_slots?: string[] | undefined;
520
+ }> | undefined;
521
+ slot_order?: string[] | undefined;
522
+ }>;
523
+ type SectionSchemaShape = z.input<typeof SectionSchema>;
524
+ type SectionSchemaResolved = Omit<z.infer<typeof SectionSchema>, "meta"> & {
525
+ anchor: string;
526
+ groups?: z.infer<typeof SlotGroupDef>[];
527
+ variants?: Record<string, {
528
+ cases: string[];
529
+ default: string;
530
+ }>;
531
+ };
532
+ //#endregion
533
+ export { CONTENT_SLOT_TYPES, ContentSlot, type Coordinates, type FloorplanAssignment, type FrameConfig, type ImageCollectionValue, type ImageValue, OptionDef, type OptionValue, type PoiRow, type PropertyFacts, REFERRAL_FIELDS, REF_SLOT_TYPES, SLOT_TYPES, SectionMeta, SectionMetaShape, type SectionProps, SectionSchema, SectionSchemaResolved, SectionSchemaShape, type Slot, SlotDef, SlotGroupDef, SlotGroupDefShape, type SlotType, type SlotValue, type UnitRow, defaultForSlotType, derived, direct };