@dereekb/dbx-components-mcp 13.10.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,2556 @@
1
+ {
2
+ "version": 1,
3
+ "source": "@dereekb/dbx-form",
4
+ "module": "@dereekb/dbx-form",
5
+ "generatedAt": "1970-01-01T00:00:00.000Z",
6
+ "generator": "@dereekb/dbx-components-mcp/scripts/generate-manifests.mjs",
7
+ "entries": [
8
+ {
9
+ "slug": "password-field",
10
+ "factoryName": "dbxForgeTextPasswordField",
11
+ "tier": "field-derivative",
12
+ "produces": "string",
13
+ "arrayOutput": "no",
14
+ "description": "Password input (HTML `type=\"password\"`) with secure autocomplete defaults.\n\nDefaults to the key `'password'` and label `'Password'` unless overridden.",
15
+ "sourcePath": "template/login.ts",
16
+ "example": "dbxForgeTextPasswordField({ key: 'password', required: true })",
17
+ "properties": [],
18
+ "composesFromSlugs": [
19
+ "text"
20
+ ],
21
+ "configInterface": "DbxForgeTextPasswordFieldConfig",
22
+ "sourceLocation": {
23
+ "file": "src/lib/forge/template/login.ts",
24
+ "line": 54
25
+ }
26
+ },
27
+ {
28
+ "slug": "verify-password-field",
29
+ "factoryName": "dbxForgeTextVerifyPasswordField",
30
+ "tier": "field-derivative",
31
+ "produces": "string",
32
+ "arrayOutput": "no",
33
+ "description": "Companion to `password-field` for sign-up flows. Defaults `autocomplete` to `new-password`. Pair with `password-with-verify-fields` for cross-field equality validation.\n\nDefaults to the key `'verifyPassword'` and label `'Verify Password'` unless overridden.",
34
+ "sourcePath": "template/login.ts",
35
+ "example": "dbxForgeTextVerifyPasswordField({ key: 'verifyPassword' })",
36
+ "properties": [],
37
+ "composesFromSlugs": [
38
+ "password-field"
39
+ ],
40
+ "configInterface": "DbxForgeTextPasswordFieldConfig",
41
+ "sourceLocation": {
42
+ "file": "src/lib/forge/template/login.ts",
43
+ "line": 85
44
+ }
45
+ },
46
+ {
47
+ "slug": "password-with-verify-fields",
48
+ "factoryName": "dbxForgeTextPasswordWithVerifyField",
49
+ "tier": "template-builder",
50
+ "produces": "FieldDef[]",
51
+ "arrayOutput": "no",
52
+ "description": "Password + verify-password pair with cross-field equality validation wired up. Drop-in for sign-up flows.\n\nThe verify password field uses an expression-based custom validator that compares the\nverify field value against the primary password field's value via `formValue`.",
53
+ "sourcePath": "template/login.ts",
54
+ "example": "dbxForgeTextPasswordWithVerifyField({ password: { required: true } })",
55
+ "properties": [
56
+ {
57
+ "name": "password",
58
+ "type": "DbxForgeTextPasswordFieldConfig",
59
+ "description": "Optional configuration for the primary password field.",
60
+ "required": false
61
+ },
62
+ {
63
+ "name": "verifyPassword",
64
+ "type": "DbxForgeTextPasswordFieldConfig",
65
+ "description": "Optional configuration for the verify/confirm password field.",
66
+ "required": false
67
+ }
68
+ ],
69
+ "composesFromSlugs": [
70
+ "password-field",
71
+ "verify-password-field"
72
+ ],
73
+ "configInterface": "DbxForgeTextPasswordWithVerifyFieldConfig",
74
+ "sourceLocation": {
75
+ "file": "src/lib/forge/template/login.ts",
76
+ "line": 131
77
+ }
78
+ },
79
+ {
80
+ "slug": "username-password-login-fields",
81
+ "factoryName": "dbxForgeUsernamePasswordLoginFields",
82
+ "tier": "template-builder",
83
+ "produces": "FieldDef[]",
84
+ "arrayOutput": "no",
85
+ "description": "Complete login/signup field set: username, password, and optional verify-password. Drop into the top-level `fields: []`.\n\nWhen `verifyPassword` is provided, a second password field is added with a custom\nvalidator that ensures both password values match.",
86
+ "sourcePath": "template/login.ts",
87
+ "example": "dbxForgeUsernamePasswordLoginFields({ username: 'email', verifyPassword: true })",
88
+ "properties": [
89
+ {
90
+ "name": "username",
91
+ "type": "DbxForgeUsernameLoginFieldUsernameConfigInput",
92
+ "description": "Username field configuration. Use `'email'` or `'username'` for defaults,\nor provide a custom config.",
93
+ "required": true
94
+ },
95
+ {
96
+ "name": "password",
97
+ "type": "DbxForgeTextPasswordFieldConfig",
98
+ "description": "Optional configuration for the password field.",
99
+ "required": false
100
+ },
101
+ {
102
+ "name": "verifyPassword",
103
+ "type": "Maybe<boolean | DbxForgeTextPasswordFieldConfig>",
104
+ "description": "Whether to include a verify password field, or a custom configuration for it.\nSet to `true` for defaults, `false`/`undefined` to omit, or pass a config object.",
105
+ "required": false
106
+ }
107
+ ],
108
+ "composesFromSlugs": [
109
+ "username-login-field",
110
+ "password-field",
111
+ "verify-password-field"
112
+ ],
113
+ "configInterface": "DbxForgeUsernameLoginFieldsConfig",
114
+ "sourceLocation": {
115
+ "file": "src/lib/forge/template/login.ts",
116
+ "line": 229
117
+ }
118
+ },
119
+ {
120
+ "slug": "username-login-field",
121
+ "factoryName": "dbxForgeUsernameLoginField",
122
+ "tier": "field-derivative",
123
+ "produces": "string",
124
+ "arrayOutput": "no",
125
+ "description": "Username field for login forms. Accepts `\"email\"` or `\"username\"` as shorthand presets, or a full config object.\n\nSupports email or plain text input based on the provided configuration.",
126
+ "sourcePath": "template/login.ts",
127
+ "example": "dbxForgeUsernameLoginField({ username: 'email' })",
128
+ "properties": [
129
+ {
130
+ "name": "email",
131
+ "type": "Omit<DbxForgeEmailFieldConfig, 'key'>",
132
+ "description": "Configuration for an email-based username field.",
133
+ "required": false
134
+ },
135
+ {
136
+ "name": "username",
137
+ "type": "Omit<DbxForgeTextFieldConfig, 'key'>",
138
+ "description": "Configuration for a plain text username field.",
139
+ "required": false
140
+ }
141
+ ],
142
+ "composesFromSlugs": [
143
+ "text"
144
+ ],
145
+ "configInterface": "DbxForgeUsernameLoginFieldUsernameConfigInput",
146
+ "sourceLocation": {
147
+ "file": "src/lib/forge/template/login.ts",
148
+ "line": 270
149
+ }
150
+ },
151
+ {
152
+ "slug": "checklist",
153
+ "factoryName": "dbxForgeChecklistField",
154
+ "tier": "field-factory",
155
+ "produces": "T[]",
156
+ "arrayOutput": "yes",
157
+ "description": "Multi-checkbox group. Use for small static option sets where every option is visible at once.",
158
+ "sourcePath": "field/checklist/checklist.field.ts",
159
+ "example": "dbxForgeChecklistField<string>({ key: 'flags', props: { options: [{ value: 'a', label: 'A' }, { value: 'b', label: 'B' }] } })",
160
+ "properties": [],
161
+ "wrapperPattern": "unwrapped",
162
+ "ngFormType": "multi-checkbox",
163
+ "generic": "<T = unknown>",
164
+ "configInterface": "DbxForgeChecklistFieldConfig<T>",
165
+ "sourceLocation": {
166
+ "file": "src/lib/forge/field/checklist/checklist.field.ts",
167
+ "line": 41
168
+ }
169
+ },
170
+ {
171
+ "slug": "component-field",
172
+ "factoryName": "dbxForgeComponentField",
173
+ "tier": "field-factory",
174
+ "produces": "T",
175
+ "arrayOutput": "no",
176
+ "description": "Escape hatch — injects any Angular component as the field renderer via DbxInjection. Use when no existing form field fits.\n\nUses {@link DbxInjectionComponent} to dynamically inject any Angular component\ninto the form. Generates a unique key when none is provided so that ng-forge's\nfield reconciliation treats each config change as a new field instance.",
177
+ "sourcePath": "field/component/component.field.ts",
178
+ "example": "dbxForgeComponentField<MyValue>({ key: 'custom', props: { component: MyCustomComp } })",
179
+ "properties": [
180
+ {
181
+ "name": "props",
182
+ "type": "DbxForgeComponentFieldProps<T>",
183
+ "description": "",
184
+ "required": true
185
+ },
186
+ {
187
+ "name": "key",
188
+ "type": "string",
189
+ "description": "Key for the field. Optional for display-only components.",
190
+ "required": false
191
+ },
192
+ {
193
+ "name": "componentField (props)",
194
+ "type": "DbxInjectionComponentConfig<T>",
195
+ "description": "The injection component configuration that describes which component to render.",
196
+ "required": true
197
+ },
198
+ {
199
+ "name": "allowDisabledEffects (props)",
200
+ "type": "boolean",
201
+ "description": "Whether to visually indicate the disabled state on this component.\n\nDefaults to `true`. Set to `false` for display-only components that should\nremain visually unchanged when the form is disabled.",
202
+ "required": false
203
+ }
204
+ ],
205
+ "wrapperPattern": "unwrapped",
206
+ "ngFormType": "component",
207
+ "generic": "<T = unknown>",
208
+ "configInterface": "DbxForgeComponentFieldConfig<T>",
209
+ "sourceLocation": {
210
+ "file": "src/lib/forge/field/component/component.field.ts",
211
+ "line": 71
212
+ }
213
+ },
214
+ {
215
+ "slug": "value-selection",
216
+ "factoryName": "dbxForgeValueSelectionField",
217
+ "tier": "field-factory",
218
+ "produces": "T",
219
+ "arrayOutput": "no",
220
+ "description": "Single-select dropdown over a static or async value list. Simpler than `source-select` when metadata lookup is unnecessary.\n\nThe component uses `<mat-form-field>` with `[formField]` for native ng-forge value binding,\nproper Material rendering, and built-in logic (hidden/disabled/readonly) support.\n\nSupports static arrays, Observable option sources, and `ValueSelectionOptionClear` entries.",
221
+ "sourcePath": "field/selection/selection.field.ts",
222
+ "example": "dbxForgeValueSelectionField<string>({ key: 'status', props: { options: [{ value: 'active', label: 'Active' }] } })",
223
+ "properties": [
224
+ {
225
+ "name": "props",
226
+ "type": "DbxForgeValueSelectionFieldProps<T>",
227
+ "description": "",
228
+ "required": true
229
+ },
230
+ {
231
+ "name": "options (props)",
232
+ "type": "ObservableOrValue<ValueSelectionOption<T>[]>",
233
+ "description": "Options to select from.\n\nAccepts a static array or an Observable that emits option arrays.\nOptions may include {@link ValueSelectionOptionClear} entries with `clear: true`.",
234
+ "required": true
235
+ },
236
+ {
237
+ "name": "addClearOption (props)",
238
+ "type": "boolean | string",
239
+ "description": "When true or a string, adds a clear/reset option at the top of the options list.\nIf a string is provided, it is used as the clear option label.\n\nIf the options already contain a clear option, no additional one is added.",
240
+ "required": false
241
+ }
242
+ ],
243
+ "wrapperPattern": "material-form-field-wrapped",
244
+ "ngFormType": "dbx-value-selection",
245
+ "generic": "<T = unknown>",
246
+ "configInterface": "DbxForgeValueSelectionFieldConfig<T>",
247
+ "sourceLocation": {
248
+ "file": "src/lib/forge/field/selection/selection.field.ts",
249
+ "line": 56
250
+ }
251
+ },
252
+ {
253
+ "slug": "text-editor",
254
+ "factoryName": "dbxForgeTextEditorField",
255
+ "tier": "field-factory",
256
+ "produces": "string",
257
+ "arrayOutput": "no",
258
+ "description": "Rich HTML text editor (ngx-editor). Output is the serialized HTML string.\n\nUses ngx-editor under the hood, outputting HTML format.\nThe field defaults to an empty string.",
259
+ "sourcePath": "field/texteditor/texteditor.field.ts",
260
+ "example": "dbxForgeTextEditorField({ key: 'content', label: 'Body', maxLength: 10000 })",
261
+ "properties": [
262
+ {
263
+ "name": "minLength (props)",
264
+ "type": "number",
265
+ "description": "Minimum text length.",
266
+ "required": false
267
+ },
268
+ {
269
+ "name": "maxLength (props)",
270
+ "type": "number",
271
+ "description": "Maximum text length.",
272
+ "required": false
273
+ },
274
+ {
275
+ "name": "hint (props)",
276
+ "type": "string",
277
+ "description": "Hint text shown below the editor.",
278
+ "required": false
279
+ }
280
+ ],
281
+ "wrapperPattern": "unwrapped",
282
+ "ngFormType": "texteditor",
283
+ "configInterface": "DbxForgeTextEditorFieldConfig",
284
+ "sourceLocation": {
285
+ "file": "src/lib/forge/field/texteditor/texteditor.field.ts",
286
+ "line": 34
287
+ }
288
+ },
289
+ {
290
+ "slug": "row",
291
+ "factoryName": "dbxForgeRow",
292
+ "tier": "primitive",
293
+ "produces": "RowField",
294
+ "arrayOutput": "no",
295
+ "description": "Flex row that lays child fields out in columns. Child fields typically carry a `col` property (1–12) for grid placement.\n\nUses the `@ng-forge/dynamic-forms` `RowField` type with a 12-column grid system.\nEach child field can specify a `col` value (1-12) for responsive sizing.",
296
+ "sourcePath": "field/wrapper/wrapper.ts",
297
+ "example": "dbxForgeRow({ fields: [ { ...dbxForgeTextField({ key: 'first' }), col: 6 }, { ...dbxForgeTextField({ key: 'last' }), col: 6 } ] })",
298
+ "properties": [
299
+ {
300
+ "name": "key",
301
+ "type": "string",
302
+ "description": "Optional key for the row. Defaults to a unique auto-generated key.\n\nMust be unique within the form config to avoid ng-forge duplicate key errors.",
303
+ "required": false
304
+ }
305
+ ],
306
+ "returns": "RowField",
307
+ "configInterface": "DbxForgeRowConfig",
308
+ "sourceLocation": {
309
+ "file": "src/lib/forge/field/wrapper/wrapper.ts",
310
+ "line": 57
311
+ }
312
+ },
313
+ {
314
+ "slug": "group",
315
+ "factoryName": "dbxForgeGroup",
316
+ "tier": "primitive",
317
+ "produces": "GroupField",
318
+ "arrayOutput": "no",
319
+ "description": "Creates a plain ng-forge `group` field. A group produces a nested object in\nthe form value under its `key`, so the key is semantically significant and\nmust be chosen deliberately.\n\nFor visual-only grouping (conditional visibility, layout wrappers, shared\nCSS class) that should NOT introduce a nested object in the form value, use\n{@link dbxForgeContainer} instead — that is what ng-forge's `container`\nfield type is for.\n\nFor sections with headers, use the section wrapper type instead.",
320
+ "sourcePath": "field/wrapper/wrapper.ts",
321
+ "example": "// Groups the address sub-fields under an `address` property in the form value.\nconst group = dbxForgeGroup({\n key: 'address',\n fields: [\n dbxForgeTextField({ key: 'city', label: 'City' }),\n dbxForgeTextField({ key: 'state', label: 'State' })\n ]\n});\n\n// Resulting form value shape:\n// { address: { city: '...', state: '...' } }",
322
+ "properties": [],
323
+ "returns": "GroupField",
324
+ "configInterface": "DbxForgeGroupConfig",
325
+ "sourceLocation": {
326
+ "file": "src/lib/forge/field/wrapper/wrapper.ts",
327
+ "line": 124
328
+ }
329
+ },
330
+ {
331
+ "slug": "toggle-wrapper",
332
+ "factoryName": "dbxForgeToggleWrapper",
333
+ "tier": "composite-builder",
334
+ "produces": "RowField",
335
+ "arrayOutput": "no",
336
+ "description": "Wraps content fields in a Material slide toggle — the toggle state controls conditional visibility of the inner fields.\n\nUses ng-forge's built-in `toggle` field type (MatSlideToggle) and\n`FieldValueCondition` for conditional visibility. The toggle boolean value\nIS part of the form model. The hidden content is wrapped in a `container`\n(not a `group`), so the wrapped fields sit at the same level as the toggle\nin the form value — they are NOT nested under an extra object.\n\nStructure produced:\n```\nRow (outer)\n ├── toggle field (type: 'toggle', boolean value)\n └── Container (content, hidden when toggle === false)\n```\n\nThis is the forge equivalent of the formly `formlyToggleWrapper`.",
337
+ "sourcePath": "field/wrapper/wrapper.ts",
338
+ "example": "const toggle = dbxForgeToggleWrapper({\n key: 'showAdvanced',\n label: 'Show advanced options',\n fields: [\n dbxForgeTextField({ key: 'advanced1', label: 'Option 1' }),\n dbxForgeTextField({ key: 'advanced2', label: 'Option 2' })\n ]\n});\n\n// Resulting form value (flat — no nesting under the container):\n// { showAdvanced: true, advanced1: '...', advanced2: '...' }",
339
+ "properties": [
340
+ {
341
+ "name": "fields",
342
+ "type": "FieldDef<unknown>[]",
343
+ "description": "Fields to show/hide based on the toggle state.",
344
+ "required": true
345
+ },
346
+ {
347
+ "name": "label",
348
+ "type": "string",
349
+ "description": "Label for the toggle control.",
350
+ "required": false
351
+ },
352
+ {
353
+ "name": "key",
354
+ "type": "string",
355
+ "description": "Key for the toggle boolean field. Defaults to auto-generated `_toggle_N`.",
356
+ "required": false
357
+ },
358
+ {
359
+ "name": "className",
360
+ "type": "string",
361
+ "description": "Optional CSS class name applied to the outer row container.",
362
+ "required": false
363
+ },
364
+ {
365
+ "name": "defaultOpen",
366
+ "type": "boolean",
367
+ "description": "Whether the toggle starts in the open state. Defaults to false.",
368
+ "required": false
369
+ },
370
+ {
371
+ "name": "contentKey",
372
+ "type": "string",
373
+ "description": "Optional key for the content container. Auto-generated if omitted.\n\nThe container does not add a property to the form value; this is only a\nstable identifier for the container field.",
374
+ "required": false
375
+ }
376
+ ],
377
+ "suffix": "Wrapper",
378
+ "composesFromSlugs": [
379
+ "toggle",
380
+ "group"
381
+ ],
382
+ "configInterface": "DbxForgeToggleWrapperConfig",
383
+ "sourceLocation": {
384
+ "file": "src/lib/forge/field/wrapper/wrapper.ts",
385
+ "line": 290
386
+ }
387
+ },
388
+ {
389
+ "slug": "expand-wrapper",
390
+ "factoryName": "dbxForgeExpandWrapper",
391
+ "tier": "composite-builder",
392
+ "produces": "RowField",
393
+ "arrayOutput": "no",
394
+ "description": "Wraps content fields behind a button or text \"expand\" control. Use for optional sections like \"Show advanced options\".\n\nUses a custom `dbx-forge-expand` field type for the expand trigger and\n`FieldValueCondition` for conditional visibility on the content. The\nexpand boolean value IS part of the form model. The hidden content is\nwrapped in a `container` (not a `group`), so the wrapped fields sit at the\nsame level as the expand control in the form value — they are NOT nested\nunder an extra object.\n\nStructure produced:\n```\nRow (outer)\n ├── expand field (type: 'dbx-forge-expand', boolean value)\n └── Container (content, hidden when expand field === false)\n```\n\nThis is the forge equivalent of the formly `formlyExpandWrapper`.",
395
+ "sourcePath": "field/wrapper/wrapper.ts",
396
+ "example": "const expand = dbxForgeExpandWrapper({\n key: 'showMore',\n label: 'Show more options',\n buttonType: 'button',\n fields: [\n dbxForgeTextField({ key: 'extra1', label: 'Extra 1' }),\n dbxForgeTextField({ key: 'extra2', label: 'Extra 2' })\n ]\n});\n\n// Resulting form value (flat — no nesting under the container):\n// { showMore: true, extra1: '...', extra2: '...' }",
397
+ "properties": [
398
+ {
399
+ "name": "fields",
400
+ "type": "FieldDef<unknown>[]",
401
+ "description": "Fields to show/hide when the expand control is toggled.",
402
+ "required": true
403
+ },
404
+ {
405
+ "name": "label",
406
+ "type": "string",
407
+ "description": "Label for the expand trigger.",
408
+ "required": false
409
+ },
410
+ {
411
+ "name": "buttonType",
412
+ "type": "DbxForgeExpandButtonType",
413
+ "description": "Visual style for the expand trigger. Defaults to `'text'`.",
414
+ "required": false
415
+ },
416
+ {
417
+ "name": "key",
418
+ "type": "string",
419
+ "description": "Key for the expand boolean field. Defaults to auto-generated `_expand_N`.",
420
+ "required": false
421
+ },
422
+ {
423
+ "name": "className",
424
+ "type": "string",
425
+ "description": "Optional CSS class name applied to the outer row container.",
426
+ "required": false
427
+ },
428
+ {
429
+ "name": "defaultOpen",
430
+ "type": "boolean",
431
+ "description": "Whether the expand starts in the open state. Defaults to false.",
432
+ "required": false
433
+ },
434
+ {
435
+ "name": "contentKey",
436
+ "type": "string",
437
+ "description": "Optional key for the content container. Auto-generated if omitted.\n\nThe container does not add a property to the form value; this is only a\nstable identifier for the container field.",
438
+ "required": false
439
+ }
440
+ ],
441
+ "suffix": "Wrapper",
442
+ "composesFromSlugs": [
443
+ "group"
444
+ ],
445
+ "configInterface": "DbxForgeExpandWrapperConfig",
446
+ "sourceLocation": {
447
+ "file": "src/lib/forge/field/wrapper/wrapper.ts",
448
+ "line": 411
449
+ }
450
+ },
451
+ {
452
+ "slug": "list-selection",
453
+ "factoryName": "dbxForgeListSelectionField",
454
+ "tier": "field-factory",
455
+ "produces": "K[]",
456
+ "arrayOutput": "yes",
457
+ "description": "Multi-select backed by a lazy-loadable custom list component. Use when you need complete control over item layout and pagination.",
458
+ "sourcePath": "field/selection/list/list.field.ts",
459
+ "example": "dbxForgeListSelectionField<Item, MyListComponent, string>({ key: 'items', props: { listComponentClass, readKey: (i) => i.id, state$ } })",
460
+ "properties": [
461
+ {
462
+ "name": "listComponentClass (props)",
463
+ "type": "Observable<Type<C>>",
464
+ "description": "List component class to render items from. Can be provided as an Observable for lazy loading.",
465
+ "required": true
466
+ },
467
+ {
468
+ "name": "readKey (props)",
469
+ "type": "ReadKeyFunction<T, K>",
470
+ "description": "Read key function to extract the identifier from each item.",
471
+ "required": true
472
+ },
473
+ {
474
+ "name": "state$ (props)",
475
+ "type": "Observable<ListLoadingState<T>>",
476
+ "description": "Observable that provides the items to select.",
477
+ "required": true
478
+ },
479
+ {
480
+ "name": "loadMore (props)",
481
+ "type": "() => void",
482
+ "description": "Function that signals to load more items.",
483
+ "required": false
484
+ },
485
+ {
486
+ "name": "hint (props)",
487
+ "type": "string",
488
+ "description": "Hint text shown below the field.",
489
+ "required": false
490
+ }
491
+ ],
492
+ "wrapperPattern": "material-form-field-wrapped",
493
+ "ngFormType": "dbx-list-selection",
494
+ "generic": "<T = unknown, C extends AbstractDbxSelectionListWrapperDirective<T> = AbstractDbxSelectionListWrapperDirective<T>, K extends PrimativeKey = PrimativeKey>",
495
+ "configInterface": "DbxForgeListSelectionFieldConfig<T, C, K>",
496
+ "sourceLocation": {
497
+ "file": "src/lib/forge/field/selection/list/list.field.ts",
498
+ "line": 83
499
+ }
500
+ },
501
+ {
502
+ "slug": "pickable-chip",
503
+ "factoryName": "dbxForgePickableChipField",
504
+ "tier": "field-factory",
505
+ "produces": "T | T[]",
506
+ "arrayOutput": "optional",
507
+ "description": "Selection field rendering selected values as Material chips. Defaults to multi-select; flip to single-select via the underlying props.",
508
+ "sourcePath": "field/selection/pickable/pickable-chip.field.ts",
509
+ "example": "dbxForgePickableChipField<Tag>({ key: 'tags', label: 'Tags', props: { loadValues: () => loadTags$, displayForValue: displayTag } })",
510
+ "properties": [
511
+ {
512
+ "name": "loadValues (props)",
513
+ "type": "PickableValueFieldLoadValuesFunction<T, M>",
514
+ "description": "",
515
+ "required": true
516
+ },
517
+ {
518
+ "name": "displayForValue (props)",
519
+ "type": "PickableValueFieldDisplayFunction<T, M>",
520
+ "description": "",
521
+ "required": true
522
+ },
523
+ {
524
+ "name": "hashForValue (props)",
525
+ "type": "PickableValueFieldHashFunction<T, H>",
526
+ "description": "",
527
+ "required": false
528
+ },
529
+ {
530
+ "name": "filterValues (props)",
531
+ "type": "PickableValueFieldFilterFunction<T, M>",
532
+ "description": "",
533
+ "required": false
534
+ },
535
+ {
536
+ "name": "sortItems (props)",
537
+ "type": "PickableItemFieldItemSortFn<T, M>",
538
+ "description": "",
539
+ "required": false
540
+ },
541
+ {
542
+ "name": "multiSelect (props)",
543
+ "type": "boolean",
544
+ "description": "",
545
+ "required": false
546
+ },
547
+ {
548
+ "name": "asArrayValue (props)",
549
+ "type": "boolean",
550
+ "description": "",
551
+ "required": false
552
+ },
553
+ {
554
+ "name": "showTextFilter (props)",
555
+ "type": "boolean",
556
+ "description": "",
557
+ "required": false
558
+ },
559
+ {
560
+ "name": "skipFilterFnOnEmpty (props)",
561
+ "type": "boolean",
562
+ "description": "",
563
+ "required": false
564
+ },
565
+ {
566
+ "name": "filterLabel (props)",
567
+ "type": "string",
568
+ "description": "",
569
+ "required": false
570
+ },
571
+ {
572
+ "name": "maxPicks (props)",
573
+ "type": "number",
574
+ "description": "",
575
+ "required": false
576
+ },
577
+ {
578
+ "name": "showSelectAllButton (props)",
579
+ "type": "boolean",
580
+ "description": "",
581
+ "required": false
582
+ },
583
+ {
584
+ "name": "changeSelectionModeToViewOnDisabled (props)",
585
+ "type": "boolean",
586
+ "description": "",
587
+ "required": false
588
+ },
589
+ {
590
+ "name": "footerConfig (props)",
591
+ "type": "DbxInjectionComponentConfig",
592
+ "description": "",
593
+ "required": false
594
+ },
595
+ {
596
+ "name": "refreshDisplayValues$ (props)",
597
+ "type": "Observable<unknown>",
598
+ "description": "",
599
+ "required": false
600
+ },
601
+ {
602
+ "name": "hint (props)",
603
+ "type": "string",
604
+ "description": "",
605
+ "required": false
606
+ }
607
+ ],
608
+ "wrapperPattern": "material-form-field-wrapped",
609
+ "ngFormType": "dbx-pickable-chip",
610
+ "generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
611
+ "configInterface": "DbxForgePickableChipFieldConfig<T, M, H>",
612
+ "sourceLocation": {
613
+ "file": "src/lib/forge/field/selection/pickable/pickable-chip.field.ts",
614
+ "line": 37
615
+ }
616
+ },
617
+ {
618
+ "slug": "pickable-list",
619
+ "factoryName": "dbxForgePickableListField",
620
+ "tier": "field-factory",
621
+ "produces": "T | T[]",
622
+ "arrayOutput": "optional",
623
+ "description": "Scrollable-list variant of `pickable-chip` — same API, different presentation. Prefer this when the option set is large.",
624
+ "sourcePath": "field/selection/pickable/pickable-list.field.ts",
625
+ "example": "dbxForgePickableListField<Item>({ key: 'items', props: { loadValues, displayForValue } })",
626
+ "properties": [
627
+ {
628
+ "name": "loadValues (props)",
629
+ "type": "PickableValueFieldLoadValuesFunction<T, M>",
630
+ "description": "",
631
+ "required": true
632
+ },
633
+ {
634
+ "name": "displayForValue (props)",
635
+ "type": "PickableValueFieldDisplayFunction<T, M>",
636
+ "description": "",
637
+ "required": true
638
+ },
639
+ {
640
+ "name": "hashForValue (props)",
641
+ "type": "PickableValueFieldHashFunction<T, H>",
642
+ "description": "",
643
+ "required": false
644
+ },
645
+ {
646
+ "name": "filterValues (props)",
647
+ "type": "PickableValueFieldFilterFunction<T, M>",
648
+ "description": "",
649
+ "required": false
650
+ },
651
+ {
652
+ "name": "sortItems (props)",
653
+ "type": "PickableItemFieldItemSortFn<T, M>",
654
+ "description": "",
655
+ "required": false
656
+ },
657
+ {
658
+ "name": "multiSelect (props)",
659
+ "type": "boolean",
660
+ "description": "",
661
+ "required": false
662
+ },
663
+ {
664
+ "name": "asArrayValue (props)",
665
+ "type": "boolean",
666
+ "description": "",
667
+ "required": false
668
+ },
669
+ {
670
+ "name": "showTextFilter (props)",
671
+ "type": "boolean",
672
+ "description": "",
673
+ "required": false
674
+ },
675
+ {
676
+ "name": "skipFilterFnOnEmpty (props)",
677
+ "type": "boolean",
678
+ "description": "",
679
+ "required": false
680
+ },
681
+ {
682
+ "name": "filterLabel (props)",
683
+ "type": "string",
684
+ "description": "",
685
+ "required": false
686
+ },
687
+ {
688
+ "name": "maxPicks (props)",
689
+ "type": "number",
690
+ "description": "",
691
+ "required": false
692
+ },
693
+ {
694
+ "name": "showSelectAllButton (props)",
695
+ "type": "boolean",
696
+ "description": "",
697
+ "required": false
698
+ },
699
+ {
700
+ "name": "changeSelectionModeToViewOnDisabled (props)",
701
+ "type": "boolean",
702
+ "description": "",
703
+ "required": false
704
+ },
705
+ {
706
+ "name": "footerConfig (props)",
707
+ "type": "DbxInjectionComponentConfig",
708
+ "description": "",
709
+ "required": false
710
+ },
711
+ {
712
+ "name": "refreshDisplayValues$ (props)",
713
+ "type": "Observable<unknown>",
714
+ "description": "",
715
+ "required": false
716
+ },
717
+ {
718
+ "name": "hint (props)",
719
+ "type": "string",
720
+ "description": "",
721
+ "required": false
722
+ }
723
+ ],
724
+ "wrapperPattern": "material-form-field-wrapped",
725
+ "ngFormType": "dbx-pickable-list",
726
+ "generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
727
+ "configInterface": "DbxForgePickableListFieldConfig<T, M, H>",
728
+ "sourceLocation": {
729
+ "file": "src/lib/forge/field/selection/pickable/pickable-list.field.ts",
730
+ "line": 37
731
+ }
732
+ },
733
+ {
734
+ "slug": "searchable-string-chip",
735
+ "factoryName": "dbxForgeSearchableStringChipField",
736
+ "tier": "field-factory",
737
+ "produces": "string | string[]",
738
+ "arrayOutput": "optional",
739
+ "description": "String-value specialization of `searchable-chip`. `allowStringValues` is forced true — use for free-form tag entry.\n\nAlways sets `allowStringValues: true` on the inner field props so pressing Enter\n(or typing a separator key) commits the typed value as a chip.",
740
+ "sourcePath": "field/selection/searchable/searchable-chip.field.ts",
741
+ "example": "dbxForgeSearchableStringChipField({ key: 'tags', props: { search, displayForValue } })",
742
+ "properties": [
743
+ {
744
+ "name": "props",
745
+ "type": "Omit<DbxForgeSearchableChipFieldProps<string, M>, 'allowStringValues'>",
746
+ "description": "",
747
+ "required": false
748
+ }
749
+ ],
750
+ "wrapperPattern": "material-form-field-wrapped",
751
+ "ngFormType": "dbx-searchable-chip",
752
+ "configInterface": "DbxForgeSearchableStringChipFieldConfig",
753
+ "sourceLocation": {
754
+ "file": "src/lib/forge/field/selection/searchable/searchable-chip.field.ts",
755
+ "line": 102
756
+ }
757
+ },
758
+ {
759
+ "slug": "searchable-chip",
760
+ "factoryName": "dbxForgeSearchableChipField",
761
+ "tier": "field-factory",
762
+ "produces": "T | T[]",
763
+ "arrayOutput": "optional",
764
+ "description": "Multi-value autocomplete with chips. Defaults to multi-select; supports free-form text entry when `allowStringValues` is set.",
765
+ "sourcePath": "field/selection/searchable/searchable-chip.field.ts",
766
+ "example": "dbxForgeSearchableChipField<Tag>({ key: 'tags', props: { search, displayForValue } })",
767
+ "properties": [
768
+ {
769
+ "name": "search (props)",
770
+ "type": "SearchableValueFieldStringSearchFn<T, M>",
771
+ "description": "",
772
+ "required": true
773
+ },
774
+ {
775
+ "name": "displayForValue (props)",
776
+ "type": "SearchableValueFieldDisplayFn<T, M>",
777
+ "description": "",
778
+ "required": true
779
+ },
780
+ {
781
+ "name": "hashForValue (props)",
782
+ "type": "SearchableValueFieldHashFn<T, H>",
783
+ "description": "",
784
+ "required": false
785
+ },
786
+ {
787
+ "name": "allowStringValues (props)",
788
+ "type": "boolean",
789
+ "description": "",
790
+ "required": false
791
+ },
792
+ {
793
+ "name": "convertStringValue (props)",
794
+ "type": "(text: string) => T",
795
+ "description": "",
796
+ "required": false
797
+ },
798
+ {
799
+ "name": "showSelectedValue (props)",
800
+ "type": "boolean",
801
+ "description": "",
802
+ "required": false
803
+ },
804
+ {
805
+ "name": "searchOnEmptyText (props)",
806
+ "type": "boolean",
807
+ "description": "",
808
+ "required": false
809
+ },
810
+ {
811
+ "name": "display (props)",
812
+ "type": "Partial<DbxInjectionComponentConfig>",
813
+ "description": "",
814
+ "required": false
815
+ },
816
+ {
817
+ "name": "useAnchor (props)",
818
+ "type": "boolean",
819
+ "description": "",
820
+ "required": false
821
+ },
822
+ {
823
+ "name": "anchorForValue (props)",
824
+ "type": "SearchableValueFieldAnchorFn<T, M>",
825
+ "description": "",
826
+ "required": false
827
+ },
828
+ {
829
+ "name": "showClearValue (props)",
830
+ "type": "boolean",
831
+ "description": "",
832
+ "required": false
833
+ },
834
+ {
835
+ "name": "searchLabel (props)",
836
+ "type": "string",
837
+ "description": "",
838
+ "required": false
839
+ },
840
+ {
841
+ "name": "refreshDisplayValues$ (props)",
842
+ "type": "Observable<unknown>",
843
+ "description": "",
844
+ "required": false
845
+ },
846
+ {
847
+ "name": "hint (props)",
848
+ "type": "string",
849
+ "description": "",
850
+ "required": false
851
+ },
852
+ {
853
+ "name": "textInputValidator (props)",
854
+ "type": "ValidatorFn | ValidatorFn[]",
855
+ "description": "",
856
+ "required": false
857
+ },
858
+ {
859
+ "name": "multiSelect (props)",
860
+ "type": "boolean",
861
+ "description": "",
862
+ "required": false
863
+ },
864
+ {
865
+ "name": "asArrayValue (props)",
866
+ "type": "boolean",
867
+ "description": "",
868
+ "required": false
869
+ }
870
+ ],
871
+ "wrapperPattern": "material-form-field-wrapped",
872
+ "ngFormType": "dbx-searchable-chip",
873
+ "generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
874
+ "configInterface": "DbxForgeSearchableChipFieldConfig<T, M, H>",
875
+ "sourceLocation": {
876
+ "file": "src/lib/forge/field/selection/searchable/searchable-chip.field.ts",
877
+ "line": 60
878
+ }
879
+ },
880
+ {
881
+ "slug": "searchable-text",
882
+ "factoryName": "dbxForgeSearchableTextField",
883
+ "tier": "field-factory",
884
+ "produces": "T",
885
+ "arrayOutput": "no",
886
+ "description": "Single-value autocomplete field with search-as-you-type. Optionally allows free-form typed strings as values.",
887
+ "sourcePath": "field/selection/searchable/searchable-text.field.ts",
888
+ "example": "dbxForgeSearchableTextField<User>({ key: 'user', props: { search, displayForValue } })",
889
+ "properties": [
890
+ {
891
+ "name": "search (props)",
892
+ "type": "SearchableValueFieldStringSearchFn<T, M>",
893
+ "description": "",
894
+ "required": true
895
+ },
896
+ {
897
+ "name": "displayForValue (props)",
898
+ "type": "SearchableValueFieldDisplayFn<T, M>",
899
+ "description": "",
900
+ "required": true
901
+ },
902
+ {
903
+ "name": "hashForValue (props)",
904
+ "type": "SearchableValueFieldHashFn<T, H>",
905
+ "description": "",
906
+ "required": false
907
+ },
908
+ {
909
+ "name": "allowStringValues (props)",
910
+ "type": "boolean",
911
+ "description": "",
912
+ "required": false
913
+ },
914
+ {
915
+ "name": "convertStringValue (props)",
916
+ "type": "(text: string) => T",
917
+ "description": "",
918
+ "required": false
919
+ },
920
+ {
921
+ "name": "showSelectedValue (props)",
922
+ "type": "boolean",
923
+ "description": "",
924
+ "required": false
925
+ },
926
+ {
927
+ "name": "searchOnEmptyText (props)",
928
+ "type": "boolean",
929
+ "description": "",
930
+ "required": false
931
+ },
932
+ {
933
+ "name": "display (props)",
934
+ "type": "Partial<DbxInjectionComponentConfig>",
935
+ "description": "",
936
+ "required": false
937
+ },
938
+ {
939
+ "name": "useAnchor (props)",
940
+ "type": "boolean",
941
+ "description": "",
942
+ "required": false
943
+ },
944
+ {
945
+ "name": "anchorForValue (props)",
946
+ "type": "SearchableValueFieldAnchorFn<T, M>",
947
+ "description": "",
948
+ "required": false
949
+ },
950
+ {
951
+ "name": "showClearValue (props)",
952
+ "type": "boolean",
953
+ "description": "",
954
+ "required": false
955
+ },
956
+ {
957
+ "name": "searchLabel (props)",
958
+ "type": "string",
959
+ "description": "",
960
+ "required": false
961
+ },
962
+ {
963
+ "name": "refreshDisplayValues$ (props)",
964
+ "type": "Observable<unknown>",
965
+ "description": "",
966
+ "required": false
967
+ },
968
+ {
969
+ "name": "hint (props)",
970
+ "type": "string",
971
+ "description": "",
972
+ "required": false
973
+ },
974
+ {
975
+ "name": "textInputValidator (props)",
976
+ "type": "ValidatorFn | ValidatorFn[]",
977
+ "description": "",
978
+ "required": false
979
+ }
980
+ ],
981
+ "wrapperPattern": "material-form-field-wrapped",
982
+ "ngFormType": "dbx-searchable-text",
983
+ "generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
984
+ "configInterface": "DbxForgeSearchableTextFieldConfig<T, M, H>",
985
+ "sourceLocation": {
986
+ "file": "src/lib/forge/field/selection/searchable/searchable-text.field.ts",
987
+ "line": 78
988
+ }
989
+ },
990
+ {
991
+ "slug": "source-select",
992
+ "factoryName": "dbxForgeSourceSelectField",
993
+ "tier": "field-factory",
994
+ "produces": "T | T[]",
995
+ "arrayOutput": "optional",
996
+ "description": "Selection field that stores just the value key (`T`) but resolves full metadata (`M`) async for display. Use for reference fields where the form should store only the id.\n\nThe component uses `<mat-form-field>` with `[formField]` for native ng-forge value binding,\nproper Material rendering, and built-in logic (hidden/disabled/readonly) support.",
997
+ "sourcePath": "field/selection/sourceselect/sourceselect.field.ts",
998
+ "example": "dbxForgeSourceSelectField<string, User>({ key: 'userId', props: { valueReader: (u) => u.id, metaLoader, displayForValue } })",
999
+ "properties": [
1000
+ {
1001
+ "name": "openSource (props)",
1002
+ "type": "Maybe<SourceSelectOpenFunction<M>>",
1003
+ "description": "",
1004
+ "required": false
1005
+ },
1006
+ {
1007
+ "name": "loadSources (props)",
1008
+ "type": "Maybe<SourceSelectLoadSourcesFunction<M>>",
1009
+ "description": "",
1010
+ "required": false
1011
+ },
1012
+ {
1013
+ "name": "valueReader (props)",
1014
+ "type": "SourceSelectMetaValueReader<T, M>",
1015
+ "description": "",
1016
+ "required": true
1017
+ },
1018
+ {
1019
+ "name": "metaLoader (props)",
1020
+ "type": "SourceSelectValueMetaLoader<T, M>",
1021
+ "description": "",
1022
+ "required": true
1023
+ },
1024
+ {
1025
+ "name": "displayForValue (props)",
1026
+ "type": "SourceSelectDisplayFunction<T, M>",
1027
+ "description": "",
1028
+ "required": true
1029
+ },
1030
+ {
1031
+ "name": "selectButtonIcon (props)",
1032
+ "type": "Maybe<string>",
1033
+ "description": "",
1034
+ "required": false
1035
+ },
1036
+ {
1037
+ "name": "multiple (props)",
1038
+ "type": "Maybe<boolean>",
1039
+ "description": "",
1040
+ "required": false
1041
+ },
1042
+ {
1043
+ "name": "refreshDisplayValues$ (props)",
1044
+ "type": "Maybe<Observable<unknown>>",
1045
+ "description": "",
1046
+ "required": false
1047
+ },
1048
+ {
1049
+ "name": "filterable (props)",
1050
+ "type": "Maybe<boolean>",
1051
+ "description": "",
1052
+ "required": false
1053
+ },
1054
+ {
1055
+ "name": "filterableGroups (props)",
1056
+ "type": "Maybe<boolean>",
1057
+ "description": "",
1058
+ "required": false
1059
+ },
1060
+ {
1061
+ "name": "hint (props)",
1062
+ "type": "Maybe<string>",
1063
+ "description": "",
1064
+ "required": false
1065
+ }
1066
+ ],
1067
+ "wrapperPattern": "unwrapped",
1068
+ "ngFormType": "dbx-source-select",
1069
+ "generic": "<T extends PrimativeKey = PrimativeKey, M = unknown>",
1070
+ "configInterface": "DbxForgeSourceSelectFieldConfig<T, M>",
1071
+ "sourceLocation": {
1072
+ "file": "src/lib/forge/field/selection/sourceselect/sourceselect.field.ts",
1073
+ "line": 73
1074
+ }
1075
+ },
1076
+ {
1077
+ "slug": "array-field",
1078
+ "factoryName": "dbxForgeArrayField",
1079
+ "tier": "primitive",
1080
+ "produces": "ArrayField",
1081
+ "arrayOutput": "yes",
1082
+ "description": "Repeatable array wrapper with add/remove/drag-to-reorder controls. Template fields are cloned per item. Internally built with `dbxForgeFieldFunction` but categorized as a primitive because composites wrap it.\n\nWraps the array with {@link DbxForgeArrayFieldWrapperComponent} for label/hint,\nand wraps each template item in a ContainerField with\n{@link DbxForgeArrayFieldElementWrapperComponent} for per-item drag handle,\nlabel, and remove button.",
1083
+ "sourcePath": "field/value/array/array.field.ts",
1084
+ "example": "dbxForgeArrayField({ key: 'tags', template: [dbxForgeTextField({ key: 'value' })] })",
1085
+ "properties": [
1086
+ {
1087
+ "name": "template",
1088
+ "type": "ContainerField['fields']",
1089
+ "description": "Template defining the fields for each array item.\nEach item is wrapped in a ContainerField with the element wrapper\nfor per-item drag handle, label, and remove button.\n\nThe array starts empty — items are added via the add button.",
1090
+ "required": true
1091
+ },
1092
+ {
1093
+ "name": "props",
1094
+ "type": "Omit<DbxForgeArrayFieldWrapperProps, 'itemTemplate'>",
1095
+ "description": "",
1096
+ "required": false
1097
+ },
1098
+ {
1099
+ "name": "elementProps",
1100
+ "type": "DbxForgeArrayFieldElementWrapperProps",
1101
+ "description": "",
1102
+ "required": false
1103
+ }
1104
+ ],
1105
+ "returns": "ArrayField",
1106
+ "configInterface": "DbxForgeArrayFieldConfig",
1107
+ "sourceLocation": {
1108
+ "file": "src/lib/forge/field/value/array/array.field.ts",
1109
+ "line": 56
1110
+ }
1111
+ },
1112
+ {
1113
+ "slug": "toggle",
1114
+ "factoryName": "dbxForgeToggleField",
1115
+ "tier": "field-factory",
1116
+ "produces": "boolean",
1117
+ "arrayOutput": "no",
1118
+ "description": "Material slide toggle. Renders inside a styled outline box by default so it visually matches surrounding outlined form fields; pass `styledBox: false` to opt out.",
1119
+ "sourcePath": "field/value/boolean/boolean.field.ts",
1120
+ "example": "dbxForgeToggleField({ key: 'active', label: 'Active', value: true })",
1121
+ "properties": [
1122
+ {
1123
+ "name": "styledBox",
1124
+ "type": "boolean",
1125
+ "description": "Whether to render the toggle inside a styled outline box.\n\nDefaults to `true`.",
1126
+ "required": false
1127
+ }
1128
+ ],
1129
+ "wrapperPattern": "unwrapped",
1130
+ "ngFormType": "toggle",
1131
+ "configInterface": "DbxForgeToggleFieldConfig",
1132
+ "sourceLocation": {
1133
+ "file": "src/lib/forge/field/value/boolean/boolean.field.ts",
1134
+ "line": 43
1135
+ }
1136
+ },
1137
+ {
1138
+ "slug": "checkbox",
1139
+ "factoryName": "dbxForgeCheckboxField",
1140
+ "tier": "field-factory",
1141
+ "produces": "boolean",
1142
+ "arrayOutput": "no",
1143
+ "description": "Material checkbox. Shares the styled-outline-box opt-out with toggle.",
1144
+ "sourcePath": "field/value/boolean/boolean.field.ts",
1145
+ "example": "dbxForgeCheckboxField({ key: 'agree', label: 'I agree to the terms' })",
1146
+ "properties": [
1147
+ {
1148
+ "name": "styledBox",
1149
+ "type": "boolean",
1150
+ "description": "Whether to render the checkbox inside a styled outline box.\n\nDefaults to `true`.",
1151
+ "required": false
1152
+ }
1153
+ ],
1154
+ "wrapperPattern": "unwrapped",
1155
+ "ngFormType": "checkbox",
1156
+ "configInterface": "DbxForgeCheckboxFieldConfig",
1157
+ "sourceLocation": {
1158
+ "file": "src/lib/forge/field/value/boolean/boolean.field.ts",
1159
+ "line": 86
1160
+ }
1161
+ },
1162
+ {
1163
+ "slug": "date",
1164
+ "factoryName": "dbxForgeDateField",
1165
+ "tier": "field-factory",
1166
+ "produces": "Date",
1167
+ "arrayOutput": "no",
1168
+ "description": "Material datepicker (date-only, no time). For time-of-day picking use the `date-time` field; for ranges use `date-range-row` or `date-time-range-row`.\n\nUses the native ng-forge MatDatepickerField.",
1169
+ "sourcePath": "field/value/date/date.field.ts",
1170
+ "example": "dbxForgeDateField({ key: 'startDate', label: 'Start Date', required: true })",
1171
+ "properties": [],
1172
+ "wrapperPattern": "unwrapped",
1173
+ "ngFormType": "datepicker",
1174
+ "configInterface": "DbxForgeDateFieldConfig",
1175
+ "sourceLocation": {
1176
+ "file": "src/lib/forge/field/value/date/date.field.ts",
1177
+ "line": 32
1178
+ }
1179
+ },
1180
+ {
1181
+ "slug": "date-range-row",
1182
+ "factoryName": "dbxForgeDateRangeRow",
1183
+ "tier": "composite-builder",
1184
+ "produces": "RowField",
1185
+ "arrayOutput": "no",
1186
+ "description": "Two-column row of start/end date-time fields configured for date-only picking. Use when you need a paired start/end date range laid out horizontally.\n\nComposite builder that creates a pair of date pickers for selecting a date range (start and end dates)\narranged in a flex row. The pickers are synchronized so the start date stays before the end date.\n\nThis is the forge equivalent of formly's `formlyDateRangeField()`.",
1187
+ "sourcePath": "field/value/date/daterange.field.ts",
1188
+ "example": "dbxForgeDateRangeRow({ required: true, start: { key: 'from', label: 'From' }, end: { key: 'to', label: 'To' } })",
1189
+ "properties": [
1190
+ {
1191
+ "name": "required",
1192
+ "type": "boolean",
1193
+ "description": "",
1194
+ "required": false
1195
+ },
1196
+ {
1197
+ "name": "props",
1198
+ "type": "DbxForgeDateRangeRowSharedProps",
1199
+ "description": "",
1200
+ "required": false
1201
+ },
1202
+ {
1203
+ "name": "start",
1204
+ "type": "Partial<DbxForgeDateRangeFieldDateConfig>",
1205
+ "description": "",
1206
+ "required": false
1207
+ },
1208
+ {
1209
+ "name": "end",
1210
+ "type": "Partial<DbxForgeDateRangeFieldDateConfig>",
1211
+ "description": "",
1212
+ "required": false
1213
+ }
1214
+ ],
1215
+ "suffix": "Row",
1216
+ "composesFromSlugs": [
1217
+ "date-time",
1218
+ "row"
1219
+ ],
1220
+ "configInterface": "DbxForgeDateRangeRowConfig",
1221
+ "sourceLocation": {
1222
+ "file": "src/lib/forge/field/value/date/daterange.field.ts",
1223
+ "line": 60
1224
+ }
1225
+ },
1226
+ {
1227
+ "slug": "date-time",
1228
+ "factoryName": "dbxForgeDateTimeField",
1229
+ "tier": "field-factory",
1230
+ "produces": "DateTimeValue",
1231
+ "arrayOutput": "no",
1232
+ "description": "Combined date-time picker with timezone, value mode (DATE_STRING / TIMESTAMP / Date), and time mode (REQUIRED / OPTIONAL / NONE). Powers `date-range-row` and `date-time-range-row`.\n\nFull parity with formly `dateTimeField()` — supports timezone, valueMode, timeMode,\npickerConfig, presets, and all other features via the `props` slot.",
1233
+ "sourcePath": "field/value/date/datetime.field.ts",
1234
+ "example": "dbxForgeDateTimeField({ key: 'when', label: 'When', timezone: 'America/New_York' })",
1235
+ "properties": [
1236
+ {
1237
+ "name": "timeOnly (props)",
1238
+ "type": "boolean",
1239
+ "description": "",
1240
+ "required": false
1241
+ },
1242
+ {
1243
+ "name": "timeMode (props)",
1244
+ "type": "DbxDateTimeFieldTimeMode",
1245
+ "description": "",
1246
+ "required": false
1247
+ },
1248
+ {
1249
+ "name": "valueMode (props)",
1250
+ "type": "DbxDateTimeValueMode",
1251
+ "description": "",
1252
+ "required": false
1253
+ },
1254
+ {
1255
+ "name": "dateLabel (props)",
1256
+ "type": "string",
1257
+ "description": "",
1258
+ "required": false
1259
+ },
1260
+ {
1261
+ "name": "timeLabel (props)",
1262
+ "type": "string",
1263
+ "description": "",
1264
+ "required": false
1265
+ },
1266
+ {
1267
+ "name": "allDayLabel (props)",
1268
+ "type": "string",
1269
+ "description": "",
1270
+ "required": false
1271
+ },
1272
+ {
1273
+ "name": "atTimeLabel (props)",
1274
+ "type": "string",
1275
+ "description": "",
1276
+ "required": false
1277
+ },
1278
+ {
1279
+ "name": "minDate (props)",
1280
+ "type": "Date | string",
1281
+ "description": "",
1282
+ "required": false
1283
+ },
1284
+ {
1285
+ "name": "maxDate (props)",
1286
+ "type": "Date | string",
1287
+ "description": "",
1288
+ "required": false
1289
+ },
1290
+ {
1291
+ "name": "timezone (props)",
1292
+ "type": "Maybe<ObservableOrValueGetter<Maybe<TimezoneString>>>",
1293
+ "description": "",
1294
+ "required": false
1295
+ },
1296
+ {
1297
+ "name": "showTimezone (props)",
1298
+ "type": "Maybe<boolean>",
1299
+ "description": "",
1300
+ "required": false
1301
+ },
1302
+ {
1303
+ "name": "pickerConfig (props)",
1304
+ "type": "ObservableOrValueGetter<DbxDateTimePickerConfiguration>",
1305
+ "description": "",
1306
+ "required": false
1307
+ },
1308
+ {
1309
+ "name": "hideDateHint (props)",
1310
+ "type": "boolean",
1311
+ "description": "",
1312
+ "required": false
1313
+ },
1314
+ {
1315
+ "name": "hideDatePicker (props)",
1316
+ "type": "boolean",
1317
+ "description": "",
1318
+ "required": false
1319
+ },
1320
+ {
1321
+ "name": "alwaysShowDateInput (props)",
1322
+ "type": "boolean",
1323
+ "description": "",
1324
+ "required": false
1325
+ },
1326
+ {
1327
+ "name": "showClearButton (props)",
1328
+ "type": "Maybe<boolean>",
1329
+ "description": "",
1330
+ "required": false
1331
+ },
1332
+ {
1333
+ "name": "autofillDateWhenTimeIsPicked (props)",
1334
+ "type": "boolean",
1335
+ "description": "",
1336
+ "required": false
1337
+ },
1338
+ {
1339
+ "name": "presets (props)",
1340
+ "type": "ObservableOrValueGetter<DateTimePresetConfiguration[]>",
1341
+ "description": "",
1342
+ "required": false
1343
+ },
1344
+ {
1345
+ "name": "timeDate (props)",
1346
+ "type": "Maybe<ObservableOrValueGetter<Maybe<DateOrDayString>>>",
1347
+ "description": "",
1348
+ "required": false
1349
+ },
1350
+ {
1351
+ "name": "fullDayFieldName (props)",
1352
+ "type": "string",
1353
+ "description": "",
1354
+ "required": false
1355
+ },
1356
+ {
1357
+ "name": "fullDayInUTC (props)",
1358
+ "type": "boolean",
1359
+ "description": "",
1360
+ "required": false
1361
+ },
1362
+ {
1363
+ "name": "minuteStep (props)",
1364
+ "type": "Maybe<number>",
1365
+ "description": "",
1366
+ "required": false
1367
+ },
1368
+ {
1369
+ "name": "inputOutputDebounceTime (props)",
1370
+ "type": "Milliseconds",
1371
+ "description": "",
1372
+ "required": false
1373
+ },
1374
+ {
1375
+ "name": "appearance (props)",
1376
+ "type": "'fill' | 'outline'",
1377
+ "description": "",
1378
+ "required": false
1379
+ },
1380
+ {
1381
+ "name": "hint (props)",
1382
+ "type": "DynamicText",
1383
+ "description": "",
1384
+ "required": false
1385
+ },
1386
+ {
1387
+ "name": "getSyncFieldsObs (props)",
1388
+ "type": "() => Observable<ArrayOrValue<DbxForgeDateTimeSyncField>>",
1389
+ "description": "",
1390
+ "required": false
1391
+ },
1392
+ {
1393
+ "name": "openOnInputClick (props)",
1394
+ "type": "'picker' | 'input'",
1395
+ "description": "Behavior when the date input is clicked.\n\n- `'picker'` — opens the datepicker overlay (default)\n- `'input'` — normal text-selection / cursor-placement behavior",
1396
+ "required": false
1397
+ }
1398
+ ],
1399
+ "wrapperPattern": "unwrapped",
1400
+ "ngFormType": "datetime",
1401
+ "configInterface": "DbxForgeDateTimeFieldConfig",
1402
+ "sourceLocation": {
1403
+ "file": "src/lib/forge/field/value/date/datetime.field.ts",
1404
+ "line": 72
1405
+ }
1406
+ },
1407
+ {
1408
+ "slug": "date-time-range-row",
1409
+ "factoryName": "dbxForgeDateTimeRangeRow",
1410
+ "tier": "composite-builder",
1411
+ "produces": "RowField",
1412
+ "arrayOutput": "no",
1413
+ "description": "Two-column row of time-only pickers for selecting a time range within a single day.\n\nThis is the forge equivalent of formly's `formlyDateTimeRangeField()`.",
1414
+ "sourcePath": "field/value/date/datetimerange.field.ts",
1415
+ "example": "dbxForgeDateTimeRangeRow({ start: { label: 'From' }, end: { label: 'Until' } })",
1416
+ "properties": [
1417
+ {
1418
+ "name": "required",
1419
+ "type": "boolean",
1420
+ "description": "",
1421
+ "required": false
1422
+ },
1423
+ {
1424
+ "name": "props",
1425
+ "type": "DbxForgeDateTimeRangeRowSharedProps",
1426
+ "description": "",
1427
+ "required": false
1428
+ },
1429
+ {
1430
+ "name": "start",
1431
+ "type": "Partial<DbxForgeDateTimeRangeFieldTimeConfig>",
1432
+ "description": "",
1433
+ "required": false
1434
+ },
1435
+ {
1436
+ "name": "end",
1437
+ "type": "Partial<DbxForgeDateTimeRangeFieldTimeConfig>",
1438
+ "description": "",
1439
+ "required": false
1440
+ }
1441
+ ],
1442
+ "suffix": "Row",
1443
+ "composesFromSlugs": [
1444
+ "date-time",
1445
+ "row"
1446
+ ],
1447
+ "configInterface": "DbxForgeDateTimeRangeRowConfig",
1448
+ "sourceLocation": {
1449
+ "file": "src/lib/forge/field/value/date/datetimerange.field.ts",
1450
+ "line": 56
1451
+ }
1452
+ },
1453
+ {
1454
+ "slug": "fixed-date-range",
1455
+ "factoryName": "dbxForgeFixedDateRangeField",
1456
+ "tier": "field-factory",
1457
+ "produces": "DbxForgeFixedDateRangeValue",
1458
+ "arrayOutput": "no",
1459
+ "description": "Inline calendar-style date-range picker with fixed range length (e.g. \"7 days from start\"). Wrapped in a Material form-field container with a custom selection strategy.\n\nUses an inline `<mat-calendar>` with a custom selection strategy, matching the formly\n`fixedDateRangeField()` behavior. Supports multiple selection modes, timezone conversion,\ndate range input configuration, and optional text inputs.",
1460
+ "sourcePath": "field/value/date/fixeddaterange.field.ts",
1461
+ "example": "dbxForgeFixedDateRangeField({ key: 'range', label: 'Date Range' })",
1462
+ "properties": [
1463
+ {
1464
+ "name": "dateRangeInput (props)",
1465
+ "type": "ObservableOrValueGetter<DbxFixedDateRangeDateRangeInput>",
1466
+ "description": "Date range input to build the date range from a single picked date.\nRequired for 'single' mode and boundary-based selection modes.",
1467
+ "required": false
1468
+ },
1469
+ {
1470
+ "name": "selectionMode (props)",
1471
+ "type": "Maybe<ObservableOrValueGetter<DbxFixedDateRangeSelectionMode>>",
1472
+ "description": "Selection mode to use when picking dates on the calendar.\n\n- `'single'` — Picks one date, range computed from dateRangeInput config.\n- `'normal'` — Standard start/end range picking with two clicks.\n- `'arbitrary'` — Free-form range selection within a boundary.\n- `'arbitrary_quick'` — Like arbitrary, but immediately sets the value on first click.\n\nDefaults to `'single'`.",
1473
+ "required": false
1474
+ },
1475
+ {
1476
+ "name": "valueMode (props)",
1477
+ "type": "DbxDateTimeValueMode",
1478
+ "description": "Value mode for the dates in the output DateRange.\nDefaults to DATE.",
1479
+ "required": false
1480
+ },
1481
+ {
1482
+ "name": "fullDayInUTC (props)",
1483
+ "type": "boolean",
1484
+ "description": "Whether to pass the date value as a UTC date, or a date in the current timezone.",
1485
+ "required": false
1486
+ },
1487
+ {
1488
+ "name": "pickerConfig (props)",
1489
+ "type": "ObservableOrValueGetter<DbxFixedDateRangePickerConfiguration>",
1490
+ "description": "Custom picker configuration (limits, schedule).",
1491
+ "required": false
1492
+ },
1493
+ {
1494
+ "name": "timezone (props)",
1495
+ "type": "Maybe<ObservableOrValueGetter<Maybe<TimezoneString>>>",
1496
+ "description": "The input timezone to default to. Ignored if fullDayInUTC is true.",
1497
+ "required": false
1498
+ },
1499
+ {
1500
+ "name": "showTimezone (props)",
1501
+ "type": "Maybe<boolean>",
1502
+ "description": "Whether to display the timezone. Defaults to true.",
1503
+ "required": false
1504
+ },
1505
+ {
1506
+ "name": "presets (props)",
1507
+ "type": "ObservableOrValueGetter<DateTimePresetConfiguration[]>",
1508
+ "description": "Custom presets.",
1509
+ "required": false
1510
+ },
1511
+ {
1512
+ "name": "showRangeInput (props)",
1513
+ "type": "boolean",
1514
+ "description": "Whether to show the range input text fields. Defaults to true.",
1515
+ "required": false
1516
+ },
1517
+ {
1518
+ "name": "appearance (props)",
1519
+ "type": "'fill' | 'outline'",
1520
+ "description": "Material form field appearance.",
1521
+ "required": false
1522
+ },
1523
+ {
1524
+ "name": "hint (props)",
1525
+ "type": "DynamicText",
1526
+ "description": "Hint text displayed below the field.",
1527
+ "required": false
1528
+ }
1529
+ ],
1530
+ "wrapperPattern": "material-form-field-wrapped",
1531
+ "ngFormType": "fixeddaterange",
1532
+ "configInterface": "DbxForgeFixedDateRangeFieldConfig",
1533
+ "sourceLocation": {
1534
+ "file": "src/lib/forge/field/value/date/fixeddaterange.field.ts",
1535
+ "line": 51
1536
+ }
1537
+ },
1538
+ {
1539
+ "slug": "time-duration",
1540
+ "factoryName": "dbxForgeTimeDurationField",
1541
+ "tier": "field-factory",
1542
+ "produces": "TimeDurationValue",
1543
+ "arrayOutput": "no",
1544
+ "description": "Duration input with popover picker. Output shape varies by `valueMode` — number (ms/s/…), string, or structured object.\n\nUses a custom ng-forge ValueFieldComponent that provides a text input\naccepting duration strings (e.g. \"2h30m\") and a popover picker.",
1545
+ "sourcePath": "field/value/duration/duration.field.ts",
1546
+ "example": "dbxForgeTimeDurationField({ key: 'duration', label: 'Duration', outputUnit: 'm' })",
1547
+ "properties": [
1548
+ {
1549
+ "name": "outputUnit",
1550
+ "type": "TimeUnit",
1551
+ "description": "The unit of the output value.\n\nDefaults to `'ms'` (milliseconds).",
1552
+ "required": false
1553
+ },
1554
+ {
1555
+ "name": "valueMode",
1556
+ "type": "TimeDurationFieldValueMode",
1557
+ "description": "The output value mode.\n\nDefaults to `'number'`.",
1558
+ "required": false
1559
+ },
1560
+ {
1561
+ "name": "allowedUnits",
1562
+ "type": "TimeUnit[]",
1563
+ "description": "The time units available for the field.",
1564
+ "required": false
1565
+ },
1566
+ {
1567
+ "name": "pickerUnits",
1568
+ "type": "TimeUnit[]",
1569
+ "description": "Which units to show in the popover picker.\n\nDefaults to allowedUnits filtered to exclude 'ms'.",
1570
+ "required": false
1571
+ },
1572
+ {
1573
+ "name": "carryOver",
1574
+ "type": "boolean",
1575
+ "description": "Whether the popover picker should carry over values to the next larger unit.",
1576
+ "required": false
1577
+ }
1578
+ ],
1579
+ "wrapperPattern": "unwrapped",
1580
+ "ngFormType": "timeduration",
1581
+ "configInterface": "DbxForgeTimeDurationFieldConfig",
1582
+ "sourceLocation": {
1583
+ "file": "src/lib/forge/field/value/duration/duration.field.ts",
1584
+ "line": 75
1585
+ }
1586
+ },
1587
+ {
1588
+ "slug": "dollar-amount",
1589
+ "factoryName": "dbxForgeDollarAmountField",
1590
+ "tier": "field-derivative",
1591
+ "produces": "number",
1592
+ "arrayOutput": "no",
1593
+ "description": "Forge number field pre-configured for dollar amount input with cent-level precision. Pre-sets `transform.precision` to `DOLLAR_AMOUNT_PRECISION` so values round to whole cents.",
1594
+ "sourcePath": "field/value/number/number.field.ts",
1595
+ "example": "const field = dbxForgeDollarAmountField({ key: 'price', label: 'Price', min: 0, required: true });",
1596
+ "properties": [
1597
+ {
1598
+ "name": "autocomplete",
1599
+ "type": "FieldAutocompleteAttributeOption",
1600
+ "description": "",
1601
+ "required": false
1602
+ },
1603
+ {
1604
+ "name": "min",
1605
+ "type": "number",
1606
+ "description": "",
1607
+ "required": false
1608
+ },
1609
+ {
1610
+ "name": "max",
1611
+ "type": "number",
1612
+ "description": "",
1613
+ "required": false
1614
+ },
1615
+ {
1616
+ "name": "step",
1617
+ "type": "number",
1618
+ "description": "Step increment for the input.",
1619
+ "required": false
1620
+ },
1621
+ {
1622
+ "name": "enforceStep",
1623
+ "type": "boolean",
1624
+ "description": "When true, validates that the value is divisible by `step`.\nRequires `step` to be set.",
1625
+ "required": false
1626
+ },
1627
+ {
1628
+ "name": "idempotentTransform",
1629
+ "type": "TransformNumberFunctionConfig",
1630
+ "description": "An idempotent number transformation applied as a value parser (e.g., rounding, precision, bounds).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
1631
+ "required": false
1632
+ }
1633
+ ],
1634
+ "composesFromSlugs": [
1635
+ "number"
1636
+ ],
1637
+ "configInterface": "DbxForgeDollarAmountFieldConfig",
1638
+ "sourceLocation": {
1639
+ "file": "src/lib/forge/field/value/number/number.field.ts",
1640
+ "line": 141
1641
+ }
1642
+ },
1643
+ {
1644
+ "slug": "number",
1645
+ "factoryName": "dbxForgeNumberField",
1646
+ "tier": "field-factory",
1647
+ "produces": "number",
1648
+ "arrayOutput": "no",
1649
+ "description": "Numeric input (HTML `type=\"number\"`). Supports min/max/step constraints, optional step enforcement (divisibility validator), and idempotent number transforms.\n\nWhen `step` is provided, sets the HTML `step` attribute on the input via `meta`.\nWhen both `step` and `enforceStep` are set, adds a custom divisibility validator.",
1650
+ "sourcePath": "field/value/number/number.field.ts",
1651
+ "example": "dbxForgeNumberField({ key: 'quantity', label: 'Quantity', min: 1, max: 100, step: 1, enforceStep: true })",
1652
+ "properties": [
1653
+ {
1654
+ "name": "autocomplete",
1655
+ "type": "FieldAutocompleteAttributeOption",
1656
+ "description": "",
1657
+ "required": false
1658
+ },
1659
+ {
1660
+ "name": "min",
1661
+ "type": "number",
1662
+ "description": "",
1663
+ "required": false
1664
+ },
1665
+ {
1666
+ "name": "max",
1667
+ "type": "number",
1668
+ "description": "",
1669
+ "required": false
1670
+ },
1671
+ {
1672
+ "name": "step",
1673
+ "type": "number",
1674
+ "description": "Step increment for the input.",
1675
+ "required": false
1676
+ },
1677
+ {
1678
+ "name": "enforceStep",
1679
+ "type": "boolean",
1680
+ "description": "When true, validates that the value is divisible by `step`.\nRequires `step` to be set.",
1681
+ "required": false
1682
+ },
1683
+ {
1684
+ "name": "idempotentTransform",
1685
+ "type": "TransformNumberFunctionConfig",
1686
+ "description": "An idempotent number transformation applied as a value parser (e.g., rounding, precision, bounds).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
1687
+ "required": false
1688
+ }
1689
+ ],
1690
+ "wrapperPattern": "unwrapped",
1691
+ "ngFormType": "input",
1692
+ "configInterface": "DbxForgeNumberFieldConfig",
1693
+ "sourceLocation": {
1694
+ "file": "src/lib/forge/field/value/number/number.field.ts",
1695
+ "line": 72
1696
+ }
1697
+ },
1698
+ {
1699
+ "slug": "number-slider",
1700
+ "factoryName": "dbxForgeNumberSliderField",
1701
+ "tier": "field-factory",
1702
+ "produces": "number",
1703
+ "arrayOutput": "no",
1704
+ "description": "Material slider wrapped in a form-field container. Supports thumb label, tick interval, and step-derived tick spacing.\n\nThe wrapper provides the Material outlined form-field appearance (notched outline with\nfloating label, hint/error subscript). The inner slider uses the ng-forge built-in\n`slider` type.",
1705
+ "sourcePath": "field/value/number/slider.field.ts",
1706
+ "example": "dbxForgeNumberSliderField({ key: 'rating', label: 'Rating', min: 0, max: 10, step: 1 })",
1707
+ "properties": [
1708
+ {
1709
+ "name": "thumbLabel",
1710
+ "type": "boolean",
1711
+ "description": "Whether or not to show the thumb label while sliding.\n\nDefaults to true.",
1712
+ "required": false
1713
+ },
1714
+ {
1715
+ "name": "tickInterval",
1716
+ "type": "false | number",
1717
+ "description": "Tick interval. If not provided defaults to the step value, if provided.\nIf false, the ticks are disabled.",
1718
+ "required": false
1719
+ }
1720
+ ],
1721
+ "wrapperPattern": "material-form-field-wrapped",
1722
+ "ngFormType": "slider",
1723
+ "configInterface": "DbxForgeNumberSliderFieldConfig",
1724
+ "sourceLocation": {
1725
+ "file": "src/lib/forge/field/value/number/slider.field.ts",
1726
+ "line": 46
1727
+ }
1728
+ },
1729
+ {
1730
+ "slug": "phone",
1731
+ "factoryName": "dbxForgePhoneField",
1732
+ "tier": "field-factory",
1733
+ "produces": "string",
1734
+ "arrayOutput": "no",
1735
+ "description": "International phone number input backed by ngx-mat-input-tel. Supports preferred-country lists, search, and optional extension input.\n\nUses the custom 'phone' field type which renders the ngx-mat-input-tel component\nbridged to Signal Forms.",
1736
+ "sourcePath": "field/value/phone/phone.field.ts",
1737
+ "example": "dbxForgePhoneField({ key: 'phone', label: 'Phone', preferredCountries: ['US', 'CA'] })",
1738
+ "properties": [
1739
+ {
1740
+ "name": "preferredCountries",
1741
+ "type": "string[]",
1742
+ "description": "Preferred countries to show at the top of the country selector.",
1743
+ "required": false
1744
+ },
1745
+ {
1746
+ "name": "onlyCountries",
1747
+ "type": "string[]",
1748
+ "description": "ISO country codes to restrict the dropdown to.",
1749
+ "required": false
1750
+ },
1751
+ {
1752
+ "name": "enableSearch",
1753
+ "type": "boolean",
1754
+ "description": "Whether or not to enable the search feature. True by default.",
1755
+ "required": false
1756
+ },
1757
+ {
1758
+ "name": "allowExtension",
1759
+ "type": "boolean",
1760
+ "description": "Whether or not to allow adding an extension. False by default.",
1761
+ "required": false
1762
+ },
1763
+ {
1764
+ "name": "autocomplete",
1765
+ "type": "DbxForgePhoneFieldAutocomplete",
1766
+ "description": "Sets the autocomplete attribute on the phone input.\n\nPass `'tel'` to enable phone autofill, or `false`/`'off'` to disable.",
1767
+ "required": false
1768
+ },
1769
+ {
1770
+ "name": "preferredCountries (props)",
1771
+ "type": "string[]",
1772
+ "description": "ISO country codes for countries shown first in the dropdown.",
1773
+ "required": false
1774
+ },
1775
+ {
1776
+ "name": "onlyCountries (props)",
1777
+ "type": "string[]",
1778
+ "description": "ISO country codes to restrict the dropdown to.",
1779
+ "required": false
1780
+ },
1781
+ {
1782
+ "name": "enableSearch (props)",
1783
+ "type": "boolean",
1784
+ "description": "Whether or not to enable the search feature. True by default.",
1785
+ "required": false
1786
+ },
1787
+ {
1788
+ "name": "allowExtension (props)",
1789
+ "type": "boolean",
1790
+ "description": "Whether or not to allow adding an extension. False by default.",
1791
+ "required": false
1792
+ },
1793
+ {
1794
+ "name": "appearance (props)",
1795
+ "type": "'fill' | 'outline'",
1796
+ "description": "Material form field appearance.",
1797
+ "required": false
1798
+ },
1799
+ {
1800
+ "name": "hint (props)",
1801
+ "type": "DynamicText",
1802
+ "description": "Hint text displayed below the field.",
1803
+ "required": false
1804
+ },
1805
+ {
1806
+ "name": "autocomplete (props)",
1807
+ "type": "'off' | 'tel'",
1808
+ "description": "Autocomplete value for the phone input. The underlying `ngx-mat-input-tel`\ncomponent supports `'off'` and `'tel'`.",
1809
+ "required": false
1810
+ }
1811
+ ],
1812
+ "wrapperPattern": "unwrapped",
1813
+ "ngFormType": "phone",
1814
+ "configInterface": "DbxForgePhoneFieldConfig",
1815
+ "sourceLocation": {
1816
+ "file": "src/lib/forge/field/value/phone/phone.field.ts",
1817
+ "line": 78
1818
+ }
1819
+ },
1820
+ {
1821
+ "slug": "name",
1822
+ "factoryName": "dbxForgeNameField",
1823
+ "tier": "field-derivative",
1824
+ "produces": "string",
1825
+ "arrayOutput": "no",
1826
+ "description": "Pre-configured text field for capturing a full name with sensible min/max length defaults.",
1827
+ "sourcePath": "field/value/text/text.additional.field.ts",
1828
+ "example": "dbxForgeNameField({ key: 'fullName', label: 'Full Name', required: true })",
1829
+ "properties": [],
1830
+ "composesFromSlugs": [
1831
+ "text"
1832
+ ],
1833
+ "configInterface": "DbxForgeNameFieldConfig",
1834
+ "sourceLocation": {
1835
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
1836
+ "line": 24
1837
+ }
1838
+ },
1839
+ {
1840
+ "slug": "email",
1841
+ "factoryName": "dbxForgeEmailField",
1842
+ "tier": "field-derivative",
1843
+ "produces": "string",
1844
+ "arrayOutput": "no",
1845
+ "description": "Text field pre-configured with email input type and email validator. Prefer this over configuring `dbxForgeTextField` with `inputType: \"email\"` directly.\n\nUses the `'email'` input type for built-in browser validation.",
1846
+ "sourcePath": "field/value/text/text.additional.field.ts",
1847
+ "example": "dbxForgeEmailField({ key: 'email', label: 'Email', required: true })",
1848
+ "properties": [
1849
+ {
1850
+ "name": "key",
1851
+ "type": "string",
1852
+ "description": "",
1853
+ "required": false
1854
+ },
1855
+ {
1856
+ "name": "label",
1857
+ "type": "string",
1858
+ "description": "",
1859
+ "required": false
1860
+ },
1861
+ {
1862
+ "name": "placeholder",
1863
+ "type": "string",
1864
+ "description": "",
1865
+ "required": false
1866
+ },
1867
+ {
1868
+ "name": "required",
1869
+ "type": "boolean",
1870
+ "description": "",
1871
+ "required": false
1872
+ },
1873
+ {
1874
+ "name": "readonly",
1875
+ "type": "boolean",
1876
+ "description": "",
1877
+ "required": false
1878
+ },
1879
+ {
1880
+ "name": "description",
1881
+ "type": "string",
1882
+ "description": "",
1883
+ "required": false
1884
+ },
1885
+ {
1886
+ "name": "autocomplete",
1887
+ "type": "FieldAutocompleteAttributeOption",
1888
+ "description": "Sets the autocomplete attribute on the input. Pass `false` to disable browser autofill.",
1889
+ "required": false
1890
+ }
1891
+ ],
1892
+ "composesFromSlugs": [
1893
+ "text"
1894
+ ],
1895
+ "configInterface": "DbxForgeEmailFieldConfig",
1896
+ "sourceLocation": {
1897
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
1898
+ "line": 74
1899
+ }
1900
+ },
1901
+ {
1902
+ "slug": "city",
1903
+ "factoryName": "dbxForgeCityField",
1904
+ "tier": "field-derivative",
1905
+ "produces": "string",
1906
+ "arrayOutput": "no",
1907
+ "description": "City name input enforcing `ADDRESS_CITY_MAX_LENGTH`. Typically used inside the address composite set.",
1908
+ "sourcePath": "field/value/text/text.additional.field.ts",
1909
+ "example": "dbxForgeCityField({ required: true })",
1910
+ "properties": [
1911
+ {
1912
+ "name": "autocomplete",
1913
+ "type": "FieldAutocompleteAttributeOption",
1914
+ "description": "",
1915
+ "required": false
1916
+ },
1917
+ {
1918
+ "name": "inputType",
1919
+ "type": "DbxForgeTextFieldInputType",
1920
+ "description": "HTML input type. Defaults to `'text'`.",
1921
+ "required": false
1922
+ },
1923
+ {
1924
+ "name": "idempotentTransform",
1925
+ "type": "TransformStringFunctionConfig",
1926
+ "description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
1927
+ "required": false
1928
+ }
1929
+ ],
1930
+ "composesFromSlugs": [
1931
+ "text"
1932
+ ],
1933
+ "configInterface": "DbxForgeCityFieldConfig",
1934
+ "sourceLocation": {
1935
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
1936
+ "line": 112
1937
+ }
1938
+ },
1939
+ {
1940
+ "slug": "state",
1941
+ "factoryName": "dbxForgeStateField",
1942
+ "tier": "field-derivative",
1943
+ "produces": "string",
1944
+ "arrayOutput": "no",
1945
+ "description": "US state input. When `asCode: true`, validates two-letter codes and auto-uppercases input via an idempotent transform.",
1946
+ "sourcePath": "field/value/text/text.additional.field.ts",
1947
+ "example": "dbxForgeStateField({ asCode: true, required: true })",
1948
+ "properties": [
1949
+ {
1950
+ "name": "asCode",
1951
+ "type": "boolean",
1952
+ "description": "When true, validates and formats as a 2-letter state code (e.g., `'CA'`).",
1953
+ "required": false
1954
+ }
1955
+ ],
1956
+ "composesFromSlugs": [
1957
+ "text"
1958
+ ],
1959
+ "configInterface": "DbxForgeStateFieldConfig",
1960
+ "sourceLocation": {
1961
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
1962
+ "line": 153
1963
+ }
1964
+ },
1965
+ {
1966
+ "slug": "country",
1967
+ "factoryName": "dbxForgeCountryField",
1968
+ "tier": "field-derivative",
1969
+ "produces": "string",
1970
+ "arrayOutput": "no",
1971
+ "description": "Country name input enforcing `ADDRESS_COUNTRY_MAX_LENGTH`. Typically used inside the address composite set.",
1972
+ "sourcePath": "field/value/text/text.additional.field.ts",
1973
+ "example": "dbxForgeCountryField({ required: true })",
1974
+ "properties": [
1975
+ {
1976
+ "name": "autocomplete",
1977
+ "type": "FieldAutocompleteAttributeOption",
1978
+ "description": "",
1979
+ "required": false
1980
+ },
1981
+ {
1982
+ "name": "inputType",
1983
+ "type": "DbxForgeTextFieldInputType",
1984
+ "description": "HTML input type. Defaults to `'text'`.",
1985
+ "required": false
1986
+ },
1987
+ {
1988
+ "name": "idempotentTransform",
1989
+ "type": "TransformStringFunctionConfig",
1990
+ "description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
1991
+ "required": false
1992
+ }
1993
+ ],
1994
+ "composesFromSlugs": [
1995
+ "text"
1996
+ ],
1997
+ "configInterface": "DbxForgeCountryFieldConfig",
1998
+ "sourceLocation": {
1999
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
2000
+ "line": 194
2001
+ }
2002
+ },
2003
+ {
2004
+ "slug": "zip-code",
2005
+ "factoryName": "dbxForgeZipCodeField",
2006
+ "tier": "field-derivative",
2007
+ "produces": "string",
2008
+ "arrayOutput": "no",
2009
+ "description": "US zip code input with pattern validation and max-length enforcement.",
2010
+ "sourcePath": "field/value/text/text.additional.field.ts",
2011
+ "example": "dbxForgeZipCodeField({ required: true })",
2012
+ "properties": [
2013
+ {
2014
+ "name": "autocomplete",
2015
+ "type": "FieldAutocompleteAttributeOption",
2016
+ "description": "",
2017
+ "required": false
2018
+ },
2019
+ {
2020
+ "name": "inputType",
2021
+ "type": "DbxForgeTextFieldInputType",
2022
+ "description": "HTML input type. Defaults to `'text'`.",
2023
+ "required": false
2024
+ },
2025
+ {
2026
+ "name": "idempotentTransform",
2027
+ "type": "TransformStringFunctionConfig",
2028
+ "description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
2029
+ "required": false
2030
+ }
2031
+ ],
2032
+ "composesFromSlugs": [
2033
+ "text"
2034
+ ],
2035
+ "configInterface": "DbxForgeZipCodeFieldConfig",
2036
+ "sourceLocation": {
2037
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
2038
+ "line": 230
2039
+ }
2040
+ },
2041
+ {
2042
+ "slug": "lat-lng",
2043
+ "factoryName": "dbxForgeLatLngTextField",
2044
+ "tier": "field-derivative",
2045
+ "produces": "string",
2046
+ "arrayOutput": "no",
2047
+ "description": "Latitude/longitude coordinate input with decimal-degree pattern validation.",
2048
+ "sourcePath": "field/value/text/text.additional.field.ts",
2049
+ "example": "dbxForgeLatLngTextField({ key: 'coords', label: 'Coordinates' })",
2050
+ "properties": [],
2051
+ "composesFromSlugs": [
2052
+ "text"
2053
+ ],
2054
+ "configInterface": "DbxForgeLatLngTextFieldConfig",
2055
+ "sourceLocation": {
2056
+ "file": "src/lib/forge/field/value/text/text.additional.field.ts",
2057
+ "line": 267
2058
+ }
2059
+ },
2060
+ {
2061
+ "slug": "address-line",
2062
+ "factoryName": "dbxForgeAddressLineField",
2063
+ "tier": "field-derivative",
2064
+ "produces": "string",
2065
+ "arrayOutput": "no",
2066
+ "description": "Street address line input. The `line` prop controls which line (1 or 2) — it affects key and label generation.",
2067
+ "sourcePath": "field/value/text/text.address.field.ts",
2068
+ "example": "dbxForgeAddressLineField({ line: 2 })",
2069
+ "properties": [
2070
+ {
2071
+ "name": "line",
2072
+ "type": "0 | 1 | 2",
2073
+ "description": "Address line number: 0 for single \"Street\" line, 1 for \"Line 1\", 2 for \"Line 2\".",
2074
+ "required": false
2075
+ }
2076
+ ],
2077
+ "composesFromSlugs": [
2078
+ "text"
2079
+ ],
2080
+ "configInterface": "DbxForgeAddressLineFieldConfig",
2081
+ "sourceLocation": {
2082
+ "file": "src/lib/forge/field/value/text/text.address.field.ts",
2083
+ "line": 68
2084
+ }
2085
+ },
2086
+ {
2087
+ "slug": "address-fields",
2088
+ "factoryName": "dbxForgeAddressFields",
2089
+ "tier": "template-builder",
2090
+ "produces": "FieldDef[]",
2091
+ "arrayOutput": "no",
2092
+ "description": "Flat array of address fields (line(s), city, state, zip, optional country) with a sensible flex layout. Drop directly into a parent `fields: []`.",
2093
+ "sourcePath": "field/value/text/text.address.field.ts",
2094
+ "example": "dbxForgeAddressFields({ required: true, includeCountry: false })",
2095
+ "properties": [
2096
+ {
2097
+ "name": "line1Field",
2098
+ "type": "DbxForgeCityFieldConfig",
2099
+ "description": "",
2100
+ "required": false
2101
+ },
2102
+ {
2103
+ "name": "line2Field",
2104
+ "type": "DbxForgeCityFieldConfig",
2105
+ "description": "",
2106
+ "required": false
2107
+ },
2108
+ {
2109
+ "name": "cityField",
2110
+ "type": "DbxForgeCityFieldConfig",
2111
+ "description": "",
2112
+ "required": false
2113
+ },
2114
+ {
2115
+ "name": "stateField",
2116
+ "type": "DbxForgeStateFieldConfig",
2117
+ "description": "",
2118
+ "required": false
2119
+ },
2120
+ {
2121
+ "name": "zipCodeField",
2122
+ "type": "DbxForgeZipCodeFieldConfig",
2123
+ "description": "",
2124
+ "required": false
2125
+ },
2126
+ {
2127
+ "name": "countryField",
2128
+ "type": "DbxForgeCountryFieldConfig",
2129
+ "description": "",
2130
+ "required": false
2131
+ },
2132
+ {
2133
+ "name": "required",
2134
+ "type": "boolean",
2135
+ "description": "Whether or not to make required fields required.\n\nTrue by default.",
2136
+ "required": false
2137
+ },
2138
+ {
2139
+ "name": "includeLine2",
2140
+ "type": "boolean",
2141
+ "description": "Whether or not to include the second address line.\n\nTrue by default.",
2142
+ "required": false
2143
+ },
2144
+ {
2145
+ "name": "includeCountry",
2146
+ "type": "boolean",
2147
+ "description": "Whether or not to include the country.\n\nTrue by default.",
2148
+ "required": false
2149
+ }
2150
+ ],
2151
+ "composesFromSlugs": [
2152
+ "address-line",
2153
+ "city",
2154
+ "state",
2155
+ "zip-code",
2156
+ "country"
2157
+ ],
2158
+ "configInterface": "DbxForgeAddressFieldsConfig",
2159
+ "sourceLocation": {
2160
+ "file": "src/lib/forge/field/value/text/text.address.field.ts",
2161
+ "line": 101
2162
+ }
2163
+ },
2164
+ {
2165
+ "slug": "address-group",
2166
+ "factoryName": "dbxForgeAddressGroup",
2167
+ "tier": "composite-builder",
2168
+ "produces": "GroupField",
2169
+ "arrayOutput": "no",
2170
+ "description": "Wraps `address-fields` in a `GroupField` so the address is stored as a nested object under one key. Prefer this when the rest of the form doesn't want address fields flattened.",
2171
+ "sourcePath": "field/value/text/text.address.field.ts",
2172
+ "example": "dbxForgeAddressGroup({ key: 'billingAddress' })",
2173
+ "properties": [
2174
+ {
2175
+ "name": "line1Field",
2176
+ "type": "DbxForgeCityFieldConfig",
2177
+ "description": "",
2178
+ "required": false
2179
+ },
2180
+ {
2181
+ "name": "line2Field",
2182
+ "type": "DbxForgeCityFieldConfig",
2183
+ "description": "",
2184
+ "required": false
2185
+ },
2186
+ {
2187
+ "name": "cityField",
2188
+ "type": "DbxForgeCityFieldConfig",
2189
+ "description": "",
2190
+ "required": false
2191
+ },
2192
+ {
2193
+ "name": "stateField",
2194
+ "type": "DbxForgeStateFieldConfig",
2195
+ "description": "",
2196
+ "required": false
2197
+ },
2198
+ {
2199
+ "name": "zipCodeField",
2200
+ "type": "DbxForgeZipCodeFieldConfig",
2201
+ "description": "",
2202
+ "required": false
2203
+ },
2204
+ {
2205
+ "name": "countryField",
2206
+ "type": "DbxForgeCountryFieldConfig",
2207
+ "description": "",
2208
+ "required": false
2209
+ },
2210
+ {
2211
+ "name": "required",
2212
+ "type": "boolean",
2213
+ "description": "Whether or not to make required fields required.\n\nTrue by default.",
2214
+ "required": false
2215
+ },
2216
+ {
2217
+ "name": "includeLine2",
2218
+ "type": "boolean",
2219
+ "description": "Whether or not to include the second address line.\n\nTrue by default.",
2220
+ "required": false
2221
+ },
2222
+ {
2223
+ "name": "includeCountry",
2224
+ "type": "boolean",
2225
+ "description": "Whether or not to include the country.\n\nTrue by default.",
2226
+ "required": false
2227
+ },
2228
+ {
2229
+ "name": "key",
2230
+ "type": "string",
2231
+ "description": "",
2232
+ "required": false
2233
+ }
2234
+ ],
2235
+ "suffix": "Group",
2236
+ "composesFromSlugs": [
2237
+ "address-fields",
2238
+ "group"
2239
+ ],
2240
+ "configInterface": "DbxForgeAddressGroupConfig",
2241
+ "sourceLocation": {
2242
+ "file": "src/lib/forge/field/value/text/text.address.field.ts",
2243
+ "line": 159
2244
+ }
2245
+ },
2246
+ {
2247
+ "slug": "address-list",
2248
+ "factoryName": "dbxForgeAddressListField",
2249
+ "tier": "composite-builder",
2250
+ "produces": "ArrayField",
2251
+ "arrayOutput": "yes",
2252
+ "description": "Repeatable array of addresses built on top of `array-field` + `address-group`. Keeps the `Field` suffix because it returns a single composite field whose value is an array of addresses.",
2253
+ "sourcePath": "field/value/text/text.address.field.ts",
2254
+ "example": "dbxForgeAddressListField({ maxAddresses: 3 })",
2255
+ "properties": [
2256
+ {
2257
+ "name": "line1Field",
2258
+ "type": "DbxForgeCityFieldConfig",
2259
+ "description": "",
2260
+ "required": false
2261
+ },
2262
+ {
2263
+ "name": "line2Field",
2264
+ "type": "DbxForgeCityFieldConfig",
2265
+ "description": "",
2266
+ "required": false
2267
+ },
2268
+ {
2269
+ "name": "cityField",
2270
+ "type": "DbxForgeCityFieldConfig",
2271
+ "description": "",
2272
+ "required": false
2273
+ },
2274
+ {
2275
+ "name": "stateField",
2276
+ "type": "DbxForgeStateFieldConfig",
2277
+ "description": "",
2278
+ "required": false
2279
+ },
2280
+ {
2281
+ "name": "zipCodeField",
2282
+ "type": "DbxForgeZipCodeFieldConfig",
2283
+ "description": "",
2284
+ "required": false
2285
+ },
2286
+ {
2287
+ "name": "countryField",
2288
+ "type": "DbxForgeCountryFieldConfig",
2289
+ "description": "",
2290
+ "required": false
2291
+ },
2292
+ {
2293
+ "name": "required",
2294
+ "type": "boolean",
2295
+ "description": "Whether or not to make required fields required.\n\nTrue by default.",
2296
+ "required": false
2297
+ },
2298
+ {
2299
+ "name": "includeLine2",
2300
+ "type": "boolean",
2301
+ "description": "Whether or not to include the second address line.\n\nTrue by default.",
2302
+ "required": false
2303
+ },
2304
+ {
2305
+ "name": "includeCountry",
2306
+ "type": "boolean",
2307
+ "description": "Whether or not to include the country.\n\nTrue by default.",
2308
+ "required": false
2309
+ },
2310
+ {
2311
+ "name": "key",
2312
+ "type": "string",
2313
+ "description": "",
2314
+ "required": false
2315
+ },
2316
+ {
2317
+ "name": "maxAddresses",
2318
+ "type": "number",
2319
+ "description": "Maximum number of addresses allowed. Defaults to 6.",
2320
+ "required": false
2321
+ }
2322
+ ],
2323
+ "suffix": "Field",
2324
+ "composesFromSlugs": [
2325
+ "address-group",
2326
+ "array-field"
2327
+ ],
2328
+ "configInterface": "DbxForgeAddressListFieldConfig",
2329
+ "sourceLocation": {
2330
+ "file": "src/lib/forge/field/value/text/text.address.field.ts",
2331
+ "line": 199
2332
+ }
2333
+ },
2334
+ {
2335
+ "slug": "text",
2336
+ "factoryName": "dbxForgeTextField",
2337
+ "tier": "field-factory",
2338
+ "produces": "string",
2339
+ "arrayOutput": "no",
2340
+ "description": "Single-line text input. Supports text/email/password input types, autocomplete attribute, regex pattern validation, and idempotent string transforms (trim, case changes, etc.).",
2341
+ "sourcePath": "field/value/text/text.field.ts",
2342
+ "example": "const emailField = dbxForgeTextField({\n key: 'email',\n label: 'Email',\n required: true,\n inputType: 'email',\n props: { placeholder: 'user@example.com' }\n});",
2343
+ "properties": [
2344
+ {
2345
+ "name": "autocomplete",
2346
+ "type": "FieldAutocompleteAttributeOption",
2347
+ "description": "",
2348
+ "required": false
2349
+ },
2350
+ {
2351
+ "name": "inputType",
2352
+ "type": "DbxForgeTextFieldInputType",
2353
+ "description": "HTML input type. Defaults to `'text'`.",
2354
+ "required": false
2355
+ },
2356
+ {
2357
+ "name": "idempotentTransform",
2358
+ "type": "TransformStringFunctionConfig",
2359
+ "description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
2360
+ "required": false
2361
+ }
2362
+ ],
2363
+ "wrapperPattern": "unwrapped",
2364
+ "ngFormType": "input",
2365
+ "configInterface": "DbxForgeTextFieldConfig",
2366
+ "sourceLocation": {
2367
+ "file": "src/lib/forge/field/value/text/text.field.ts",
2368
+ "line": 79
2369
+ }
2370
+ },
2371
+ {
2372
+ "slug": "text-area",
2373
+ "factoryName": "dbxForgeTextAreaField",
2374
+ "tier": "field-factory",
2375
+ "produces": "string",
2376
+ "arrayOutput": "no",
2377
+ "description": "Multi-line textarea input. Supports row count, autocomplete attribute, pattern validation (RegExp → string conversion), and default value.",
2378
+ "sourcePath": "field/value/text/textarea.field.ts",
2379
+ "example": "const bioField = dbxForgeTextAreaField({\n key: 'bio',\n label: 'Biography',\n rows: 5,\n maxLength: 500\n});",
2380
+ "properties": [
2381
+ {
2382
+ "name": "autocomplete",
2383
+ "type": "FieldAutocompleteAttributeOption",
2384
+ "description": "",
2385
+ "required": false
2386
+ },
2387
+ {
2388
+ "name": "rows",
2389
+ "type": "number",
2390
+ "description": "Number of visible text rows. Defaults to 3.",
2391
+ "required": false
2392
+ },
2393
+ {
2394
+ "name": "defaultValue",
2395
+ "type": "string",
2396
+ "description": "Initial value for the textarea. Defaults to empty string.",
2397
+ "required": false
2398
+ }
2399
+ ],
2400
+ "wrapperPattern": "unwrapped",
2401
+ "ngFormType": "textarea",
2402
+ "configInterface": "DbxForgeTextAreaFieldConfig",
2403
+ "sourceLocation": {
2404
+ "file": "src/lib/forge/field/value/text/textarea.field.ts",
2405
+ "line": 47
2406
+ }
2407
+ },
2408
+ {
2409
+ "slug": "flex-layout",
2410
+ "factoryName": "dbxForgeFlexLayout",
2411
+ "tier": "composite-builder",
2412
+ "produces": "GroupField",
2413
+ "arrayOutput": "no",
2414
+ "description": "Creates a responsive flex layout container that arranges child fields horizontally\nwith configurable sizing, breakpoints, and responsive behavior.\n\nEach child field gets a `dbx-flex-N` CSS class applied (merged with any existing className).\nThe container hosts the `dbx-forge-flex` wrapper, which renders the `dbxFlexGroup`\ndirective for responsive breakpoint handling.\n\nA `container` is used (not a `group`) because flex layout is purely visual —\nthe wrapped fields should remain at the same level in the form value, not be\nnested under an extra object.\n\nThis is the forge equivalent of {@link formlyFlexLayoutWrapper}.",
2415
+ "sourcePath": "field/wrapper/flex/flex.wrapper.ts",
2416
+ "example": "// Simple: all fields get default size (2)\ndbxForgeFlexLayout([dbxForgeCityField({}), dbxForgeStateField({}), dbxForgeZipCodeField({})])\n\n// Resulting form value shape (flat — no wrapper property):\n// { city: '...', state: '...', zip: '...' }\n\n// With per-field sizing and breakpoint\ndbxForgeFlexLayout([\n { field: dbxForgeCityField({}), size: 4 },\n dbxForgeStateField({}),\n dbxForgeZipCodeField({})\n], { breakpoint: 'small', size: 1 })\n\n// Full config\ndbxForgeFlexLayout([...fields], { breakpoint: 'large', breakToColumn: true, relative: true, size: 1 })",
2417
+ "properties": [
2418
+ {
2419
+ "name": "size",
2420
+ "type": "DbxFlexSize",
2421
+ "description": "Default flex size for fields that don't specify their own.",
2422
+ "required": false
2423
+ }
2424
+ ],
2425
+ "suffix": "Layout",
2426
+ "composesFromSlugs": [
2427
+ "group"
2428
+ ],
2429
+ "configInterface": "DbxForgeFlexLayoutConfig",
2430
+ "sourceLocation": {
2431
+ "file": "src/lib/forge/field/wrapper/flex/flex.wrapper.ts",
2432
+ "line": 115
2433
+ }
2434
+ },
2435
+ {
2436
+ "slug": "section-wrapper",
2437
+ "factoryName": "dbxForgeSectionWrapper",
2438
+ "tier": "primitive",
2439
+ "produces": "WrapperConfig",
2440
+ "arrayOutput": "no",
2441
+ "description": "Section wrapper config — attach via a field's `wrappers: []` array for a semantic section with header and optional card elevation.",
2442
+ "sourcePath": "field/wrapper/section/section.wrapper.ts",
2443
+ "example": "dbxForgeSectionWrapper({ headerConfig: { text: 'Contact Details' } })",
2444
+ "properties": [
2445
+ {
2446
+ "name": "type",
2447
+ "type": "typeof DBX_FORGE_SECTION_WRAPPER_TYPE_NAME",
2448
+ "description": "",
2449
+ "required": true
2450
+ },
2451
+ {
2452
+ "name": "headerConfig",
2453
+ "type": "DbxSectionHeaderConfig",
2454
+ "description": "Section header configuration.",
2455
+ "required": true
2456
+ },
2457
+ {
2458
+ "name": "elevate",
2459
+ "type": "boolean",
2460
+ "description": "Whether to apply elevated card styling to the section.",
2461
+ "required": false
2462
+ },
2463
+ {
2464
+ "name": "subsection",
2465
+ "type": "boolean",
2466
+ "description": "Whether to render as a `<dbx-subsection>` instead of `<dbx-section>`.",
2467
+ "required": false
2468
+ }
2469
+ ],
2470
+ "returns": "WrapperConfig",
2471
+ "configInterface": "DbxForgeSectionWrapper",
2472
+ "sourceLocation": {
2473
+ "file": "src/lib/forge/field/wrapper/section/section.wrapper.ts",
2474
+ "line": 62
2475
+ }
2476
+ },
2477
+ {
2478
+ "slug": "subsection-wrapper",
2479
+ "factoryName": "dbxForgeSubsectionWrapper",
2480
+ "tier": "primitive",
2481
+ "produces": "WrapperConfig",
2482
+ "arrayOutput": "no",
2483
+ "description": "Subsection variant of `section-wrapper` — defaults to heading level 4 and `subsection: true`.",
2484
+ "sourcePath": "field/wrapper/section/section.wrapper.ts",
2485
+ "example": "dbxForgeSubsectionWrapper({ headerConfig: { text: 'Options' } })",
2486
+ "properties": [
2487
+ {
2488
+ "name": "type",
2489
+ "type": "typeof DBX_FORGE_SECTION_WRAPPER_TYPE_NAME",
2490
+ "description": "",
2491
+ "required": true
2492
+ },
2493
+ {
2494
+ "name": "headerConfig",
2495
+ "type": "DbxSectionHeaderConfig",
2496
+ "description": "Section header configuration.",
2497
+ "required": true
2498
+ },
2499
+ {
2500
+ "name": "elevate",
2501
+ "type": "boolean",
2502
+ "description": "Whether to apply elevated card styling to the section.",
2503
+ "required": false
2504
+ },
2505
+ {
2506
+ "name": "subsection",
2507
+ "type": "boolean",
2508
+ "description": "Whether to render as a `<dbx-subsection>` instead of `<dbx-section>`.",
2509
+ "required": false
2510
+ }
2511
+ ],
2512
+ "returns": "WrapperConfig",
2513
+ "configInterface": "DbxForgeSectionWrapper",
2514
+ "sourceLocation": {
2515
+ "file": "src/lib/forge/field/wrapper/section/section.wrapper.ts",
2516
+ "line": 85
2517
+ }
2518
+ },
2519
+ {
2520
+ "slug": "style-wrapper",
2521
+ "factoryName": "dbxForgeStyleWrapper",
2522
+ "tier": "primitive",
2523
+ "produces": "WrapperConfig",
2524
+ "arrayOutput": "no",
2525
+ "description": "Style wrapper config — applies dynamic CSS classes (`ngClass`) and/or inline styles (`ngStyle`) to any field via its `wrappers: []`.",
2526
+ "sourcePath": "field/wrapper/style/style.wrapper.ts",
2527
+ "example": "dbxForgeStyleWrapper({ classGetter: 'highlighted' })",
2528
+ "properties": [
2529
+ {
2530
+ "name": "type",
2531
+ "type": "typeof DBX_FORGE_STYLE_WRAPPER_TYPE_NAME",
2532
+ "description": "",
2533
+ "required": true
2534
+ },
2535
+ {
2536
+ "name": "classGetter",
2537
+ "type": "MaybeObservableOrValue<string>",
2538
+ "description": "Observable or static value providing CSS class names via `[ngClass]`.",
2539
+ "required": false
2540
+ },
2541
+ {
2542
+ "name": "styleGetter",
2543
+ "type": "MaybeObservableOrValue<DbxForgeStyleObject>",
2544
+ "description": "Observable or static value providing inline styles via `[ngStyle]`.",
2545
+ "required": false
2546
+ }
2547
+ ],
2548
+ "returns": "WrapperConfig",
2549
+ "configInterface": "DbxForgeStyleWrapper",
2550
+ "sourceLocation": {
2551
+ "file": "src/lib/forge/field/wrapper/style/style.wrapper.ts",
2552
+ "line": 63
2553
+ }
2554
+ }
2555
+ ]
2556
+ }