@lmb-it/kitsconcerto-native 0.1.291 → 0.1.293

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from 'react';
2
- import React__default, { ReactNode, ReactElement, Ref, CSSProperties, RefObject, ElementType, MouseEventHandler, JSX, PropsWithChildren, ComponentType, FunctionComponent, FC, Dispatch, SetStateAction, RefCallback } from 'react';
2
+ import React__default, { ReactNode, ReactElement, Ref, CSSProperties, RefObject, MouseEventHandler, ElementType, JSX, PropsWithChildren, ComponentType, FunctionComponent, FC, Dispatch, SetStateAction, RefCallback } from 'react';
3
3
  import * as react_native from 'react-native';
4
4
  import { ViewStyle, ColorValue as ColorValue$1, ViewProps, TextProps as TextProps$1, ImageProps, Text as Text$1, ScrollViewProps, GestureResponderEvent, NativeSyntheticEvent, TextInputKeyPressEventData, TargetedEvent, NativeScrollEvent, StyleProp, TextInput } from 'react-native';
5
5
  import * as _gluestack_ui_utils_nativewind_utils from '@gluestack-ui/utils/nativewind-utils';
@@ -119,7 +119,23 @@ export type INumberProps = IKitsInputNumber;
119
119
  * Unified severity type used across all messaging components
120
120
  * (KitsConfirm, KitsDialog, KitsToast).
121
121
  */
122
- export type Severity = 'success' | 'info' | 'warning' | 'danger' | 'help' | 'secondary' | 'brand';
122
+ export type Severity = 'success' | 'info' | 'warning' | 'danger' | 'help' | 'secondary' | 'brand'
123
+ /**
124
+ * ⛔ ADDITIVE, AND IT RESOLVES FROM TOKENS RATHER THAN FROM `theme.severity`.
125
+ * A product that has not defined the pair is unaffected: the resolver
126
+ * falls back to `primary`, so this severity is only visible to a product
127
+ * that opts in by defining the tokens AND asking for it.
128
+ *
129
+ * It exists because `brand` is one colour for a whole product, and a
130
+ * product can need a second, different interactive colour without
131
+ * re-colouring the 110 buttons already wearing `brand`.
132
+ *
133
+ * Tokens: `primary-interactive` (fill) and `on-primary-interactive`
134
+ * (the ink on that fill). The ink is a SEPARATE token on purpose — a
135
+ * fill that flips between modes needs an ink that can flip with it, and
136
+ * one value cannot serve both.
137
+ */
138
+ | 'primary-interactive';
123
139
  /**
124
140
  * Color slots resolved per-severity.
125
141
  * Each value is a theme token reference (e.g. 'green.500'), NOT a raw hex value.
@@ -3022,434 +3038,19 @@ export type IDVPaginationRequest = IPaginationRequest;
3022
3038
  */
3023
3039
  export type IDVPaginationResponse<ListData> = IPaginationResponse<ListData>;
3024
3040
 
3025
- export interface ITranslatableText {
3026
- raw: string | null;
3027
- i18nKey: string | null;
3028
- }
3029
- export type TKeyFilter = 'int' | 'pint' | 'num' | 'pnum' | 'money' | 'alpha' | 'alphanum' | 'email';
3030
- export type TBuilderFieldType = 'Text' | 'Textarea' | 'Number' | 'Phone' | 'Date' | 'File' | 'Select' | 'Multiselect' | 'Checkbox' | 'Radios' | 'Tags' | 'Switch' | 'Address' | 'RadiusPicker' | 'Section' | 'Container' | 'Group';
3031
- export type TLocationProvider = 'google' | 'experian';
3032
- /**
3033
- * Country code format passed to the location picker.
3034
- * - 'iso2' = ISO 3166-1 alpha-2 (e.g. "AU")
3035
- * - 'iso3' = ISO 3166-1 alpha-3 (e.g. "AUS")
3036
- * The picker accepts either; KitsInputLocation slices to ISO2 for Google.
3037
- */
3038
- export type TIsoFormat = 'iso2' | 'iso3';
3039
- export type TDynamicFlag = 'countries' | 'states' | 'currencies' | 'languages' | 'timezones' | 'careers' | 'industries';
3040
- export type TAcceptedFileType = 'png' | 'jpg' | 'gif' | 'images' | 'pdf' | 'doc' | 'docx' | 'txt' | 'xls' | 'xlsx' | 'csv' | 'ppt' | 'pptx' | 'zip' | 'json' | 'audio' | 'video' | 'allFiles';
3041
- export interface IOptionItem {
3042
- value: string;
3043
- label: ITranslatableText;
3044
- /**
3045
- * Optional base64 data URL for image-mode Checkbox/Radio options.
3046
- * Format: `data:image/png;base64,...` or `data:image/jpeg;base64,...`.
3047
- * Constraint enforced at builder time: PNG / JPG only, ≤ 100 KB.
3048
- */
3049
- image?: string | null;
3050
- }
3051
- export type IOptionsSource = {
3052
- source: 'static';
3053
- items: IOptionItem[];
3054
- } | {
3055
- source: 'dynamic';
3056
- flag: TDynamicFlag;
3057
- flagParams: Record<string, string> | null;
3058
- };
3059
- export type TConditionOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'is_empty' | 'is_not_empty' | 'greater_than' | 'less_than' | 'in' | 'not_in';
3060
- export type TConditionAction = 'show' | 'hide' | 'enable' | 'disable';
3061
- export type TConditionMatch = 'ALL' | 'ANY';
3062
- export interface IConditionRule {
3063
- targetField: string;
3064
- operator: TConditionOperator;
3065
- value: string | null;
3066
- }
3067
- export interface IFieldCondition {
3068
- action: TConditionAction;
3069
- match: TConditionMatch;
3070
- rules: IConditionRule[];
3071
- }
3072
- export interface IBaseValidation {
3073
- required: boolean;
3074
- requiredMessage: ITranslatableText | null;
3075
- }
3076
- export interface ITextValidation extends IBaseValidation {
3077
- minLength: number | null;
3078
- minLengthMessage: ITranslatableText | null;
3079
- maxLength: number | null;
3080
- maxLengthMessage: ITranslatableText | null;
3081
- pattern: string | null;
3082
- patternMessage: ITranslatableText | null;
3083
- }
3084
- export interface INumberValidation extends IBaseValidation {
3085
- min: number | null;
3086
- minMessage: ITranslatableText | null;
3087
- max: number | null;
3088
- maxMessage: ITranslatableText | null;
3089
- }
3090
- export type TDateBoundary = 'today' | 'custom' | 'none';
3091
- export interface IDateValidation extends IBaseValidation {
3092
- minDate: TDateBoundary;
3093
- minDateValue: string | null;
3094
- minDateMessage: ITranslatableText | null;
3095
- maxDate: TDateBoundary;
3096
- maxDateValue: string | null;
3097
- maxDateMessage: ITranslatableText | null;
3098
- }
3099
- export interface IFileValidation extends IBaseValidation {
3100
- minFileSize: number | null;
3101
- minFileSizeMessage: ITranslatableText | null;
3102
- maxFileSize: number | null;
3103
- maxFileSizeMessage: ITranslatableText | null;
3104
- }
3105
- export interface ISelectionValidation extends IBaseValidation {
3106
- minSelections: number | null;
3107
- minSelectionsMessage: ITranslatableText | null;
3108
- maxSelections: number | null;
3109
- maxSelectionsMessage: ITranslatableText | null;
3110
- }
3111
- export interface IBuilderFieldBase {
3112
- _temp_id: string;
3113
- id: number | null;
3114
- name: string;
3115
- label: ITranslatableText;
3116
- helpText: ITranslatableText | null;
3117
- order: number;
3118
- colSpan: number;
3119
- conditions: IFieldCondition[];
3120
- }
3121
- export interface IBuilderTextField extends IBuilderFieldBase {
3122
- type: 'Text';
3123
- placeholder: ITranslatableText | null;
3124
- initialValue: string | null;
3125
- keyFilter: TKeyFilter | null;
3126
- withMask: boolean;
3127
- mask: string | null;
3128
- unmask: boolean | null;
3129
- leftIcon: string | null;
3130
- prefix: string | null;
3131
- rightIcon: string | null;
3132
- suffix: string | null;
3133
- validation: ITextValidation;
3134
- }
3135
- export interface IBuilderTextareaField extends IBuilderFieldBase {
3136
- type: 'Textarea';
3137
- placeholder: ITranslatableText | null;
3138
- initialValue: string | null;
3139
- keyFilter: TKeyFilter | null;
3140
- rows: number;
3141
- autoResize: boolean;
3142
- /**
3143
- * @deprecated Use `validation.maxLength` instead. Kept for back-compat with
3144
- * older payloads; new code should ignore this and read from the Validation
3145
- * panel's `validation.maxLength`. Removed from the designer's Basic panel
3146
- * in the same change that introduced this notice.
3147
- */
3148
- maxLength: number | null;
3149
- leftIcon: string | null;
3150
- prefix: string | null;
3151
- rightIcon: string | null;
3152
- suffix: string | null;
3153
- validation: ITextValidation;
3154
- }
3155
- export interface IBuilderNumberField extends IBuilderFieldBase {
3156
- type: 'Number';
3157
- placeholder: ITranslatableText | null;
3158
- initialValue: number | null;
3159
- mode: 'decimal' | 'currency';
3160
- currency: string | null;
3161
- useGrouping: boolean;
3162
- minFractionDigits: number;
3163
- maxFractionDigits: number;
3164
- prefix: string | null;
3165
- suffix: string | null;
3166
- leftIcon: string | null;
3167
- rightIcon: string | null;
3168
- validation: INumberValidation;
3169
- }
3170
- export interface IBuilderPhoneField extends IBuilderFieldBase {
3171
- type: 'Phone';
3172
- initialValue: string | null;
3173
- isWithCountryCode: boolean;
3174
- defaultCountry: string;
3175
- outputFormat: 'string' | 'object';
3176
- includedCountries: string[];
3177
- excludedCountries: string[];
3178
- validation: IBaseValidation;
3179
- }
3180
- export interface IBuilderDateField extends IBuilderFieldBase {
3181
- type: 'Date';
3182
- placeholder: ITranslatableText | null;
3183
- initialValue: string | null;
3184
- selectionMode: 'single' | 'range';
3185
- dateFormat: string;
3186
- numberOfMonths: number;
3187
- validation: IDateValidation;
3188
- }
3189
- export interface IBuilderFileField extends IBuilderFieldBase {
3190
- type: 'File';
3191
- placeholder: ITranslatableText | null;
3192
- fileType: 'File' | 'Image';
3193
- multiple: boolean;
3194
- limit: number | null;
3195
- classicUploader: boolean;
3196
- acceptedTypes: TAcceptedFileType[];
3197
- validation: IFileValidation;
3198
- }
3199
- export interface IBuilderSelectField extends IBuilderFieldBase {
3200
- type: 'Select';
3201
- placeholder: ITranslatableText | null;
3202
- withFilter: boolean;
3203
- withArrow: boolean;
3204
- showClear: boolean;
3205
- options: IOptionsSource;
3206
- validation: IBaseValidation;
3207
- }
3208
- export interface IBuilderMultiselectField extends IBuilderFieldBase {
3209
- type: 'Multiselect';
3210
- placeholder: ITranslatableText | null;
3211
- withFilter: boolean;
3212
- withArrow: boolean;
3213
- showClear: boolean;
3214
- valueMode: 'chip' | 'comma';
3215
- selectionLimit: number | null;
3216
- options: IOptionsSource;
3217
- validation: ISelectionValidation;
3218
- }
3219
- /**
3220
- * Checkbox / Radio rendering mode.
3221
- * - 'labeled' — standard text label per option (default)
3222
- * - 'images' — image per option (PNG/JPG ≤ 100 KB, base64), label becomes alt text
3223
- *
3224
- * 'custom' was removed — the form-builder UI cannot author render-prop component
3225
- * code; consumers wanting fully custom rendering should fork the field.
3226
- */
3227
- export type TCheckboxRadioMode = 'labeled' | 'images';
3228
- export type TCheckboxRadioSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3229
- /**
3230
- * Items per row for Checkbox/Radio layouts. Capped at 4 — beyond that the
3231
- * options become too narrow to be readable. Width per item accounts for the
3232
- * inter-item gap (see `WIDTH_BY_ITEMS_PER_ROW` in FieldPreview).
3233
- */
3234
- export type TItemsPerRow = 1 | 2 | 3 | 4;
3235
- export interface IBuilderCheckboxField extends IBuilderFieldBase {
3236
- type: 'Checkbox';
3237
- mode: TCheckboxRadioMode;
3238
- vertical: boolean;
3239
- size: TCheckboxRadioSize;
3240
- withBulbs: boolean;
3241
- /** Items per row — controls each option's width via 100% / itemsPerRow. */
3242
- itemsPerRow: TItemsPerRow;
3243
- selectionLimit: number | null;
3244
- options: IOptionsSource;
3245
- validation: ISelectionValidation;
3246
- }
3247
- export interface IBuilderRadiosField extends IBuilderFieldBase {
3248
- type: 'Radios';
3249
- mode: TCheckboxRadioMode;
3250
- vertical: boolean;
3251
- size: TCheckboxRadioSize;
3252
- withBulbs: boolean;
3253
- /** Items per row — controls each option's width via 100% / itemsPerRow. */
3254
- itemsPerRow: TItemsPerRow;
3255
- options: IOptionsSource;
3256
- validation: IBaseValidation;
3257
- }
3258
- export interface IBuilderTagsField extends IBuilderFieldBase {
3259
- type: 'Tags';
3260
- placeholder: ITranslatableText | null;
3261
- forceSelection: boolean;
3262
- isMultiple: boolean;
3263
- selectionLimit: number | null;
3264
- options: IOptionsSource;
3265
- validation: ISelectionValidation;
3266
- }
3267
- export interface IBuilderSwitchField extends IBuilderFieldBase {
3268
- type: 'Switch';
3269
- initialValue: boolean;
3270
- displayAs: 'switch' | 'checkbox';
3271
- direction: 'row' | 'column';
3272
- validation: IBaseValidation;
3273
- }
3274
- /**
3275
- * Address field — by default a Google/Experian location picker.
3276
- *
3277
- * When `allowManualEntry` is true, the runtime renders an "Enter it manually"
3278
- * toggle below the picker. Toggling it on flips a sub-state that:
3279
- * 1. Disables the picker (built-in condition: `disabled when manual = true`)
3280
- * 2. Reveals manual address fields (street, city, state, postcode, country)
3281
- *
3282
- * The form-builder stores ONLY the configuration; the actual sub-state and
3283
- * runtime rendering is the consumer's responsibility (App / Dashboard).
3284
- */
3285
- export interface IBuilderAddressField extends IBuilderFieldBase {
3286
- type: 'Address';
3287
- provider: TLocationProvider;
3288
- apiKey: string | null;
3289
- countryIso: string | null;
3290
- countryIsoFormat: TIsoFormat;
3291
- placeholder: ITranslatableText | null;
3292
- initialValue: string | null;
3293
- forceSelection: boolean;
3294
- allowManualEntry: boolean;
3295
- manualToggleLabel: ITranslatableText | null;
3296
- validation: IBaseValidation;
3297
- }
3298
- export interface IBuilderRadiusPickerField extends IBuilderFieldBase {
3299
- type: 'RadiusPicker';
3300
- direction: 'vertical' | 'horizontal';
3301
- mapHeight: number;
3302
- min: number;
3303
- max: number;
3304
- step: number;
3305
- unit: 'km' | 'mi';
3306
- showPresets: boolean;
3307
- showNumericInput: boolean;
3308
- showUnitToggle: boolean;
3309
- showLatLngInput: boolean;
3310
- showCurrentLocationButton: boolean;
3311
- showSearchBox: boolean;
3312
- showResetButton: boolean;
3313
- showFloatingSlider: boolean;
3314
- placeholder: ITranslatableText | null;
3315
- initialValue: {
3316
- center: {
3317
- lat: number;
3318
- lng: number;
3319
- } | null;
3320
- radius: number;
3321
- unit: 'km' | 'mi';
3322
- } | null;
3323
- validation: IBaseValidation;
3324
- }
3325
- export interface IBuilderSectionField {
3326
- _temp_id: string;
3327
- id: number | null;
3328
- type: 'Section';
3329
- name: string;
3330
- label: ITranslatableText;
3331
- description: ITranslatableText | null;
3332
- showDivider: boolean;
3333
- order: number;
3334
- colSpan: number;
3335
- }
3336
- export interface IBuilderContainerField {
3337
- _temp_id: string;
3338
- id: number | null;
3339
- type: 'Container';
3340
- name: string;
3341
- order: number;
3342
- colSpan: number;
3343
- layout: 'row' | 'column' | 'grid';
3344
- columns: number;
3345
- gap: number;
3346
- children: IBuilderField[];
3347
- }
3348
- export interface IBuilderGroupField {
3349
- _temp_id: string;
3350
- id: number | null;
3351
- type: 'Group';
3352
- name: string;
3353
- order: number;
3354
- colSpan: number;
3355
- label: ITranslatableText;
3356
- description: ITranslatableText | null;
3357
- showDivider: boolean;
3358
- collapsible: boolean;
3359
- collapsedByDefault: boolean;
3360
- children: IBuilderField[];
3361
- conditions: IFieldCondition[];
3362
- }
3363
- export type IBuilderField = IBuilderTextField | IBuilderTextareaField | IBuilderNumberField | IBuilderPhoneField | IBuilderDateField | IBuilderFileField | IBuilderSelectField | IBuilderMultiselectField | IBuilderCheckboxField | IBuilderRadiosField | IBuilderTagsField | IBuilderSwitchField | IBuilderAddressField | IBuilderRadiusPickerField | IBuilderSectionField | IBuilderContainerField | IBuilderGroupField;
3364
- export interface IFormBuilderMeta {
3365
- title: string;
3366
- description: string | null;
3367
- version: string;
3368
- is_active: boolean;
3369
- }
3370
- export interface IFormBuilderProps {
3371
- formId?: number;
3372
- /**
3373
- * Initial form metadata (uncontrolled mode). Ignored when `value` is set —
3374
- * `value.form` then drives the meta.
3375
- */
3376
- initialMeta?: IFormBuilderMeta;
3377
- /**
3378
- * Saved fields loaded from the backend (uncontrolled mode). Accepts
3379
- * IBuilderFieldExport[] (the persisted shape without _temp_id) because
3380
- * _temp_id is always assigned internally on mount. Ignored when `value` is
3381
- * set — `value.fields` then drives the field tree.
3382
- */
3383
- initialFields?: IBuilderFieldExport[];
3384
- /**
3385
- * Controlled-mode payload. When provided, FormBuilder mirrors `value.fields`
3386
- * and `value.form` into its internal state on every change. Pair with
3387
- * `onChange` so the consumer owns the source of truth.
3388
- */
3389
- value?: IFormBuilderPayload;
3390
- /**
3391
- * Fires on every meta or field-tree edit. Always invoked (controlled or
3392
- * uncontrolled) so consumers can mirror state, debounce a save, drive a
3393
- * page-level Save button, etc.
3394
- */
3395
- onChange?: (payload: IFormBuilderPayload) => void;
3396
- localeKeys?: string[];
3397
- /**
3398
- * Optional save handler. When omitted, FormBuilder renders no Save button —
3399
- * persistence is owned by the consumer (e.g. a page-level submit button
3400
- * reading state via `onChange`/`value`). When provided, the Save button is
3401
- * rendered and runs the snake_case validator before invoking this handler.
3402
- */
3403
- onSave?: (payload: IFormBuilderPayload) => void | Promise<void>;
3404
- /**
3405
- * Optional cancel handler. When omitted, no Cancel button is rendered.
3406
- */
3407
- onCancel?: () => void;
3408
- isSaving?: boolean;
3409
- readOnly?: boolean;
3410
- /**
3411
- * Strategy for the field's `name` (machine key).
3412
- * - `'auto'` (default): every field receives a unique 6-char prefix
3413
- * (`f` + 5 base36) on insert, and the name is auto-derived as
3414
- * `<prefix>_<slug-of-label>` whenever the label changes. The Field Name
3415
- * input is disabled. The prefix is sticky across edits and is reused
3416
- * when the field is re-loaded from a saved payload, so duplicate labels
3417
- * stay distinct without admin intervention.
3418
- * - `'manual'`: admin types the snake_case name in the Properties Panel.
3419
- * Use only when the field name is a meaningful contract (e.g. matched
3420
- * against an external schema). The Backend's snake_case validator still
3421
- * runs.
3422
- */
3423
- nameMode?: 'manual' | 'auto';
3424
- dynamicFlagLoader?: (flag: TDynamicFlag, params: Record<string, string> | null) => Promise<IOptionItem[]>;
3425
- /**
3426
- * Consumer-injected node rendered in the header to the LEFT of the
3427
- * Cancel/Save buttons. Use for tools like "Generate with AI", "Import",
3428
- * "Templates", etc. KitsConcerto stays agnostic — the consumer owns the
3429
- * action's label, icon, loading state, and onClick handler.
3430
- */
3431
- toolbarActions?: ReactNode;
3432
- }
3433
- export type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
3434
- export type IBuilderFieldExport = DistributiveOmit<IBuilderField, '_temp_id'>;
3435
- export interface IFormBuilderPayload {
3436
- form: IFormBuilderMeta;
3437
- fields: IBuilderFieldExport[];
3438
- }
3439
-
3440
- declare const sizingProperties: {
3441
- w: string;
3442
- width: string;
3443
- h: string;
3444
- height: string;
3445
- minW: string;
3446
- minWidth: string;
3447
- maxW: string;
3448
- maxWidth: string;
3449
- minH: string;
3450
- minHeight: string;
3451
- maxH: string;
3452
- maxHeight: string;
3041
+ declare const sizingProperties: {
3042
+ w: string;
3043
+ width: string;
3044
+ h: string;
3045
+ height: string;
3046
+ minW: string;
3047
+ minWidth: string;
3048
+ maxW: string;
3049
+ maxWidth: string;
3050
+ minH: string;
3051
+ minHeight: string;
3052
+ maxH: string;
3053
+ maxHeight: string;
3453
3054
  };
3454
3055
  declare const listingProperties: {
3455
3056
  listStyleType: any;
@@ -3672,236 +3273,42 @@ export type Breakpoint = 'base' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xx
3672
3273
  export type PlatformKey = 'web' | 'ios' | 'android';
3673
3274
  export type Orientation = 'portrait' | 'landscape';
3674
3275
 
3675
- export interface IIconProps extends IStyleClasses {
3676
- name: IconName | ElementType;
3677
- /** Size token, or an explicit pixel number (both Icon impls resolve numbers). */
3678
- size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
3679
- color?: string;
3680
- strokeWidth?: number;
3681
- }
3682
- export type IconName = "a-arrow-down" | "a-arrow-up" | "a-large-small" | "accessibility" | "activity" | "address-book" | "air-vent" | "airplay" | "alarm-clock" | "alarm-clock-check" | "alarm-clock-minus" | "alarm-clock-off" | "alarm-clock-plus" | "alarm-smoke" | "album" | "align-center" | "align-center-horizontal" | "align-center-vertical" | "align-end-horizontal" | "align-end-vertical" | "align-horizontal-distribute-center" | "align-horizontal-distribute-end" | "align-horizontal-distribute-start" | "align-horizontal-justify-center" | "align-horizontal-justify-end" | "align-horizontal-justify-start" | "align-horizontal-space-around" | "align-horizontal-space-between" | "align-justify" | "align-left" | "align-right" | "align-start-horizontal" | "align-start-vertical" | "align-vertical-distribute-center" | "align-vertical-distribute-end" | "align-vertical-distribute-start" | "align-vertical-justify-center" | "align-vertical-justify-end" | "align-vertical-justify-start" | "align-vertical-space-around" | "align-vertical-space-between" | "amazon" | "ambulance" | "ampersand" | "ampersands" | "amphora" | "anchor" | "android" | "angle-double-down" | "angle-double-left" | "angle-double-right" | "angle-double-up" | "angle-down" | "angle-left" | "angle-right" | "angle-up" | "angry" | "annoyed" | "antenna" | "anvil" | "aperture" | "app-window" | "app-window-mac" | "apple" | "archive" | "archive-restore" | "archive-x" | "armchair" | "arrow-big-down" | "arrow-big-down-dash" | "arrow-big-left" | "arrow-big-left-dash" | "arrow-big-right" | "arrow-big-right-dash" | "arrow-big-up" | "arrow-big-up-dash" | "arrow-circle-down" | "arrow-circle-left" | "arrow-circle-right" | "arrow-circle-up" | "arrow-down" | "arrow-down-0-1" | "arrow-down-1-0" | "arrow-down-a-z" | "arrow-down-from-line" | "arrow-down-left" | "arrow-down-left-and-arrow-up-right-to-center" | "arrow-down-narrow-wide" | "arrow-down-right" | "arrow-down-to-dot" | "arrow-down-to-line" | "arrow-down-up" | "arrow-down-wide-narrow" | "arrow-down-z-a" | "arrow-left" | "arrow-left-from-line" | "arrow-left-right" | "arrow-left-to-line" | "arrow-right" | "arrow-right-arrow-left" | "arrow-right-from-line" | "arrow-right-left" | "arrow-right-to-line" | "arrow-up" | "arrow-up-0-1" | "arrow-up-1-0" | "arrow-up-a-z" | "arrow-up-down" | "arrow-up-from-dot" | "arrow-up-from-line" | "arrow-up-left" | "arrow-up-narrow-wide" | "arrow-up-right" | "arrow-up-right-and-arrow-down-left-from-center" | "arrow-up-to-line" | "arrow-up-wide-narrow" | "arrow-up-z-a" | "arrows-alt" | "arrows-h" | "arrows-up-from-line" | "arrows-v" | "asterisk" | "astroid" | "at" | "at-sign" | "atom" | "audio-lines" | "audio-waveform" | "award" | "axe" | "axis-3d" | "baby" | "backpack" | "backward" | "badge" | "badge-alert" | "badge-cent" | "badge-check" | "badge-dollar-sign" | "badge-euro" | "badge-indian-rupee" | "badge-info" | "badge-japanese-yen" | "badge-minus" | "badge-percent" | "badge-plus" | "badge-pound-sterling" | "badge-question-mark" | "badge-russian-ruble" | "badge-swiss-franc" | "badge-turkish-lira" | "badge-x" | "baggage-claim" | "balloon" | "ban" | "banana" | "bandage" | "banknote" | "banknote-arrow-down" | "banknote-arrow-up" | "banknote-x" | "barcode" | "barrel" | "bars" | "baseline" | "bath" | "battery" | "battery-charging" | "battery-full" | "battery-low" | "battery-medium" | "battery-plus" | "battery-warning" | "beaker" | "bean" | "bean-off" | "bed" | "bed-double" | "bed-single" | "beef" | "beef-off" | "beer" | "beer-off" | "bell" | "bell-check" | "bell-dot" | "bell-electric" | "bell-minus" | "bell-off" | "bell-plus" | "bell-ring" | "bell-slash" | "between-horizontal-end" | "between-horizontal-start" | "between-vertical-end" | "between-vertical-start" | "biceps-flexed" | "bike" | "binary" | "binoculars" | "biohazard" | "bird" | "birdhouse" | "bitcoin" | "blend" | "blender" | "blinds" | "blocks" | "bluetooth" | "bluetooth-connected" | "bluetooth-off" | "bluetooth-searching" | "bold" | "bolt" | "bomb" | "bone" | "book" | "book-a" | "book-alert" | "book-audio" | "book-check" | "book-copy" | "book-dashed" | "book-down" | "book-headphones" | "book-heart" | "book-image" | "book-key" | "book-lock" | "book-marked" | "book-minus" | "book-open" | "book-open-check" | "book-open-text" | "book-plus" | "book-search" | "book-text" | "book-type" | "book-up" | "book-up-2" | "book-user" | "book-x" | "bookmark" | "bookmark-check" | "bookmark-fill" | "bookmark-minus" | "bookmark-off" | "bookmark-plus" | "bookmark-x" | "boom-box" | "bot" | "bot-message-square" | "bot-off" | "bottle-wine" | "bow-arrow" | "box" | "boxes" | "braces" | "brackets" | "brain" | "brain-circuit" | "brain-cog" | "brick-wall" | "brick-wall-fire" | "brick-wall-shield" | "briefcase" | "briefcase-business" | "briefcase-conveyor-belt" | "briefcase-medical" | "bring-to-front" | "broccoli" | "brush" | "brush-cleaning" | "bubbles" | "bug" | "bug-off" | "bug-play" | "building" | "building-2" | "building-columns" | "bullseye" | "bus" | "bus-front" | "cable" | "cable-car" | "cake" | "cake-slice" | "calculator" | "calendar" | "calendar-1" | "calendar-arrow-down" | "calendar-arrow-up" | "calendar-check" | "calendar-check-2" | "calendar-clock" | "calendar-cog" | "calendar-days" | "calendar-fold" | "calendar-heart" | "calendar-minus" | "calendar-minus-2" | "calendar-off" | "calendar-plus" | "calendar-plus-2" | "calendar-range" | "calendar-search" | "calendar-sync" | "calendar-times" | "calendar-x" | "calendar-x-2" | "calendars" | "camera" | "camera-off" | "candy" | "candy-cane" | "candy-off" | "cannabis" | "cannabis-off" | "captions" | "captions-off" | "car" | "car-front" | "car-taxi-front" | "caravan" | "card-sim" | "caret-down" | "caret-left" | "caret-right" | "caret-up" | "carrot" | "cart-arrow-down" | "cart-minus" | "cart-plus" | "case-lower" | "case-sensitive" | "case-upper" | "cassette-tape" | "cast" | "castle" | "cat" | "cctv" | "cctv-off" | "chart-area" | "chart-bar" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-stacked" | "chart-candlestick" | "chart-column" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-gantt" | "chart-line" | "chart-network" | "chart-no-axes-column" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie" | "chart-scatter" | "chart-spline" | "check" | "check-check" | "check-circle" | "check-line" | "check-square" | "chef-hat" | "cherry" | "chess-bishop" | "chess-king" | "chess-knight" | "chess-pawn" | "chess-queen" | "chess-rook" | "chevron-circle-down" | "chevron-circle-left" | "chevron-circle-right" | "chevron-circle-up" | "chevron-down" | "chevron-first" | "chevron-last" | "chevron-left" | "chevron-right" | "chevron-up" | "chevrons-down" | "chevrons-down-up" | "chevrons-left" | "chevrons-left-right" | "chevrons-left-right-ellipsis" | "chevrons-right" | "chevrons-right-left" | "chevrons-up" | "chevrons-up-down" | "church" | "cigarette" | "cigarette-off" | "circle" | "circle-alert" | "circle-arrow-down" | "circle-arrow-left" | "circle-arrow-out-down-left" | "circle-arrow-out-down-right" | "circle-arrow-out-up-left" | "circle-arrow-out-up-right" | "circle-arrow-right" | "circle-arrow-up" | "circle-check" | "circle-check-big" | "circle-chevron-down" | "circle-chevron-left" | "circle-chevron-right" | "circle-chevron-up" | "circle-dashed" | "circle-divide" | "circle-dollar-sign" | "circle-dot" | "circle-dot-dashed" | "circle-ellipsis" | "circle-equal" | "circle-fading-arrow-up" | "circle-fading-plus" | "circle-fill" | "circle-gauge" | "circle-minus" | "circle-off" | "circle-parking" | "circle-parking-off" | "circle-pause" | "circle-percent" | "circle-pile" | "circle-play" | "circle-plus" | "circle-pound-sterling" | "circle-power" | "circle-question-mark" | "circle-slash" | "circle-slash-2" | "circle-small" | "circle-star" | "circle-stop" | "circle-user" | "circle-user-round" | "circle-x" | "circuit-board" | "citrus" | "clapperboard" | "clipboard" | "clipboard-check" | "clipboard-clock" | "clipboard-copy" | "clipboard-list" | "clipboard-minus" | "clipboard-paste" | "clipboard-pen" | "clipboard-pen-line" | "clipboard-plus" | "clipboard-type" | "clipboard-x" | "clock" | "clock-1" | "clock-10" | "clock-11" | "clock-12" | "clock-2" | "clock-3" | "clock-4" | "clock-5" | "clock-6" | "clock-7" | "clock-8" | "clock-9" | "clock-alert" | "clock-arrow-down" | "clock-arrow-up" | "clock-check" | "clock-fading" | "clock-plus" | "clone" | "closed-caption" | "cloud" | "cloud-alert" | "cloud-backup" | "cloud-check" | "cloud-cog" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon" | "cloud-moon-rain" | "cloud-off" | "cloud-rain" | "cloud-rain-wind" | "cloud-snow" | "cloud-sun" | "cloud-sun-rain" | "cloud-sync" | "cloud-upload" | "cloudy" | "clover" | "club" | "code" | "code-xml" | "coffee" | "cog" | "coins" | "columns-2" | "columns-3" | "columns-3-cog" | "columns-4" | "combine" | "command" | "comment" | "comments" | "compass" | "component" | "computer" | "concierge-bell" | "cone" | "construction" | "contact" | "contact-round" | "container" | "contrast" | "cookie" | "cooking-pot" | "copy" | "copy-check" | "copy-minus" | "copy-plus" | "copy-slash" | "copy-x" | "copyleft" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "cpu" | "creative-commons" | "credit-card" | "croissant" | "crop" | "cross" | "crosshair" | "crown" | "cuboid" | "cup-soda" | "currency" | "cylinder" | "dam" | "database" | "database-backup" | "database-search" | "database-zap" | "decimals-arrow-left" | "decimals-arrow-right" | "delete" | "delete-left" | "desktop" | "dessert" | "diameter" | "diamond" | "diamond-minus" | "diamond-percent" | "diamond-plus" | "dice-1" | "dice-2" | "dice-3" | "dice-4" | "dice-5" | "dice-6" | "dices" | "diff" | "directions" | "directions-alt" | "disc" | "disc-2" | "disc-3" | "disc-album" | "discord" | "divide" | "dna" | "dna-off" | "dock" | "dog" | "dollar" | "dollar-sign" | "donut" | "door-closed" | "door-closed-locked" | "door-open" | "dot" | "download" | "drafting-compass" | "drama" | "drill" | "drone" | "droplet" | "droplet-off" | "droplets" | "drum" | "drumstick" | "dumbbell" | "ear" | "ear-off" | "earth" | "earth-lock" | "eclipse" | "egg" | "egg-fried" | "egg-off" | "eject" | "ellipse" | "ellipsis" | "ellipsis-h" | "ellipsis-v" | "ellipsis-vertical" | "envelope" | "equal" | "equal-approximately" | "equal-not" | "equals" | "eraser" | "ethereum" | "ethernet-port" | "euro" | "ev-charger" | "exclamation-circle" | "exclamation-triangle" | "expand" | "external-link" | "eye" | "eye-closed" | "eye-off" | "eye-slash" | "face-smile" | "facebook" | "factory" | "fan" | "fast-backward" | "fast-forward" | "feather" | "fence" | "ferris-wheel" | "file" | "file-archive" | "file-arrow-up" | "file-axis-3d" | "file-badge" | "file-box" | "file-braces" | "file-braces-corner" | "file-chart-column" | "file-chart-column-increasing" | "file-chart-line" | "file-chart-pie" | "file-check" | "file-check-corner" | "file-clock" | "file-code" | "file-code-corner" | "file-cog" | "file-diff" | "file-digit" | "file-down" | "file-edit" | "file-excel" | "file-exclamation-point" | "file-export" | "file-headphone" | "file-heart" | "file-image" | "file-import" | "file-input" | "file-key" | "file-lock" | "file-minus" | "file-minus-corner" | "file-music" | "file-output" | "file-pdf" | "file-pen" | "file-pen-line" | "file-play" | "file-plus" | "file-plus-corner" | "file-question-mark" | "file-scan" | "file-search" | "file-search-corner" | "file-signal" | "file-sliders" | "file-spreadsheet" | "file-stack" | "file-symlink" | "file-terminal" | "file-text" | "file-type" | "file-type-corner" | "file-up" | "file-user" | "file-video-camera" | "file-volume" | "file-word" | "file-x" | "file-x-corner" | "files" | "film" | "filter" | "filter-fill" | "filter-slash" | "fingerprint-pattern" | "fire-extinguisher" | "fish" | "fish-off" | "fish-symbol" | "fishing-hook" | "fishing-rod" | "flag" | "flag-fill" | "flag-off" | "flag-triangle-left" | "flag-triangle-right" | "flame" | "flame-kindling" | "flashlight" | "flashlight-off" | "flask-conical" | "flask-conical-off" | "flask-round" | "flip-horizontal-2" | "flip-vertical-2" | "flower" | "flower-2" | "focus" | "fold-horizontal" | "fold-vertical" | "folder" | "folder-archive" | "folder-bookmark" | "folder-check" | "folder-clock" | "folder-closed" | "folder-code" | "folder-cog" | "folder-dot" | "folder-down" | "folder-git" | "folder-git-2" | "folder-heart" | "folder-input" | "folder-kanban" | "folder-key" | "folder-lock" | "folder-minus" | "folder-open" | "folder-open-dot" | "folder-output" | "folder-pen" | "folder-plus" | "folder-root" | "folder-search" | "folder-search-2" | "folder-symlink" | "folder-sync" | "folder-tree" | "folder-up" | "folder-x" | "folders" | "footprints" | "forklift" | "form" | "forward" | "frame" | "frown" | "fuel" | "fullscreen" | "funnel" | "funnel-plus" | "funnel-x" | "gallery-horizontal" | "gallery-horizontal-end" | "gallery-thumbnails" | "gallery-vertical" | "gallery-vertical-end" | "gamepad" | "gamepad-2" | "gamepad-directional" | "gauge" | "gavel" | "gem" | "georgian-lari" | "ghost" | "gift" | "git-branch" | "git-branch-minus" | "git-branch-plus" | "git-commit-horizontal" | "git-commit-vertical" | "git-compare" | "git-compare-arrows" | "git-fork" | "git-graph" | "git-merge" | "git-merge-conflict" | "git-pull-request" | "git-pull-request-arrow" | "git-pull-request-closed" | "git-pull-request-create" | "git-pull-request-create-arrow" | "git-pull-request-draft" | "github" | "glass-water" | "glasses" | "globe" | "globe-check" | "globe-lock" | "globe-off" | "globe-x" | "goal" | "google" | "gpu" | "graduation-cap" | "grape" | "grid-2x2" | "grid-2x2-check" | "grid-2x2-plus" | "grid-2x2-x" | "grid-3x2" | "grid-3x3" | "grip" | "grip-horizontal" | "grip-vertical" | "group" | "guitar" | "ham" | "hamburger" | "hammer" | "hand" | "hand-coins" | "hand-fist" | "hand-grab" | "hand-heart" | "hand-helping" | "hand-metal" | "hand-platter" | "handbag" | "handshake" | "hard-drive" | "hard-drive-download" | "hard-drive-upload" | "hard-hat" | "hash" | "hashtag" | "hat-glasses" | "haze" | "hd" | "hdmi-port" | "heading" | "heading-1" | "heading-2" | "heading-3" | "heading-4" | "heading-5" | "heading-6" | "headphone-off" | "headphones" | "headset" | "heart" | "heart-crack" | "heart-fill" | "heart-handshake" | "heart-minus" | "heart-off" | "heart-plus" | "heart-pulse" | "heart-x" | "heater" | "helicopter" | "hexagon" | "highlighter" | "history" | "home" | "hop" | "hop-off" | "hospital" | "hotel" | "hourglass" | "house" | "house-heart" | "house-plug" | "house-plus" | "house-wifi" | "ice-cream-bowl" | "ice-cream-cone" | "id-card" | "id-card-lanyard" | "image" | "image-down" | "image-minus" | "image-off" | "image-play" | "image-plus" | "image-up" | "image-upscale" | "images" | "import" | "inbox" | "indian-rupee" | "infinity" | "info" | "info-circle" | "inspection-panel" | "instagram" | "italic" | "iteration-ccw" | "iteration-cw" | "japanese-yen" | "joystick" | "kanban" | "kayak" | "key" | "key-round" | "key-square" | "keyboard" | "keyboard-music" | "keyboard-off" | "lamp" | "lamp-ceiling" | "lamp-desk" | "lamp-floor" | "lamp-wall-down" | "lamp-wall-up" | "land-plot" | "landmark" | "language" | "languages" | "laptop" | "laptop-minimal" | "laptop-minimal-check" | "lasso" | "lasso-select" | "laugh" | "layers" | "layers-2" | "layers-minus" | "layers-plus" | "layout-dashboard" | "layout-grid" | "layout-list" | "layout-panel-left" | "layout-panel-top" | "layout-template" | "leaf" | "leafy-green" | "lectern" | "lens-concave" | "lens-convex" | "library" | "library-big" | "life-buoy" | "ligature" | "lightbulb" | "lightbulb-off" | "line-dot-right-horizontal" | "line-squiggle" | "line-style" | "link" | "link-2" | "link-2-off" | "linkedin" | "list" | "list-check" | "list-checks" | "list-chevrons-down-up" | "list-chevrons-up-down" | "list-collapse" | "list-end" | "list-filter" | "list-filter-plus" | "list-indent-decrease" | "list-indent-increase" | "list-minus" | "list-music" | "list-ordered" | "list-plus" | "list-restart" | "list-start" | "list-todo" | "list-tree" | "list-video" | "list-x" | "loader" | "loader-circle" | "loader-pinwheel" | "locate" | "locate-fixed" | "locate-off" | "lock" | "lock-keyhole" | "lock-keyhole-open" | "lock-open" | "log-in" | "log-out" | "logs" | "lollipop" | "luggage" | "magnet" | "mail" | "mail-check" | "mail-minus" | "mail-open" | "mail-plus" | "mail-question-mark" | "mail-search" | "mail-warning" | "mail-x" | "mailbox" | "mails" | "map" | "map-marker" | "map-minus" | "map-pin" | "map-pin-check" | "map-pin-check-inside" | "map-pin-house" | "map-pin-minus" | "map-pin-minus-inside" | "map-pin-off" | "map-pin-pen" | "map-pin-plus" | "map-pin-plus-inside" | "map-pin-search" | "map-pin-x" | "map-pin-x-inside" | "map-pinned" | "map-plus" | "mars" | "mars-stroke" | "martini" | "maximize" | "maximize-2" | "medal" | "megaphone" | "megaphone-off" | "meh" | "memory-stick" | "menu" | "merge" | "message-circle" | "message-circle-check" | "message-circle-code" | "message-circle-dashed" | "message-circle-heart" | "message-circle-more" | "message-circle-off" | "message-circle-plus" | "message-circle-question-mark" | "message-circle-reply" | "message-circle-warning" | "message-circle-x" | "message-square" | "message-square-check" | "message-square-code" | "message-square-dashed" | "message-square-diff" | "message-square-dot" | "message-square-heart" | "message-square-lock" | "message-square-more" | "message-square-off" | "message-square-plus" | "message-square-quote" | "message-square-reply" | "message-square-share" | "message-square-text" | "message-square-warning" | "message-square-x" | "messages-square" | "metronome" | "mic" | "mic-off" | "mic-vocal" | "microchip" | "microchip-ai" | "microphone" | "microscope" | "microsoft" | "microwave" | "milestone" | "milk" | "milk-off" | "minimize" | "minimize-2" | "minus" | "minus-circle" | "mirror-rectangular" | "mirror-round" | "mobile" | "money-bill" | "monitor" | "monitor-check" | "monitor-cloud" | "monitor-cog" | "monitor-dot" | "monitor-down" | "monitor-off" | "monitor-pause" | "monitor-play" | "monitor-smartphone" | "monitor-speaker" | "monitor-stop" | "monitor-up" | "monitor-x" | "moon" | "moon-star" | "motorbike" | "mountain" | "mountain-snow" | "mouse" | "mouse-left" | "mouse-off" | "mouse-pointer" | "mouse-pointer-2" | "mouse-pointer-2-off" | "mouse-pointer-ban" | "mouse-pointer-click" | "mouse-right" | "move" | "move-3d" | "move-diagonal" | "move-diagonal-2" | "move-down" | "move-down-left" | "move-down-right" | "move-horizontal" | "move-left" | "move-right" | "move-up" | "move-up-left" | "move-up-right" | "move-vertical" | "music" | "music-2" | "music-3" | "music-4" | "navigation" | "navigation-2" | "navigation-2-off" | "navigation-off" | "network" | "newspaper" | "nfc" | "non-binary" | "notebook" | "notebook-pen" | "notebook-tabs" | "notebook-text" | "notepad-text" | "notepad-text-dashed" | "nut" | "nut-off" | "objects-column" | "octagon" | "octagon-alert" | "octagon-minus" | "octagon-pause" | "octagon-x" | "omega" | "option" | "orbit" | "origami" | "package" | "package-2" | "package-check" | "package-minus" | "package-open" | "package-plus" | "package-search" | "package-x" | "paint-bucket" | "paint-roller" | "paintbrush" | "paintbrush-vertical" | "palette" | "panda" | "panel-bottom" | "panel-bottom-close" | "panel-bottom-dashed" | "panel-bottom-open" | "panel-left" | "panel-left-close" | "panel-left-dashed" | "panel-left-open" | "panel-left-right-dashed" | "panel-right" | "panel-right-close" | "panel-right-dashed" | "panel-right-open" | "panel-top" | "panel-top-bottom-dashed" | "panel-top-close" | "panel-top-dashed" | "panel-top-open" | "panels-left-bottom" | "panels-right-bottom" | "panels-top-left" | "paperclip" | "parasol" | "parentheses" | "parking-meter" | "party-popper" | "pause" | "pause-circle" | "paw-print" | "paypal" | "pc-case" | "pen" | "pen-line" | "pen-off" | "pen-to-square" | "pen-tool" | "pencil" | "pencil-line" | "pencil-off" | "pencil-ruler" | "pentagon" | "percent" | "percentage" | "person-standing" | "philippine-peso" | "phone" | "phone-call" | "phone-forwarded" | "phone-incoming" | "phone-missed" | "phone-off" | "phone-outgoing" | "pi" | "piano" | "pickaxe" | "picture-in-picture" | "picture-in-picture-2" | "piggy-bank" | "pilcrow" | "pilcrow-left" | "pilcrow-right" | "pill" | "pill-bottle" | "pin" | "pin-off" | "pinterest" | "pipette" | "pizza" | "plane" | "plane-landing" | "plane-takeoff" | "play" | "play-circle" | "play-off" | "plug" | "plug-2" | "plug-zap" | "plus" | "plus-circle" | "pocket-knife" | "podcast" | "pointer" | "pointer-off" | "popcorn" | "popsicle" | "pound" | "pound-sterling" | "power" | "power-off" | "presentation" | "prime" | "print" | "printer" | "printer-check" | "printer-x" | "projector" | "proportions" | "puzzle" | "pyramid" | "qr-code" | "qrcode" | "question" | "question-circle" | "quote" | "rabbit" | "radar" | "radiation" | "radical" | "radio" | "radio-off" | "radio-receiver" | "radio-tower" | "radius" | "rainbow" | "rat" | "ratio" | "receipt" | "receipt-cent" | "receipt-euro" | "receipt-indian-rupee" | "receipt-japanese-yen" | "receipt-pound-sterling" | "receipt-russian-ruble" | "receipt-swiss-franc" | "receipt-text" | "receipt-turkish-lira" | "rectangle-circle" | "rectangle-ellipsis" | "rectangle-goggles" | "rectangle-horizontal" | "rectangle-vertical" | "recycle" | "reddit" | "redo" | "redo-2" | "redo-dot" | "refresh" | "refresh-ccw" | "refresh-ccw-dot" | "refresh-cw" | "refresh-cw-off" | "refrigerator" | "regex" | "remove-formatting" | "repeat" | "repeat-1" | "repeat-2" | "repeat-off" | "replace" | "replace-all" | "replay" | "reply" | "reply-all" | "rewind" | "ribbon" | "road" | "rocket" | "rocking-chair" | "roller-coaster" | "rose" | "rotate-3d" | "rotate-ccw" | "rotate-ccw-key" | "rotate-ccw-square" | "rotate-cw" | "rotate-cw-square" | "route" | "route-off" | "router" | "rows-2" | "rows-3" | "rows-4" | "rss" | "ruler" | "ruler-dimension-line" | "russian-ruble" | "sailboat" | "salad" | "sandwich" | "satellite" | "satellite-dish" | "saudi-riyal" | "save" | "save-all" | "save-off" | "scale" | "scale-3d" | "scaling" | "scan" | "scan-barcode" | "scan-eye" | "scan-face" | "scan-heart" | "scan-line" | "scan-qr-code" | "scan-search" | "scan-text" | "school" | "scissors" | "scissors-line-dashed" | "scooter" | "screen-share" | "screen-share-off" | "scroll" | "scroll-text" | "search" | "search-alert" | "search-check" | "search-code" | "search-minus" | "search-plus" | "search-slash" | "search-x" | "section" | "send" | "send-horizontal" | "send-to-back" | "separator-horizontal" | "separator-vertical" | "server" | "server-cog" | "server-crash" | "server-off" | "settings" | "settings-2" | "shapes" | "share" | "share-2" | "share-alt" | "sheet" | "shell" | "shelving-unit" | "shield" | "shield-alert" | "shield-ban" | "shield-check" | "shield-cog" | "shield-cog-corner" | "shield-ellipsis" | "shield-half" | "shield-minus" | "shield-off" | "shield-plus" | "shield-question-mark" | "shield-user" | "shield-x" | "ship" | "ship-wheel" | "shirt" | "shop" | "shopping-bag" | "shopping-basket" | "shopping-cart" | "shovel" | "shower-head" | "shredder" | "shrimp" | "shrink" | "shrub" | "shuffle" | "sigma" | "sign-in" | "sign-out" | "signal" | "signal-high" | "signal-low" | "signal-medium" | "signal-zero" | "signature" | "signpost" | "signpost-big" | "siren" | "sitemap" | "skip-back" | "skip-forward" | "skull" | "slack" | "slash" | "slice" | "sliders-h" | "sliders-horizontal" | "sliders-v" | "sliders-vertical" | "smartphone" | "smartphone-charging" | "smartphone-nfc" | "smile" | "smile-plus" | "snail" | "snowflake" | "soap-dispenser-droplet" | "sofa" | "solar-panel" | "sort" | "sort-alpha-down" | "sort-alpha-down-alt" | "sort-alpha-up" | "sort-alpha-up-alt" | "sort-alt" | "sort-alt-slash" | "sort-amount-down" | "sort-amount-down-alt" | "sort-amount-up" | "sort-amount-up-alt" | "sort-down" | "sort-down-fill" | "sort-numeric-down" | "sort-numeric-down-alt" | "sort-numeric-up" | "sort-numeric-up-alt" | "sort-up" | "sort-up-fill" | "soup" | "space" | "spade" | "sparkle" | "sparkles" | "speaker" | "speech" | "spell-check" | "spell-check-2" | "spinner" | "spinner-dotted" | "spline" | "spline-pointer" | "split" | "spool" | "sport-shoe" | "spotlight" | "spray-can" | "sprout" | "square" | "square-activity" | "square-arrow-down" | "square-arrow-down-left" | "square-arrow-down-right" | "square-arrow-left" | "square-arrow-out-down-left" | "square-arrow-out-down-right" | "square-arrow-out-up-left" | "square-arrow-out-up-right" | "square-arrow-right" | "square-arrow-right-enter" | "square-arrow-right-exit" | "square-arrow-up" | "square-arrow-up-left" | "square-arrow-up-right" | "square-asterisk" | "square-bottom-dashed-scissors" | "square-centerline-dashed-horizontal" | "square-centerline-dashed-vertical" | "square-chart-gantt" | "square-check" | "square-check-big" | "square-chevron-down" | "square-chevron-left" | "square-chevron-right" | "square-chevron-up" | "square-code" | "square-dashed" | "square-dashed-bottom" | "square-dashed-bottom-code" | "square-dashed-kanban" | "square-dashed-mouse-pointer" | "square-dashed-text" | "square-dashed-top-solid" | "square-divide" | "square-dot" | "square-equal" | "square-function" | "square-kanban" | "square-library" | "square-m" | "square-menu" | "square-minus" | "square-mouse-pointer" | "square-parking" | "square-parking-off" | "square-pause" | "square-pen" | "square-percent" | "square-pi" | "square-pilcrow" | "square-play" | "square-plus" | "square-power" | "square-radical" | "square-round-corner" | "square-scissors" | "square-sigma" | "square-slash" | "square-split-horizontal" | "square-split-vertical" | "square-square" | "square-stack" | "square-star" | "square-stop" | "square-terminal" | "square-user" | "square-user-round" | "square-x" | "squares-exclude" | "squares-intersect" | "squares-subtract" | "squares-unite" | "squircle" | "squircle-dashed" | "squirrel" | "stamp" | "star" | "star-fill" | "star-half" | "star-half-fill" | "star-off" | "step-back" | "step-backward" | "step-backward-alt" | "step-forward" | "step-forward-alt" | "stethoscope" | "sticker" | "sticky-note" | "sticky-note-check" | "sticky-note-minus" | "sticky-note-off" | "sticky-note-plus" | "sticky-note-x" | "sticky-notes" | "stone" | "stop" | "stop-circle" | "stopwatch" | "store" | "stretch-horizontal" | "stretch-vertical" | "strikethrough" | "subscript" | "sun" | "sun-dim" | "sun-medium" | "sun-moon" | "sun-snow" | "sunrise" | "sunset" | "superscript" | "swatch-book" | "swiss-franc" | "switch-camera" | "sword" | "swords" | "sync" | "syringe" | "table" | "table-2" | "table-cells-merge" | "table-cells-split" | "table-columns-split" | "table-of-contents" | "table-properties" | "table-rows-split" | "tablet" | "tablet-smartphone" | "tablets" | "tag" | "tags" | "tally-1" | "tally-2" | "tally-3" | "tally-4" | "tally-5" | "tangent" | "target" | "telegram" | "telescope" | "tent" | "tent-tree" | "terminal" | "test-tube" | "test-tube-diagonal" | "test-tubes" | "text-align-center" | "text-align-end" | "text-align-justify" | "text-align-start" | "text-cursor" | "text-cursor-input" | "text-initial" | "text-quote" | "text-search" | "text-wrap" | "th-large" | "theater" | "thermometer" | "thermometer-snowflake" | "thermometer-sun" | "thumbs-down" | "thumbs-down-fill" | "thumbs-up" | "thumbs-up-fill" | "thumbtack" | "ticket" | "ticket-check" | "ticket-minus" | "ticket-percent" | "ticket-plus" | "ticket-slash" | "ticket-x" | "tickets" | "tickets-plane" | "tiktok" | "timeline" | "timer" | "timer-off" | "timer-reset" | "times" | "times-circle" | "toggle-left" | "toggle-right" | "toilet" | "tool-case" | "toolbox" | "tornado" | "torus" | "touchpad" | "touchpad-off" | "towel-rack" | "tower-control" | "toy-brick" | "tractor" | "traffic-cone" | "train-front" | "train-front-tunnel" | "train-track" | "tram-front" | "transgender" | "trash" | "trash-2" | "tree-deciduous" | "tree-palm" | "tree-pine" | "trees" | "trending-down" | "trending-up" | "trending-up-down" | "triangle" | "triangle-alert" | "triangle-dashed" | "triangle-right" | "trophy" | "truck" | "truck-electric" | "turkish-lira" | "turntable" | "turtle" | "tv" | "tv-minimal" | "tv-minimal-play" | "twitch" | "twitter" | "type" | "type-outline" | "umbrella" | "umbrella-off" | "underline" | "undo" | "undo-2" | "undo-dot" | "unfold-horizontal" | "unfold-vertical" | "ungroup" | "university" | "unlink" | "unlink-2" | "unlock" | "unplug" | "upload" | "usb" | "user" | "user-check" | "user-cog" | "user-edit" | "user-key" | "user-lock" | "user-minus" | "user-pen" | "user-plus" | "user-round" | "user-round-check" | "user-round-cog" | "user-round-key" | "user-round-minus" | "user-round-pen" | "user-round-plus" | "user-round-search" | "user-round-x" | "user-search" | "user-star" | "user-x" | "users" | "users-round" | "utensils" | "utensils-crossed" | "utility-pole" | "van" | "variable" | "vault" | "vector-square" | "vegan" | "venetian-mask" | "venus" | "venus-and-mars" | "verified" | "vibrate" | "vibrate-off" | "video" | "video-off" | "videotape" | "view" | "vimeo" | "voicemail" | "volleyball" | "volume" | "volume-1" | "volume-2" | "volume-down" | "volume-off" | "volume-up" | "volume-x" | "vote" | "wallet" | "wallet-cards" | "wallet-minimal" | "wallpaper" | "wand" | "wand-sparkles" | "warehouse" | "washing-machine" | "watch" | "wave-pulse" | "waves-arrow-down" | "waves-arrow-up" | "waves-horizontal" | "waves-ladder" | "waves-vertical" | "waypoints" | "webcam" | "webhook" | "webhook-off" | "weight" | "weight-tilde" | "whatsapp" | "wheat" | "wheat-off" | "whole-word" | "wifi" | "wifi-cog" | "wifi-high" | "wifi-low" | "wifi-off" | "wifi-pen" | "wifi-sync" | "wifi-zero" | "wind" | "wind-arrow-down" | "window-maximize" | "window-minimize" | "wine" | "wine-off" | "workflow" | "worm" | "wrench" | "x" | "x-line-top" | "zap" | "zap-off" | "zodiac-aquarius" | "zodiac-aries" | "zodiac-cancer" | "zodiac-capricorn" | "zodiac-gemini" | "zodiac-leo" | "zodiac-libra" | "zodiac-ophiuchus" | "zodiac-pisces" | "zodiac-sagittarius" | "zodiac-scorpio" | "zodiac-taurus" | "zodiac-virgo" | "zoom-in" | "zoom-out" | `pi pi-${string}`;
3276
+ export type IconType = ReactElement;
3683
3277
 
3684
- export interface IPaletteProps {
3685
- onAdd: (type: TBuilderFieldType) => void;
3278
+ export interface IRTLDetection {
3279
+ ignoreDirection?: boolean;
3686
3280
  }
3687
- export interface IPaletteItemProps {
3688
- type: TBuilderFieldType;
3689
- icon: IconName;
3690
- label: string;
3691
- onAdd: (type: TBuilderFieldType) => void;
3281
+
3282
+ declare enum EKeyFilter {
3283
+ INT = "int",
3284
+ PositiveInteger = "pint",
3285
+ Number = "num",
3286
+ PositiveNumber = "pnum",
3287
+ Money = "money",
3288
+ Alphabetic = "alpha",
3289
+ Alphanumeric = "alphanum",
3290
+ Email = "email"
3692
3291
  }
3693
- export interface ICanvasProps {
3694
- fields: IBuilderField[];
3695
- selectedTempId: string | null;
3696
- onAddField: (type: TBuilderFieldType) => void;
3697
- onRemoveField: (tempId: string) => void;
3698
- onReorder: (newTempIdOrder: string[]) => void;
3699
- onSelectField: (tempId: string | null) => void;
3700
- onAddChildField: (parentTempId: string, type: TBuilderFieldType) => void;
3701
- onRemoveChildField: (parentTempId: string, childTempId: string) => void;
3702
- onReorderChildren: (parentTempId: string, newTempIdOrder: string[]) => void;
3703
- /** When non-null, a drag is currently in progress and originated from this source. */
3704
- activeDragSource?: 'palette' | 'canvas' | null;
3705
- /** When dragging from palette, the field type currently being dragged. */
3706
- activeDragType?: TBuilderFieldType | null;
3707
- }
3708
- export interface IFieldCardProps {
3709
- field: IBuilderField;
3710
- isSelected: boolean;
3711
- onSelect: () => void;
3712
- onRemove: () => void;
3713
- }
3714
- export interface IFieldPreviewProps {
3715
- field: IBuilderField;
3716
- dynamicFlagLoader?: (flag: TDynamicFlag, params: Record<string, string> | null) => Promise<IOptionItem[]>;
3717
- }
3718
- export interface IContainerCardProps {
3719
- field: IBuilderContainerField;
3720
- isSelected: boolean;
3721
- selectedTempId: string | null;
3722
- onSelect: () => void;
3723
- onSelectChild: (tempId: string | null) => void;
3724
- onRemove: () => void;
3725
- onAddChild: (type: TBuilderFieldType) => void;
3726
- onRemoveChild: (childTempId: string) => void;
3727
- onReorderChildren: (newTempIdOrder: string[]) => void;
3728
- activeDragSource?: 'palette' | 'canvas' | null;
3729
- activeDragType?: TBuilderFieldType | null;
3730
- }
3731
- export interface IGroupCardProps {
3732
- field: IBuilderGroupField;
3733
- isSelected: boolean;
3734
- selectedTempId: string | null;
3735
- onSelect: () => void;
3736
- onSelectChild: (tempId: string | null) => void;
3737
- onRemove: () => void;
3738
- onAddChild: (type: TBuilderFieldType) => void;
3739
- onRemoveChild: (childTempId: string) => void;
3740
- onReorderChildren: (newTempIdOrder: string[]) => void;
3741
- activeDragSource?: 'palette' | 'canvas' | null;
3742
- activeDragType?: TBuilderFieldType | null;
3743
- }
3744
- export interface IPropertiesPanelProps {
3745
- field: IBuilderField | null;
3746
- localeKeys: string[];
3747
- onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
3748
- allFields: IBuilderField[];
3749
- /** See IFormBuilderProps.nameMode. Defaults to 'manual'. */
3750
- nameMode?: 'manual' | 'auto';
3751
- }
3752
- export interface IBasicSectionProps {
3753
- field: IBuilderField;
3754
- allFields: IBuilderField[];
3755
- localeKeys: string[];
3756
- onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
3757
- /** See IFormBuilderProps.nameMode. Defaults to 'manual'. */
3758
- nameMode?: 'manual' | 'auto';
3759
- }
3760
- export interface IValidationSectionProps {
3761
- field: IBuilderField;
3762
- localeKeys: string[];
3763
- onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
3764
- }
3765
- export interface IConditionsSectionProps {
3766
- field: IBuilderField;
3767
- allFields: IBuilderField[];
3768
- localeKeys: string[];
3769
- onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
3770
- }
3771
- export interface ITranslatableInputProps {
3772
- label: string;
3773
- value: ITranslatableText | null;
3774
- localeKeys: string[];
3775
- onChange: (value: ITranslatableText) => void;
3776
- placeholder?: string;
3777
- helperText?: string;
3778
- }
3779
- export interface IOptionsEditorProps {
3780
- value: IOptionsSource;
3781
- localeKeys: string[];
3782
- /**
3783
- * For Checkbox / Radio fields, the parent's `mode`. When 'images', the editor
3784
- * shows an image upload (PNG/JPG ≤ 100 KB, base64) per option in addition to
3785
- * the standard label + value inputs. Undefined for non-Checkbox/Radio fields.
3786
- */
3787
- mode?: 'labeled' | 'images';
3788
- onChange: (value: IOptionsSource) => void;
3789
- }
3790
- export interface IConditionGroupProps {
3791
- condition: IFieldCondition;
3792
- conditionIndex: number;
3793
- fieldOptions: {
3794
- label: string;
3795
- value: string;
3796
- }[];
3797
- localeKeys: string[];
3798
- onChange: (next: IFieldCondition) => void;
3799
- onRemove: () => void;
3800
- }
3801
- export interface IConditionRowProps {
3802
- rule: IConditionRule;
3803
- fieldOptions: {
3804
- label: string;
3805
- value: string;
3806
- }[];
3807
- onChange: (next: IConditionRule) => void;
3808
- onRemove: () => void;
3809
- }
3810
- export interface IFormBuilderInternalState {
3811
- fields: IBuilderField[];
3812
- meta: IFormBuilderMeta;
3813
- selectedTempId: string | null;
3814
- isDirty: boolean;
3815
- }
3816
- /**
3817
- * A render-callback element type used inside KitsConcerto Form to mount
3818
- * non-Form children such as TranslatableInput and OptionsEditor.
3819
- * Wraps the actual render in a Container-type IFormElement.
3820
- */
3821
- export interface IPanelCustomSlot {
3822
- id: string;
3823
- render: () => ReactNode;
3824
- colSpan?: number;
3825
- }
3826
-
3827
- export type IRadioCheckboxListItem<T = any> = {
3828
- id?: string;
3829
- label?: string;
3830
- component?: ((args: {
3831
- selected?: boolean;
3832
- value?: T;
3833
- isInvalid: boolean;
3834
- }) => ReactElement) | ReactElement;
3835
- /**
3836
- * Identity value (kept in original type).
3837
- * Internally stringified only when a provider requires it (e.g., Gluestack).
3838
- */
3839
- value: T;
3840
- withBulbs?: boolean;
3841
- size?: "xs" | "sm" | "md" | "lg" | "xl";
3842
- labelPosition?: "left" | "right" | "top" | "bottom" | "default";
3843
- /**
3844
- * Back-compat shorthand for width. Equivalent to `style: { w }`.
3845
- * If `style.width` is also set, `style.width` wins.
3846
- */
3847
- w?: IStyleClasses["w"];
3848
- /**
3849
- * Full per-item style. String values are resolved through the
3850
- * theme token resolver (e.g. `bg: 'primary'`, `borderColor: 'gray.300'`,
3851
- * `p: 4`). Merged on top of `theme.components.{Radio|Checkbox}.item.style`.
3852
- */
3853
- style?: IStyleClasses;
3854
- /** Style merged on top of `style` when this item is selected. */
3855
- styleSelected?: IStyleClasses;
3856
- /** Style merged on top of `style` when this item is disabled. */
3857
- styleDisabled?: IStyleClasses;
3858
- /** Style merged on top of `style` when this item is invalid. */
3859
- styleInvalid?: IStyleClasses;
3860
- /**
3861
- * Optional per-item control (list mode).
3862
- * - checked: controlled
3863
- * - defaultChecked: uncontrolled initial
3864
- */
3865
- checked?: boolean;
3866
- defaultChecked?: boolean;
3867
- };
3868
-
3869
- export type IconType = ReactElement;
3870
-
3871
- export interface IRTLDetection {
3872
- ignoreDirection?: boolean;
3873
- }
3874
-
3875
- declare enum EKeyFilter {
3876
- INT = "int",
3877
- PositiveInteger = "pint",
3878
- Number = "num",
3879
- PositiveNumber = "pnum",
3880
- Money = "money",
3881
- Alphabetic = "alpha",
3882
- Alphanumeric = "alphanum",
3883
- Email = "email"
3884
- }
3885
- declare enum EDateFormat {
3886
- dayOfMonthNoLeadingZero = "d",// Day of the month (no leading zero)
3887
- dayOfMonthLeadingZero = "dd",// Day of the month (with leading zero)
3888
- abbreviatedMonth = "M",// Abbreviated month name (e.g., Jan)
3889
- fullMonth = "MM",// Full month name (e.g., January)
3890
- twoDigitYear = "y",// Two-digit year (e.g., 21)
3891
- fourDigitYear = "yy",// Four-digit year (e.g., 2021)
3892
- mm_dd_yy = "mm/dd/yy",// Short date format (e.g., 09/13/2023)
3893
- MM_dd_yyyy = "MM dd, yy",// Long date format (e.g., September 13, 2023)
3894
- dayOfWeek = "DD",// Full day of the week (e.g., Tuesday)
3895
- shortDayOfWeek = "D",// Full day of the week (e.g., Tuesday)
3896
- dayOfYearNoLeadingZeros = "o",// Day of the year (no leading zeros)
3897
- dayOfYearThreeDigit = "oo",// Day of the year (three digit)
3898
- "yy/MM/dd" = "yy/MM/dd",// Custom date format (e.g., 2023/September/13)
3899
- yy_M_dd = "yy/M/dd",// Custom date format (e.g., 2023/Sep/13)
3900
- dd_m_yy = "dd/m/yy",// Another custom date format (e.g., 13/9/2023)
3901
- dd_mm_yy = "dd/mm/yy",// Another custom date format (e.g., 13/09/2023)
3902
- MM_yy = "MM yy",// Year and month (e.g., September 2023)
3903
- MM_dd = "MM dd",// Month and day (e.g., September 13)
3904
- customDate = ""
3292
+ declare enum EDateFormat {
3293
+ dayOfMonthNoLeadingZero = "d",// Day of the month (no leading zero)
3294
+ dayOfMonthLeadingZero = "dd",// Day of the month (with leading zero)
3295
+ abbreviatedMonth = "M",// Abbreviated month name (e.g., Jan)
3296
+ fullMonth = "MM",// Full month name (e.g., January)
3297
+ twoDigitYear = "y",// Two-digit year (e.g., 21)
3298
+ fourDigitYear = "yy",// Four-digit year (e.g., 2021)
3299
+ mm_dd_yy = "mm/dd/yy",// Short date format (e.g., 09/13/2023)
3300
+ MM_dd_yyyy = "MM dd, yy",// Long date format (e.g., September 13, 2023)
3301
+ dayOfWeek = "DD",// Full day of the week (e.g., Tuesday)
3302
+ shortDayOfWeek = "D",// Full day of the week (e.g., Tuesday)
3303
+ dayOfYearNoLeadingZeros = "o",// Day of the year (no leading zeros)
3304
+ dayOfYearThreeDigit = "oo",// Day of the year (three digit)
3305
+ "yy/MM/dd" = "yy/MM/dd",// Custom date format (e.g., 2023/September/13)
3306
+ yy_M_dd = "yy/M/dd",// Custom date format (e.g., 2023/Sep/13)
3307
+ dd_m_yy = "dd/m/yy",// Another custom date format (e.g., 13/9/2023)
3308
+ dd_mm_yy = "dd/mm/yy",// Another custom date format (e.g., 13/09/2023)
3309
+ MM_yy = "MM yy",// Year and month (e.g., September 2023)
3310
+ MM_dd = "MM dd",// Month and day (e.g., September 13)
3311
+ customDate = ""
3905
3312
  }
3906
3313
 
3907
3314
  export interface IButtonProps<IconT> extends IStyleClasses {
@@ -5256,263 +4663,30 @@ export interface ILabelProps {
5256
4663
  style?: Record<string, any>;
5257
4664
  }
5258
4665
 
5259
- export interface IKitsContainer extends IFormSingleElement, Omit<ElementProps, "onChange" | "onBlur" | "onFocus" | "value" | "defaultValue" | "ref" | "style" | "label" | "color">, IStyleClasses {
5260
- children?: ReactNode;
5261
- containerStyle?: IStyleClasses;
5262
- additionalClassName?: string;
5263
- /** Per-element styles (IStyleClasses) passed from the parent form input component */
5264
- elementStyles?: Record<string, Record<string, any>>;
5265
- /**
5266
- * Per-element extra attributes (`className`, `data-*`, …) passed from the
5267
- * parent form input component — `useComponentDefaults().elementProps`.
5268
- *
5269
- * ⛔ WITHOUT THIS, `slots.container.props` AND `slots.inputGroup.props`
5270
- * WENT NOWHERE. KitsContainer owns both of those elements, so a class a
5271
- * consumer put on either slot had no route to the DOM: the container only
5272
- * ever received `elementStyles`. Optional, so a form input that does not
5273
- * pass it behaves exactly as before.
5274
- */
5275
- elementProps?: Record<string, Record<string, any>>;
5276
- /**
5277
- * When true, strips the input-group chrome (border, border-radius, overflow, focus ring).
5278
- * Used by Switch, Checkbox, and Radio which render their own visual controls
5279
- * and don't need the standard bordered input container.
5280
- */
5281
- bare?: boolean;
5282
- }
5283
-
5284
- export interface IEditableProps {
5285
- defaultValue?: string;
5286
- value?: string;
5287
- onChange?: (value: string) => void;
5288
- onSubmit?: (value: string) => void;
5289
- activationMode?: "click" | "dblclick";
5290
- disabled?: boolean;
5291
- type?: "input" | "textarea";
5292
- previewProps?: Record<string, any>;
5293
- inputProps?: Record<string, any>;
5294
- textareaProps?: Record<string, any>;
5295
- controls?: (helpers: {
5296
- submit(): void;
5297
- cancel(): void;
5298
- }) => ReactNode;
4666
+ export interface downloadableFileResponse {
4667
+ url?: string | null;
4668
+ file_name?: string | null;
5299
4669
  }
5300
-
5301
- export interface IKitsInputNumber extends IFormSingleElement {
5302
- value?: number | null;
5303
- locale?: string;
5304
- useGrouping?: boolean;
5305
- minFractionDigits?: number;
5306
- maxFractionDigits?: number;
5307
- mode?: "decimal" | "currency";
5308
- currency?: string;
5309
- prefix?: string;
5310
- suffix?: string;
5311
- min?: number;
5312
- max?: number;
5313
- /**
5314
- * PrimeReact-style key filter. Restricts typed characters at the keystroke
5315
- * level. When omitted, only blur-time number parsing runs.
5316
- */
5317
- keyFilter?: EKeyFilter | RegExp;
5318
- localProps?: Record<string, any>;
5319
- onChange?: (event: {
5320
- value: number | null;
5321
- }) => void;
5322
- ref?: Ref<any>;
5323
- }
5324
-
5325
- export interface IGlobalEvents {
5326
- onClick?: (event: GestureResponderEvent) => void;
5327
- onDoubleClick?: any;
5328
- onMouseDown?: (event: GestureResponderEvent) => void;
5329
- onMouseUp?: (event: GestureResponderEvent) => void;
5330
- onMouseEnter?: any;
5331
- onMouseLeave?: any;
5332
- onMouseMove?: any;
5333
- onKeyDown?: any;
5334
- onKeyUp?: any;
5335
- onKeyPress?: (event: NativeSyntheticEvent<TextInputKeyPressEventData>) => void;
5336
- onFocus?: (event: NativeSyntheticEvent<TargetedEvent>) => void;
5337
- onBlur?: (event: NativeSyntheticEvent<TargetedEvent>) => void;
5338
- onTouchStart?: (event: GestureResponderEvent) => void;
5339
- onTouchMove?: (event: GestureResponderEvent) => void;
5340
- onTouchEnd?: (event: GestureResponderEvent) => void;
5341
- onTouchCancel?: (event: GestureResponderEvent) => void;
5342
- onScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
5343
- }
5344
-
5345
- export interface IKitsInputTextBase extends Omit<IFormSingleElement, 'onFocus'>, IGlobalEvents {
5346
- value?: string;
5347
- placeholder?: string;
5348
- autoFocus?: boolean;
5349
- isChecked?: boolean;
5350
- hidden?: boolean;
5351
- onSubmitEditing?: () => void;
5352
- containerStyle?: IStyleClasses;
5353
- keyFilter?: EKeyFilter | RegExp;
5354
- /**
5355
- * Maximum number of characters allowed. On native, enforced live by the
5356
- * underlying RN TextInput. On web, forwarded to the underlying input.
5357
- */
5358
- maxLength?: number;
5359
- /**
5360
- * Minimum number of characters required. Submit-time only — RN TextInput
5361
- * has no native minLength prop, so this is enforced by the form schema.
5362
- */
5363
- minLength?: number;
5364
- /**
5365
- * Controls the keyboard type displayed on mobile devices.
5366
- * No effect on web — native-only prop.
5367
- * @platform native
5368
- */
5369
- keyboardType?: 'default' | 'numeric' | 'email-address' | 'phone-pad' | 'decimal-pad' | 'url' | 'number-pad' | 'visible-password' | 'ascii-capable' | 'numbers-and-punctuation' | 'name-phone-pad' | 'twitter' | 'web-search';
5370
- className?: string;
5371
- /** platform-specific escape hatch */
5372
- localProps?: unknown;
5373
- style?: any;
5374
- ref?: Ref<any>;
5375
- }
5376
-
5377
- export interface IKitsInputMask extends IKitsInputTextBase {
5378
- /** Same API — custom implementation */
5379
- mask?: string;
5380
- unmask?: boolean;
5381
- }
5382
-
5383
- /**
5384
- * Native-only extension
5385
- * keyFilter will be implemented manually
5386
- */
5387
- export interface IKitsInputText extends IKitsInputTextBase {
5388
- localProps?: {
5389
- keyboardType?: "default" | "numeric" | "email-address";
5390
- secureTextEntry?: boolean;
5391
- } | any;
5392
- /** Override the ID used for keyboard navigation registration (used by PhoneInput). */
5393
- keyboardNavId?: string;
5394
- }
5395
-
5396
- export interface IKitsInputTextareaBase extends Omit<IFormSingleElement, 'onFocus'>, IGlobalEvents {
5397
- value?: string;
5398
- rows?: number;
5399
- cols?: number;
5400
- autoResize?: boolean;
5401
- /**
5402
- * Maximum number of characters allowed. On native, enforced live by the
5403
- * underlying RN TextInput. On web, forwarded to the underlying textarea.
5404
- */
5405
- maxLength?: number;
5406
- /**
5407
- * Minimum number of characters required. Submit-time only — RN has no
5408
- * native minLength prop, so this is enforced by the form schema.
5409
- */
5410
- minLength?: number;
5411
- hidden?: boolean;
5412
- isChecked?: boolean;
5413
- autoFocus?: boolean;
5414
- onSubmitEditing?: () => void;
5415
- containerStyle?: IStyleClasses;
5416
- keyFilter?: EKeyFilter | RegExp;
5417
- localProps?: unknown;
5418
- ref?: Ref<any>;
5419
- }
5420
-
5421
- export interface IKitsInputTextarea extends IKitsInputTextareaBase {
5422
- localProps?: {
5423
- multiline?: boolean;
5424
- numberOfLines?: number;
5425
- };
5426
- keyboardNavId?: string;
5427
- }
5428
-
5429
- export interface IKitsInputSwitch extends Omit<IFormSingleElement, 'onChange'> {
5430
- /** Controlled value for the switch (true/false) */
5431
- value?: boolean;
5432
- /** Primereact-like onChange handler */
5433
- onChange?: (e: {
5434
- target: {
5435
- value: boolean;
5436
- };
5437
- value?: boolean;
5438
- }) => void;
5439
- /** Pre-checked state for uncontrolled usage */
5440
- checked?: boolean;
5441
- /** Render as 'switch' (default) or 'checkbox' with inline label */
5442
- displayAs?: 'switch' | 'checkbox';
5443
- /** Layout direction: 'column' (label above, default) or 'row' (label + switch inline, space-between) */
5444
- direction?: 'row' | 'column';
5445
- /** For passing any extra props to underlying libs */
5446
- localProps?: any;
5447
- /** Ref forwarding */
5448
- ref?: Ref<any>;
5449
- }
5450
-
5451
- export interface IKitsInputPassword extends Omit<IFormSingleElement, 'onChange'> {
5452
- value?: string;
5453
- defaultValue?: string;
5454
- onChange?: (e: {
5455
- target: {
5456
- value: string;
5457
- };
5458
- value?: string;
5459
- }) => void;
5460
- promptLabel?: string;
5461
- weakLabel?: string;
5462
- mediumLabel?: string;
5463
- strongLabel?: string;
5464
- header?: ReactElement;
5465
- footer?: ReactElement;
5466
- feedback?: boolean;
5467
- toggleEye?: boolean;
5468
- showStrengthProgress?: boolean;
5469
- localProps?: any;
5470
- schema?: Yup.Schema | Yup.AnySchema;
5471
- ref?: Ref<any>;
5472
- /** Custom icon shown when password is hidden (native only; web uses PrimeReact's built-in icon) */
5473
- eyeIcon?: ReactNode;
5474
- /** Custom icon shown when password is visible (native only; web uses PrimeReact's built-in icon) */
5475
- eyeSlashIcon?: ReactNode;
5476
- }
5477
-
5478
- export interface IKitsInputCalendar<T = any> extends IFormSingleElement {
5479
- value?: Date | Date[] | null;
5480
- defaultValue?: Date | Date[] | null;
5481
- onChange?: (val: Date | Date[] | null) => void;
5482
- placeholder?: string;
5483
- localProps?: Omit<T, 'value' | 'onChange'> | {
5484
- dateFormat?: string;
5485
- placeholder?: string;
5486
- selectionMode?: "range" | "single";
5487
- view?: "date";
5488
- numberOfMonths?: number;
5489
- };
5490
- }
5491
-
5492
- export interface downloadableFileResponse {
5493
- url?: string | null;
5494
- file_name?: string | null;
5495
- }
5496
- export type FetchSuccess<T = any, Y = {}, X = {}> = {
5497
- success: true;
5498
- data: T;
5499
- message?: string;
5500
- meta?: Y;
5501
- } & X;
5502
- export type FetchError = {
5503
- pageCode: number;
5504
- success: false;
5505
- message: string;
5506
- };
5507
- export type ServerResponse<T = any, Y = {}, X = {}> = FetchSuccess<T, Y, X> | FetchError;
5508
- export type FetchTablePaginationData = {
5509
- requested_page_size: number;
5510
- actual_page_size: number;
5511
- page_index: number;
5512
- page_count: number;
5513
- total: number;
5514
- };
5515
- export type FetchTableDataRes<T> = T[];
4670
+ export type FetchSuccess<T = any, Y = {}, X = {}> = {
4671
+ success: true;
4672
+ data: T;
4673
+ message?: string;
4674
+ meta?: Y;
4675
+ } & X;
4676
+ export type FetchError = {
4677
+ pageCode: number;
4678
+ success: false;
4679
+ message: string;
4680
+ };
4681
+ export type ServerResponse<T = any, Y = {}, X = {}> = FetchSuccess<T, Y, X> | FetchError;
4682
+ export type FetchTablePaginationData = {
4683
+ requested_page_size: number;
4684
+ actual_page_size: number;
4685
+ page_index: number;
4686
+ page_count: number;
4687
+ total: number;
4688
+ };
4689
+ export type FetchTableDataRes<T> = T[];
5516
4690
 
5517
4691
  declare type Booleanish = boolean | 'true' | 'false';
5518
4692
  declare type Numberish = number | string;
@@ -5805,8 +4979,54 @@ export interface ISelectCore<TStyle = any, TLocalProps = any> extends IFormSingl
5805
4979
  export interface ICascadeSelectCore<S, P> extends ISelectCore<S, P> {
5806
4980
  withArrow?: boolean;
5807
4981
  }
4982
+ /**
4983
+ * How an option draws inside the panel — R51.
4984
+ *
4985
+ * ⛔ A NAMED KIND, NOT A RENDER PROP, AND THAT IS THE WHOLE POINT. A
4986
+ * FormBuilder field is declarative CONFIG: it is stored, shipped and rebuilt
4987
+ * from JSON, so a function can never come from a builder. An enumerable kind
4988
+ * can. This mirrors `TCheckboxRadioMode` ('labeled' | 'images'), which exists
4989
+ * for exactly the same reason.
4990
+ *
4991
+ * text the option's label, as today
4992
+ * icon an icon, from `option.icon` or the option's own value
4993
+ * image `option.image` — the field Checkbox/Radio image mode already uses
4994
+ * swatch a colour chip, from `option.colour` or the option's own value
4995
+ */
4996
+ export type TSelectItemKind = 'text' | 'icon' | 'image' | 'swatch';
5808
4997
  export interface IDropdownCore<S, P> extends ISelectCore<S, P> {
5809
4998
  withArrow?: boolean;
4999
+ /**
5000
+ * How the options lay out inside the panel. @default "list"
5001
+ *
5002
+ * ⚠️ `grid` CHANGES KEYBOARD NAVIGATION, not just the look: Up and Down
5003
+ * must move by a ROW, not by one option, or the arrow keys stop matching
5004
+ * what the eye sees. Both platforms handle that; see `panelColumns`.
5005
+ */
5006
+ panelLayout?: 'list' | 'grid';
5007
+ /**
5008
+ * Columns when `panelLayout` is "grid". Clamped to 2–10.
5009
+ * @default 4
5010
+ *
5011
+ * ⚠️ It is also the keyboard's row stride, so it must be the number of
5012
+ * columns ACTUALLY rendered — never a hint.
5013
+ */
5014
+ panelColumns?: number;
5015
+ /** Panel width in px. Omitted, the panel matches the trigger. */
5016
+ panelWidth?: number;
5017
+ /** What each option draws. @default "text" */
5018
+ itemKind?: TSelectItemKind;
5019
+ /**
5020
+ * Full control of one option's content. Wins over `itemKind`.
5021
+ *
5022
+ * ⛔ CODE ONLY, AND DELIBERATELY ABSENT FROM THE BUILDER. A function
5023
+ * cannot be serialised into a form definition, so the FormBuilder never
5024
+ * offers this — it offers `itemKind`. Anything the four kinds cannot
5025
+ * express is reachable here from a hand-written form.
5026
+ */
5027
+ renderItem?: (option: any, state: {
5028
+ selected: boolean;
5029
+ }) => any;
5810
5030
  }
5811
5031
  export interface IMultiSelectCore<S, P> extends ISelectCore<S, P> {
5812
5032
  withArrow?: boolean;
@@ -5857,6 +5077,869 @@ export interface ISelectType {
5857
5077
  shape?: "cascade" | "dropdown" | "multiselect" | "autocomplete" | "listBox" | "treeSelect";
5858
5078
  }
5859
5079
 
5080
+ export interface ITranslatableText {
5081
+ raw: string | null;
5082
+ i18nKey: string | null;
5083
+ }
5084
+ export type TKeyFilter = 'int' | 'pint' | 'num' | 'pnum' | 'money' | 'alpha' | 'alphanum' | 'email';
5085
+ export type TBuilderFieldType = 'Text' | 'Textarea' | 'Number' | 'Phone' | 'Date' | 'File' | 'Select' | 'Multiselect' | 'Checkbox' | 'Radios' | 'Tags' | 'Switch' | 'Address' | 'RadiusPicker' | 'Section' | 'Container' | 'Group';
5086
+ export type TLocationProvider = 'google' | 'experian';
5087
+ /**
5088
+ * Country code format passed to the location picker.
5089
+ * - 'iso2' = ISO 3166-1 alpha-2 (e.g. "AU")
5090
+ * - 'iso3' = ISO 3166-1 alpha-3 (e.g. "AUS")
5091
+ * The picker accepts either; KitsInputLocation slices to ISO2 for Google.
5092
+ */
5093
+ export type TIsoFormat = 'iso2' | 'iso3';
5094
+ export type TDynamicFlag = 'countries' | 'states' | 'currencies' | 'languages' | 'timezones' | 'careers' | 'industries';
5095
+ export type TAcceptedFileType = 'png' | 'jpg' | 'gif' | 'images' | 'pdf' | 'doc' | 'docx' | 'txt' | 'xls' | 'xlsx' | 'csv' | 'ppt' | 'pptx' | 'zip' | 'json' | 'audio' | 'video' | 'allFiles';
5096
+ export interface IOptionItem {
5097
+ value: string;
5098
+ label: ITranslatableText;
5099
+ /**
5100
+ * Optional base64 data URL for image-mode Checkbox/Radio options.
5101
+ * Format: `data:image/png;base64,...` or `data:image/jpeg;base64,...`.
5102
+ * Constraint enforced at builder time: PNG / JPG only, ≤ 100 KB.
5103
+ */
5104
+ image?: string | null;
5105
+ /**
5106
+ * R51 — the icon NAME for a Select with `itemKind: 'icon'`. Optional: when
5107
+ * absent the option's own `value` is used, because a field that stores an
5108
+ * icon name as its value (the Help topic picker) should not have to repeat
5109
+ * it.
5110
+ */
5111
+ icon?: string | null;
5112
+ /**
5113
+ * R51 — the colour for a Select with `itemKind: 'swatch'`. Same fallback
5114
+ * to `value`, for a list whose values ARE colours.
5115
+ */
5116
+ colour?: string | null;
5117
+ }
5118
+ export type IOptionsSource = {
5119
+ source: 'static';
5120
+ items: IOptionItem[];
5121
+ } | {
5122
+ source: 'dynamic';
5123
+ flag: TDynamicFlag;
5124
+ flagParams: Record<string, string> | null;
5125
+ };
5126
+ export type TConditionOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'is_empty' | 'is_not_empty' | 'greater_than' | 'less_than' | 'in' | 'not_in';
5127
+ export type TConditionAction = 'show' | 'hide' | 'enable' | 'disable';
5128
+ export type TConditionMatch = 'ALL' | 'ANY';
5129
+ export interface IConditionRule {
5130
+ targetField: string;
5131
+ operator: TConditionOperator;
5132
+ value: string | null;
5133
+ }
5134
+ export interface IFieldCondition {
5135
+ action: TConditionAction;
5136
+ match: TConditionMatch;
5137
+ rules: IConditionRule[];
5138
+ }
5139
+ export interface IBaseValidation {
5140
+ required: boolean;
5141
+ requiredMessage: ITranslatableText | null;
5142
+ }
5143
+ export interface ITextValidation extends IBaseValidation {
5144
+ minLength: number | null;
5145
+ minLengthMessage: ITranslatableText | null;
5146
+ maxLength: number | null;
5147
+ maxLengthMessage: ITranslatableText | null;
5148
+ pattern: string | null;
5149
+ patternMessage: ITranslatableText | null;
5150
+ }
5151
+ export interface INumberValidation extends IBaseValidation {
5152
+ min: number | null;
5153
+ minMessage: ITranslatableText | null;
5154
+ max: number | null;
5155
+ maxMessage: ITranslatableText | null;
5156
+ }
5157
+ export type TDateBoundary = 'today' | 'custom' | 'none';
5158
+ export interface IDateValidation extends IBaseValidation {
5159
+ minDate: TDateBoundary;
5160
+ minDateValue: string | null;
5161
+ minDateMessage: ITranslatableText | null;
5162
+ maxDate: TDateBoundary;
5163
+ maxDateValue: string | null;
5164
+ maxDateMessage: ITranslatableText | null;
5165
+ }
5166
+ export interface IFileValidation extends IBaseValidation {
5167
+ minFileSize: number | null;
5168
+ minFileSizeMessage: ITranslatableText | null;
5169
+ maxFileSize: number | null;
5170
+ maxFileSizeMessage: ITranslatableText | null;
5171
+ }
5172
+ export interface ISelectionValidation extends IBaseValidation {
5173
+ minSelections: number | null;
5174
+ minSelectionsMessage: ITranslatableText | null;
5175
+ maxSelections: number | null;
5176
+ maxSelectionsMessage: ITranslatableText | null;
5177
+ }
5178
+ export interface IBuilderFieldBase {
5179
+ _temp_id: string;
5180
+ id: number | null;
5181
+ name: string;
5182
+ label: ITranslatableText;
5183
+ helpText: ITranslatableText | null;
5184
+ order: number;
5185
+ colSpan: number;
5186
+ conditions: IFieldCondition[];
5187
+ }
5188
+ export interface IBuilderTextField extends IBuilderFieldBase {
5189
+ type: 'Text';
5190
+ placeholder: ITranslatableText | null;
5191
+ initialValue: string | null;
5192
+ keyFilter: TKeyFilter | null;
5193
+ withMask: boolean;
5194
+ mask: string | null;
5195
+ unmask: boolean | null;
5196
+ leftIcon: string | null;
5197
+ prefix: string | null;
5198
+ rightIcon: string | null;
5199
+ suffix: string | null;
5200
+ validation: ITextValidation;
5201
+ }
5202
+ export interface IBuilderTextareaField extends IBuilderFieldBase {
5203
+ type: 'Textarea';
5204
+ placeholder: ITranslatableText | null;
5205
+ initialValue: string | null;
5206
+ keyFilter: TKeyFilter | null;
5207
+ rows: number;
5208
+ autoResize: boolean;
5209
+ /**
5210
+ * @deprecated Use `validation.maxLength` instead. Kept for back-compat with
5211
+ * older payloads; new code should ignore this and read from the Validation
5212
+ * panel's `validation.maxLength`. Removed from the designer's Basic panel
5213
+ * in the same change that introduced this notice.
5214
+ */
5215
+ maxLength: number | null;
5216
+ leftIcon: string | null;
5217
+ prefix: string | null;
5218
+ rightIcon: string | null;
5219
+ suffix: string | null;
5220
+ validation: ITextValidation;
5221
+ }
5222
+ export interface IBuilderNumberField extends IBuilderFieldBase {
5223
+ type: 'Number';
5224
+ placeholder: ITranslatableText | null;
5225
+ initialValue: number | null;
5226
+ mode: 'decimal' | 'currency';
5227
+ currency: string | null;
5228
+ useGrouping: boolean;
5229
+ minFractionDigits: number;
5230
+ maxFractionDigits: number;
5231
+ prefix: string | null;
5232
+ suffix: string | null;
5233
+ leftIcon: string | null;
5234
+ rightIcon: string | null;
5235
+ validation: INumberValidation;
5236
+ }
5237
+ export interface IBuilderPhoneField extends IBuilderFieldBase {
5238
+ type: 'Phone';
5239
+ initialValue: string | null;
5240
+ isWithCountryCode: boolean;
5241
+ defaultCountry: string;
5242
+ outputFormat: 'string' | 'object';
5243
+ includedCountries: string[];
5244
+ excludedCountries: string[];
5245
+ validation: IBaseValidation;
5246
+ }
5247
+ export interface IBuilderDateField extends IBuilderFieldBase {
5248
+ type: 'Date';
5249
+ placeholder: ITranslatableText | null;
5250
+ initialValue: string | null;
5251
+ selectionMode: 'single' | 'range';
5252
+ dateFormat: string;
5253
+ numberOfMonths: number;
5254
+ validation: IDateValidation;
5255
+ }
5256
+ export interface IBuilderFileField extends IBuilderFieldBase {
5257
+ type: 'File';
5258
+ placeholder: ITranslatableText | null;
5259
+ fileType: 'File' | 'Image';
5260
+ multiple: boolean;
5261
+ limit: number | null;
5262
+ classicUploader: boolean;
5263
+ acceptedTypes: TAcceptedFileType[];
5264
+ validation: IFileValidation;
5265
+ }
5266
+ export interface IBuilderSelectField extends IBuilderFieldBase {
5267
+ type: 'Select';
5268
+ placeholder: ITranslatableText | null;
5269
+ withFilter: boolean;
5270
+ withArrow: boolean;
5271
+ showClear: boolean;
5272
+ options: IOptionsSource;
5273
+ validation: IBaseValidation;
5274
+ /** How the options lay out in the panel. @default 'list' */
5275
+ panelLayout: 'list' | 'grid';
5276
+ /** Columns when `panelLayout` is 'grid'. Clamped 2–10 at render. @default 4 */
5277
+ panelColumns: number | null;
5278
+ /** Panel width in px; null means "match the trigger". */
5279
+ panelWidth: number | null;
5280
+ /** What each option draws. @default 'text' */
5281
+ itemKind: TSelectItemKind;
5282
+ }
5283
+ export interface IBuilderMultiselectField extends IBuilderFieldBase {
5284
+ type: 'Multiselect';
5285
+ placeholder: ITranslatableText | null;
5286
+ withFilter: boolean;
5287
+ withArrow: boolean;
5288
+ showClear: boolean;
5289
+ valueMode: 'chip' | 'comma';
5290
+ selectionLimit: number | null;
5291
+ options: IOptionsSource;
5292
+ validation: ISelectionValidation;
5293
+ }
5294
+ /**
5295
+ * Checkbox / Radio rendering mode.
5296
+ * - 'labeled' — standard text label per option (default)
5297
+ * - 'images' — image per option (PNG/JPG ≤ 100 KB, base64), label becomes alt text
5298
+ *
5299
+ * 'custom' was removed — the form-builder UI cannot author render-prop component
5300
+ * code; consumers wanting fully custom rendering should fork the field.
5301
+ */
5302
+ export type TCheckboxRadioMode = 'labeled' | 'images';
5303
+
5304
+ export type TCheckboxRadioSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5305
+ /**
5306
+ * Items per row for Checkbox/Radio layouts. Capped at 4 — beyond that the
5307
+ * options become too narrow to be readable. Width per item accounts for the
5308
+ * inter-item gap (see `WIDTH_BY_ITEMS_PER_ROW` in FieldPreview).
5309
+ */
5310
+ export type TItemsPerRow = 1 | 2 | 3 | 4;
5311
+ export interface IBuilderCheckboxField extends IBuilderFieldBase {
5312
+ type: 'Checkbox';
5313
+ mode: TCheckboxRadioMode;
5314
+ vertical: boolean;
5315
+ size: TCheckboxRadioSize;
5316
+ withBulbs: boolean;
5317
+ /** Items per row — controls each option's width via 100% / itemsPerRow. */
5318
+ itemsPerRow: TItemsPerRow;
5319
+ selectionLimit: number | null;
5320
+ options: IOptionsSource;
5321
+ validation: ISelectionValidation;
5322
+ }
5323
+ export interface IBuilderRadiosField extends IBuilderFieldBase {
5324
+ type: 'Radios';
5325
+ mode: TCheckboxRadioMode;
5326
+ vertical: boolean;
5327
+ size: TCheckboxRadioSize;
5328
+ withBulbs: boolean;
5329
+ /** Items per row — controls each option's width via 100% / itemsPerRow. */
5330
+ itemsPerRow: TItemsPerRow;
5331
+ options: IOptionsSource;
5332
+ validation: IBaseValidation;
5333
+ }
5334
+ export interface IBuilderTagsField extends IBuilderFieldBase {
5335
+ type: 'Tags';
5336
+ placeholder: ITranslatableText | null;
5337
+ forceSelection: boolean;
5338
+ isMultiple: boolean;
5339
+ selectionLimit: number | null;
5340
+ options: IOptionsSource;
5341
+ validation: ISelectionValidation;
5342
+ }
5343
+ export interface IBuilderSwitchField extends IBuilderFieldBase {
5344
+ type: 'Switch';
5345
+ initialValue: boolean;
5346
+ displayAs: 'switch' | 'checkbox';
5347
+ direction: 'row' | 'column';
5348
+ validation: IBaseValidation;
5349
+ }
5350
+ /**
5351
+ * Address field — by default a Google/Experian location picker.
5352
+ *
5353
+ * When `allowManualEntry` is true, the runtime renders an "Enter it manually"
5354
+ * toggle below the picker. Toggling it on flips a sub-state that:
5355
+ * 1. Disables the picker (built-in condition: `disabled when manual = true`)
5356
+ * 2. Reveals manual address fields (street, city, state, postcode, country)
5357
+ *
5358
+ * The form-builder stores ONLY the configuration; the actual sub-state and
5359
+ * runtime rendering is the consumer's responsibility (App / Dashboard).
5360
+ */
5361
+ export interface IBuilderAddressField extends IBuilderFieldBase {
5362
+ type: 'Address';
5363
+ provider: TLocationProvider;
5364
+ apiKey: string | null;
5365
+ countryIso: string | null;
5366
+ countryIsoFormat: TIsoFormat;
5367
+ placeholder: ITranslatableText | null;
5368
+ initialValue: string | null;
5369
+ forceSelection: boolean;
5370
+ allowManualEntry: boolean;
5371
+ manualToggleLabel: ITranslatableText | null;
5372
+ validation: IBaseValidation;
5373
+ }
5374
+ export interface IBuilderRadiusPickerField extends IBuilderFieldBase {
5375
+ type: 'RadiusPicker';
5376
+ direction: 'vertical' | 'horizontal';
5377
+ mapHeight: number;
5378
+ min: number;
5379
+ max: number;
5380
+ step: number;
5381
+ unit: 'km' | 'mi';
5382
+ showPresets: boolean;
5383
+ showNumericInput: boolean;
5384
+ showUnitToggle: boolean;
5385
+ showLatLngInput: boolean;
5386
+ showCurrentLocationButton: boolean;
5387
+ showSearchBox: boolean;
5388
+ showResetButton: boolean;
5389
+ showFloatingSlider: boolean;
5390
+ placeholder: ITranslatableText | null;
5391
+ initialValue: {
5392
+ center: {
5393
+ lat: number;
5394
+ lng: number;
5395
+ } | null;
5396
+ radius: number;
5397
+ unit: 'km' | 'mi';
5398
+ } | null;
5399
+ validation: IBaseValidation;
5400
+ }
5401
+ export interface IBuilderSectionField {
5402
+ _temp_id: string;
5403
+ id: number | null;
5404
+ type: 'Section';
5405
+ name: string;
5406
+ label: ITranslatableText;
5407
+ description: ITranslatableText | null;
5408
+ showDivider: boolean;
5409
+ order: number;
5410
+ colSpan: number;
5411
+ }
5412
+ export interface IBuilderContainerField {
5413
+ _temp_id: string;
5414
+ id: number | null;
5415
+ type: 'Container';
5416
+ name: string;
5417
+ order: number;
5418
+ colSpan: number;
5419
+ layout: 'row' | 'column' | 'grid';
5420
+ columns: number;
5421
+ gap: number;
5422
+ children: IBuilderField[];
5423
+ }
5424
+ export interface IBuilderGroupField {
5425
+ _temp_id: string;
5426
+ id: number | null;
5427
+ type: 'Group';
5428
+ name: string;
5429
+ order: number;
5430
+ colSpan: number;
5431
+ label: ITranslatableText;
5432
+ description: ITranslatableText | null;
5433
+ showDivider: boolean;
5434
+ collapsible: boolean;
5435
+ collapsedByDefault: boolean;
5436
+ children: IBuilderField[];
5437
+ conditions: IFieldCondition[];
5438
+ }
5439
+ export type IBuilderField = IBuilderTextField | IBuilderTextareaField | IBuilderNumberField | IBuilderPhoneField | IBuilderDateField | IBuilderFileField | IBuilderSelectField | IBuilderMultiselectField | IBuilderCheckboxField | IBuilderRadiosField | IBuilderTagsField | IBuilderSwitchField | IBuilderAddressField | IBuilderRadiusPickerField | IBuilderSectionField | IBuilderContainerField | IBuilderGroupField;
5440
+ export interface IFormBuilderMeta {
5441
+ title: string;
5442
+ description: string | null;
5443
+ version: string;
5444
+ is_active: boolean;
5445
+ }
5446
+ export interface IFormBuilderProps {
5447
+ formId?: number;
5448
+ /**
5449
+ * Initial form metadata (uncontrolled mode). Ignored when `value` is set —
5450
+ * `value.form` then drives the meta.
5451
+ */
5452
+ initialMeta?: IFormBuilderMeta;
5453
+ /**
5454
+ * Saved fields loaded from the backend (uncontrolled mode). Accepts
5455
+ * IBuilderFieldExport[] (the persisted shape without _temp_id) because
5456
+ * _temp_id is always assigned internally on mount. Ignored when `value` is
5457
+ * set — `value.fields` then drives the field tree.
5458
+ */
5459
+ initialFields?: IBuilderFieldExport[];
5460
+ /**
5461
+ * Controlled-mode payload. When provided, FormBuilder mirrors `value.fields`
5462
+ * and `value.form` into its internal state on every change. Pair with
5463
+ * `onChange` so the consumer owns the source of truth.
5464
+ */
5465
+ value?: IFormBuilderPayload;
5466
+ /**
5467
+ * Fires on every meta or field-tree edit. Always invoked (controlled or
5468
+ * uncontrolled) so consumers can mirror state, debounce a save, drive a
5469
+ * page-level Save button, etc.
5470
+ */
5471
+ onChange?: (payload: IFormBuilderPayload) => void;
5472
+ localeKeys?: string[];
5473
+ /**
5474
+ * Optional save handler. When omitted, FormBuilder renders no Save button —
5475
+ * persistence is owned by the consumer (e.g. a page-level submit button
5476
+ * reading state via `onChange`/`value`). When provided, the Save button is
5477
+ * rendered and runs the snake_case validator before invoking this handler.
5478
+ */
5479
+ onSave?: (payload: IFormBuilderPayload) => void | Promise<void>;
5480
+ /**
5481
+ * Optional cancel handler. When omitted, no Cancel button is rendered.
5482
+ */
5483
+ onCancel?: () => void;
5484
+ isSaving?: boolean;
5485
+ readOnly?: boolean;
5486
+ /**
5487
+ * Strategy for the field's `name` (machine key).
5488
+ * - `'auto'` (default): every field receives a unique 6-char prefix
5489
+ * (`f` + 5 base36) on insert, and the name is auto-derived as
5490
+ * `<prefix>_<slug-of-label>` whenever the label changes. The Field Name
5491
+ * input is disabled. The prefix is sticky across edits and is reused
5492
+ * when the field is re-loaded from a saved payload, so duplicate labels
5493
+ * stay distinct without admin intervention.
5494
+ * - `'manual'`: admin types the snake_case name in the Properties Panel.
5495
+ * Use only when the field name is a meaningful contract (e.g. matched
5496
+ * against an external schema). The Backend's snake_case validator still
5497
+ * runs.
5498
+ */
5499
+ nameMode?: 'manual' | 'auto';
5500
+ dynamicFlagLoader?: (flag: TDynamicFlag, params: Record<string, string> | null) => Promise<IOptionItem[]>;
5501
+ /**
5502
+ * Consumer-injected node rendered in the header to the LEFT of the
5503
+ * Cancel/Save buttons. Use for tools like "Generate with AI", "Import",
5504
+ * "Templates", etc. KitsConcerto stays agnostic — the consumer owns the
5505
+ * action's label, icon, loading state, and onClick handler.
5506
+ */
5507
+ toolbarActions?: ReactNode;
5508
+ }
5509
+ export type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
5510
+ export type IBuilderFieldExport = DistributiveOmit<IBuilderField, '_temp_id'>;
5511
+ export interface IFormBuilderPayload {
5512
+ form: IFormBuilderMeta;
5513
+ fields: IBuilderFieldExport[];
5514
+ }
5515
+
5516
+ export interface IIconProps extends IStyleClasses {
5517
+ name: IconName | ElementType;
5518
+ /** Size token, or an explicit pixel number (both Icon impls resolve numbers). */
5519
+ size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
5520
+ color?: string;
5521
+ strokeWidth?: number;
5522
+ }
5523
+ export type IconName = "a-arrow-down" | "a-arrow-up" | "a-large-small" | "accessibility" | "activity" | "address-book" | "air-vent" | "airplay" | "alarm-clock" | "alarm-clock-check" | "alarm-clock-minus" | "alarm-clock-off" | "alarm-clock-plus" | "alarm-smoke" | "album" | "align-center" | "align-center-horizontal" | "align-center-vertical" | "align-end-horizontal" | "align-end-vertical" | "align-horizontal-distribute-center" | "align-horizontal-distribute-end" | "align-horizontal-distribute-start" | "align-horizontal-justify-center" | "align-horizontal-justify-end" | "align-horizontal-justify-start" | "align-horizontal-space-around" | "align-horizontal-space-between" | "align-justify" | "align-left" | "align-right" | "align-start-horizontal" | "align-start-vertical" | "align-vertical-distribute-center" | "align-vertical-distribute-end" | "align-vertical-distribute-start" | "align-vertical-justify-center" | "align-vertical-justify-end" | "align-vertical-justify-start" | "align-vertical-space-around" | "align-vertical-space-between" | "amazon" | "ambulance" | "ampersand" | "ampersands" | "amphora" | "anchor" | "android" | "angle-double-down" | "angle-double-left" | "angle-double-right" | "angle-double-up" | "angle-down" | "angle-left" | "angle-right" | "angle-up" | "angry" | "annoyed" | "antenna" | "anvil" | "aperture" | "app-window" | "app-window-mac" | "apple" | "archive" | "archive-restore" | "archive-x" | "armchair" | "arrow-big-down" | "arrow-big-down-dash" | "arrow-big-left" | "arrow-big-left-dash" | "arrow-big-right" | "arrow-big-right-dash" | "arrow-big-up" | "arrow-big-up-dash" | "arrow-circle-down" | "arrow-circle-left" | "arrow-circle-right" | "arrow-circle-up" | "arrow-down" | "arrow-down-0-1" | "arrow-down-1-0" | "arrow-down-a-z" | "arrow-down-from-line" | "arrow-down-left" | "arrow-down-left-and-arrow-up-right-to-center" | "arrow-down-narrow-wide" | "arrow-down-right" | "arrow-down-to-dot" | "arrow-down-to-line" | "arrow-down-up" | "arrow-down-wide-narrow" | "arrow-down-z-a" | "arrow-left" | "arrow-left-from-line" | "arrow-left-right" | "arrow-left-to-line" | "arrow-right" | "arrow-right-arrow-left" | "arrow-right-from-line" | "arrow-right-left" | "arrow-right-to-line" | "arrow-up" | "arrow-up-0-1" | "arrow-up-1-0" | "arrow-up-a-z" | "arrow-up-down" | "arrow-up-from-dot" | "arrow-up-from-line" | "arrow-up-left" | "arrow-up-narrow-wide" | "arrow-up-right" | "arrow-up-right-and-arrow-down-left-from-center" | "arrow-up-to-line" | "arrow-up-wide-narrow" | "arrow-up-z-a" | "arrows-alt" | "arrows-h" | "arrows-up-from-line" | "arrows-v" | "asterisk" | "astroid" | "at" | "at-sign" | "atom" | "audio-lines" | "audio-waveform" | "award" | "axe" | "axis-3d" | "baby" | "backpack" | "backward" | "badge" | "badge-alert" | "badge-cent" | "badge-check" | "badge-dollar-sign" | "badge-euro" | "badge-indian-rupee" | "badge-info" | "badge-japanese-yen" | "badge-minus" | "badge-percent" | "badge-plus" | "badge-pound-sterling" | "badge-question-mark" | "badge-russian-ruble" | "badge-swiss-franc" | "badge-turkish-lira" | "badge-x" | "baggage-claim" | "balloon" | "ban" | "banana" | "bandage" | "banknote" | "banknote-arrow-down" | "banknote-arrow-up" | "banknote-x" | "barcode" | "barrel" | "bars" | "baseline" | "bath" | "battery" | "battery-charging" | "battery-full" | "battery-low" | "battery-medium" | "battery-plus" | "battery-warning" | "beaker" | "bean" | "bean-off" | "bed" | "bed-double" | "bed-single" | "beef" | "beef-off" | "beer" | "beer-off" | "bell" | "bell-check" | "bell-dot" | "bell-electric" | "bell-minus" | "bell-off" | "bell-plus" | "bell-ring" | "bell-slash" | "between-horizontal-end" | "between-horizontal-start" | "between-vertical-end" | "between-vertical-start" | "biceps-flexed" | "bike" | "binary" | "binoculars" | "biohazard" | "bird" | "birdhouse" | "bitcoin" | "blend" | "blender" | "blinds" | "blocks" | "bluetooth" | "bluetooth-connected" | "bluetooth-off" | "bluetooth-searching" | "bold" | "bolt" | "bomb" | "bone" | "book" | "book-a" | "book-alert" | "book-audio" | "book-check" | "book-copy" | "book-dashed" | "book-down" | "book-headphones" | "book-heart" | "book-image" | "book-key" | "book-lock" | "book-marked" | "book-minus" | "book-open" | "book-open-check" | "book-open-text" | "book-plus" | "book-search" | "book-text" | "book-type" | "book-up" | "book-up-2" | "book-user" | "book-x" | "bookmark" | "bookmark-check" | "bookmark-fill" | "bookmark-minus" | "bookmark-off" | "bookmark-plus" | "bookmark-x" | "boom-box" | "bot" | "bot-message-square" | "bot-off" | "bottle-wine" | "bow-arrow" | "box" | "boxes" | "braces" | "brackets" | "brain" | "brain-circuit" | "brain-cog" | "brick-wall" | "brick-wall-fire" | "brick-wall-shield" | "briefcase" | "briefcase-business" | "briefcase-conveyor-belt" | "briefcase-medical" | "bring-to-front" | "broccoli" | "brush" | "brush-cleaning" | "bubbles" | "bug" | "bug-off" | "bug-play" | "building" | "building-2" | "building-columns" | "bullseye" | "bus" | "bus-front" | "cable" | "cable-car" | "cake" | "cake-slice" | "calculator" | "calendar" | "calendar-1" | "calendar-arrow-down" | "calendar-arrow-up" | "calendar-check" | "calendar-check-2" | "calendar-clock" | "calendar-cog" | "calendar-days" | "calendar-fold" | "calendar-heart" | "calendar-minus" | "calendar-minus-2" | "calendar-off" | "calendar-plus" | "calendar-plus-2" | "calendar-range" | "calendar-search" | "calendar-sync" | "calendar-times" | "calendar-x" | "calendar-x-2" | "calendars" | "camera" | "camera-off" | "candy" | "candy-cane" | "candy-off" | "cannabis" | "cannabis-off" | "captions" | "captions-off" | "car" | "car-front" | "car-taxi-front" | "caravan" | "card-sim" | "caret-down" | "caret-left" | "caret-right" | "caret-up" | "carrot" | "cart-arrow-down" | "cart-minus" | "cart-plus" | "case-lower" | "case-sensitive" | "case-upper" | "cassette-tape" | "cast" | "castle" | "cat" | "cctv" | "cctv-off" | "chart-area" | "chart-bar" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-stacked" | "chart-candlestick" | "chart-column" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-gantt" | "chart-line" | "chart-network" | "chart-no-axes-column" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie" | "chart-scatter" | "chart-spline" | "check" | "check-check" | "check-circle" | "check-line" | "check-square" | "chef-hat" | "cherry" | "chess-bishop" | "chess-king" | "chess-knight" | "chess-pawn" | "chess-queen" | "chess-rook" | "chevron-circle-down" | "chevron-circle-left" | "chevron-circle-right" | "chevron-circle-up" | "chevron-down" | "chevron-first" | "chevron-last" | "chevron-left" | "chevron-right" | "chevron-up" | "chevrons-down" | "chevrons-down-up" | "chevrons-left" | "chevrons-left-right" | "chevrons-left-right-ellipsis" | "chevrons-right" | "chevrons-right-left" | "chevrons-up" | "chevrons-up-down" | "church" | "cigarette" | "cigarette-off" | "circle" | "circle-alert" | "circle-arrow-down" | "circle-arrow-left" | "circle-arrow-out-down-left" | "circle-arrow-out-down-right" | "circle-arrow-out-up-left" | "circle-arrow-out-up-right" | "circle-arrow-right" | "circle-arrow-up" | "circle-check" | "circle-check-big" | "circle-chevron-down" | "circle-chevron-left" | "circle-chevron-right" | "circle-chevron-up" | "circle-dashed" | "circle-divide" | "circle-dollar-sign" | "circle-dot" | "circle-dot-dashed" | "circle-ellipsis" | "circle-equal" | "circle-fading-arrow-up" | "circle-fading-plus" | "circle-fill" | "circle-gauge" | "circle-minus" | "circle-off" | "circle-parking" | "circle-parking-off" | "circle-pause" | "circle-percent" | "circle-pile" | "circle-play" | "circle-plus" | "circle-pound-sterling" | "circle-power" | "circle-question-mark" | "circle-slash" | "circle-slash-2" | "circle-small" | "circle-star" | "circle-stop" | "circle-user" | "circle-user-round" | "circle-x" | "circuit-board" | "citrus" | "clapperboard" | "clipboard" | "clipboard-check" | "clipboard-clock" | "clipboard-copy" | "clipboard-list" | "clipboard-minus" | "clipboard-paste" | "clipboard-pen" | "clipboard-pen-line" | "clipboard-plus" | "clipboard-type" | "clipboard-x" | "clock" | "clock-1" | "clock-10" | "clock-11" | "clock-12" | "clock-2" | "clock-3" | "clock-4" | "clock-5" | "clock-6" | "clock-7" | "clock-8" | "clock-9" | "clock-alert" | "clock-arrow-down" | "clock-arrow-up" | "clock-check" | "clock-fading" | "clock-plus" | "clone" | "closed-caption" | "cloud" | "cloud-alert" | "cloud-backup" | "cloud-check" | "cloud-cog" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon" | "cloud-moon-rain" | "cloud-off" | "cloud-rain" | "cloud-rain-wind" | "cloud-snow" | "cloud-sun" | "cloud-sun-rain" | "cloud-sync" | "cloud-upload" | "cloudy" | "clover" | "club" | "code" | "code-xml" | "coffee" | "cog" | "coins" | "columns-2" | "columns-3" | "columns-3-cog" | "columns-4" | "combine" | "command" | "comment" | "comments" | "compass" | "component" | "computer" | "concierge-bell" | "cone" | "construction" | "contact" | "contact-round" | "container" | "contrast" | "cookie" | "cooking-pot" | "copy" | "copy-check" | "copy-minus" | "copy-plus" | "copy-slash" | "copy-x" | "copyleft" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "cpu" | "creative-commons" | "credit-card" | "croissant" | "crop" | "cross" | "crosshair" | "crown" | "cuboid" | "cup-soda" | "currency" | "cylinder" | "dam" | "database" | "database-backup" | "database-search" | "database-zap" | "decimals-arrow-left" | "decimals-arrow-right" | "delete" | "delete-left" | "desktop" | "dessert" | "diameter" | "diamond" | "diamond-minus" | "diamond-percent" | "diamond-plus" | "dice-1" | "dice-2" | "dice-3" | "dice-4" | "dice-5" | "dice-6" | "dices" | "diff" | "directions" | "directions-alt" | "disc" | "disc-2" | "disc-3" | "disc-album" | "discord" | "divide" | "dna" | "dna-off" | "dock" | "dog" | "dollar" | "dollar-sign" | "donut" | "door-closed" | "door-closed-locked" | "door-open" | "dot" | "download" | "drafting-compass" | "drama" | "drill" | "drone" | "droplet" | "droplet-off" | "droplets" | "drum" | "drumstick" | "dumbbell" | "ear" | "ear-off" | "earth" | "earth-lock" | "eclipse" | "egg" | "egg-fried" | "egg-off" | "eject" | "ellipse" | "ellipsis" | "ellipsis-h" | "ellipsis-v" | "ellipsis-vertical" | "envelope" | "equal" | "equal-approximately" | "equal-not" | "equals" | "eraser" | "ethereum" | "ethernet-port" | "euro" | "ev-charger" | "exclamation-circle" | "exclamation-triangle" | "expand" | "external-link" | "eye" | "eye-closed" | "eye-off" | "eye-slash" | "face-smile" | "facebook" | "factory" | "fan" | "fast-backward" | "fast-forward" | "feather" | "fence" | "ferris-wheel" | "file" | "file-archive" | "file-arrow-up" | "file-axis-3d" | "file-badge" | "file-box" | "file-braces" | "file-braces-corner" | "file-chart-column" | "file-chart-column-increasing" | "file-chart-line" | "file-chart-pie" | "file-check" | "file-check-corner" | "file-clock" | "file-code" | "file-code-corner" | "file-cog" | "file-diff" | "file-digit" | "file-down" | "file-edit" | "file-excel" | "file-exclamation-point" | "file-export" | "file-headphone" | "file-heart" | "file-image" | "file-import" | "file-input" | "file-key" | "file-lock" | "file-minus" | "file-minus-corner" | "file-music" | "file-output" | "file-pdf" | "file-pen" | "file-pen-line" | "file-play" | "file-plus" | "file-plus-corner" | "file-question-mark" | "file-scan" | "file-search" | "file-search-corner" | "file-signal" | "file-sliders" | "file-spreadsheet" | "file-stack" | "file-symlink" | "file-terminal" | "file-text" | "file-type" | "file-type-corner" | "file-up" | "file-user" | "file-video-camera" | "file-volume" | "file-word" | "file-x" | "file-x-corner" | "files" | "film" | "filter" | "filter-fill" | "filter-slash" | "fingerprint-pattern" | "fire-extinguisher" | "fish" | "fish-off" | "fish-symbol" | "fishing-hook" | "fishing-rod" | "flag" | "flag-fill" | "flag-off" | "flag-triangle-left" | "flag-triangle-right" | "flame" | "flame-kindling" | "flashlight" | "flashlight-off" | "flask-conical" | "flask-conical-off" | "flask-round" | "flip-horizontal-2" | "flip-vertical-2" | "flower" | "flower-2" | "focus" | "fold-horizontal" | "fold-vertical" | "folder" | "folder-archive" | "folder-bookmark" | "folder-check" | "folder-clock" | "folder-closed" | "folder-code" | "folder-cog" | "folder-dot" | "folder-down" | "folder-git" | "folder-git-2" | "folder-heart" | "folder-input" | "folder-kanban" | "folder-key" | "folder-lock" | "folder-minus" | "folder-open" | "folder-open-dot" | "folder-output" | "folder-pen" | "folder-plus" | "folder-root" | "folder-search" | "folder-search-2" | "folder-symlink" | "folder-sync" | "folder-tree" | "folder-up" | "folder-x" | "folders" | "footprints" | "forklift" | "form" | "forward" | "frame" | "frown" | "fuel" | "fullscreen" | "funnel" | "funnel-plus" | "funnel-x" | "gallery-horizontal" | "gallery-horizontal-end" | "gallery-thumbnails" | "gallery-vertical" | "gallery-vertical-end" | "gamepad" | "gamepad-2" | "gamepad-directional" | "gauge" | "gavel" | "gem" | "georgian-lari" | "ghost" | "gift" | "git-branch" | "git-branch-minus" | "git-branch-plus" | "git-commit-horizontal" | "git-commit-vertical" | "git-compare" | "git-compare-arrows" | "git-fork" | "git-graph" | "git-merge" | "git-merge-conflict" | "git-pull-request" | "git-pull-request-arrow" | "git-pull-request-closed" | "git-pull-request-create" | "git-pull-request-create-arrow" | "git-pull-request-draft" | "github" | "glass-water" | "glasses" | "globe" | "globe-check" | "globe-lock" | "globe-off" | "globe-x" | "goal" | "google" | "gpu" | "graduation-cap" | "grape" | "grid-2x2" | "grid-2x2-check" | "grid-2x2-plus" | "grid-2x2-x" | "grid-3x2" | "grid-3x3" | "grip" | "grip-horizontal" | "grip-vertical" | "group" | "guitar" | "ham" | "hamburger" | "hammer" | "hand" | "hand-coins" | "hand-fist" | "hand-grab" | "hand-heart" | "hand-helping" | "hand-metal" | "hand-platter" | "handbag" | "handshake" | "hard-drive" | "hard-drive-download" | "hard-drive-upload" | "hard-hat" | "hash" | "hashtag" | "hat-glasses" | "haze" | "hd" | "hdmi-port" | "heading" | "heading-1" | "heading-2" | "heading-3" | "heading-4" | "heading-5" | "heading-6" | "headphone-off" | "headphones" | "headset" | "heart" | "heart-crack" | "heart-fill" | "heart-handshake" | "heart-minus" | "heart-off" | "heart-plus" | "heart-pulse" | "heart-x" | "heater" | "helicopter" | "hexagon" | "highlighter" | "history" | "home" | "hop" | "hop-off" | "hospital" | "hotel" | "hourglass" | "house" | "house-heart" | "house-plug" | "house-plus" | "house-wifi" | "ice-cream-bowl" | "ice-cream-cone" | "id-card" | "id-card-lanyard" | "image" | "image-down" | "image-minus" | "image-off" | "image-play" | "image-plus" | "image-up" | "image-upscale" | "images" | "import" | "inbox" | "indian-rupee" | "infinity" | "info" | "info-circle" | "inspection-panel" | "instagram" | "italic" | "iteration-ccw" | "iteration-cw" | "japanese-yen" | "joystick" | "kanban" | "kayak" | "key" | "key-round" | "key-square" | "keyboard" | "keyboard-music" | "keyboard-off" | "lamp" | "lamp-ceiling" | "lamp-desk" | "lamp-floor" | "lamp-wall-down" | "lamp-wall-up" | "land-plot" | "landmark" | "language" | "languages" | "laptop" | "laptop-minimal" | "laptop-minimal-check" | "lasso" | "lasso-select" | "laugh" | "layers" | "layers-2" | "layers-minus" | "layers-plus" | "layout-dashboard" | "layout-grid" | "layout-list" | "layout-panel-left" | "layout-panel-top" | "layout-template" | "leaf" | "leafy-green" | "lectern" | "lens-concave" | "lens-convex" | "library" | "library-big" | "life-buoy" | "ligature" | "lightbulb" | "lightbulb-off" | "line-dot-right-horizontal" | "line-squiggle" | "line-style" | "link" | "link-2" | "link-2-off" | "linkedin" | "list" | "list-check" | "list-checks" | "list-chevrons-down-up" | "list-chevrons-up-down" | "list-collapse" | "list-end" | "list-filter" | "list-filter-plus" | "list-indent-decrease" | "list-indent-increase" | "list-minus" | "list-music" | "list-ordered" | "list-plus" | "list-restart" | "list-start" | "list-todo" | "list-tree" | "list-video" | "list-x" | "loader" | "loader-circle" | "loader-pinwheel" | "locate" | "locate-fixed" | "locate-off" | "lock" | "lock-keyhole" | "lock-keyhole-open" | "lock-open" | "log-in" | "log-out" | "logs" | "lollipop" | "luggage" | "magnet" | "mail" | "mail-check" | "mail-minus" | "mail-open" | "mail-plus" | "mail-question-mark" | "mail-search" | "mail-warning" | "mail-x" | "mailbox" | "mails" | "map" | "map-marker" | "map-minus" | "map-pin" | "map-pin-check" | "map-pin-check-inside" | "map-pin-house" | "map-pin-minus" | "map-pin-minus-inside" | "map-pin-off" | "map-pin-pen" | "map-pin-plus" | "map-pin-plus-inside" | "map-pin-search" | "map-pin-x" | "map-pin-x-inside" | "map-pinned" | "map-plus" | "mars" | "mars-stroke" | "martini" | "maximize" | "maximize-2" | "medal" | "megaphone" | "megaphone-off" | "meh" | "memory-stick" | "menu" | "merge" | "message-circle" | "message-circle-check" | "message-circle-code" | "message-circle-dashed" | "message-circle-heart" | "message-circle-more" | "message-circle-off" | "message-circle-plus" | "message-circle-question-mark" | "message-circle-reply" | "message-circle-warning" | "message-circle-x" | "message-square" | "message-square-check" | "message-square-code" | "message-square-dashed" | "message-square-diff" | "message-square-dot" | "message-square-heart" | "message-square-lock" | "message-square-more" | "message-square-off" | "message-square-plus" | "message-square-quote" | "message-square-reply" | "message-square-share" | "message-square-text" | "message-square-warning" | "message-square-x" | "messages-square" | "metronome" | "mic" | "mic-off" | "mic-vocal" | "microchip" | "microchip-ai" | "microphone" | "microscope" | "microsoft" | "microwave" | "milestone" | "milk" | "milk-off" | "minimize" | "minimize-2" | "minus" | "minus-circle" | "mirror-rectangular" | "mirror-round" | "mobile" | "money-bill" | "monitor" | "monitor-check" | "monitor-cloud" | "monitor-cog" | "monitor-dot" | "monitor-down" | "monitor-off" | "monitor-pause" | "monitor-play" | "monitor-smartphone" | "monitor-speaker" | "monitor-stop" | "monitor-up" | "monitor-x" | "moon" | "moon-star" | "motorbike" | "mountain" | "mountain-snow" | "mouse" | "mouse-left" | "mouse-off" | "mouse-pointer" | "mouse-pointer-2" | "mouse-pointer-2-off" | "mouse-pointer-ban" | "mouse-pointer-click" | "mouse-right" | "move" | "move-3d" | "move-diagonal" | "move-diagonal-2" | "move-down" | "move-down-left" | "move-down-right" | "move-horizontal" | "move-left" | "move-right" | "move-up" | "move-up-left" | "move-up-right" | "move-vertical" | "music" | "music-2" | "music-3" | "music-4" | "navigation" | "navigation-2" | "navigation-2-off" | "navigation-off" | "network" | "newspaper" | "nfc" | "non-binary" | "notebook" | "notebook-pen" | "notebook-tabs" | "notebook-text" | "notepad-text" | "notepad-text-dashed" | "nut" | "nut-off" | "objects-column" | "octagon" | "octagon-alert" | "octagon-minus" | "octagon-pause" | "octagon-x" | "omega" | "option" | "orbit" | "origami" | "package" | "package-2" | "package-check" | "package-minus" | "package-open" | "package-plus" | "package-search" | "package-x" | "paint-bucket" | "paint-roller" | "paintbrush" | "paintbrush-vertical" | "palette" | "panda" | "panel-bottom" | "panel-bottom-close" | "panel-bottom-dashed" | "panel-bottom-open" | "panel-left" | "panel-left-close" | "panel-left-dashed" | "panel-left-open" | "panel-left-right-dashed" | "panel-right" | "panel-right-close" | "panel-right-dashed" | "panel-right-open" | "panel-top" | "panel-top-bottom-dashed" | "panel-top-close" | "panel-top-dashed" | "panel-top-open" | "panels-left-bottom" | "panels-right-bottom" | "panels-top-left" | "paperclip" | "parasol" | "parentheses" | "parking-meter" | "party-popper" | "pause" | "pause-circle" | "paw-print" | "paypal" | "pc-case" | "pen" | "pen-line" | "pen-off" | "pen-to-square" | "pen-tool" | "pencil" | "pencil-line" | "pencil-off" | "pencil-ruler" | "pentagon" | "percent" | "percentage" | "person-standing" | "philippine-peso" | "phone" | "phone-call" | "phone-forwarded" | "phone-incoming" | "phone-missed" | "phone-off" | "phone-outgoing" | "pi" | "piano" | "pickaxe" | "picture-in-picture" | "picture-in-picture-2" | "piggy-bank" | "pilcrow" | "pilcrow-left" | "pilcrow-right" | "pill" | "pill-bottle" | "pin" | "pin-off" | "pinterest" | "pipette" | "pizza" | "plane" | "plane-landing" | "plane-takeoff" | "play" | "play-circle" | "play-off" | "plug" | "plug-2" | "plug-zap" | "plus" | "plus-circle" | "pocket-knife" | "podcast" | "pointer" | "pointer-off" | "popcorn" | "popsicle" | "pound" | "pound-sterling" | "power" | "power-off" | "presentation" | "prime" | "print" | "printer" | "printer-check" | "printer-x" | "projector" | "proportions" | "puzzle" | "pyramid" | "qr-code" | "qrcode" | "question" | "question-circle" | "quote" | "rabbit" | "radar" | "radiation" | "radical" | "radio" | "radio-off" | "radio-receiver" | "radio-tower" | "radius" | "rainbow" | "rat" | "ratio" | "receipt" | "receipt-cent" | "receipt-euro" | "receipt-indian-rupee" | "receipt-japanese-yen" | "receipt-pound-sterling" | "receipt-russian-ruble" | "receipt-swiss-franc" | "receipt-text" | "receipt-turkish-lira" | "rectangle-circle" | "rectangle-ellipsis" | "rectangle-goggles" | "rectangle-horizontal" | "rectangle-vertical" | "recycle" | "reddit" | "redo" | "redo-2" | "redo-dot" | "refresh" | "refresh-ccw" | "refresh-ccw-dot" | "refresh-cw" | "refresh-cw-off" | "refrigerator" | "regex" | "remove-formatting" | "repeat" | "repeat-1" | "repeat-2" | "repeat-off" | "replace" | "replace-all" | "replay" | "reply" | "reply-all" | "rewind" | "ribbon" | "road" | "rocket" | "rocking-chair" | "roller-coaster" | "rose" | "rotate-3d" | "rotate-ccw" | "rotate-ccw-key" | "rotate-ccw-square" | "rotate-cw" | "rotate-cw-square" | "route" | "route-off" | "router" | "rows-2" | "rows-3" | "rows-4" | "rss" | "ruler" | "ruler-dimension-line" | "russian-ruble" | "sailboat" | "salad" | "sandwich" | "satellite" | "satellite-dish" | "saudi-riyal" | "save" | "save-all" | "save-off" | "scale" | "scale-3d" | "scaling" | "scan" | "scan-barcode" | "scan-eye" | "scan-face" | "scan-heart" | "scan-line" | "scan-qr-code" | "scan-search" | "scan-text" | "school" | "scissors" | "scissors-line-dashed" | "scooter" | "screen-share" | "screen-share-off" | "scroll" | "scroll-text" | "search" | "search-alert" | "search-check" | "search-code" | "search-minus" | "search-plus" | "search-slash" | "search-x" | "section" | "send" | "send-horizontal" | "send-to-back" | "separator-horizontal" | "separator-vertical" | "server" | "server-cog" | "server-crash" | "server-off" | "settings" | "settings-2" | "shapes" | "share" | "share-2" | "share-alt" | "sheet" | "shell" | "shelving-unit" | "shield" | "shield-alert" | "shield-ban" | "shield-check" | "shield-cog" | "shield-cog-corner" | "shield-ellipsis" | "shield-half" | "shield-minus" | "shield-off" | "shield-plus" | "shield-question-mark" | "shield-user" | "shield-x" | "ship" | "ship-wheel" | "shirt" | "shop" | "shopping-bag" | "shopping-basket" | "shopping-cart" | "shovel" | "shower-head" | "shredder" | "shrimp" | "shrink" | "shrub" | "shuffle" | "sigma" | "sign-in" | "sign-out" | "signal" | "signal-high" | "signal-low" | "signal-medium" | "signal-zero" | "signature" | "signpost" | "signpost-big" | "siren" | "sitemap" | "skip-back" | "skip-forward" | "skull" | "slack" | "slash" | "slice" | "sliders-h" | "sliders-horizontal" | "sliders-v" | "sliders-vertical" | "smartphone" | "smartphone-charging" | "smartphone-nfc" | "smile" | "smile-plus" | "snail" | "snowflake" | "soap-dispenser-droplet" | "sofa" | "solar-panel" | "sort" | "sort-alpha-down" | "sort-alpha-down-alt" | "sort-alpha-up" | "sort-alpha-up-alt" | "sort-alt" | "sort-alt-slash" | "sort-amount-down" | "sort-amount-down-alt" | "sort-amount-up" | "sort-amount-up-alt" | "sort-down" | "sort-down-fill" | "sort-numeric-down" | "sort-numeric-down-alt" | "sort-numeric-up" | "sort-numeric-up-alt" | "sort-up" | "sort-up-fill" | "soup" | "space" | "spade" | "sparkle" | "sparkles" | "speaker" | "speech" | "spell-check" | "spell-check-2" | "spinner" | "spinner-dotted" | "spline" | "spline-pointer" | "split" | "spool" | "sport-shoe" | "spotlight" | "spray-can" | "sprout" | "square" | "square-activity" | "square-arrow-down" | "square-arrow-down-left" | "square-arrow-down-right" | "square-arrow-left" | "square-arrow-out-down-left" | "square-arrow-out-down-right" | "square-arrow-out-up-left" | "square-arrow-out-up-right" | "square-arrow-right" | "square-arrow-right-enter" | "square-arrow-right-exit" | "square-arrow-up" | "square-arrow-up-left" | "square-arrow-up-right" | "square-asterisk" | "square-bottom-dashed-scissors" | "square-centerline-dashed-horizontal" | "square-centerline-dashed-vertical" | "square-chart-gantt" | "square-check" | "square-check-big" | "square-chevron-down" | "square-chevron-left" | "square-chevron-right" | "square-chevron-up" | "square-code" | "square-dashed" | "square-dashed-bottom" | "square-dashed-bottom-code" | "square-dashed-kanban" | "square-dashed-mouse-pointer" | "square-dashed-text" | "square-dashed-top-solid" | "square-divide" | "square-dot" | "square-equal" | "square-function" | "square-kanban" | "square-library" | "square-m" | "square-menu" | "square-minus" | "square-mouse-pointer" | "square-parking" | "square-parking-off" | "square-pause" | "square-pen" | "square-percent" | "square-pi" | "square-pilcrow" | "square-play" | "square-plus" | "square-power" | "square-radical" | "square-round-corner" | "square-scissors" | "square-sigma" | "square-slash" | "square-split-horizontal" | "square-split-vertical" | "square-square" | "square-stack" | "square-star" | "square-stop" | "square-terminal" | "square-user" | "square-user-round" | "square-x" | "squares-exclude" | "squares-intersect" | "squares-subtract" | "squares-unite" | "squircle" | "squircle-dashed" | "squirrel" | "stamp" | "star" | "star-fill" | "star-half" | "star-half-fill" | "star-off" | "step-back" | "step-backward" | "step-backward-alt" | "step-forward" | "step-forward-alt" | "stethoscope" | "sticker" | "sticky-note" | "sticky-note-check" | "sticky-note-minus" | "sticky-note-off" | "sticky-note-plus" | "sticky-note-x" | "sticky-notes" | "stone" | "stop" | "stop-circle" | "stopwatch" | "store" | "stretch-horizontal" | "stretch-vertical" | "strikethrough" | "subscript" | "sun" | "sun-dim" | "sun-medium" | "sun-moon" | "sun-snow" | "sunrise" | "sunset" | "superscript" | "swatch-book" | "swiss-franc" | "switch-camera" | "sword" | "swords" | "sync" | "syringe" | "table" | "table-2" | "table-cells-merge" | "table-cells-split" | "table-columns-split" | "table-of-contents" | "table-properties" | "table-rows-split" | "tablet" | "tablet-smartphone" | "tablets" | "tag" | "tags" | "tally-1" | "tally-2" | "tally-3" | "tally-4" | "tally-5" | "tangent" | "target" | "telegram" | "telescope" | "tent" | "tent-tree" | "terminal" | "test-tube" | "test-tube-diagonal" | "test-tubes" | "text-align-center" | "text-align-end" | "text-align-justify" | "text-align-start" | "text-cursor" | "text-cursor-input" | "text-initial" | "text-quote" | "text-search" | "text-wrap" | "th-large" | "theater" | "thermometer" | "thermometer-snowflake" | "thermometer-sun" | "thumbs-down" | "thumbs-down-fill" | "thumbs-up" | "thumbs-up-fill" | "thumbtack" | "ticket" | "ticket-check" | "ticket-minus" | "ticket-percent" | "ticket-plus" | "ticket-slash" | "ticket-x" | "tickets" | "tickets-plane" | "tiktok" | "timeline" | "timer" | "timer-off" | "timer-reset" | "times" | "times-circle" | "toggle-left" | "toggle-right" | "toilet" | "tool-case" | "toolbox" | "tornado" | "torus" | "touchpad" | "touchpad-off" | "towel-rack" | "tower-control" | "toy-brick" | "tractor" | "traffic-cone" | "train-front" | "train-front-tunnel" | "train-track" | "tram-front" | "transgender" | "trash" | "trash-2" | "tree-deciduous" | "tree-palm" | "tree-pine" | "trees" | "trending-down" | "trending-up" | "trending-up-down" | "triangle" | "triangle-alert" | "triangle-dashed" | "triangle-right" | "trophy" | "truck" | "truck-electric" | "turkish-lira" | "turntable" | "turtle" | "tv" | "tv-minimal" | "tv-minimal-play" | "twitch" | "twitter" | "type" | "type-outline" | "umbrella" | "umbrella-off" | "underline" | "undo" | "undo-2" | "undo-dot" | "unfold-horizontal" | "unfold-vertical" | "ungroup" | "university" | "unlink" | "unlink-2" | "unlock" | "unplug" | "upload" | "usb" | "user" | "user-check" | "user-cog" | "user-edit" | "user-key" | "user-lock" | "user-minus" | "user-pen" | "user-plus" | "user-round" | "user-round-check" | "user-round-cog" | "user-round-key" | "user-round-minus" | "user-round-pen" | "user-round-plus" | "user-round-search" | "user-round-x" | "user-search" | "user-star" | "user-x" | "users" | "users-round" | "utensils" | "utensils-crossed" | "utility-pole" | "van" | "variable" | "vault" | "vector-square" | "vegan" | "venetian-mask" | "venus" | "venus-and-mars" | "verified" | "vibrate" | "vibrate-off" | "video" | "video-off" | "videotape" | "view" | "vimeo" | "voicemail" | "volleyball" | "volume" | "volume-1" | "volume-2" | "volume-down" | "volume-off" | "volume-up" | "volume-x" | "vote" | "wallet" | "wallet-cards" | "wallet-minimal" | "wallpaper" | "wand" | "wand-sparkles" | "warehouse" | "washing-machine" | "watch" | "wave-pulse" | "waves-arrow-down" | "waves-arrow-up" | "waves-horizontal" | "waves-ladder" | "waves-vertical" | "waypoints" | "webcam" | "webhook" | "webhook-off" | "weight" | "weight-tilde" | "whatsapp" | "wheat" | "wheat-off" | "whole-word" | "wifi" | "wifi-cog" | "wifi-high" | "wifi-low" | "wifi-off" | "wifi-pen" | "wifi-sync" | "wifi-zero" | "wind" | "wind-arrow-down" | "window-maximize" | "window-minimize" | "wine" | "wine-off" | "workflow" | "worm" | "wrench" | "x" | "x-line-top" | "zap" | "zap-off" | "zodiac-aquarius" | "zodiac-aries" | "zodiac-cancer" | "zodiac-capricorn" | "zodiac-gemini" | "zodiac-leo" | "zodiac-libra" | "zodiac-ophiuchus" | "zodiac-pisces" | "zodiac-sagittarius" | "zodiac-scorpio" | "zodiac-taurus" | "zodiac-virgo" | "zoom-in" | "zoom-out" | `pi pi-${string}`;
5524
+
5525
+ export interface IPaletteProps {
5526
+ onAdd: (type: TBuilderFieldType) => void;
5527
+ }
5528
+ export interface IPaletteItemProps {
5529
+ type: TBuilderFieldType;
5530
+ icon: IconName;
5531
+ label: string;
5532
+ onAdd: (type: TBuilderFieldType) => void;
5533
+ }
5534
+ export interface ICanvasProps {
5535
+ fields: IBuilderField[];
5536
+ selectedTempId: string | null;
5537
+ onAddField: (type: TBuilderFieldType) => void;
5538
+ onRemoveField: (tempId: string) => void;
5539
+ onReorder: (newTempIdOrder: string[]) => void;
5540
+ onSelectField: (tempId: string | null) => void;
5541
+ onAddChildField: (parentTempId: string, type: TBuilderFieldType) => void;
5542
+ onRemoveChildField: (parentTempId: string, childTempId: string) => void;
5543
+ onReorderChildren: (parentTempId: string, newTempIdOrder: string[]) => void;
5544
+ /** When non-null, a drag is currently in progress and originated from this source. */
5545
+ activeDragSource?: 'palette' | 'canvas' | null;
5546
+ /** When dragging from palette, the field type currently being dragged. */
5547
+ activeDragType?: TBuilderFieldType | null;
5548
+ }
5549
+ export interface IFieldCardProps {
5550
+ field: IBuilderField;
5551
+ isSelected: boolean;
5552
+ onSelect: () => void;
5553
+ onRemove: () => void;
5554
+ }
5555
+ export interface IFieldPreviewProps {
5556
+ field: IBuilderField;
5557
+ dynamicFlagLoader?: (flag: TDynamicFlag, params: Record<string, string> | null) => Promise<IOptionItem[]>;
5558
+ }
5559
+ export interface IContainerCardProps {
5560
+ field: IBuilderContainerField;
5561
+ isSelected: boolean;
5562
+ selectedTempId: string | null;
5563
+ onSelect: () => void;
5564
+ onSelectChild: (tempId: string | null) => void;
5565
+ onRemove: () => void;
5566
+ onAddChild: (type: TBuilderFieldType) => void;
5567
+ onRemoveChild: (childTempId: string) => void;
5568
+ onReorderChildren: (newTempIdOrder: string[]) => void;
5569
+ activeDragSource?: 'palette' | 'canvas' | null;
5570
+ activeDragType?: TBuilderFieldType | null;
5571
+ }
5572
+ export interface IGroupCardProps {
5573
+ field: IBuilderGroupField;
5574
+ isSelected: boolean;
5575
+ selectedTempId: string | null;
5576
+ onSelect: () => void;
5577
+ onSelectChild: (tempId: string | null) => void;
5578
+ onRemove: () => void;
5579
+ onAddChild: (type: TBuilderFieldType) => void;
5580
+ onRemoveChild: (childTempId: string) => void;
5581
+ onReorderChildren: (newTempIdOrder: string[]) => void;
5582
+ activeDragSource?: 'palette' | 'canvas' | null;
5583
+ activeDragType?: TBuilderFieldType | null;
5584
+ }
5585
+ export interface IPropertiesPanelProps {
5586
+ field: IBuilderField | null;
5587
+ localeKeys: string[];
5588
+ onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
5589
+ allFields: IBuilderField[];
5590
+ /** See IFormBuilderProps.nameMode. Defaults to 'manual'. */
5591
+ nameMode?: 'manual' | 'auto';
5592
+ }
5593
+ export interface IBasicSectionProps {
5594
+ field: IBuilderField;
5595
+ allFields: IBuilderField[];
5596
+ localeKeys: string[];
5597
+ onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
5598
+ /** See IFormBuilderProps.nameMode. Defaults to 'manual'. */
5599
+ nameMode?: 'manual' | 'auto';
5600
+ }
5601
+ export interface IValidationSectionProps {
5602
+ field: IBuilderField;
5603
+ localeKeys: string[];
5604
+ onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
5605
+ }
5606
+ export interface IConditionsSectionProps {
5607
+ field: IBuilderField;
5608
+ allFields: IBuilderField[];
5609
+ localeKeys: string[];
5610
+ onUpdate: (updater: (field: IBuilderField) => IBuilderField) => void;
5611
+ }
5612
+ export interface ITranslatableInputProps {
5613
+ label: string;
5614
+ value: ITranslatableText | null;
5615
+ localeKeys: string[];
5616
+ onChange: (value: ITranslatableText) => void;
5617
+ placeholder?: string;
5618
+ helperText?: string;
5619
+ }
5620
+ export interface IOptionsEditorProps {
5621
+ value: IOptionsSource;
5622
+ localeKeys: string[];
5623
+ /**
5624
+ * For Checkbox / Radio fields, the parent's `mode`. When 'images', the editor
5625
+ * shows an image upload (PNG/JPG ≤ 100 KB, base64) per option in addition to
5626
+ * the standard label + value inputs. Undefined for non-Checkbox/Radio fields.
5627
+ */
5628
+ mode?: 'labeled' | 'images';
5629
+ onChange: (value: IOptionsSource) => void;
5630
+ }
5631
+ export interface IConditionGroupProps {
5632
+ condition: IFieldCondition;
5633
+ conditionIndex: number;
5634
+ fieldOptions: {
5635
+ label: string;
5636
+ value: string;
5637
+ }[];
5638
+ localeKeys: string[];
5639
+ onChange: (next: IFieldCondition) => void;
5640
+ onRemove: () => void;
5641
+ }
5642
+ export interface IConditionRowProps {
5643
+ rule: IConditionRule;
5644
+ fieldOptions: {
5645
+ label: string;
5646
+ value: string;
5647
+ }[];
5648
+ onChange: (next: IConditionRule) => void;
5649
+ onRemove: () => void;
5650
+ }
5651
+ export interface IFormBuilderInternalState {
5652
+ fields: IBuilderField[];
5653
+ meta: IFormBuilderMeta;
5654
+ selectedTempId: string | null;
5655
+ isDirty: boolean;
5656
+ }
5657
+ /**
5658
+ * A render-callback element type used inside KitsConcerto Form to mount
5659
+ * non-Form children such as TranslatableInput and OptionsEditor.
5660
+ * Wraps the actual render in a Container-type IFormElement.
5661
+ */
5662
+ export interface IPanelCustomSlot {
5663
+ id: string;
5664
+ render: () => ReactNode;
5665
+ colSpan?: number;
5666
+ }
5667
+
5668
+ export type IRadioCheckboxListItem<T = any> = {
5669
+ id?: string;
5670
+ label?: string;
5671
+ component?: ((args: {
5672
+ selected?: boolean;
5673
+ value?: T;
5674
+ isInvalid: boolean;
5675
+ }) => ReactElement) | ReactElement;
5676
+ /**
5677
+ * Identity value (kept in original type).
5678
+ * Internally stringified only when a provider requires it (e.g., Gluestack).
5679
+ */
5680
+ value: T;
5681
+ withBulbs?: boolean;
5682
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
5683
+ labelPosition?: "left" | "right" | "top" | "bottom" | "default";
5684
+ /**
5685
+ * Back-compat shorthand for width. Equivalent to `style: { w }`.
5686
+ * If `style.width` is also set, `style.width` wins.
5687
+ */
5688
+ w?: IStyleClasses["w"];
5689
+ /**
5690
+ * Full per-item style. String values are resolved through the
5691
+ * theme token resolver (e.g. `bg: 'primary'`, `borderColor: 'gray.300'`,
5692
+ * `p: 4`). Merged on top of `theme.components.{Radio|Checkbox}.item.style`.
5693
+ */
5694
+ style?: IStyleClasses;
5695
+ /** Style merged on top of `style` when this item is selected. */
5696
+ styleSelected?: IStyleClasses;
5697
+ /** Style merged on top of `style` when this item is disabled. */
5698
+ styleDisabled?: IStyleClasses;
5699
+ /** Style merged on top of `style` when this item is invalid. */
5700
+ styleInvalid?: IStyleClasses;
5701
+ /**
5702
+ * Optional per-item control (list mode).
5703
+ * - checked: controlled
5704
+ * - defaultChecked: uncontrolled initial
5705
+ */
5706
+ checked?: boolean;
5707
+ defaultChecked?: boolean;
5708
+ };
5709
+
5710
+ export interface IKitsContainer extends IFormSingleElement, Omit<ElementProps, "onChange" | "onBlur" | "onFocus" | "value" | "defaultValue" | "ref" | "style" | "label" | "color">, IStyleClasses {
5711
+ children?: ReactNode;
5712
+ containerStyle?: IStyleClasses;
5713
+ additionalClassName?: string;
5714
+ /** Per-element styles (IStyleClasses) passed from the parent form input component */
5715
+ elementStyles?: Record<string, Record<string, any>>;
5716
+ /**
5717
+ * Per-element extra attributes (`className`, `data-*`, …) passed from the
5718
+ * parent form input component — `useComponentDefaults().elementProps`.
5719
+ *
5720
+ * ⛔ WITHOUT THIS, `slots.container.props` AND `slots.inputGroup.props`
5721
+ * WENT NOWHERE. KitsContainer owns both of those elements, so a class a
5722
+ * consumer put on either slot had no route to the DOM: the container only
5723
+ * ever received `elementStyles`. Optional, so a form input that does not
5724
+ * pass it behaves exactly as before.
5725
+ */
5726
+ elementProps?: Record<string, Record<string, any>>;
5727
+ /**
5728
+ * When true, strips the input-group chrome (border, border-radius, overflow, focus ring).
5729
+ * Used by Switch, Checkbox, and Radio which render their own visual controls
5730
+ * and don't need the standard bordered input container.
5731
+ */
5732
+ bare?: boolean;
5733
+ }
5734
+
5735
+ export interface IEditableProps {
5736
+ defaultValue?: string;
5737
+ value?: string;
5738
+ onChange?: (value: string) => void;
5739
+ onSubmit?: (value: string) => void;
5740
+ activationMode?: "click" | "dblclick";
5741
+ disabled?: boolean;
5742
+ type?: "input" | "textarea";
5743
+ previewProps?: Record<string, any>;
5744
+ inputProps?: Record<string, any>;
5745
+ textareaProps?: Record<string, any>;
5746
+ controls?: (helpers: {
5747
+ submit(): void;
5748
+ cancel(): void;
5749
+ }) => ReactNode;
5750
+ }
5751
+
5752
+ export interface IKitsInputNumber extends IFormSingleElement {
5753
+ value?: number | null;
5754
+ locale?: string;
5755
+ useGrouping?: boolean;
5756
+ minFractionDigits?: number;
5757
+ maxFractionDigits?: number;
5758
+ mode?: "decimal" | "currency";
5759
+ currency?: string;
5760
+ prefix?: string;
5761
+ suffix?: string;
5762
+ min?: number;
5763
+ max?: number;
5764
+ /**
5765
+ * PrimeReact-style key filter. Restricts typed characters at the keystroke
5766
+ * level. When omitted, only blur-time number parsing runs.
5767
+ */
5768
+ keyFilter?: EKeyFilter | RegExp;
5769
+ localProps?: Record<string, any>;
5770
+ onChange?: (event: {
5771
+ value: number | null;
5772
+ }) => void;
5773
+ ref?: Ref<any>;
5774
+ }
5775
+
5776
+ export interface IGlobalEvents {
5777
+ onClick?: (event: GestureResponderEvent) => void;
5778
+ onDoubleClick?: any;
5779
+ onMouseDown?: (event: GestureResponderEvent) => void;
5780
+ onMouseUp?: (event: GestureResponderEvent) => void;
5781
+ onMouseEnter?: any;
5782
+ onMouseLeave?: any;
5783
+ onMouseMove?: any;
5784
+ onKeyDown?: any;
5785
+ onKeyUp?: any;
5786
+ onKeyPress?: (event: NativeSyntheticEvent<TextInputKeyPressEventData>) => void;
5787
+ onFocus?: (event: NativeSyntheticEvent<TargetedEvent>) => void;
5788
+ onBlur?: (event: NativeSyntheticEvent<TargetedEvent>) => void;
5789
+ onTouchStart?: (event: GestureResponderEvent) => void;
5790
+ onTouchMove?: (event: GestureResponderEvent) => void;
5791
+ onTouchEnd?: (event: GestureResponderEvent) => void;
5792
+ onTouchCancel?: (event: GestureResponderEvent) => void;
5793
+ onScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
5794
+ }
5795
+
5796
+ export interface IKitsInputTextBase extends Omit<IFormSingleElement, 'onFocus'>, IGlobalEvents {
5797
+ value?: string;
5798
+ placeholder?: string;
5799
+ autoFocus?: boolean;
5800
+ isChecked?: boolean;
5801
+ hidden?: boolean;
5802
+ onSubmitEditing?: () => void;
5803
+ containerStyle?: IStyleClasses;
5804
+ keyFilter?: EKeyFilter | RegExp;
5805
+ /**
5806
+ * Maximum number of characters allowed. On native, enforced live by the
5807
+ * underlying RN TextInput. On web, forwarded to the underlying input.
5808
+ */
5809
+ maxLength?: number;
5810
+ /**
5811
+ * Minimum number of characters required. Submit-time only — RN TextInput
5812
+ * has no native minLength prop, so this is enforced by the form schema.
5813
+ */
5814
+ minLength?: number;
5815
+ /**
5816
+ * Controls the keyboard type displayed on mobile devices.
5817
+ * No effect on web — native-only prop.
5818
+ * @platform native
5819
+ */
5820
+ keyboardType?: 'default' | 'numeric' | 'email-address' | 'phone-pad' | 'decimal-pad' | 'url' | 'number-pad' | 'visible-password' | 'ascii-capable' | 'numbers-and-punctuation' | 'name-phone-pad' | 'twitter' | 'web-search';
5821
+ className?: string;
5822
+ /** platform-specific escape hatch */
5823
+ localProps?: unknown;
5824
+ style?: any;
5825
+ ref?: Ref<any>;
5826
+ }
5827
+
5828
+ export interface IKitsInputMask extends IKitsInputTextBase {
5829
+ /** Same API — custom implementation */
5830
+ mask?: string;
5831
+ unmask?: boolean;
5832
+ }
5833
+
5834
+ /**
5835
+ * Native-only extension
5836
+ * keyFilter will be implemented manually
5837
+ */
5838
+ export interface IKitsInputText extends IKitsInputTextBase {
5839
+ localProps?: {
5840
+ keyboardType?: "default" | "numeric" | "email-address";
5841
+ secureTextEntry?: boolean;
5842
+ } | any;
5843
+ /** Override the ID used for keyboard navigation registration (used by PhoneInput). */
5844
+ keyboardNavId?: string;
5845
+ }
5846
+
5847
+ export interface IKitsInputTextareaBase extends Omit<IFormSingleElement, 'onFocus'>, IGlobalEvents {
5848
+ value?: string;
5849
+ rows?: number;
5850
+ cols?: number;
5851
+ autoResize?: boolean;
5852
+ /**
5853
+ * Maximum number of characters allowed. On native, enforced live by the
5854
+ * underlying RN TextInput. On web, forwarded to the underlying textarea.
5855
+ */
5856
+ maxLength?: number;
5857
+ /**
5858
+ * Minimum number of characters required. Submit-time only — RN has no
5859
+ * native minLength prop, so this is enforced by the form schema.
5860
+ */
5861
+ minLength?: number;
5862
+ hidden?: boolean;
5863
+ isChecked?: boolean;
5864
+ autoFocus?: boolean;
5865
+ onSubmitEditing?: () => void;
5866
+ containerStyle?: IStyleClasses;
5867
+ keyFilter?: EKeyFilter | RegExp;
5868
+ localProps?: unknown;
5869
+ ref?: Ref<any>;
5870
+ }
5871
+
5872
+ export interface IKitsInputTextarea extends IKitsInputTextareaBase {
5873
+ localProps?: {
5874
+ multiline?: boolean;
5875
+ numberOfLines?: number;
5876
+ };
5877
+ keyboardNavId?: string;
5878
+ }
5879
+
5880
+ export interface IKitsInputSwitch extends Omit<IFormSingleElement, 'onChange'> {
5881
+ /** Controlled value for the switch (true/false) */
5882
+ value?: boolean;
5883
+ /** Primereact-like onChange handler */
5884
+ onChange?: (e: {
5885
+ target: {
5886
+ value: boolean;
5887
+ };
5888
+ value?: boolean;
5889
+ }) => void;
5890
+ /** Pre-checked state for uncontrolled usage */
5891
+ checked?: boolean;
5892
+ /** Render as 'switch' (default) or 'checkbox' with inline label */
5893
+ displayAs?: 'switch' | 'checkbox';
5894
+ /** Layout direction: 'column' (label above, default) or 'row' (label + switch inline, space-between) */
5895
+ direction?: 'row' | 'column';
5896
+ /** For passing any extra props to underlying libs */
5897
+ localProps?: any;
5898
+ /** Ref forwarding */
5899
+ ref?: Ref<any>;
5900
+ }
5901
+
5902
+ export interface IKitsInputPassword extends Omit<IFormSingleElement, 'onChange'> {
5903
+ value?: string;
5904
+ defaultValue?: string;
5905
+ onChange?: (e: {
5906
+ target: {
5907
+ value: string;
5908
+ };
5909
+ value?: string;
5910
+ }) => void;
5911
+ promptLabel?: string;
5912
+ weakLabel?: string;
5913
+ mediumLabel?: string;
5914
+ strongLabel?: string;
5915
+ header?: ReactElement;
5916
+ footer?: ReactElement;
5917
+ feedback?: boolean;
5918
+ toggleEye?: boolean;
5919
+ showStrengthProgress?: boolean;
5920
+ localProps?: any;
5921
+ schema?: Yup.Schema | Yup.AnySchema;
5922
+ ref?: Ref<any>;
5923
+ /** Custom icon shown when password is hidden (native only; web uses PrimeReact's built-in icon) */
5924
+ eyeIcon?: ReactNode;
5925
+ /** Custom icon shown when password is visible (native only; web uses PrimeReact's built-in icon) */
5926
+ eyeSlashIcon?: ReactNode;
5927
+ }
5928
+
5929
+ export interface IKitsInputCalendar<T = any> extends IFormSingleElement {
5930
+ value?: Date | Date[] | null;
5931
+ defaultValue?: Date | Date[] | null;
5932
+ onChange?: (val: Date | Date[] | null) => void;
5933
+ placeholder?: string;
5934
+ localProps?: Omit<T, 'value' | 'onChange'> | {
5935
+ dateFormat?: string;
5936
+ placeholder?: string;
5937
+ selectionMode?: "range" | "single";
5938
+ view?: "date";
5939
+ numberOfMonths?: number;
5940
+ };
5941
+ }
5942
+
5860
5943
  export type ICascadeSelect = ICascadeSelectCore<ViewStyle, any>;
5861
5944
  export type IDropdownSelect = IDropdownCore<ViewStyle, any>;
5862
5945
  export type IMultiSelect = IMultiSelectCore<ViewStyle, any>;
@@ -15773,4 +15856,4 @@ declare const localeFiles: {
15773
15856
  };
15774
15857
 
15775
15858
  export { ALPHA_COLOR_VARS, ALPHA_STEPS, ALPHA_TOKEN_NAMES, AccentEdge, CustomAccordion as Accordion, ActionCard, Alert, AlertDescription, AlertIcon, AlertTitle, KitsAnimatePresence as AnimatePresence, AnyFile, Avatar, AvatarStack, Badge, Banner, BottomTabBar, Box, BreadCrumb, BreadcrumbProvider, Button, Card, Carousel, Center, ChatBubble, Chip, CircularProgress, Collapse, CommandPalette, Container, CustomPopover, DEFAULT_NATIVE_SHADOWS, DataView, DataViewContext, DateSeparator, Delta, DetailList as DetailsList, Divider, Donut, DotGrid, EDateFormat, EKeyFilter, Editable, EmptyState, FIELD_LABEL_MARGIN, FIELD_MARGIN, Flex, Form, FormSelect, GUTTER, Gallery, Gauge, Form as GoForm, Datatable as GoTable, KitsGrid as Grid, KitsGridItem as GridItem, GroupedBars, HELPER_TEXT_MARGIN, HStack, Heading, Icon, IconMap, Image, ImageCropper, KitsInputSwitch as InputSwitch, KeyboardNavContext, KitsAutoComplete, KitsBarChart, KitsCascadeSelect, KitsCheckbox as KitsCheckboxes, KitsConfirm, KitsConfirmPopup, KitsContainer, KitsInputCalendar as KitsDatepicker, KitsDialogControlled as KitsDialog, KitsDropdown, FilePicker as KitsFilePicker, KitsInputColorPicker, KitsInputLocation, KitsInputMask, KitsInputNumber, KitsInputPassword, KitsInputText, KitsInputTextarea, KitsLineChart, KitsListBox, KitsMultiSelect, KitsPhoneComponent, KitsRadar, KitsRadio as KitsRadios, RadiusPicker as KitsRadiusPicker, KitsSliders, KitsThemeProvider, KitsToast, KitsTreeSelect, Label, Legend, Link, List, ListItem, Loader, LocaleContext, LocaleContextProvider, MainContext, MainContextProvider, MapTile, MessageComposer, MessageReceipt, MetricCard, KitsMultiSelect as MultiSelect, PermissionsProvider, PersonCard, ProgressBar, RadiusPicker, RankedList, ReducedMotionProvider, Rise, SEMANTIC_TOKEN_NAMES, SHADOW_PRESET_KEYS, SPACER, KitsScrollView as ScrollView, SegmentedControl, FormSelect as Select, SelectButton, Skeleton$1 as Skeleton, SkeletonRows, Skeleton as SkeletonText, Sparkline, StackedBars, StatCard, StatGroup, StatePill, StatusCard, Stepper, Striped, Svg, TableContext, Tabs, Text, ThemeContextProvider, Timeline, Tip, Tooltip, Translate, KitsTreeSelect as TreeSelect, TreeView, TriStateCheckbox, TypingIndicator, VStack, Wash, WidgetPanel, borderProperties, breakpoints, capitalizeFirstLetter, checkExtAgainstAccepted, checkNameDuplication, colorWithAlpha, dateTimeFormat, deepMerge, defaultSeverityTheme, defaultTheme, downloadCanvas, dynamicList, expandShadowNative, extendTheme, fileTypeIcon, fileValidation, filesExt, filesMemes, filesTypes, flattenSlotStyles, fontSizeMapping, formFileValidation, formatNumber, getActiveNativeShadows, getCombinedChildIds, getCustomDateTime, getDateElements, getDefaultValues, getMeme, getParams, getPropertyByPath, getType, getTypes, getURLParams, hasCropEncoder, imagesExt, imagesMemes, imagesTypes, isAlphaToken, isNumber, isSemanticToken, isShadowPreset, isThemeToken, isToday, isValidURL, kitsMotion, listingProperties, localeFiles, allProperties as mapCssProperties, mergeRefs, nonPxProperties, propertiesWithoutCssEquivalent, pxProperties, resolveStyleRecord, resolveTokenValue, schemaBuilder, setActiveNativeShadows, setCropEncoder, shadowNative, shadowWeb, sizeMapping, sizingProperties, timeAgo, timeSince, toMemes, useAllSeverityColors, useBreadcrumb, useBreadcrumbTrail, useComponentDefaults, useCountUp, useDataView, useDialog, useDisclosure, useEnter, useFieldLogic, useFocusStyles, useFormFieldKeyboardNav, useFormManager, useKeyboardNav, useKeyboardNavProvider, useKitsColorScheme, useKitsConcerto, useKitsTheme, useLanguage, useMeasuredWidth, useNativeColorMap, usePermissions, usePopup, useReducedMotion, useResolvedElementStyles, useResolvedStyle, useRtlLineHeight, useScrollState, useSelectionController, useSeverityColors, useTable, useTheme, useThemedFont, useToast };
15776
- export type { AlignmentsValues, AllSlotKeys, AnimationsValues, AvatarShape, AvatarSize, AvatarStatus, BannerAction, BannerStatus, BaseFieldProps, Booleanish, Breakpoint, CallbackProps, ChatBubbleTone, ChatBubbleVariant, ChipSeverity, ChipSize, ColorMode, ColorScale, ColorValue, Colors, ColorsType, ComponentSize, CropAspect, CropErrorReason, CropHandle, CropMaskShape, CropOutputFormat, CropRotation, CustomSubmitButtonProps, DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData, DataTableSelectionSingleChangeEvent, DataTableSortMeta, DeepPartial, DetailItemInputType, DynamicValue, ElementProps, EnteringAnimation, ExitingAnimation, ExpandedKeys, FetchError, FetchSuccess, FetchTableDataRes, FetchTablePaginationData, FieldWrapperProps, File$1 as File, FileUploaderTemplate, FileUploaderTemplateParams, FlexAlignmentsValues, FlexValues, FormBooleanEvent, FormBooleanTarget, FormEvent, FormTarget, GroupFieldConfigs, HighSizingValue, IAccentEdgeProps, IAccordionElementSlots, IAccordionProps, IActionCardProps, IAddressComponentValue, IAddressExperianFormat, IAddressFormat, IAddressFormatResults, IAddressSearchResults, IAlertComponent, IAlertProps, IAlignment, IAnimation, IAutoCompleteCore, IAutoCompleteElement, IAvatarElementSlots, IAvatarProps, IAvatarStackElementSlots, IAvatarStackProps, IBadgeProps, IBannerProps, IBarChartProps, IBaseValidation, IBasicSectionProps, IBg, IBodyTemplate, IBodyTemplateIcon, IBorder, IBottomTabBarElementSlots, IBottomTabBarProps, IBoxComponent, IBreadcrumbCrumb, IBreadcrumbProps, IBuilderAddressField, IBuilderCheckboxField, IBuilderContainerField, IBuilderDateField, IBuilderField, IBuilderFieldBase, IBuilderFieldExport, IBuilderFileField, IBuilderGroupField, IBuilderMultiselectField, IBuilderNumberField, IBuilderPhoneField, IBuilderRadiosField, IBuilderRadiusPickerField, IBuilderSectionField, IBuilderSelectField, IBuilderSwitchField, IBuilderTagsField, IBuilderTextField, IBuilderTextareaField, IButton, IButtonElementSlots, IButtonParams, IButtonProps, IButtonState, IButtonsFilter, ICanvasProps, ICardComponent, ICardElementSlots, ICarouselElementSlots, ICarouselProps, ICascadeSelect, ICascadeSelectCore, IChatBubbleElementSlots, IChatBubbleProps, ICheckbox, ICheckboxFilter, ICheckboxSlots, IChildren, IChildrenParams, IChipInputSlots, IChipProps, ICircularProgressProps, ICollapseProps, IColorPicker, IColumn, IColumnBase, ICombined, ICommandPaletteGroup, ICommandPaletteItem, ICommandPaletteProps, IComponentThemeConfig, IConditionGroupProps, IConditionRowProps, IConditionRule, IConditionsSectionProps, IConfirmDialogProps, IConfirmPopupProps, IContainer, IContainerCardProps, IContainerProps, IContextValues, ICountrySearchResults, ICropEncoder, ICropError, ICropFrame, ICropOutput, ICropPoint, ICropRect, ICropResizeOptions, ICropResult, ICropSize, ICropTransform, ICssStyling, IDVButtonsFilter, IDVCheckboxFilter, IDVDateFilter, IDVDropdownFilter, IDVFilters, IDVMessages, IDVMultiselectFilter, IDVNumberFilter, IDVPaginationRequest, IDVPaginationResponse, IDVPaginationState, IDVPhoneFilter, IDVRangeFilter, IDVTextFilter, IDVTriStateFilter, IDataTableContextValues, IDataTableProps, IDataViewContextValues, IDataViewProps, IDataViewRefValues, IDatatableRefValues, IDate, IDateFilter, IDateProps, IDateSeparatorElementSlots, IDateSeparatorProps, IDateValidation, IDatepickerSlots, IDeltaProps, IDetailItem, IDetailListProps, IDialogButton, IDialogProps, IDialogRef, IDialogState, IDisplay, IDividerComponent, IDonutProps, IDonutSegment, IDotGridProps, IDoughnutChartProps, IDropdownCore, IDropdownFilter, IDropdownSelect, IEditableProps, IEditors, IEffects, IElementBase, IElementSlotConfig, IElementStyle, IEmail, IEmailSearchResults, IEmptyStateElementSlots, IEmptyStateProps, IFieldCardProps, IFieldCondition, IFieldPreviewProps, IFile, IFileUploader, IFileUploaderElement, IFileUploaderTypes, IFileValidation, IFilesExtTypeKeys, IFilters, IFlexAlignment, IFlexComponent, IFormAddon, IFormBuilderInternalState, IFormBuilderMeta, IFormBuilderPayload, IFormBuilderProps, IFormComponent, IFormElement, IFormElementBaseSlots, IFormElementSlots, IFormGrid, IFormListsElements, IFormSelect, IFormSelectElements, IFormSingleElement, IGalleryElementSlots, IGalleryItem, IGalleryProps, IGaugeProps, IGrid, IGridCellStyle, IGridComponent, IGridItem, IGridItemComponent, IGroup, IGroupCardProps, IGroupElementSlots, IGroupSettings, IGroupedBarsDatum, IGroupedBarsProps, IHeaderElementSlots, IHeadingComponent, IIconProps, IImageComponent, IImageCropperHandle, IImageCropperProps, IImageCropperSlots, IImagesExtTypeKeys, IInteractivity, IKeyedColumn, IKitsAnimation, IKitsBarChartDatum, IKitsBarChartProps, IKitsCheckboxProps, IKitsComponentDefaults, IKitsContainer, IKitsDialogControlled, IKitsInputCalendar, IKitsInputColorPicker, IKitsInputLocation, IKitsInputMask, IKitsInputNumber, IKitsInputPassword, IKitsInputRating, IKitsInputSwitch, IKitsInputText, IKitsInputTextarea, IKitsLineChartProps, IKitsLineChartSeries, IKitsPhoneInput, IKitsRadioProps, IKitsTheme, IKitsThemeColors, IKitsThemeConfig, IKitsThemeContextValues, IKitsThemeFontSizes, IKitsThemeFontWeights, IKitsThemeFonts, IKitsThemeLineHeights, IKitsThemeRadii, IKitsThemeShadows, IKitsThemeSpacing, IKitsToastRef, ILabelElement, ILabelProps, ILanguage, ILayout, ILegendItem, ILegendProps, ILineChartProps, ILinkComponent, ILinkOverrides, IList, IListBoxCore, IListBoxElement, IListBoxSelect, IListItem, IListing, ILoaderProps, ILoadingIndicatorContext, ILocaleContextProps, ILocaleContextValues, ILocation, ILocationDetailsResponse, ILocationResponse, IMainContextProps, IMainContextValues, IMapTilePoint, IMapTileProps, IMemes, IMenuItem, IMessageComposerElementSlots, IMessageComposerProps, IMessageReceiptElementSlots, IMessageReceiptProps, IMessages, IMetricCardProps, IMinusButton, IModalComponent, IModalFormProps, IMultiSelect, IMultiSelectCore, IMultiSelectSlots, IMultiselect, IMultiselectFilter, INativeShadow, INonCrossPlatformTypes, INumberFilter, INumberInput, INumberProps, INumberValidation, IObjectGroup, IOneOfTypes, IOptionItem, IOptionsEditorProps, IOptionsSource, IPageISection, IPaginationRequest, IPaginationResponse, IPaginatorLabels, IPaletteItemProps, IPaletteProps, IPanelCustomSlot, IPassword, IPasswordProps, IPersonCardProps, IPhone, IPhoneFilter, IPhoneObjectValue, IPhoneValidationResults, IPhoneValue, IPieChartProps, IPlusButton, IPolarAreaChartProps, IPopoverProps, IProgressBarElementSlots, IProgressBarProps, IPropertiesPanelProps, IRTLDetection, IRadarChartProps, IRadarProps, IRadarSeries, IRadioCheckboxListItem, IRadioGroup, IRadioSlots, IRadiusPickerEvents, IRadiusPickerField, IRadiusPickerI18n, IRadiusPickerProps, IRangeFilter, IRankedListProps, IRankedListRow, IRef, IRepeatableSettings, IResponsiveElement, IRiseProps, ISVGComponent, IScrollViewComponent, ISegmentedControlOption, ISegmentedControlProps, ISelect, ISelectBase, ISelectCore, ISelectElement, ISelectSlots, ISelectType, ISelectedFile, ISelectedFileType, ISelectionValidation, ISeverityColorSlots, ISeverityThemeMap, IShadowDefinition, IShadowValue, ISidebarElementSlots, ISizing, ISkeleton, ISkeletonRowsProps, ISkeletonText, ISliderProps, ISpacing, ISparklineProps, IStackProps, IStackedBarsDatum, IStackedBarsProps, IStatCardElementSlots, IStatCardProps, IStatGroupElementSlots, IStatGroupProps, IStatePillProps, IStatisticsProps, IStats, IStatusCardProps, IStepperElementSlots, IStepperProps, IStripedProps, IStyleClasses, ISwitch, ISwitchSlots, ITabBarItem, ITabItem, ITableElementSlots, ITableFlatConfig, ITabsElementSlots, ITabsProps, ITags, IText, ITextComponent, ITextFieldProps, ITextFilter, ITextInput, ITextInputProps, ITextInputSlots, ITextValidation, ITextarea, IThemeContextProps, IThemeContextValues, ITimelineElementSlots, ITimelineItem, ITimelineProps, ITipProps, IToastAction, IToastFunction, IToastOptions, IToastParams, IToolbarProps, ITransforms, ITransition, ITranslatableInputProps, ITranslatableText, ITranslateComponent, ITreeItem, ITreeSelect, ITreeSelectCore, ITreeSelectElement, ITreeSelectNode, ITreeViewProps, ITriStateFilter, ITypingIndicatorElementSlots, ITypingIndicatorProps, IUnkeyedColumn, IUseCountUpOptions, IUseFormReturn, IUserAvatar, IValidationSectionProps, IWashProps, IWidgetBarIncomingProp, IWidgetChartContextProps, IWidgetChartProp, IWidgetData, IWidgetDoughnutIncomingProp, IWidgetLineIncomingProp, IWidgetPanelProps, IWidgetPieIncomingProp, IWidgetPolarAreaIncomingProp, IWidgetRadarIncomingProp, IconName, IconType, InputTextFieldProps, KitsBreakpoint, KitsConditionalObject, KitsDevice, KitsMotion, KitsOrientation, KitsPlatform, KitsResponsiveObject, KitsResponsiveValue, KitsThemeOverride, LabelVariant, LatLng, LoadMode, LoadingIndicatorRenderer, LogicFunction, MapInteraction, MeasurementValues, MessageReceiptState, Nullable, Numbering0_12, Numbering0_32, Numberish, OnCenterChange, OnLocationError, OnLocationFound, OnRadiusChange, OnRadiusValueChange, OnSubmitHandler, OnUnitChange, Orientation, PaginationState, PaginatorPageChangeEvent$1 as PaginatorPageChangeEvent, Permissions, PlatformKey, RadiusPickerDisplay, RadiusPickerLayout, RadiusPickerSize, RadiusUnit, RadiusValue, RenderLocationButtonProps, RenderMapProps, RenderSearchBoxProps, SelectFieldProps, SemanticColorTokens, ServerMethod, ServerResponse, ServerSideProps, SetManyOpts, Severity, Shades, ShadowPreset, Shapes, SidesValues, SizingNumbering, SizingValue, StatePillState, StepperVariant, TAcceptedFileType, TBuilderFieldType, TCheckboxRadioMode, TCheckboxRadioSize, TConditionAction, TConditionMatch, TConditionOperator, TDateBoundary, TDynamicFlag, TExternalFilterLabelMode, TFiltersLayout, TIsoFormat, TItemsPerRow, TKeyFilter, TLocationProvider, TPaginatorAlign, TextLabels, TextProps, ThemedFontKind, TimelineItemStatus, Timeout, TimingNumbering, ToastPosition, ToastSeverity, ToastSize, TooltipDataAttributes, TooltipProps, TreeChangeProps, TreeCheckboxSelectionKeyType, TreeCheckboxSelectionKeys, TreeNode, TreeNodeClickEvent, TreeNodeTemplateOptions, TreeProps, TreeRef, TreeSelectionEvent, Types, UseComponentDefaultsResult, UseDisclosureReturnType, UseFieldLogicElementProps, UseFieldLogicProps, UseFieldLogicReturn, UseFormManagerEvents, UseFormManagerReturn, UseToastApi, ValidationProps, children, clearFunction, downloadableFileResponse, settings1, settings2 };
15859
+ export type { AlignmentsValues, AllSlotKeys, AnimationsValues, AvatarShape, AvatarSize, AvatarStatus, BannerAction, BannerStatus, BaseFieldProps, Booleanish, Breakpoint, CallbackProps, ChatBubbleTone, ChatBubbleVariant, ChipSeverity, ChipSize, ColorMode, ColorScale, ColorValue, Colors, ColorsType, ComponentSize, CropAspect, CropErrorReason, CropHandle, CropMaskShape, CropOutputFormat, CropRotation, CustomSubmitButtonProps, DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData, DataTableSelectionSingleChangeEvent, DataTableSortMeta, DeepPartial, DetailItemInputType, DynamicValue, ElementProps, EnteringAnimation, ExitingAnimation, ExpandedKeys, FetchError, FetchSuccess, FetchTableDataRes, FetchTablePaginationData, FieldWrapperProps, File$1 as File, FileUploaderTemplate, FileUploaderTemplateParams, FlexAlignmentsValues, FlexValues, FormBooleanEvent, FormBooleanTarget, FormEvent, FormTarget, GroupFieldConfigs, HighSizingValue, IAccentEdgeProps, IAccordionElementSlots, IAccordionProps, IActionCardProps, IAddressComponentValue, IAddressExperianFormat, IAddressFormat, IAddressFormatResults, IAddressSearchResults, IAlertComponent, IAlertProps, IAlignment, IAnimation, IAutoCompleteCore, IAutoCompleteElement, IAvatarElementSlots, IAvatarProps, IAvatarStackElementSlots, IAvatarStackProps, IBadgeProps, IBannerProps, IBarChartProps, IBaseValidation, IBasicSectionProps, IBg, IBodyTemplate, IBodyTemplateIcon, IBorder, IBottomTabBarElementSlots, IBottomTabBarProps, IBoxComponent, IBreadcrumbCrumb, IBreadcrumbProps, IBuilderAddressField, IBuilderCheckboxField, IBuilderContainerField, IBuilderDateField, IBuilderField, IBuilderFieldBase, IBuilderFieldExport, IBuilderFileField, IBuilderGroupField, IBuilderMultiselectField, IBuilderNumberField, IBuilderPhoneField, IBuilderRadiosField, IBuilderRadiusPickerField, IBuilderSectionField, IBuilderSelectField, IBuilderSwitchField, IBuilderTagsField, IBuilderTextField, IBuilderTextareaField, IButton, IButtonElementSlots, IButtonParams, IButtonProps, IButtonState, IButtonsFilter, ICanvasProps, ICardComponent, ICardElementSlots, ICarouselElementSlots, ICarouselProps, ICascadeSelect, ICascadeSelectCore, IChatBubbleElementSlots, IChatBubbleProps, ICheckbox, ICheckboxFilter, ICheckboxSlots, IChildren, IChildrenParams, IChipInputSlots, IChipProps, ICircularProgressProps, ICollapseProps, IColorPicker, IColumn, IColumnBase, ICombined, ICommandPaletteGroup, ICommandPaletteItem, ICommandPaletteProps, IComponentThemeConfig, IConditionGroupProps, IConditionRowProps, IConditionRule, IConditionsSectionProps, IConfirmDialogProps, IConfirmPopupProps, IContainer, IContainerCardProps, IContainerProps, IContextValues, ICountrySearchResults, ICropEncoder, ICropError, ICropFrame, ICropOutput, ICropPoint, ICropRect, ICropResizeOptions, ICropResult, ICropSize, ICropTransform, ICssStyling, IDVButtonsFilter, IDVCheckboxFilter, IDVDateFilter, IDVDropdownFilter, IDVFilters, IDVMessages, IDVMultiselectFilter, IDVNumberFilter, IDVPaginationRequest, IDVPaginationResponse, IDVPaginationState, IDVPhoneFilter, IDVRangeFilter, IDVTextFilter, IDVTriStateFilter, IDataTableContextValues, IDataTableProps, IDataViewContextValues, IDataViewProps, IDataViewRefValues, IDatatableRefValues, IDate, IDateFilter, IDateProps, IDateSeparatorElementSlots, IDateSeparatorProps, IDateValidation, IDatepickerSlots, IDeltaProps, IDetailItem, IDetailListProps, IDialogButton, IDialogProps, IDialogRef, IDialogState, IDisplay, IDividerComponent, IDonutProps, IDonutSegment, IDotGridProps, IDoughnutChartProps, IDropdownCore, IDropdownFilter, IDropdownSelect, IEditableProps, IEditors, IEffects, IElementBase, IElementSlotConfig, IElementStyle, IEmail, IEmailSearchResults, IEmptyStateElementSlots, IEmptyStateProps, IFieldCardProps, IFieldCondition, IFieldPreviewProps, IFile, IFileUploader, IFileUploaderElement, IFileUploaderTypes, IFileValidation, IFilesExtTypeKeys, IFilters, IFlexAlignment, IFlexComponent, IFormAddon, IFormBuilderInternalState, IFormBuilderMeta, IFormBuilderPayload, IFormBuilderProps, IFormComponent, IFormElement, IFormElementBaseSlots, IFormElementSlots, IFormGrid, IFormListsElements, IFormSelect, IFormSelectElements, IFormSingleElement, IGalleryElementSlots, IGalleryItem, IGalleryProps, IGaugeProps, IGrid, IGridCellStyle, IGridComponent, IGridItem, IGridItemComponent, IGroup, IGroupCardProps, IGroupElementSlots, IGroupSettings, IGroupedBarsDatum, IGroupedBarsProps, IHeaderElementSlots, IHeadingComponent, IIconProps, IImageComponent, IImageCropperHandle, IImageCropperProps, IImageCropperSlots, IImagesExtTypeKeys, IInteractivity, IKeyedColumn, IKitsAnimation, IKitsBarChartDatum, IKitsBarChartProps, IKitsCheckboxProps, IKitsComponentDefaults, IKitsContainer, IKitsDialogControlled, IKitsInputCalendar, IKitsInputColorPicker, IKitsInputLocation, IKitsInputMask, IKitsInputNumber, IKitsInputPassword, IKitsInputRating, IKitsInputSwitch, IKitsInputText, IKitsInputTextarea, IKitsLineChartProps, IKitsLineChartSeries, IKitsPhoneInput, IKitsRadioProps, IKitsTheme, IKitsThemeColors, IKitsThemeConfig, IKitsThemeContextValues, IKitsThemeFontSizes, IKitsThemeFontWeights, IKitsThemeFonts, IKitsThemeLineHeights, IKitsThemeRadii, IKitsThemeShadows, IKitsThemeSpacing, IKitsToastRef, ILabelElement, ILabelProps, ILanguage, ILayout, ILegendItem, ILegendProps, ILineChartProps, ILinkComponent, ILinkOverrides, IList, IListBoxCore, IListBoxElement, IListBoxSelect, IListItem, IListing, ILoaderProps, ILoadingIndicatorContext, ILocaleContextProps, ILocaleContextValues, ILocation, ILocationDetailsResponse, ILocationResponse, IMainContextProps, IMainContextValues, IMapTilePoint, IMapTileProps, IMemes, IMenuItem, IMessageComposerElementSlots, IMessageComposerProps, IMessageReceiptElementSlots, IMessageReceiptProps, IMessages, IMetricCardProps, IMinusButton, IModalComponent, IModalFormProps, IMultiSelect, IMultiSelectCore, IMultiSelectSlots, IMultiselect, IMultiselectFilter, INativeShadow, INonCrossPlatformTypes, INumberFilter, INumberInput, INumberProps, INumberValidation, IObjectGroup, IOneOfTypes, IOptionItem, IOptionsEditorProps, IOptionsSource, IPageISection, IPaginationRequest, IPaginationResponse, IPaginatorLabels, IPaletteItemProps, IPaletteProps, IPanelCustomSlot, IPassword, IPasswordProps, IPersonCardProps, IPhone, IPhoneFilter, IPhoneObjectValue, IPhoneValidationResults, IPhoneValue, IPieChartProps, IPlusButton, IPolarAreaChartProps, IPopoverProps, IProgressBarElementSlots, IProgressBarProps, IPropertiesPanelProps, IRTLDetection, IRadarChartProps, IRadarProps, IRadarSeries, IRadioCheckboxListItem, IRadioGroup, IRadioSlots, IRadiusPickerEvents, IRadiusPickerField, IRadiusPickerI18n, IRadiusPickerProps, IRangeFilter, IRankedListProps, IRankedListRow, IRef, IRepeatableSettings, IResponsiveElement, IRiseProps, ISVGComponent, IScrollViewComponent, ISegmentedControlOption, ISegmentedControlProps, ISelect, ISelectBase, ISelectCore, ISelectElement, ISelectSlots, ISelectType, ISelectedFile, ISelectedFileType, ISelectionValidation, ISeverityColorSlots, ISeverityThemeMap, IShadowDefinition, IShadowValue, ISidebarElementSlots, ISizing, ISkeleton, ISkeletonRowsProps, ISkeletonText, ISliderProps, ISpacing, ISparklineProps, IStackProps, IStackedBarsDatum, IStackedBarsProps, IStatCardElementSlots, IStatCardProps, IStatGroupElementSlots, IStatGroupProps, IStatePillProps, IStatisticsProps, IStats, IStatusCardProps, IStepperElementSlots, IStepperProps, IStripedProps, IStyleClasses, ISwitch, ISwitchSlots, ITabBarItem, ITabItem, ITableElementSlots, ITableFlatConfig, ITabsElementSlots, ITabsProps, ITags, IText, ITextComponent, ITextFieldProps, ITextFilter, ITextInput, ITextInputProps, ITextInputSlots, ITextValidation, ITextarea, IThemeContextProps, IThemeContextValues, ITimelineElementSlots, ITimelineItem, ITimelineProps, ITipProps, IToastAction, IToastFunction, IToastOptions, IToastParams, IToolbarProps, ITransforms, ITransition, ITranslatableInputProps, ITranslatableText, ITranslateComponent, ITreeItem, ITreeSelect, ITreeSelectCore, ITreeSelectElement, ITreeSelectNode, ITreeViewProps, ITriStateFilter, ITypingIndicatorElementSlots, ITypingIndicatorProps, IUnkeyedColumn, IUseCountUpOptions, IUseFormReturn, IUserAvatar, IValidationSectionProps, IWashProps, IWidgetBarIncomingProp, IWidgetChartContextProps, IWidgetChartProp, IWidgetData, IWidgetDoughnutIncomingProp, IWidgetLineIncomingProp, IWidgetPanelProps, IWidgetPieIncomingProp, IWidgetPolarAreaIncomingProp, IWidgetRadarIncomingProp, IconName, IconType, InputTextFieldProps, KitsBreakpoint, KitsConditionalObject, KitsDevice, KitsMotion, KitsOrientation, KitsPlatform, KitsResponsiveObject, KitsResponsiveValue, KitsThemeOverride, LabelVariant, LatLng, LoadMode, LoadingIndicatorRenderer, LogicFunction, MapInteraction, MeasurementValues, MessageReceiptState, Nullable, Numbering0_12, Numbering0_32, Numberish, OnCenterChange, OnLocationError, OnLocationFound, OnRadiusChange, OnRadiusValueChange, OnSubmitHandler, OnUnitChange, Orientation, PaginationState, PaginatorPageChangeEvent$1 as PaginatorPageChangeEvent, Permissions, PlatformKey, RadiusPickerDisplay, RadiusPickerLayout, RadiusPickerSize, RadiusUnit, RadiusValue, RenderLocationButtonProps, RenderMapProps, RenderSearchBoxProps, SelectFieldProps, SemanticColorTokens, ServerMethod, ServerResponse, ServerSideProps, SetManyOpts, Severity, Shades, ShadowPreset, Shapes, SidesValues, SizingNumbering, SizingValue, StatePillState, StepperVariant, TAcceptedFileType, TBuilderFieldType, TCheckboxRadioMode, TCheckboxRadioSize, TConditionAction, TConditionMatch, TConditionOperator, TDateBoundary, TDynamicFlag, TExternalFilterLabelMode, TFiltersLayout, TIsoFormat, TItemsPerRow, TKeyFilter, TLocationProvider, TPaginatorAlign, TSelectItemKind, TextLabels, TextProps, ThemedFontKind, TimelineItemStatus, Timeout, TimingNumbering, ToastPosition, ToastSeverity, ToastSize, TooltipDataAttributes, TooltipProps, TreeChangeProps, TreeCheckboxSelectionKeyType, TreeCheckboxSelectionKeys, TreeNode, TreeNodeClickEvent, TreeNodeTemplateOptions, TreeProps, TreeRef, TreeSelectionEvent, Types, UseComponentDefaultsResult, UseDisclosureReturnType, UseFieldLogicElementProps, UseFieldLogicProps, UseFieldLogicReturn, UseFormManagerEvents, UseFormManagerReturn, UseToastApi, ValidationProps, children, clearFunction, downloadableFileResponse, settings1, settings2 };