@growth-labs/cms 0.5.5 → 0.5.6

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 (113) hide show
  1. package/README.md +36 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/integration/index.d.ts.map +1 -1
  7. package/dist/integration/index.js +9 -0
  8. package/dist/integration/index.js.map +1 -1
  9. package/dist/integration/options.d.ts +19 -0
  10. package/dist/integration/options.d.ts.map +1 -1
  11. package/dist/integration/options.js +7 -0
  12. package/dist/integration/options.js.map +1 -1
  13. package/dist/providers/null.d.ts +2 -1
  14. package/dist/providers/null.d.ts.map +1 -1
  15. package/dist/providers/null.js +9 -0
  16. package/dist/providers/null.js.map +1 -1
  17. package/dist/providers/types.d.ts +10 -0
  18. package/dist/providers/types.d.ts.map +1 -1
  19. package/dist/providers/types.js.map +1 -1
  20. package/dist/routes/authz-matrix.d.ts.map +1 -1
  21. package/dist/routes/authz-matrix.js +2 -0
  22. package/dist/routes/authz-matrix.js.map +1 -1
  23. package/dist/routes/context.d.ts +1 -1
  24. package/dist/routes/context.d.ts.map +1 -1
  25. package/dist/routes/context.js.map +1 -1
  26. package/dist/routes/index.d.ts +1 -0
  27. package/dist/routes/index.d.ts.map +1 -1
  28. package/dist/routes/index.js +2 -0
  29. package/dist/routes/index.js.map +1 -1
  30. package/dist/routes/surveys.d.ts +12 -0
  31. package/dist/routes/surveys.d.ts.map +1 -0
  32. package/dist/routes/surveys.js +109 -0
  33. package/dist/routes/surveys.js.map +1 -0
  34. package/dist/schema/insights-ingest.d.ts +46 -46
  35. package/dist/surveys/access.d.ts +4 -0
  36. package/dist/surveys/access.d.ts.map +1 -0
  37. package/dist/surveys/access.js +9 -0
  38. package/dist/surveys/access.js.map +1 -0
  39. package/dist/surveys/errors.d.ts +43 -0
  40. package/dist/surveys/errors.d.ts.map +1 -0
  41. package/dist/surveys/errors.js +42 -0
  42. package/dist/surveys/errors.js.map +1 -0
  43. package/dist/surveys/schema.d.ts +939 -0
  44. package/dist/surveys/schema.d.ts.map +1 -0
  45. package/dist/surveys/schema.js +385 -0
  46. package/dist/surveys/schema.js.map +1 -0
  47. package/dist/ui/api/surveys/[surveyId]/responses.csv.d.ts +3 -0
  48. package/dist/ui/api/surveys/[surveyId]/responses.csv.d.ts.map +1 -0
  49. package/dist/ui/api/surveys/[surveyId]/responses.csv.js +17 -0
  50. package/dist/ui/api/surveys/[surveyId]/responses.csv.js.map +1 -0
  51. package/dist/ui/api/surveys/[surveyId].d.ts +3 -0
  52. package/dist/ui/api/surveys/[surveyId].d.ts.map +1 -0
  53. package/dist/ui/api/surveys/[surveyId].js +17 -0
  54. package/dist/ui/api/surveys/[surveyId].js.map +1 -0
  55. package/dist/ui/client/mount.d.ts.map +1 -1
  56. package/dist/ui/client/mount.js +1 -0
  57. package/dist/ui/client/mount.js.map +1 -1
  58. package/dist/ui/commands.d.ts +5 -1
  59. package/dist/ui/commands.d.ts.map +1 -1
  60. package/dist/ui/commands.js +7 -0
  61. package/dist/ui/commands.js.map +1 -1
  62. package/dist/ui/components/CmsApp.d.ts +2 -0
  63. package/dist/ui/components/CmsApp.d.ts.map +1 -1
  64. package/dist/ui/components/CmsApp.js +14 -3
  65. package/dist/ui/components/CmsApp.js.map +1 -1
  66. package/dist/ui/components/CommandPalette.d.ts +2 -0
  67. package/dist/ui/components/CommandPalette.d.ts.map +1 -1
  68. package/dist/ui/components/CommandPalette.js +1 -1
  69. package/dist/ui/components/CommandPalette.js.map +1 -1
  70. package/dist/ui/components/Sidebar.d.ts +1 -0
  71. package/dist/ui/components/Sidebar.d.ts.map +1 -1
  72. package/dist/ui/components/Sidebar.js +1 -1
  73. package/dist/ui/components/Sidebar.js.map +1 -1
  74. package/dist/ui/hash-router.d.ts +1 -1
  75. package/dist/ui/hash-router.d.ts.map +1 -1
  76. package/dist/ui/hash-router.js +1 -0
  77. package/dist/ui/hash-router.js.map +1 -1
  78. package/dist/ui/nav.d.ts +5 -1
  79. package/dist/ui/nav.d.ts.map +1 -1
  80. package/dist/ui/nav.js +10 -2
  81. package/dist/ui/nav.js.map +1 -1
  82. package/dist/ui/screens/SurveyResponsesScreen.d.ts +28 -0
  83. package/dist/ui/screens/SurveyResponsesScreen.d.ts.map +1 -0
  84. package/dist/ui/screens/SurveyResponsesScreen.js +110 -0
  85. package/dist/ui/screens/SurveyResponsesScreen.js.map +1 -0
  86. package/dist/ui/screens/registry.d.ts +2 -1
  87. package/dist/ui/screens/registry.d.ts.map +1 -1
  88. package/dist/ui/screens/registry.js +5 -1
  89. package/dist/ui/screens/registry.js.map +1 -1
  90. package/package.json +1 -1
  91. package/src/index.ts +2 -2
  92. package/src/integration/index.ts +9 -0
  93. package/src/integration/options.ts +8 -0
  94. package/src/providers/null.ts +19 -0
  95. package/src/providers/types.ts +7 -0
  96. package/src/routes/authz-matrix.ts +2 -0
  97. package/src/routes/context.ts +2 -0
  98. package/src/routes/index.ts +6 -0
  99. package/src/routes/surveys.ts +130 -0
  100. package/src/surveys/access.ts +11 -0
  101. package/src/surveys/errors.ts +51 -0
  102. package/src/surveys/schema.ts +435 -0
  103. package/src/ui/api/surveys/[surveyId]/responses.csv.ts +23 -0
  104. package/src/ui/api/surveys/[surveyId].ts +23 -0
  105. package/src/ui/client/mount.tsx +1 -0
  106. package/src/ui/commands.ts +14 -1
  107. package/src/ui/components/CmsApp.tsx +25 -3
  108. package/src/ui/components/CommandPalette.tsx +2 -1
  109. package/src/ui/components/Sidebar.tsx +10 -2
  110. package/src/ui/hash-router.ts +1 -0
  111. package/src/ui/nav.ts +15 -2
  112. package/src/ui/screens/SurveyResponsesScreen.tsx +271 -0
  113. package/src/ui/screens/registry.tsx +6 -0
@@ -0,0 +1,939 @@
1
+ import { z } from 'zod';
2
+ export declare const SURVEY_ID_MAX_LENGTH = 200;
3
+ export declare const SurveyIdSchema: z.ZodString;
4
+ export declare const SurveyQuestionIdSchema: z.ZodString;
5
+ export declare const SurveyAudienceSchema: z.ZodEnum<["all", "member", "non_member"]>;
6
+ export declare const SurveyRespondentSegmentSchema: z.ZodEnum<["member", "non_member", "unknown"]>;
7
+ export declare const SurveyQuestionSchema: z.ZodEffects<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
8
+ kind: z.ZodLiteral<"single_choice">;
9
+ options: z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, string[], string[]>;
10
+ counts: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodNumber>, Record<string, number>, Record<string, number>>;
11
+ average: z.ZodNull;
12
+ distribution: z.ZodNull;
13
+ responseCount: z.ZodNull;
14
+ id: z.ZodString;
15
+ position: z.ZodNumber;
16
+ prompt: z.ZodEffects<z.ZodString, string, string>;
17
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
18
+ answerCount: z.ZodNumber;
19
+ }, "strict", z.ZodTypeAny, {
20
+ id: string;
21
+ options: string[];
22
+ kind: "single_choice";
23
+ counts: Record<string, number>;
24
+ average: null;
25
+ distribution: null;
26
+ responseCount: null;
27
+ position: number;
28
+ prompt: string;
29
+ audience: "all" | "member" | "non_member";
30
+ answerCount: number;
31
+ }, {
32
+ id: string;
33
+ options: string[];
34
+ kind: "single_choice";
35
+ counts: Record<string, number>;
36
+ average: null;
37
+ distribution: null;
38
+ responseCount: null;
39
+ position: number;
40
+ prompt: string;
41
+ audience: "all" | "member" | "non_member";
42
+ answerCount: number;
43
+ }>, z.ZodObject<{
44
+ kind: z.ZodLiteral<"multi_choice">;
45
+ options: z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, string[], string[]>;
46
+ counts: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodNumber>, Record<string, number>, Record<string, number>>;
47
+ average: z.ZodNull;
48
+ distribution: z.ZodNull;
49
+ responseCount: z.ZodNull;
50
+ id: z.ZodString;
51
+ position: z.ZodNumber;
52
+ prompt: z.ZodEffects<z.ZodString, string, string>;
53
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
54
+ answerCount: z.ZodNumber;
55
+ }, "strict", z.ZodTypeAny, {
56
+ id: string;
57
+ options: string[];
58
+ kind: "multi_choice";
59
+ counts: Record<string, number>;
60
+ average: null;
61
+ distribution: null;
62
+ responseCount: null;
63
+ position: number;
64
+ prompt: string;
65
+ audience: "all" | "member" | "non_member";
66
+ answerCount: number;
67
+ }, {
68
+ id: string;
69
+ options: string[];
70
+ kind: "multi_choice";
71
+ counts: Record<string, number>;
72
+ average: null;
73
+ distribution: null;
74
+ responseCount: null;
75
+ position: number;
76
+ prompt: string;
77
+ audience: "all" | "member" | "non_member";
78
+ answerCount: number;
79
+ }>, z.ZodObject<{
80
+ kind: z.ZodLiteral<"scale">;
81
+ options: z.ZodEffects<z.ZodObject<{
82
+ min: z.ZodNumber;
83
+ max: z.ZodNumber;
84
+ }, "strict", z.ZodTypeAny, {
85
+ min: number;
86
+ max: number;
87
+ }, {
88
+ min: number;
89
+ max: number;
90
+ }>, {
91
+ min: number;
92
+ max: number;
93
+ }, {
94
+ min: number;
95
+ max: number;
96
+ }>;
97
+ counts: z.ZodNull;
98
+ average: z.ZodNullable<z.ZodNumber>;
99
+ distribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
100
+ responseCount: z.ZodNull;
101
+ id: z.ZodString;
102
+ position: z.ZodNumber;
103
+ prompt: z.ZodEffects<z.ZodString, string, string>;
104
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
105
+ answerCount: z.ZodNumber;
106
+ }, "strict", z.ZodTypeAny, {
107
+ id: string;
108
+ options: {
109
+ min: number;
110
+ max: number;
111
+ };
112
+ kind: "scale";
113
+ counts: null;
114
+ average: number | null;
115
+ distribution: Record<string, number>;
116
+ responseCount: null;
117
+ position: number;
118
+ prompt: string;
119
+ audience: "all" | "member" | "non_member";
120
+ answerCount: number;
121
+ }, {
122
+ id: string;
123
+ options: {
124
+ min: number;
125
+ max: number;
126
+ };
127
+ kind: "scale";
128
+ counts: null;
129
+ average: number | null;
130
+ distribution: Record<string, number>;
131
+ responseCount: null;
132
+ position: number;
133
+ prompt: string;
134
+ audience: "all" | "member" | "non_member";
135
+ answerCount: number;
136
+ }>, z.ZodObject<{
137
+ kind: z.ZodLiteral<"text">;
138
+ options: z.ZodObject<{
139
+ max_length: z.ZodNumber;
140
+ }, "strict", z.ZodTypeAny, {
141
+ max_length: number;
142
+ }, {
143
+ max_length: number;
144
+ }>;
145
+ counts: z.ZodNull;
146
+ average: z.ZodNull;
147
+ distribution: z.ZodNull;
148
+ responseCount: z.ZodNumber;
149
+ id: z.ZodString;
150
+ position: z.ZodNumber;
151
+ prompt: z.ZodEffects<z.ZodString, string, string>;
152
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
153
+ answerCount: z.ZodNumber;
154
+ }, "strict", z.ZodTypeAny, {
155
+ id: string;
156
+ options: {
157
+ max_length: number;
158
+ };
159
+ kind: "text";
160
+ counts: null;
161
+ average: null;
162
+ distribution: null;
163
+ responseCount: number;
164
+ position: number;
165
+ prompt: string;
166
+ audience: "all" | "member" | "non_member";
167
+ answerCount: number;
168
+ }, {
169
+ id: string;
170
+ options: {
171
+ max_length: number;
172
+ };
173
+ kind: "text";
174
+ counts: null;
175
+ average: null;
176
+ distribution: null;
177
+ responseCount: number;
178
+ position: number;
179
+ prompt: string;
180
+ audience: "all" | "member" | "non_member";
181
+ answerCount: number;
182
+ }>]>, {
183
+ id: string;
184
+ options: string[];
185
+ kind: "single_choice";
186
+ counts: Record<string, number>;
187
+ average: null;
188
+ distribution: null;
189
+ responseCount: null;
190
+ position: number;
191
+ prompt: string;
192
+ audience: "all" | "member" | "non_member";
193
+ answerCount: number;
194
+ } | {
195
+ id: string;
196
+ options: string[];
197
+ kind: "multi_choice";
198
+ counts: Record<string, number>;
199
+ average: null;
200
+ distribution: null;
201
+ responseCount: null;
202
+ position: number;
203
+ prompt: string;
204
+ audience: "all" | "member" | "non_member";
205
+ answerCount: number;
206
+ } | {
207
+ id: string;
208
+ options: {
209
+ min: number;
210
+ max: number;
211
+ };
212
+ kind: "scale";
213
+ counts: null;
214
+ average: number | null;
215
+ distribution: Record<string, number>;
216
+ responseCount: null;
217
+ position: number;
218
+ prompt: string;
219
+ audience: "all" | "member" | "non_member";
220
+ answerCount: number;
221
+ } | {
222
+ id: string;
223
+ options: {
224
+ max_length: number;
225
+ };
226
+ kind: "text";
227
+ counts: null;
228
+ average: null;
229
+ distribution: null;
230
+ responseCount: number;
231
+ position: number;
232
+ prompt: string;
233
+ audience: "all" | "member" | "non_member";
234
+ answerCount: number;
235
+ }, {
236
+ id: string;
237
+ options: string[];
238
+ kind: "single_choice";
239
+ counts: Record<string, number>;
240
+ average: null;
241
+ distribution: null;
242
+ responseCount: null;
243
+ position: number;
244
+ prompt: string;
245
+ audience: "all" | "member" | "non_member";
246
+ answerCount: number;
247
+ } | {
248
+ id: string;
249
+ options: string[];
250
+ kind: "multi_choice";
251
+ counts: Record<string, number>;
252
+ average: null;
253
+ distribution: null;
254
+ responseCount: null;
255
+ position: number;
256
+ prompt: string;
257
+ audience: "all" | "member" | "non_member";
258
+ answerCount: number;
259
+ } | {
260
+ id: string;
261
+ options: {
262
+ min: number;
263
+ max: number;
264
+ };
265
+ kind: "scale";
266
+ counts: null;
267
+ average: number | null;
268
+ distribution: Record<string, number>;
269
+ responseCount: null;
270
+ position: number;
271
+ prompt: string;
272
+ audience: "all" | "member" | "non_member";
273
+ answerCount: number;
274
+ } | {
275
+ id: string;
276
+ options: {
277
+ max_length: number;
278
+ };
279
+ kind: "text";
280
+ counts: null;
281
+ average: null;
282
+ distribution: null;
283
+ responseCount: number;
284
+ position: number;
285
+ prompt: string;
286
+ audience: "all" | "member" | "non_member";
287
+ answerCount: number;
288
+ }>;
289
+ export declare const SurveyResultsSchema: z.ZodEffects<z.ZodObject<{
290
+ survey: z.ZodObject<{
291
+ id: z.ZodString;
292
+ title: z.ZodEffects<z.ZodString, string, string>;
293
+ status: z.ZodEnum<["draft", "active", "closed"]>;
294
+ responseCount: z.ZodNumber;
295
+ }, "strict", z.ZodTypeAny, {
296
+ id: string;
297
+ status: "draft" | "active" | "closed";
298
+ title: string;
299
+ responseCount: number;
300
+ }, {
301
+ id: string;
302
+ status: "draft" | "active" | "closed";
303
+ title: string;
304
+ responseCount: number;
305
+ }>;
306
+ questions: z.ZodArray<z.ZodEffects<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
307
+ kind: z.ZodLiteral<"single_choice">;
308
+ options: z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, string[], string[]>;
309
+ counts: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodNumber>, Record<string, number>, Record<string, number>>;
310
+ average: z.ZodNull;
311
+ distribution: z.ZodNull;
312
+ responseCount: z.ZodNull;
313
+ id: z.ZodString;
314
+ position: z.ZodNumber;
315
+ prompt: z.ZodEffects<z.ZodString, string, string>;
316
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
317
+ answerCount: z.ZodNumber;
318
+ }, "strict", z.ZodTypeAny, {
319
+ id: string;
320
+ options: string[];
321
+ kind: "single_choice";
322
+ counts: Record<string, number>;
323
+ average: null;
324
+ distribution: null;
325
+ responseCount: null;
326
+ position: number;
327
+ prompt: string;
328
+ audience: "all" | "member" | "non_member";
329
+ answerCount: number;
330
+ }, {
331
+ id: string;
332
+ options: string[];
333
+ kind: "single_choice";
334
+ counts: Record<string, number>;
335
+ average: null;
336
+ distribution: null;
337
+ responseCount: null;
338
+ position: number;
339
+ prompt: string;
340
+ audience: "all" | "member" | "non_member";
341
+ answerCount: number;
342
+ }>, z.ZodObject<{
343
+ kind: z.ZodLiteral<"multi_choice">;
344
+ options: z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, string[], string[]>;
345
+ counts: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodNumber>, Record<string, number>, Record<string, number>>;
346
+ average: z.ZodNull;
347
+ distribution: z.ZodNull;
348
+ responseCount: z.ZodNull;
349
+ id: z.ZodString;
350
+ position: z.ZodNumber;
351
+ prompt: z.ZodEffects<z.ZodString, string, string>;
352
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
353
+ answerCount: z.ZodNumber;
354
+ }, "strict", z.ZodTypeAny, {
355
+ id: string;
356
+ options: string[];
357
+ kind: "multi_choice";
358
+ counts: Record<string, number>;
359
+ average: null;
360
+ distribution: null;
361
+ responseCount: null;
362
+ position: number;
363
+ prompt: string;
364
+ audience: "all" | "member" | "non_member";
365
+ answerCount: number;
366
+ }, {
367
+ id: string;
368
+ options: string[];
369
+ kind: "multi_choice";
370
+ counts: Record<string, number>;
371
+ average: null;
372
+ distribution: null;
373
+ responseCount: null;
374
+ position: number;
375
+ prompt: string;
376
+ audience: "all" | "member" | "non_member";
377
+ answerCount: number;
378
+ }>, z.ZodObject<{
379
+ kind: z.ZodLiteral<"scale">;
380
+ options: z.ZodEffects<z.ZodObject<{
381
+ min: z.ZodNumber;
382
+ max: z.ZodNumber;
383
+ }, "strict", z.ZodTypeAny, {
384
+ min: number;
385
+ max: number;
386
+ }, {
387
+ min: number;
388
+ max: number;
389
+ }>, {
390
+ min: number;
391
+ max: number;
392
+ }, {
393
+ min: number;
394
+ max: number;
395
+ }>;
396
+ counts: z.ZodNull;
397
+ average: z.ZodNullable<z.ZodNumber>;
398
+ distribution: z.ZodRecord<z.ZodString, z.ZodNumber>;
399
+ responseCount: z.ZodNull;
400
+ id: z.ZodString;
401
+ position: z.ZodNumber;
402
+ prompt: z.ZodEffects<z.ZodString, string, string>;
403
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
404
+ answerCount: z.ZodNumber;
405
+ }, "strict", z.ZodTypeAny, {
406
+ id: string;
407
+ options: {
408
+ min: number;
409
+ max: number;
410
+ };
411
+ kind: "scale";
412
+ counts: null;
413
+ average: number | null;
414
+ distribution: Record<string, number>;
415
+ responseCount: null;
416
+ position: number;
417
+ prompt: string;
418
+ audience: "all" | "member" | "non_member";
419
+ answerCount: number;
420
+ }, {
421
+ id: string;
422
+ options: {
423
+ min: number;
424
+ max: number;
425
+ };
426
+ kind: "scale";
427
+ counts: null;
428
+ average: number | null;
429
+ distribution: Record<string, number>;
430
+ responseCount: null;
431
+ position: number;
432
+ prompt: string;
433
+ audience: "all" | "member" | "non_member";
434
+ answerCount: number;
435
+ }>, z.ZodObject<{
436
+ kind: z.ZodLiteral<"text">;
437
+ options: z.ZodObject<{
438
+ max_length: z.ZodNumber;
439
+ }, "strict", z.ZodTypeAny, {
440
+ max_length: number;
441
+ }, {
442
+ max_length: number;
443
+ }>;
444
+ counts: z.ZodNull;
445
+ average: z.ZodNull;
446
+ distribution: z.ZodNull;
447
+ responseCount: z.ZodNumber;
448
+ id: z.ZodString;
449
+ position: z.ZodNumber;
450
+ prompt: z.ZodEffects<z.ZodString, string, string>;
451
+ audience: z.ZodEnum<["all", "member", "non_member"]>;
452
+ answerCount: z.ZodNumber;
453
+ }, "strict", z.ZodTypeAny, {
454
+ id: string;
455
+ options: {
456
+ max_length: number;
457
+ };
458
+ kind: "text";
459
+ counts: null;
460
+ average: null;
461
+ distribution: null;
462
+ responseCount: number;
463
+ position: number;
464
+ prompt: string;
465
+ audience: "all" | "member" | "non_member";
466
+ answerCount: number;
467
+ }, {
468
+ id: string;
469
+ options: {
470
+ max_length: number;
471
+ };
472
+ kind: "text";
473
+ counts: null;
474
+ average: null;
475
+ distribution: null;
476
+ responseCount: number;
477
+ position: number;
478
+ prompt: string;
479
+ audience: "all" | "member" | "non_member";
480
+ answerCount: number;
481
+ }>]>, {
482
+ id: string;
483
+ options: string[];
484
+ kind: "single_choice";
485
+ counts: Record<string, number>;
486
+ average: null;
487
+ distribution: null;
488
+ responseCount: null;
489
+ position: number;
490
+ prompt: string;
491
+ audience: "all" | "member" | "non_member";
492
+ answerCount: number;
493
+ } | {
494
+ id: string;
495
+ options: string[];
496
+ kind: "multi_choice";
497
+ counts: Record<string, number>;
498
+ average: null;
499
+ distribution: null;
500
+ responseCount: null;
501
+ position: number;
502
+ prompt: string;
503
+ audience: "all" | "member" | "non_member";
504
+ answerCount: number;
505
+ } | {
506
+ id: string;
507
+ options: {
508
+ min: number;
509
+ max: number;
510
+ };
511
+ kind: "scale";
512
+ counts: null;
513
+ average: number | null;
514
+ distribution: Record<string, number>;
515
+ responseCount: null;
516
+ position: number;
517
+ prompt: string;
518
+ audience: "all" | "member" | "non_member";
519
+ answerCount: number;
520
+ } | {
521
+ id: string;
522
+ options: {
523
+ max_length: number;
524
+ };
525
+ kind: "text";
526
+ counts: null;
527
+ average: null;
528
+ distribution: null;
529
+ responseCount: number;
530
+ position: number;
531
+ prompt: string;
532
+ audience: "all" | "member" | "non_member";
533
+ answerCount: number;
534
+ }, {
535
+ id: string;
536
+ options: string[];
537
+ kind: "single_choice";
538
+ counts: Record<string, number>;
539
+ average: null;
540
+ distribution: null;
541
+ responseCount: null;
542
+ position: number;
543
+ prompt: string;
544
+ audience: "all" | "member" | "non_member";
545
+ answerCount: number;
546
+ } | {
547
+ id: string;
548
+ options: string[];
549
+ kind: "multi_choice";
550
+ counts: Record<string, number>;
551
+ average: null;
552
+ distribution: null;
553
+ responseCount: null;
554
+ position: number;
555
+ prompt: string;
556
+ audience: "all" | "member" | "non_member";
557
+ answerCount: number;
558
+ } | {
559
+ id: string;
560
+ options: {
561
+ min: number;
562
+ max: number;
563
+ };
564
+ kind: "scale";
565
+ counts: null;
566
+ average: number | null;
567
+ distribution: Record<string, number>;
568
+ responseCount: null;
569
+ position: number;
570
+ prompt: string;
571
+ audience: "all" | "member" | "non_member";
572
+ answerCount: number;
573
+ } | {
574
+ id: string;
575
+ options: {
576
+ max_length: number;
577
+ };
578
+ kind: "text";
579
+ counts: null;
580
+ average: null;
581
+ distribution: null;
582
+ responseCount: number;
583
+ position: number;
584
+ prompt: string;
585
+ audience: "all" | "member" | "non_member";
586
+ answerCount: number;
587
+ }>, "many">;
588
+ responses: z.ZodArray<z.ZodObject<{
589
+ id: z.ZodString;
590
+ channel: z.ZodEnum<["email", "site", "direct"]>;
591
+ submittedAt: z.ZodString;
592
+ respondentSegment: z.ZodEnum<["member", "non_member", "unknown"]>;
593
+ anonymous: z.ZodBoolean;
594
+ }, "strict", z.ZodTypeAny, {
595
+ id: string;
596
+ channel: "email" | "site" | "direct";
597
+ submittedAt: string;
598
+ respondentSegment: "member" | "non_member" | "unknown";
599
+ anonymous: boolean;
600
+ }, {
601
+ id: string;
602
+ channel: "email" | "site" | "direct";
603
+ submittedAt: string;
604
+ respondentSegment: "member" | "non_member" | "unknown";
605
+ anonymous: boolean;
606
+ }>, "many">;
607
+ freeText: z.ZodArray<z.ZodObject<{
608
+ questionId: z.ZodString;
609
+ responseId: z.ZodString;
610
+ submittedAt: z.ZodString;
611
+ value: z.ZodString;
612
+ }, "strict", z.ZodTypeAny, {
613
+ value: string;
614
+ submittedAt: string;
615
+ questionId: string;
616
+ responseId: string;
617
+ }, {
618
+ value: string;
619
+ submittedAt: string;
620
+ questionId: string;
621
+ responseId: string;
622
+ }>, "many">;
623
+ }, "strict", z.ZodTypeAny, {
624
+ survey: {
625
+ id: string;
626
+ status: "draft" | "active" | "closed";
627
+ title: string;
628
+ responseCount: number;
629
+ };
630
+ questions: ({
631
+ id: string;
632
+ options: string[];
633
+ kind: "single_choice";
634
+ counts: Record<string, number>;
635
+ average: null;
636
+ distribution: null;
637
+ responseCount: null;
638
+ position: number;
639
+ prompt: string;
640
+ audience: "all" | "member" | "non_member";
641
+ answerCount: number;
642
+ } | {
643
+ id: string;
644
+ options: string[];
645
+ kind: "multi_choice";
646
+ counts: Record<string, number>;
647
+ average: null;
648
+ distribution: null;
649
+ responseCount: null;
650
+ position: number;
651
+ prompt: string;
652
+ audience: "all" | "member" | "non_member";
653
+ answerCount: number;
654
+ } | {
655
+ id: string;
656
+ options: {
657
+ min: number;
658
+ max: number;
659
+ };
660
+ kind: "scale";
661
+ counts: null;
662
+ average: number | null;
663
+ distribution: Record<string, number>;
664
+ responseCount: null;
665
+ position: number;
666
+ prompt: string;
667
+ audience: "all" | "member" | "non_member";
668
+ answerCount: number;
669
+ } | {
670
+ id: string;
671
+ options: {
672
+ max_length: number;
673
+ };
674
+ kind: "text";
675
+ counts: null;
676
+ average: null;
677
+ distribution: null;
678
+ responseCount: number;
679
+ position: number;
680
+ prompt: string;
681
+ audience: "all" | "member" | "non_member";
682
+ answerCount: number;
683
+ })[];
684
+ responses: {
685
+ id: string;
686
+ channel: "email" | "site" | "direct";
687
+ submittedAt: string;
688
+ respondentSegment: "member" | "non_member" | "unknown";
689
+ anonymous: boolean;
690
+ }[];
691
+ freeText: {
692
+ value: string;
693
+ submittedAt: string;
694
+ questionId: string;
695
+ responseId: string;
696
+ }[];
697
+ }, {
698
+ survey: {
699
+ id: string;
700
+ status: "draft" | "active" | "closed";
701
+ title: string;
702
+ responseCount: number;
703
+ };
704
+ questions: ({
705
+ id: string;
706
+ options: string[];
707
+ kind: "single_choice";
708
+ counts: Record<string, number>;
709
+ average: null;
710
+ distribution: null;
711
+ responseCount: null;
712
+ position: number;
713
+ prompt: string;
714
+ audience: "all" | "member" | "non_member";
715
+ answerCount: number;
716
+ } | {
717
+ id: string;
718
+ options: string[];
719
+ kind: "multi_choice";
720
+ counts: Record<string, number>;
721
+ average: null;
722
+ distribution: null;
723
+ responseCount: null;
724
+ position: number;
725
+ prompt: string;
726
+ audience: "all" | "member" | "non_member";
727
+ answerCount: number;
728
+ } | {
729
+ id: string;
730
+ options: {
731
+ min: number;
732
+ max: number;
733
+ };
734
+ kind: "scale";
735
+ counts: null;
736
+ average: number | null;
737
+ distribution: Record<string, number>;
738
+ responseCount: null;
739
+ position: number;
740
+ prompt: string;
741
+ audience: "all" | "member" | "non_member";
742
+ answerCount: number;
743
+ } | {
744
+ id: string;
745
+ options: {
746
+ max_length: number;
747
+ };
748
+ kind: "text";
749
+ counts: null;
750
+ average: null;
751
+ distribution: null;
752
+ responseCount: number;
753
+ position: number;
754
+ prompt: string;
755
+ audience: "all" | "member" | "non_member";
756
+ answerCount: number;
757
+ })[];
758
+ responses: {
759
+ id: string;
760
+ channel: "email" | "site" | "direct";
761
+ submittedAt: string;
762
+ respondentSegment: "member" | "non_member" | "unknown";
763
+ anonymous: boolean;
764
+ }[];
765
+ freeText: {
766
+ value: string;
767
+ submittedAt: string;
768
+ questionId: string;
769
+ responseId: string;
770
+ }[];
771
+ }>, {
772
+ survey: {
773
+ id: string;
774
+ status: "draft" | "active" | "closed";
775
+ title: string;
776
+ responseCount: number;
777
+ };
778
+ questions: ({
779
+ id: string;
780
+ options: string[];
781
+ kind: "single_choice";
782
+ counts: Record<string, number>;
783
+ average: null;
784
+ distribution: null;
785
+ responseCount: null;
786
+ position: number;
787
+ prompt: string;
788
+ audience: "all" | "member" | "non_member";
789
+ answerCount: number;
790
+ } | {
791
+ id: string;
792
+ options: string[];
793
+ kind: "multi_choice";
794
+ counts: Record<string, number>;
795
+ average: null;
796
+ distribution: null;
797
+ responseCount: null;
798
+ position: number;
799
+ prompt: string;
800
+ audience: "all" | "member" | "non_member";
801
+ answerCount: number;
802
+ } | {
803
+ id: string;
804
+ options: {
805
+ min: number;
806
+ max: number;
807
+ };
808
+ kind: "scale";
809
+ counts: null;
810
+ average: number | null;
811
+ distribution: Record<string, number>;
812
+ responseCount: null;
813
+ position: number;
814
+ prompt: string;
815
+ audience: "all" | "member" | "non_member";
816
+ answerCount: number;
817
+ } | {
818
+ id: string;
819
+ options: {
820
+ max_length: number;
821
+ };
822
+ kind: "text";
823
+ counts: null;
824
+ average: null;
825
+ distribution: null;
826
+ responseCount: number;
827
+ position: number;
828
+ prompt: string;
829
+ audience: "all" | "member" | "non_member";
830
+ answerCount: number;
831
+ })[];
832
+ responses: {
833
+ id: string;
834
+ channel: "email" | "site" | "direct";
835
+ submittedAt: string;
836
+ respondentSegment: "member" | "non_member" | "unknown";
837
+ anonymous: boolean;
838
+ }[];
839
+ freeText: {
840
+ value: string;
841
+ submittedAt: string;
842
+ questionId: string;
843
+ responseId: string;
844
+ }[];
845
+ }, {
846
+ survey: {
847
+ id: string;
848
+ status: "draft" | "active" | "closed";
849
+ title: string;
850
+ responseCount: number;
851
+ };
852
+ questions: ({
853
+ id: string;
854
+ options: string[];
855
+ kind: "single_choice";
856
+ counts: Record<string, number>;
857
+ average: null;
858
+ distribution: null;
859
+ responseCount: null;
860
+ position: number;
861
+ prompt: string;
862
+ audience: "all" | "member" | "non_member";
863
+ answerCount: number;
864
+ } | {
865
+ id: string;
866
+ options: string[];
867
+ kind: "multi_choice";
868
+ counts: Record<string, number>;
869
+ average: null;
870
+ distribution: null;
871
+ responseCount: null;
872
+ position: number;
873
+ prompt: string;
874
+ audience: "all" | "member" | "non_member";
875
+ answerCount: number;
876
+ } | {
877
+ id: string;
878
+ options: {
879
+ min: number;
880
+ max: number;
881
+ };
882
+ kind: "scale";
883
+ counts: null;
884
+ average: number | null;
885
+ distribution: Record<string, number>;
886
+ responseCount: null;
887
+ position: number;
888
+ prompt: string;
889
+ audience: "all" | "member" | "non_member";
890
+ answerCount: number;
891
+ } | {
892
+ id: string;
893
+ options: {
894
+ max_length: number;
895
+ };
896
+ kind: "text";
897
+ counts: null;
898
+ average: null;
899
+ distribution: null;
900
+ responseCount: number;
901
+ position: number;
902
+ prompt: string;
903
+ audience: "all" | "member" | "non_member";
904
+ answerCount: number;
905
+ })[];
906
+ responses: {
907
+ id: string;
908
+ channel: "email" | "site" | "direct";
909
+ submittedAt: string;
910
+ respondentSegment: "member" | "non_member" | "unknown";
911
+ anonymous: boolean;
912
+ }[];
913
+ freeText: {
914
+ value: string;
915
+ submittedAt: string;
916
+ questionId: string;
917
+ responseId: string;
918
+ }[];
919
+ }>;
920
+ export declare const SurveyCsvResultSchema: z.ZodEffects<z.ZodObject<{
921
+ filename: z.ZodString;
922
+ content: z.ZodString;
923
+ }, "strict", z.ZodTypeAny, {
924
+ content: string;
925
+ filename: string;
926
+ }, {
927
+ content: string;
928
+ filename: string;
929
+ }>, {
930
+ content: string;
931
+ filename: string;
932
+ }, {
933
+ content: string;
934
+ filename: string;
935
+ }>;
936
+ export type SurveyQuestion = z.infer<typeof SurveyQuestionSchema>;
937
+ export type SurveyResults = z.infer<typeof SurveyResultsSchema>;
938
+ export type SurveyCsvResult = z.infer<typeof SurveyCsvResultSchema>;
939
+ //# sourceMappingURL=schema.d.ts.map