@axenstudio/axen-form 0.1.17 → 0.1.19

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 (132) hide show
  1. package/README.md +34 -3
  2. package/dist/adapters/yupAdapter.cjs +29 -10
  3. package/dist/adapters/yupAdapter.d.ts +1 -2
  4. package/dist/adapters/yupAdapter.js +29 -10
  5. package/dist/adapters/zodAdapter.cjs +29 -10
  6. package/dist/adapters/zodAdapter.d.ts +1 -2
  7. package/dist/adapters/zodAdapter.js +29 -10
  8. package/dist/core/dateUtils.d.ts +0 -1
  9. package/dist/core/formStore.cjs +214 -47
  10. package/dist/core/formStore.d.ts +5 -2
  11. package/dist/core/formStore.js +214 -47
  12. package/dist/core/numberUtils.d.ts +0 -1
  13. package/dist/core/pathUtils.d.ts +0 -1
  14. package/dist/core/payloadUtils.d.ts +0 -1
  15. package/dist/core/semanticValidation.cjs +82 -0
  16. package/dist/core/semanticValidation.d.ts +5 -0
  17. package/dist/core/semanticValidation.js +82 -0
  18. package/dist/core/validation.cjs +4 -3
  19. package/dist/core/validation.d.ts +0 -1
  20. package/dist/core/validation.js +4 -3
  21. package/dist/fields/AutocompleteField/AutocompleteField.d.ts +1 -2
  22. package/dist/fields/AutocompleteMultiField/AutocompleteMultiField.d.ts +1 -2
  23. package/dist/fields/AutocompletePredictField/AutocompletePredictField.d.ts +1 -2
  24. package/dist/fields/CheckboxField/CheckboxField.d.ts +1 -2
  25. package/dist/fields/ColorField/ColorField.d.ts +1 -2
  26. package/dist/fields/CurrencyField/CurrencyField.d.ts +1 -2
  27. package/dist/fields/DateField/DateField.d.ts +1 -2
  28. package/dist/fields/DateField/DatePicker.d.ts +1 -2
  29. package/dist/fields/DateTimeField/DateTimeField.d.ts +1 -2
  30. package/dist/fields/EmailField/EmailField.d.ts +1 -2
  31. package/dist/fields/NumberField/NumberField.d.ts +1 -2
  32. package/dist/fields/PasswordField/PasswordField.d.ts +1 -2
  33. package/dist/fields/PhoneField/PhoneField.d.ts +1 -2
  34. package/dist/fields/RadioField/RadioField.d.ts +1 -2
  35. package/dist/fields/SelectField/SelectField.d.ts +1 -2
  36. package/dist/fields/SliderField/SliderField.d.ts +1 -2
  37. package/dist/fields/SwitchField/SwitchField.d.ts +1 -2
  38. package/dist/fields/TextField/TextField.d.ts +1 -2
  39. package/dist/fields/TextareaField/TextareaField.d.ts +1 -2
  40. package/dist/fields/TimeField/TimeField.d.ts +1 -2
  41. package/dist/fields/TimeField/TimePicker.d.ts +1 -2
  42. package/dist/fields/defaultComponentMap.cjs +3 -0
  43. package/dist/fields/defaultComponentMap.d.ts +0 -1
  44. package/dist/fields/defaultComponentMap.js +3 -0
  45. package/dist/fields/defaultPlaceholders.d.ts +0 -1
  46. package/dist/fields/fieldBase.module.css.cjs +92 -70
  47. package/dist/fields/fieldBase.module.css.js +92 -70
  48. package/dist/fields/fieldUtils.d.ts +0 -1
  49. package/dist/fields/iconUtils.d.ts +0 -1
  50. package/dist/fields/icons.d.ts +3 -4
  51. package/dist/index.cjs +31 -22
  52. package/dist/index.d.ts +3 -2
  53. package/dist/index.js +32 -23
  54. package/dist/layout/Box/Box.d.ts +1 -2
  55. package/dist/layout/Divider/Divider.d.ts +1 -2
  56. package/dist/layout/Grid/Grid.d.ts +1 -2
  57. package/dist/layout/Spacer/Spacer.d.ts +1 -2
  58. package/dist/layout/Stack/Stack.d.ts +1 -2
  59. package/dist/layout/index.d.ts +0 -1
  60. package/dist/react/AxenArrayField.cjs +2 -0
  61. package/dist/react/AxenArrayField.d.ts +1 -2
  62. package/dist/react/AxenArrayField.js +2 -0
  63. package/dist/react/AxenField.cjs +2 -0
  64. package/dist/react/AxenField.d.ts +1 -2
  65. package/dist/react/AxenField.js +2 -0
  66. package/dist/react/AxenForm.cjs +29 -23
  67. package/dist/react/AxenForm.d.ts +0 -1
  68. package/dist/react/AxenForm.js +30 -24
  69. package/dist/react/FormContext.d.ts +0 -1
  70. package/dist/react/useAxenForm.cjs +17 -4
  71. package/dist/react/useAxenForm.d.ts +1 -2
  72. package/dist/react/useAxenForm.js +17 -4
  73. package/dist/react/useField.cjs +3 -0
  74. package/dist/react/useField.d.ts +0 -1
  75. package/dist/react/useField.js +3 -0
  76. package/dist/react/useFieldArray.cjs +19 -13
  77. package/dist/react/useFieldArray.d.ts +0 -1
  78. package/dist/react/useFieldArray.js +19 -13
  79. package/dist/react/useFormState.cjs +18 -0
  80. package/dist/react/useFormState.d.ts +5 -0
  81. package/dist/react/useFormState.js +18 -0
  82. package/dist/types.d.ts +28 -3
  83. package/package.json +5 -2
  84. package/dist/adapters/yupAdapter.d.ts.map +0 -1
  85. package/dist/adapters/zodAdapter.d.ts.map +0 -1
  86. package/dist/core/dateUtils.d.ts.map +0 -1
  87. package/dist/core/formStore.d.ts.map +0 -1
  88. package/dist/core/numberUtils.d.ts.map +0 -1
  89. package/dist/core/pathUtils.d.ts.map +0 -1
  90. package/dist/core/payloadUtils.d.ts.map +0 -1
  91. package/dist/core/validation.d.ts.map +0 -1
  92. package/dist/fields/AutocompleteField/AutocompleteField.d.ts.map +0 -1
  93. package/dist/fields/AutocompleteMultiField/AutocompleteMultiField.d.ts.map +0 -1
  94. package/dist/fields/AutocompletePredictField/AutocompletePredictField.d.ts.map +0 -1
  95. package/dist/fields/CheckboxField/CheckboxField.d.ts.map +0 -1
  96. package/dist/fields/ColorField/ColorField.d.ts.map +0 -1
  97. package/dist/fields/CurrencyField/CurrencyField.d.ts.map +0 -1
  98. package/dist/fields/DateField/DateField.d.ts.map +0 -1
  99. package/dist/fields/DateField/DatePicker.d.ts.map +0 -1
  100. package/dist/fields/DateTimeField/DateTimeField.d.ts.map +0 -1
  101. package/dist/fields/EmailField/EmailField.d.ts.map +0 -1
  102. package/dist/fields/NumberField/NumberField.d.ts.map +0 -1
  103. package/dist/fields/PasswordField/PasswordField.d.ts.map +0 -1
  104. package/dist/fields/PhoneField/PhoneField.d.ts.map +0 -1
  105. package/dist/fields/RadioField/RadioField.d.ts.map +0 -1
  106. package/dist/fields/SelectField/SelectField.d.ts.map +0 -1
  107. package/dist/fields/SliderField/SliderField.d.ts.map +0 -1
  108. package/dist/fields/SwitchField/SwitchField.d.ts.map +0 -1
  109. package/dist/fields/TextField/TextField.d.ts.map +0 -1
  110. package/dist/fields/TextareaField/TextareaField.d.ts.map +0 -1
  111. package/dist/fields/TimeField/TimeField.d.ts.map +0 -1
  112. package/dist/fields/TimeField/TimePicker.d.ts.map +0 -1
  113. package/dist/fields/defaultComponentMap.d.ts.map +0 -1
  114. package/dist/fields/defaultPlaceholders.d.ts.map +0 -1
  115. package/dist/fields/fieldUtils.d.ts.map +0 -1
  116. package/dist/fields/iconUtils.d.ts.map +0 -1
  117. package/dist/fields/icons.d.ts.map +0 -1
  118. package/dist/index.d.ts.map +0 -1
  119. package/dist/layout/Box/Box.d.ts.map +0 -1
  120. package/dist/layout/Divider/Divider.d.ts.map +0 -1
  121. package/dist/layout/Grid/Grid.d.ts.map +0 -1
  122. package/dist/layout/Spacer/Spacer.d.ts.map +0 -1
  123. package/dist/layout/Stack/Stack.d.ts.map +0 -1
  124. package/dist/layout/index.d.ts.map +0 -1
  125. package/dist/react/AxenArrayField.d.ts.map +0 -1
  126. package/dist/react/AxenField.d.ts.map +0 -1
  127. package/dist/react/AxenForm.d.ts.map +0 -1
  128. package/dist/react/FormContext.d.ts.map +0 -1
  129. package/dist/react/useAxenForm.d.ts.map +0 -1
  130. package/dist/react/useField.d.ts.map +0 -1
  131. package/dist/react/useFieldArray.d.ts.map +0 -1
  132. package/dist/types.d.ts.map +0 -1
@@ -6,5 +6,4 @@ export declare function NumberField({ name, value, onChange: _onChange, onBlur,
6
6
  prefix?: string;
7
7
  suffix?: string;
8
8
  locale?: string;
9
- }): import("react/jsx-runtime").JSX.Element;
10
- //# sourceMappingURL=NumberField.d.ts.map
9
+ }): import("react").JSX.Element;
@@ -1,3 +1,2 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function PasswordField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, icon, }: Readonly<FieldComponentProps>): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=PasswordField.d.ts.map
2
+ export declare function PasswordField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, icon, }: Readonly<FieldComponentProps>): import("react").JSX.Element;
@@ -1,3 +1,2 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function PhoneField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, icon, }: Readonly<FieldComponentProps>): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=PhoneField.d.ts.map
2
+ export declare function PhoneField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, icon, }: Readonly<FieldComponentProps>): import("react").JSX.Element;
@@ -1,3 +1,2 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function RadioField({ name, value, onChange: _onChange, onBlur, error, helperText, label, disabled, readOnly, required, options, form, }: Readonly<FieldComponentProps>): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=RadioField.d.ts.map
2
+ export declare function RadioField({ name, value, onChange: _onChange, onBlur, error, helperText, label, disabled, readOnly, required, options, form, }: Readonly<FieldComponentProps>): import("react").JSX.Element;
@@ -1,3 +1,2 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function SelectField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, options, }: Readonly<FieldComponentProps>): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=SelectField.d.ts.map
2
+ export declare function SelectField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, options, }: Readonly<FieldComponentProps>): import("react").JSX.Element;
@@ -3,5 +3,4 @@ export declare function SliderField({ name, value, onChange: _onChange, onBlur,
3
3
  min?: number;
4
4
  max?: number;
5
5
  step?: number;
6
- }): import("react/jsx-runtime").JSX.Element;
7
- //# sourceMappingURL=SliderField.d.ts.map
6
+ }): import("react").JSX.Element;
@@ -1,3 +1,2 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function SwitchField({ name, value, onChange: _onChange, onBlur, error, helperText, label, disabled, readOnly, required, form, }: Readonly<FieldComponentProps>): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=SwitchField.d.ts.map
2
+ export declare function SwitchField({ name, value, onChange: _onChange, onBlur, error, helperText, label, disabled, readOnly, required, form, }: Readonly<FieldComponentProps>): import("react").JSX.Element;
@@ -1,3 +1,2 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function TextField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, icon, }: Readonly<FieldComponentProps>): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=TextField.d.ts.map
2
+ export declare function TextField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, icon, }: Readonly<FieldComponentProps>): import("react").JSX.Element;
@@ -1,5 +1,4 @@
1
1
  import { FieldComponentProps } from '../../types';
2
2
  export declare function TextareaField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, rows, }: FieldComponentProps & {
3
3
  rows?: number;
4
- }): import("react/jsx-runtime").JSX.Element;
5
- //# sourceMappingURL=TextareaField.d.ts.map
4
+ }): import("react").JSX.Element;
@@ -3,5 +3,4 @@ export declare function TimeField({ name, value, onChange, onBlur, error, helper
3
3
  locale?: string;
4
4
  ampm?: boolean;
5
5
  showSeconds?: boolean;
6
- }>): import("react/jsx-runtime").JSX.Element;
7
- //# sourceMappingURL=TimeField.d.ts.map
6
+ }>): import("react").JSX.Element;
@@ -6,6 +6,5 @@ interface TimePickerProps {
6
6
  onApply: (isoTime: string) => void;
7
7
  onClose: () => void;
8
8
  }
9
- export declare function TimePicker({ value, showSeconds, ampm, pickerId, onApply, onClose, }: Readonly<TimePickerProps>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function TimePicker({ value, showSeconds, ampm, pickerId, onApply, onClose, }: Readonly<TimePickerProps>): import("react").JSX.Element;
10
10
  export {};
11
- //# sourceMappingURL=TimePicker.d.ts.map
@@ -24,6 +24,9 @@ const defaultComponentMap = {
24
24
  email: EmailField.EmailField,
25
25
  password: PasswordField.PasswordField,
26
26
  phone: PhoneField.PhoneField,
27
+ // HTML type aliases retained for existing consumer configurations.
28
+ tel: PhoneField.PhoneField,
29
+ url: TextField.TextField,
27
30
  textarea: TextareaField.TextareaField,
28
31
  number: NumberField.NumberField,
29
32
  currency: CurrencyField.CurrencyField,
@@ -4,4 +4,3 @@ import { FieldTypeComponentMap } from '../types';
4
4
  * Pass to AxenForm's `components` prop or use as base to extend with custom types.
5
5
  */
6
6
  export declare const defaultComponentMap: FieldTypeComponentMap;
7
- //# sourceMappingURL=defaultComponentMap.d.ts.map
@@ -22,6 +22,9 @@ const defaultComponentMap = {
22
22
  email: EmailField,
23
23
  password: PasswordField,
24
24
  phone: PhoneField,
25
+ // HTML type aliases retained for existing consumer configurations.
26
+ tel: PhoneField,
27
+ url: TextField,
25
28
  textarea: TextareaField,
26
29
  number: NumberField,
27
30
  currency: CurrencyField,
@@ -1,3 +1,2 @@
1
1
  import { BuiltInFieldType } from '../types';
2
2
  export declare const defaultPlaceholders: Partial<Record<BuiltInFieldType, string>>;
3
- //# sourceMappingURL=defaultPlaceholders.d.ts.map
@@ -10,14 +10,36 @@
10
10
  ═══════════════════════════════════════════════ */
11
11
 
12
12
  /* ── Field Wrapper ───────────────────────────── */
13
- ._wrapper_1sk2v_8 {
13
+ :where(._wrapper_18hu4_8),
14
+ :where(._wrapper_18hu4_8) *,
15
+ :where(._wrapper_18hu4_8) *::before,
16
+ :where(._wrapper_18hu4_8) *::after {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ :where(._wrapper_18hu4_8) {
21
+ color-scheme: light;
22
+ }
23
+
24
+ :where(._wrapper_18hu4_8) input,
25
+ :where(._wrapper_18hu4_8) textarea,
26
+ :where(._wrapper_18hu4_8) select,
27
+ :where(._wrapper_18hu4_8) button {
28
+ font-family: inherit;
29
+ font-size: inherit;
30
+ line-height: inherit;
31
+ color: inherit;
32
+ margin: 0;
33
+ }
34
+
35
+ ._wrapper_18hu4_8 {
14
36
  display: flex;
15
37
  flex-direction: column;
16
38
  width: 100%;
17
39
  }
18
40
 
19
41
  /* ── Label ───────────────────────────────────── */
20
- ._label_1sk2v_15 {
42
+ ._label_18hu4_37 {
21
43
  display: block;
22
44
  font-size: var(--axen-font-size-sm, 0.875rem);
23
45
  font-weight: var(--axen-font-weight-medium, 500);
@@ -27,14 +49,14 @@
27
49
  letter-spacing: 0.01em;
28
50
  }
29
51
 
30
- ._labelRequired_1sk2v_25::after {
52
+ ._labelRequired_18hu4_47::after {
31
53
  content: ' *';
32
54
  color: var(--axen-color-error, #d32f2f);
33
55
  font-weight: var(--axen-font-weight-bold, 600);
34
56
  }
35
57
 
36
58
  /* ── Input Base ──────────────────────────────── */
37
- ._input_1sk2v_32 {
59
+ ._input_18hu4_54 {
38
60
  display: block;
39
61
  width: 100%;
40
62
  height: var(--axen-field-height, 2.75rem);
@@ -62,22 +84,22 @@
62
84
  outline: none;
63
85
  }
64
86
 
65
- ._input_1sk2v_32::placeholder {
87
+ ._input_18hu4_54::placeholder {
66
88
  color: var(--axen-color-text-disabled, #9e9e9e);
67
89
  }
68
90
 
69
- ._input_1sk2v_32:hover:not(:disabled):not(:read-only) {
91
+ ._input_18hu4_54:hover:not(:disabled):not(:read-only) {
70
92
  border-color: var(--axen-color-border-hover, #888888);
71
93
  }
72
94
 
73
95
  /* Focus ring (keyboard + mouse) */
74
- ._input_1sk2v_32:focus {
96
+ ._input_18hu4_54:focus {
75
97
  border-color: var(--axen-color-border-focus, var(--axen-color-primary, #1976d2));
76
98
  box-shadow: var(--axen-shadow-focus, 0 0 0 2px rgba(25, 118, 210, 0.5));
77
99
  outline: none;
78
100
  }
79
101
 
80
- ._input_1sk2v_32:disabled {
102
+ ._input_18hu4_54:disabled {
81
103
  background-color: var(--axen-color-bg-disabled, #f5f5f5);
82
104
  color: var(--axen-color-text-disabled, #9e9e9e);
83
105
  cursor: not-allowed;
@@ -86,35 +108,35 @@
86
108
  /* Scope :read-only to actual text inputs only.
87
109
  <select> and <div> match :read-only by default in modern browsers,
88
110
  which would incorrectly apply the disabled-looking background. */
89
- input._input_1sk2v_32:read-only,
90
- textarea._input_1sk2v_32:read-only {
111
+ input._input_18hu4_54:read-only,
112
+ textarea._input_18hu4_54:read-only {
91
113
  background-color: var(--axen-color-bg-disabled, #f5f5f5);
92
114
  }
93
115
 
94
116
  /* Hide native browser picker icons for date/time/datetime inputs.
95
117
  We provide our own custom pickers via DatePicker / TimePicker components,
96
118
  so the native chromium dark-themed popups must not appear. */
97
- ._input_1sk2v_32::-webkit-calendar-picker-indicator {
119
+ ._input_18hu4_54::-webkit-calendar-picker-indicator {
98
120
  display: none;
99
121
  -webkit-appearance: none;
100
122
  }
101
123
 
102
- ._input_1sk2v_32::-webkit-date-and-time-value {
124
+ ._input_18hu4_54::-webkit-date-and-time-value {
103
125
  text-align: left;
104
126
  }
105
127
 
106
128
  /* ── Error State ─────────────────────────────── */
107
- ._inputError_1sk2v_102 {
129
+ ._inputError_18hu4_124 {
108
130
  border-color: var(--axen-color-error, #d32f2f);
109
131
  }
110
132
 
111
- ._inputError_1sk2v_102:focus {
133
+ ._inputError_18hu4_124:focus {
112
134
  border-color: var(--axen-color-error, #d32f2f);
113
135
  box-shadow: 0 0 0 var(--axen-focus-ring-width, 2px) rgba(211, 47, 47, 0.3);
114
136
  }
115
137
 
116
138
  /* ── Helper Text ─────────────────────────────── */
117
- ._helperText_1sk2v_112 {
139
+ ._helperText_18hu4_134 {
118
140
  display: block;
119
141
  font-size: var(--axen-font-size-xs, 0.75rem);
120
142
  color: var(--axen-color-text-secondary, #666666);
@@ -122,12 +144,12 @@ textarea._input_1sk2v_32:read-only {
122
144
  line-height: var(--axen-line-height, 1.5);
123
145
  }
124
146
 
125
- ._helperTextError_1sk2v_120 {
147
+ ._helperTextError_18hu4_142 {
126
148
  color: var(--axen-color-error, #d32f2f);
127
149
  }
128
150
 
129
151
  /* ── Textarea ────────────────────────────────── */
130
- ._textarea_1sk2v_125 {
152
+ ._textarea_18hu4_147 {
131
153
  height: auto;
132
154
  min-height: calc(var(--axen-field-min-height, 44px) * 2);
133
155
  resize: vertical;
@@ -135,7 +157,7 @@ textarea._input_1sk2v_32:read-only {
135
157
  }
136
158
 
137
159
  /* ── Select ──────────────────────────────────── */
138
- ._select_1sk2v_133 {
160
+ ._select_18hu4_155 {
139
161
  appearance: none;
140
162
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
141
163
  background-repeat: no-repeat;
@@ -144,11 +166,11 @@ textarea._input_1sk2v_32:read-only {
144
166
  cursor: pointer;
145
167
  }
146
168
 
147
- ._selectPlaceholder_1sk2v_142 {
169
+ ._selectPlaceholder_18hu4_164 {
148
170
  color: var(--axen-color-text-disabled, #9e9e9e);
149
171
  }
150
172
 
151
- ._inputPlaceholder_1sk2v_146 {
173
+ ._inputPlaceholder_18hu4_168 {
152
174
  color: var(--axen-color-text-disabled, #9e9e9e);
153
175
  }
154
176
 
@@ -156,17 +178,17 @@ textarea._input_1sk2v_32:read-only {
156
178
  See tokens.css for color-scheme: light declaration. */
157
179
 
158
180
  /* ── Input with prefix/suffix ────────────────── */
159
- ._inputGroup_1sk2v_154 {
181
+ ._inputGroup_18hu4_176 {
160
182
  display: flex;
161
183
  align-items: stretch;
162
184
  }
163
185
 
164
186
  /* ── Icon inside input ───────────────────────── */
165
- ._inputIconWrapper_1sk2v_160 {
187
+ ._inputIconWrapper_18hu4_182 {
166
188
  position: relative;
167
189
  }
168
190
 
169
- ._fieldIcon_1sk2v_164 {
191
+ ._fieldIcon_18hu4_186 {
170
192
  position: absolute;
171
193
  left: 0.75rem;
172
194
  top: 50%;
@@ -182,7 +204,7 @@ textarea._input_1sk2v_32:read-only {
182
204
  }
183
205
 
184
206
  /* Clickable variant for icons that open pickers */
185
- ._fieldIconClickable_1sk2v_180 {
207
+ ._fieldIconClickable_18hu4_202 {
186
208
  position: absolute;
187
209
  left: 0.75rem;
188
210
  top: 50%;
@@ -201,18 +223,18 @@ textarea._input_1sk2v_32:read-only {
201
223
  margin: 0;
202
224
  }
203
225
 
204
- ._fieldIconClickable_1sk2v_180:hover {
226
+ ._fieldIconClickable_18hu4_202:hover {
205
227
  color: var(--axen-color-primary, #1976d2);
206
228
  }
207
229
 
208
- ._fieldIconClickable_1sk2v_180:focus-visible {
230
+ ._fieldIconClickable_18hu4_202:focus-visible {
209
231
  outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);
210
232
  outline-offset: 2px;
211
233
  border-radius: var(--axen-border-radius-sm, 4px);
212
234
  }
213
235
 
214
236
  /* Right-side picker trigger button inside inputIconWrapper */
215
- ._pickerTrigger_1sk2v_210 {
237
+ ._pickerTrigger_18hu4_232 {
216
238
  position: absolute;
217
239
  right: 0.5rem;
218
240
  top: 50%;
@@ -231,27 +253,27 @@ textarea._input_1sk2v_32:read-only {
231
253
  z-index: 1;
232
254
  }
233
255
 
234
- ._pickerTrigger_1sk2v_210:hover {
256
+ ._pickerTrigger_18hu4_232:hover {
235
257
  color: var(--axen-color-primary, #1976d2);
236
258
  background-color: var(--axen-color-bg-hover, #fafafa);
237
259
  }
238
260
 
239
- ._pickerTrigger_1sk2v_210:focus-visible {
261
+ ._pickerTrigger_18hu4_232:focus-visible {
240
262
  outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);
241
263
  outline-offset: 2px;
242
264
  }
243
265
 
244
266
  /* Input with right-side picker trigger needs extra right padding */
245
- ._inputWithPicker_1sk2v_240 {
267
+ ._inputWithPicker_18hu4_262 {
246
268
  padding-right: 2.25rem;
247
269
  }
248
270
 
249
- ._inputWithIcon_1sk2v_244 {
271
+ ._inputWithIcon_18hu4_266 {
250
272
  padding-left: 2.5rem;
251
273
  }
252
274
 
253
- ._inputPrefix_1sk2v_248,
254
- ._inputSuffix_1sk2v_249 {
275
+ ._inputPrefix_18hu4_270,
276
+ ._inputSuffix_18hu4_271 {
255
277
  display: flex;
256
278
  align-items: center;
257
279
  padding: 0 var(--axen-space-sm, 0.5rem);
@@ -262,32 +284,32 @@ textarea._input_1sk2v_32:read-only {
262
284
  white-space: nowrap;
263
285
  }
264
286
 
265
- ._inputPrefix_1sk2v_248 {
287
+ ._inputPrefix_18hu4_270 {
266
288
  border-right: none;
267
289
  border-radius: var(--axen-border-radius, 6px) 0 0 var(--axen-border-radius, 6px);
268
290
  }
269
291
 
270
- ._inputSuffix_1sk2v_249 {
292
+ ._inputSuffix_18hu4_271 {
271
293
  border-left: none;
272
294
  border-radius: 0 var(--axen-border-radius, 6px) var(--axen-border-radius, 6px) 0;
273
295
  }
274
296
 
275
- ._inputGroupInput_1sk2v_270 {
297
+ ._inputGroupInput_18hu4_292 {
276
298
  border-radius: 0;
277
299
  }
278
300
 
279
- ._inputPrefix_1sk2v_248 + ._inputGroupInput_1sk2v_270 {
301
+ ._inputPrefix_18hu4_270 + ._inputGroupInput_18hu4_292 {
280
302
  border-top-left-radius: 0;
281
303
  border-bottom-left-radius: 0;
282
304
  }
283
305
 
284
- ._inputGroupInput_1sk2v_270:has(+ ._inputSuffix_1sk2v_249) {
306
+ ._inputGroupInput_18hu4_292:has(+ ._inputSuffix_18hu4_271) {
285
307
  border-top-right-radius: 0;
286
308
  border-bottom-right-radius: 0;
287
309
  }
288
310
 
289
311
  /* ── Checkbox/Radio/Switch shared ────────────── */
290
- ._inlineWrapper_1sk2v_285 {
312
+ ._inlineWrapper_18hu4_307 {
291
313
  display: flex;
292
314
  align-items: center;
293
315
  gap: var(--axen-space-sm, 0.5rem);
@@ -295,12 +317,12 @@ textarea._input_1sk2v_32:read-only {
295
317
  cursor: pointer;
296
318
  }
297
319
 
298
- ._inlineWrapper_1sk2v_285:has(:disabled) {
320
+ ._inlineWrapper_18hu4_307:has(:disabled) {
299
321
  cursor: not-allowed;
300
322
  opacity: 0.6;
301
323
  }
302
324
 
303
- ._inlineLabel_1sk2v_298 {
325
+ ._inlineLabel_18hu4_320 {
304
326
  font-size: var(--axen-font-size-md, 1rem);
305
327
  color: var(--axen-color-text, #1a1a1a);
306
328
  user-select: none;
@@ -308,34 +330,34 @@ textarea._input_1sk2v_32:read-only {
308
330
 
309
331
  /* ── Responsive: mobile touch targets ────────── */
310
332
  @media (max-width: 599px) {
311
- ._input_1sk2v_32 {
333
+ ._input_18hu4_54 {
312
334
  font-size: 16px; /* Prevent iOS zoom on focus */
313
335
  min-height: 48px;
314
336
  }
315
337
 
316
- ._inlineWrapper_1sk2v_285 {
338
+ ._inlineWrapper_18hu4_307 {
317
339
  min-height: 48px;
318
340
  }
319
341
  }
320
342
 
321
343
  /* ── High Contrast Mode ──────────────────────── */
322
344
  @media (prefers-contrast: more) {
323
- ._input_1sk2v_32 {
345
+ ._input_18hu4_54 {
324
346
  border-width: 2px;
325
347
  }
326
348
 
327
- ._inputError_1sk2v_102 {
349
+ ._inputError_18hu4_124 {
328
350
  border-width: 3px;
329
351
  }
330
352
 
331
- ._helperTextError_1sk2v_120 {
353
+ ._helperTextError_18hu4_142 {
332
354
  font-weight: var(--axen-font-weight-bold, 600);
333
355
  }
334
356
  }
335
357
 
336
358
  /* ── Reduced Motion (A11y: WCAG 2.3.3) ──────── */
337
359
  @media (prefers-reduced-motion: reduce) {
338
- ._input_1sk2v_32 {
360
+ ._input_18hu4_54 {
339
361
  transition: none;
340
362
  }
341
363
  }`));
@@ -347,29 +369,29 @@ textarea._input_1sk2v_32:read-only {
347
369
  })();
348
370
  "use strict";
349
371
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
350
- const wrapper = "_wrapper_1sk2v_8";
351
- const label = "_label_1sk2v_15";
352
- const labelRequired = "_labelRequired_1sk2v_25";
353
- const input = "_input_1sk2v_32";
354
- const inputError = "_inputError_1sk2v_102";
355
- const helperText = "_helperText_1sk2v_112";
356
- const helperTextError = "_helperTextError_1sk2v_120";
357
- const textarea = "_textarea_1sk2v_125";
358
- const select = "_select_1sk2v_133";
359
- const selectPlaceholder = "_selectPlaceholder_1sk2v_142";
360
- const inputPlaceholder = "_inputPlaceholder_1sk2v_146";
361
- const inputGroup = "_inputGroup_1sk2v_154";
362
- const inputIconWrapper = "_inputIconWrapper_1sk2v_160";
363
- const fieldIcon = "_fieldIcon_1sk2v_164";
364
- const fieldIconClickable = "_fieldIconClickable_1sk2v_180";
365
- const pickerTrigger = "_pickerTrigger_1sk2v_210";
366
- const inputWithPicker = "_inputWithPicker_1sk2v_240";
367
- const inputWithIcon = "_inputWithIcon_1sk2v_244";
368
- const inputPrefix = "_inputPrefix_1sk2v_248";
369
- const inputSuffix = "_inputSuffix_1sk2v_249";
370
- const inputGroupInput = "_inputGroupInput_1sk2v_270";
371
- const inlineWrapper = "_inlineWrapper_1sk2v_285";
372
- const inlineLabel = "_inlineLabel_1sk2v_298";
372
+ const wrapper = "_wrapper_18hu4_8";
373
+ const label = "_label_18hu4_37";
374
+ const labelRequired = "_labelRequired_18hu4_47";
375
+ const input = "_input_18hu4_54";
376
+ const inputError = "_inputError_18hu4_124";
377
+ const helperText = "_helperText_18hu4_134";
378
+ const helperTextError = "_helperTextError_18hu4_142";
379
+ const textarea = "_textarea_18hu4_147";
380
+ const select = "_select_18hu4_155";
381
+ const selectPlaceholder = "_selectPlaceholder_18hu4_164";
382
+ const inputPlaceholder = "_inputPlaceholder_18hu4_168";
383
+ const inputGroup = "_inputGroup_18hu4_176";
384
+ const inputIconWrapper = "_inputIconWrapper_18hu4_182";
385
+ const fieldIcon = "_fieldIcon_18hu4_186";
386
+ const fieldIconClickable = "_fieldIconClickable_18hu4_202";
387
+ const pickerTrigger = "_pickerTrigger_18hu4_232";
388
+ const inputWithPicker = "_inputWithPicker_18hu4_262";
389
+ const inputWithIcon = "_inputWithIcon_18hu4_266";
390
+ const inputPrefix = "_inputPrefix_18hu4_270";
391
+ const inputSuffix = "_inputSuffix_18hu4_271";
392
+ const inputGroupInput = "_inputGroupInput_18hu4_292";
393
+ const inlineWrapper = "_inlineWrapper_18hu4_307";
394
+ const inlineLabel = "_inlineLabel_18hu4_320";
373
395
  const styles = {
374
396
  wrapper,
375
397
  label,