@ydtb/tk-scope-capture 0.22.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.
- package/LICENSE +21 -0
- package/dist/src/client/pages/CaptureBuilderPage.d.ts +2 -0
- package/dist/src/client/pages/CaptureBuilderPage.d.ts.map +1 -0
- package/dist/src/client/pages/CaptureBuilderPage.js +308 -0
- package/dist/src/client/pages/CaptureBuilderPage.js.map +1 -0
- package/dist/src/client/pages/CaptureSubmissionDetailPage.d.ts +2 -0
- package/dist/src/client/pages/CaptureSubmissionDetailPage.d.ts.map +1 -0
- package/dist/src/client/pages/CaptureSubmissionDetailPage.js +64 -0
- package/dist/src/client/pages/CaptureSubmissionDetailPage.js.map +1 -0
- package/dist/src/client/pages/CaptureSubmissionsPage.d.ts +2 -0
- package/dist/src/client/pages/CaptureSubmissionsPage.d.ts.map +1 -0
- package/dist/src/client/pages/CaptureSubmissionsPage.js +22 -0
- package/dist/src/client/pages/CaptureSubmissionsPage.js.map +1 -0
- package/dist/src/client/pages/PublicFormPage.d.ts +2 -0
- package/dist/src/client/pages/PublicFormPage.d.ts.map +1 -0
- package/dist/src/client/pages/PublicFormPage.js +62 -0
- package/dist/src/client/pages/PublicFormPage.js.map +1 -0
- package/dist/src/client/pages/PublicQuizPage.d.ts +2 -0
- package/dist/src/client/pages/PublicQuizPage.d.ts.map +1 -0
- package/dist/src/client/pages/PublicQuizPage.js +87 -0
- package/dist/src/client/pages/PublicQuizPage.js.map +1 -0
- package/dist/src/client/pages/QuizBuilderPage.d.ts +2 -0
- package/dist/src/client/pages/QuizBuilderPage.d.ts.map +1 -0
- package/dist/src/client/pages/QuizBuilderPage.js +118 -0
- package/dist/src/client/pages/QuizBuilderPage.js.map +1 -0
- package/dist/src/client.d.ts +617 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +39 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/server/api/action-adapters.d.ts +93 -0
- package/dist/src/server/api/action-adapters.d.ts.map +1 -0
- package/dist/src/server/api/action-adapters.js +147 -0
- package/dist/src/server/api/action-adapters.js.map +1 -0
- package/dist/src/server/api/router.d.ts +621 -0
- package/dist/src/server/api/router.d.ts.map +1 -0
- package/dist/src/server/api/router.js +903 -0
- package/dist/src/server/api/router.js.map +1 -0
- package/dist/src/server.d.ts +3 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +15 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/shared/conditions.d.ts +5 -0
- package/dist/src/shared/conditions.d.ts.map +1 -0
- package/dist/src/shared/conditions.js +39 -0
- package/dist/src/shared/conditions.js.map +1 -0
- package/dist/src/shared/db/schema.d.ts +983 -0
- package/dist/src/shared/db/schema.d.ts.map +1 -0
- package/dist/src/shared/db/schema.js +113 -0
- package/dist/src/shared/db/schema.js.map +1 -0
- package/dist/src/shared/field-types.d.ts +7 -0
- package/dist/src/shared/field-types.d.ts.map +1 -0
- package/dist/src/shared/field-types.js +116 -0
- package/dist/src/shared/field-types.js.map +1 -0
- package/dist/src/shared/scoring.d.ts +3 -0
- package/dist/src/shared/scoring.d.ts.map +1 -0
- package/dist/src/shared/scoring.js +47 -0
- package/dist/src/shared/scoring.js.map +1 -0
- package/dist/src/shared/templates.d.ts +20 -0
- package/dist/src/shared/templates.d.ts.map +1 -0
- package/dist/src/shared/templates.js +122 -0
- package/dist/src/shared/templates.js.map +1 -0
- package/dist/src/shared/tool.d.ts +2 -0
- package/dist/src/shared/tool.d.ts.map +1 -0
- package/dist/src/shared/tool.js +7 -0
- package/dist/src/shared/tool.js.map +1 -0
- package/dist/src/shared/types.d.ts +251 -0
- package/dist/src/shared/types.d.ts.map +1 -0
- package/dist/src/shared/types.js +10 -0
- package/dist/src/shared/types.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/shared/db/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB9B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AAEzE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB/B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,YAAY,CAAA;AACxE,MAAM,MAAM,qBAAqB,GAAG,OAAO,mBAAmB,CAAC,YAAY,CAAA;AAE3E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC9B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AAEzE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyB1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA;AAEjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA;AACpE,MAAM,MAAM,mBAAmB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { pgTable, text, timestamp, jsonb, index, uniqueIndex } from "@ydtb/tk-scope-db/pg-core";
|
|
2
|
+
import { generateId } from "@ydtb/tk-scope-db/id";
|
|
3
|
+
import { scopeColumns, scopeForeignKey, scopeIndex } from "@ydtb/tk-scope-db/columns";
|
|
4
|
+
export const captureDefinitions = pgTable("capture_definitions", {
|
|
5
|
+
id: text("id")
|
|
6
|
+
.primaryKey()
|
|
7
|
+
.$defaultFn(() => generateId()),
|
|
8
|
+
...scopeColumns(),
|
|
9
|
+
surface: text("surface").notNull().default("form"),
|
|
10
|
+
name: text("name").notNull(),
|
|
11
|
+
slug: text("slug").notNull(),
|
|
12
|
+
status: text("status").notNull().default("draft"),
|
|
13
|
+
fields: jsonb("fields").$type().notNull().default([]),
|
|
14
|
+
actionConfig: jsonb("actionConfig").$type().notNull().default({}),
|
|
15
|
+
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
|
16
|
+
updatedAt: timestamp("updatedAt").defaultNow().notNull(),
|
|
17
|
+
}, (table) => [
|
|
18
|
+
scopeForeignKey(table),
|
|
19
|
+
scopeIndex(table),
|
|
20
|
+
uniqueIndex("capture_definitions_scope_scopeId_slug_idx").on(table.scope, table.scopeId, table.slug),
|
|
21
|
+
index("capture_definitions_scope_scopeId_surface_idx").on(table.scope, table.scopeId, table.surface),
|
|
22
|
+
]);
|
|
23
|
+
export const capturePublications = pgTable("capture_publications", {
|
|
24
|
+
id: text("id")
|
|
25
|
+
.primaryKey()
|
|
26
|
+
.$defaultFn(() => generateId()),
|
|
27
|
+
...scopeColumns(),
|
|
28
|
+
definitionId: text("definitionId")
|
|
29
|
+
.notNull()
|
|
30
|
+
.references(() => captureDefinitions.id, { onDelete: "cascade" }),
|
|
31
|
+
slug: text("slug").notNull(),
|
|
32
|
+
status: text("status").notNull().default("active"),
|
|
33
|
+
security: jsonb("security").$type().notNull().default({}),
|
|
34
|
+
revokedAt: timestamp("revokedAt"),
|
|
35
|
+
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
|
36
|
+
updatedAt: timestamp("updatedAt").defaultNow().notNull(),
|
|
37
|
+
}, (table) => [
|
|
38
|
+
scopeForeignKey(table),
|
|
39
|
+
scopeIndex(table),
|
|
40
|
+
uniqueIndex("capture_publications_slug_idx").on(table.slug),
|
|
41
|
+
uniqueIndex("capture_publications_definitionId_idx").on(table.definitionId),
|
|
42
|
+
]);
|
|
43
|
+
export const captureSubmissions = pgTable("capture_submissions", {
|
|
44
|
+
id: text("id")
|
|
45
|
+
.primaryKey()
|
|
46
|
+
.$defaultFn(() => generateId()),
|
|
47
|
+
...scopeColumns(),
|
|
48
|
+
definitionId: text("definitionId")
|
|
49
|
+
.notNull()
|
|
50
|
+
.references(() => captureDefinitions.id, { onDelete: "cascade" }),
|
|
51
|
+
publicationId: text("publicationId").references(() => capturePublications.id, { onDelete: "set null" }),
|
|
52
|
+
source: text("source").notNull().default("public"),
|
|
53
|
+
snapshot: jsonb("snapshot").$type().notNull(),
|
|
54
|
+
respondent: jsonb("respondent").$type().notNull().default({}),
|
|
55
|
+
respondentKey: text("respondentKey"),
|
|
56
|
+
submittedAt: timestamp("submittedAt").defaultNow().notNull(),
|
|
57
|
+
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
|
58
|
+
}, (table) => [
|
|
59
|
+
scopeForeignKey(table),
|
|
60
|
+
scopeIndex(table),
|
|
61
|
+
index("capture_submissions_scope_scopeId_definitionId_idx").on(table.scope, table.scopeId, table.definitionId),
|
|
62
|
+
index("capture_submissions_scope_scopeId_submittedAt_idx").on(table.scope, table.scopeId, table.submittedAt),
|
|
63
|
+
index("capture_submissions_publicationId_respondentKey_idx").on(table.publicationId, table.respondentKey),
|
|
64
|
+
]);
|
|
65
|
+
export const captureAnswers = pgTable("capture_answers", {
|
|
66
|
+
id: text("id")
|
|
67
|
+
.primaryKey()
|
|
68
|
+
.$defaultFn(() => generateId()),
|
|
69
|
+
...scopeColumns(),
|
|
70
|
+
submissionId: text("submissionId")
|
|
71
|
+
.notNull()
|
|
72
|
+
.references(() => captureSubmissions.id, { onDelete: "cascade" }),
|
|
73
|
+
definitionId: text("definitionId")
|
|
74
|
+
.notNull()
|
|
75
|
+
.references(() => captureDefinitions.id, { onDelete: "cascade" }),
|
|
76
|
+
fieldId: text("fieldId").notNull(),
|
|
77
|
+
fieldKey: text("fieldKey").notNull(),
|
|
78
|
+
value: jsonb("value").$type().notNull(),
|
|
79
|
+
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
|
80
|
+
}, (table) => [
|
|
81
|
+
scopeForeignKey(table),
|
|
82
|
+
scopeIndex(table),
|
|
83
|
+
index("capture_answers_submissionId_idx").on(table.submissionId),
|
|
84
|
+
index("capture_answers_scope_scopeId_definitionId_idx").on(table.scope, table.scopeId, table.definitionId),
|
|
85
|
+
index("capture_answers_fieldKey_idx").on(table.fieldKey),
|
|
86
|
+
]);
|
|
87
|
+
export const captureActionRuns = pgTable("capture_action_runs", {
|
|
88
|
+
id: text("id")
|
|
89
|
+
.primaryKey()
|
|
90
|
+
.$defaultFn(() => generateId()),
|
|
91
|
+
...scopeColumns(),
|
|
92
|
+
submissionId: text("submissionId")
|
|
93
|
+
.notNull()
|
|
94
|
+
.references(() => captureSubmissions.id, { onDelete: "cascade" }),
|
|
95
|
+
definitionId: text("definitionId")
|
|
96
|
+
.notNull()
|
|
97
|
+
.references(() => captureDefinitions.id, { onDelete: "cascade" }),
|
|
98
|
+
actionType: text("actionType").notNull(),
|
|
99
|
+
status: text("status").notNull(),
|
|
100
|
+
contactId: text("contactId"),
|
|
101
|
+
result: jsonb("result").$type(),
|
|
102
|
+
error: jsonb("error").$type(),
|
|
103
|
+
manualAttempts: jsonb("manualAttempts").$type().notNull().default([]),
|
|
104
|
+
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
|
105
|
+
updatedAt: timestamp("updatedAt").defaultNow().notNull(),
|
|
106
|
+
}, (table) => [
|
|
107
|
+
scopeForeignKey(table),
|
|
108
|
+
scopeIndex(table),
|
|
109
|
+
index("capture_action_runs_submissionId_idx").on(table.submissionId),
|
|
110
|
+
index("capture_action_runs_scope_scopeId_definitionId_idx").on(table.scope, table.scopeId, table.definitionId),
|
|
111
|
+
index("capture_action_runs_contactId_idx").on(table.contactId),
|
|
112
|
+
]);
|
|
113
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/shared/db/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CaptureAnswerValue, CaptureFieldDefinition, CaptureFieldTypeContribution } from "./types.ts";
|
|
2
|
+
export declare const BASE_CAPTURE_FIELD_TYPES: CaptureFieldTypeContribution[];
|
|
3
|
+
export declare const REFERENCE_CAPTURE_FIELD_TYPES: CaptureFieldTypeContribution[];
|
|
4
|
+
export declare function getCaptureFieldType(fieldType: string, contributions?: CaptureFieldTypeContribution[]): CaptureFieldTypeContribution;
|
|
5
|
+
export declare function normalizeCaptureAnswer(field: CaptureFieldDefinition, value: CaptureAnswerValue | undefined, contributions?: CaptureFieldTypeContribution[]): CaptureAnswerValue;
|
|
6
|
+
export declare function validateCaptureAnswer(field: CaptureFieldDefinition, value: CaptureAnswerValue, contributions?: CaptureFieldTypeContribution[]): string | null;
|
|
7
|
+
//# sourceMappingURL=field-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/shared/field-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAE1G,eAAO,MAAM,wBAAwB,EAAE,4BAA4B,EA6DlE,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,4BAA4B,EAavE,CAAA;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,4BAA4B,EAAO,GACjD,4BAA4B,CAG9B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,aAAa,GAAE,4BAA4B,EAAO,GACjD,kBAAkB,CAgBpB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,kBAAkB,EACzB,aAAa,GAAE,4BAA4B,EAAO,GACjD,MAAM,GAAG,IAAI,CAcf"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export const BASE_CAPTURE_FIELD_TYPES = [
|
|
2
|
+
{
|
|
3
|
+
id: "text",
|
|
4
|
+
kind: "field",
|
|
5
|
+
label: "Text",
|
|
6
|
+
description: "Single-line response field",
|
|
7
|
+
icon: "Type",
|
|
8
|
+
renderer: "text",
|
|
9
|
+
defaultField: { type: "text", label: "Text", required: false },
|
|
10
|
+
validation: { requiredAware: true },
|
|
11
|
+
normalization: { valueKind: "string", trim: true },
|
|
12
|
+
mapping: { compatibleTargets: ["text", "name", "custom"] },
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "email",
|
|
16
|
+
kind: "field",
|
|
17
|
+
label: "Email",
|
|
18
|
+
description: "Email address field",
|
|
19
|
+
icon: "Mail",
|
|
20
|
+
renderer: "email",
|
|
21
|
+
defaultField: { type: "email", label: "Email", required: true },
|
|
22
|
+
validation: { requiredAware: true },
|
|
23
|
+
normalization: { valueKind: "string", trim: true },
|
|
24
|
+
mapping: { compatibleTargets: ["email", "custom"] },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "phone",
|
|
28
|
+
kind: "field",
|
|
29
|
+
label: "Phone",
|
|
30
|
+
description: "Phone number field",
|
|
31
|
+
icon: "Phone",
|
|
32
|
+
renderer: "phone",
|
|
33
|
+
defaultField: { type: "phone", label: "Phone", required: false },
|
|
34
|
+
validation: { requiredAware: true },
|
|
35
|
+
normalization: { valueKind: "string", trim: true },
|
|
36
|
+
mapping: { compatibleTargets: ["phone", "custom"] },
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "textarea",
|
|
40
|
+
kind: "field",
|
|
41
|
+
label: "Textarea",
|
|
42
|
+
description: "Long-form response field",
|
|
43
|
+
icon: "AlignLeft",
|
|
44
|
+
renderer: "textarea",
|
|
45
|
+
defaultField: { type: "textarea", label: "Textarea", required: false },
|
|
46
|
+
validation: { requiredAware: true },
|
|
47
|
+
normalization: { valueKind: "string", trim: true },
|
|
48
|
+
mapping: { compatibleTargets: ["text", "custom"] },
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "select",
|
|
52
|
+
kind: "field",
|
|
53
|
+
label: "Select",
|
|
54
|
+
description: "Single-choice option field",
|
|
55
|
+
icon: "ListTree",
|
|
56
|
+
renderer: "select",
|
|
57
|
+
defaultField: { type: "select", label: "Select", required: false, options: ["Option 1", "Option 2"] },
|
|
58
|
+
validation: { requiredAware: true },
|
|
59
|
+
normalization: { valueKind: "string", trim: true },
|
|
60
|
+
mapping: { compatibleTargets: ["text", "custom"] },
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
export const REFERENCE_CAPTURE_FIELD_TYPES = [
|
|
64
|
+
{
|
|
65
|
+
id: "rating",
|
|
66
|
+
kind: "field",
|
|
67
|
+
label: "Rating",
|
|
68
|
+
description: "Contributed 1–5 rating field",
|
|
69
|
+
icon: "Star",
|
|
70
|
+
renderer: "rating",
|
|
71
|
+
defaultField: { type: "rating", label: "Rating", required: false, metadata: { min: 1, max: 5 } },
|
|
72
|
+
validation: { requiredAware: true, min: 1, max: 5 },
|
|
73
|
+
normalization: { valueKind: "number" },
|
|
74
|
+
mapping: { compatibleTargets: ["number", "custom"] },
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
export function getCaptureFieldType(fieldType, contributions = []) {
|
|
78
|
+
return [...BASE_CAPTURE_FIELD_TYPES, ...contributions].find((definition) => definition.id === fieldType)
|
|
79
|
+
?? BASE_CAPTURE_FIELD_TYPES[0];
|
|
80
|
+
}
|
|
81
|
+
export function normalizeCaptureAnswer(field, value, contributions = []) {
|
|
82
|
+
const definition = getCaptureFieldType(field.type, contributions);
|
|
83
|
+
if (value === undefined || value === null)
|
|
84
|
+
return null;
|
|
85
|
+
if (definition.normalization.valueKind === "number") {
|
|
86
|
+
const numberValue = typeof value === "number" ? value : Number(value);
|
|
87
|
+
return Number.isFinite(numberValue) ? numberValue : null;
|
|
88
|
+
}
|
|
89
|
+
if (definition.normalization.valueKind === "stringArray") {
|
|
90
|
+
return Array.isArray(value) ? value.map(String) : [String(value)];
|
|
91
|
+
}
|
|
92
|
+
if (typeof value === "string")
|
|
93
|
+
return definition.normalization.trim ? value.trim() : value;
|
|
94
|
+
if (Array.isArray(value))
|
|
95
|
+
return value.join(", ");
|
|
96
|
+
return String(value);
|
|
97
|
+
}
|
|
98
|
+
export function validateCaptureAnswer(field, value, contributions = []) {
|
|
99
|
+
const definition = getCaptureFieldType(field.type, contributions);
|
|
100
|
+
const isEmpty = value === null || value === "" || (Array.isArray(value) && value.length === 0);
|
|
101
|
+
if (field.required && isEmpty)
|
|
102
|
+
return `${field.label} is required`;
|
|
103
|
+
if (isEmpty)
|
|
104
|
+
return null;
|
|
105
|
+
if (definition.validation?.min !== undefined || definition.validation?.max !== undefined) {
|
|
106
|
+
const numberValue = typeof value === "number" ? value : Number(value);
|
|
107
|
+
if (!Number.isFinite(numberValue))
|
|
108
|
+
return `${field.label} must be a number`;
|
|
109
|
+
if (definition.validation.min !== undefined && numberValue < definition.validation.min)
|
|
110
|
+
return `${field.label} must be at least ${definition.validation.min}`;
|
|
111
|
+
if (definition.validation.max !== undefined && numberValue > definition.validation.max)
|
|
112
|
+
return `${field.label} must be at most ${definition.validation.max}`;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=field-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-types.js","sourceRoot":"","sources":["../../../src/shared/field-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAmC;IACtE;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,4BAA4B;QACzC,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC9D,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QACnC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAClD,OAAO,EAAE,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;KAC3D;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/D,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QACnC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAClD,OAAO,EAAE,EAAE,iBAAiB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;KACpD;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;QAChE,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QACnC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAClD,OAAO,EAAE,EAAE,iBAAiB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;KACpD;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;QACtE,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QACnC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAClD,OAAO,EAAE,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;KACnD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,4BAA4B;QACzC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;QACrG,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QACnC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAClD,OAAO,EAAE,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;KACnD;CACF,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAmC;IAC3E;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QAChG,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QACnD,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACtC,OAAO,EAAE,EAAE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;KACrD;CACF,CAAA;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,gBAAgD,EAAE;IAElD,OAAO,CAAC,GAAG,wBAAwB,EAAE,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,SAAS,CAAC;WACnG,wBAAwB,CAAC,CAAC,CAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAA6B,EAC7B,KAAqC,EACrC,gBAAgD,EAAE;IAElD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACjE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtD,IAAI,UAAU,CAAC,aAAa,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrE,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1D,CAAC;IAED,IAAI,UAAU,CAAC,aAAa,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1F,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAA6B,EAC7B,KAAyB,EACzB,gBAAgD,EAAE;IAElD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACjE,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IAC9F,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO;QAAE,OAAO,GAAG,KAAK,CAAC,KAAK,cAAc,CAAA;IAClE,IAAI,OAAO;QAAE,OAAO,IAAI,CAAA;IAExB,IAAI,UAAU,CAAC,UAAU,EAAE,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;QACzF,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,GAAG,KAAK,CAAC,KAAK,mBAAmB,CAAA;QAC3E,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG;YAAE,OAAO,GAAG,KAAK,CAAC,KAAK,qBAAqB,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;QAC7J,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG;YAAE,OAAO,GAAG,KAAK,CAAC,KAAK,oBAAoB,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;IAC9J,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CaptureAnswerValue, CaptureQuizOutcomeResult, CaptureQuizScoringConfig } from "./types.ts";
|
|
2
|
+
export declare function evaluateQuizOutcome(config: CaptureQuizScoringConfig | undefined, answers: Record<string, CaptureAnswerValue>): CaptureQuizOutcomeResult | undefined;
|
|
3
|
+
//# sourceMappingURL=scoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/shared/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,YAAY,CAAA;AAsBnB,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC1C,wBAAwB,GAAG,SAAS,CA2BtC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function answerMatches(value, expected) {
|
|
2
|
+
if (Array.isArray(value))
|
|
3
|
+
return value.map(String).includes(String(expected ?? ""));
|
|
4
|
+
return String(value ?? "") === String(expected ?? "");
|
|
5
|
+
}
|
|
6
|
+
function stableHash(input) {
|
|
7
|
+
let hash = 5381;
|
|
8
|
+
for (let index = 0; index < input.length; index += 1) {
|
|
9
|
+
hash = (hash * 33) ^ input.charCodeAt(index);
|
|
10
|
+
}
|
|
11
|
+
return (hash >>> 0).toString(16);
|
|
12
|
+
}
|
|
13
|
+
function findOutcome(outcomes, key, score) {
|
|
14
|
+
if (key)
|
|
15
|
+
return outcomes.find((outcome) => outcome.key === key);
|
|
16
|
+
return outcomes
|
|
17
|
+
.filter((outcome) => (outcome.minScore ?? Number.NEGATIVE_INFINITY) <= score)
|
|
18
|
+
.sort((a, b) => (b.minScore ?? Number.NEGATIVE_INFINITY) - (a.minScore ?? Number.NEGATIVE_INFINITY))[0];
|
|
19
|
+
}
|
|
20
|
+
export function evaluateQuizOutcome(config, answers) {
|
|
21
|
+
if (!config?.enabled || config.outcomes.length === 0)
|
|
22
|
+
return undefined;
|
|
23
|
+
const matchedRules = [];
|
|
24
|
+
let score = 0;
|
|
25
|
+
let forcedOutcomeKey;
|
|
26
|
+
for (const rule of config.rules) {
|
|
27
|
+
if (!answerMatches(answers[rule.fieldKey], rule.equals))
|
|
28
|
+
continue;
|
|
29
|
+
matchedRules.push(rule);
|
|
30
|
+
score += rule.score ?? 0;
|
|
31
|
+
forcedOutcomeKey = rule.outcomeKey ?? forcedOutcomeKey;
|
|
32
|
+
}
|
|
33
|
+
const outcome = findOutcome(config.outcomes, forcedOutcomeKey, score) ?? config.outcomes[0];
|
|
34
|
+
if (!outcome)
|
|
35
|
+
return undefined;
|
|
36
|
+
return {
|
|
37
|
+
id: outcome.id,
|
|
38
|
+
key: outcome.key,
|
|
39
|
+
label: outcome.label,
|
|
40
|
+
bucket: outcome.bucket ?? outcome.key,
|
|
41
|
+
scoreSummary: { score, maxScore: config.rules.reduce((sum, rule) => sum + Math.max(0, rule.score ?? 0), 0) },
|
|
42
|
+
matchedRuleIds: matchedRules.map((rule) => rule.id),
|
|
43
|
+
configVersion: config.version,
|
|
44
|
+
configHash: stableHash(JSON.stringify(config)),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=scoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/shared/scoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CaptureActionConfig, CaptureFieldDefinition, CaptureQuizScoringConfig } from "./types.ts";
|
|
2
|
+
export interface CaptureFormTemplate {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
description: string;
|
|
6
|
+
title: string;
|
|
7
|
+
fields: CaptureFieldDefinition[];
|
|
8
|
+
actionConfig?: CaptureActionConfig;
|
|
9
|
+
}
|
|
10
|
+
export interface CaptureQuizTemplate {
|
|
11
|
+
id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
description: string;
|
|
14
|
+
title: string;
|
|
15
|
+
fields: CaptureFieldDefinition[];
|
|
16
|
+
scoring: CaptureQuizScoringConfig;
|
|
17
|
+
}
|
|
18
|
+
export declare const CAPTURE_FORM_TEMPLATES: CaptureFormTemplate[];
|
|
19
|
+
export declare const CAPTURE_QUIZ_TEMPLATES: CaptureQuizTemplate[];
|
|
20
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/shared/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAEvG,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,EAAE,CAAA;IAChC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,EAAE,CAAA;IAChC,OAAO,EAAE,wBAAwB,CAAA;CAClC;AAID,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EA0CvD,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EA4EvD,CAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
const page = (id, title) => ({ quizPageId: id, quizPageTitle: title });
|
|
2
|
+
export const CAPTURE_FORM_TEMPLATES = [
|
|
3
|
+
{
|
|
4
|
+
id: "opt-in",
|
|
5
|
+
label: "Opt-in form",
|
|
6
|
+
description: "A low-friction signup with warm promise copy and email capture.",
|
|
7
|
+
title: "Stay in the loop",
|
|
8
|
+
fields: [
|
|
9
|
+
{ id: "optin-name", key: "name", label: "First name", type: "text", required: false },
|
|
10
|
+
{ id: "optin-email", key: "email", label: "Best email", type: "email", required: true },
|
|
11
|
+
{ id: "optin-interest", key: "interest", label: "What would be most useful right now?", type: "select", required: false, options: ["A simple checklist", "A deeper guide", "A short consult", "I'm still exploring"] },
|
|
12
|
+
],
|
|
13
|
+
actionConfig: { contacts: { enabled: false, emailFieldKey: "email", nameFieldKey: "name", customFieldMappings: { capture_interest: "interest" } } },
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "contact-request",
|
|
17
|
+
label: "Contact / request form",
|
|
18
|
+
description: "A straightforward request form that collects context without feeling heavy.",
|
|
19
|
+
title: "Tell us what you need",
|
|
20
|
+
fields: [
|
|
21
|
+
{ id: "request-name", key: "name", label: "Your name", type: "text", required: true },
|
|
22
|
+
{ id: "request-email", key: "email", label: "Email", type: "email", required: true },
|
|
23
|
+
{ id: "request-phone", key: "phone", label: "Phone", type: "phone", required: false },
|
|
24
|
+
{ id: "request-topic", key: "topic", label: "What is this about?", type: "select", required: true, options: ["New project", "Support", "Partnership", "Something else"] },
|
|
25
|
+
{ id: "request-message", key: "message", label: "A few helpful details", type: "textarea", required: true },
|
|
26
|
+
],
|
|
27
|
+
actionConfig: { contacts: { enabled: false, emailFieldKey: "email", nameFieldKey: "name", phoneFieldKey: "phone", customFieldMappings: { request_topic: "topic" } } },
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: "client-intake",
|
|
31
|
+
label: "Client intake form",
|
|
32
|
+
description: "A coaching-style intake that captures goals, timing, and constraints.",
|
|
33
|
+
title: "Start with the right context",
|
|
34
|
+
fields: [
|
|
35
|
+
{ id: "intake-name", key: "name", label: "Name", type: "text", required: true },
|
|
36
|
+
{ id: "intake-email", key: "email", label: "Email", type: "email", required: true },
|
|
37
|
+
{ id: "intake-goal", key: "primary_goal", label: "What outcome are you hoping for?", type: "textarea", required: true },
|
|
38
|
+
{ id: "intake-stage", key: "stage", label: "Where are you now?", type: "select", required: true, options: ["Just getting started", "Validating a direction", "Actively building", "Ready to scale"] },
|
|
39
|
+
{ id: "intake-timeline", key: "timeline", label: "Ideal timeline", type: "select", required: false, options: ["This month", "This quarter", "Later this year", "No fixed timeline"] },
|
|
40
|
+
{ id: "intake-constraints", key: "constraints", label: "Anything we should work around?", type: "textarea", required: false },
|
|
41
|
+
],
|
|
42
|
+
actionConfig: { contacts: { enabled: false, emailFieldKey: "email", nameFieldKey: "name", customFieldMappings: { client_stage: "stage", client_timeline: "timeline" } } },
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
export const CAPTURE_QUIZ_TEMPLATES = [
|
|
46
|
+
{
|
|
47
|
+
id: "readiness",
|
|
48
|
+
label: "Readiness quiz",
|
|
49
|
+
description: "Helps a respondent see whether they are ready for the next step.",
|
|
50
|
+
title: "Is now the right time?",
|
|
51
|
+
fields: [
|
|
52
|
+
{ id: "ready-goal", key: "clear_goal", label: "Do you have a clear outcome in mind?", type: "select", required: true, options: ["yes", "not yet", "partly"], metadata: page("readiness-basics", "Start with clarity") },
|
|
53
|
+
{ id: "ready-owner", key: "owner", label: "Is there one person who can own follow-through?", type: "select", required: true, options: ["yes", "no", "not sure"], metadata: page("readiness-basics", "Start with clarity") },
|
|
54
|
+
{ id: "ready-time", key: "timeline", label: "When would you like to move?", type: "select", required: true, options: ["now", "soon", "later"], metadata: page("readiness-momentum", "Check momentum") },
|
|
55
|
+
],
|
|
56
|
+
scoring: {
|
|
57
|
+
enabled: true,
|
|
58
|
+
version: 1,
|
|
59
|
+
outcomes: [
|
|
60
|
+
{ id: "readiness-ready", key: "ready", label: "Ready for a focused next step", bucket: "ready", minScore: 3 },
|
|
61
|
+
{ id: "readiness-prepare", key: "prepare", label: "Almost ready — clarify a few pieces first", bucket: "prepare", minScore: 1 },
|
|
62
|
+
{ id: "readiness-explore", key: "explore", label: "Best next step: explore gently", bucket: "explore", minScore: 0 },
|
|
63
|
+
],
|
|
64
|
+
rules: [
|
|
65
|
+
{ id: "ready-goal-yes", fieldKey: "clear_goal", equals: "yes", score: 1 },
|
|
66
|
+
{ id: "ready-owner-yes", fieldKey: "owner", equals: "yes", score: 1 },
|
|
67
|
+
{ id: "ready-time-now", fieldKey: "timeline", equals: "now", score: 1 },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "recommendation",
|
|
73
|
+
label: "Recommendation quiz",
|
|
74
|
+
description: "Guides respondents toward a practical recommendation path.",
|
|
75
|
+
title: "Find your best next move",
|
|
76
|
+
fields: [
|
|
77
|
+
{ id: "rec-focus", key: "focus", label: "What needs the most attention?", type: "select", required: true, options: ["strategy", "systems", "support"], metadata: page("rec-context", "Name the pressure") },
|
|
78
|
+
{ id: "rec-capacity", key: "capacity", label: "How much capacity do you have this month?", type: "select", required: true, options: ["low", "medium", "high"], metadata: page("rec-context", "Name the pressure") },
|
|
79
|
+
{ id: "rec-confidence", key: "confidence", label: "How confident do you feel about the next step?", type: "rating", required: true, metadata: { ...page("rec-fit", "Shape the recommendation"), min: 1, max: 5 } },
|
|
80
|
+
],
|
|
81
|
+
scoring: {
|
|
82
|
+
enabled: true,
|
|
83
|
+
version: 1,
|
|
84
|
+
outcomes: [
|
|
85
|
+
{ id: "rec-accelerate", key: "accelerate", label: "Accelerate with a focused plan", bucket: "accelerate", minScore: 4 },
|
|
86
|
+
{ id: "rec-stabilize", key: "stabilize", label: "Stabilize the foundation first", bucket: "stabilize", minScore: 2 },
|
|
87
|
+
{ id: "rec-simplify", key: "simplify", label: "Simplify before adding more", bucket: "simplify", minScore: 0 },
|
|
88
|
+
],
|
|
89
|
+
rules: [
|
|
90
|
+
{ id: "rec-capacity-high", fieldKey: "capacity", equals: "high", score: 2 },
|
|
91
|
+
{ id: "rec-confidence-4", fieldKey: "confidence", equals: 4, score: 1 },
|
|
92
|
+
{ id: "rec-confidence-5", fieldKey: "confidence", equals: 5, score: 2, outcomeKey: "accelerate" },
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: "segmentation",
|
|
98
|
+
label: "Segmentation quiz",
|
|
99
|
+
description: "Routes respondents into useful buckets for follow-up and content.",
|
|
100
|
+
title: "Choose the support that fits",
|
|
101
|
+
fields: [
|
|
102
|
+
{ id: "seg-role", key: "role", label: "Which description fits you best?", type: "select", required: true, options: ["founder", "operator", "creator", "advisor"], metadata: page("seg-profile", "A little context") },
|
|
103
|
+
{ id: "seg-priority", key: "priority", label: "What kind of support would help most?", type: "select", required: true, options: ["clarity", "implementation", "accountability"], metadata: page("seg-profile", "A little context") },
|
|
104
|
+
{ id: "seg-style", key: "style", label: "What pace feels sustainable?", type: "select", required: true, options: ["steady", "sprint", "light-touch"], metadata: page("seg-followup", "Match the follow-up") },
|
|
105
|
+
],
|
|
106
|
+
scoring: {
|
|
107
|
+
enabled: true,
|
|
108
|
+
version: 1,
|
|
109
|
+
outcomes: [
|
|
110
|
+
{ id: "seg-builder", key: "builder", label: "Builder track", bucket: "builder", minScore: 2 },
|
|
111
|
+
{ id: "seg-guide", key: "guide", label: "Guided clarity track", bucket: "guide", minScore: 1 },
|
|
112
|
+
{ id: "seg-nurture", key: "nurture", label: "Nurture track", bucket: "nurture", minScore: 0 },
|
|
113
|
+
],
|
|
114
|
+
rules: [
|
|
115
|
+
{ id: "seg-implementation", fieldKey: "priority", equals: "implementation", score: 2, outcomeKey: "builder" },
|
|
116
|
+
{ id: "seg-clarity", fieldKey: "priority", equals: "clarity", score: 1, outcomeKey: "guide" },
|
|
117
|
+
{ id: "seg-sprint", fieldKey: "style", equals: "sprint", score: 1 },
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
];
|
|
122
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/shared/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/shared/tool.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,8CAIlB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/shared/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;IAChC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAA"}
|