@betterinternship/core 2.7.0 → 2.8.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.
@@ -0,0 +1,20 @@
1
+ import type { ValidatorIRv0 } from './validator-ir.js';
2
+ export type FieldPresetTemplate = {
3
+ id: string;
4
+ name: string;
5
+ label: string;
6
+ type: 'text' | 'signature' | 'image';
7
+ source: 'auto' | 'prefill' | 'derived' | 'manual';
8
+ shared: boolean;
9
+ tag: string;
10
+ preset: string;
11
+ prefiller: string;
12
+ tooltip_label: string;
13
+ validator: string;
14
+ validator_ir: ValidatorIRv0 | null;
15
+ is_phantom: boolean;
16
+ party?: string;
17
+ disabled?: boolean;
18
+ };
19
+ export declare const FIELD_PRESET_TEMPLATES: FieldPresetTemplate[];
20
+ export declare function getFieldPresetTemplates(): FieldPresetTemplate[];
@@ -0,0 +1,230 @@
1
+ const TEXT_PREPROCESS = `z.preprocess((v) => ((v ?? null) == null ? "" : (typeof v === "string" ? v.trim() : v)), `;
2
+ const SHORT_TEXT_VALIDATOR = `${TEXT_PREPROCESS}z.string())`;
3
+ const LONG_TEXT_VALIDATOR = `${TEXT_PREPROCESS}z.string().describe("textarea"))`;
4
+ const NUMBER_VALIDATOR = 'z.number()';
5
+ const SIGNATURE_VALIDATOR = `${TEXT_PREPROCESS}z.string().nonempty({ message: "This field is required." }))`;
6
+ const DROPDOWN_VALIDATOR = `z.enum(["Option 1", "Option 2"], {message:"This field is required."})`;
7
+ const MULTISELECT_VALIDATOR = `z.array(
8
+ z.enum(
9
+ [
10
+ "Option 1",
11
+ "Option 2"
12
+ ],
13
+ { message: "This field is required." }
14
+ )
15
+ ).describe("multiselect")`;
16
+ const DATE_VALIDATOR = 'z.coerce.date()';
17
+ const TIME_VALIDATOR = `${TEXT_PREPROCESS}z.string().regex(/^([01]\\\\d|2[0-3]):([0-5]\\\\d)$/, { message: "Invalid time format." }).describe("time"))`;
18
+ const EMAIL_VALIDATOR = `${TEXT_PREPROCESS}z.string().email())`;
19
+ const URL_VALIDATOR = `${TEXT_PREPROCESS}z.string().url())`;
20
+ const PHONE_NUMBER_VALIDATOR = `${TEXT_PREPROCESS}z.string().regex(/^\\+?[0-9()\\-\\s]{7,20}$/, { message: "Please enter a valid phone number." }))`;
21
+ const baseIr = (baseType, rules) => ({
22
+ version: 0,
23
+ baseType,
24
+ rules,
25
+ mode: 'builder',
26
+ importStatus: 'exact',
27
+ });
28
+ export const FIELD_PRESET_TEMPLATES = [
29
+ {
30
+ id: 'preset-short-text',
31
+ name: 'short_text',
32
+ label: 'Short Text',
33
+ type: 'text',
34
+ source: 'manual',
35
+ shared: true,
36
+ tag: 'preset',
37
+ preset: 'preset',
38
+ prefiller: '',
39
+ tooltip_label: '',
40
+ validator: SHORT_TEXT_VALIDATOR,
41
+ validator_ir: baseIr('text', []),
42
+ is_phantom: false,
43
+ },
44
+ {
45
+ id: 'preset-long-text',
46
+ name: 'long_text',
47
+ label: 'Long Text',
48
+ type: 'text',
49
+ source: 'manual',
50
+ shared: true,
51
+ tag: 'preset',
52
+ preset: 'preset',
53
+ prefiller: '',
54
+ tooltip_label: '',
55
+ validator: LONG_TEXT_VALIDATOR,
56
+ validator_ir: baseIr('textarea', []),
57
+ is_phantom: false,
58
+ },
59
+ {
60
+ id: 'preset-number',
61
+ name: 'number',
62
+ label: 'Number',
63
+ type: 'text',
64
+ source: 'manual',
65
+ shared: true,
66
+ tag: 'preset',
67
+ preset: 'preset',
68
+ prefiller: '',
69
+ tooltip_label: '',
70
+ validator: NUMBER_VALIDATOR,
71
+ validator_ir: baseIr('number', []),
72
+ is_phantom: false,
73
+ },
74
+ {
75
+ id: 'preset-signature',
76
+ name: 'signature',
77
+ label: 'Signature',
78
+ type: 'signature',
79
+ source: 'manual',
80
+ shared: true,
81
+ tag: 'preset',
82
+ preset: 'preset',
83
+ prefiller: '',
84
+ tooltip_label: '',
85
+ validator: SIGNATURE_VALIDATOR,
86
+ validator_ir: baseIr('signature', [{ kind: 'required' }]),
87
+ is_phantom: false,
88
+ },
89
+ {
90
+ id: 'preset-dropdown',
91
+ name: 'dropdown',
92
+ label: 'Dropdown',
93
+ type: 'text',
94
+ source: 'manual',
95
+ shared: true,
96
+ tag: 'preset',
97
+ preset: 'preset',
98
+ prefiller: '',
99
+ tooltip_label: '',
100
+ validator: DROPDOWN_VALIDATOR,
101
+ validator_ir: baseIr('enum', [{ kind: 'enum', options: ['Option 1', 'Option 2'] }]),
102
+ is_phantom: false,
103
+ },
104
+ {
105
+ id: 'preset-multiselect',
106
+ name: 'multiselect',
107
+ label: 'Multiselect',
108
+ type: 'text',
109
+ source: 'manual',
110
+ shared: true,
111
+ tag: 'preset',
112
+ preset: 'preset',
113
+ prefiller: '',
114
+ tooltip_label: '',
115
+ validator: MULTISELECT_VALIDATOR,
116
+ validator_ir: baseIr('array', [{ kind: 'array', options: ['Option 1', 'Option 2'] }]),
117
+ is_phantom: false,
118
+ },
119
+ {
120
+ id: 'preset-date',
121
+ name: 'date',
122
+ label: 'Date',
123
+ type: 'text',
124
+ source: 'manual',
125
+ shared: true,
126
+ tag: 'preset',
127
+ preset: 'preset',
128
+ prefiller: '',
129
+ tooltip_label: '',
130
+ validator: DATE_VALIDATOR,
131
+ validator_ir: baseIr('date', []),
132
+ is_phantom: false,
133
+ },
134
+ {
135
+ id: 'preset-time',
136
+ name: 'time',
137
+ label: 'Time',
138
+ type: 'text',
139
+ source: 'manual',
140
+ shared: true,
141
+ tag: 'preset',
142
+ preset: 'preset',
143
+ prefiller: '',
144
+ tooltip_label: '',
145
+ validator: TIME_VALIDATOR,
146
+ validator_ir: baseIr('time', []),
147
+ is_phantom: false,
148
+ },
149
+ {
150
+ id: 'preset-divider-contact',
151
+ name: 'divider_contact',
152
+ label: '____________',
153
+ type: 'text',
154
+ source: 'manual',
155
+ shared: true,
156
+ tag: 'preset',
157
+ preset: 'preset',
158
+ prefiller: '',
159
+ tooltip_label: '',
160
+ validator: '',
161
+ validator_ir: null,
162
+ is_phantom: false,
163
+ disabled: true,
164
+ },
165
+ {
166
+ id: 'preset-url',
167
+ name: 'url',
168
+ label: 'URL',
169
+ type: 'text',
170
+ source: 'manual',
171
+ shared: true,
172
+ tag: 'preset',
173
+ preset: 'preset',
174
+ prefiller: '',
175
+ tooltip_label: '',
176
+ validator: URL_VALIDATOR,
177
+ validator_ir: baseIr('text', [{ kind: 'url' }]),
178
+ is_phantom: false,
179
+ },
180
+ {
181
+ id: 'preset-phone-number',
182
+ name: 'phone_number',
183
+ label: 'Phone Number',
184
+ type: 'text',
185
+ source: 'manual',
186
+ shared: true,
187
+ tag: 'preset',
188
+ preset: 'preset',
189
+ prefiller: '',
190
+ tooltip_label: '',
191
+ validator: PHONE_NUMBER_VALIDATOR,
192
+ validator_ir: baseIr('text', [
193
+ {
194
+ kind: 'regex',
195
+ pattern: '^\\+?[0-9()\\-\\s]{7,20}$',
196
+ message: 'Please enter a valid phone number.',
197
+ },
198
+ ]),
199
+ is_phantom: false,
200
+ },
201
+ {
202
+ id: 'preset-email',
203
+ name: 'email',
204
+ label: 'Email',
205
+ type: 'text',
206
+ source: 'manual',
207
+ shared: true,
208
+ tag: 'preset',
209
+ preset: 'preset',
210
+ prefiller: '',
211
+ tooltip_label: '',
212
+ validator: EMAIL_VALIDATOR,
213
+ validator_ir: baseIr('text', [{ kind: 'email' }]),
214
+ is_phantom: false,
215
+ },
216
+ ];
217
+ export function getFieldPresetTemplates() {
218
+ return FIELD_PRESET_TEMPLATES.map((preset) => ({
219
+ ...preset,
220
+ validator_ir: preset.validator_ir
221
+ ? {
222
+ ...preset.validator_ir,
223
+ rules: Array.isArray(preset.validator_ir.rules)
224
+ ? preset.validator_ir.rules.map((rule) => ({ ...rule }))
225
+ : [],
226
+ }
227
+ : null,
228
+ }));
229
+ }
230
+ //# sourceMappingURL=field-preset-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-preset-templates.js","sourceRoot":"","sources":["../../../lib/forms/field-preset-templates.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from './constants/fonts.js';
2
2
  export * from './form-metadata.js';
3
3
  export * from './validator-ir.js';
4
+ export * from './field-preset-templates.js';
4
5
  export * from './fields.client.js';
5
6
  export * from './fields.server.js';
@@ -1,6 +1,7 @@
1
1
  export * from './constants/fonts.js';
2
2
  export * from './form-metadata.js';
3
3
  export * from './validator-ir.js';
4
+ export * from './field-preset-templates.js';
4
5
  export * from './fields.client.js';
5
6
  export * from './fields.server.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/forms/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/forms/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}