@formitiva/react 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.full.md +456 -0
  3. package/README.md +114 -0
  4. package/dist/components/fields/advanced/ColorInput.d.ts +5 -0
  5. package/dist/components/fields/advanced/EmailInput.d.ts +6 -0
  6. package/dist/components/fields/advanced/FileInput.d.ts +5 -0
  7. package/dist/components/fields/advanced/PasswordInput.d.ts +6 -0
  8. package/dist/components/fields/advanced/PhoneInput.d.ts +7 -0
  9. package/dist/components/fields/advanced/RatingInput.d.ts +9 -0
  10. package/dist/components/fields/advanced/SliderInput.d.ts +5 -0
  11. package/dist/components/fields/advanced/UnitValueInput.d.ts +5 -0
  12. package/dist/components/fields/advanced/UrlInput.d.ts +9 -0
  13. package/dist/components/fields/base/PopupOptionMenu.d.ts +16 -0
  14. package/dist/components/fields/base/Tooltip.d.ts +8 -0
  15. package/dist/components/fields/choices/CheckboxInput.d.ts +5 -0
  16. package/dist/components/fields/choices/DropdownInput.d.ts +8 -0
  17. package/dist/components/fields/choices/MultiSelection.d.ts +9 -0
  18. package/dist/components/fields/choices/RadioInput.d.ts +8 -0
  19. package/dist/components/fields/choices/SwitchInput.d.ts +5 -0
  20. package/dist/components/fields/date-time/DateInput.d.ts +6 -0
  21. package/dist/components/fields/date-time/TimeInput.d.ts +6 -0
  22. package/dist/components/fields/text-numeric/FloatArrayInput.d.ts +5 -0
  23. package/dist/components/fields/text-numeric/FloatInput.d.ts +9 -0
  24. package/dist/components/fields/text-numeric/IntegerArrayInput.d.ts +6 -0
  25. package/dist/components/fields/text-numeric/IntegerInput.d.ts +6 -0
  26. package/dist/components/fields/text-numeric/MultilineTextInput.d.ts +6 -0
  27. package/dist/components/fields/text-numeric/NumericStepperInput.d.ts +6 -0
  28. package/dist/components/fields/text-numeric/TextInput.d.ts +8 -0
  29. package/dist/components/fields/ui-elements/Button.d.ts +14 -0
  30. package/dist/components/fields/ui-elements/Description.d.ts +10 -0
  31. package/dist/components/fields/ui-elements/ImageDisplay.d.ts +5 -0
  32. package/dist/components/fields/ui-elements/Separator.d.ts +21 -0
  33. package/dist/components/form/Formitiva.d.ts +16 -0
  34. package/dist/components/form/FormitivaProvider.d.ts +18 -0
  35. package/dist/components/form/FormitivaRenderer.d.ts +20 -0
  36. package/dist/components/form/SubmissionButton.d.ts +8 -0
  37. package/dist/components/form/SubmissionMessage.d.ts +7 -0
  38. package/dist/components/layout/FieldGroup.d.ts +16 -0
  39. package/dist/components/layout/FieldRenderer.d.ts +14 -0
  40. package/dist/components/layout/LayoutComponents.d.ts +77 -0
  41. package/dist/core/env.d.ts +1 -0
  42. package/dist/core/fieldVisibility.d.ts +13 -0
  43. package/dist/core/formitivaModel.d.ts +31 -0
  44. package/dist/core/formitivaTypes.d.ts +128 -0
  45. package/dist/core/registries/baseRegistry.d.ts +15 -0
  46. package/dist/core/registries/buttonHandlerRegistry.d.ts +44 -0
  47. package/dist/core/registries/componentRegistry.d.ts +15 -0
  48. package/dist/core/registries/pluginRegistry.d.ts +45 -0
  49. package/dist/core/registries/submissionHandlerRegistry.d.ts +7 -0
  50. package/dist/core/registries/validationHandlerRegistry.d.ts +20 -0
  51. package/dist/core/submitForm.d.ts +9 -0
  52. package/dist/formitiva.cjs.js +404 -0
  53. package/dist/formitiva.es.js +5626 -0
  54. package/dist/hooks/useDebouncedCallback.d.ts +27 -0
  55. package/dist/hooks/useDropdownPosition.d.ts +6 -0
  56. package/dist/hooks/useFieldValidator.d.ts +3 -0
  57. package/dist/hooks/useFormitivaContext.d.ts +4 -0
  58. package/dist/hooks/useUncontrolledValidatedInput.d.ts +21 -0
  59. package/dist/hooks/useUnitValueField.d.ts +13 -0
  60. package/dist/index.d.ts +27 -0
  61. package/dist/react.css +1 -0
  62. package/dist/styles/cssClasses.d.ts +15 -0
  63. package/dist/styles/themeUtils.d.ts +31 -0
  64. package/dist/themes/ant-design-dark.css +31 -0
  65. package/dist/themes/ant-design.css +42 -0
  66. package/dist/themes/blueprint-dark.css +31 -0
  67. package/dist/themes/blueprint.css +43 -0
  68. package/dist/themes/compact-variant.css +8 -0
  69. package/dist/themes/fluent.css +40 -0
  70. package/dist/themes/glass-morphism.css +25 -0
  71. package/dist/themes/high-contrast-accessible.css +22 -0
  72. package/dist/themes/ios-mobile.css +32 -0
  73. package/dist/themes/macos-native.css +32 -0
  74. package/dist/themes/material-dark.css +27 -0
  75. package/dist/themes/material.css +46 -0
  76. package/dist/themes/midnight-dark.css +24 -0
  77. package/dist/themes/modern-light.css +23 -0
  78. package/dist/themes/neon-cyber-dark.css +24 -0
  79. package/dist/themes/shadcn.css +40 -0
  80. package/dist/themes/soft-pastel.css +24 -0
  81. package/dist/themes/spacious-variant.css +9 -0
  82. package/dist/themes/tailwind-dark.css +30 -0
  83. package/dist/themes/tailwind.css +50 -0
  84. package/dist/utils/definitionSerializers.d.ts +62 -0
  85. package/dist/utils/groupingHelpers.d.ts +24 -0
  86. package/dist/utils/translationUtils.d.ts +52 -0
  87. package/dist/utils/unitValueMapper.d.ts +14 -0
  88. package/dist/validation/registerBuiltinTypeValidators.d.ts +11 -0
  89. package/dist/validation/validation.d.ts +12 -0
  90. package/dist/validation/validators/validateColorField.d.ts +2 -0
  91. package/dist/validation/validators/validateDateField.d.ts +2 -0
  92. package/dist/validation/validators/validateEmailField.d.ts +2 -0
  93. package/dist/validation/validators/validateFieldPattern.d.ts +3 -0
  94. package/dist/validation/validators/validateFileField.d.ts +2 -0
  95. package/dist/validation/validators/validateFloatField.d.ts +3 -0
  96. package/dist/validation/validators/validateIntegerField.d.ts +3 -0
  97. package/dist/validation/validators/validatePhoneField.d.ts +2 -0
  98. package/dist/validation/validators/validateRatingField.d.ts +2 -0
  99. package/dist/validation/validators/validateSelectionFields.d.ts +3 -0
  100. package/dist/validation/validators/validateSliderField.d.ts +2 -0
  101. package/dist/validation/validators/validateTextField.d.ts +2 -0
  102. package/dist/validation/validators/validateTimeField.d.ts +2 -0
  103. package/dist/validation/validators/validateUnitValueField.d.ts +2 -0
  104. package/dist/validation/validators/validateUrlField.d.ts +2 -0
  105. package/package.json +92 -0
@@ -0,0 +1,40 @@
1
+ [data-formitiva-theme="shadcn"] {
2
+ /* Surfaces */
3
+ --formitiva-primary-bg: #ffffff;
4
+ --formitiva-secondary-bg: #ffffff;
5
+ --formitiva-input-bg: #f5f6f8;
6
+
7
+ /* Text */
8
+ --formitiva-text-color: #242424;
9
+ --formitiva-text-muted: #616161;
10
+
11
+ /* Borders */
12
+ --formitiva-border-color: #d1d1d6;
13
+ --formitiva-border-hover: #bdbdbd;
14
+ --formitiva-border-focus: #0078d4;
15
+
16
+ /* Accent */
17
+ --formitiva-success-color: #107c10;
18
+ --formitiva-error-color: #d13438;
19
+
20
+ /* Interaction */
21
+ --formitiva-option-menu-hover-bg: #000000;
22
+
23
+ /* Shape */
24
+ --formitiva-border-radius: 6px;
25
+
26
+ /* Shadow */
27
+ --formitiva-shadow:
28
+ 0 4px 12px #000000;
29
+
30
+ /* Buttons */
31
+ --formitiva-button-bg: #0078d4;
32
+ --formitiva-button-text: white;
33
+ --formitiva-button-border-radius: 6px;
34
+
35
+ --formitiva-input-padding: 10px 12px;
36
+
37
+ /* Tooltip */
38
+ --formitiva-tooltip-color-bg: #3c3c3c;
39
+ --formitiva-tooltip-color: #ffffff;
40
+ }
@@ -0,0 +1,24 @@
1
+ [data-formitiva-theme="pastel"] {
2
+ --formitiva-primary-bg: #fafafa;
3
+ --formitiva-secondary-bg: #ffffff;
4
+ --formitiva-input-bg: #ffffff;
5
+
6
+ --formitiva-text-color: #374151;
7
+ --formitiva-text-muted: #6b7280;
8
+
9
+ --formitiva-border-color: #e5e7eb;
10
+ --formitiva-border-hover: #cbd5e1;
11
+ --formitiva-border-focus: #a78bfa;
12
+
13
+ --formitiva-error-color: #fb7185;
14
+ --formitiva-success-color: #4ade80;
15
+
16
+ --formitiva-option-menu-hover-bg: #f4f4ff;
17
+
18
+ --formitiva-border-radius: 10px;
19
+ --formitiva-shadow: 0 10px 28px #636cf1;
20
+
21
+ /* Tooltip */
22
+ --formitiva-tooltip-color-bg: #3c3c3c;
23
+ --formitiva-tooltip-color: #ffffff;
24
+ }
@@ -0,0 +1,9 @@
1
+ [data-formitiva-size="spacious"] {
2
+ --formitiva-input-padding: 14px 16px;
3
+ --formitiva-font-size: 15px;
4
+ --formitiva-space: 14px;
5
+ --formitiva-space-lg: 18px;
6
+ --formitiva-field-gap: 18px;
7
+ --formitiva-column-gap: 14px;
8
+ --formitiva-border-radius: 10px;
9
+ }
@@ -0,0 +1,30 @@
1
+ [data-formitiva-theme="tailwind-dark"] {
2
+ --formitiva-primary-bg: #0f172a; /* slate-900 */
3
+ --formitiva-secondary-bg: #020617; /* slate-950 */
4
+ --formitiva-input-bg: #020617;
5
+
6
+ --formitiva-text-color: #f9fafb; /* slate-50 */
7
+ --formitiva-text-muted: #9ca3af; /* gray-400 */
8
+ --formitiva-field-text-color: #e5e7eb;
9
+
10
+ --formitiva-border-color: #334155; /* slate-600 */
11
+ --formitiva-border-hover: #475569; /* slate-500 */
12
+ --formitiva-border-focus: #818cf8; /* indigo-400 */
13
+
14
+ --formitiva-error-color: #fb7185; /* rose-400 */
15
+ --formitiva-success-color: #34d399; /* emerald-400 */
16
+
17
+ --formitiva-option-menu-hover-bg: #ffffff;
18
+
19
+ --formitiva-border-radius: 0.5rem;
20
+
21
+ --formitiva-shadow:
22
+ 0 2px 8px #000000;
23
+
24
+ --formitiva-button-bg: #4f46e5; /* indigo-600 */
25
+ --formitiva-button-text: #ffffff;
26
+
27
+ /* Tooltip */
28
+ --formitiva-tooltip-color-bg: #282828;
29
+ --formitiva-tooltip-color: #F5F5F5;
30
+ }
@@ -0,0 +1,50 @@
1
+ [data-formitiva-theme="tailwind"] {
2
+ /* Backgrounds */
3
+ --formitiva-primary-bg: #f9fafb; /* slate-50 */
4
+ --formitiva-secondary-bg: #ffffff; /* white */
5
+ --formitiva-input-bg: #ffffff;
6
+
7
+ /* Text */
8
+ --formitiva-text-color: #111827; /* gray-900 */
9
+ --formitiva-text-muted: #6b7280; /* gray-500 */
10
+ --formitiva-field-text-color: #1f2937; /* gray-800 */
11
+
12
+ /* Borders */
13
+ --formitiva-border-color: #d1d5db; /* gray-300 */
14
+ --formitiva-border-hover: #9ca3af; /* gray-400 */
15
+ --formitiva-border-focus: #6366f1; /* indigo-500 */
16
+
17
+ /* Status colors */
18
+ --formitiva-error-color: #f43f5e; /* rose-500 */
19
+ --formitiva-success-color: #10b981; /* emerald-500 */
20
+
21
+ /* Hover */
22
+ --formitiva-option-menu-hover-bg: #f3f4f6; /* gray-100 */
23
+
24
+ /* Radii */
25
+ --formitiva-border-radius: 0.5rem; /* rounded-lg */
26
+
27
+ /* Shadows (Tailwind style) */
28
+ --formitiva-shadow:
29
+ 0 1px 2px #000000,
30
+ 0 1px 3px #000000;
31
+
32
+ /* Typography */
33
+ --formitiva-font-size: 14px;
34
+ --formitiva-font-weight: 500;
35
+
36
+ /* Spacing (Tailwind scale) */
37
+ --formitiva-space: 0.5rem; /* 2 = 8px */
38
+ --formitiva-space-lg: 0.75rem; /* 3 = 12px */
39
+
40
+ /* Buttons */
41
+ --formitiva-button-bg: #4f46e5; /* indigo-600 */
42
+ --formitiva-button-text: #ffffff;
43
+ --formitiva-button-border-radius: 0.5rem;
44
+ --formitiva-button-shadow:
45
+ 0 2px 4px #4f46e5;
46
+
47
+ /* Tooltip */
48
+ --formitiva-tooltip-color-bg: #3c3c3c;
49
+ --formitiva-tooltip-color: #ffffff;
50
+ }
@@ -0,0 +1,62 @@
1
+ import type { FormitivaDefinition, DefinitionPropertyField } from "../core/formitivaTypes";
2
+ export declare function isDefinitionPropertyField(obj: unknown): obj is DefinitionPropertyField;
3
+ export declare function isFormitivaDefinition(obj: unknown): obj is FormitivaDefinition;
4
+ /**
5
+ * Enhanced serialization options for better control over the process
6
+ */
7
+ export interface SerializationOptions {
8
+ includeMetadata?: boolean;
9
+ dateFormat?: 'iso' | 'timestamp' | 'locale';
10
+ fileHandling?: 'metadata' | 'skip' | 'base64';
11
+ prettify?: boolean;
12
+ excludeFields?: string[];
13
+ includeOnlyFields?: string[];
14
+ }
15
+ /**
16
+ * Enhanced deserialization options
17
+ */
18
+ export interface DeserializationOptions {
19
+ strict?: boolean;
20
+ validateTypes?: boolean;
21
+ preserveUnknownFields?: boolean;
22
+ dateFormat?: 'auto' | 'iso' | 'timestamp';
23
+ }
24
+ /**
25
+ * Serialization result with metadata
26
+ */
27
+ export interface SerializationResult {
28
+ success: boolean;
29
+ data?: string;
30
+ error?: string;
31
+ metadata?: {
32
+ fieldCount: number;
33
+ excludedFields: string[];
34
+ warnings: string[];
35
+ };
36
+ }
37
+ /**
38
+ * Deserialization result with validation info
39
+ */
40
+ export interface DeserializationResult<T = unknown> {
41
+ success: boolean;
42
+ data?: T;
43
+ error?: string;
44
+ warnings?: string[];
45
+ validationErrors?: string[];
46
+ }
47
+ /**
48
+ * Enhanced instance serialization with comprehensive options and error handling
49
+ */
50
+ export declare function serializeInstance(instance: Record<string, unknown>, definition?: FormitivaDefinition | Record<string, unknown>, options?: SerializationOptions): SerializationResult;
51
+ /**
52
+ * Enhanced instance deserialization with comprehensive validation and error handling
53
+ */
54
+ export declare function deserializeInstance(serialized: string, definition?: FormitivaDefinition | Record<string, unknown>, options?: DeserializationOptions): DeserializationResult<Record<string, unknown>>;
55
+ /**
56
+ * Enhanced definition serialization with validation and metadata
57
+ */
58
+ export declare function serializeDefinition(definition: FormitivaDefinition | Record<string, unknown>, options?: SerializationOptions): SerializationResult;
59
+ /**
60
+ * Enhanced definition deserialization with comprehensive validation
61
+ */
62
+ export declare function deserializeDefinition(input: string | Record<string, unknown>, options?: DeserializationOptions): DeserializationResult<FormitivaDefinition>;
@@ -0,0 +1,24 @@
1
+ import type { DefinitionPropertyField } from "../core/formitivaTypes";
2
+ /**
3
+ * Enhanced rename duplicated groups with better conflict resolution
4
+ * For example: g1, g1, g2, g1 becomes g1, g1, g2, g1(1)
5
+ * This mutates the provided nameToField map so downstream code sees the
6
+ * renamed group values.
7
+ */
8
+ export declare const renameDuplicatedGroups: (properties: DefinitionPropertyField[], nameToField: Record<string, DefinitionPropertyField>) => number;
9
+ /**
10
+ * Enhanced consecutive field grouping with metadata
11
+ */
12
+ export declare const groupConsecutiveFields: (items: DefinitionPropertyField[], options?: {
13
+ includeEmpty?: boolean;
14
+ }) => {
15
+ groups: Array<{
16
+ name: string | null;
17
+ fields: DefinitionPropertyField[];
18
+ }>;
19
+ metadata: {
20
+ totalGroups: number;
21
+ emptyGroups: number;
22
+ largestGroup: number;
23
+ };
24
+ };
@@ -0,0 +1,52 @@
1
+ export type TranslationMap = Record<string, string>;
2
+ export type TranslationCache = Map<string, TranslationMap>;
3
+ export declare const supportedLanguages: Record<string, {
4
+ name: string;
5
+ nativeName: string;
6
+ }>;
7
+ export declare const getSupportedLanguages: () => Record<string, {
8
+ name: string;
9
+ nativeName: string;
10
+ }>;
11
+ /**
12
+ * Translation loading result
13
+ */
14
+ export interface TranslationLoadResult {
15
+ success: boolean;
16
+ translations: TranslationMap;
17
+ error?: string;
18
+ fromCache?: boolean;
19
+ }
20
+ export declare const userTranslationCache: TranslationCache;
21
+ export declare const userFailedSet: Set<string>;
22
+ /**
23
+ * Enhanced common translation loader with better error handling
24
+ */
25
+ export declare const loadCommon: (language: string) => Promise<TranslationLoadResult>;
26
+ /**
27
+ * Enhanced common translation loading with caching and metadata
28
+ */
29
+ export declare const loadCommonTranslation: (language: string) => Promise<TranslationLoadResult>;
30
+ /**
31
+ * Enhanced user translation loading with better error handling and caching
32
+ */
33
+ export declare const loadUserTranslation: (language: string, localizeName: string) => Promise<TranslationLoadResult>;
34
+ /**
35
+ * Return whether translation subsystem should run in debug mode.
36
+ * Checks multiple env sources (Vite, webpack, Next.js, etc.) for dev/debug mode.
37
+ */
38
+ export declare function isDebugMode(): boolean;
39
+ /**
40
+ * Create a translation function using provided maps
41
+ * @returns A translation function
42
+ * This function processes text using only dictionary lookups and basic string interpolation.
43
+ * Note: handling pluralization is not supported now
44
+ * @example
45
+ * const t = createTranslationFunction('fr', commonMap, userMap);
46
+ * const translated = t("Hello, {{1}}!", "world");
47
+ */
48
+ export declare const createTranslationFunction: (language: string, commonMap: TranslationMap, userMap: TranslationMap) => (defaultText: string, ...args: unknown[]) => string;
49
+ /**
50
+ * Clear all caches
51
+ */
52
+ export declare function clearTranslationCaches(): void;
@@ -0,0 +1,14 @@
1
+ export declare const dimensionUnitsMap: Record<string, string[]>;
2
+ export declare const dimensionUnitDisplayMap: Record<string, Record<string, string>>;
3
+ export declare const dimensonUnitFactorsMap: Record<string, Record<string, number>>;
4
+ export declare const unitsByDimension: Record<string, Record<string, {
5
+ name: string;
6
+ shortName: string;
7
+ factor?: number;
8
+ }>>;
9
+ export declare function convertTemperature(fromUnit: string, toUnit: string, value: number): number;
10
+ export declare function getUnitFactors(dimension: string): {
11
+ default: string;
12
+ units: string[];
13
+ factors: Record<string, number>;
14
+ } | null;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview Built-in validator registration
3
+ * @description Imports all validator modules for side-effect registration.
4
+ * Re-exports all validators to ensure bundlers don't tree-shake them.
5
+ */
6
+ /**
7
+ * Ensures all built-in field validators are registered.
8
+ * This function references all validators to prevent tree-shaking.
9
+ * Safe to call multiple times as handlers are keyed.
10
+ */
11
+ export declare function ensureBuiltinFieldTypeValidatorsRegistered(): void;
@@ -0,0 +1,12 @@
1
+ import type { FormitivaDefinition, FieldValueType, DefinitionPropertyField, TranslationFunction } from "../core/formitivaTypes";
2
+ export declare function validateFieldWithCustomHandler(definitionName: string, field: DefinitionPropertyField, value: FieldValueType, t: TranslationFunction): string | null;
3
+ export declare function validateFieldValue(definitionName: string, field: DefinitionPropertyField, value: FieldValueType | unknown, t: TranslationFunction): string | null;
4
+ export declare function validateField(definitionName: string, field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | null;
5
+ export declare function validateFormValues(definition: FormitivaDefinition | null, valuesMap: Record<string, FieldValueType | unknown>, t: (key: string) => string): Promise<string[] | null>;
6
+ export declare function clearValidationCache(): void;
7
+ declare const _default: {
8
+ validateFieldValue: typeof validateFieldValue;
9
+ validateFormValues: typeof validateFormValues;
10
+ clearValidationCache: typeof clearValidationCache;
11
+ };
12
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateColorField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateDateField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateEmailField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,3 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateFieldPattern(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction, fallbackMessage?: string, ...args: unknown[]): string | undefined;
3
+ export default validateFieldPattern;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateFileField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,3 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateFloatField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
3
+ export declare function validateFloatArrayField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,3 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare const validateIntegerField: (field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction) => string | undefined;
3
+ export declare function validateIntegerArrayField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validatePhoneField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateRatingField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,3 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateDropdownField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
3
+ export declare function validateMultiSelectionField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateSliderField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateTextField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateTimeField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateUnitValueField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
@@ -0,0 +1,2 @@
1
+ import { DefinitionPropertyField, FieldValueType, TranslationFunction } from "../../core/formitivaTypes";
2
+ export declare function validateUrlField(field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction): string | undefined;
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@formitiva/react",
3
+ "version": "0.9.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "A powerful, type-safe React form builder library with dynamic field rendering, conditional visibility, multi-language support, and extensible validation",
8
+ "keywords": [
9
+ "react",
10
+ "form",
11
+ "form-builder",
12
+ "typescript",
13
+ "validation",
14
+ "dynamic-forms",
15
+ "formitiva",
16
+ "react-form",
17
+ "form-library"
18
+ ],
19
+ "author": "Formitiva",
20
+ "license": "MIT",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/formitiva/react.git",
24
+ "directory": "packages/formitiva"
25
+ },
26
+ "homepage": "https://github.com/formitiva/react#readme",
27
+ "bugs": {
28
+ "url": "https://github.com/formitiva/react/issues"
29
+ },
30
+ "main": "dist/formitiva.cjs.js",
31
+ "module": "dist/formitiva.es.js",
32
+ "types": "dist/index.d.ts",
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist/index.d.ts",
36
+ "import": "./dist/formitiva.es.js",
37
+ "require": "./dist/formitiva.cjs.js"
38
+ },
39
+ "./style.css": "./dist/formitiva.css",
40
+ "./themes/*.css": "./dist/themes/*.css"
41
+ },
42
+ "files": [
43
+ "dist",
44
+ "README.md",
45
+ "README.full.md",
46
+ "LICENSE"
47
+ ],
48
+ "sideEffects": [
49
+ "*.css",
50
+ "dist/**/*.css"
51
+ ],
52
+ "peerDependencies": {
53
+ "react": ">=18.0.0 <20",
54
+ "react-dom": ">=18.0.0 <20"
55
+ },
56
+ "scripts": {
57
+ "clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
58
+ "build:types": "tsc -p tsconfig.build.json --noEmit false",
59
+ "build:lib": "cross-env NODE_ENV=development vite build --mode development --config vite.lib.config.ts && npm run build:types && node scripts/copy-themes.js",
60
+ "build:prod": "cross-env NODE_ENV=production vite build --config vite.lib.config.ts && npm run build:types && node scripts/copy-themes.js",
61
+ "build:pack": "npm run build:prod && npm pack",
62
+ "prepublishOnly": "npm run build:prod",
63
+ "test": "vitest run --config ./vitest.config.ts",
64
+ "typecheck": "tsc -p tsconfig.build.json --noEmit",
65
+ "lint": "eslint -c eslint.config.mjs \"src/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\" --max-warnings=0"
66
+ },
67
+ "devDependencies": {
68
+ "@eslint/js": "^9.39.1",
69
+ "@testing-library/jest-dom": "^6.9.1",
70
+ "@testing-library/react": "^16.3.0",
71
+ "@testing-library/user-event": "^14.6.1",
72
+ "@types/node": "^20.8.4",
73
+ "@types/react": "^18.3.18",
74
+ "@types/react-dom": "^18.3.5",
75
+ "@typescript-eslint/eslint-plugin": "^8.49.0",
76
+ "@typescript-eslint/parser": "^8.49.0",
77
+ "@vitejs/plugin-react": "^5.1.2",
78
+ "c8": "^10.1.3",
79
+ "cross-env": "^7.0.3",
80
+ "eslint": "^9.39.1",
81
+ "eslint-plugin-react-hooks": "^7.0.1",
82
+ "eslint-plugin-react-refresh": "^0.4.24",
83
+ "globals": "^16.5.0",
84
+ "jsdom": "^27.3.0",
85
+ "typescript": "^5.9.3",
86
+ "vite": "^7.2.7",
87
+ "vitest": "^4.0.15"
88
+ },
89
+ "engines": {
90
+ "node": ">=18"
91
+ }
92
+ }