@beyondcorp/beyond-ui-native 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -67,6 +67,7 @@ __export(src_exports, {
67
67
  Dialog: () => Dialog,
68
68
  DialogClose: () => DialogClose,
69
69
  DialogContent: () => DialogContent,
70
+ DialogContext: () => DialogContext,
70
71
  DialogDescription: () => DialogDescription,
71
72
  DialogFooter: () => DialogFooter,
72
73
  DialogHeader: () => DialogHeader,
@@ -95,6 +96,7 @@ __export(src_exports, {
95
96
  Switch: () => Switch,
96
97
  Tabs: () => Tabs,
97
98
  TabsContent: () => TabsContent,
99
+ TabsContext: () => TabsContext,
98
100
  TabsList: () => TabsList,
99
101
  TabsTrigger: () => TabsTrigger,
100
102
  Text: () => Text2,
@@ -121,6 +123,8 @@ __export(src_exports, {
121
123
  textVariants: () => textVariants,
122
124
  tokens: () => tokens,
123
125
  useBeyondUI: () => useBeyondUI,
126
+ useDialogContext: () => useDialogContext,
127
+ useTabsContext: () => useTabsContext,
124
128
  useToast: () => useToast
125
129
  });
126
130
  module.exports = __toCommonJS(src_exports);
@@ -819,29 +823,53 @@ AvatarFallback.displayName = "Avatar.Fallback";
819
823
 
820
824
  // src/components/switch/switch.tsx
821
825
  var React10 = __toESM(require("react"));
822
- var SwitchPrimitive = __toESM(require("@rn-primitives/switch"));
826
+ var import_react_native11 = require("react-native");
823
827
  var import_jsx_runtime11 = require("react/jsx-runtime");
824
- var Switch = React10.forwardRef(function Switch2({ className, thumbClassName, onCheckedChange, ...props }, ref) {
828
+ var Switch = React10.forwardRef(function Switch2({
829
+ checked: controlledChecked,
830
+ defaultChecked = false,
831
+ onCheckedChange,
832
+ disabled = false,
833
+ className,
834
+ thumbClassName,
835
+ onPress,
836
+ ...props
837
+ }, ref) {
838
+ const [uncontrolledChecked, setUncontrolledChecked] = React10.useState(defaultChecked);
839
+ const isControlled = controlledChecked !== void 0;
840
+ const isChecked = isControlled ? controlledChecked : uncontrolledChecked;
841
+ const handlePress = (e) => {
842
+ if (disabled) return;
843
+ const nextChecked = !isChecked;
844
+ if (!isControlled) {
845
+ setUncontrolledChecked(nextChecked);
846
+ }
847
+ onCheckedChange?.(nextChecked);
848
+ onPress?.(e);
849
+ };
825
850
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
826
- SwitchPrimitive.Root,
851
+ import_react_native11.Pressable,
827
852
  {
828
853
  ref,
829
- onCheckedChange: onCheckedChange ?? (() => {
830
- }),
854
+ role: "switch",
855
+ accessibilityRole: "switch",
856
+ accessibilityState: { checked: isChecked, disabled: !!disabled },
857
+ disabled,
858
+ onPress: handlePress,
831
859
  className: cn(
832
860
  "h-7 w-12 shrink-0 flex-row items-center rounded-full p-0.5 transition-colors",
833
- "bg-neutral-300 dark:bg-neutral-700 web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-primary-500",
834
- props.checked ? "bg-primary-600 dark:bg-primary-600" : "bg-neutral-300 dark:bg-neutral-700",
835
- props.disabled && "opacity-50",
861
+ isChecked ? "bg-primary-600 dark:bg-primary-600" : "bg-neutral-300 dark:bg-neutral-700",
862
+ disabled && "opacity-50",
836
863
  className
837
864
  ),
838
865
  ...props,
839
866
  children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
840
- SwitchPrimitive.Thumb,
867
+ import_react_native11.View,
841
868
  {
869
+ role: "presentation",
842
870
  className: cn(
843
- "h-6 w-6 rounded-full bg-white shadow-md transition-transform",
844
- props.checked ? "translate-x-5" : "translate-x-0",
871
+ "h-6 w-6 rounded-full bg-white shadow-sm transition-transform",
872
+ isChecked ? "translate-x-5" : "translate-x-0",
845
873
  thumbClassName
846
874
  )
847
875
  }
@@ -853,42 +881,63 @@ Switch.displayName = "Switch";
853
881
 
854
882
  // src/components/checkbox/checkbox.tsx
855
883
  var React11 = __toESM(require("react"));
856
- var import_react_native11 = require("react-native");
857
- var CheckboxPrimitive = __toESM(require("@rn-primitives/checkbox"));
884
+ var import_react_native12 = require("react-native");
858
885
  var import_jsx_runtime12 = require("react/jsx-runtime");
859
- var Checkbox = React11.forwardRef(function Checkbox2({ className, indicatorClassName, label, labelClassName, ...props }, ref) {
886
+ var Checkbox = React11.forwardRef(function Checkbox2({
887
+ checked: controlledChecked,
888
+ defaultChecked = false,
889
+ onCheckedChange,
890
+ disabled = false,
891
+ className,
892
+ indicatorClassName,
893
+ label,
894
+ labelClassName,
895
+ onPress,
896
+ ...props
897
+ }, ref) {
898
+ const [uncontrolledChecked, setUncontrolledChecked] = React11.useState(defaultChecked);
899
+ const isControlled = controlledChecked !== void 0;
900
+ const isChecked = isControlled ? controlledChecked : uncontrolledChecked;
901
+ const handlePress = (e) => {
902
+ if (disabled) return;
903
+ const nextChecked = !isChecked;
904
+ if (!isControlled) {
905
+ setUncontrolledChecked(nextChecked);
906
+ }
907
+ onCheckedChange?.(nextChecked);
908
+ onPress?.(e);
909
+ };
860
910
  const content = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
861
- CheckboxPrimitive.Root,
911
+ import_react_native12.Pressable,
862
912
  {
863
913
  ref,
914
+ role: "checkbox",
915
+ accessibilityRole: "checkbox",
916
+ accessibilityState: { checked: isChecked, disabled: !!disabled },
917
+ disabled,
918
+ onPress: handlePress,
864
919
  className: cn(
865
920
  "h-6 w-6 shrink-0 items-center justify-center rounded-md border border-neutral-300 dark:border-neutral-700 bg-white dark:bg-neutral-900",
866
- props.checked && "bg-primary-600 border-primary-600 dark:bg-primary-600 dark:border-primary-600",
867
- props.disabled && "opacity-50",
921
+ isChecked && "bg-primary-600 border-primary-600 dark:bg-primary-600 dark:border-primary-600",
922
+ disabled && "opacity-50",
868
923
  className
869
924
  ),
870
925
  ...props,
871
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
872
- CheckboxPrimitive.Indicator,
873
- {
874
- className: cn("items-center justify-center", indicatorClassName),
875
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_react_native11.Text, { className: "text-white text-xs font-bold leading-none", children: "\u2713" })
876
- }
877
- )
926
+ children: isChecked ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_react_native12.View, { className: cn("items-center justify-center", indicatorClassName), children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_react_native12.Text, { className: "text-white text-xs font-bold leading-none", children: "\u2713" }) }) : null
878
927
  }
879
928
  );
880
929
  if (!label) {
881
930
  return content;
882
931
  }
883
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_react_native11.View, { className: "flex-row items-center gap-2.5", children: [
932
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_react_native12.View, { className: "flex-row items-center gap-2.5", children: [
884
933
  content,
885
934
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
886
- import_react_native11.Text,
935
+ import_react_native12.Text,
887
936
  {
888
- onPress: props.onCheckedChange ? () => props.onCheckedChange(!props.checked) : void 0,
937
+ onPress: !disabled ? handlePress : void 0,
889
938
  className: cn(
890
939
  "text-sm font-medium text-neutral-800 dark:text-neutral-200",
891
- props.disabled && "opacity-50",
940
+ disabled && "opacity-50",
892
941
  labelClassName
893
942
  ),
894
943
  children: label
@@ -900,7 +949,7 @@ Checkbox.displayName = "Checkbox";
900
949
 
901
950
  // src/components/radio/radio.tsx
902
951
  var React12 = __toESM(require("react"));
903
- var import_react_native12 = require("react-native");
952
+ var import_react_native13 = require("react-native");
904
953
  var import_jsx_runtime13 = require("react/jsx-runtime");
905
954
  var RadioGroupContext = React12.createContext({});
906
955
  function RadioGroup({
@@ -927,7 +976,7 @@ function RadioGroup({
927
976
  onValueChange: handleValueChange,
928
977
  disabled
929
978
  },
930
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_native12.View, { className: cn("gap-3", className), ...props, children })
979
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react_native13.View, { className: cn("gap-3", className), ...props, children })
931
980
  }
932
981
  );
933
982
  }
@@ -948,7 +997,7 @@ function Radio({
948
997
  }
949
998
  };
950
999
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
951
- import_react_native12.Pressable,
1000
+ import_react_native13.Pressable,
952
1001
  {
953
1002
  onPress: handlePress,
954
1003
  disabled: isDisabled,
@@ -957,7 +1006,7 @@ function Radio({
957
1006
  className: cn("flex-row items-center gap-2.5", isDisabled && "opacity-50"),
958
1007
  children: [
959
1008
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
960
- import_react_native12.View,
1009
+ import_react_native13.View,
961
1010
  {
962
1011
  className: cn(
963
1012
  "h-5 w-5 rounded-full border border-neutral-300 dark:border-neutral-700 items-center justify-center bg-white dark:bg-neutral-900",
@@ -965,7 +1014,7 @@ function Radio({
965
1014
  className
966
1015
  ),
967
1016
  children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
968
- import_react_native12.View,
1017
+ import_react_native13.View,
969
1018
  {
970
1019
  className: cn(
971
1020
  "h-2.5 w-2.5 rounded-full bg-primary-600 dark:bg-primary-600",
@@ -976,7 +1025,7 @@ function Radio({
976
1025
  }
977
1026
  ),
978
1027
  label ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
979
- import_react_native12.Text,
1028
+ import_react_native13.Text,
980
1029
  {
981
1030
  className: cn(
982
1031
  "text-sm font-medium text-neutral-800 dark:text-neutral-200",
@@ -991,7 +1040,7 @@ function Radio({
991
1040
  }
992
1041
 
993
1042
  // src/components/spinner/spinner.tsx
994
- var import_react_native13 = require("react-native");
1043
+ var import_react_native14 = require("react-native");
995
1044
  var import_jsx_runtime14 = require("react/jsx-runtime");
996
1045
  var colorMap = {
997
1046
  primary: "#2563eb",
@@ -1010,25 +1059,25 @@ function Spinner({
1010
1059
  }) {
1011
1060
  const nativeSize = size === "lg" ? "large" : "small";
1012
1061
  const hexColor = colorMap[color] ?? colorMap.primary;
1013
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native13.View, { className: cn("items-center justify-center", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native13.ActivityIndicator, { size: nativeSize, color: hexColor }) });
1062
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native14.View, { className: cn("items-center justify-center", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native14.ActivityIndicator, { size: nativeSize, color: hexColor }) });
1014
1063
  }
1015
1064
  Spinner.displayName = "Spinner";
1016
1065
 
1017
1066
  // src/components/skeleton/skeleton.tsx
1018
1067
  var React13 = __toESM(require("react"));
1019
- var import_react_native14 = require("react-native");
1068
+ var import_react_native15 = require("react-native");
1020
1069
  var import_jsx_runtime15 = require("react/jsx-runtime");
1021
1070
  function Skeleton({ className, style, ...props }) {
1022
- const pulseAnim = React13.useRef(new import_react_native14.Animated.Value(0.4)).current;
1071
+ const pulseAnim = React13.useRef(new import_react_native15.Animated.Value(0.4)).current;
1023
1072
  React13.useEffect(() => {
1024
- const animation = import_react_native14.Animated.loop(
1025
- import_react_native14.Animated.sequence([
1026
- import_react_native14.Animated.timing(pulseAnim, {
1073
+ const animation = import_react_native15.Animated.loop(
1074
+ import_react_native15.Animated.sequence([
1075
+ import_react_native15.Animated.timing(pulseAnim, {
1027
1076
  toValue: 1,
1028
1077
  duration: 900,
1029
1078
  useNativeDriver: true
1030
1079
  }),
1031
- import_react_native14.Animated.timing(pulseAnim, {
1080
+ import_react_native15.Animated.timing(pulseAnim, {
1032
1081
  toValue: 0.4,
1033
1082
  duration: 900,
1034
1083
  useNativeDriver: true
@@ -1039,7 +1088,7 @@ function Skeleton({ className, style, ...props }) {
1039
1088
  return () => animation.stop();
1040
1089
  }, [pulseAnim]);
1041
1090
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1042
- import_react_native14.Animated.View,
1091
+ import_react_native15.Animated.View,
1043
1092
  {
1044
1093
  style: [{ opacity: pulseAnim }, style],
1045
1094
  className: cn(
@@ -1054,7 +1103,7 @@ Skeleton.displayName = "Skeleton";
1054
1103
 
1055
1104
  // src/components/alert/alert.tsx
1056
1105
  var React14 = __toESM(require("react"));
1057
- var import_react_native15 = require("react-native");
1106
+ var import_react_native16 = require("react-native");
1058
1107
  var import_class_variance_authority8 = require("class-variance-authority");
1059
1108
  var import_jsx_runtime16 = require("react/jsx-runtime");
1060
1109
  var alertVariants = (0, import_class_variance_authority8.cva)(
@@ -1107,7 +1156,7 @@ function Alert({
1107
1156
  ...props
1108
1157
  }) {
1109
1158
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(AlertContext.Provider, { value: { variant }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1110
- import_react_native15.View,
1159
+ import_react_native16.View,
1111
1160
  {
1112
1161
  accessibilityRole: "alert",
1113
1162
  className: cn(alertVariants({ variant }), className),
@@ -1124,7 +1173,7 @@ function AlertTitle({
1124
1173
  }) {
1125
1174
  const { variant } = React14.useContext(AlertContext);
1126
1175
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1127
- import_react_native15.Text,
1176
+ import_react_native16.Text,
1128
1177
  {
1129
1178
  className: cn(alertTitleVariants({ variant }), className),
1130
1179
  ...props,
@@ -1140,7 +1189,7 @@ function AlertDescription({
1140
1189
  }) {
1141
1190
  const { variant } = React14.useContext(AlertContext);
1142
1191
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1143
- import_react_native15.Text,
1192
+ import_react_native16.Text,
1144
1193
  {
1145
1194
  className: cn(alertDescriptionVariants({ variant }), className),
1146
1195
  ...props,
@@ -1151,7 +1200,7 @@ function AlertDescription({
1151
1200
  AlertDescription.displayName = "Alert.Description";
1152
1201
 
1153
1202
  // src/components/separator/separator.tsx
1154
- var import_react_native16 = require("react-native");
1203
+ var import_react_native17 = require("react-native");
1155
1204
  var import_jsx_runtime17 = require("react/jsx-runtime");
1156
1205
  function Separator({
1157
1206
  orientation = "horizontal",
@@ -1159,7 +1208,7 @@ function Separator({
1159
1208
  ...props
1160
1209
  }) {
1161
1210
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1162
- import_react_native16.View,
1211
+ import_react_native17.View,
1163
1212
  {
1164
1213
  accessibilityRole: "none",
1165
1214
  className: cn(
@@ -1175,60 +1224,131 @@ Separator.displayName = "Separator";
1175
1224
 
1176
1225
  // src/components/dialog/dialog.tsx
1177
1226
  var React15 = __toESM(require("react"));
1178
- var import_react_native17 = require("react-native");
1179
- var DialogPrimitive = __toESM(require("@rn-primitives/dialog"));
1227
+ var import_react_native18 = require("react-native");
1180
1228
  var import_jsx_runtime18 = require("react/jsx-runtime");
1181
- var Dialog = DialogPrimitive.Root;
1182
- var DialogTrigger = DialogPrimitive.Trigger;
1183
- var DialogPortal = DialogPrimitive.Portal;
1184
- var DialogClose = DialogPrimitive.Close;
1185
- var DialogOverlay = React15.forwardRef(function DialogOverlay2({ className, ...props }, ref) {
1229
+ var DialogContext = React15.createContext(null);
1230
+ function useDialogContext() {
1231
+ const context = React15.useContext(DialogContext);
1232
+ if (!context) {
1233
+ throw new Error("Dialog compound components must be used within a Dialog component");
1234
+ }
1235
+ return context;
1236
+ }
1237
+ function Dialog({
1238
+ open: controlledOpen,
1239
+ defaultOpen = false,
1240
+ onOpenChange,
1241
+ children
1242
+ }) {
1243
+ const [uncontrolledOpen, setUncontrolledOpen] = React15.useState(defaultOpen);
1244
+ const isControlled = controlledOpen !== void 0;
1245
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
1246
+ const handleOpenChange = React15.useCallback(
1247
+ (nextOpen) => {
1248
+ if (!isControlled) {
1249
+ setUncontrolledOpen(nextOpen);
1250
+ }
1251
+ onOpenChange?.(nextOpen);
1252
+ },
1253
+ [isControlled, onOpenChange]
1254
+ );
1255
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogContext.Provider, { value: { open, onOpenChange: handleOpenChange }, children });
1256
+ }
1257
+ Dialog.displayName = "Dialog";
1258
+ var DialogTrigger = React15.forwardRef(
1259
+ function DialogTrigger2({ asChild, children, onPress, ...props }, ref) {
1260
+ const { open, onOpenChange } = useDialogContext();
1261
+ const handlePress = (e) => {
1262
+ onOpenChange(!open);
1263
+ onPress?.(e);
1264
+ };
1265
+ if (asChild && React15.isValidElement(children)) {
1266
+ return React15.cloneElement(children, {
1267
+ ref,
1268
+ onPress: (e) => {
1269
+ children.props?.onPress?.(e);
1270
+ handlePress(e);
1271
+ }
1272
+ });
1273
+ }
1274
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_native18.Pressable, { ref, onPress: handlePress, role: "button", ...props, children });
1275
+ }
1276
+ );
1277
+ DialogTrigger.displayName = "DialogTrigger";
1278
+ function DialogPortal({ children, forceMount }) {
1279
+ const { open, onOpenChange } = useDialogContext();
1280
+ if (!open && !forceMount) {
1281
+ return null;
1282
+ }
1186
1283
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1187
- DialogPrimitive.Overlay,
1284
+ import_react_native18.Modal,
1188
1285
  {
1189
- ref,
1190
- style: import_react_native17.StyleSheet.absoluteFill,
1191
- className: cn(
1192
- "z-50 bg-black/60",
1193
- className
1194
- ),
1195
- ...props
1286
+ transparent: true,
1287
+ visible: open,
1288
+ animationType: "fade",
1289
+ onRequestClose: () => onOpenChange(false),
1290
+ statusBarTranslucent: true,
1291
+ children
1196
1292
  }
1197
1293
  );
1198
- });
1294
+ }
1295
+ DialogPortal.displayName = "DialogPortal";
1296
+ var DialogOverlay = React15.forwardRef(
1297
+ function DialogOverlay2({ className, closeOnPress = true, ...props }, ref) {
1298
+ const { onOpenChange } = useDialogContext();
1299
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1300
+ import_react_native18.Pressable,
1301
+ {
1302
+ ref,
1303
+ style: import_react_native18.StyleSheet.absoluteFill,
1304
+ className: cn("z-50 bg-black/60", className),
1305
+ onPress: () => {
1306
+ if (closeOnPress) {
1307
+ onOpenChange(false);
1308
+ }
1309
+ },
1310
+ ...props
1311
+ }
1312
+ );
1313
+ }
1314
+ );
1199
1315
  DialogOverlay.displayName = "DialogOverlay";
1200
- var DialogContent = React15.forwardRef(function DialogContent2({ className, children, ...props }, ref) {
1201
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DialogPortal, { children: [
1202
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogOverlay, {}),
1203
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1204
- import_react_native17.View,
1316
+ var DialogContent = React15.forwardRef(
1317
+ function DialogContent2({ className, overlayClassName, children, ...props }, ref) {
1318
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1319
+ import_react_native18.View,
1205
1320
  {
1206
1321
  pointerEvents: "box-none",
1207
- style: import_react_native17.StyleSheet.absoluteFill,
1322
+ style: import_react_native18.StyleSheet.absoluteFill,
1208
1323
  className: "z-50 items-center justify-center p-4",
1209
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1210
- DialogPrimitive.Content,
1211
- {
1212
- ref,
1213
- className: cn(
1214
- "w-full max-w-lg rounded-2xl border border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900 p-6 shadow-2xl",
1215
- className
1216
- ),
1217
- ...props,
1218
- children
1219
- }
1220
- )
1324
+ children: [
1325
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogOverlay, { className: overlayClassName }),
1326
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1327
+ import_react_native18.View,
1328
+ {
1329
+ ref,
1330
+ role: "dialog",
1331
+ "aria-modal": true,
1332
+ className: cn(
1333
+ "z-50 w-full max-w-lg rounded-2xl border border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900 p-6 shadow-2xl",
1334
+ className
1335
+ ),
1336
+ ...props,
1337
+ children
1338
+ }
1339
+ )
1340
+ ]
1221
1341
  }
1222
- )
1223
- ] });
1224
- });
1342
+ ) });
1343
+ }
1344
+ );
1225
1345
  DialogContent.displayName = "DialogContent";
1226
1346
  function DialogHeader({
1227
1347
  className,
1228
1348
  ...props
1229
1349
  }) {
1230
1350
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1231
- import_react_native17.View,
1351
+ import_react_native18.View,
1232
1352
  {
1233
1353
  className: cn("flex-col space-y-2 text-center sm:text-left", className),
1234
1354
  ...props
@@ -1236,77 +1356,108 @@ function DialogHeader({
1236
1356
  );
1237
1357
  }
1238
1358
  DialogHeader.displayName = "DialogHeader";
1239
- var DialogTitle = React15.forwardRef(function DialogTitle2({ className, ...props }, ref) {
1240
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1241
- DialogPrimitive.Title,
1242
- {
1243
- ref,
1244
- className: cn(
1245
- "text-xl font-bold tracking-tight text-neutral-900 dark:text-neutral-50",
1246
- className
1247
- ),
1248
- ...props
1249
- }
1250
- );
1251
- });
1359
+ var DialogTitle = React15.forwardRef(
1360
+ function DialogTitle2({ className, ...props }, ref) {
1361
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1362
+ import_react_native18.Text,
1363
+ {
1364
+ ref,
1365
+ role: "heading",
1366
+ "aria-level": 2,
1367
+ className: cn(
1368
+ "text-xl font-bold tracking-tight text-neutral-900 dark:text-neutral-50",
1369
+ className
1370
+ ),
1371
+ ...props
1372
+ }
1373
+ );
1374
+ }
1375
+ );
1252
1376
  DialogTitle.displayName = "DialogTitle";
1253
- var DialogDescription = React15.forwardRef(function DialogDescription2({ className, ...props }, ref) {
1254
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1255
- DialogPrimitive.Description,
1256
- {
1257
- ref,
1258
- className: cn("text-sm text-neutral-500 dark:text-neutral-400 mt-1", className),
1259
- ...props
1260
- }
1261
- );
1262
- });
1377
+ var DialogDescription = React15.forwardRef(
1378
+ function DialogDescription2({ className, ...props }, ref) {
1379
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1380
+ import_react_native18.Text,
1381
+ {
1382
+ ref,
1383
+ className: cn(
1384
+ "text-sm text-neutral-500 dark:text-neutral-400 mt-1",
1385
+ className
1386
+ ),
1387
+ ...props
1388
+ }
1389
+ );
1390
+ }
1391
+ );
1263
1392
  DialogDescription.displayName = "DialogDescription";
1264
1393
  function DialogFooter({
1265
1394
  className,
1266
1395
  ...props
1267
1396
  }) {
1268
1397
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1269
- import_react_native17.View,
1398
+ import_react_native18.View,
1270
1399
  {
1271
- className: cn(
1272
- "flex-row justify-end space-x-2 mt-6",
1273
- className
1274
- ),
1400
+ className: cn("flex-row justify-end space-x-2 mt-6", className),
1275
1401
  ...props
1276
1402
  }
1277
1403
  );
1278
1404
  }
1279
1405
  DialogFooter.displayName = "DialogFooter";
1406
+ var DialogClose = React15.forwardRef(
1407
+ function DialogClose2({ asChild, children, onPress, ...props }, ref) {
1408
+ const { onOpenChange } = useDialogContext();
1409
+ const handlePress = (e) => {
1410
+ onOpenChange(false);
1411
+ onPress?.(e);
1412
+ };
1413
+ if (asChild && React15.isValidElement(children)) {
1414
+ return React15.cloneElement(children, {
1415
+ ref,
1416
+ onPress: (e) => {
1417
+ children.props?.onPress?.(e);
1418
+ handlePress(e);
1419
+ }
1420
+ });
1421
+ }
1422
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_native18.Pressable, { ref, onPress: handlePress, role: "button", ...props, children });
1423
+ }
1424
+ );
1425
+ DialogClose.displayName = "DialogClose";
1280
1426
 
1281
1427
  // src/components/tabs/tabs.tsx
1282
1428
  var React16 = __toESM(require("react"));
1283
- var import_react_native18 = require("react-native");
1284
- var TabsPrimitive = __toESM(require("@rn-primitives/tabs"));
1429
+ var import_react_native19 = require("react-native");
1285
1430
  var import_jsx_runtime19 = require("react/jsx-runtime");
1286
- var Tabs = React16.forwardRef(function Tabs2({ value: controlledValue, defaultValue = "", onValueChange, ...props }, ref) {
1431
+ var TabsContext = React16.createContext(null);
1432
+ function useTabsContext() {
1433
+ const context = React16.useContext(TabsContext);
1434
+ if (!context) {
1435
+ throw new Error("Tabs compound components must be rendered inside a Tabs component");
1436
+ }
1437
+ return context;
1438
+ }
1439
+ var Tabs = React16.forwardRef(function Tabs2({ value: controlledValue, defaultValue = "", onValueChange, className, children, ...props }, ref) {
1287
1440
  const [internalValue, setInternalValue] = React16.useState(defaultValue);
1288
1441
  const isControlled = controlledValue !== void 0;
1289
1442
  const currentValue = isControlled ? controlledValue : internalValue;
1290
- const handleValueChange = (val) => {
1291
- if (!isControlled) setInternalValue(val);
1292
- onValueChange?.(val);
1293
- };
1294
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1295
- TabsPrimitive.Root,
1296
- {
1297
- ref,
1298
- value: currentValue,
1299
- onValueChange: handleValueChange,
1300
- ...props
1301
- }
1443
+ const handleValueChange = React16.useCallback(
1444
+ (val) => {
1445
+ if (!isControlled) {
1446
+ setInternalValue(val);
1447
+ }
1448
+ onValueChange?.(val);
1449
+ },
1450
+ [isControlled, onValueChange]
1302
1451
  );
1452
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(TabsContext.Provider, { value: { value: currentValue, onValueChange: handleValueChange }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react_native19.View, { ref, className, ...props, children }) });
1303
1453
  });
1304
1454
  Tabs.displayName = "Tabs";
1305
1455
  var TabsList = React16.forwardRef(function TabsList2({ className, ...props }, ref) {
1306
1456
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1307
- TabsPrimitive.List,
1457
+ import_react_native19.View,
1308
1458
  {
1309
1459
  ref,
1460
+ role: "tablist",
1310
1461
  className: cn(
1311
1462
  "flex-row items-center justify-center rounded-xl bg-neutral-100 dark:bg-neutral-800 p-1",
1312
1463
  className
@@ -1316,22 +1467,32 @@ var TabsList = React16.forwardRef(function TabsList2({ className, ...props }, re
1316
1467
  );
1317
1468
  });
1318
1469
  TabsList.displayName = "TabsList";
1319
- var TabsTrigger = React16.forwardRef(function TabsTrigger2({ className, textClassName, children, ...props }, ref) {
1320
- const { value } = TabsPrimitive.useRootContext();
1321
- const isSelected = value === props.value;
1470
+ var TabsTrigger = React16.forwardRef(function TabsTrigger2({ value, className, textClassName, children, onPress, disabled, ...props }, ref) {
1471
+ const { value: selectedValue, onValueChange } = useTabsContext();
1472
+ const isSelected = selectedValue === value;
1473
+ const handlePress = (e) => {
1474
+ if (disabled) return;
1475
+ onValueChange(value);
1476
+ onPress?.(e);
1477
+ };
1322
1478
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1323
- TabsPrimitive.Trigger,
1479
+ import_react_native19.Pressable,
1324
1480
  {
1325
1481
  ref,
1482
+ role: "tab",
1483
+ accessibilityRole: "tab",
1484
+ accessibilityState: { selected: isSelected, disabled: !!disabled },
1485
+ disabled,
1486
+ onPress: handlePress,
1326
1487
  className: cn(
1327
1488
  "flex-1 items-center justify-center rounded-lg py-2 px-3 transition-all",
1328
1489
  isSelected ? "bg-white dark:bg-neutral-900 shadow-sm" : "bg-transparent opacity-70",
1329
- props.disabled && "opacity-40",
1490
+ disabled && "opacity-40",
1330
1491
  className
1331
1492
  ),
1332
1493
  ...props,
1333
1494
  children: typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1334
- import_react_native18.Text,
1495
+ import_react_native19.Text,
1335
1496
  {
1336
1497
  className: cn(
1337
1498
  "text-sm font-semibold",
@@ -1345,13 +1506,21 @@ var TabsTrigger = React16.forwardRef(function TabsTrigger2({ className, textClas
1345
1506
  );
1346
1507
  });
1347
1508
  TabsTrigger.displayName = "TabsTrigger";
1348
- var TabsContent = React16.forwardRef(function TabsContent2({ className, ...props }, ref) {
1509
+ var TabsContent = React16.forwardRef(function TabsContent2({ value, className, forceMount, children, ...props }, ref) {
1510
+ const { value: selectedValue } = useTabsContext();
1511
+ const isSelected = selectedValue === value;
1512
+ if (!isSelected && !forceMount) {
1513
+ return null;
1514
+ }
1349
1515
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1350
- TabsPrimitive.Content,
1516
+ import_react_native19.View,
1351
1517
  {
1352
1518
  ref,
1519
+ role: "tabpanel",
1520
+ accessibilityElementsHidden: !isSelected,
1353
1521
  className: cn("mt-3", className),
1354
- ...props
1522
+ ...props,
1523
+ children
1355
1524
  }
1356
1525
  );
1357
1526
  });
@@ -1359,7 +1528,7 @@ TabsContent.displayName = "TabsContent";
1359
1528
 
1360
1529
  // src/components/toast/toast.tsx
1361
1530
  var React17 = __toESM(require("react"));
1362
- var import_react_native19 = require("react-native");
1531
+ var import_react_native20 = require("react-native");
1363
1532
  var import_class_variance_authority9 = require("class-variance-authority");
1364
1533
  var import_jsx_runtime20 = require("react/jsx-runtime");
1365
1534
  var toastVariants = (0, import_class_variance_authority9.cva)(
@@ -1394,16 +1563,16 @@ var toastTitleVariants = (0, import_class_variance_authority9.cva)("text-sm font
1394
1563
  }
1395
1564
  });
1396
1565
  function ToastBanner({ toast, onDismiss }) {
1397
- const opacity = React17.useRef(new import_react_native19.Animated.Value(0)).current;
1398
- const translateY = React17.useRef(new import_react_native19.Animated.Value(-16)).current;
1566
+ const opacity = React17.useRef(new import_react_native20.Animated.Value(0)).current;
1567
+ const translateY = React17.useRef(new import_react_native20.Animated.Value(-16)).current;
1399
1568
  React17.useEffect(() => {
1400
- import_react_native19.Animated.parallel([
1401
- import_react_native19.Animated.timing(opacity, {
1569
+ import_react_native20.Animated.parallel([
1570
+ import_react_native20.Animated.timing(opacity, {
1402
1571
  toValue: 1,
1403
1572
  duration: 200,
1404
1573
  useNativeDriver: true
1405
1574
  }),
1406
- import_react_native19.Animated.timing(translateY, {
1575
+ import_react_native20.Animated.timing(translateY, {
1407
1576
  toValue: 0,
1408
1577
  duration: 200,
1409
1578
  useNativeDriver: true
@@ -1415,13 +1584,13 @@ function ToastBanner({ toast, onDismiss }) {
1415
1584
  return () => clearTimeout(timer);
1416
1585
  }, []);
1417
1586
  const handleDismiss = () => {
1418
- import_react_native19.Animated.parallel([
1419
- import_react_native19.Animated.timing(opacity, {
1587
+ import_react_native20.Animated.parallel([
1588
+ import_react_native20.Animated.timing(opacity, {
1420
1589
  toValue: 0,
1421
1590
  duration: 200,
1422
1591
  useNativeDriver: true
1423
1592
  }),
1424
- import_react_native19.Animated.timing(translateY, {
1593
+ import_react_native20.Animated.timing(translateY, {
1425
1594
  toValue: -16,
1426
1595
  duration: 200,
1427
1596
  useNativeDriver: true
@@ -1432,7 +1601,7 @@ function ToastBanner({ toast, onDismiss }) {
1432
1601
  };
1433
1602
  const variant = toast.variant || "default";
1434
1603
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1435
- import_react_native19.Animated.View,
1604
+ import_react_native20.Animated.View,
1436
1605
  {
1437
1606
  style: {
1438
1607
  opacity,
@@ -1440,16 +1609,16 @@ function ToastBanner({ toast, onDismiss }) {
1440
1609
  },
1441
1610
  className: "w-full items-center px-4",
1442
1611
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1443
- import_react_native19.Pressable,
1612
+ import_react_native20.Pressable,
1444
1613
  {
1445
1614
  onPress: handleDismiss,
1446
1615
  className: cn(toastVariants({ variant })),
1447
1616
  children: [
1448
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native19.View, { className: "flex-1 pr-2", children: [
1449
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native19.Text, { className: cn(toastTitleVariants({ variant })), children: toast.title }),
1450
- toast.description ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native19.Text, { className: "text-xs text-neutral-600 dark:text-neutral-400 mt-0.5", children: toast.description }) : null
1617
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native20.View, { className: "flex-1 pr-2", children: [
1618
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native20.Text, { className: cn(toastTitleVariants({ variant })), children: toast.title }),
1619
+ toast.description ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native20.Text, { className: "text-xs text-neutral-600 dark:text-neutral-400 mt-0.5", children: toast.description }) : null
1451
1620
  ] }),
1452
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native19.Text, { className: "text-xs text-neutral-400", children: "\u2715" })
1621
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native20.Text, { className: "text-xs text-neutral-400", children: "\u2715" })
1453
1622
  ]
1454
1623
  }
1455
1624
  )
@@ -1462,7 +1631,7 @@ function ToastContainer({
1462
1631
  }) {
1463
1632
  if (toasts.length === 0) return null;
1464
1633
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1465
- import_react_native19.View,
1634
+ import_react_native20.View,
1466
1635
  {
1467
1636
  pointerEvents: "box-none",
1468
1637
  className: "absolute top-12 left-0 right-0 z-50 items-center",
@@ -1483,7 +1652,7 @@ function useToast() {
1483
1652
  }
1484
1653
 
1485
1654
  // src/components/stats-card/stats-card.tsx
1486
- var import_react_native20 = require("react-native");
1655
+ var import_react_native21 = require("react-native");
1487
1656
  var import_jsx_runtime21 = require("react/jsx-runtime");
1488
1657
  function StatsCard({
1489
1658
  title,
@@ -1496,14 +1665,14 @@ function StatsCard({
1496
1665
  const isUp = trend?.direction === "up";
1497
1666
  const isDown = trend?.direction === "down";
1498
1667
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Card, { className: cn("w-full shadow-sm", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(CardContent, { className: "p-4", children: [
1499
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native20.View, { className: "flex-row items-center justify-between mb-2", children: [
1500
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native20.Text, { className: "text-sm font-medium text-neutral-500 dark:text-neutral-400", children: title }),
1501
- icon ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native20.View, { className: "h-9 w-9 rounded-xl bg-neutral-100 dark:bg-neutral-800 items-center justify-center", children: icon }) : null
1668
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native21.View, { className: "flex-row items-center justify-between mb-2", children: [
1669
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native21.Text, { className: "text-sm font-medium text-neutral-500 dark:text-neutral-400", children: title }),
1670
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native21.View, { className: "h-9 w-9 rounded-xl bg-neutral-100 dark:bg-neutral-800 items-center justify-center", children: icon }) : null
1502
1671
  ] }),
1503
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native20.Text, { className: "text-2xl font-extrabold tracking-tight text-neutral-900 dark:text-neutral-50 mb-2", children: value }),
1504
- trend ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native20.View, { className: "flex-row items-center gap-1.5 flex-wrap", children: [
1672
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native21.Text, { className: "text-2xl font-extrabold tracking-tight text-neutral-900 dark:text-neutral-50 mb-2", children: value }),
1673
+ trend ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native21.View, { className: "flex-row items-center gap-1.5 flex-wrap", children: [
1505
1674
  /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1506
- import_react_native20.View,
1675
+ import_react_native21.View,
1507
1676
  {
1508
1677
  className: cn(
1509
1678
  "flex-row items-center rounded-md px-1.5 py-0.5",
@@ -1513,7 +1682,7 @@ function StatsCard({
1513
1682
  ),
1514
1683
  children: [
1515
1684
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1516
- import_react_native20.Text,
1685
+ import_react_native21.Text,
1517
1686
  {
1518
1687
  className: cn(
1519
1688
  "text-xs font-bold mr-1",
@@ -1525,7 +1694,7 @@ function StatsCard({
1525
1694
  }
1526
1695
  ),
1527
1696
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1528
- import_react_native20.Text,
1697
+ import_react_native21.Text,
1529
1698
  {
1530
1699
  className: cn(
1531
1700
  "text-xs font-semibold",
@@ -1539,7 +1708,7 @@ function StatsCard({
1539
1708
  ]
1540
1709
  }
1541
1710
  ),
1542
- trend.label ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native20.Text, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: trend.label }) : null
1711
+ trend.label ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native21.Text, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: trend.label }) : null
1543
1712
  ] }) : null
1544
1713
  ] }) });
1545
1714
  }
@@ -1547,7 +1716,7 @@ StatsCard.displayName = "StatsCard";
1547
1716
 
1548
1717
  // src/components/accordion/accordion.tsx
1549
1718
  var React19 = __toESM(require("react"));
1550
- var import_react_native21 = require("react-native");
1719
+ var import_react_native22 = require("react-native");
1551
1720
  var import_jsx_runtime22 = require("react/jsx-runtime");
1552
1721
  var AccordionContext = React19.createContext(null);
1553
1722
  function useAccordionContext() {
@@ -1613,7 +1782,7 @@ var Accordion = React19.forwardRef(
1613
1782
  collapsible
1614
1783
  },
1615
1784
  children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1616
- import_react_native21.View,
1785
+ import_react_native22.View,
1617
1786
  {
1618
1787
  ref,
1619
1788
  className: cn("w-full divide-y divide-border", className),
@@ -1639,7 +1808,7 @@ var AccordionItem = React19.forwardRef(
1639
1808
  const { value: selectedValues } = useAccordionContext();
1640
1809
  const isOpen = selectedValues.includes(value);
1641
1810
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AccordionItemContext.Provider, { value: { value, isOpen }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1642
- import_react_native21.View,
1811
+ import_react_native22.View,
1643
1812
  {
1644
1813
  ref,
1645
1814
  className: cn("border-b border-border py-1", className),
@@ -1654,9 +1823,9 @@ var AccordionTrigger = React19.forwardRef(
1654
1823
  ({ className, children, ...props }, ref) => {
1655
1824
  const { toggleItem } = useAccordionContext();
1656
1825
  const { value, isOpen } = useAccordionItemContext();
1657
- const rotationAnim = React19.useRef(new import_react_native21.Animated.Value(isOpen ? 1 : 0)).current;
1826
+ const rotationAnim = React19.useRef(new import_react_native22.Animated.Value(isOpen ? 1 : 0)).current;
1658
1827
  React19.useEffect(() => {
1659
- import_react_native21.Animated.timing(rotationAnim, {
1828
+ import_react_native22.Animated.timing(rotationAnim, {
1660
1829
  toValue: isOpen ? 1 : 0,
1661
1830
  duration: 200,
1662
1831
  useNativeDriver: true
@@ -1667,7 +1836,7 @@ var AccordionTrigger = React19.forwardRef(
1667
1836
  outputRange: ["0deg", "180deg"]
1668
1837
  });
1669
1838
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1670
- import_react_native21.Pressable,
1839
+ import_react_native22.Pressable,
1671
1840
  {
1672
1841
  ref,
1673
1842
  onPress: () => toggleItem(value),
@@ -1679,8 +1848,8 @@ var AccordionTrigger = React19.forwardRef(
1679
1848
  ),
1680
1849
  ...props,
1681
1850
  children: [
1682
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_native21.View, { className: "flex-1 pr-2", children: typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text2, { className: "text-base font-medium text-foreground", children }) : children }),
1683
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_native21.Animated.View, { style: { transform: [{ rotate }] }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text2, { className: "text-muted text-base font-semibold", children: "\u25BC" }) })
1851
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_native22.View, { className: "flex-1 pr-2", children: typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text2, { className: "text-base font-medium text-foreground", children }) : children }),
1852
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_native22.Animated.View, { style: { transform: [{ rotate }] }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text2, { className: "text-muted text-base font-semibold", children: "\u25BC" }) })
1684
1853
  ]
1685
1854
  }
1686
1855
  );
@@ -1692,7 +1861,7 @@ var AccordionContent = React19.forwardRef(
1692
1861
  const { isOpen } = useAccordionItemContext();
1693
1862
  if (!isOpen) return null;
1694
1863
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1695
- import_react_native21.View,
1864
+ import_react_native22.View,
1696
1865
  {
1697
1866
  ref,
1698
1867
  className: cn("pt-1 pb-3 px-1 text-sm text-muted", className),
@@ -1706,7 +1875,7 @@ AccordionContent.displayName = "AccordionContent";
1706
1875
 
1707
1876
  // src/components/bottom-sheet/bottom-sheet.tsx
1708
1877
  var React20 = __toESM(require("react"));
1709
- var import_react_native22 = require("react-native");
1878
+ var import_react_native23 = require("react-native");
1710
1879
  var import_jsx_runtime23 = require("react/jsx-runtime");
1711
1880
  var BottomSheetContext = React20.createContext(null);
1712
1881
  function useBottomSheetContext() {
@@ -1752,38 +1921,38 @@ var BottomSheetTrigger = React20.forwardRef(
1752
1921
  onPress: handlePress
1753
1922
  });
1754
1923
  }
1755
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.Pressable, { ref, onPress: handlePress, ...props, children });
1924
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.Pressable, { ref, onPress: handlePress, ...props, children });
1756
1925
  }
1757
1926
  );
1758
1927
  BottomSheetTrigger.displayName = "BottomSheetTrigger";
1759
1928
  var BottomSheetContent = React20.forwardRef(
1760
1929
  ({ className, children, ...props }, ref) => {
1761
1930
  const { open, closeSheet } = useBottomSheetContext();
1762
- const screenHeight = import_react_native22.Dimensions.get("window").height;
1763
- const translateY = React20.useRef(new import_react_native22.Animated.Value(screenHeight)).current;
1764
- const backdropOpacity = React20.useRef(new import_react_native22.Animated.Value(0)).current;
1931
+ const screenHeight = import_react_native23.Dimensions.get("window").height;
1932
+ const translateY = React20.useRef(new import_react_native23.Animated.Value(screenHeight)).current;
1933
+ const backdropOpacity = React20.useRef(new import_react_native23.Animated.Value(0)).current;
1765
1934
  React20.useEffect(() => {
1766
1935
  if (open) {
1767
- import_react_native22.Animated.parallel([
1768
- import_react_native22.Animated.spring(translateY, {
1936
+ import_react_native23.Animated.parallel([
1937
+ import_react_native23.Animated.spring(translateY, {
1769
1938
  toValue: 0,
1770
1939
  useNativeDriver: true,
1771
1940
  bounciness: 4
1772
1941
  }),
1773
- import_react_native22.Animated.timing(backdropOpacity, {
1942
+ import_react_native23.Animated.timing(backdropOpacity, {
1774
1943
  toValue: 1,
1775
1944
  duration: 250,
1776
1945
  useNativeDriver: true
1777
1946
  })
1778
1947
  ]).start();
1779
1948
  } else {
1780
- import_react_native22.Animated.parallel([
1781
- import_react_native22.Animated.timing(translateY, {
1949
+ import_react_native23.Animated.parallel([
1950
+ import_react_native23.Animated.timing(translateY, {
1782
1951
  toValue: screenHeight,
1783
1952
  duration: 200,
1784
1953
  useNativeDriver: true
1785
1954
  }),
1786
- import_react_native22.Animated.timing(backdropOpacity, {
1955
+ import_react_native23.Animated.timing(backdropOpacity, {
1787
1956
  toValue: 0,
1788
1957
  duration: 200,
1789
1958
  useNativeDriver: true
@@ -1792,7 +1961,7 @@ var BottomSheetContent = React20.forwardRef(
1792
1961
  }
1793
1962
  }, [open, translateY, backdropOpacity, screenHeight]);
1794
1963
  const panResponder = React20.useRef(
1795
- import_react_native22.PanResponder.create({
1964
+ import_react_native23.PanResponder.create({
1796
1965
  onStartShouldSetPanResponder: () => true,
1797
1966
  onMoveShouldSetPanResponder: (_, gestureState) => gestureState.dy > 5,
1798
1967
  onPanResponderMove: (_, gestureState) => {
@@ -1804,7 +1973,7 @@ var BottomSheetContent = React20.forwardRef(
1804
1973
  if (gestureState.dy > 120 || gestureState.vy > 0.8) {
1805
1974
  closeSheet();
1806
1975
  } else {
1807
- import_react_native22.Animated.spring(translateY, {
1976
+ import_react_native23.Animated.spring(translateY, {
1808
1977
  toValue: 0,
1809
1978
  useNativeDriver: true,
1810
1979
  bounciness: 4
@@ -1815,24 +1984,24 @@ var BottomSheetContent = React20.forwardRef(
1815
1984
  ).current;
1816
1985
  if (!open) return null;
1817
1986
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1818
- import_react_native22.Modal,
1987
+ import_react_native23.Modal,
1819
1988
  {
1820
1989
  transparent: true,
1821
1990
  visible: open,
1822
1991
  animationType: "none",
1823
1992
  onRequestClose: closeSheet,
1824
1993
  statusBarTranslucent: true,
1825
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react_native22.View, { className: "flex-1 justify-end", children: [
1994
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_react_native23.View, { className: "flex-1 justify-end", children: [
1826
1995
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1827
- import_react_native22.Animated.View,
1996
+ import_react_native23.Animated.View,
1828
1997
  {
1829
1998
  style: { opacity: backdropOpacity },
1830
1999
  className: "absolute inset-0 bg-black/60",
1831
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.Pressable, { className: "flex-1", onPress: closeSheet })
2000
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.Pressable, { className: "flex-1", onPress: closeSheet })
1832
2001
  }
1833
2002
  ),
1834
2003
  /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1835
- import_react_native22.Animated.View,
2004
+ import_react_native23.Animated.View,
1836
2005
  {
1837
2006
  ref,
1838
2007
  style: { transform: [{ translateY }] },
@@ -1842,7 +2011,7 @@ var BottomSheetContent = React20.forwardRef(
1842
2011
  ),
1843
2012
  ...props,
1844
2013
  children: [
1845
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.View, { ...panResponder.panHandlers, className: "w-full py-2 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.View, { className: "w-12 h-1.5 rounded-full bg-muted/40" }) }),
2014
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.View, { ...panResponder.panHandlers, className: "w-full py-2 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.View, { className: "w-12 h-1.5 rounded-full bg-muted/40" }) }),
1846
2015
  children
1847
2016
  ]
1848
2017
  }
@@ -1854,7 +2023,7 @@ var BottomSheetContent = React20.forwardRef(
1854
2023
  );
1855
2024
  BottomSheetContent.displayName = "BottomSheetContent";
1856
2025
  var BottomSheetHeader = React20.forwardRef(
1857
- ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.View, { ref, className: cn("mb-4 gap-1", className), ...props, children })
2026
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.View, { ref, className: cn("mb-4 gap-1", className), ...props, children })
1858
2027
  );
1859
2028
  BottomSheetHeader.displayName = "BottomSheetHeader";
1860
2029
  var BottomSheetTitle = ({
@@ -1872,12 +2041,12 @@ var BottomSheetDescription = ({
1872
2041
  };
1873
2042
  BottomSheetDescription.displayName = "BottomSheetDescription";
1874
2043
  var BottomSheetBody = React20.forwardRef(
1875
- ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.View, { ref, className: cn("py-2", className), ...props, children })
2044
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.View, { ref, className: cn("py-2", className), ...props, children })
1876
2045
  );
1877
2046
  BottomSheetBody.displayName = "BottomSheetBody";
1878
2047
  var BottomSheetFooter = React20.forwardRef(
1879
2048
  ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1880
- import_react_native22.View,
2049
+ import_react_native23.View,
1881
2050
  {
1882
2051
  ref,
1883
2052
  className: cn("mt-6 flex-row items-center justify-end gap-3", className),
@@ -1900,14 +2069,14 @@ var BottomSheetClose = React20.forwardRef(
1900
2069
  onPress: handlePress
1901
2070
  });
1902
2071
  }
1903
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native22.Pressable, { ref, onPress: handlePress, ...props, children });
2072
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native23.Pressable, { ref, onPress: handlePress, ...props, children });
1904
2073
  }
1905
2074
  );
1906
2075
  BottomSheetClose.displayName = "BottomSheetClose";
1907
2076
 
1908
2077
  // src/components/select/select.tsx
1909
2078
  var React21 = __toESM(require("react"));
1910
- var import_react_native23 = require("react-native");
2079
+ var import_react_native24 = require("react-native");
1911
2080
  var import_class_variance_authority10 = require("class-variance-authority");
1912
2081
  var import_jsx_runtime24 = require("react/jsx-runtime");
1913
2082
  var selectTriggerVariants = (0, import_class_variance_authority10.cva)(
@@ -1990,10 +2159,10 @@ var Select = ({
1990
2159
  value: currentValue,
1991
2160
  onSelect: handleSelect
1992
2161
  },
1993
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: cn("w-full gap-1.5", className), children: [
2162
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: cn("w-full gap-1.5", className), children: [
1994
2163
  label && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-sm font-medium text-foreground", children: label }),
1995
2164
  children ? children : /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1996
- import_react_native23.Pressable,
2165
+ import_react_native24.Pressable,
1997
2166
  {
1998
2167
  disabled,
1999
2168
  onPress: () => setOpen(true),
@@ -2020,22 +2189,22 @@ var Select = ({
2020
2189
  ),
2021
2190
  error ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-xs text-danger font-medium", children: error }) : helperText ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-xs text-muted", children: helperText }) : null,
2022
2191
  options && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2023
- import_react_native23.Modal,
2192
+ import_react_native24.Modal,
2024
2193
  {
2025
2194
  transparent: true,
2026
2195
  visible: open,
2027
2196
  animationType: "fade",
2028
2197
  onRequestClose: () => setOpen(false),
2029
2198
  statusBarTranslucent: true,
2030
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: "flex-1 justify-end bg-black/60", children: [
2031
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.Pressable, { className: "flex-1", onPress: () => setOpen(false) }),
2032
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: "w-full bg-card rounded-t-3xl border-t border-border p-6 max-h-[75%]", children: [
2033
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: "flex-row items-center justify-between pb-4 border-b border-border mb-3", children: [
2199
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: "flex-1 justify-end bg-black/60", children: [
2200
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.Pressable, { className: "flex-1", onPress: () => setOpen(false) }),
2201
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: "w-full bg-card rounded-t-3xl border-t border-border p-6 max-h-[75%]", children: [
2202
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: "flex-row items-center justify-between pb-4 border-b border-border mb-3", children: [
2034
2203
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-lg font-bold text-foreground", children: label || placeholder }),
2035
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.Pressable, { onPress: () => setOpen(false), className: "p-1", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-muted text-lg font-semibold", children: "\u2715" }) })
2204
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.Pressable, { onPress: () => setOpen(false), className: "p-1", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-muted text-lg font-semibold", children: "\u2715" }) })
2036
2205
  ] }),
2037
- searchable && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.View, { className: "mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2038
- import_react_native23.TextInput,
2206
+ searchable && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.View, { className: "mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2207
+ import_react_native24.TextInput,
2039
2208
  {
2040
2209
  value: searchQuery,
2041
2210
  onChangeText: setSearchQuery,
@@ -2044,10 +2213,10 @@ var Select = ({
2044
2213
  className: "h-11 px-4 rounded-xl border border-border bg-background text-foreground text-base"
2045
2214
  }
2046
2215
  ) }),
2047
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.ScrollView, { className: "max-h-80", showsVerticalScrollIndicator: false, children: filteredOptions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.View, { className: "py-8 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-muted text-sm", children: "No options found" }) }) : filteredOptions.map((opt) => {
2216
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.ScrollView, { className: "max-h-80", showsVerticalScrollIndicator: false, children: filteredOptions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.View, { className: "py-8 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-muted text-sm", children: "No options found" }) }) : filteredOptions.map((opt) => {
2048
2217
  const isSelected = opt.value === currentValue;
2049
2218
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2050
- import_react_native23.Pressable,
2219
+ import_react_native24.Pressable,
2051
2220
  {
2052
2221
  disabled: opt.disabled,
2053
2222
  onPress: () => handleSelect(opt.value),
@@ -2089,7 +2258,7 @@ var SelectTrigger = ({
2089
2258
  }) => {
2090
2259
  const { setOpen, open } = useSelectContext();
2091
2260
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2092
- import_react_native23.Pressable,
2261
+ import_react_native24.Pressable,
2093
2262
  {
2094
2263
  onPress: () => setOpen(true),
2095
2264
  accessibilityRole: "combobox",
@@ -2129,21 +2298,21 @@ var SelectContent = ({ title, children }) => {
2129
2298
  const { open, setOpen } = useSelectContext();
2130
2299
  if (!open) return null;
2131
2300
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2132
- import_react_native23.Modal,
2301
+ import_react_native24.Modal,
2133
2302
  {
2134
2303
  transparent: true,
2135
2304
  visible: open,
2136
2305
  animationType: "fade",
2137
2306
  onRequestClose: () => setOpen(false),
2138
2307
  statusBarTranslucent: true,
2139
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: "flex-1 justify-end bg-black/60", children: [
2140
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.Pressable, { className: "flex-1", onPress: () => setOpen(false) }),
2141
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: "w-full bg-card rounded-t-3xl border-t border-border p-6 max-h-[75%]", children: [
2142
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native23.View, { className: "flex-row items-center justify-between pb-3 border-b border-border mb-3", children: [
2308
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: "flex-1 justify-end bg-black/60", children: [
2309
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.Pressable, { className: "flex-1", onPress: () => setOpen(false) }),
2310
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: "w-full bg-card rounded-t-3xl border-t border-border p-6 max-h-[75%]", children: [
2311
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react_native24.View, { className: "flex-row items-center justify-between pb-3 border-b border-border mb-3", children: [
2143
2312
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-lg font-bold text-foreground", children: title || "Select" }),
2144
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.Pressable, { onPress: () => setOpen(false), className: "p-1", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-muted text-lg font-semibold", children: "\u2715" }) })
2313
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.Pressable, { onPress: () => setOpen(false), className: "p-1", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text2, { className: "text-muted text-lg font-semibold", children: "\u2715" }) })
2145
2314
  ] }),
2146
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native23.ScrollView, { className: "max-h-80", children })
2315
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react_native24.ScrollView, { className: "max-h-80", children })
2147
2316
  ] })
2148
2317
  ] })
2149
2318
  }
@@ -2158,7 +2327,7 @@ var SelectItem = ({
2158
2327
  const { value: selectedValue, onSelect } = useSelectContext();
2159
2328
  const isSelected = selectedValue === itemValue;
2160
2329
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2161
- import_react_native23.Pressable,
2330
+ import_react_native24.Pressable,
2162
2331
  {
2163
2332
  onPress: () => onSelect(itemValue),
2164
2333
  className: cn(
@@ -2186,7 +2355,7 @@ SelectItem.displayName = "SelectItem";
2186
2355
 
2187
2356
  // src/components/data-table/data-table.tsx
2188
2357
  var React22 = __toESM(require("react"));
2189
- var import_react_native24 = require("react-native");
2358
+ var import_react_native25 = require("react-native");
2190
2359
  var import_jsx_runtime25 = require("react/jsx-runtime");
2191
2360
  function DataTable({
2192
2361
  columns,
@@ -2253,7 +2422,7 @@ function DataTable({
2253
2422
  setSortDirection("asc");
2254
2423
  }
2255
2424
  };
2256
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native24.View, { className: cn("w-full gap-4", className), ...props, children: [
2425
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native25.View, { className: cn("w-full gap-4", className), ...props, children: [
2257
2426
  searchable && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2258
2427
  Input,
2259
2428
  {
@@ -2266,10 +2435,10 @@ function DataTable({
2266
2435
  className: "bg-card"
2267
2436
  }
2268
2437
  ),
2269
- loading ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native24.View, { className: "gap-3", children: [1, 2, 3].map((idx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Skeleton, { className: "h-20 w-full rounded-2xl" }, idx)) }) : paginatedData.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Card, { className: "items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Text2, { className: "text-muted text-base", children: emptyText }) }) : mode === "card" ? (
2438
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native25.View, { className: "gap-3", children: [1, 2, 3].map((idx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Skeleton, { className: "h-20 w-full rounded-2xl" }, idx)) }) : paginatedData.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Card, { className: "items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Text2, { className: "text-muted text-base", children: emptyText }) }) : mode === "card" ? (
2270
2439
  /* Mobile Card Mode */
2271
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native24.View, { className: "gap-3", children: paginatedData.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2272
- import_react_native24.Pressable,
2440
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native25.View, { className: "gap-3", children: paginatedData.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2441
+ import_react_native25.Pressable,
2273
2442
  {
2274
2443
  disabled: !onRowPress,
2275
2444
  onPress: () => onRowPress?.(item),
@@ -2278,12 +2447,12 @@ function DataTable({
2278
2447
  const rawVal = item[col.key];
2279
2448
  const renderedVal = col.render ? col.render(rawVal, item) : String(rawVal ?? "\u2014");
2280
2449
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2281
- import_react_native24.View,
2450
+ import_react_native25.View,
2282
2451
  {
2283
2452
  className: "flex-row items-center justify-between py-1 border-b border-border/40 last:border-b-0",
2284
2453
  children: [
2285
2454
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Text2, { className: "text-xs font-semibold text-muted uppercase tracking-wider", children: col.title }),
2286
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native24.View, { className: "shrink", children: typeof renderedVal === "string" ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Text2, { className: "text-sm font-medium text-foreground", children: renderedVal }) : renderedVal })
2455
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native25.View, { className: "shrink", children: typeof renderedVal === "string" ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Text2, { className: "text-sm font-medium text-foreground", children: renderedVal }) : renderedVal })
2287
2456
  ]
2288
2457
  },
2289
2458
  String(col.key)
@@ -2294,9 +2463,9 @@ function DataTable({
2294
2463
  )) })
2295
2464
  ) : (
2296
2465
  /* Horizontal Table Mode */
2297
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native24.ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native24.View, { className: "rounded-2xl border border-border bg-card overflow-hidden", children: [
2298
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native24.View, { className: "flex-row bg-muted/10 border-b border-border", children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2299
- import_react_native24.Pressable,
2466
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native25.ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native25.View, { className: "rounded-2xl border border-border bg-card overflow-hidden", children: [
2467
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native25.View, { className: "flex-row bg-muted/10 border-b border-border", children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2468
+ import_react_native25.Pressable,
2300
2469
  {
2301
2470
  disabled: !col.sortable,
2302
2471
  onPress: () => handleSort(String(col.key)),
@@ -2310,7 +2479,7 @@ function DataTable({
2310
2479
  String(col.key)
2311
2480
  )) }),
2312
2481
  paginatedData.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2313
- import_react_native24.Pressable,
2482
+ import_react_native25.Pressable,
2314
2483
  {
2315
2484
  disabled: !onRowPress,
2316
2485
  onPress: () => onRowPress?.(item),
@@ -2319,7 +2488,7 @@ function DataTable({
2319
2488
  const rawVal = item[col.key];
2320
2489
  const renderedVal = col.render ? col.render(rawVal, item) : String(rawVal ?? "\u2014");
2321
2490
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2322
- import_react_native24.View,
2491
+ import_react_native25.View,
2323
2492
  {
2324
2493
  style: { width: col.width || 120 },
2325
2494
  className: "px-4 py-3 justify-center",
@@ -2333,7 +2502,7 @@ function DataTable({
2333
2502
  ))
2334
2503
  ] }) })
2335
2504
  ),
2336
- totalPages > 1 && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native24.View, { className: "flex-row items-center justify-between pt-2", children: [
2505
+ totalPages > 1 && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native25.View, { className: "flex-row items-center justify-between pt-2", children: [
2337
2506
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Text2, { className: "text-xs text-muted", children: [
2338
2507
  "Showing ",
2339
2508
  (currentPage - 1) * pageSize + 1,
@@ -2344,7 +2513,7 @@ function DataTable({
2344
2513
  " ",
2345
2514
  sortedData.length
2346
2515
  ] }),
2347
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native24.View, { className: "flex-row items-center gap-2", children: [
2516
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native25.View, { className: "flex-row items-center gap-2", children: [
2348
2517
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2349
2518
  Button,
2350
2519
  {
@@ -2377,7 +2546,7 @@ function DataTable({
2377
2546
 
2378
2547
  // src/templates/auth/SignInTemplate.tsx
2379
2548
  var React23 = __toESM(require("react"));
2380
- var import_react_native25 = require("react-native");
2549
+ var import_react_native26 = require("react-native");
2381
2550
  var import_jsx_runtime26 = require("react/jsx-runtime");
2382
2551
  var SignInTemplate = ({
2383
2552
  title = "Welcome Back",
@@ -2415,25 +2584,27 @@ var SignInTemplate = ({
2415
2584
  }
2416
2585
  };
2417
2586
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2418
- import_react_native25.KeyboardAvoidingView,
2587
+ import_react_native26.KeyboardAvoidingView,
2419
2588
  {
2420
- behavior: import_react_native25.Platform.OS === "ios" ? "padding" : "height",
2589
+ behavior: import_react_native26.Platform.OS === "ios" ? "padding" : "height",
2590
+ style: { flex: 1 },
2421
2591
  className: cn("flex-1 bg-background", className),
2422
2592
  children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2423
- import_react_native25.ScrollView,
2593
+ import_react_native26.ScrollView,
2424
2594
  {
2595
+ style: { flex: 1 },
2425
2596
  contentContainerStyle: { flexGrow: 1, justifyContent: "center" },
2426
2597
  className: "px-6 py-8",
2427
2598
  keyboardShouldPersistTaps: "handled",
2428
2599
  showsVerticalScrollIndicator: false,
2429
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "w-full max-w-md mx-auto gap-6", children: [
2430
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "items-center gap-2", children: [
2431
- logo && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native25.View, { className: "mb-2", children: logo }),
2600
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "w-full max-w-md mx-auto gap-6", children: [
2601
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "items-center gap-2", children: [
2602
+ logo && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native26.View, { className: "mb-2", children: logo }),
2432
2603
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Heading, { level: 2, className: "text-3xl font-extrabold text-foreground text-center", children: title }),
2433
2604
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-muted text-center text-base", children: subtitle })
2434
2605
  ] }),
2435
2606
  error && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Alert, { variant: "danger", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(AlertDescription, { children: error }) }),
2436
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "gap-4", children: [
2607
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "gap-4", children: [
2437
2608
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2438
2609
  Input,
2439
2610
  {
@@ -2450,7 +2621,7 @@ var SignInTemplate = ({
2450
2621
  error: emailError
2451
2622
  }
2452
2623
  ),
2453
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native25.View, { className: "gap-1", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2624
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native26.View, { className: "gap-1", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2454
2625
  Input,
2455
2626
  {
2456
2627
  label: "Password",
@@ -2462,15 +2633,15 @@ var SignInTemplate = ({
2462
2633
  if (passwordError) setPasswordError(void 0);
2463
2634
  },
2464
2635
  error: passwordError,
2465
- rightElement: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native25.Pressable, { onPress: () => setShowPassword((p) => !p), className: "p-1", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-xs text-muted font-semibold", children: showPassword ? "HIDE" : "SHOW" }) })
2636
+ rightElement: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native26.Pressable, { onPress: () => setShowPassword((p) => !p), className: "p-1", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-xs text-muted font-semibold", children: showPassword ? "HIDE" : "SHOW" }) })
2466
2637
  }
2467
2638
  ) }),
2468
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "flex-row items-center justify-between py-1", children: [
2469
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "flex-row items-center gap-2", children: [
2639
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "flex-row items-center justify-between py-1", children: [
2640
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "flex-row items-center gap-2", children: [
2470
2641
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Checkbox, { checked: rememberMe, onCheckedChange: setRememberMe }),
2471
2642
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-sm text-foreground", children: "Remember me" })
2472
2643
  ] }),
2473
- onForgotPassword && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native25.Pressable, { onPress: onForgotPassword, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-sm font-semibold text-primary", children: "Forgot password?" }) })
2644
+ onForgotPassword && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native26.Pressable, { onPress: onForgotPassword, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-sm font-semibold text-primary", children: "Forgot password?" }) })
2474
2645
  ] }),
2475
2646
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2476
2647
  Button,
@@ -2484,13 +2655,13 @@ var SignInTemplate = ({
2484
2655
  }
2485
2656
  )
2486
2657
  ] }),
2487
- (onGooglePress || onApplePress) && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "gap-4", children: [
2488
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "flex-row items-center gap-3", children: [
2658
+ (onGooglePress || onApplePress) && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "gap-4", children: [
2659
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "flex-row items-center gap-3", children: [
2489
2660
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Separator, { className: "flex-1" }),
2490
2661
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-xs text-muted uppercase", children: "or continue with" }),
2491
2662
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Separator, { className: "flex-1" })
2492
2663
  ] }),
2493
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "flex-row gap-3", children: [
2664
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "flex-row gap-3", children: [
2494
2665
  onGooglePress && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2495
2666
  Button,
2496
2667
  {
@@ -2511,9 +2682,9 @@ var SignInTemplate = ({
2511
2682
  )
2512
2683
  ] })
2513
2684
  ] }),
2514
- onSignUpPress && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native25.View, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
2685
+ onSignUpPress && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native26.View, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
2515
2686
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-sm text-muted", children: "Don't have an account?" }),
2516
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native25.Pressable, { onPress: onSignUpPress, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-sm font-bold text-primary", children: "Sign Up" }) })
2687
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native26.Pressable, { onPress: onSignUpPress, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Text2, { className: "text-sm font-bold text-primary", children: "Sign Up" }) })
2517
2688
  ] })
2518
2689
  ] })
2519
2690
  }
@@ -2524,7 +2695,7 @@ var SignInTemplate = ({
2524
2695
 
2525
2696
  // src/templates/auth/SignUpTemplate.tsx
2526
2697
  var React24 = __toESM(require("react"));
2527
- var import_react_native26 = require("react-native");
2698
+ var import_react_native27 = require("react-native");
2528
2699
  var import_jsx_runtime27 = require("react/jsx-runtime");
2529
2700
  var SignUpTemplate = ({
2530
2701
  title = "Create Account",
@@ -2573,25 +2744,27 @@ var SignUpTemplate = ({
2573
2744
  }
2574
2745
  };
2575
2746
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2576
- import_react_native26.KeyboardAvoidingView,
2747
+ import_react_native27.KeyboardAvoidingView,
2577
2748
  {
2578
- behavior: import_react_native26.Platform.OS === "ios" ? "padding" : "height",
2749
+ behavior: import_react_native27.Platform.OS === "ios" ? "padding" : "height",
2750
+ style: { flex: 1 },
2579
2751
  className: cn("flex-1 bg-background", className),
2580
2752
  children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2581
- import_react_native26.ScrollView,
2753
+ import_react_native27.ScrollView,
2582
2754
  {
2755
+ style: { flex: 1 },
2583
2756
  contentContainerStyle: { flexGrow: 1, justifyContent: "center" },
2584
2757
  className: "px-6 py-8",
2585
2758
  keyboardShouldPersistTaps: "handled",
2586
2759
  showsVerticalScrollIndicator: false,
2587
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "w-full max-w-md mx-auto gap-6", children: [
2588
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "items-center gap-2", children: [
2589
- logo && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react_native26.View, { className: "mb-2", children: logo }),
2760
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "w-full max-w-md mx-auto gap-6", children: [
2761
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "items-center gap-2", children: [
2762
+ logo && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react_native27.View, { className: "mb-2", children: logo }),
2590
2763
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Heading, { level: 2, className: "text-3xl font-extrabold text-foreground text-center", children: title }),
2591
2764
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text2, { className: "text-muted text-center text-base", children: subtitle })
2592
2765
  ] }),
2593
2766
  error && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Alert, { variant: "danger", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(AlertDescription, { children: error }) }),
2594
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "gap-4", children: [
2767
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "gap-4", children: [
2595
2768
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2596
2769
  Input,
2597
2770
  {
@@ -2634,8 +2807,8 @@ var SignUpTemplate = ({
2634
2807
  error: passwordError
2635
2808
  }
2636
2809
  ),
2637
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "gap-1", children: [
2638
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "flex-row items-center gap-2 pt-1", children: [
2810
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "gap-1", children: [
2811
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "flex-row items-center gap-2 pt-1", children: [
2639
2812
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2640
2813
  Checkbox,
2641
2814
  {
@@ -2662,13 +2835,13 @@ var SignUpTemplate = ({
2662
2835
  }
2663
2836
  )
2664
2837
  ] }),
2665
- (onGooglePress || onApplePress) && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "gap-4", children: [
2666
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "flex-row items-center gap-3", children: [
2838
+ (onGooglePress || onApplePress) && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "gap-4", children: [
2839
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "flex-row items-center gap-3", children: [
2667
2840
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Separator, { className: "flex-1" }),
2668
2841
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text2, { className: "text-xs text-muted uppercase", children: "or continue with" }),
2669
2842
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Separator, { className: "flex-1" })
2670
2843
  ] }),
2671
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "flex-row gap-3", children: [
2844
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "flex-row gap-3", children: [
2672
2845
  onGooglePress && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2673
2846
  Button,
2674
2847
  {
@@ -2689,9 +2862,9 @@ var SignUpTemplate = ({
2689
2862
  )
2690
2863
  ] })
2691
2864
  ] }),
2692
- onSignInPress && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native26.View, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
2865
+ onSignInPress && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native27.View, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
2693
2866
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text2, { className: "text-sm text-muted", children: "Already have an account?" }),
2694
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react_native26.Pressable, { onPress: onSignInPress, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text2, { className: "text-sm font-bold text-primary", children: "Sign In" }) })
2867
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react_native27.Pressable, { onPress: onSignInPress, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text2, { className: "text-sm font-bold text-primary", children: "Sign In" }) })
2695
2868
  ] })
2696
2869
  ] })
2697
2870
  }
@@ -2702,7 +2875,7 @@ var SignUpTemplate = ({
2702
2875
 
2703
2876
  // src/templates/auth/ForgotPasswordTemplate.tsx
2704
2877
  var React25 = __toESM(require("react"));
2705
- var import_react_native27 = require("react-native");
2878
+ var import_react_native28 = require("react-native");
2706
2879
  var import_jsx_runtime28 = require("react/jsx-runtime");
2707
2880
  var ForgotPasswordTemplate = ({
2708
2881
  title = "Reset Password",
@@ -2725,27 +2898,29 @@ var ForgotPasswordTemplate = ({
2725
2898
  onSubmit?.({ email });
2726
2899
  };
2727
2900
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2728
- import_react_native27.KeyboardAvoidingView,
2901
+ import_react_native28.KeyboardAvoidingView,
2729
2902
  {
2730
- behavior: import_react_native27.Platform.OS === "ios" ? "padding" : "height",
2903
+ behavior: import_react_native28.Platform.OS === "ios" ? "padding" : "height",
2904
+ style: { flex: 1 },
2731
2905
  className: cn("flex-1 bg-background", className),
2732
2906
  children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2733
- import_react_native27.ScrollView,
2907
+ import_react_native28.ScrollView,
2734
2908
  {
2909
+ style: { flex: 1 },
2735
2910
  contentContainerStyle: { flexGrow: 1, justifyContent: "center" },
2736
2911
  className: "px-6 py-8",
2737
2912
  keyboardShouldPersistTaps: "handled",
2738
2913
  showsVerticalScrollIndicator: false,
2739
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native27.View, { className: "w-full max-w-md mx-auto gap-6", children: [
2740
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native27.View, { className: "items-center gap-2", children: [
2914
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native28.View, { className: "w-full max-w-md mx-auto gap-6", children: [
2915
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native28.View, { className: "items-center gap-2", children: [
2741
2916
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Heading, { level: 2, className: "text-3xl font-extrabold text-foreground text-center", children: title }),
2742
2917
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text2, { className: "text-muted text-center text-base", children: subtitle })
2743
2918
  ] }),
2744
2919
  error && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Alert, { variant: "danger", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(AlertDescription, { children: error }) }),
2745
- isSuccess ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native27.View, { className: "gap-4", children: [
2920
+ isSuccess ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native28.View, { className: "gap-4", children: [
2746
2921
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Alert, { variant: "success", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(AlertDescription, { children: "Password reset link sent! Check your email inbox." }) }),
2747
2922
  onBackToSignIn && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Button, { variant: "primary", size: "lg", onPress: onBackToSignIn, children: "Back to Sign In" })
2748
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native27.View, { className: "gap-4", children: [
2923
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_react_native28.View, { className: "gap-4", children: [
2749
2924
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2750
2925
  Input,
2751
2926
  {
@@ -2772,7 +2947,7 @@ var ForgotPasswordTemplate = ({
2772
2947
  children: "Send Reset Link"
2773
2948
  }
2774
2949
  ),
2775
- onBackToSignIn && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react_native27.View, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react_native27.Pressable, { onPress: onBackToSignIn, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text2, { className: "text-sm font-semibold text-primary", children: "Back to Sign In" }) }) })
2950
+ onBackToSignIn && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react_native28.View, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react_native28.Pressable, { onPress: onBackToSignIn, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text2, { className: "text-sm font-semibold text-primary", children: "Back to Sign In" }) }) })
2776
2951
  ] })
2777
2952
  ] })
2778
2953
  }
@@ -2782,7 +2957,7 @@ var ForgotPasswordTemplate = ({
2782
2957
  };
2783
2958
 
2784
2959
  // src/templates/dashboard/DashboardTemplate.tsx
2785
- var import_react_native28 = require("react-native");
2960
+ var import_react_native29 = require("react-native");
2786
2961
  var import_jsx_runtime29 = require("react/jsx-runtime");
2787
2962
  var DashboardTemplate = ({
2788
2963
  userName,
@@ -2798,20 +2973,21 @@ var DashboardTemplate = ({
2798
2973
  ...props
2799
2974
  }) => {
2800
2975
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2801
- import_react_native28.ScrollView,
2976
+ import_react_native29.ScrollView,
2802
2977
  {
2978
+ ...props,
2979
+ style: [{ flex: 1 }, props.style],
2803
2980
  className: cn("flex-1 bg-background", className),
2804
2981
  contentContainerStyle: { paddingBottom: 40 },
2805
2982
  showsVerticalScrollIndicator: false,
2806
- ...props,
2807
2983
  children: [
2808
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "px-6 pt-6 pb-4 flex-row items-center justify-between border-b border-border/40", children: [
2809
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "flex-row items-center gap-3", children: [
2984
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "px-6 pt-6 pb-4 flex-row items-center justify-between border-b border-border/40", children: [
2985
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "flex-row items-center gap-3", children: [
2810
2986
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Avatar, { size: "lg", children: [
2811
2987
  userAvatarUrl && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AvatarImage, { source: { uri: userAvatarUrl } }),
2812
2988
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AvatarFallback, { text: userName.slice(0, 2).toUpperCase() })
2813
2989
  ] }),
2814
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { children: [
2990
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { children: [
2815
2991
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-xs text-muted font-medium uppercase tracking-wider", children: userRole }),
2816
2992
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Heading, { level: 3, className: "text-xl font-bold text-foreground", children: [
2817
2993
  "Hello, ",
@@ -2821,27 +2997,27 @@ var DashboardTemplate = ({
2821
2997
  ] })
2822
2998
  ] }),
2823
2999
  onNotificationPress && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2824
- import_react_native28.Pressable,
3000
+ import_react_native29.Pressable,
2825
3001
  {
2826
3002
  onPress: onNotificationPress,
2827
3003
  className: "w-10 h-10 rounded-full border border-border bg-card items-center justify-center relative active:opacity-70",
2828
3004
  children: [
2829
3005
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-base text-foreground", children: "\u{1F514}" }),
2830
- unreadNotificationsCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native28.View, { className: "absolute -top-1 -right-1 w-5 h-5 rounded-full bg-danger items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-[10px] font-bold text-white", children: unreadNotificationsCount > 9 ? "9+" : unreadNotificationsCount }) })
3006
+ unreadNotificationsCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native29.View, { className: "absolute -top-1 -right-1 w-5 h-5 rounded-full bg-danger items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-[10px] font-bold text-white", children: unreadNotificationsCount > 9 ? "9+" : unreadNotificationsCount }) })
2831
3007
  ]
2832
3008
  }
2833
3009
  )
2834
3010
  ] }),
2835
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "px-6 pt-6 gap-6", children: [
2836
- quickActions && quickActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "gap-2", children: [
3011
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "px-6 pt-6 gap-6", children: [
3012
+ quickActions && quickActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "gap-2", children: [
2837
3013
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-xs font-bold text-muted uppercase tracking-wider", children: "Quick Actions" }),
2838
3014
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2839
- import_react_native28.ScrollView,
3015
+ import_react_native29.ScrollView,
2840
3016
  {
2841
3017
  horizontal: true,
2842
3018
  showsHorizontalScrollIndicator: false,
2843
3019
  className: "-mx-6 px-6",
2844
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native28.View, { className: "flex-row gap-3", children: quickActions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3020
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native29.View, { className: "flex-row gap-3", children: quickActions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2845
3021
  Button,
2846
3022
  {
2847
3023
  variant: "outline",
@@ -2855,21 +3031,21 @@ var DashboardTemplate = ({
2855
3031
  }
2856
3032
  )
2857
3033
  ] }),
2858
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "gap-3", children: [
3034
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "gap-3", children: [
2859
3035
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-xs font-bold text-muted uppercase tracking-wider", children: "Overview Performance" }),
2860
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native28.View, { className: "gap-3", children: metrics.map((metric) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(StatsCard, { ...metric }, metric.id)) })
3036
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native29.View, { className: "gap-3", children: metrics.map((metric) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(StatsCard, { ...metric }, metric.id)) })
2861
3037
  ] }),
2862
3038
  recentActivities && recentActivities.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Card, { className: "gap-2", children: [
2863
3039
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(CardHeader, { className: "flex-row items-center justify-between pb-2", children: [
2864
3040
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CardTitle, { className: "text-base font-bold", children: "Recent Activity" }),
2865
- onViewAllActivities && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native28.Pressable, { onPress: onViewAllActivities, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-xs font-semibold text-primary", children: "View all" }) })
3041
+ onViewAllActivities && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_native29.Pressable, { onPress: onViewAllActivities, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-xs font-semibold text-primary", children: "View all" }) })
2866
3042
  ] }),
2867
3043
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CardContent, { className: "gap-3 pt-0", children: recentActivities.map((act) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2868
- import_react_native28.View,
3044
+ import_react_native29.View,
2869
3045
  {
2870
3046
  className: "flex-row items-center justify-between py-2 border-b border-border/40 last:border-b-0",
2871
3047
  children: [
2872
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "flex-row items-center gap-3 flex-1 pr-2", children: [
3048
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "flex-row items-center gap-3 flex-1 pr-2", children: [
2873
3049
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Avatar, { size: "sm", children: [
2874
3050
  act.avatarUrl && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AvatarImage, { source: { uri: act.avatarUrl } }),
2875
3051
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
@@ -2879,7 +3055,7 @@ var DashboardTemplate = ({
2879
3055
  }
2880
3056
  )
2881
3057
  ] }),
2882
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "flex-1", children: [
3058
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "flex-1", children: [
2883
3059
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-sm font-semibold text-foreground", numberOfLines: 1, children: act.title }),
2884
3060
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Text2, { className: "text-xs text-muted", numberOfLines: 1, children: [
2885
3061
  act.subtitle,
@@ -2888,7 +3064,7 @@ var DashboardTemplate = ({
2888
3064
  ] })
2889
3065
  ] })
2890
3066
  ] }),
2891
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native28.View, { className: "items-end gap-1", children: [
3067
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_react_native29.View, { className: "items-end gap-1", children: [
2892
3068
  act.amount && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text2, { className: "text-sm font-bold text-foreground", children: act.amount }),
2893
3069
  act.status && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Badge, { variant: act.status.variant, size: "sm", children: act.status.label })
2894
3070
  ] })
@@ -2904,7 +3080,7 @@ var DashboardTemplate = ({
2904
3080
  };
2905
3081
 
2906
3082
  // src/templates/settings/SettingsTemplate.tsx
2907
- var import_react_native29 = require("react-native");
3083
+ var import_react_native30 = require("react-native");
2908
3084
  var import_jsx_runtime30 = require("react/jsx-runtime");
2909
3085
  var SettingsTemplate = ({
2910
3086
  user,
@@ -2926,21 +3102,22 @@ var SettingsTemplate = ({
2926
3102
  ...props
2927
3103
  }) => {
2928
3104
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2929
- import_react_native29.ScrollView,
3105
+ import_react_native30.ScrollView,
2930
3106
  {
3107
+ ...props,
3108
+ style: [{ flex: 1 }, props.style],
2931
3109
  className: cn("flex-1 bg-background", className),
2932
3110
  contentContainerStyle: { paddingBottom: 40 },
2933
3111
  showsVerticalScrollIndicator: false,
2934
- ...props,
2935
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "px-6 pt-6 gap-6", children: [
3112
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "px-6 pt-6 gap-6", children: [
2936
3113
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Heading, { level: 2, className: "text-2xl font-bold text-foreground", children: "Settings & Profile" }),
2937
3114
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Card, { className: "p-4 flex-row items-center gap-4", children: [
2938
3115
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Avatar, { size: "lg", children: [
2939
3116
  user.avatarUrl && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(AvatarImage, { source: { uri: user.avatarUrl } }),
2940
3117
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(AvatarFallback, { text: user.name.slice(0, 2).toUpperCase() })
2941
3118
  ] }),
2942
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "flex-1", children: [
2943
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "flex-row items-center gap-2", children: [
3119
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "flex-1", children: [
3120
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "flex-row items-center gap-2", children: [
2944
3121
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-base font-bold text-foreground", children: user.name }),
2945
3122
  user.plan && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Badge, { variant: "primary", size: "sm", children: user.plan })
2946
3123
  ] }),
@@ -2948,11 +3125,11 @@ var SettingsTemplate = ({
2948
3125
  ] }),
2949
3126
  onEditProfile && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { variant: "outline", size: "sm", onPress: onEditProfile, children: "Edit" })
2950
3127
  ] }),
2951
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "gap-2", children: [
3128
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "gap-2", children: [
2952
3129
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-xs font-bold text-muted uppercase tracking-wider px-1", children: "Preferences" }),
2953
3130
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Card, { className: "divide-y divide-border/50", children: [
2954
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "p-4 flex-row items-center justify-between", children: [
2955
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "pr-4 flex-1", children: [
3131
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "p-4 flex-row items-center justify-between", children: [
3132
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "pr-4 flex-1", children: [
2956
3133
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-sm font-semibold text-foreground", children: "Push Notifications" }),
2957
3134
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-xs text-muted", children: "Receive real-time alerts on your mobile device" })
2958
3135
  ] }),
@@ -2964,8 +3141,8 @@ var SettingsTemplate = ({
2964
3141
  }
2965
3142
  )
2966
3143
  ] }),
2967
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "p-4 flex-row items-center justify-between", children: [
2968
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "pr-4 flex-1", children: [
3144
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "p-4 flex-row items-center justify-between", children: [
3145
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "pr-4 flex-1", children: [
2969
3146
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-sm font-semibold text-foreground", children: "Email Notifications" }),
2970
3147
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-xs text-muted", children: "Weekly digests and activity summaries" })
2971
3148
  ] }),
@@ -2977,15 +3154,15 @@ var SettingsTemplate = ({
2977
3154
  }
2978
3155
  )
2979
3156
  ] }),
2980
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "p-4 flex-row items-center justify-between", children: [
2981
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "pr-4 flex-1", children: [
3157
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "p-4 flex-row items-center justify-between", children: [
3158
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "pr-4 flex-1", children: [
2982
3159
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-sm font-semibold text-foreground", children: "Dark Theme" }),
2983
3160
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-xs text-muted", children: "Enable high contrast dark mode appearance" })
2984
3161
  ] }),
2985
3162
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Switch, { checked: isDarkMode, onCheckedChange: onToggleDarkMode })
2986
3163
  ] }),
2987
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "p-4 flex-row items-center justify-between", children: [
2988
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "pr-4 flex-1", children: [
3164
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "p-4 flex-row items-center justify-between", children: [
3165
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "pr-4 flex-1", children: [
2989
3166
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-sm font-semibold text-foreground", children: "Biometric Login" }),
2990
3167
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-xs text-muted", children: "Use Face ID or fingerprint to authenticate" })
2991
3168
  ] }),
@@ -2999,11 +3176,11 @@ var SettingsTemplate = ({
2999
3176
  ] })
3000
3177
  ] })
3001
3178
  ] }),
3002
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "gap-2", children: [
3179
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "gap-2", children: [
3003
3180
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text2, { className: "text-xs font-bold text-muted uppercase tracking-wider px-1", children: "Account & Security" }),
3004
3181
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Card, { className: "divide-y divide-border/50", children: [
3005
3182
  onChangePassword && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
3006
- import_react_native29.Pressable,
3183
+ import_react_native30.Pressable,
3007
3184
  {
3008
3185
  onPress: onChangePassword,
3009
3186
  className: "p-4 flex-row items-center justify-between active:bg-muted/10",
@@ -3014,7 +3191,7 @@ var SettingsTemplate = ({
3014
3191
  }
3015
3192
  ),
3016
3193
  onViewTerms && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
3017
- import_react_native29.Pressable,
3194
+ import_react_native30.Pressable,
3018
3195
  {
3019
3196
  onPress: onViewTerms,
3020
3197
  className: "p-4 flex-row items-center justify-between active:bg-muted/10",
@@ -3025,7 +3202,7 @@ var SettingsTemplate = ({
3025
3202
  }
3026
3203
  ),
3027
3204
  onViewPrivacy && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
3028
- import_react_native29.Pressable,
3205
+ import_react_native30.Pressable,
3029
3206
  {
3030
3207
  onPress: onViewPrivacy,
3031
3208
  className: "p-4 flex-row items-center justify-between active:bg-muted/10",
@@ -3037,7 +3214,7 @@ var SettingsTemplate = ({
3037
3214
  )
3038
3215
  ] })
3039
3216
  ] }),
3040
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native29.View, { className: "gap-3 pt-2", children: [
3217
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react_native30.View, { className: "gap-3 pt-2", children: [
3041
3218
  onLogout && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { variant: "outline", size: "lg", onPress: onLogout, children: "Log Out" }),
3042
3219
  onDeleteAccount && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3043
3220
  Button,
@@ -3056,7 +3233,7 @@ var SettingsTemplate = ({
3056
3233
 
3057
3234
  // src/providers/BeyondUIProvider.tsx
3058
3235
  var React26 = __toESM(require("react"));
3059
- var import_react_native30 = require("react-native");
3236
+ var import_react_native31 = require("react-native");
3060
3237
  var import_portal = require("@rn-primitives/portal");
3061
3238
  var import_jsx_runtime31 = require("react/jsx-runtime");
3062
3239
  var BeyondUIContext = React26.createContext({
@@ -3073,7 +3250,7 @@ function BeyondUIProvider({
3073
3250
  children,
3074
3251
  defaultColorScheme = "system"
3075
3252
  }) {
3076
- const systemScheme = (0, import_react_native30.useColorScheme)() ?? "light";
3253
+ const systemScheme = (0, import_react_native31.useColorScheme)() ?? "light";
3077
3254
  const [selectedScheme, setSelectedScheme] = React26.useState(defaultColorScheme);
3078
3255
  const [toasts, setToasts] = React26.useState([]);
3079
3256
  const activeScheme = selectedScheme === "system" ? systemScheme : selectedScheme;
@@ -3112,11 +3289,18 @@ function BeyondUIProvider({
3112
3289
  }),
3113
3290
  [activeScheme, toggleColorScheme]
3114
3291
  );
3115
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(BeyondUIContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastContext.Provider, { value: toastContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_react_native30.View, { className: activeScheme === "dark" ? "dark flex-1" : "flex-1", children: [
3116
- children,
3117
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_portal.PortalHost, {}),
3118
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastContainer, { toasts, onDismiss: dismissToast })
3119
- ] }) }) });
3292
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(BeyondUIContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastContext.Provider, { value: toastContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3293
+ import_react_native31.View,
3294
+ {
3295
+ style: { flex: 1 },
3296
+ className: activeScheme === "dark" ? "dark flex-1" : "flex-1",
3297
+ children: [
3298
+ children,
3299
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_portal.PortalHost, {}),
3300
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ToastContainer, { toasts, onDismiss: dismissToast })
3301
+ ]
3302
+ }
3303
+ ) }) });
3120
3304
  }
3121
3305
 
3122
3306
  // src/theme/tokens.ts
@@ -3275,7 +3459,21 @@ var beyondUIPreset = {
3275
3459
  destructive: tokens.colors.destructive,
3276
3460
  success: tokens.colors.success,
3277
3461
  warning: tokens.colors.warning,
3278
- neutral: tokens.colors.neutral
3462
+ neutral: tokens.colors.neutral,
3463
+ background: tokens.colors.semantic.light.background,
3464
+ foreground: tokens.colors.semantic.light.foreground,
3465
+ card: {
3466
+ DEFAULT: tokens.colors.semantic.light.card,
3467
+ foreground: tokens.colors.semantic.light.cardForeground
3468
+ },
3469
+ cardForeground: tokens.colors.semantic.light.cardForeground,
3470
+ muted: {
3471
+ DEFAULT: tokens.colors.semantic.light.mutedForeground,
3472
+ foreground: tokens.colors.semantic.light.mutedForeground
3473
+ },
3474
+ mutedForeground: tokens.colors.semantic.light.mutedForeground,
3475
+ border: tokens.colors.semantic.light.border,
3476
+ input: tokens.colors.semantic.light.input
3279
3477
  },
3280
3478
  borderRadius: {
3281
3479
  none: "0px",
@@ -3351,6 +3549,7 @@ function joinA11yLabels(...parts) {
3351
3549
  Dialog,
3352
3550
  DialogClose,
3353
3551
  DialogContent,
3552
+ DialogContext,
3354
3553
  DialogDescription,
3355
3554
  DialogFooter,
3356
3555
  DialogHeader,
@@ -3379,6 +3578,7 @@ function joinA11yLabels(...parts) {
3379
3578
  Switch,
3380
3579
  Tabs,
3381
3580
  TabsContent,
3581
+ TabsContext,
3382
3582
  TabsList,
3383
3583
  TabsTrigger,
3384
3584
  Text,
@@ -3405,6 +3605,8 @@ function joinA11yLabels(...parts) {
3405
3605
  textVariants,
3406
3606
  tokens,
3407
3607
  useBeyondUI,
3608
+ useDialogContext,
3609
+ useTabsContext,
3408
3610
  useToast
3409
3611
  });
3410
3612
  //# sourceMappingURL=index.js.map