@betterinternship/core 2.7.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+ group?: 'core' | 'format';
8
+ source: 'auto' | 'prefill' | 'derived' | 'manual';
9
+ shared: boolean;
10
+ tag: string;
11
+ preset: string;
12
+ prefiller: string;
13
+ tooltip_label: string;
14
+ validator: string;
15
+ validator_ir: ValidatorIRv0 | null;
16
+ is_phantom: boolean;
17
+ party?: string;
18
+ };
19
+ export declare const FIELD_PRESET_TEMPLATES: FieldPresetTemplate[];
20
+ export declare function getFieldPresetTemplates(): FieldPresetTemplate[];
@@ -0,0 +1,225 @@
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 = 'z.string().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
+ group: 'core',
35
+ source: 'manual',
36
+ shared: true,
37
+ tag: 'preset',
38
+ preset: 'preset',
39
+ prefiller: '',
40
+ tooltip_label: '',
41
+ validator: SHORT_TEXT_VALIDATOR,
42
+ validator_ir: baseIr('text', []),
43
+ is_phantom: false,
44
+ },
45
+ {
46
+ id: 'preset-long-text',
47
+ name: 'long_text',
48
+ label: 'Long Text',
49
+ type: 'text',
50
+ group: 'core',
51
+ source: 'manual',
52
+ shared: true,
53
+ tag: 'preset',
54
+ preset: 'preset',
55
+ prefiller: '',
56
+ tooltip_label: '',
57
+ validator: LONG_TEXT_VALIDATOR,
58
+ validator_ir: baseIr('textarea', []),
59
+ is_phantom: false,
60
+ },
61
+ {
62
+ id: 'preset-number',
63
+ name: 'number',
64
+ label: 'Number',
65
+ type: 'text',
66
+ group: 'core',
67
+ source: 'manual',
68
+ shared: true,
69
+ tag: 'preset',
70
+ preset: 'preset',
71
+ prefiller: '',
72
+ tooltip_label: '',
73
+ validator: NUMBER_VALIDATOR,
74
+ validator_ir: baseIr('number', []),
75
+ is_phantom: false,
76
+ },
77
+ {
78
+ id: 'preset-signature',
79
+ name: 'signature',
80
+ label: 'Signature',
81
+ type: 'signature',
82
+ group: 'core',
83
+ source: 'manual',
84
+ shared: true,
85
+ tag: 'preset',
86
+ preset: 'preset',
87
+ prefiller: '',
88
+ tooltip_label: '',
89
+ validator: SIGNATURE_VALIDATOR,
90
+ validator_ir: baseIr('signature', [{ kind: 'required' }]),
91
+ is_phantom: false,
92
+ },
93
+ {
94
+ id: 'preset-dropdown',
95
+ name: 'dropdown',
96
+ label: 'Dropdown',
97
+ type: 'text',
98
+ group: 'core',
99
+ source: 'manual',
100
+ shared: true,
101
+ tag: 'preset',
102
+ preset: 'preset',
103
+ prefiller: '',
104
+ tooltip_label: '',
105
+ validator: DROPDOWN_VALIDATOR,
106
+ validator_ir: baseIr('enum', [{ kind: 'enum', options: ['Option 1', 'Option 2'] }]),
107
+ is_phantom: false,
108
+ },
109
+ {
110
+ id: 'preset-multiselect',
111
+ name: 'multiselect',
112
+ label: 'Multiselect',
113
+ type: 'text',
114
+ group: 'core',
115
+ source: 'manual',
116
+ shared: true,
117
+ tag: 'preset',
118
+ preset: 'preset',
119
+ prefiller: '',
120
+ tooltip_label: '',
121
+ validator: MULTISELECT_VALIDATOR,
122
+ validator_ir: baseIr('array', [{ kind: 'array', options: ['Option 1', 'Option 2'] }]),
123
+ is_phantom: false,
124
+ },
125
+ {
126
+ id: 'preset-date',
127
+ name: 'date',
128
+ label: 'Date',
129
+ type: 'text',
130
+ group: 'core',
131
+ source: 'manual',
132
+ shared: true,
133
+ tag: 'preset',
134
+ preset: 'preset',
135
+ prefiller: '',
136
+ tooltip_label: '',
137
+ validator: DATE_VALIDATOR,
138
+ validator_ir: baseIr('date', []),
139
+ is_phantom: false,
140
+ },
141
+ {
142
+ id: 'preset-time',
143
+ name: 'time',
144
+ label: 'Time',
145
+ type: 'text',
146
+ group: 'core',
147
+ source: 'manual',
148
+ shared: true,
149
+ tag: 'preset',
150
+ preset: 'preset',
151
+ prefiller: '',
152
+ tooltip_label: '',
153
+ validator: TIME_VALIDATOR,
154
+ validator_ir: baseIr('time', []),
155
+ is_phantom: false,
156
+ },
157
+ {
158
+ id: 'preset-url',
159
+ name: 'url',
160
+ label: 'URL',
161
+ type: 'text',
162
+ group: 'format',
163
+ source: 'manual',
164
+ shared: true,
165
+ tag: 'preset',
166
+ preset: 'preset',
167
+ prefiller: '',
168
+ tooltip_label: '',
169
+ validator: URL_VALIDATOR,
170
+ validator_ir: baseIr('text', [{ kind: 'url' }]),
171
+ is_phantom: false,
172
+ },
173
+ {
174
+ id: 'preset-phone-number',
175
+ name: 'phone_number',
176
+ label: 'Phone Number',
177
+ type: 'text',
178
+ group: 'format',
179
+ source: 'manual',
180
+ shared: true,
181
+ tag: 'preset',
182
+ preset: 'preset',
183
+ prefiller: '',
184
+ tooltip_label: '',
185
+ validator: PHONE_NUMBER_VALIDATOR,
186
+ validator_ir: baseIr('text', [
187
+ {
188
+ kind: 'regex',
189
+ pattern: '^\\+?[0-9()\\-\\s]{7,20}$',
190
+ message: 'Please enter a valid phone number.',
191
+ },
192
+ ]),
193
+ is_phantom: false,
194
+ },
195
+ {
196
+ id: 'preset-email',
197
+ name: 'email',
198
+ label: 'Email',
199
+ type: 'text',
200
+ group: 'format',
201
+ source: 'manual',
202
+ shared: true,
203
+ tag: 'preset',
204
+ preset: 'preset',
205
+ prefiller: '',
206
+ tooltip_label: '',
207
+ validator: EMAIL_VALIDATOR,
208
+ validator_ir: baseIr('text', [{ kind: 'email' }]),
209
+ is_phantom: false,
210
+ },
211
+ ];
212
+ export function getFieldPresetTemplates() {
213
+ return FIELD_PRESET_TEMPLATES.map((preset) => ({
214
+ ...preset,
215
+ validator_ir: preset.validator_ir
216
+ ? {
217
+ ...preset.validator_ir,
218
+ rules: Array.isArray(preset.validator_ir.rules)
219
+ ? preset.validator_ir.rules.map((rule) => ({ ...rule }))
220
+ : [],
221
+ }
222
+ : null,
223
+ }));
224
+ }
225
+ //# 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"}