elseware-ui 3.0.12 → 3.0.14

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.
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
+ var react = require('react');
3
4
  var reactNative = require('react-native');
4
5
  var tailwindMerge = require('tailwind-merge');
5
- var react = require('react');
6
- var jsxRuntime = require('react/jsx-runtime');
7
- var jsxRuntime$1 = require('nativewind/jsx-runtime');
6
+ var jsxRuntime$1 = require('react/jsx-runtime');
7
+ var jsxRuntime = require('nativewind/jsx-runtime');
8
8
  var formik = require('formik');
9
9
 
10
10
  // src/components/data-entry/button/native/Button.native.tsx
@@ -29,6 +29,11 @@ function cn(...inputs) {
29
29
  }
30
30
 
31
31
  // src/utils/styles.ts
32
+ function extractTextColorClasses(className) {
33
+ return className.split(/\s+/).filter(
34
+ (token) => token.startsWith("text-") || token.startsWith("dark:text-") || token.startsWith("disabled:text-")
35
+ ).join(" ");
36
+ }
32
37
  function resolveAppearanceStyles({
33
38
  appearance = "solid",
34
39
  variant = "default",
@@ -51,7 +56,7 @@ var EUIProvider = ({
51
56
  children
52
57
  }) => {
53
58
  const [state, setState] = react.useState(config);
54
- return /* @__PURE__ */ jsxRuntime.jsx(EUIContext.Provider, { value: { config: state, setConfig: setState }, children });
59
+ return /* @__PURE__ */ jsxRuntime$1.jsx(EUIContext.Provider, { value: { config: state, setConfig: setState }, children });
55
60
  };
56
61
  var useEUIConfig = () => {
57
62
  const ctx = react.useContext(EUIContext);
@@ -148,14 +153,6 @@ var shapes = {
148
153
  };
149
154
 
150
155
  // src/components/data-entry/button/base/Button.styles.ts
151
- var buttonShapes = shapes;
152
- var buttonIconSizes = {
153
- xs: 14,
154
- sm: 16,
155
- md: 18,
156
- lg: 20,
157
- xl: 22
158
- };
159
156
  function resolveButtonVariantStyles({
160
157
  appearance,
161
158
  variant
@@ -168,164 +165,205 @@ function resolveButtonVariantStyles({
168
165
  ghost: variantsGhost
169
166
  });
170
167
  }
171
- function getButtonLabelColorClassName(className) {
172
- return className.split(/\s+/).filter(
173
- (token) => token.startsWith("text-") || token.startsWith("dark:text-") || token.startsWith("disabled:text-")
174
- ).join(" ");
175
- }
176
168
 
177
- // src/components/data-entry/button/native/Button.native.styles.ts
178
- var nativeButtonSizes = {
169
+ // src/components/data-entry/button/base/Button.tokens.ts
170
+ var buttonSizeTokens = {
179
171
  xs: {
180
- rootClassName: "min-h-[30px] px-2.5 py-1",
181
- labelClassName: "text-xs leading-[14px]",
182
- slotClassName: "h-[14px] w-[14px]"
172
+ padding: "px-2 py-1",
173
+ text: "text-xs",
174
+ icon: 14,
175
+ minHeight: "min-h-[30px]",
176
+ leading: "leading-[14px]",
177
+ slot: "h-[14px] w-[14px]"
183
178
  },
184
179
  sm: {
185
- rootClassName: "min-h-9 px-3 py-1.5",
186
- labelClassName: "text-sm leading-4",
187
- slotClassName: "h-4 w-4"
180
+ padding: "px-3 py-1.5",
181
+ text: "text-sm",
182
+ icon: 16,
183
+ minHeight: "min-h-9",
184
+ leading: "leading-4",
185
+ slot: "h-4 w-4"
188
186
  },
189
187
  md: {
190
- rootClassName: "min-h-11 px-4 py-2",
191
- labelClassName: "text-[15px] leading-[18px]",
192
- slotClassName: "h-[18px] w-[18px]"
188
+ padding: "px-4 py-2",
189
+ text: "text-base",
190
+ icon: 18,
191
+ minHeight: "min-h-11",
192
+ leading: "leading-[18px]",
193
+ slot: "h-[18px] w-[18px]"
193
194
  },
194
195
  lg: {
195
- rootClassName: "min-h-[50px] px-[18px] py-3",
196
- labelClassName: "text-[17px] leading-5",
197
- slotClassName: "h-5 w-5"
196
+ padding: "px-5 py-3",
197
+ text: "text-lg",
198
+ icon: 20,
199
+ minHeight: "min-h-[50px]",
200
+ leading: "leading-5",
201
+ slot: "h-5 w-5"
198
202
  },
199
203
  xl: {
200
- rootClassName: "min-h-14 px-[22px] py-4",
201
- labelClassName: "text-[19px] leading-[22px]",
202
- slotClassName: "h-[22px] w-[22px]"
204
+ padding: "px-6 py-4",
205
+ text: "text-xl",
206
+ icon: 22,
207
+ minHeight: "min-h-14",
208
+ leading: "leading-[22px]",
209
+ slot: "h-[22px] w-[22px]"
203
210
  }
204
211
  };
205
- var nativeLabelBaseStyle = {
206
- includeFontPadding: false,
207
- textAlignVertical: "center"
208
- };
209
- function Button({
210
- icon,
211
- text,
212
- children,
213
- loading = false,
214
- disabled = false,
215
- block = false,
216
- compact = false,
217
- mode,
218
- contentClassName,
219
- labelClassName,
220
- className,
221
- variant,
222
- appearance,
223
- shape,
224
- size,
225
- accessibilityRole = "button",
226
- accessibilityState,
227
- type: _type,
228
- onClick: _onClick,
229
- onMouseMove: _onMouseMove,
230
- onPress,
231
- ...rest
232
- }) {
212
+ var buttonShapes = shapes;
213
+ var buttonTextModeClassName = "border-transparent bg-transparent";
214
+
215
+ // src/components/data-entry/button/base/useButton.ts
216
+ function useButton(props) {
233
217
  const {
234
- shape: resolvedShape,
235
- size: resolvedSize,
236
- variant: resolvedVariant,
237
- appearance: resolvedAppearance
238
- } = useResolvedButtonConfig({
239
- compact,
218
+ // Consumed by the shared model
219
+ icon,
220
+ iconPosition = "leading",
221
+ text,
222
+ children,
223
+ loading = false,
224
+ disabled = false,
225
+ block = false,
226
+ compact = false,
240
227
  mode,
241
228
  variant,
242
229
  appearance,
243
230
  shape,
244
- size
245
- });
246
- const metrics = nativeButtonSizes[resolvedSize];
247
- const iconSize = buttonIconSizes[resolvedSize];
248
- const variantStyles = resolveButtonVariantStyles({
231
+ size,
232
+ accessibilityState,
233
+ onPress,
234
+ // Owned by the platform views — pulled out here only so `rootRest` is a
235
+ // clean pass-through (no library props leak onto the DOM / native root).
236
+ type: _type,
237
+ glow: _glow,
238
+ className: _className,
239
+ contentClassName: _contentClassName,
240
+ labelClassName: _labelClassName,
241
+ accessibilityLabel: _accessibilityLabel,
242
+ accessibilityRole: _accessibilityRole,
243
+ testID: _testID,
244
+ onClick: _onClick,
245
+ onMouseMove: _onMouseMove,
246
+ ...rootRest
247
+ } = props;
248
+ const { shape: resolvedShape, size: resolvedSize, variant: resolvedVariant, appearance: resolvedAppearance } = useResolvedButtonConfig({ compact, mode, variant, appearance, shape, size });
249
+ const tokens = buttonSizeTokens[resolvedSize];
250
+ const variantClassName = resolveButtonVariantStyles({
249
251
  appearance: resolvedAppearance,
250
252
  variant: resolvedVariant
251
253
  });
252
- const labelColorClassName = getButtonLabelColorClassName(variantStyles);
253
- const content = text ?? children;
254
- const resolvedIcon = typeof icon === "function" ? icon({ color: "currentColor", size: iconSize }) : icon;
255
- return /* @__PURE__ */ jsxRuntime$1.jsx(
256
- reactNative.Pressable,
257
- {
258
- ...rest,
259
- accessibilityRole,
260
- accessibilityState: {
261
- disabled: disabled || loading,
262
- ...accessibilityState
263
- },
264
- className: cn(
265
- "relative items-center justify-center overflow-hidden",
266
- variantStyles,
267
- buttonShapes[resolvedShape],
268
- metrics.rootClassName,
269
- block && "w-full",
270
- mode === "text" && "border-transparent bg-transparent",
271
- (disabled || loading) && "opacity-55",
272
- !disabled && !loading && "active:opacity-80",
273
- className
274
- ),
275
- disabled: disabled || loading,
276
- onPress,
277
- style: ({ pressed }) => [
278
- pressed && !disabled && !loading ? { opacity: 0.82 } : null,
279
- disabled || loading ? { opacity: 0.55 } : null
280
- ],
281
- children: /* @__PURE__ */ jsxRuntime$1.jsxs(
282
- reactNative.View,
283
- {
284
- className: cn(
285
- "z-10 flex-row items-center justify-center gap-2",
286
- contentClassName
287
- ),
288
- children: [
289
- loading ? /* @__PURE__ */ jsxRuntime$1.jsx(
290
- reactNative.View,
291
- {
292
- className: cn(
293
- "shrink-0 items-center justify-center",
294
- metrics.slotClassName
295
- ),
296
- children: /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.ActivityIndicator, { className: labelColorClassName, size: "small" })
297
- }
298
- ) : null,
299
- !loading && resolvedIcon ? /* @__PURE__ */ jsxRuntime$1.jsx(
300
- reactNative.View,
301
- {
302
- className: cn(
303
- "shrink-0 items-center justify-center",
304
- metrics.slotClassName
305
- ),
306
- children: resolvedIcon
307
- }
308
- ) : null,
309
- typeof content === "string" || typeof content === "number" ? /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.View, { className: "items-center justify-center", children: /* @__PURE__ */ jsxRuntime$1.jsx(
310
- reactNative.Text,
311
- {
312
- className: cn(
313
- "font-bold",
314
- metrics.labelClassName,
315
- labelColorClassName,
316
- labelClassName
317
- ),
318
- numberOfLines: 1,
319
- style: nativeLabelBaseStyle,
320
- children: content
321
- }
322
- ) }) : content
323
- ]
324
- }
325
- )
326
- }
327
- );
254
+ const label = text ?? children;
255
+ const resolvedIcon = typeof icon === "function" ? icon({ color: "currentColor", size: tokens.icon }) : icon;
256
+ const isBusy = disabled || loading;
257
+ return {
258
+ size: resolvedSize,
259
+ shape: resolvedShape,
260
+ tokens,
261
+ isBusy,
262
+ isInteractive: !isBusy,
263
+ isTextMode: mode === "text",
264
+ block,
265
+ loading,
266
+ iconSize: tokens.icon,
267
+ icon: resolvedIcon,
268
+ iconPosition,
269
+ label,
270
+ hasTextLabel: typeof label === "string" || typeof label === "number",
271
+ variantClassName,
272
+ shapeClassName: buttonShapes[resolvedShape],
273
+ labelColorClassName: extractTextColorClasses(variantClassName),
274
+ selected: accessibilityState?.selected,
275
+ onPress,
276
+ rootRest
277
+ };
328
278
  }
279
+ var NATIVE_ROOT = "relative items-center justify-center overflow-hidden";
280
+ var nativeLabelBaseStyle = {
281
+ includeFontPadding: false,
282
+ textAlignVertical: "center"
283
+ };
284
+ var Button = react.forwardRef(
285
+ function Button2(props, ref) {
286
+ const {
287
+ className,
288
+ contentClassName,
289
+ labelClassName,
290
+ accessibilityLabel,
291
+ accessibilityRole = "button",
292
+ testID
293
+ } = props;
294
+ const model = useButton(props);
295
+ const trailing = model.iconPosition === "trailing";
296
+ const iconSlot = model.loading || model.icon ? /* @__PURE__ */ jsxRuntime.jsx(
297
+ reactNative.View,
298
+ {
299
+ className: cn(
300
+ "shrink-0 items-center justify-center",
301
+ model.tokens.slot
302
+ ),
303
+ children: model.loading ? /* @__PURE__ */ jsxRuntime.jsx(
304
+ reactNative.ActivityIndicator,
305
+ {
306
+ className: model.labelColorClassName,
307
+ size: "small"
308
+ }
309
+ ) : model.icon
310
+ }
311
+ ) : null;
312
+ const labelNode = model.hasTextLabel ? /* @__PURE__ */ jsxRuntime.jsx(
313
+ reactNative.Text,
314
+ {
315
+ className: cn(
316
+ "font-bold",
317
+ model.tokens.text,
318
+ model.tokens.leading,
319
+ model.labelColorClassName,
320
+ labelClassName
321
+ ),
322
+ numberOfLines: 1,
323
+ style: nativeLabelBaseStyle,
324
+ children: model.label
325
+ }
326
+ ) : model.label;
327
+ return /* @__PURE__ */ jsxRuntime.jsx(
328
+ reactNative.Pressable,
329
+ {
330
+ ...model.rootRest,
331
+ ref,
332
+ accessibilityLabel,
333
+ accessibilityRole,
334
+ accessibilityState: { disabled: model.isBusy, selected: model.selected },
335
+ testID,
336
+ disabled: model.isBusy,
337
+ onPress: model.onPress,
338
+ className: cn(
339
+ NATIVE_ROOT,
340
+ model.variantClassName,
341
+ model.shapeClassName,
342
+ model.tokens.padding,
343
+ model.tokens.minHeight,
344
+ model.block && "w-full",
345
+ model.isTextMode && buttonTextModeClassName,
346
+ model.isBusy ? "opacity-55" : "active:opacity-80",
347
+ className
348
+ ),
349
+ style: ({ pressed }) => pressed && model.isInteractive ? { opacity: 0.82 } : null,
350
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
351
+ reactNative.View,
352
+ {
353
+ className: cn(
354
+ "z-10 flex-row items-center justify-center gap-2",
355
+ contentClassName
356
+ ),
357
+ children: [
358
+ trailing ? labelNode : iconSlot,
359
+ trailing ? iconSlot : labelNode
360
+ ]
361
+ }
362
+ )
363
+ }
364
+ );
365
+ }
366
+ );
329
367
  var Button_native_default = Button;
330
368
  function isMultiCheckbox(props) {
331
369
  return Array.isArray(props.options);
@@ -445,7 +483,7 @@ function Tick({
445
483
  checkedIconClassName,
446
484
  iconClassName
447
485
  }) {
448
- return /* @__PURE__ */ jsxRuntime$1.jsx(
486
+ return /* @__PURE__ */ jsxRuntime.jsx(
449
487
  reactNative.Text,
450
488
  {
451
489
  className: cn(
@@ -497,8 +535,8 @@ function Checkbox(checkboxProps) {
497
535
  const optionColumns = multiProps ? chunkCheckboxOptions(multiProps.options, multiProps.columns) : [];
498
536
  const singleChecked = singleField.value;
499
537
  const errorText = activeMeta.touched && typeof activeMeta.error === "string" ? activeMeta.error : null;
500
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: cn(checkboxGroupClassName, groupClassName), children: [
501
- !isMulti && /* @__PURE__ */ jsxRuntime$1.jsxs(
538
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn(checkboxGroupClassName, groupClassName), children: [
539
+ !isMulti && /* @__PURE__ */ jsxRuntime.jsxs(
502
540
  reactNative.Pressable,
503
541
  {
504
542
  accessibilityRole: "checkbox",
@@ -510,7 +548,7 @@ function Checkbox(checkboxProps) {
510
548
  disabled,
511
549
  onPress: () => singleHelpers.setValue(!singleChecked),
512
550
  children: [
513
- /* @__PURE__ */ jsxRuntime$1.jsx(
551
+ /* @__PURE__ */ jsxRuntime.jsx(
514
552
  reactNative.View,
515
553
  {
516
554
  className: getIndicatorClassName({
@@ -522,7 +560,7 @@ function Checkbox(checkboxProps) {
522
560
  resolvedShape,
523
561
  variantCheckedClassName: variantStyles.checkedClassName
524
562
  }),
525
- children: singleChecked ? /* @__PURE__ */ jsxRuntime$1.jsx(
563
+ children: singleChecked ? /* @__PURE__ */ jsxRuntime.jsx(
526
564
  Tick,
527
565
  {
528
566
  checkedIconClassName,
@@ -531,11 +569,11 @@ function Checkbox(checkboxProps) {
531
569
  ) : null
532
570
  }
533
571
  ),
534
- resolvedLabel ? /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.Text, { className: cn(checkboxLabelClassName, labelClassName), children: resolvedLabel }) : null
572
+ resolvedLabel ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: cn(checkboxLabelClassName, labelClassName), children: resolvedLabel }) : null
535
573
  ]
536
574
  }
537
575
  ),
538
- isMulti && multiProps ? /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.View, { className: "w-full flex-row gap-6", children: optionColumns.map((columnOptions, columnIndex) => /* @__PURE__ */ jsxRuntime$1.jsx(
576
+ isMulti && multiProps ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "w-full flex-row gap-6", children: optionColumns.map((columnOptions, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
539
577
  reactNative.View,
540
578
  {
541
579
  className: "min-w-0 flex-1 flex-col gap-2",
@@ -543,7 +581,7 @@ function Checkbox(checkboxProps) {
543
581
  const values = multiField.value ?? [];
544
582
  const checked = values.includes(option.value);
545
583
  const optionDisabled = disabled || option.disabled === true;
546
- return /* @__PURE__ */ jsxRuntime$1.jsxs(
584
+ return /* @__PURE__ */ jsxRuntime.jsxs(
547
585
  reactNative.Pressable,
548
586
  {
549
587
  accessibilityRole: "checkbox",
@@ -557,7 +595,7 @@ function Checkbox(checkboxProps) {
557
595
  checked ? values.filter((value) => value !== option.value) : [...values, option.value]
558
596
  ),
559
597
  children: [
560
- /* @__PURE__ */ jsxRuntime$1.jsx(
598
+ /* @__PURE__ */ jsxRuntime.jsx(
561
599
  reactNative.View,
562
600
  {
563
601
  className: getIndicatorClassName({
@@ -569,7 +607,7 @@ function Checkbox(checkboxProps) {
569
607
  resolvedShape,
570
608
  variantCheckedClassName: variantStyles.checkedClassName
571
609
  }),
572
- children: checked ? /* @__PURE__ */ jsxRuntime$1.jsx(
610
+ children: checked ? /* @__PURE__ */ jsxRuntime.jsx(
573
611
  Tick,
574
612
  {
575
613
  checkedIconClassName,
@@ -578,7 +616,7 @@ function Checkbox(checkboxProps) {
578
616
  ) : null
579
617
  }
580
618
  ),
581
- /* @__PURE__ */ jsxRuntime$1.jsx(
619
+ /* @__PURE__ */ jsxRuntime.jsx(
582
620
  reactNative.Text,
583
621
  {
584
622
  className: cn(
@@ -597,7 +635,7 @@ function Checkbox(checkboxProps) {
597
635
  },
598
636
  `${multiField.name}-column-${columnIndex}`
599
637
  )) }) : null,
600
- errorText ? /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.Text, { className: "px-2 py-1 text-sm font-medium text-eui-danger-500", children: errorText }) : null
638
+ errorText ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: "px-2 py-1 text-sm font-medium text-eui-danger-500", children: errorText }) : null
601
639
  ] });
602
640
  }
603
641
 
@@ -678,7 +716,7 @@ function InputLabel({
678
716
  lineHeight: floating === true ? nativeInputLabelMetrics.floatingFontSize : nativeInputLabelMetrics.restingFontSize,
679
717
  top: floating === true ? nativeInputLabelMetrics.floatingTop : nativeInputLabelMetrics.restingTop
680
718
  };
681
- return /* @__PURE__ */ jsxRuntime$1.jsx(
719
+ return /* @__PURE__ */ jsxRuntime.jsx(
682
720
  reactNative.Animated.Text,
683
721
  {
684
722
  className: cn(
@@ -742,8 +780,8 @@ function InputResponse({
742
780
  }
743
781
  ]
744
782
  };
745
- const content = message ?? /* @__PURE__ */ jsxRuntime$1.jsx(formik.ErrorMessage, { name, children: (errorMessage) => String(errorMessage) });
746
- return /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.Animated.View, { className: "w-full", style: animatedStyle, children: /* @__PURE__ */ jsxRuntime$1.jsx(
783
+ const content = message ?? /* @__PURE__ */ jsxRuntime.jsx(formik.ErrorMessage, { name, children: (errorMessage) => String(errorMessage) });
784
+ return /* @__PURE__ */ jsxRuntime.jsx(reactNative.Animated.View, { className: "w-full", style: animatedStyle, children: /* @__PURE__ */ jsxRuntime.jsx(
747
785
  reactNative.Text,
748
786
  {
749
787
  className: cn(
@@ -826,8 +864,8 @@ function DateSelector(dateSelectorProps) {
826
864
  event
827
865
  );
828
866
  };
829
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: inputRootClassName, children: [
830
- /* @__PURE__ */ jsxRuntime$1.jsx(
867
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: inputRootClassName, children: [
868
+ /* @__PURE__ */ jsxRuntime.jsx(
831
869
  reactNative.View,
832
870
  {
833
871
  className: cn(
@@ -838,7 +876,7 @@ function DateSelector(dateSelectorProps) {
838
876
  className,
839
877
  styles
840
878
  ),
841
- children: /* @__PURE__ */ jsxRuntime$1.jsx(
879
+ children: /* @__PURE__ */ jsxRuntime.jsx(
842
880
  reactNative.TextInput,
843
881
  {
844
882
  accessibilityLabel: resolvedLabel,
@@ -860,7 +898,7 @@ function DateSelector(dateSelectorProps) {
860
898
  )
861
899
  }
862
900
  ),
863
- /* @__PURE__ */ jsxRuntime$1.jsx(
901
+ /* @__PURE__ */ jsxRuntime.jsx(
864
902
  InputLabel,
865
903
  {
866
904
  animatedValue: labelProgress,
@@ -871,7 +909,7 @@ function DateSelector(dateSelectorProps) {
871
909
  className: labelClassName
872
910
  }
873
911
  ),
874
- /* @__PURE__ */ jsxRuntime$1.jsx(
912
+ /* @__PURE__ */ jsxRuntime.jsx(
875
913
  InputResponse,
876
914
  {
877
915
  message: errorText,
@@ -923,7 +961,7 @@ function Form({
923
961
  onChange,
924
962
  onDirtyChange
925
963
  }) {
926
- return /* @__PURE__ */ jsxRuntime$1.jsx(
964
+ return /* @__PURE__ */ jsxRuntime.jsx(
927
965
  formik.Formik,
928
966
  {
929
967
  initialValues,
@@ -932,8 +970,8 @@ function Form({
932
970
  onSubmit: async (values, helpers) => {
933
971
  await onSubmit(values, helpers);
934
972
  },
935
- children: (formik) => /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: cn(className), children: [
936
- /* @__PURE__ */ jsxRuntime$1.jsx(
973
+ children: (formik) => /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: cn(className), children: [
974
+ /* @__PURE__ */ jsxRuntime.jsx(
937
975
  FormObservers,
938
976
  {
939
977
  formik,
@@ -941,7 +979,7 @@ function Form({
941
979
  onDirtyChange
942
980
  }
943
981
  ),
944
- /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.View, { className: cn(contentClassName), children: renderFormChildren(children, formik) })
982
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: cn(contentClassName), children: renderFormChildren(children, formik) })
945
983
  ] })
946
984
  }
947
985
  );
@@ -1014,7 +1052,7 @@ function FormResponse({
1014
1052
  return null;
1015
1053
  }
1016
1054
  const styles = resolveFormResponseStyles({ shape, size, variant });
1017
- return /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.View, { className: cn(styles.rootClassName, className), children: /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.Text, { className: cn(styles.textClassName, textClassName), children: text }) });
1055
+ return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: cn(styles.rootClassName, className), children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: cn(styles.textClassName, textClassName), children: text }) });
1018
1056
  }
1019
1057
  function resolveInputType({
1020
1058
  passwordVisible,
@@ -1101,8 +1139,8 @@ function Input(inputProps) {
1101
1139
  setFocused(true);
1102
1140
  onFocus?.(event);
1103
1141
  };
1104
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: inputRootClassName, children: [
1105
- /* @__PURE__ */ jsxRuntime$1.jsx(
1142
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: inputRootClassName, children: [
1143
+ /* @__PURE__ */ jsxRuntime.jsx(
1106
1144
  reactNative.View,
1107
1145
  {
1108
1146
  className: cn(
@@ -1112,7 +1150,7 @@ function Input(inputProps) {
1112
1150
  disabled && inputFrameDisabledClassName,
1113
1151
  className
1114
1152
  ),
1115
- children: /* @__PURE__ */ jsxRuntime$1.jsx(
1153
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1116
1154
  reactNative.TextInput,
1117
1155
  {
1118
1156
  accessibilityLabel: resolvedLabel,
@@ -1136,7 +1174,7 @@ function Input(inputProps) {
1136
1174
  )
1137
1175
  }
1138
1176
  ),
1139
- /* @__PURE__ */ jsxRuntime$1.jsx(
1177
+ /* @__PURE__ */ jsxRuntime.jsx(
1140
1178
  InputLabel,
1141
1179
  {
1142
1180
  animatedValue: labelProgress,
@@ -1147,7 +1185,7 @@ function Input(inputProps) {
1147
1185
  className: labelClassName
1148
1186
  }
1149
1187
  ),
1150
- type === "password" ? /* @__PURE__ */ jsxRuntime$1.jsx(
1188
+ type === "password" ? /* @__PURE__ */ jsxRuntime.jsx(
1151
1189
  reactNative.Pressable,
1152
1190
  {
1153
1191
  accessibilityRole: "button",
@@ -1155,10 +1193,10 @@ function Input(inputProps) {
1155
1193
  className: nativePasswordToggleClassName,
1156
1194
  disabled,
1157
1195
  onPress: () => setPasswordVisible((current) => !current),
1158
- children: /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.Text, { className: nativePasswordToggleTextClassName, children: passwordVisible ? "Hide" : "Show" })
1196
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: nativePasswordToggleTextClassName, children: passwordVisible ? "Hide" : "Show" })
1159
1197
  }
1160
1198
  ) : null,
1161
- /* @__PURE__ */ jsxRuntime$1.jsx(
1199
+ /* @__PURE__ */ jsxRuntime.jsx(
1162
1200
  InputResponse,
1163
1201
  {
1164
1202
  message: errorText,
@@ -1241,8 +1279,8 @@ function InputFile(inputFileProps) {
1241
1279
  await helpers.setTouched(true);
1242
1280
  }
1243
1281
  };
1244
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: inputRootClassName, children: [
1245
- /* @__PURE__ */ jsxRuntime$1.jsx(
1282
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: inputRootClassName, children: [
1283
+ /* @__PURE__ */ jsxRuntime.jsx(
1246
1284
  reactNative.Pressable,
1247
1285
  {
1248
1286
  accessibilityLabel: resolvedLabel,
@@ -1259,7 +1297,7 @@ function InputFile(inputFileProps) {
1259
1297
  disabled && inputFrameDisabledClassName,
1260
1298
  className
1261
1299
  ),
1262
- children: /* @__PURE__ */ jsxRuntime$1.jsx(
1300
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1263
1301
  reactNative.Text,
1264
1302
  {
1265
1303
  numberOfLines: 1,
@@ -1275,7 +1313,7 @@ function InputFile(inputFileProps) {
1275
1313
  )
1276
1314
  }
1277
1315
  ),
1278
- /* @__PURE__ */ jsxRuntime$1.jsx(
1316
+ /* @__PURE__ */ jsxRuntime.jsx(
1279
1317
  InputLabel,
1280
1318
  {
1281
1319
  disabled,
@@ -1285,7 +1323,7 @@ function InputFile(inputFileProps) {
1285
1323
  className: labelClassName
1286
1324
  }
1287
1325
  ),
1288
- /* @__PURE__ */ jsxRuntime$1.jsx(
1326
+ /* @__PURE__ */ jsxRuntime.jsx(
1289
1327
  InputResponse,
1290
1328
  {
1291
1329
  message: errorText,
@@ -1380,8 +1418,8 @@ function Select(selectProps) {
1380
1418
  setFocused(true);
1381
1419
  onFocus?.(event);
1382
1420
  };
1383
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: inputRootClassName, children: [
1384
- /* @__PURE__ */ jsxRuntime$1.jsx(
1421
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: inputRootClassName, children: [
1422
+ /* @__PURE__ */ jsxRuntime.jsx(
1385
1423
  reactNative.Pressable,
1386
1424
  {
1387
1425
  accessibilityLabel: resolvedLabel,
@@ -1400,7 +1438,7 @@ function Select(selectProps) {
1400
1438
  className,
1401
1439
  styles
1402
1440
  ),
1403
- children: /* @__PURE__ */ jsxRuntime$1.jsx(
1441
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1404
1442
  reactNative.Text,
1405
1443
  {
1406
1444
  numberOfLines: 1,
@@ -1416,7 +1454,7 @@ function Select(selectProps) {
1416
1454
  )
1417
1455
  }
1418
1456
  ),
1419
- /* @__PURE__ */ jsxRuntime$1.jsx(
1457
+ /* @__PURE__ */ jsxRuntime.jsx(
1420
1458
  InputLabel,
1421
1459
  {
1422
1460
  disabled,
@@ -1426,7 +1464,7 @@ function Select(selectProps) {
1426
1464
  className: labelClassName
1427
1465
  }
1428
1466
  ),
1429
- /* @__PURE__ */ jsxRuntime$1.jsx(
1467
+ /* @__PURE__ */ jsxRuntime.jsx(
1430
1468
  InputResponse,
1431
1469
  {
1432
1470
  message: errorText,
@@ -1436,15 +1474,15 @@ function Select(selectProps) {
1436
1474
  className: responseClassName
1437
1475
  }
1438
1476
  ),
1439
- /* @__PURE__ */ jsxRuntime$1.jsx(
1477
+ /* @__PURE__ */ jsxRuntime.jsx(
1440
1478
  reactNative.Modal,
1441
1479
  {
1442
1480
  animationType: "fade",
1443
1481
  onRequestClose: closeOptions,
1444
1482
  transparent: true,
1445
1483
  visible: open,
1446
- children: /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: "flex-1 justify-end bg-black/40 px-4 py-6", children: [
1447
- /* @__PURE__ */ jsxRuntime$1.jsx(
1484
+ children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: "flex-1 justify-end bg-black/40 px-4 py-6", children: [
1485
+ /* @__PURE__ */ jsxRuntime.jsx(
1448
1486
  reactNative.Pressable,
1449
1487
  {
1450
1488
  accessibilityLabel: "Close select options",
@@ -1453,9 +1491,9 @@ function Select(selectProps) {
1453
1491
  onPress: closeOptions
1454
1492
  }
1455
1493
  ),
1456
- /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.View, { className: "max-h-[70%] overflow-hidden rounded-lg bg-white shadow-xl dark:bg-eui-dark-500", children: /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.ScrollView, { children: options.map((option) => {
1494
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "max-h-[70%] overflow-hidden rounded-lg bg-white shadow-xl dark:bg-eui-dark-500", children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.ScrollView, { children: options.map((option) => {
1457
1495
  const selected = option.value === field.value;
1458
- return /* @__PURE__ */ jsxRuntime$1.jsx(
1496
+ return /* @__PURE__ */ jsxRuntime.jsx(
1459
1497
  reactNative.Pressable,
1460
1498
  {
1461
1499
  accessibilityRole: "button",
@@ -1470,7 +1508,7 @@ function Select(selectProps) {
1470
1508
  selected && "bg-eui-secondary-500/10",
1471
1509
  option.disabled && "opacity-50"
1472
1510
  ),
1473
- children: /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.Text, { className: "text-base font-medium text-gray-950 dark:text-gray-50", children: String(option.label) })
1511
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { className: "text-base font-medium text-gray-950 dark:text-gray-50", children: String(option.label) })
1474
1512
  },
1475
1513
  option.value
1476
1514
  );
@@ -1601,8 +1639,8 @@ function Tags(tagsProps) {
1601
1639
  setFocused(true);
1602
1640
  onFocus?.(event);
1603
1641
  };
1604
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: inputRootClassName, children: [
1605
- /* @__PURE__ */ jsxRuntime$1.jsxs(
1642
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: inputRootClassName, children: [
1643
+ /* @__PURE__ */ jsxRuntime.jsxs(
1606
1644
  reactNative.View,
1607
1645
  {
1608
1646
  className: cn(
@@ -1615,7 +1653,7 @@ function Tags(tagsProps) {
1615
1653
  styles
1616
1654
  ),
1617
1655
  children: [
1618
- tags.map((tag, index) => /* @__PURE__ */ jsxRuntime$1.jsxs(
1656
+ tags.map((tag, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1619
1657
  reactNative.View,
1620
1658
  {
1621
1659
  className: cn(
@@ -1623,7 +1661,7 @@ function Tags(tagsProps) {
1623
1661
  tagClassName
1624
1662
  ),
1625
1663
  children: [
1626
- /* @__PURE__ */ jsxRuntime$1.jsx(
1664
+ /* @__PURE__ */ jsxRuntime.jsx(
1627
1665
  reactNative.Text,
1628
1666
  {
1629
1667
  className: "shrink text-sm font-medium text-eui-dark-700 dark:text-eui-light-300",
@@ -1632,7 +1670,7 @@ function Tags(tagsProps) {
1632
1670
  children: tag
1633
1671
  }
1634
1672
  ),
1635
- /* @__PURE__ */ jsxRuntime$1.jsx(
1673
+ /* @__PURE__ */ jsxRuntime.jsx(
1636
1674
  reactNative.Pressable,
1637
1675
  {
1638
1676
  accessibilityLabel: `Remove ${tag}`,
@@ -1644,7 +1682,7 @@ function Tags(tagsProps) {
1644
1682
  ),
1645
1683
  disabled,
1646
1684
  onPress: () => handleRemoveTag(index),
1647
- children: /* @__PURE__ */ jsxRuntime$1.jsx(
1685
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1648
1686
  reactNative.Text,
1649
1687
  {
1650
1688
  className: "text-xs font-bold text-eui-danger-500",
@@ -1658,7 +1696,7 @@ function Tags(tagsProps) {
1658
1696
  },
1659
1697
  `${tag}-${index}`
1660
1698
  )),
1661
- tags.length < resolvedLimit ? /* @__PURE__ */ jsxRuntime$1.jsx(
1699
+ tags.length < resolvedLimit ? /* @__PURE__ */ jsxRuntime.jsx(
1662
1700
  reactNative.TextInput,
1663
1701
  {
1664
1702
  accessibilityLabel: resolvedLabel,
@@ -1680,7 +1718,7 @@ function Tags(tagsProps) {
1680
1718
  value: input
1681
1719
  }
1682
1720
  ) : null,
1683
- /* @__PURE__ */ jsxRuntime$1.jsxs(
1721
+ /* @__PURE__ */ jsxRuntime.jsxs(
1684
1722
  reactNative.Text,
1685
1723
  {
1686
1724
  className: cn(
@@ -1698,7 +1736,7 @@ function Tags(tagsProps) {
1698
1736
  ]
1699
1737
  }
1700
1738
  ),
1701
- /* @__PURE__ */ jsxRuntime$1.jsx(
1739
+ /* @__PURE__ */ jsxRuntime.jsx(
1702
1740
  InputLabel,
1703
1741
  {
1704
1742
  disabled,
@@ -1708,7 +1746,7 @@ function Tags(tagsProps) {
1708
1746
  className: labelClassName
1709
1747
  }
1710
1748
  ),
1711
- /* @__PURE__ */ jsxRuntime$1.jsx(
1749
+ /* @__PURE__ */ jsxRuntime.jsx(
1712
1750
  InputResponse,
1713
1751
  {
1714
1752
  message: errorText,
@@ -1790,8 +1828,8 @@ function TextArea(textAreaProps) {
1790
1828
  setFocused(true);
1791
1829
  onFocus?.(event);
1792
1830
  };
1793
- return /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.View, { className: inputRootClassName, children: [
1794
- /* @__PURE__ */ jsxRuntime$1.jsxs(
1831
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { className: inputRootClassName, children: [
1832
+ /* @__PURE__ */ jsxRuntime.jsxs(
1795
1833
  reactNative.View,
1796
1834
  {
1797
1835
  className: cn(
@@ -1804,7 +1842,7 @@ function TextArea(textAreaProps) {
1804
1842
  styles
1805
1843
  ),
1806
1844
  children: [
1807
- /* @__PURE__ */ jsxRuntime$1.jsx(
1845
+ /* @__PURE__ */ jsxRuntime.jsx(
1808
1846
  reactNative.TextInput,
1809
1847
  {
1810
1848
  accessibilityLabel: resolvedLabel,
@@ -1821,7 +1859,7 @@ function TextArea(textAreaProps) {
1821
1859
  value: field.value ?? ""
1822
1860
  }
1823
1861
  ),
1824
- /* @__PURE__ */ jsxRuntime$1.jsxs(reactNative.Text, { className: "absolute bottom-3 right-3 text-xs font-semibold text-eui-dark-50", children: [
1862
+ /* @__PURE__ */ jsxRuntime.jsxs(reactNative.Text, { className: "absolute bottom-3 right-3 text-xs font-semibold text-eui-dark-50", children: [
1825
1863
  characterCount,
1826
1864
  "/",
1827
1865
  resolvedLimit
@@ -1829,7 +1867,7 @@ function TextArea(textAreaProps) {
1829
1867
  ]
1830
1868
  }
1831
1869
  ),
1832
- /* @__PURE__ */ jsxRuntime$1.jsx(
1870
+ /* @__PURE__ */ jsxRuntime.jsx(
1833
1871
  InputLabel,
1834
1872
  {
1835
1873
  disabled,
@@ -1839,7 +1877,7 @@ function TextArea(textAreaProps) {
1839
1877
  className: labelClassName
1840
1878
  }
1841
1879
  ),
1842
- /* @__PURE__ */ jsxRuntime$1.jsx(
1880
+ /* @__PURE__ */ jsxRuntime.jsx(
1843
1881
  InputResponse,
1844
1882
  {
1845
1883
  message: errorText,