@hoddy-ui/core 1.1.4 → 2.0.35

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 (38) hide show
  1. package/README.md +155 -28
  2. package/next/dist/index.d.mts +113 -41
  3. package/next/dist/index.d.ts +113 -41
  4. package/next/dist/index.js +444 -297
  5. package/next/dist/index.js.map +1 -1
  6. package/next/dist/index.mjs +460 -307
  7. package/next/dist/index.mjs.map +1 -1
  8. package/next/package.json +7 -6
  9. package/package.json +7 -5
  10. package/src/Components/AlertX.tsx +4 -4
  11. package/src/Components/Animators/Animator.tsx +1 -1
  12. package/src/Components/Animators/hooks/useAppState.ts +4 -11
  13. package/src/Components/Animators/hooks/useBlinkAnimation.ts +31 -24
  14. package/src/Components/Animators/hooks/useFadeAnimation.ts +28 -26
  15. package/src/Components/Animators/hooks/useFloatAnimation.ts +67 -57
  16. package/src/Components/Animators/hooks/useGrowAnimation.ts +41 -28
  17. package/src/Components/Animators/hooks/useRollAnimation.ts +77 -57
  18. package/src/Components/Animators/hooks/useSlideAnimation.ts +44 -35
  19. package/src/Components/Animators/hooks/useThrownUpAnimation.ts +43 -50
  20. package/src/Components/Avatar.tsx +13 -7
  21. package/src/Components/Button.tsx +13 -12
  22. package/src/Components/FlashMessage.tsx +119 -42
  23. package/src/Components/FormWrapper.tsx +7 -2
  24. package/src/Components/Grid.tsx +5 -5
  25. package/src/Components/Locator.tsx +10 -2
  26. package/src/Components/OTPInput.tsx +0 -4
  27. package/src/Components/Popup.tsx +161 -83
  28. package/src/Components/SafeAreaView.tsx +11 -11
  29. package/src/Components/SelectMenu.tsx +34 -52
  30. package/src/Components/TextField.tsx +16 -6
  31. package/src/Components/Typography.tsx +19 -16
  32. package/src/config/KeyManager.ts +6 -1
  33. package/src/config/index.ts +37 -2
  34. package/src/hooks.ts +21 -14
  35. package/src/theme/index.tsx +14 -6
  36. package/src/types.ts +12 -3
  37. package/src/utility.ts +11 -0
  38. package/src/Components/Animators/README.md +0 -137
@@ -61,7 +61,8 @@ __export(next_exports, {
61
61
  showFlashMessage: () => showFlashMessage,
62
62
  useColors: () => useColors,
63
63
  useNavScreenOptions: () => useNavScreenOptions,
64
- useTheme: () => useTheme
64
+ useTheme: () => useTheme,
65
+ useThemeContext: () => useThemeContext
65
66
  });
66
67
  module.exports = __toCommonJS(next_exports);
67
68
 
@@ -228,7 +229,7 @@ function initialize(config2) {
228
229
  try {
229
230
  setConfig({
230
231
  GOOGLE_MAP_API_KEY: config2.googleMapApiKey,
231
- DEFAULT_FONT_FAMILY: config2.fontFamily,
232
+ TYPOGRAPHY: config2.typography,
232
233
  EDGE_TO_EDGE: config2.edgeToEdge ?? false
233
234
  });
234
235
  if (config2.colors)
@@ -246,7 +247,6 @@ var import_react_native5 = require("react-native");
246
247
  // ../src/hooks.ts
247
248
  var import_react4 = require("react");
248
249
  var import_react_native4 = require("react-native");
249
- var import_react_native_size_matters3 = require("react-native-size-matters");
250
250
 
251
251
  // ../src/theme/index.tsx
252
252
  var import_async_storage = __toESM(require("@react-native-async-storage/async-storage"));
@@ -259,6 +259,7 @@ var import_react_native_safe_area_context2 = require("react-native-safe-area-con
259
259
  // ../src/Components/FlashMessage.tsx
260
260
  var import_react2 = __toESM(require("react"));
261
261
  var import_react_native2 = require("react-native");
262
+ var import_react_native_reanimated = __toESM(require("react-native-reanimated"));
262
263
  var import_react_native_safe_area_context = require("react-native-safe-area-context");
263
264
  var import_react_native_size_matters2 = require("react-native-size-matters");
264
265
 
@@ -266,12 +267,19 @@ var import_react_native_size_matters2 = require("react-native-size-matters");
266
267
  var import_react = __toESM(require("react"));
267
268
  var import_react_native = require("react-native");
268
269
  var import_react_native_size_matters = require("react-native-size-matters");
270
+
271
+ // ../src/utility.ts
272
+ var getFontFamily = (fontWeight) => {
273
+ return getConfig().TYPOGRAPHY?.fontWeights?.[fontWeight] || getConfig().TYPOGRAPHY?.fontFamily || void 0;
274
+ };
275
+
276
+ // ../src/Components/Typography.tsx
269
277
  var Typography = (0, import_react.forwardRef)(
270
278
  ({
271
279
  children,
272
280
  color = "dark",
273
281
  style = {},
274
- textCase = null,
282
+ textCase,
275
283
  variant = "body1",
276
284
  align = "left",
277
285
  gutterBottom = 0,
@@ -279,31 +287,33 @@ var Typography = (0, import_react.forwardRef)(
279
287
  fontWeight = 400,
280
288
  fontFamily,
281
289
  // NEW PROP ADDED
290
+ fontSize,
282
291
  ...props
283
292
  }, ref) => {
284
293
  const colors2 = useColors();
285
- const fontSize = {
286
- h1: (0, import_react_native_size_matters.moderateScale)(42),
287
- h2: (0, import_react_native_size_matters.moderateScale)(37),
288
- h3: (0, import_react_native_size_matters.moderateScale)(32),
289
- h4: (0, import_react_native_size_matters.moderateScale)(27),
290
- h5: (0, import_react_native_size_matters.moderateScale)(22),
291
- h6: (0, import_react_native_size_matters.moderateScale)(17),
292
- body1: (0, import_react_native_size_matters.moderateScale)(15),
293
- body2: (0, import_react_native_size_matters.moderateScale)(12),
294
- caption: (0, import_react_native_size_matters.moderateScale)(10)
294
+ const _fontSize = {
295
+ h1: (0, import_react_native_size_matters.ms)(42),
296
+ h2: (0, import_react_native_size_matters.ms)(37),
297
+ h3: (0, import_react_native_size_matters.ms)(32),
298
+ h4: (0, import_react_native_size_matters.ms)(27),
299
+ h5: (0, import_react_native_size_matters.ms)(22),
300
+ h6: (0, import_react_native_size_matters.ms)(17),
301
+ body1: (0, import_react_native_size_matters.ms)(15),
302
+ body2: (0, import_react_native_size_matters.ms)(12),
303
+ caption: (0, import_react_native_size_matters.ms)(10)
295
304
  };
296
- const styles2 = import_react_native.StyleSheet.create({
305
+ const f = fontSize || _fontSize[variant];
306
+ const styles = import_react_native.StyleSheet.create({
297
307
  text: {
298
- fontSize: fontSize[variant],
299
- marginBottom: (0, import_react_native_size_matters.verticalScale)(gutterBottom) || 0,
308
+ lineHeight: f * 1.2,
309
+ fontSize: f,
310
+ marginBottom: (0, import_react_native_size_matters.ms)(gutterBottom) || 0,
300
311
  color: colors2[color]?.main || color,
301
312
  textTransform: textCase,
302
313
  alignItems: "center",
303
314
  textAlign: align,
304
315
  fontWeight,
305
- fontFamily: fontFamily || getConfig().DEFAULT_FONT_FAMILY || void 0
306
- // Use custom font if provided, else default
316
+ fontFamily: fontFamily || getFontFamily(fontWeight)
307
317
  }
308
318
  });
309
319
  return /* @__PURE__ */ import_react.default.createElement(
@@ -311,7 +321,7 @@ var Typography = (0, import_react.forwardRef)(
311
321
  {
312
322
  ref,
313
323
  adjustsFontSizeToFit,
314
- style: [styles2.text, style],
324
+ style: [styles.text, style],
315
325
  ...props
316
326
  },
317
327
  children
@@ -321,33 +331,76 @@ var Typography = (0, import_react.forwardRef)(
321
331
  var Typography_default = Typography;
322
332
 
323
333
  // ../src/Components/FlashMessage.tsx
324
- var showFlashMessage = () => {
334
+ var flashListeners = /* @__PURE__ */ new Set();
335
+ var showFlashMessage = (msg) => {
336
+ flashListeners.forEach((listener) => listener(msg));
337
+ };
338
+ var subscribeToFlashMessages = (listener) => {
339
+ flashListeners.add(listener);
340
+ return () => {
341
+ flashListeners.delete(listener);
342
+ };
325
343
  };
326
344
  var FlashMessage = () => {
327
345
  const { top } = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
328
346
  const [message, setMessage] = (0, import_react2.useState)(null);
329
- const [show, setShow] = (0, import_react2.useState)(false);
330
347
  const colors2 = useColors();
331
348
  const type = message?.type || "success";
332
- showFlashMessage = (msg) => {
333
- setMessage(msg);
334
- setTimeout(() => {
335
- setShow(true);
336
- }, 50);
337
- setTimeout(() => {
338
- setShow(false);
339
- setTimeout(() => {
340
- setMessage(null);
341
- }, 500);
342
- }, msg.duration || 3e3);
349
+ const timeoutRef = (0, import_react2.useRef)(null);
350
+ const translateY = (0, import_react_native_reanimated.useSharedValue)(-200);
351
+ const opacity = (0, import_react_native_reanimated.useSharedValue)(0);
352
+ const hideMessage = () => {
353
+ setMessage(null);
354
+ };
355
+ const closeMessage = () => {
356
+ if (timeoutRef.current) {
357
+ clearTimeout(timeoutRef.current);
358
+ timeoutRef.current = null;
359
+ }
360
+ translateY.value = (0, import_react_native_reanimated.withTiming)(-200, { duration: 300 });
361
+ opacity.value = (0, import_react_native_reanimated.withTiming)(0, { duration: 300 }, () => {
362
+ (0, import_react_native_reanimated.runOnJS)(hideMessage)();
363
+ });
343
364
  };
344
365
  (0, import_react2.useEffect)(() => {
345
- import_react_native2.LayoutAnimation.configureNext(import_react_native2.LayoutAnimation.Presets.easeInEaseOut);
346
- }, [show]);
347
- const styles2 = import_react_native_size_matters2.ScaledSheet.create({
366
+ const listener = (msg) => {
367
+ if (timeoutRef.current) {
368
+ clearTimeout(timeoutRef.current);
369
+ timeoutRef.current = null;
370
+ }
371
+ translateY.value = -200;
372
+ opacity.value = 0;
373
+ setMessage(msg);
374
+ translateY.value = (0, import_react_native_reanimated.withTiming)(0, { duration: 300 });
375
+ opacity.value = (0, import_react_native_reanimated.withTiming)(1, { duration: 300 });
376
+ const duration = msg.duration || 3e3;
377
+ timeoutRef.current = setTimeout(() => {
378
+ translateY.value = (0, import_react_native_reanimated.withTiming)(-200, { duration: 300 });
379
+ opacity.value = (0, import_react_native_reanimated.withTiming)(0, { duration: 300 }, () => {
380
+ (0, import_react_native_reanimated.runOnJS)(hideMessage)();
381
+ });
382
+ timeoutRef.current = null;
383
+ }, duration);
384
+ };
385
+ const unsubscribe = subscribeToFlashMessages(listener);
386
+ return () => {
387
+ if (timeoutRef.current) {
388
+ clearTimeout(timeoutRef.current);
389
+ timeoutRef.current = null;
390
+ }
391
+ unsubscribe();
392
+ };
393
+ }, []);
394
+ const animatedStyle = (0, import_react_native_reanimated.useAnimatedStyle)(() => {
395
+ return {
396
+ transform: [{ translateY: translateY.value }],
397
+ opacity: opacity.value
398
+ };
399
+ });
400
+ const styles = import_react_native_size_matters2.ScaledSheet.create({
348
401
  root: {
349
402
  position: "absolute",
350
- top: show ? 0 : -200,
403
+ top: 0,
351
404
  zIndex: 1e3,
352
405
  left: 0,
353
406
  paddingTop: top + 10,
@@ -368,7 +421,9 @@ var FlashMessage = () => {
368
421
  backgroundColor: "#fff3"
369
422
  }
370
423
  });
371
- return /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles2.root }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: { flexDirection: "row" } }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: { flex: 1, marginRight: 10 } }, message?.title && /* @__PURE__ */ import_react2.default.createElement(
424
+ if (!message)
425
+ return null;
426
+ return /* @__PURE__ */ import_react2.default.createElement(import_react_native_reanimated.default.View, { style: [styles.root, animatedStyle] }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.TouchableOpacity, { onPress: closeMessage, activeOpacity: 0.9 }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: { flexDirection: "row" } }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: { flex: 1, marginRight: 10 } }, message?.title && /* @__PURE__ */ import_react2.default.createElement(
372
427
  Typography_default,
373
428
  {
374
429
  variant: "h6",
@@ -377,7 +432,18 @@ var FlashMessage = () => {
377
432
  style: { color: "#fff" }
378
433
  },
379
434
  message?.title
380
- ), /* @__PURE__ */ import_react2.default.createElement(Typography_default, { style: { color: "#fff" } }, message?.message))), message?.actions?.map((cur, i) => /* @__PURE__ */ import_react2.default.createElement(import_react_native2.TouchableOpacity, { key: i, style: styles2.action, onPress: cur.onPress }, /* @__PURE__ */ import_react2.default.createElement(Typography_default, { fontWeight: 700, style: { color: "#fff" } }, cur.title))));
435
+ ), /* @__PURE__ */ import_react2.default.createElement(Typography_default, { style: { color: "#fff" } }, message?.message)))), message?.actions?.map((cur, i) => /* @__PURE__ */ import_react2.default.createElement(
436
+ import_react_native2.TouchableOpacity,
437
+ {
438
+ key: i,
439
+ style: styles.action,
440
+ onPress: () => {
441
+ cur.onPress?.();
442
+ closeMessage();
443
+ }
444
+ },
445
+ /* @__PURE__ */ import_react2.default.createElement(Typography_default, { fontWeight: 700, style: { color: "#fff" } }, cur.title)
446
+ )));
381
447
  };
382
448
  var FlashMessage_default = FlashMessage;
383
449
 
@@ -386,6 +452,7 @@ var UIThemeContext = (0, import_react3.createContext)({
386
452
  themeState: { mode: "default", value: "light" }
387
453
  });
388
454
  function themeReducer(state, { type, payload }) {
455
+ import_async_storage.default.setItem("theme", type);
389
456
  switch (type) {
390
457
  case "dark":
391
458
  return { mode: "dark", value: "dark" };
@@ -404,12 +471,20 @@ var ConfigureSystemUI = () => {
404
471
  const config2 = getConfig();
405
472
  if (colors2) {
406
473
  SystemUI.setBackgroundColorAsync(colors2.white[1]);
407
- if (import_react_native3.Platform.OS === "android" && !config2.EDGE_TO_EDGE) {
408
- NavigationBar.setBackgroundColorAsync(colors2.white[1]);
409
- if (theme === "dark") {
410
- NavigationBar.setButtonStyleAsync("light");
474
+ if (import_react_native3.Platform.OS === "android") {
475
+ if (config2.EDGE_TO_EDGE) {
476
+ if (theme === "dark") {
477
+ NavigationBar.setStyle("light");
478
+ } else {
479
+ NavigationBar.setStyle("dark");
480
+ }
411
481
  } else {
412
- NavigationBar.setButtonStyleAsync("dark");
482
+ NavigationBar.setBackgroundColorAsync(colors2.white[1]);
483
+ if (theme === "dark") {
484
+ NavigationBar.setButtonStyleAsync("light");
485
+ } else {
486
+ NavigationBar.setButtonStyleAsync("dark");
487
+ }
413
488
  }
414
489
  }
415
490
  }
@@ -465,9 +540,20 @@ var useTheme = () => {
465
540
  const { themeState } = (0, import_react4.useContext)(UIThemeContext);
466
541
  return themeState.value;
467
542
  };
543
+ var useThemeContext = () => {
544
+ const { themeState: theme, themeDispatch } = (0, import_react4.useContext)(UIThemeContext);
545
+ const colorScheme = (0, import_react_native4.useColorScheme)();
546
+ const setTheme = (theme2) => {
547
+ if (theme2 === "default") {
548
+ themeDispatch?.({ type: "default", payload: colorScheme });
549
+ } else {
550
+ themeDispatch?.({ type: theme2 });
551
+ }
552
+ };
553
+ return { theme, setTheme };
554
+ };
468
555
  var useNavScreenOptions = (type) => {
469
556
  const colors2 = useColors();
470
- const theme = useTheme();
471
557
  const options = {
472
558
  stack: {
473
559
  headerShown: false,
@@ -487,15 +573,12 @@ var useNavScreenOptions = (type) => {
487
573
  headerShown: false,
488
574
  headerTintColor: colors2.dark.main,
489
575
  tabBarStyle: {
490
- borderTopColor: theme === "dark" ? colors2.light.main : colors2.white[2],
576
+ borderTopColor: colors2.white[2],
577
+ borderColor: colors2.white[2],
491
578
  borderTopWidth: 1,
492
- // shadowColor: "#000",
493
- // shadowOffset: { height: -3, width: 0 },
494
- // shadowRadius: 7,
495
- // shadowOpacity: 0.1,
496
579
  backgroundColor: colors2.white[1]
497
580
  },
498
- tabBarActiveTintColor: colors2.blue.main,
581
+ tabBarActiveTintColor: colors2.primary.main,
499
582
  tabBarInactiveTintColor: colors2.textSecondary.main,
500
583
  tabBarLabelStyle: {
501
584
  // fontSize: ms(12),
@@ -519,10 +602,6 @@ var useNavScreenOptions = (type) => {
519
602
  }
520
603
  }
521
604
  };
522
- if (import_react_native4.Platform.OS === "android") {
523
- options.tab.tabBarStyle.height = import_react_native4.Dimensions.get("screen").height * 0.08;
524
- options.tab.tabBarStyle.paddingBottom = (0, import_react_native_size_matters3.vs)(15);
525
- }
526
605
  return options[type];
527
606
  };
528
607
 
@@ -556,7 +635,7 @@ var AdaptiveStatusBarNext_default = AdaptiveStatusBar;
556
635
  var import_vector_icons = require("@expo/vector-icons");
557
636
  var import_react6 = __toESM(require("react"));
558
637
  var import_react_native6 = require("react-native");
559
- var import_react_native_size_matters4 = require("react-native-size-matters");
638
+ var import_react_native_size_matters3 = require("react-native-size-matters");
560
639
  var AlertX = ({
561
640
  type = "info",
562
641
  variant = "contained",
@@ -566,7 +645,7 @@ var AlertX = ({
566
645
  style = {}
567
646
  }) => {
568
647
  const colors2 = useColors();
569
- const styles2 = import_react_native_size_matters4.ScaledSheet.create({
648
+ const styles = import_react_native_size_matters3.ScaledSheet.create({
570
649
  container: {
571
650
  padding: 20,
572
651
  paddingTop: 10,
@@ -574,7 +653,7 @@ var AlertX = ({
574
653
  borderRadius: 8,
575
654
  alignItems: "center",
576
655
  flexDirection: "row",
577
- marginBottom: gutterBottom + "@ms",
656
+ marginBottom: (0, import_react_native_size_matters3.ms)(gutterBottom),
578
657
  backgroundColor: colors2[type].main + (variant === "contained" ? "" : "3")
579
658
  },
580
659
  title: {
@@ -584,7 +663,7 @@ var AlertX = ({
584
663
  color: variant === "contained" ? "#fff" : colors2[type].main
585
664
  }
586
665
  });
587
- return /* @__PURE__ */ import_react6.default.createElement(import_react_native6.View, { style: { ...styles2.container, ...style } }, /* @__PURE__ */ import_react6.default.createElement(import_react_native6.View, { style: { width: "80%" } }, /* @__PURE__ */ import_react6.default.createElement(Typography_default, { style: styles2.title, gutterBottom: 3, fontWeight: 700 }, title), body && /* @__PURE__ */ import_react6.default.createElement(Typography_default, { fontWeight: 700, variant: "body2", style: styles2.body }, body)), /* @__PURE__ */ import_react6.default.createElement(import_react_native6.View, { style: { marginLeft: "auto" } }, /* @__PURE__ */ import_react6.default.createElement(
666
+ return /* @__PURE__ */ import_react6.default.createElement(import_react_native6.View, { style: [styles.container, style] }, /* @__PURE__ */ import_react6.default.createElement(import_react_native6.View, { style: { width: "80%" } }, /* @__PURE__ */ import_react6.default.createElement(Typography_default, { style: styles.title, gutterBottom: 3, fontWeight: 700 }, title), body && /* @__PURE__ */ import_react6.default.createElement(Typography_default, { fontWeight: 700, variant: "body2", style: styles.body }, body)), /* @__PURE__ */ import_react6.default.createElement(import_react_native6.View, { style: { marginLeft: "auto" } }, /* @__PURE__ */ import_react6.default.createElement(
588
667
  import_vector_icons.MaterialIcons,
589
668
  {
590
669
  color: variant === "contained" ? "#fff" : colors2[type].main,
@@ -599,7 +678,7 @@ var AlertX_default = AlertX;
599
678
  var import_vector_icons2 = require("@expo/vector-icons");
600
679
  var import_react7 = __toESM(require("react"));
601
680
  var import_react_native7 = require("react-native");
602
- var import_react_native_size_matters5 = require("react-native-size-matters");
681
+ var import_react_native_size_matters4 = require("react-native-size-matters");
603
682
  var Avatar = ({
604
683
  color = "dark",
605
684
  label,
@@ -609,17 +688,18 @@ var Avatar = ({
609
688
  style = {}
610
689
  }) => {
611
690
  const colors2 = useColors();
612
- const styles2 = import_react_native_size_matters5.ScaledSheet.create({
691
+ const [imageError, setImageError] = (0, import_react7.useState)(false);
692
+ const styles = import_react_native_size_matters4.ScaledSheet.create({
613
693
  root: {
614
694
  borderRadius: 150,
615
- height: size + "@ms",
616
- width: size + "@ms",
695
+ height: (0, import_react_native_size_matters4.ms)(size),
696
+ width: (0, import_react_native_size_matters4.ms)(size),
617
697
  alignItems: "center",
618
698
  justifyContent: "center",
619
699
  overflow: "hidden",
620
700
  borderWidth: variant === "outlined" ? 5 : 0,
621
701
  borderColor: variant === "outlined" ? "#fff" : "#0000",
622
- backgroundColor: variant === "outlined" ? null : label ? colors2[color].main : colors2.white[4],
702
+ backgroundColor: variant === "outlined" ? void 0 : label ? colors2[color].main : colors2.white[4],
623
703
  ...style
624
704
  },
625
705
  image: {
@@ -627,7 +707,15 @@ var Avatar = ({
627
707
  width: "110%"
628
708
  }
629
709
  });
630
- return /* @__PURE__ */ import_react7.default.createElement(import_react_native7.View, { style: styles2.root }, source ? /* @__PURE__ */ import_react7.default.createElement(import_react_native7.Image, { resizeMode: "cover", style: styles2.image, source }) : label ? /* @__PURE__ */ import_react7.default.createElement(Typography_default, { style: { color: colors2[color].text } }, label[0]) : /* @__PURE__ */ import_react7.default.createElement(import_vector_icons2.AntDesign, { name: "user", color: "#fff", size: Math.round(size / 1.5) }));
710
+ return /* @__PURE__ */ import_react7.default.createElement(import_react_native7.View, { style: styles.root }, source && !imageError ? /* @__PURE__ */ import_react7.default.createElement(
711
+ import_react_native7.Image,
712
+ {
713
+ resizeMode: "cover",
714
+ style: styles.image,
715
+ source,
716
+ onError: () => setImageError(true)
717
+ }
718
+ ) : label ? /* @__PURE__ */ import_react7.default.createElement(Typography_default, { style: { color: colors2[color].text } }, label[0]) : /* @__PURE__ */ import_react7.default.createElement(import_vector_icons2.AntDesign, { name: "user", color: "#fff", size: Math.round(size / 1.5) }));
631
719
  };
632
720
  var Avatar_default = Avatar;
633
721
 
@@ -635,27 +723,27 @@ var Avatar_default = Avatar;
635
723
  var import_vector_icons3 = require("@expo/vector-icons");
636
724
  var import_react8 = __toESM(require("react"));
637
725
  var import_react_native8 = require("react-native");
638
- var import_react_native_size_matters6 = require("react-native-size-matters");
726
+ var import_react_native_size_matters5 = require("react-native-size-matters");
639
727
  var LinkButton = ({
640
728
  title,
641
729
  style = {},
642
730
  color = "blue",
643
731
  fontSize = 12,
644
- fontWeight = "400",
732
+ fontWeight = 400,
645
733
  disabled,
646
734
  onPress = () => {
647
735
  }
648
736
  }) => {
649
737
  const colors2 = useColors();
650
- const styles2 = import_react_native_size_matters6.ScaledSheet.create({
738
+ const styles = import_react_native_size_matters5.ScaledSheet.create({
651
739
  text: {
652
- fontSize: (0, import_react_native_size_matters6.moderateScale)(fontSize),
653
- fontWeight,
654
- fontFamily: getConfig().DEFAULT_FONT_FAMILY || "System",
740
+ fontSize: (0, import_react_native_size_matters5.moderateScale)(fontSize),
741
+ fontWeight: fontWeight.toString(),
742
+ fontFamily: getFontFamily(fontWeight),
655
743
  color: disabled ? "#777" : colors2[color].main
656
744
  }
657
745
  });
658
- return /* @__PURE__ */ import_react8.default.createElement(import_react_native8.TouchableOpacity, { onPress, disabled }, /* @__PURE__ */ import_react8.default.createElement(import_react_native8.Text, { style: { ...styles2.text, ...style } }, title));
746
+ return /* @__PURE__ */ import_react8.default.createElement(import_react_native8.TouchableOpacity, { onPress, disabled }, /* @__PURE__ */ import_react8.default.createElement(import_react_native8.Text, { style: { ...styles.text, ...style } }, title));
659
747
  };
660
748
  var IconButton = ({
661
749
  style = {},
@@ -673,11 +761,11 @@ var IconButton = ({
673
761
  const colors2 = useColors();
674
762
  const theme = useTheme();
675
763
  const bgColor = theme === "light" ? "#fff" : "#222";
676
- const styles2 = import_react_native_size_matters6.ScaledSheet.create({
764
+ const styles = import_react_native_size_matters5.ScaledSheet.create({
677
765
  container: {
678
766
  alignSelf: "flex-start",
679
767
  flexGrow: 0,
680
- backgroundColor: bg ? bgColor : elevation > 0 ? bgColor : null,
768
+ backgroundColor: bg ? bgColor : elevation > 0 ? bgColor : void 0,
681
769
  padding: "5@ms",
682
770
  shadowColor: "#000",
683
771
  shadowOpacity: 0.1,
@@ -685,8 +773,8 @@ var IconButton = ({
685
773
  height: 1,
686
774
  width: 0
687
775
  },
688
- height: bg ? size + 20 + "@ms" : void 0,
689
- width: bg ? size + 20 + "@ms" : void 0,
776
+ height: bg ? (0, import_react_native_size_matters5.ms)(size + 20) : void 0,
777
+ width: bg ? (0, import_react_native_size_matters5.ms)(size + 20) : void 0,
690
778
  alignItems: "center",
691
779
  justifyContent: "center",
692
780
  shadowRadius: elevation,
@@ -706,9 +794,9 @@ var IconButton = ({
706
794
  {
707
795
  onPress,
708
796
  activeOpacity: 0.3,
709
- style: { ...styles2.container, ...containerStyles }
797
+ style: { ...styles.container, ...containerStyles }
710
798
  },
711
- /* @__PURE__ */ import_react8.default.createElement(IconComp, { style: { ...styles2.text, ...style }, name: icon, size })
799
+ /* @__PURE__ */ import_react8.default.createElement(IconComp, { style: { ...styles.text, ...style }, name: icon, size })
712
800
  );
713
801
  };
714
802
  var Button = (0, import_react8.forwardRef)(
@@ -731,16 +819,16 @@ var Button = (0, import_react8.forwardRef)(
731
819
  end
732
820
  }, ref) => {
733
821
  const colors2 = useColors();
734
- const styles2 = import_react_native_size_matters6.ScaledSheet.create({
822
+ const styles = import_react_native_size_matters5.ScaledSheet.create({
735
823
  con: {
736
824
  flexDirection: "row",
737
825
  alignItems: "center",
738
826
  alignSelf: "flex-start",
739
827
  justifyContent: "center",
740
- backgroundColor: variant === "text" || variant === "outlined" ? null : translucent ? translucent === "dark" ? colors2.white[3] + "22" : colors2.black[3] + "22" : loading ? colors2[color].light : disabled ? colors2.white[4] : colors2[color].main,
828
+ backgroundColor: variant === "text" || variant === "outlined" ? void 0 : translucent ? translucent === "dark" ? colors2.white[3] + "22" : colors2.black[3] + "22" : loading ? colors2[color].light : disabled ? colors2.white[4] : colors2[color].main,
741
829
  borderRadius: rounded ? 30 : 10,
742
830
  elevation: variant === "text" ? 0 : elevation,
743
- paddingVertical: size === "small" ? 8 : size === "large" ? "15@ms" : "13@ms",
831
+ paddingVertical: size === "small" ? 8 : size === "large" ? "15@mvs" : "13@mvs",
744
832
  paddingHorizontal: size === "small" ? "10@ms" : "18@ms",
745
833
  borderColor: colors2[color].main,
746
834
  borderWidth: variant === "outlined" ? 1 : 0,
@@ -752,14 +840,14 @@ var Button = (0, import_react8.forwardRef)(
752
840
  width: 0
753
841
  },
754
842
  shadowOpacity: variant === "text" ? 0 : 0.3,
755
- width: fullWidth ? "100%" : null,
843
+ width: fullWidth ? "100%" : void 0,
756
844
  ...style
757
845
  },
758
846
  text: {
759
847
  color: disabled ? variant === "text" || variant === "outlined" ? colors2.black[1] : colors2[color].text : colors2[color][variant === "text" || variant === "outlined" ? "main" : "text"],
760
848
  fontWeight: variant === "outlined" ? "700" : "500",
761
- fontSize: size === "small" ? "12@ms" : "16@ms",
762
- fontFamily: getConfig().DEFAULT_FONT_FAMILY || "System"
849
+ fontSize: size === "small" ? "12@ms" : "13@ms",
850
+ fontFamily: getFontFamily(variant === "outlined" ? 700 : 500)
763
851
  }
764
852
  });
765
853
  return /* @__PURE__ */ import_react8.default.createElement(
@@ -768,7 +856,7 @@ var Button = (0, import_react8.forwardRef)(
768
856
  ref,
769
857
  onPress,
770
858
  disabled,
771
- style: styles2.con
859
+ style: styles.con
772
860
  },
773
861
  start,
774
862
  loading && /* @__PURE__ */ import_react8.default.createElement(
@@ -779,7 +867,7 @@ var Button = (0, import_react8.forwardRef)(
779
867
  style: { marginRight: 10 }
780
868
  }
781
869
  ),
782
- /* @__PURE__ */ import_react8.default.createElement(import_react_native8.Text, { style: styles2.text }, title),
870
+ /* @__PURE__ */ import_react8.default.createElement(import_react_native8.Text, { style: styles.text }, title),
783
871
  end
784
872
  );
785
873
  }
@@ -790,7 +878,7 @@ var Button_default = Button;
790
878
  var import_vector_icons4 = require("@expo/vector-icons");
791
879
  var import_react9 = __toESM(require("react"));
792
880
  var import_react_native9 = require("react-native");
793
- var import_react_native_size_matters7 = require("react-native-size-matters");
881
+ var import_react_native_size_matters6 = require("react-native-size-matters");
794
882
  var CheckBox = ({
795
883
  color = "primary",
796
884
  checked,
@@ -801,14 +889,14 @@ var CheckBox = ({
801
889
  }) => {
802
890
  const iconName = checked ? "checkbox-marked" : "checkbox-blank-outline";
803
891
  const colors2 = useColors();
804
- const styles2 = import_react_native_size_matters7.ScaledSheet.create({
892
+ const styles = import_react_native_size_matters6.ScaledSheet.create({
805
893
  container: {
806
894
  alignItems: "center",
807
895
  flexDirection: "row",
808
896
  ...style
809
897
  }
810
898
  });
811
- return /* @__PURE__ */ import_react9.default.createElement(import_react_native9.View, { style: styles2.container }, /* @__PURE__ */ import_react9.default.createElement(import_react_native9.TouchableOpacity, { onPress: onChange }, /* @__PURE__ */ import_react9.default.createElement(
899
+ return /* @__PURE__ */ import_react9.default.createElement(import_react_native9.View, { style: styles.container }, /* @__PURE__ */ import_react9.default.createElement(import_react_native9.TouchableOpacity, { onPress: onChange }, /* @__PURE__ */ import_react9.default.createElement(
812
900
  import_vector_icons4.MaterialCommunityIcons,
813
901
  {
814
902
  name: iconName,
@@ -821,7 +909,8 @@ var CheckBox = ({
821
909
  // ../src/Components/FormWrapper.tsx
822
910
  var import_react10 = __toESM(require("react"));
823
911
  var import_react_native10 = require("react-native");
824
- var import_react_native_size_matters8 = require("react-native-size-matters");
912
+ var import_react_native_size_matters7 = require("react-native-size-matters");
913
+ var import_react_native_safe_area_context3 = require("react-native-safe-area-context");
825
914
  var FormWrapper = ({
826
915
  children,
827
916
  behavior = import_react_native10.Platform.OS === "ios" ? "padding" : "height",
@@ -831,7 +920,9 @@ var FormWrapper = ({
831
920
  style = {},
832
921
  onScroll
833
922
  }) => {
834
- const styles2 = import_react_native_size_matters8.ScaledSheet.create({
923
+ const { bottom } = (0, import_react_native_safe_area_context3.useSafeAreaInsets)();
924
+ const defaultOffset = import_react_native10.Platform.OS === "ios" ? -bottom : -bottom * 2;
925
+ const styles = import_react_native_size_matters7.ScaledSheet.create({
835
926
  root: {
836
927
  width: "100%",
837
928
  flex: 1,
@@ -841,18 +932,18 @@ var FormWrapper = ({
841
932
  return mode === "static" ? /* @__PURE__ */ import_react10.default.createElement(import_react_native10.TouchableWithoutFeedback, { onPress: import_react_native10.Keyboard.dismiss, accessible: false }, /* @__PURE__ */ import_react10.default.createElement(
842
933
  import_react_native10.KeyboardAvoidingView,
843
934
  {
844
- style: styles2.root,
935
+ style: styles.root,
845
936
  behavior,
846
- contentContainerStyle: styles2.root,
847
- keyboardVerticalOffset
937
+ contentContainerStyle: styles.root,
938
+ keyboardVerticalOffset: keyboardVerticalOffset || defaultOffset
848
939
  },
849
940
  children
850
941
  )) : /* @__PURE__ */ import_react10.default.createElement(
851
942
  import_react_native10.KeyboardAvoidingView,
852
943
  {
853
944
  behavior,
854
- style: styles2.root,
855
- keyboardVerticalOffset
945
+ style: styles.root,
946
+ keyboardVerticalOffset: keyboardVerticalOffset || defaultOffset
856
947
  },
857
948
  /* @__PURE__ */ import_react10.default.createElement(
858
949
  import_react_native10.ScrollView,
@@ -874,54 +965,116 @@ var import_vector_icons5 = require("@expo/vector-icons");
874
965
  var Haptics = __toESM(require("expo-haptics"));
875
966
  var import_react12 = require("react");
876
967
  var import_react_native12 = require("react-native");
877
- var import_react_native_size_matters10 = require("react-native-size-matters");
968
+ var import_react_native_size_matters9 = require("react-native-size-matters");
878
969
 
879
970
  // ../src/Components/Popup.tsx
880
971
  var import_react_native11 = require("react-native");
881
972
  var import_react11 = __toESM(require("react"));
882
- var import_react_native_size_matters9 = require("react-native-size-matters");
973
+ var import_react_native_reanimated2 = __toESM(require("react-native-reanimated"));
974
+ var import_react_native_safe_area_context4 = require("react-native-safe-area-context");
975
+ var import_react_native_size_matters8 = require("react-native-size-matters");
883
976
  var Popup = ({
884
977
  title,
885
- sheet,
978
+ sheet = true,
886
979
  bare = false,
887
980
  keyboardVerticalOffset,
888
981
  children,
889
982
  open,
890
983
  onClose = () => {
891
984
  },
892
- style
985
+ style,
986
+ onModalShow,
987
+ onModalHide,
988
+ disableAutoKeyboardManagement = false
893
989
  }) => {
894
990
  const theme = useTheme();
895
991
  const colors2 = useColors();
896
- const [show, setShow] = (0, import_react11.useState)(open);
897
- const [showSecondary, setShowSecondary] = (0, import_react11.useState)(false);
898
- const styles2 = import_react_native_size_matters9.ScaledSheet.create({
992
+ const [modalVisible, setModalVisible] = (0, import_react11.useState)(false);
993
+ const [modalOpen, setModalOpen] = (0, import_react11.useState)(false);
994
+ const [keyboardVisible, setKeyboardVisible] = (0, import_react11.useState)(false);
995
+ const { bottom } = (0, import_react_native_safe_area_context4.useSafeAreaInsets)();
996
+ const backdropOpacity = (0, import_react_native_reanimated2.useSharedValue)(0);
997
+ const contentTranslateY = (0, import_react_native_reanimated2.useSharedValue)(1e3);
998
+ const keyboardVerticalOffsetValue = import_react_native11.Platform.OS === "ios" ? -bottom : -bottom * 2;
999
+ (0, import_react11.useEffect)(() => {
1000
+ const keyboardDidShowListener = import_react_native11.Keyboard.addListener(
1001
+ "keyboardDidShow",
1002
+ () => {
1003
+ setKeyboardVisible(true);
1004
+ }
1005
+ );
1006
+ const keyboardDidHideListener = import_react_native11.Keyboard.addListener(
1007
+ "keyboardDidHide",
1008
+ () => {
1009
+ setKeyboardVisible(false);
1010
+ }
1011
+ );
1012
+ return () => {
1013
+ keyboardDidHideListener?.remove();
1014
+ keyboardDidShowListener?.remove();
1015
+ };
1016
+ }, []);
1017
+ const _onModalShow = () => {
1018
+ setModalVisible(true);
1019
+ onModalShow?.();
1020
+ };
1021
+ const _onModalHide = () => {
1022
+ onModalHide?.();
1023
+ setModalOpen(false);
1024
+ };
1025
+ (0, import_react11.useEffect)(() => {
1026
+ if (open) {
1027
+ setModalOpen(true);
1028
+ backdropOpacity.value = (0, import_react_native_reanimated2.withTiming)(1, { duration: 300 });
1029
+ contentTranslateY.value = (0, import_react_native_reanimated2.withTiming)(0, { duration: 300 }, () => {
1030
+ (0, import_react_native_reanimated2.runOnJS)(_onModalShow)();
1031
+ });
1032
+ } else {
1033
+ setModalVisible(false);
1034
+ backdropOpacity.value = (0, import_react_native_reanimated2.withTiming)(0, { duration: 200 });
1035
+ contentTranslateY.value = (0, import_react_native_reanimated2.withTiming)(1e3, { duration: 200 }, () => {
1036
+ (0, import_react_native_reanimated2.runOnJS)(_onModalHide)();
1037
+ });
1038
+ }
1039
+ }, [open]);
1040
+ const backdropAnimatedStyle = (0, import_react_native_reanimated2.useAnimatedStyle)(() => ({
1041
+ opacity: backdropOpacity.value
1042
+ }));
1043
+ const contentAnimatedStyle = (0, import_react_native_reanimated2.useAnimatedStyle)(() => ({
1044
+ transform: [{ translateY: contentTranslateY.value }]
1045
+ }));
1046
+ const styles = import_react_native_size_matters8.ScaledSheet.create({
899
1047
  root: {
900
1048
  height: "100%",
901
1049
  width: "100%",
902
1050
  justifyContent: sheet ? "flex-end" : "center"
903
1051
  },
1052
+ keyboardView: {
1053
+ flex: 1,
1054
+ zIndex: 1e3
1055
+ },
904
1056
  avoidingView: {
1057
+ zIndex: 2,
905
1058
  minHeight: typeof sheet === "number" ? sheet : void 0,
906
- maxHeight: "80%",
907
- zIndex: 1e3,
1059
+ maxHeight: "90%",
908
1060
  alignSelf: "center",
909
1061
  maxWidth: sheet ? void 0 : "90%",
910
- width: sheet ? "100%" : void 0
1062
+ width: sheet ? "100%" : void 0,
1063
+ marginBottom: import_react_native11.Platform.OS === "android" && keyboardVisible ? bottom : 0
911
1064
  },
912
1065
  container: {
913
- paddingBottom: sheet ? "30@ms" : 0,
914
- backgroundColor: theme === "dark" ? "#111" : colors2.white[2],
1066
+ paddingBottom: sheet && !bare ? bottom + (0, import_react_native_size_matters8.ms)(10) : void 0,
1067
+ backgroundColor: theme === "dark" ? "#111" : colors2.white[1],
915
1068
  borderTopLeftRadius: 20,
916
1069
  borderTopRightRadius: 20,
917
1070
  borderBottomRightRadius: sheet ? 0 : 20,
918
1071
  borderBottomLeftRadius: sheet ? 0 : 20,
919
1072
  width: "100%",
1073
+ overflow: "hidden",
920
1074
  ...style
921
1075
  },
922
1076
  content: {
923
1077
  paddingHorizontal: bare ? void 0 : "15@ms"
924
- // flex: 1,
925
1078
  },
926
1079
  title: {
927
1080
  flexDirection: "row",
@@ -936,71 +1089,60 @@ var Popup = ({
936
1089
  backdrop: {
937
1090
  position: "absolute",
938
1091
  height: "100%",
939
- zIndex: -1,
1092
+ zIndex: 1,
940
1093
  width: "100%",
941
1094
  backgroundColor: "#000b"
942
1095
  }
943
1096
  });
944
- import_react11.default.useEffect(() => {
945
- if (open) {
946
- setShow(open);
947
- setTimeout(() => {
948
- setShowSecondary(open);
949
- }, 500);
950
- } else {
951
- closeAction();
952
- }
953
- }, [open]);
954
1097
  const closeAction = () => {
955
- setShowSecondary(false);
956
- setTimeout(() => {
957
- setShow(false);
958
- onClose();
959
- }, 300);
1098
+ onClose();
960
1099
  };
961
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
1100
+ return /* @__PURE__ */ import_react11.default.createElement(
962
1101
  import_react_native11.Modal,
963
1102
  {
964
1103
  transparent: true,
965
- animationType: "fade",
1104
+ animationType: "none",
966
1105
  statusBarTranslucent: true,
967
- visible: show,
1106
+ visible: modalOpen,
968
1107
  onRequestClose: closeAction
969
1108
  },
970
- /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles2.backdrop }),
971
- /* @__PURE__ */ import_react11.default.createElement(UIThemeProvider, null, /* @__PURE__ */ import_react11.default.createElement(
972
- import_react_native11.Modal,
1109
+ /* @__PURE__ */ import_react11.default.createElement(UIThemeProvider, null, /* @__PURE__ */ import_react11.default.createElement(import_react_native_reanimated2.default.View, { style: [styles.backdrop, backdropAnimatedStyle] }), /* @__PURE__ */ import_react11.default.createElement(
1110
+ import_react_native11.KeyboardAvoidingView,
973
1111
  {
974
- transparent: true,
975
- animationType: "slide",
976
- statusBarTranslucent: true,
977
- visible: showSecondary,
978
- onRequestClose: closeAction
1112
+ style: styles.keyboardView,
1113
+ behavior: import_react_native11.Platform.OS === "ios" ? "padding" : "height",
1114
+ keyboardVerticalOffset: keyboardVerticalOffset || keyboardVerticalOffsetValue
979
1115
  },
980
- /* @__PURE__ */ import_react11.default.createElement(import_react_native11.TouchableWithoutFeedback, { onPress: import_react_native11.Keyboard.dismiss }, /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles2.root }, open && /* @__PURE__ */ import_react11.default.createElement(
981
- import_react_native11.Pressable,
1116
+ /* @__PURE__ */ import_react11.default.createElement(
1117
+ import_react_native11.TouchableWithoutFeedback,
982
1118
  {
983
- style: import_react_native11.StyleSheet.absoluteFill,
984
- onPress: closeAction
985
- }
986
- ), /* @__PURE__ */ import_react11.default.createElement(
987
- import_react_native11.KeyboardAvoidingView,
988
- {
989
- style: styles2.avoidingView,
990
- keyboardVerticalOffset,
991
- behavior: import_react_native11.Platform.OS === "ios" ? "position" : "padding"
1119
+ onPress: import_react_native11.Keyboard.dismiss,
1120
+ disabled: disableAutoKeyboardManagement
992
1121
  },
993
- /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles2.container }, !bare && /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles2.title }, /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles2.titleIcon }, /* @__PURE__ */ import_react11.default.createElement(
994
- IconButton,
1122
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.root }, modalOpen && /* @__PURE__ */ import_react11.default.createElement(
1123
+ import_react_native11.Pressable,
995
1124
  {
996
- size: 20,
997
- icon: "close",
1125
+ style: [import_react_native11.StyleSheet.absoluteFill, { zIndex: 1 }],
998
1126
  onPress: closeAction
999
1127
  }
1000
- )), /* @__PURE__ */ import_react11.default.createElement(Typography_default, { align: "center", fontWeight: 500 }, title)), /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles2.content }, children))
1001
- )))
1128
+ ), /* @__PURE__ */ import_react11.default.createElement(
1129
+ import_react_native_reanimated2.default.View,
1130
+ {
1131
+ style: [styles.avoidingView, contentAnimatedStyle],
1132
+ layout: modalVisible ? import_react_native_reanimated2.LinearTransition.springify().stiffness(200).mass(0.5).damping(100) : void 0
1133
+ },
1134
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.container }, !bare && /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.title }, /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.titleIcon }, /* @__PURE__ */ import_react11.default.createElement(
1135
+ IconButton,
1136
+ {
1137
+ size: 20,
1138
+ icon: "close",
1139
+ onPress: closeAction
1140
+ }
1141
+ )), /* @__PURE__ */ import_react11.default.createElement(Typography_default, { align: "center", fontWeight: 500 }, title)), /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.content }, children))
1142
+ ))
1143
+ )
1002
1144
  ))
1003
- ));
1145
+ );
1004
1146
  };
1005
1147
 
1006
1148
  // ../src/Components/StarRating.tsx
@@ -1009,13 +1151,13 @@ var RatingStars = ({
1009
1151
  size = 16
1010
1152
  }) => {
1011
1153
  const colors2 = useColors();
1012
- const styles2 = import_react_native_size_matters10.ScaledSheet.create({
1154
+ const styles = import_react_native_size_matters9.ScaledSheet.create({
1013
1155
  root: {
1014
1156
  flexDirection: "row",
1015
1157
  alignItems: "center"
1016
1158
  }
1017
1159
  });
1018
- return /* @__PURE__ */ React.createElement(import_react_native12.View, { style: styles2.root }, [...Array(Math.floor(rating))].map((_, index) => /* @__PURE__ */ React.createElement(import_vector_icons5.Ionicons, { key: index, name: "star", size, color: "#FFD700" })), [...Array(5 - Math.floor(rating))].map((_, index) => /* @__PURE__ */ React.createElement(
1160
+ return /* @__PURE__ */ React.createElement(import_react_native12.View, { style: styles.root }, [...Array(Math.floor(rating))].map((_, index) => /* @__PURE__ */ React.createElement(import_vector_icons5.Ionicons, { key: index, name: "star", size, color: "#FFD700" })), [...Array(5 - Math.floor(rating))].map((_, index) => /* @__PURE__ */ React.createElement(
1019
1161
  import_vector_icons5.Ionicons,
1020
1162
  {
1021
1163
  key: index,
@@ -1035,7 +1177,7 @@ var RatingInput = ({
1035
1177
  const colors2 = useColors();
1036
1178
  const [loading, setLoading] = (0, import_react12.useState)(false);
1037
1179
  const [review, setReview] = (0, import_react12.useState)("");
1038
- const styles2 = import_react_native_size_matters10.ScaledSheet.create({
1180
+ const styles = import_react_native_size_matters9.ScaledSheet.create({
1039
1181
  root: {
1040
1182
  flexDirection: "row",
1041
1183
  alignItems: "center"
@@ -1068,7 +1210,7 @@ var RatingInput = ({
1068
1210
  _onSubmit && await _onSubmit({ rating: rate, review });
1069
1211
  setLoading(false);
1070
1212
  };
1071
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(import_react_native12.View, { style: styles2.root }, loading ? /* @__PURE__ */ React.createElement(import_react_native12.ActivityIndicator, null) : [...Array(5)].map((_, index) => /* @__PURE__ */ React.createElement(
1213
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(import_react_native12.View, { style: styles.root }, loading ? /* @__PURE__ */ React.createElement(import_react_native12.ActivityIndicator, null) : [...Array(5)].map((_, index) => /* @__PURE__ */ React.createElement(
1072
1214
  import_react_native12.TouchableOpacity,
1073
1215
  {
1074
1216
  key: index,
@@ -1115,10 +1257,10 @@ var RatingInput = ({
1115
1257
  },
1116
1258
  "Add to your review"
1117
1259
  ),
1118
- /* @__PURE__ */ React.createElement(import_react_native12.View, { style: styles2.inputCon }, /* @__PURE__ */ React.createElement(
1260
+ /* @__PURE__ */ React.createElement(import_react_native12.View, { style: styles.inputCon }, /* @__PURE__ */ React.createElement(
1119
1261
  import_react_native12.TextInput,
1120
1262
  {
1121
- style: styles2.input,
1263
+ style: styles.input,
1122
1264
  multiline: true,
1123
1265
  value: review,
1124
1266
  onChangeText: (text) => setReview(text),
@@ -1141,9 +1283,9 @@ var RatingInput = ({
1141
1283
  };
1142
1284
 
1143
1285
  // ../src/Components/Grid.tsx
1144
- var import_react_native13 = require("react-native");
1145
1286
  var import_react13 = __toESM(require("react"));
1146
- var import_react_native_size_matters11 = require("react-native-size-matters");
1287
+ var import_react_native13 = require("react-native");
1288
+ var import_react_native_size_matters10 = require("react-native-size-matters");
1147
1289
  var GridItem = ({
1148
1290
  children,
1149
1291
  col = 2,
@@ -1151,28 +1293,28 @@ var GridItem = ({
1151
1293
  spacing = 1,
1152
1294
  style = {}
1153
1295
  }) => {
1154
- const styles2 = import_react_native_size_matters11.ScaledSheet.create({
1296
+ const styles = import_react_native_size_matters10.ScaledSheet.create({
1155
1297
  gridItem: {
1156
- width: 100 / col + "%",
1157
- padding: spacing * 10 + "@ms",
1298
+ width: `${100 / col}%`,
1299
+ padding: (0, import_react_native_size_matters10.ms)(spacing * 10),
1158
1300
  alignItems
1159
1301
  }
1160
1302
  });
1161
- return /* @__PURE__ */ import_react13.default.createElement(import_react_native13.View, { children, style: [styles2.gridItem, style] });
1303
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_native13.View, { children, style: [styles.gridItem, style] });
1162
1304
  };
1163
1305
  var Grid = ({
1164
1306
  children,
1165
1307
  spacing = 1,
1166
1308
  style = {}
1167
1309
  }) => {
1168
- const styles2 = import_react_native_size_matters11.ScaledSheet.create({
1310
+ const styles = import_react_native_size_matters10.ScaledSheet.create({
1169
1311
  grid: {
1170
1312
  flexWrap: "wrap",
1171
- margin: -spacing * 10 + "@ms",
1313
+ margin: `${-spacing * 10}@ms`,
1172
1314
  flexDirection: "row"
1173
1315
  }
1174
1316
  });
1175
- return /* @__PURE__ */ import_react13.default.createElement(import_react_native13.View, { children, style: [styles2.grid, style] });
1317
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_native13.View, { children, style: [styles.grid, style] });
1176
1318
  };
1177
1319
 
1178
1320
  // ../src/Components/Locator.tsx
@@ -1184,7 +1326,7 @@ var import_react_native17 = require("react-native");
1184
1326
  var import_vector_icons6 = require("@expo/vector-icons");
1185
1327
  var import_react14 = __toESM(require("react"));
1186
1328
  var import_react_native14 = require("react-native");
1187
- var import_react_native_size_matters12 = require("react-native-size-matters");
1329
+ var import_react_native_size_matters11 = require("react-native-size-matters");
1188
1330
  var ListItem = ({
1189
1331
  link = false,
1190
1332
  divider = false,
@@ -1194,7 +1336,7 @@ var ListItem = ({
1194
1336
  children
1195
1337
  }) => {
1196
1338
  const colors2 = useColors();
1197
- const styles2 = import_react_native_size_matters12.ScaledSheet.create({
1339
+ const styles = import_react_native_size_matters11.ScaledSheet.create({
1198
1340
  root: {
1199
1341
  flexDirection: "row",
1200
1342
  alignItems: "center",
@@ -1207,7 +1349,7 @@ var ListItem = ({
1207
1349
  return /* @__PURE__ */ import_react14.default.createElement(
1208
1350
  import_react_native14.View,
1209
1351
  null,
1210
- /* @__PURE__ */ import_react14.default.createElement(import_react_native14.TouchableOpacity, { disabled: Boolean(!onPress), onPress }, /* @__PURE__ */ import_react14.default.createElement(import_react_native14.View, { style: { ...styles2.root, ...style } }, children, link && /* @__PURE__ */ import_react14.default.createElement(
1352
+ /* @__PURE__ */ import_react14.default.createElement(import_react_native14.TouchableOpacity, { disabled: Boolean(!onPress), onPress }, /* @__PURE__ */ import_react14.default.createElement(import_react_native14.View, { style: { ...styles.root, ...style } }, children, link && /* @__PURE__ */ import_react14.default.createElement(
1211
1353
  import_vector_icons6.MaterialIcons,
1212
1354
  {
1213
1355
  color: colors2.white[5],
@@ -1223,14 +1365,14 @@ var ListItem = ({
1223
1365
  var import_vector_icons8 = require("@expo/vector-icons");
1224
1366
  var import_react16 = __toESM(require("react"));
1225
1367
  var import_react_native16 = require("react-native");
1226
- var import_react_native_size_matters14 = require("react-native-size-matters");
1368
+ var import_react_native_size_matters13 = require("react-native-size-matters");
1227
1369
 
1228
1370
  // ../src/Components/SelectMenu.tsx
1229
1371
  var import_vector_icons7 = require("@expo/vector-icons");
1230
1372
  var import_react15 = __toESM(require("react"));
1231
1373
  var import_react_native15 = require("react-native");
1232
- var import_react_native_safe_area_context3 = require("react-native-safe-area-context");
1233
- var import_react_native_size_matters13 = require("react-native-size-matters");
1374
+ var import_react_native_safe_area_context5 = require("react-native-safe-area-context");
1375
+ var import_react_native_size_matters12 = require("react-native-size-matters");
1234
1376
  var SelectMenu = ({
1235
1377
  open = false,
1236
1378
  onClose,
@@ -1240,22 +1382,15 @@ var SelectMenu = ({
1240
1382
  disableAutoClose = false,
1241
1383
  label,
1242
1384
  secondary,
1243
- helperText
1385
+ helperText,
1386
+ searchEnabled = false,
1387
+ searchPlaceholder = "Search"
1244
1388
  }) => {
1245
1389
  const colors2 = useColors();
1246
- const { bottom } = (0, import_react_native_safe_area_context3.useSafeAreaInsets)();
1390
+ const { bottom } = (0, import_react_native_safe_area_context5.useSafeAreaInsets)();
1247
1391
  const [search, setSearch] = (0, import_react15.useState)("");
1248
- const styles2 = import_react_native_size_matters13.ScaledSheet.create({
1249
- root: {
1250
- backgroundColor: colors2.white[1],
1251
- flex: 1
1252
- },
1253
- content: {
1254
- flex: 1,
1255
- paddingHorizontal: "10@ms"
1256
- },
1392
+ const styles = import_react_native_size_matters12.ScaledSheet.create({
1257
1393
  header: {
1258
- paddingTop: "80@ms",
1259
1394
  marginBottom: "20@vs"
1260
1395
  },
1261
1396
  option: {
@@ -1265,11 +1400,6 @@ var SelectMenu = ({
1265
1400
  flexDirection: "row",
1266
1401
  alignItems: "center",
1267
1402
  marginBottom: "10@vs"
1268
- },
1269
- footer: {
1270
- paddingBottom: bottom,
1271
- paddingHorizontal: "15@ms",
1272
- paddingTop: "15@ms"
1273
1403
  }
1274
1404
  });
1275
1405
  const renderItem = (0, import_react15.useCallback)(
@@ -1277,7 +1407,7 @@ var SelectMenu = ({
1277
1407
  import_react_native15.TouchableOpacity,
1278
1408
  {
1279
1409
  style: {
1280
- ...styles2.option,
1410
+ ...styles.option,
1281
1411
  backgroundColor: item.value === value ? colors2.blue.light + "22" : colors2.white[2]
1282
1412
  },
1283
1413
  onPress: () => {
@@ -1291,6 +1421,7 @@ var SelectMenu = ({
1291
1421
  /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: { flex: 1 } }, /* @__PURE__ */ import_react15.default.createElement(
1292
1422
  Typography_default,
1293
1423
  {
1424
+ variant: "body2",
1294
1425
  style: {
1295
1426
  color: item.value === value ? colors2.blue.light : colors2.black[2]
1296
1427
  }
@@ -1319,35 +1450,36 @@ var SelectMenu = ({
1319
1450
  ),
1320
1451
  [value, colors2]
1321
1452
  );
1322
- return /* @__PURE__ */ import_react15.default.createElement(import_react_native15.Modal, { visible: open, animationType: "slide", onRequestClose: onClose }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles2.root }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles2.content }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles2.header }, /* @__PURE__ */ import_react15.default.createElement(Typography_default, { variant: "h5", gutterBottom: 5, fontWeight: 700 }, label), helperText ? /* @__PURE__ */ import_react15.default.createElement(Typography_default, { variant: "body2", color: "textSecondary" }, helperText) : null, /* @__PURE__ */ import_react15.default.createElement(
1323
- TextField_default,
1324
- {
1325
- label: "Search",
1326
- value: search,
1327
- type: "search",
1328
- onChangeText: setSearch,
1329
- variant: "outlined"
1330
- }
1331
- )), /* @__PURE__ */ import_react15.default.createElement(
1332
- import_react_native15.FlatList,
1333
- {
1334
- removeClippedSubviews: true,
1335
- keyExtractor: (item) => item.value,
1336
- renderItem,
1337
- data: options.filter(
1338
- (item) => search.length > 1 ? item.label.toLowerCase().indexOf(search.toLowerCase()) > -1 : item
1339
- ).sort((a, b) => a.label.localeCompare(b.label))
1340
- }
1341
- )), /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles2.footer }, /* @__PURE__ */ import_react15.default.createElement(
1342
- Button_default,
1453
+ return /* @__PURE__ */ import_react15.default.createElement(
1454
+ Popup,
1343
1455
  {
1344
- color: "error",
1345
- variant: "outlined",
1346
- fullWidth: true,
1347
- title: "Close",
1348
- onPress: onClose
1349
- }
1350
- ))));
1456
+ open,
1457
+ onClose,
1458
+ title: label,
1459
+ disableAutoKeyboardManagement: true
1460
+ },
1461
+ /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles.content }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles.header }, helperText && /* @__PURE__ */ import_react15.default.createElement(Typography_default, { variant: "body2", color: "textSecondary", gutterBottom: 5 }, helperText), searchEnabled && /* @__PURE__ */ import_react15.default.createElement(
1462
+ TextField_default,
1463
+ {
1464
+ label: searchPlaceholder,
1465
+ value: search,
1466
+ type: "search",
1467
+ onChangeText: setSearch,
1468
+ variant: "outlined"
1469
+ }
1470
+ )), /* @__PURE__ */ import_react15.default.createElement(
1471
+ import_react_native15.FlatList,
1472
+ {
1473
+ removeClippedSubviews: true,
1474
+ keyExtractor: (item) => item.value,
1475
+ bounces: false,
1476
+ renderItem,
1477
+ data: options.filter(
1478
+ (item) => search.length > 1 ? item.label.toLowerCase().indexOf(search.toLowerCase()) > -1 : item
1479
+ ).sort((a, b) => a.label.localeCompare(b.label))
1480
+ }
1481
+ ))
1482
+ );
1351
1483
  };
1352
1484
  var SelectMenu_default = SelectMenu;
1353
1485
 
@@ -1377,32 +1509,33 @@ var TextField = ({
1377
1509
  gutterBottom = 0,
1378
1510
  end,
1379
1511
  options,
1512
+ selectMenuProps,
1380
1513
  ...props
1381
1514
  }) => {
1382
1515
  const colors2 = useColors();
1383
1516
  const [focused, setFocused] = (0, import_react16.useState)(false);
1384
- const height = (0, import_react_native_size_matters14.moderateScale)(variant === "text" ? 50 : 45) * (size === "large" ? 1.2 : size === "small" ? 0.8 : 1);
1517
+ const height = (0, import_react_native_size_matters13.moderateScale)(variant === "text" ? 50 : 45) * (size === "large" ? 1.2 : size === "small" ? 0.8 : 1);
1385
1518
  const labelAnim = (0, import_react16.useRef)(
1386
- new import_react_native16.Animated.Value(height / (0, import_react_native_size_matters14.moderateScale)(variant === "text" ? 2.5 : 3.2))
1519
+ new import_react_native16.Animated.Value(height / (0, import_react_native_size_matters13.moderateScale)(variant === "text" ? 2.5 : 3.2))
1387
1520
  ).current;
1388
1521
  import_react16.default.useEffect(() => {
1389
1522
  if (focused || value) {
1390
1523
  import_react_native16.Animated.timing(labelAnim, {
1391
- toValue: (0, import_react_native_size_matters14.verticalScale)(variant === "text" ? 2 : 4),
1524
+ toValue: (0, import_react_native_size_matters13.verticalScale)(variant === "text" ? 2 : 4),
1392
1525
  duration: 300,
1393
1526
  useNativeDriver: false
1394
1527
  }).start();
1395
1528
  } else {
1396
1529
  import_react_native16.Animated.timing(labelAnim, {
1397
- toValue: height / (0, import_react_native_size_matters14.moderateScale)(variant === "text" ? 2.5 : 3.2),
1530
+ toValue: height / (0, import_react_native_size_matters13.moderateScale)(variant === "text" ? 2.5 : 3.2),
1398
1531
  duration: 300,
1399
1532
  useNativeDriver: false
1400
1533
  }).start();
1401
1534
  }
1402
1535
  }, [focused, value]);
1403
- const styles2 = import_react_native_size_matters14.ScaledSheet.create({
1536
+ const styles = import_react_native_size_matters13.ScaledSheet.create({
1404
1537
  root: {
1405
- marginBottom: gutterBottom + "@vs",
1538
+ marginBottom: (0, import_react_native_size_matters13.ms)(gutterBottom),
1406
1539
  width: "100%",
1407
1540
  ...style
1408
1541
  },
@@ -1423,10 +1556,10 @@ var TextField = ({
1423
1556
  fontSize: "14@s",
1424
1557
  flex: 1,
1425
1558
  alignSelf: "stretch",
1426
- paddingLeft: variant === "text" ? 0 : (0, import_react_native_size_matters14.moderateScale)(15),
1427
- paddingRight: (0, import_react_native_size_matters14.moderateScale)(10),
1559
+ paddingLeft: variant === "text" ? 0 : (0, import_react_native_size_matters13.moderateScale)(15),
1560
+ paddingRight: (0, import_react_native_size_matters13.moderateScale)(10),
1428
1561
  paddingTop: "11@vs",
1429
- fontFamily: getConfig().DEFAULT_FONT_FAMILY || "System",
1562
+ fontFamily: getFontFamily(400),
1430
1563
  color: colors2.black[1],
1431
1564
  zIndex: 10
1432
1565
  // backgroundColor: "#284",
@@ -1434,13 +1567,13 @@ var TextField = ({
1434
1567
  inputText: {
1435
1568
  fontSize: "14@ms",
1436
1569
  flex: 1,
1437
- paddingLeft: variant === "text" ? 0 : (0, import_react_native_size_matters14.moderateScale)(15),
1570
+ paddingLeft: variant === "text" ? 0 : (0, import_react_native_size_matters13.moderateScale)(15),
1438
1571
  paddingTop: "13@ms"
1439
1572
  },
1440
1573
  label: {
1441
- fontFamily: getConfig().DEFAULT_FONT_FAMILY || "System",
1574
+ fontFamily: getFontFamily(400),
1442
1575
  position: "absolute",
1443
- left: variant === "text" ? 0 : (0, import_react_native_size_matters14.moderateScale)(15),
1576
+ left: variant === "text" ? 0 : (0, import_react_native_size_matters13.moderateScale)(15),
1444
1577
  fontSize: focused || value ? "10@s" : "13@s",
1445
1578
  color: focused ? colors2[color].main : colors2.textSecondary.main
1446
1579
  },
@@ -1482,13 +1615,13 @@ var TextField = ({
1482
1615
  autoCapitalize: "none",
1483
1616
  textContentType: "password"
1484
1617
  } : {};
1485
- return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles2.root }, /* @__PURE__ */ import_react16.default.createElement(
1618
+ return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles.root }, /* @__PURE__ */ import_react16.default.createElement(
1486
1619
  import_react_native16.TouchableOpacity,
1487
1620
  {
1488
1621
  onPress: () => setFocused(true),
1489
- style: styles2.container
1622
+ style: styles.container
1490
1623
  },
1491
- /* @__PURE__ */ import_react16.default.createElement(import_react_native16.Animated.Text, { style: { ...styles2.label, top: labelAnim } }, label),
1624
+ /* @__PURE__ */ import_react16.default.createElement(import_react_native16.Animated.Text, { style: { ...styles.label, top: labelAnim } }, label),
1492
1625
  start,
1493
1626
  options ? /* @__PURE__ */ import_react16.default.createElement(
1494
1627
  import_react_native16.View,
@@ -1499,13 +1632,13 @@ var TextField = ({
1499
1632
  import_react_native16.View,
1500
1633
  {
1501
1634
  style: {
1502
- paddingTop: variant !== "outlined" ? (0, import_react_native_size_matters14.ms)(13) : 0,
1635
+ paddingTop: variant !== "outlined" ? (0, import_react_native_size_matters13.ms)(13) : 0,
1503
1636
  paddingRight: 10
1504
1637
  }
1505
1638
  },
1506
1639
  options.find((cur) => cur.value === value)?.start
1507
1640
  ),
1508
- /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles2.inputText }, options.find((cur) => cur.value === value)?.label)
1641
+ /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles.inputText }, options.find((cur) => cur.value === value)?.label)
1509
1642
  ) : /* @__PURE__ */ import_react16.default.createElement(
1510
1643
  import_react_native16.TextInput,
1511
1644
  {
@@ -1526,7 +1659,7 @@ var TextField = ({
1526
1659
  placeholderTextColor: colors2.textSecondary.main,
1527
1660
  ...formProps,
1528
1661
  ...props,
1529
- style: styles2.input
1662
+ style: styles.input
1530
1663
  }
1531
1664
  ),
1532
1665
  end && /* @__PURE__ */ import_react16.default.createElement(
@@ -1534,7 +1667,7 @@ var TextField = ({
1534
1667
  {
1535
1668
  style: {
1536
1669
  marginRight: 20,
1537
- paddingTop: variant === "text" ? (0, import_react_native_size_matters14.ms)(13) : 0
1670
+ paddingTop: variant === "text" ? (0, import_react_native_size_matters13.ms)(13) : 0
1538
1671
  }
1539
1672
  },
1540
1673
  end
@@ -1544,7 +1677,7 @@ var TextField = ({
1544
1677
  {
1545
1678
  style: {
1546
1679
  marginRight: variant === "text" ? 0 : 20,
1547
- paddingTop: variant === "text" ? (0, import_react_native_size_matters14.ms)(13) : 0
1680
+ paddingTop: variant === "text" ? (0, import_react_native_size_matters13.ms)(13) : 0
1548
1681
  }
1549
1682
  },
1550
1683
  /* @__PURE__ */ import_react16.default.createElement(
@@ -1560,11 +1693,11 @@ var TextField = ({
1560
1693
  Typography_default,
1561
1694
  {
1562
1695
  color: "textSecondary",
1563
- style: styles2.helperText,
1696
+ style: styles.helperText,
1564
1697
  variant: "caption"
1565
1698
  },
1566
1699
  helperText
1567
- ), error && /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles2.error }, /* @__PURE__ */ import_react16.default.createElement(import_vector_icons8.MaterialIcons, { name: "error", color: colors2.error.main, size: 16 }), /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles2.errorText, color: "error" }, error))), options && /* @__PURE__ */ import_react16.default.createElement(
1700
+ ), error && /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles.error }, /* @__PURE__ */ import_react16.default.createElement(import_vector_icons8.MaterialIcons, { name: "error", color: colors2.error.main, size: 16 }), /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles.errorText, color: "error" }, error))), options && /* @__PURE__ */ import_react16.default.createElement(
1568
1701
  SelectMenu_default,
1569
1702
  {
1570
1703
  options,
@@ -1573,13 +1706,15 @@ var TextField = ({
1573
1706
  onClose: () => setFocused(false),
1574
1707
  label,
1575
1708
  helperText,
1576
- onChange: onChangeText
1709
+ onChange: onChangeText,
1710
+ ...selectMenuProps
1577
1711
  }
1578
1712
  ));
1579
1713
  };
1580
1714
  var TextField2 = import_react16.default.forwardRef(
1581
1715
  ({
1582
1716
  label,
1717
+ labelProps,
1583
1718
  keyboardType,
1584
1719
  color = "primary",
1585
1720
  value,
@@ -1603,20 +1738,21 @@ var TextField2 = import_react16.default.forwardRef(
1603
1738
  end,
1604
1739
  options,
1605
1740
  multiline,
1741
+ selectMenuProps,
1606
1742
  ...props
1607
1743
  }, ref) => {
1608
1744
  const colors2 = useColors();
1609
1745
  const [focused, _setFocused] = (0, import_react16.useState)(false);
1610
1746
  const [showPassword, setShowPassword] = (0, import_react16.useState)(false);
1611
- const height = (0, import_react_native_size_matters14.moderateScale)(
1747
+ const height = (0, import_react_native_size_matters13.moderateScale)(
1612
1748
  multiline ? 50 + (props.numberOfLines || 1) * 18 : 50
1613
1749
  );
1614
1750
  const setFocused = (value2) => {
1615
1751
  _setFocused(value2);
1616
1752
  };
1617
- const styles2 = import_react_native_size_matters14.ScaledSheet.create({
1753
+ const styles = import_react_native_size_matters13.ScaledSheet.create({
1618
1754
  root: {
1619
- marginBottom: gutterBottom + "@vs",
1755
+ marginBottom: (0, import_react_native_size_matters13.ms)(gutterBottom),
1620
1756
  ...style
1621
1757
  },
1622
1758
  container: {
@@ -1635,8 +1771,8 @@ var TextField2 = import_react16.default.forwardRef(
1635
1771
  fontSize: "14@s",
1636
1772
  flex: 1,
1637
1773
  alignSelf: "stretch",
1638
- paddingLeft: (0, import_react_native_size_matters14.moderateScale)(10),
1639
- paddingRight: (0, import_react_native_size_matters14.moderateScale)(10),
1774
+ paddingLeft: (0, import_react_native_size_matters13.moderateScale)(10),
1775
+ paddingRight: (0, import_react_native_size_matters13.moderateScale)(10),
1640
1776
  color: colors2.dark.main,
1641
1777
  zIndex: 10
1642
1778
  // backgroundColor: "#284",
@@ -1644,12 +1780,12 @@ var TextField2 = import_react16.default.forwardRef(
1644
1780
  inputText: {
1645
1781
  fontSize: "14@ms",
1646
1782
  color: colors2.dark.main,
1647
- paddingLeft: (0, import_react_native_size_matters14.moderateScale)(10)
1783
+ paddingLeft: (0, import_react_native_size_matters13.moderateScale)(10)
1648
1784
  },
1649
1785
  placeholder: {
1650
1786
  fontSize: "14@ms",
1651
1787
  color: colors2.textSecondary.light,
1652
- paddingLeft: (0, import_react_native_size_matters14.moderateScale)(10)
1788
+ paddingLeft: (0, import_react_native_size_matters13.moderateScale)(10)
1653
1789
  },
1654
1790
  label: {},
1655
1791
  helperText: {
@@ -1689,14 +1825,23 @@ var TextField2 = import_react16.default.forwardRef(
1689
1825
  autoCapitalize: "none",
1690
1826
  textContentType: "password"
1691
1827
  } : {};
1692
- return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles2.root }, label && /* @__PURE__ */ import_react16.default.createElement(Typography_default, { variant: "body1", color: "textSecondary", gutterBottom: 7 }, label), /* @__PURE__ */ import_react16.default.createElement(
1828
+ return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles.root }, label && /* @__PURE__ */ import_react16.default.createElement(
1829
+ Typography_default,
1830
+ {
1831
+ variant: "body2",
1832
+ color: "textSecondary",
1833
+ gutterBottom: 7,
1834
+ ...labelProps
1835
+ },
1836
+ label
1837
+ ), /* @__PURE__ */ import_react16.default.createElement(
1693
1838
  import_react_native16.TouchableOpacity,
1694
1839
  {
1695
1840
  onPress: () => setFocused(true),
1696
- style: styles2.container
1841
+ style: styles.container
1697
1842
  },
1698
1843
  /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: { marginTop: multiline ? 5 : 0 } }, start),
1699
- options ? /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, value ? /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles2.inputText }, options.find((cur) => cur.value === value)?.label) : /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles2.placeholder }, placeholder), /* @__PURE__ */ import_react16.default.createElement(
1844
+ options ? /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, value ? /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles.inputText }, options.find((cur) => cur.value === value)?.label) : /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles.placeholder }, placeholder), /* @__PURE__ */ import_react16.default.createElement(
1700
1845
  import_vector_icons8.Ionicons,
1701
1846
  {
1702
1847
  name: "chevron-down",
@@ -1726,10 +1871,10 @@ var TextField2 = import_react16.default.forwardRef(
1726
1871
  selectTextOnFocus: !disabled,
1727
1872
  onSubmitEditing,
1728
1873
  multiline,
1729
- textAlignVertical: multiline ? "top" : "center",
1874
+ extAlignVertical: multiline ? "top" : "center",
1730
1875
  ...formProps,
1731
1876
  ...props,
1732
- style: styles2.input
1877
+ style: styles.input
1733
1878
  }
1734
1879
  ),
1735
1880
  end ? /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: { marginRight: 20 } }, end) : type === "password" && /* @__PURE__ */ import_react16.default.createElement(
@@ -1751,11 +1896,11 @@ var TextField2 = import_react16.default.forwardRef(
1751
1896
  Typography_default,
1752
1897
  {
1753
1898
  color: "textSecondary",
1754
- style: styles2.helperText,
1899
+ style: styles.helperText,
1755
1900
  variant: "caption"
1756
1901
  },
1757
1902
  helperText
1758
- ), error && /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles2.error }, /* @__PURE__ */ import_react16.default.createElement(import_vector_icons8.MaterialIcons, { name: "error", color: colors2.error.main, size: 16 }), /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles2.errorText, color: "error" }, error))), options && /* @__PURE__ */ import_react16.default.createElement(
1903
+ ), error && /* @__PURE__ */ import_react16.default.createElement(import_react_native16.View, { style: styles.error }, /* @__PURE__ */ import_react16.default.createElement(import_vector_icons8.MaterialIcons, { name: "error", color: colors2.error.main, size: 16 }), /* @__PURE__ */ import_react16.default.createElement(Typography_default, { style: styles.errorText, color: "error" }, error))), options && /* @__PURE__ */ import_react16.default.createElement(
1759
1904
  SelectMenu_default,
1760
1905
  {
1761
1906
  options,
@@ -1764,7 +1909,8 @@ var TextField2 = import_react16.default.forwardRef(
1764
1909
  onClose: () => setFocused(false),
1765
1910
  label,
1766
1911
  helperText,
1767
- onChange: onChangeText
1912
+ onChange: onChangeText,
1913
+ ...selectMenuProps
1768
1914
  }
1769
1915
  ));
1770
1916
  }
@@ -1773,7 +1919,7 @@ var TextField_default = TextField;
1773
1919
 
1774
1920
  // ../src/Components/Locator.tsx
1775
1921
  var Location = __toESM(require("expo-location"));
1776
- var import_react_native_size_matters15 = require("react-native-size-matters");
1922
+ var import_react_native_size_matters14 = require("react-native-size-matters");
1777
1923
  var getPredictionsFromCoords = async (coords) => {
1778
1924
  const { GOOGLE_MAP_API_KEY } = getConfig();
1779
1925
  if (!GOOGLE_MAP_API_KEY)
@@ -1836,7 +1982,7 @@ var Locator = ({
1836
1982
  const [value, setValue] = (0, import_react17.useState)("");
1837
1983
  const [prediction, setPrediction] = (0, import_react17.useState)([]);
1838
1984
  const colors2 = useColors();
1839
- const styles2 = import_react_native_size_matters15.ScaledSheet.create({
1985
+ const styles = import_react_native_size_matters14.ScaledSheet.create({
1840
1986
  list: {
1841
1987
  backgroundColor: colors2.white[2],
1842
1988
  elevation: 10,
@@ -1844,7 +1990,8 @@ var Locator = ({
1844
1990
  shadowOpacity: 0.1,
1845
1991
  shadowRadius: float ? 15 : 0,
1846
1992
  shadowOffset: {
1847
- height: 10
1993
+ height: 10,
1994
+ width: 0
1848
1995
  },
1849
1996
  borderRadius: 10,
1850
1997
  marginBottom: 10,
@@ -1949,7 +2096,7 @@ var Locator = ({
1949
2096
  }
1950
2097
  )), /* @__PURE__ */ import_react17.default.createElement(import_react_native17.TouchableOpacity, { onPress: clear }, /* @__PURE__ */ import_react17.default.createElement(import_vector_icons9.Ionicons, { color: colors2.dark.main, size: 18, name: "close" })))
1951
2098
  }
1952
- ), prediction.length > 0 && /* @__PURE__ */ import_react17.default.createElement(import_react_native17.View, { style: styles2.list }, prediction.map(
2099
+ ), prediction.length > 0 && /* @__PURE__ */ import_react17.default.createElement(import_react_native17.View, { style: styles.list }, prediction.map(
1953
2100
  (cur, i) => i < 5 && /* @__PURE__ */ import_react17.default.createElement(
1954
2101
  ListItem,
1955
2102
  {
@@ -1973,26 +2120,27 @@ var Locator = ({
1973
2120
  };
1974
2121
 
1975
2122
  // ../src/Components/SafeAreaView.tsx
1976
- var import_react_native18 = require("react-native");
1977
2123
  var import_react18 = __toESM(require("react"));
1978
- var import_react_native19 = require("react-native");
1979
- var import_react_native_size_matters16 = require("react-native-size-matters");
1980
- var styles = import_react_native19.StyleSheet.create({
1981
- droidSafeArea: {
1982
- flex: 1,
1983
- paddingTop: import_react_native19.Platform.OS === "android" ? (0, import_react_native_size_matters16.moderateScale)(35) : 0
1984
- }
1985
- });
2124
+ var import_react_native_safe_area_context6 = require("react-native-safe-area-context");
2125
+ var import_react_native18 = require("react-native");
1986
2126
  var SafeAreaView = ({
1987
2127
  children,
1988
2128
  style
1989
2129
  }) => {
1990
- return /* @__PURE__ */ import_react18.default.createElement(import_react_native18.SafeAreaView, { style: { ...styles.droidSafeArea, ...style } }, children);
2130
+ const { top, bottom } = (0, import_react_native_safe_area_context6.useSafeAreaInsets)();
2131
+ const styles = import_react_native18.StyleSheet.create({
2132
+ root: {
2133
+ paddingTop: top,
2134
+ paddingBottom: bottom,
2135
+ flex: 1
2136
+ }
2137
+ });
2138
+ return /* @__PURE__ */ import_react18.default.createElement(import_react_native18.View, { style: [styles.root, style] }, children);
1991
2139
  };
1992
2140
 
1993
2141
  // ../src/Components/Divider.tsx
1994
- var import_react_native20 = require("react-native");
1995
- var import_react_native_size_matters17 = require("react-native-size-matters");
2142
+ var import_react_native19 = require("react-native");
2143
+ var import_react_native_size_matters15 = require("react-native-size-matters");
1996
2144
  var Divider = ({
1997
2145
  height = 1,
1998
2146
  color = "textSecondary",
@@ -2000,21 +2148,21 @@ var Divider = ({
2000
2148
  style
2001
2149
  }) => {
2002
2150
  const colors2 = useColors();
2003
- const styles2 = import_react_native_size_matters17.ScaledSheet.create({
2151
+ const styles = import_react_native_size_matters15.ScaledSheet.create({
2004
2152
  root: {
2005
2153
  height,
2006
2154
  backgroundColor: colors2[color].main,
2007
- marginBottom: (0, import_react_native_size_matters17.ms)(gutterBottom),
2155
+ marginBottom: (0, import_react_native_size_matters15.ms)(gutterBottom),
2008
2156
  ...style
2009
2157
  }
2010
2158
  });
2011
- return /* @__PURE__ */ React.createElement(import_react_native20.View, { style: styles2.root });
2159
+ return /* @__PURE__ */ React.createElement(import_react_native19.View, { style: styles.root });
2012
2160
  };
2013
2161
 
2014
2162
  // ../src/Components/Spinner.tsx
2015
2163
  var import_react19 = __toESM(require("react"));
2016
- var import_react_native21 = require("react-native");
2017
- var import_react_native_size_matters18 = require("react-native-size-matters");
2164
+ var import_react_native20 = require("react-native");
2165
+ var import_react_native_size_matters16 = require("react-native-size-matters");
2018
2166
  var Spinner = ({
2019
2167
  label,
2020
2168
  size = "large",
@@ -2023,10 +2171,10 @@ var Spinner = ({
2023
2171
  style = {}
2024
2172
  }) => {
2025
2173
  const colors2 = useColors();
2026
- const styles2 = import_react_native_size_matters18.ScaledSheet.create({
2174
+ const styles = import_react_native_size_matters16.ScaledSheet.create({
2027
2175
  root: {
2028
- width: fullscreen ? import_react_native21.Dimensions.get("screen").width : "100%",
2029
- height: fullscreen ? import_react_native21.Dimensions.get("screen").height : "100%",
2176
+ width: fullscreen ? import_react_native20.Dimensions.get("screen").width : "100%",
2177
+ height: fullscreen ? import_react_native20.Dimensions.get("screen").height : "100%",
2030
2178
  left: 0,
2031
2179
  bottom: 0,
2032
2180
  zIndex: 100,
@@ -2049,14 +2197,14 @@ var Spinner = ({
2049
2197
  color: color === "light" ? colors2.white[2] : colors2.black[4]
2050
2198
  }
2051
2199
  });
2052
- return /* @__PURE__ */ import_react19.default.createElement(import_react_native21.View, { style: styles2.root }, /* @__PURE__ */ import_react19.default.createElement(import_react_native21.View, { style: styles2.content }, /* @__PURE__ */ import_react19.default.createElement(import_react_native21.ActivityIndicator, { color: colors2[color].dark, size }), label && /* @__PURE__ */ import_react19.default.createElement(Typography_default, { style: styles2.label }, label)));
2200
+ return /* @__PURE__ */ import_react19.default.createElement(import_react_native20.View, { style: styles.root }, /* @__PURE__ */ import_react19.default.createElement(import_react_native20.View, { style: styles.content }, /* @__PURE__ */ import_react19.default.createElement(import_react_native20.ActivityIndicator, { color: colors2[color].dark, size }), label && /* @__PURE__ */ import_react19.default.createElement(Typography_default, { style: styles.label }, label)));
2053
2201
  };
2054
2202
  var Spinner_default = Spinner;
2055
2203
 
2056
2204
  // ../src/Components/OTPInput.tsx
2057
2205
  var import_react20 = __toESM(require("react"));
2058
- var import_react_native22 = require("react-native");
2059
- var import_react_native_size_matters19 = require("react-native-size-matters");
2206
+ var import_react_native21 = require("react-native");
2207
+ var import_react_native_size_matters17 = require("react-native-size-matters");
2060
2208
  var OTPInput = ({
2061
2209
  length = 6,
2062
2210
  onChange = () => {
@@ -2070,12 +2218,10 @@ var OTPInput = ({
2070
2218
  () => Array(length).fill(0).map((_) => import_react20.default.createRef()),
2071
2219
  [length]
2072
2220
  );
2073
- console.log("v", value);
2074
2221
  const onChangeHandler = (val, index) => {
2075
2222
  if (value.length >= length && val.length > 0)
2076
2223
  return;
2077
2224
  if (val.length > 1) {
2078
- console.log("reached", val);
2079
2225
  const digits = val.replace(/\D/g, "").slice(0, length);
2080
2226
  onChange(digits);
2081
2227
  if (digits.length === length) {
@@ -2101,25 +2247,25 @@ var OTPInput = ({
2101
2247
  }
2102
2248
  };
2103
2249
  const colors2 = useColors();
2104
- const styles2 = import_react_native_size_matters19.ScaledSheet.create({
2250
+ const styles = import_react_native_size_matters17.ScaledSheet.create({
2105
2251
  root: {},
2106
2252
  container: { flexDirection: "row" },
2107
2253
  input: {
2108
- height: (0, import_react_native_size_matters19.ms)(size),
2109
- width: (0, import_react_native_size_matters19.ms)(size),
2254
+ height: (0, import_react_native_size_matters17.ms)(size),
2255
+ width: (0, import_react_native_size_matters17.ms)(size),
2110
2256
  borderColor: colors2.white[5],
2111
2257
  backgroundColor: variant === "contained" ? colors2.white[3] : void 0,
2112
2258
  borderWidth: variant === "outlined" ? 1 : 0,
2113
2259
  borderBottomWidth: variant === "contained" ? 0 : 1,
2114
- marginHorizontal: (0, import_react_native_size_matters19.ms)(spacing * 5),
2260
+ marginHorizontal: (0, import_react_native_size_matters17.ms)(spacing * 5),
2115
2261
  textAlign: "center",
2116
2262
  borderRadius: variant === "text" ? 0 : 10,
2117
2263
  color: colors2.dark.main,
2118
- fontSize: (0, import_react_native_size_matters19.ms)(size * 0.5)
2264
+ fontSize: (0, import_react_native_size_matters17.ms)(size * 0.5)
2119
2265
  }
2120
2266
  });
2121
- return /* @__PURE__ */ import_react20.default.createElement(import_react_native22.View, { style: styles2.root }, /* @__PURE__ */ import_react20.default.createElement(import_react_native22.View, { style: styles2.container }, [...Array(length)].map((_, index) => /* @__PURE__ */ import_react20.default.createElement(
2122
- import_react_native22.TextInput,
2267
+ return /* @__PURE__ */ import_react20.default.createElement(import_react_native21.View, { style: styles.root }, /* @__PURE__ */ import_react20.default.createElement(import_react_native21.View, { style: styles.container }, [...Array(length)].map((_, index) => /* @__PURE__ */ import_react20.default.createElement(
2268
+ import_react_native21.TextInput,
2123
2269
  {
2124
2270
  ref: inputRefs[index],
2125
2271
  onChangeText: (val) => onChangeHandler(val, index),
@@ -2127,7 +2273,7 @@ var OTPInput = ({
2127
2273
  blurOnSubmit: false,
2128
2274
  keyboardType: "number-pad",
2129
2275
  key: index,
2130
- style: [styles2.input]
2276
+ style: [styles.input]
2131
2277
  }
2132
2278
  ))));
2133
2279
  };
@@ -2169,6 +2315,7 @@ var next_default = HoddyUI;
2169
2315
  showFlashMessage,
2170
2316
  useColors,
2171
2317
  useNavScreenOptions,
2172
- useTheme
2318
+ useTheme,
2319
+ useThemeContext
2173
2320
  });
2174
2321
  //# sourceMappingURL=index.js.map