@beyondcorp/beyond-ui-native 0.1.6 → 0.1.7

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.mjs CHANGED
@@ -2469,16 +2469,557 @@ function DataTable({
2469
2469
  ] });
2470
2470
  }
2471
2471
 
2472
- // src/templates/auth/SignInTemplate.tsx
2472
+ // src/components/modal/modal.tsx
2473
2473
  import * as React23 from "react";
2474
2474
  import {
2475
+ Modal as RNModal,
2475
2476
  View as View22,
2476
- ScrollView as ScrollView3,
2477
+ Text as Text16,
2478
+ Pressable as Pressable13,
2479
+ StyleSheet as StyleSheet2,
2477
2480
  KeyboardAvoidingView,
2478
2481
  Platform,
2479
- Pressable as Pressable13
2482
+ ScrollView as ScrollView3
2480
2483
  } from "react-native";
2484
+ import { cva as cva11 } from "class-variance-authority";
2481
2485
  import { jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
2486
+ var modalVariants = cva11(
2487
+ "w-full rounded-2xl border border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900 p-6 shadow-2xl relative",
2488
+ {
2489
+ variants: {
2490
+ size: {
2491
+ sm: "max-w-xs",
2492
+ md: "max-w-md",
2493
+ lg: "max-w-lg",
2494
+ xl: "max-w-xl",
2495
+ full: "max-w-[95%] max-h-[90%]"
2496
+ }
2497
+ },
2498
+ defaultVariants: {
2499
+ size: "md"
2500
+ }
2501
+ }
2502
+ );
2503
+ var ModalContext = React23.createContext(null);
2504
+ function useModalContext() {
2505
+ const context = React23.useContext(ModalContext);
2506
+ if (!context) {
2507
+ throw new Error("Modal compound components must be used within a Modal component");
2508
+ }
2509
+ return context;
2510
+ }
2511
+ function Modal4({
2512
+ open: controlledOpen,
2513
+ visible,
2514
+ onOpenChange,
2515
+ onRequestClose,
2516
+ showCloseButton = true,
2517
+ closeOnOverlayPress = true,
2518
+ size = "md",
2519
+ children,
2520
+ className,
2521
+ overlayClassName
2522
+ }) {
2523
+ const isOpen = (controlledOpen !== void 0 ? controlledOpen : visible) ?? false;
2524
+ const handleClose = React23.useCallback(() => {
2525
+ onOpenChange?.(false);
2526
+ onRequestClose?.();
2527
+ }, [onOpenChange, onRequestClose]);
2528
+ if (!isOpen) return null;
2529
+ return /* @__PURE__ */ jsx26(ModalContext.Provider, { value: { open: isOpen, onOpenChange: (o) => !o && handleClose() }, children: /* @__PURE__ */ jsx26(
2530
+ RNModal,
2531
+ {
2532
+ transparent: true,
2533
+ visible: isOpen,
2534
+ animationType: "fade",
2535
+ onRequestClose: handleClose,
2536
+ statusBarTranslucent: true,
2537
+ children: /* @__PURE__ */ jsxs13(
2538
+ KeyboardAvoidingView,
2539
+ {
2540
+ behavior: Platform.OS === "ios" ? "padding" : void 0,
2541
+ style: StyleSheet2.absoluteFill,
2542
+ children: [
2543
+ /* @__PURE__ */ jsx26(
2544
+ Pressable13,
2545
+ {
2546
+ style: StyleSheet2.absoluteFill,
2547
+ className: cn("bg-black/60", overlayClassName),
2548
+ onPress: closeOnOverlayPress ? handleClose : void 0,
2549
+ accessibilityRole: "button",
2550
+ accessibilityLabel: "Close modal overlay"
2551
+ }
2552
+ ),
2553
+ /* @__PURE__ */ jsx26(
2554
+ View22,
2555
+ {
2556
+ pointerEvents: "box-none",
2557
+ style: StyleSheet2.absoluteFill,
2558
+ className: "items-center justify-center p-4 z-50",
2559
+ children: /* @__PURE__ */ jsxs13(
2560
+ View22,
2561
+ {
2562
+ role: "dialog",
2563
+ "aria-modal": true,
2564
+ className: cn(modalVariants({ size }), className),
2565
+ children: [
2566
+ showCloseButton && /* @__PURE__ */ jsx26(
2567
+ Pressable13,
2568
+ {
2569
+ onPress: handleClose,
2570
+ hitSlop: { top: 12, right: 12, bottom: 12, left: 12 },
2571
+ className: "absolute right-4 top-4 z-50 w-8 h-8 rounded-full bg-neutral-100 dark:bg-neutral-800 items-center justify-center active:opacity-70",
2572
+ accessibilityRole: "button",
2573
+ accessibilityLabel: "Close modal",
2574
+ children: /* @__PURE__ */ jsx26(Text16, { className: "text-neutral-500 dark:text-neutral-400 text-sm font-semibold leading-none", children: "\u2715" })
2575
+ }
2576
+ ),
2577
+ children
2578
+ ]
2579
+ }
2580
+ )
2581
+ }
2582
+ )
2583
+ ]
2584
+ }
2585
+ )
2586
+ }
2587
+ ) });
2588
+ }
2589
+ Modal4.displayName = "Modal";
2590
+ function ModalHeader({
2591
+ className,
2592
+ ...props
2593
+ }) {
2594
+ return /* @__PURE__ */ jsx26(
2595
+ View22,
2596
+ {
2597
+ className: cn("flex-col space-y-1.5 pr-8", className),
2598
+ ...props
2599
+ }
2600
+ );
2601
+ }
2602
+ ModalHeader.displayName = "ModalHeader";
2603
+ var ModalTitle = React23.forwardRef(
2604
+ function ModalTitle2({ className, ...props }, ref) {
2605
+ return /* @__PURE__ */ jsx26(
2606
+ Text16,
2607
+ {
2608
+ ref,
2609
+ role: "heading",
2610
+ "aria-level": 2,
2611
+ className: cn(
2612
+ "text-lg font-bold tracking-tight text-neutral-900 dark:text-neutral-50",
2613
+ className
2614
+ ),
2615
+ ...props
2616
+ }
2617
+ );
2618
+ }
2619
+ );
2620
+ ModalTitle.displayName = "ModalTitle";
2621
+ var ModalDescription = React23.forwardRef(
2622
+ function ModalDescription2({ className, ...props }, ref) {
2623
+ return /* @__PURE__ */ jsx26(
2624
+ Text16,
2625
+ {
2626
+ ref,
2627
+ className: cn(
2628
+ "text-sm text-neutral-500 dark:text-neutral-400 mt-1",
2629
+ className
2630
+ ),
2631
+ ...props
2632
+ }
2633
+ );
2634
+ }
2635
+ );
2636
+ ModalDescription.displayName = "ModalDescription";
2637
+ function ModalContent({
2638
+ className,
2639
+ children,
2640
+ scrollable = false,
2641
+ ...props
2642
+ }) {
2643
+ if (scrollable) {
2644
+ return /* @__PURE__ */ jsx26(
2645
+ ScrollView3,
2646
+ {
2647
+ showsVerticalScrollIndicator: false,
2648
+ className: cn("py-3 max-h-[70vh]", className),
2649
+ ...props,
2650
+ children
2651
+ }
2652
+ );
2653
+ }
2654
+ return /* @__PURE__ */ jsx26(View22, { className: cn("py-3", className), ...props, children });
2655
+ }
2656
+ ModalContent.displayName = "ModalContent";
2657
+ function ModalFooter({
2658
+ className,
2659
+ ...props
2660
+ }) {
2661
+ return /* @__PURE__ */ jsx26(
2662
+ View22,
2663
+ {
2664
+ className: cn(
2665
+ "flex-row flex-wrap items-center justify-end gap-2 pt-3 border-t border-neutral-100 dark:border-neutral-800 mt-2",
2666
+ className
2667
+ ),
2668
+ ...props
2669
+ }
2670
+ );
2671
+ }
2672
+ ModalFooter.displayName = "ModalFooter";
2673
+
2674
+ // src/components/night-mode-switch/night-mode-switch.tsx
2675
+ import * as React25 from "react";
2676
+ import {
2677
+ Pressable as Pressable14,
2678
+ Text as Text17
2679
+ } from "react-native";
2680
+ import { cva as cva12 } from "class-variance-authority";
2681
+
2682
+ // src/providers/BeyondUIProvider.tsx
2683
+ import * as React24 from "react";
2684
+ import { View as View23, useColorScheme as useRNColorScheme } from "react-native";
2685
+ import { colorScheme as nwColorScheme } from "nativewind";
2686
+ import { PortalHost } from "@rn-primitives/portal";
2687
+ import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
2688
+ if (typeof __DEV__ !== "undefined" && __DEV__) {
2689
+ try {
2690
+ const { LogBox } = __require("react-native");
2691
+ LogBox?.ignoreLogs?.([
2692
+ "You are setting the style `{ shadowOffset: ... }` as a prop",
2693
+ "You are setting the style"
2694
+ ]);
2695
+ if (!Boolean(console.error?.__beyond_ui_filtered)) {
2696
+ const originalError = console.error;
2697
+ const filteredError = (...args) => {
2698
+ const fullMessage = args.map((arg) => typeof arg === "string" ? arg : "").join(" ");
2699
+ if (fullMessage.includes("shadowOffset") || fullMessage.includes("You are setting the style")) {
2700
+ return;
2701
+ }
2702
+ originalError(...args);
2703
+ };
2704
+ filteredError.__beyond_ui_filtered = true;
2705
+ console.error = filteredError;
2706
+ }
2707
+ } catch (_) {
2708
+ }
2709
+ }
2710
+ var BeyondUIContext = React24.createContext({
2711
+ colorScheme: "light",
2712
+ setColorScheme: () => {
2713
+ },
2714
+ toggleColorScheme: () => {
2715
+ }
2716
+ });
2717
+ function useBeyondUI() {
2718
+ return React24.useContext(BeyondUIContext);
2719
+ }
2720
+ function BeyondUIProvider({
2721
+ children,
2722
+ defaultColorScheme = "system"
2723
+ }) {
2724
+ const systemScheme = useRNColorScheme() ?? "light";
2725
+ const [selectedScheme, setSelectedScheme] = React24.useState(defaultColorScheme);
2726
+ const [toasts, setToasts] = React24.useState([]);
2727
+ const activeScheme = selectedScheme === "system" ? systemScheme : selectedScheme;
2728
+ React24.useEffect(() => {
2729
+ try {
2730
+ nwColorScheme.set(selectedScheme === "system" ? "system" : activeScheme);
2731
+ } catch (_) {
2732
+ }
2733
+ }, [selectedScheme, activeScheme]);
2734
+ const handleSetColorScheme = React24.useCallback((scheme) => {
2735
+ setSelectedScheme(scheme);
2736
+ try {
2737
+ nwColorScheme.set(scheme === "system" ? "system" : scheme);
2738
+ } catch (_) {
2739
+ }
2740
+ }, []);
2741
+ const toggleColorScheme = React24.useCallback(() => {
2742
+ setSelectedScheme((prev) => {
2743
+ const current = prev === "system" ? systemScheme : prev;
2744
+ const next = current === "dark" ? "light" : "dark";
2745
+ try {
2746
+ nwColorScheme.set(next);
2747
+ } catch (_) {
2748
+ }
2749
+ return next;
2750
+ });
2751
+ }, [systemScheme]);
2752
+ const dismissToast = React24.useCallback((id) => {
2753
+ setToasts((prev) => prev.filter((t) => t.id !== id));
2754
+ }, []);
2755
+ const showToast = React24.useCallback((toast) => {
2756
+ const id = Math.random().toString(36).substring(2, 9);
2757
+ setToasts((prev) => [...prev, { ...toast, id }]);
2758
+ return id;
2759
+ }, []);
2760
+ const toastContextValue = React24.useMemo(
2761
+ () => ({
2762
+ toasts,
2763
+ show: showToast,
2764
+ dismiss: dismissToast,
2765
+ success: (title, description) => showToast({ title, description, variant: "success" }),
2766
+ danger: (title, description) => showToast({ title, description, variant: "danger" }),
2767
+ error: (title, description) => showToast({ title, description, variant: "danger" }),
2768
+ warning: (title, description) => showToast({ title, description, variant: "warning" }),
2769
+ info: (title, description) => showToast({ title, description, variant: "info" })
2770
+ }),
2771
+ [toasts, showToast, dismissToast]
2772
+ );
2773
+ const contextValue = React24.useMemo(
2774
+ () => ({
2775
+ colorScheme: activeScheme,
2776
+ setColorScheme: handleSetColorScheme,
2777
+ toggleColorScheme
2778
+ }),
2779
+ [activeScheme, handleSetColorScheme, toggleColorScheme]
2780
+ );
2781
+ return /* @__PURE__ */ jsx27(BeyondUIContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx27(ToastContext.Provider, { value: toastContextValue, children: /* @__PURE__ */ jsxs14(
2782
+ View23,
2783
+ {
2784
+ style: { flex: 1 },
2785
+ className: activeScheme === "dark" ? "dark flex-1 bg-neutral-950" : "flex-1 bg-white",
2786
+ children: [
2787
+ children,
2788
+ /* @__PURE__ */ jsx27(PortalHost, {}),
2789
+ /* @__PURE__ */ jsx27(ToastContainer, { toasts, onDismiss: dismissToast })
2790
+ ]
2791
+ }
2792
+ ) }) });
2793
+ }
2794
+
2795
+ // src/components/night-mode-switch/night-mode-switch.tsx
2796
+ import { jsx as jsx28 } from "react/jsx-runtime";
2797
+ var nightModeSwitchVariants = cva12(
2798
+ "inline-flex items-center justify-center rounded-full active:opacity-75",
2799
+ {
2800
+ variants: {
2801
+ variant: {
2802
+ primary: "bg-primary-600 dark:bg-primary-500",
2803
+ secondary: "bg-secondary-600 dark:bg-secondary-500",
2804
+ ghost: "bg-transparent active:bg-neutral-100 dark:active:bg-neutral-800"
2805
+ },
2806
+ size: {
2807
+ sm: "w-8 h-8",
2808
+ md: "w-10 h-10",
2809
+ lg: "w-12 h-12"
2810
+ }
2811
+ },
2812
+ defaultVariants: {
2813
+ variant: "ghost",
2814
+ size: "md"
2815
+ }
2816
+ }
2817
+ );
2818
+ var NightModeSwitch = React25.forwardRef(
2819
+ function NightModeSwitch2({
2820
+ className,
2821
+ textClassName,
2822
+ variant,
2823
+ size,
2824
+ ariaLabel = "Toggle dark mode",
2825
+ onPress,
2826
+ ...props
2827
+ }, ref) {
2828
+ const { colorScheme, toggleColorScheme } = useBeyondUI();
2829
+ const isDark = colorScheme === "dark";
2830
+ const handlePress = (e) => {
2831
+ toggleColorScheme();
2832
+ onPress?.(e);
2833
+ };
2834
+ const iconSizeClasses = {
2835
+ sm: "text-base",
2836
+ md: "text-lg",
2837
+ lg: "text-xl"
2838
+ }[size || "md"];
2839
+ return /* @__PURE__ */ jsx28(
2840
+ Pressable14,
2841
+ {
2842
+ ref,
2843
+ role: "button",
2844
+ accessibilityRole: "button",
2845
+ accessibilityLabel: ariaLabel,
2846
+ accessibilityState: { checked: isDark },
2847
+ className: cn(nightModeSwitchVariants({ variant, size }), className),
2848
+ onPress: handlePress,
2849
+ ...props,
2850
+ children: /* @__PURE__ */ jsx28(
2851
+ Text17,
2852
+ {
2853
+ className: cn(
2854
+ iconSizeClasses,
2855
+ variant === "ghost" ? "text-neutral-700 dark:text-neutral-200" : "text-white",
2856
+ textClassName
2857
+ ),
2858
+ children: isDark ? "\u{1F319}" : "\u2600\uFE0F"
2859
+ }
2860
+ )
2861
+ }
2862
+ );
2863
+ }
2864
+ );
2865
+ NightModeSwitch.displayName = "NightModeSwitch";
2866
+
2867
+ // src/components/dashboard-layout/dashboard-layout.tsx
2868
+ import * as React26 from "react";
2869
+ import {
2870
+ View as View24,
2871
+ ScrollView as ScrollView4,
2872
+ Pressable as Pressable15,
2873
+ TextInput as TextInput4,
2874
+ RefreshControl
2875
+ } from "react-native";
2876
+ import { jsx as jsx29, jsxs as jsxs15 } from "react/jsx-runtime";
2877
+ var DashboardLayout = ({
2878
+ title,
2879
+ subtitle,
2880
+ breadcrumbs,
2881
+ user,
2882
+ onProfilePress,
2883
+ onNotificationPress,
2884
+ unreadNotificationsCount = 0,
2885
+ showSearch = false,
2886
+ searchPlaceholder = "Search...",
2887
+ searchValue,
2888
+ onSearchChange,
2889
+ showNightModeSwitch = true,
2890
+ onBackPress,
2891
+ backIcon,
2892
+ headerActions,
2893
+ footer,
2894
+ scrollable = true,
2895
+ refreshing = false,
2896
+ onRefresh,
2897
+ contentClassName,
2898
+ className,
2899
+ children,
2900
+ ...props
2901
+ }) => {
2902
+ return /* @__PURE__ */ jsxs15(
2903
+ View24,
2904
+ {
2905
+ className: cn("flex-1 bg-neutral-50 dark:bg-neutral-950", className),
2906
+ ...props,
2907
+ children: [
2908
+ /* @__PURE__ */ jsxs15(View24, { className: "px-5 pt-3 pb-3 border-b border-neutral-200 dark:border-neutral-800 bg-white/90 dark:bg-neutral-900/90 flex-row items-center justify-between z-10", children: [
2909
+ /* @__PURE__ */ jsxs15(View24, { className: "flex-row items-center gap-3 flex-1 mr-2", children: [
2910
+ onBackPress && /* @__PURE__ */ jsx29(
2911
+ Pressable15,
2912
+ {
2913
+ onPress: onBackPress,
2914
+ className: "w-9 h-9 rounded-full bg-neutral-100 dark:bg-neutral-800 items-center justify-center active:opacity-70",
2915
+ accessibilityRole: "button",
2916
+ accessibilityLabel: "Back",
2917
+ children: backIcon || /* @__PURE__ */ jsx29(Text2, { className: "text-neutral-700 dark:text-neutral-200 font-bold text-base leading-none", children: "\u2190" })
2918
+ }
2919
+ ),
2920
+ user && /* @__PURE__ */ jsxs15(
2921
+ Pressable15,
2922
+ {
2923
+ onPress: onProfilePress,
2924
+ className: "flex-row items-center gap-2 active:opacity-80",
2925
+ accessibilityRole: "button",
2926
+ accessibilityLabel: `User profile: ${user.name || "User"}`,
2927
+ children: [
2928
+ /* @__PURE__ */ jsxs15(Avatar, { size: "sm", children: [
2929
+ user.avatarUrl && /* @__PURE__ */ jsx29(AvatarImage, { source: { uri: user.avatarUrl } }),
2930
+ /* @__PURE__ */ jsx29(AvatarFallback, { text: (user.name || "U").slice(0, 2).toUpperCase() })
2931
+ ] }),
2932
+ /* @__PURE__ */ jsxs15(View24, { className: "hidden sm:flex", children: [
2933
+ /* @__PURE__ */ jsx29(Text2, { className: "text-xs font-semibold text-neutral-800 dark:text-neutral-200 leading-tight", children: user.name }),
2934
+ user.role && /* @__PURE__ */ jsx29(Text2, { className: "text-[10px] text-neutral-500 dark:text-neutral-400 leading-tight", children: user.role })
2935
+ ] })
2936
+ ]
2937
+ }
2938
+ ),
2939
+ (title || subtitle) && /* @__PURE__ */ jsxs15(View24, { className: "flex-1", children: [
2940
+ breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsx29(View24, { className: "flex-row items-center gap-1 mb-0.5", children: breadcrumbs.map((crumb, idx) => /* @__PURE__ */ jsxs15(React26.Fragment, { children: [
2941
+ idx > 0 && /* @__PURE__ */ jsx29(Text2, { className: "text-[11px] text-neutral-400 dark:text-neutral-500", children: "/" }),
2942
+ /* @__PURE__ */ jsx29(
2943
+ Text2,
2944
+ {
2945
+ onPress: crumb.onPress,
2946
+ className: cn(
2947
+ "text-[11px]",
2948
+ crumb.onPress ? "text-primary-600 dark:text-primary-400 font-medium" : "text-neutral-500 dark:text-neutral-400"
2949
+ ),
2950
+ children: crumb.label
2951
+ }
2952
+ )
2953
+ ] }, idx)) }),
2954
+ title && /* @__PURE__ */ jsx29(
2955
+ Heading,
2956
+ {
2957
+ level: 3,
2958
+ className: "text-lg font-bold text-neutral-900 dark:text-neutral-50 leading-tight",
2959
+ children: title
2960
+ }
2961
+ ),
2962
+ subtitle && /* @__PURE__ */ jsx29(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 leading-tight", children: subtitle })
2963
+ ] })
2964
+ ] }),
2965
+ /* @__PURE__ */ jsxs15(View24, { className: "flex-row items-center gap-2", children: [
2966
+ headerActions,
2967
+ showNightModeSwitch && /* @__PURE__ */ jsx29(NightModeSwitch, { size: "sm", variant: "ghost" }),
2968
+ onNotificationPress && /* @__PURE__ */ jsxs15(
2969
+ Pressable15,
2970
+ {
2971
+ onPress: onNotificationPress,
2972
+ className: "w-9 h-9 rounded-full bg-neutral-100 dark:bg-neutral-800 items-center justify-center relative active:opacity-70",
2973
+ accessibilityRole: "button",
2974
+ accessibilityLabel: "Notifications",
2975
+ children: [
2976
+ /* @__PURE__ */ jsx29(Text2, { className: "text-sm", children: "\u{1F514}" }),
2977
+ unreadNotificationsCount > 0 && /* @__PURE__ */ jsx29(View24, { className: "absolute -top-0.5 -right-0.5 min-w-[16px] h-4 px-1 rounded-full bg-danger items-center justify-center", children: /* @__PURE__ */ jsx29(Text2, { className: "text-[9px] font-bold text-white leading-none", children: unreadNotificationsCount > 9 ? "9+" : unreadNotificationsCount }) })
2978
+ ]
2979
+ }
2980
+ )
2981
+ ] })
2982
+ ] }),
2983
+ showSearch && /* @__PURE__ */ jsx29(View24, { className: "px-5 py-2 border-b border-neutral-100 dark:border-neutral-800/60 bg-neutral-50/50 dark:bg-neutral-900/50", children: /* @__PURE__ */ jsxs15(View24, { className: "flex-row items-center bg-white dark:bg-neutral-800 border border-neutral-200 dark:border-neutral-700 rounded-xl px-3 py-2", children: [
2984
+ /* @__PURE__ */ jsx29(Text2, { className: "text-neutral-400 mr-2 text-sm", children: "\u{1F50D}" }),
2985
+ /* @__PURE__ */ jsx29(
2986
+ TextInput4,
2987
+ {
2988
+ value: searchValue,
2989
+ onChangeText: onSearchChange,
2990
+ placeholder: searchPlaceholder,
2991
+ placeholderTextColor: "#9ca3af",
2992
+ className: "flex-1 text-sm text-neutral-900 dark:text-neutral-100 p-0"
2993
+ }
2994
+ )
2995
+ ] }) }),
2996
+ scrollable ? /* @__PURE__ */ jsx29(
2997
+ ScrollView4,
2998
+ {
2999
+ className: cn("flex-1", contentClassName),
3000
+ contentContainerStyle: { paddingBottom: 32 },
3001
+ showsVerticalScrollIndicator: false,
3002
+ refreshControl: onRefresh ? /* @__PURE__ */ jsx29(RefreshControl, { refreshing, onRefresh }) : void 0,
3003
+ children
3004
+ }
3005
+ ) : /* @__PURE__ */ jsx29(View24, { className: cn("flex-1", contentClassName), children }),
3006
+ footer
3007
+ ]
3008
+ }
3009
+ );
3010
+ };
3011
+ DashboardLayout.displayName = "DashboardLayout";
3012
+
3013
+ // src/templates/auth/SignInTemplate.tsx
3014
+ import * as React27 from "react";
3015
+ import {
3016
+ View as View25,
3017
+ ScrollView as ScrollView5,
3018
+ KeyboardAvoidingView as KeyboardAvoidingView2,
3019
+ Platform as Platform2,
3020
+ Pressable as Pressable16
3021
+ } from "react-native";
3022
+ import { jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
2482
3023
  var SignInTemplate = ({
2483
3024
  title = "Welcome Back",
2484
3025
  subtitle = "Sign in to your Beyond account to continue",
@@ -2492,12 +3033,12 @@ var SignInTemplate = ({
2492
3033
  error,
2493
3034
  className
2494
3035
  }) => {
2495
- const [email, setEmail] = React23.useState("");
2496
- const [password, setPassword] = React23.useState("");
2497
- const [showPassword, setShowPassword] = React23.useState(false);
2498
- const [rememberMe, setRememberMe] = React23.useState(false);
2499
- const [emailError, setEmailError] = React23.useState();
2500
- const [passwordError, setPasswordError] = React23.useState();
3036
+ const [email, setEmail] = React27.useState("");
3037
+ const [password, setPassword] = React27.useState("");
3038
+ const [showPassword, setShowPassword] = React27.useState(false);
3039
+ const [rememberMe, setRememberMe] = React27.useState(false);
3040
+ const [emailError, setEmailError] = React27.useState();
3041
+ const [passwordError, setPasswordError] = React27.useState();
2501
3042
  const handleSubmit = () => {
2502
3043
  let valid = true;
2503
3044
  setEmailError(void 0);
@@ -2514,29 +3055,29 @@ var SignInTemplate = ({
2514
3055
  onSubmit?.({ email, password, rememberMe });
2515
3056
  }
2516
3057
  };
2517
- return /* @__PURE__ */ jsx26(
2518
- KeyboardAvoidingView,
3058
+ return /* @__PURE__ */ jsx30(
3059
+ KeyboardAvoidingView2,
2519
3060
  {
2520
- behavior: Platform.OS === "ios" ? "padding" : "height",
3061
+ behavior: Platform2.OS === "ios" ? "padding" : "height",
2521
3062
  style: { flex: 1 },
2522
3063
  className: cn("flex-1 bg-neutral-50 dark:bg-neutral-950", className),
2523
- children: /* @__PURE__ */ jsx26(
2524
- ScrollView3,
3064
+ children: /* @__PURE__ */ jsx30(
3065
+ ScrollView5,
2525
3066
  {
2526
3067
  style: { flex: 1 },
2527
3068
  contentContainerStyle: { flexGrow: 1, justifyContent: "center" },
2528
3069
  className: "px-6 py-8",
2529
3070
  keyboardShouldPersistTaps: "handled",
2530
3071
  showsVerticalScrollIndicator: false,
2531
- children: /* @__PURE__ */ jsxs13(View22, { className: "w-full max-w-md mx-auto gap-6", children: [
2532
- /* @__PURE__ */ jsxs13(View22, { className: "items-center gap-2", children: [
2533
- logo && /* @__PURE__ */ jsx26(View22, { className: "mb-2", children: logo }),
2534
- /* @__PURE__ */ jsx26(Heading, { level: 2, className: "text-3xl font-extrabold text-neutral-900 dark:text-neutral-50 text-center", children: title }),
2535
- /* @__PURE__ */ jsx26(Text2, { className: "text-neutral-500 dark:text-neutral-400 text-center text-base", children: subtitle })
3072
+ children: /* @__PURE__ */ jsxs16(View25, { className: "w-full max-w-md mx-auto gap-6", children: [
3073
+ /* @__PURE__ */ jsxs16(View25, { className: "items-center gap-2", children: [
3074
+ logo && /* @__PURE__ */ jsx30(View25, { className: "mb-2", children: logo }),
3075
+ /* @__PURE__ */ jsx30(Heading, { level: 2, className: "text-3xl font-extrabold text-neutral-900 dark:text-neutral-50 text-center", children: title }),
3076
+ /* @__PURE__ */ jsx30(Text2, { className: "text-neutral-500 dark:text-neutral-400 text-center text-base", children: subtitle })
2536
3077
  ] }),
2537
- error && /* @__PURE__ */ jsx26(Alert, { variant: "danger", children: /* @__PURE__ */ jsx26(AlertDescription, { children: error }) }),
2538
- /* @__PURE__ */ jsxs13(View22, { className: "gap-4", children: [
2539
- /* @__PURE__ */ jsx26(
3078
+ error && /* @__PURE__ */ jsx30(Alert, { variant: "danger", children: /* @__PURE__ */ jsx30(AlertDescription, { children: error }) }),
3079
+ /* @__PURE__ */ jsxs16(View25, { className: "gap-4", children: [
3080
+ /* @__PURE__ */ jsx30(
2540
3081
  Input,
2541
3082
  {
2542
3083
  label: "Email Address",
@@ -2552,7 +3093,7 @@ var SignInTemplate = ({
2552
3093
  error: emailError
2553
3094
  }
2554
3095
  ),
2555
- /* @__PURE__ */ jsx26(View22, { className: "gap-1", children: /* @__PURE__ */ jsx26(
3096
+ /* @__PURE__ */ jsx30(View25, { className: "gap-1", children: /* @__PURE__ */ jsx30(
2556
3097
  Input,
2557
3098
  {
2558
3099
  label: "Password",
@@ -2564,17 +3105,17 @@ var SignInTemplate = ({
2564
3105
  if (passwordError) setPasswordError(void 0);
2565
3106
  },
2566
3107
  error: passwordError,
2567
- rightElement: /* @__PURE__ */ jsx26(Pressable13, { onPress: () => setShowPassword((p) => !p), className: "p-1", children: /* @__PURE__ */ jsx26(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 font-semibold", children: showPassword ? "HIDE" : "SHOW" }) })
3108
+ rightElement: /* @__PURE__ */ jsx30(Pressable16, { onPress: () => setShowPassword((p) => !p), className: "p-1", children: /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 font-semibold", children: showPassword ? "HIDE" : "SHOW" }) })
2568
3109
  }
2569
3110
  ) }),
2570
- /* @__PURE__ */ jsxs13(View22, { className: "flex-row items-center justify-between py-1", children: [
2571
- /* @__PURE__ */ jsxs13(View22, { className: "flex-row items-center gap-2", children: [
2572
- /* @__PURE__ */ jsx26(Checkbox, { checked: rememberMe, onCheckedChange: setRememberMe }),
2573
- /* @__PURE__ */ jsx26(Text2, { className: "text-sm text-neutral-900 dark:text-neutral-100", children: "Remember me" })
3111
+ /* @__PURE__ */ jsxs16(View25, { className: "flex-row items-center justify-between py-1", children: [
3112
+ /* @__PURE__ */ jsxs16(View25, { className: "flex-row items-center gap-2", children: [
3113
+ /* @__PURE__ */ jsx30(Checkbox, { checked: rememberMe, onCheckedChange: setRememberMe }),
3114
+ /* @__PURE__ */ jsx30(Text2, { className: "text-sm text-neutral-900 dark:text-neutral-100", children: "Remember me" })
2574
3115
  ] }),
2575
- onForgotPassword && /* @__PURE__ */ jsx26(Pressable13, { onPress: onForgotPassword, children: /* @__PURE__ */ jsx26(Text2, { className: "text-sm font-semibold text-primary-600 dark:text-primary-400", children: "Forgot password?" }) })
3116
+ onForgotPassword && /* @__PURE__ */ jsx30(Pressable16, { onPress: onForgotPassword, children: /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-primary-600 dark:text-primary-400", children: "Forgot password?" }) })
2576
3117
  ] }),
2577
- /* @__PURE__ */ jsx26(
3118
+ /* @__PURE__ */ jsx30(
2578
3119
  Button,
2579
3120
  {
2580
3121
  variant: "primary",
@@ -2586,14 +3127,14 @@ var SignInTemplate = ({
2586
3127
  }
2587
3128
  )
2588
3129
  ] }),
2589
- (onGooglePress || onApplePress) && /* @__PURE__ */ jsxs13(View22, { className: "gap-4", children: [
2590
- /* @__PURE__ */ jsxs13(View22, { className: "flex-row items-center gap-3", children: [
2591
- /* @__PURE__ */ jsx26(Separator, { className: "flex-1" }),
2592
- /* @__PURE__ */ jsx26(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 uppercase", children: "or continue with" }),
2593
- /* @__PURE__ */ jsx26(Separator, { className: "flex-1" })
3130
+ (onGooglePress || onApplePress) && /* @__PURE__ */ jsxs16(View25, { className: "gap-4", children: [
3131
+ /* @__PURE__ */ jsxs16(View25, { className: "flex-row items-center gap-3", children: [
3132
+ /* @__PURE__ */ jsx30(Separator, { className: "flex-1" }),
3133
+ /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 uppercase", children: "or continue with" }),
3134
+ /* @__PURE__ */ jsx30(Separator, { className: "flex-1" })
2594
3135
  ] }),
2595
- /* @__PURE__ */ jsxs13(View22, { className: "flex-row gap-3", children: [
2596
- onGooglePress && /* @__PURE__ */ jsx26(
3136
+ /* @__PURE__ */ jsxs16(View25, { className: "flex-row gap-3", children: [
3137
+ onGooglePress && /* @__PURE__ */ jsx30(
2597
3138
  Button,
2598
3139
  {
2599
3140
  variant: "outline",
@@ -2602,7 +3143,7 @@ var SignInTemplate = ({
2602
3143
  children: "Google"
2603
3144
  }
2604
3145
  ),
2605
- onApplePress && /* @__PURE__ */ jsx26(
3146
+ onApplePress && /* @__PURE__ */ jsx30(
2606
3147
  Button,
2607
3148
  {
2608
3149
  variant: "outline",
@@ -2613,9 +3154,9 @@ var SignInTemplate = ({
2613
3154
  )
2614
3155
  ] })
2615
3156
  ] }),
2616
- onSignUpPress && /* @__PURE__ */ jsxs13(View22, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
2617
- /* @__PURE__ */ jsx26(Text2, { className: "text-sm text-neutral-500 dark:text-neutral-400", children: "Don't have an account?" }),
2618
- /* @__PURE__ */ jsx26(Pressable13, { onPress: onSignUpPress, children: /* @__PURE__ */ jsx26(Text2, { className: "text-sm font-bold text-primary-600 dark:text-primary-400", children: "Sign Up" }) })
3157
+ onSignUpPress && /* @__PURE__ */ jsxs16(View25, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
3158
+ /* @__PURE__ */ jsx30(Text2, { className: "text-sm text-neutral-500 dark:text-neutral-400", children: "Don't have an account?" }),
3159
+ /* @__PURE__ */ jsx30(Pressable16, { onPress: onSignUpPress, children: /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-bold text-primary-600 dark:text-primary-400", children: "Sign Up" }) })
2619
3160
  ] })
2620
3161
  ] })
2621
3162
  }
@@ -2625,15 +3166,15 @@ var SignInTemplate = ({
2625
3166
  };
2626
3167
 
2627
3168
  // src/templates/auth/SignUpTemplate.tsx
2628
- import * as React24 from "react";
3169
+ import * as React28 from "react";
2629
3170
  import {
2630
- View as View23,
2631
- ScrollView as ScrollView4,
2632
- KeyboardAvoidingView as KeyboardAvoidingView2,
2633
- Platform as Platform2,
2634
- Pressable as Pressable14
3171
+ View as View26,
3172
+ ScrollView as ScrollView6,
3173
+ KeyboardAvoidingView as KeyboardAvoidingView3,
3174
+ Platform as Platform3,
3175
+ Pressable as Pressable17
2635
3176
  } from "react-native";
2636
- import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
3177
+ import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
2637
3178
  var SignUpTemplate = ({
2638
3179
  title = "Create Account",
2639
3180
  subtitle = "Get started with your free Beyond account",
@@ -2646,14 +3187,14 @@ var SignUpTemplate = ({
2646
3187
  error,
2647
3188
  className
2648
3189
  }) => {
2649
- const [fullName, setFullName] = React24.useState("");
2650
- const [email, setEmail] = React24.useState("");
2651
- const [password, setPassword] = React24.useState("");
2652
- const [agreeToTerms, setAgreeToTerms] = React24.useState(false);
2653
- const [nameError, setNameError] = React24.useState();
2654
- const [emailError, setEmailError] = React24.useState();
2655
- const [passwordError, setPasswordError] = React24.useState();
2656
- const [termsError, setTermsError] = React24.useState();
3190
+ const [fullName, setFullName] = React28.useState("");
3191
+ const [email, setEmail] = React28.useState("");
3192
+ const [password, setPassword] = React28.useState("");
3193
+ const [agreeToTerms, setAgreeToTerms] = React28.useState(false);
3194
+ const [nameError, setNameError] = React28.useState();
3195
+ const [emailError, setEmailError] = React28.useState();
3196
+ const [passwordError, setPasswordError] = React28.useState();
3197
+ const [termsError, setTermsError] = React28.useState();
2657
3198
  const handleSubmit = () => {
2658
3199
  let valid = true;
2659
3200
  setNameError(void 0);
@@ -2680,29 +3221,29 @@ var SignUpTemplate = ({
2680
3221
  onSubmit?.({ fullName, email, password, agreeToTerms });
2681
3222
  }
2682
3223
  };
2683
- return /* @__PURE__ */ jsx27(
2684
- KeyboardAvoidingView2,
3224
+ return /* @__PURE__ */ jsx31(
3225
+ KeyboardAvoidingView3,
2685
3226
  {
2686
- behavior: Platform2.OS === "ios" ? "padding" : "height",
3227
+ behavior: Platform3.OS === "ios" ? "padding" : "height",
2687
3228
  style: { flex: 1 },
2688
3229
  className: cn("flex-1 bg-neutral-50 dark:bg-neutral-950", className),
2689
- children: /* @__PURE__ */ jsx27(
2690
- ScrollView4,
3230
+ children: /* @__PURE__ */ jsx31(
3231
+ ScrollView6,
2691
3232
  {
2692
3233
  style: { flex: 1 },
2693
3234
  contentContainerStyle: { flexGrow: 1, justifyContent: "center" },
2694
3235
  className: "px-6 py-8",
2695
3236
  keyboardShouldPersistTaps: "handled",
2696
3237
  showsVerticalScrollIndicator: false,
2697
- children: /* @__PURE__ */ jsxs14(View23, { className: "w-full max-w-md mx-auto gap-6", children: [
2698
- /* @__PURE__ */ jsxs14(View23, { className: "items-center gap-2", children: [
2699
- logo && /* @__PURE__ */ jsx27(View23, { className: "mb-2", children: logo }),
2700
- /* @__PURE__ */ jsx27(Heading, { level: 2, className: "text-3xl font-extrabold text-neutral-900 dark:text-neutral-50 text-center", children: title }),
2701
- /* @__PURE__ */ jsx27(Text2, { className: "text-neutral-500 dark:text-neutral-400 text-center text-base", children: subtitle })
3238
+ children: /* @__PURE__ */ jsxs17(View26, { className: "w-full max-w-md mx-auto gap-6", children: [
3239
+ /* @__PURE__ */ jsxs17(View26, { className: "items-center gap-2", children: [
3240
+ logo && /* @__PURE__ */ jsx31(View26, { className: "mb-2", children: logo }),
3241
+ /* @__PURE__ */ jsx31(Heading, { level: 2, className: "text-3xl font-extrabold text-neutral-900 dark:text-neutral-50 text-center", children: title }),
3242
+ /* @__PURE__ */ jsx31(Text2, { className: "text-neutral-500 dark:text-neutral-400 text-center text-base", children: subtitle })
2702
3243
  ] }),
2703
- error && /* @__PURE__ */ jsx27(Alert, { variant: "danger", children: /* @__PURE__ */ jsx27(AlertDescription, { children: error }) }),
2704
- /* @__PURE__ */ jsxs14(View23, { className: "gap-4", children: [
2705
- /* @__PURE__ */ jsx27(
3244
+ error && /* @__PURE__ */ jsx31(Alert, { variant: "danger", children: /* @__PURE__ */ jsx31(AlertDescription, { children: error }) }),
3245
+ /* @__PURE__ */ jsxs17(View26, { className: "gap-4", children: [
3246
+ /* @__PURE__ */ jsx31(
2706
3247
  Input,
2707
3248
  {
2708
3249
  label: "Full Name",
@@ -2715,7 +3256,7 @@ var SignUpTemplate = ({
2715
3256
  error: nameError
2716
3257
  }
2717
3258
  ),
2718
- /* @__PURE__ */ jsx27(
3259
+ /* @__PURE__ */ jsx31(
2719
3260
  Input,
2720
3261
  {
2721
3262
  label: "Email Address",
@@ -2730,7 +3271,7 @@ var SignUpTemplate = ({
2730
3271
  error: emailError
2731
3272
  }
2732
3273
  ),
2733
- /* @__PURE__ */ jsx27(
3274
+ /* @__PURE__ */ jsx31(
2734
3275
  Input,
2735
3276
  {
2736
3277
  label: "Password",
@@ -2744,9 +3285,9 @@ var SignUpTemplate = ({
2744
3285
  error: passwordError
2745
3286
  }
2746
3287
  ),
2747
- /* @__PURE__ */ jsxs14(View23, { className: "gap-1", children: [
2748
- /* @__PURE__ */ jsxs14(View23, { className: "flex-row items-center gap-2 pt-1", children: [
2749
- /* @__PURE__ */ jsx27(
3288
+ /* @__PURE__ */ jsxs17(View26, { className: "gap-1", children: [
3289
+ /* @__PURE__ */ jsxs17(View26, { className: "flex-row items-center gap-2 pt-1", children: [
3290
+ /* @__PURE__ */ jsx31(
2750
3291
  Checkbox,
2751
3292
  {
2752
3293
  checked: agreeToTerms,
@@ -2756,11 +3297,11 @@ var SignUpTemplate = ({
2756
3297
  }
2757
3298
  }
2758
3299
  ),
2759
- /* @__PURE__ */ jsx27(Text2, { className: "text-sm text-neutral-900 dark:text-neutral-100 flex-1", children: "I agree to the Terms of Service & Privacy Policy" })
3300
+ /* @__PURE__ */ jsx31(Text2, { className: "text-sm text-neutral-900 dark:text-neutral-100 flex-1", children: "I agree to the Terms of Service & Privacy Policy" })
2760
3301
  ] }),
2761
- termsError && /* @__PURE__ */ jsx27(Text2, { className: "text-xs text-danger font-medium", children: termsError })
3302
+ termsError && /* @__PURE__ */ jsx31(Text2, { className: "text-xs text-danger font-medium", children: termsError })
2762
3303
  ] }),
2763
- /* @__PURE__ */ jsx27(
3304
+ /* @__PURE__ */ jsx31(
2764
3305
  Button,
2765
3306
  {
2766
3307
  variant: "primary",
@@ -2772,14 +3313,14 @@ var SignUpTemplate = ({
2772
3313
  }
2773
3314
  )
2774
3315
  ] }),
2775
- (onGooglePress || onApplePress) && /* @__PURE__ */ jsxs14(View23, { className: "gap-4", children: [
2776
- /* @__PURE__ */ jsxs14(View23, { className: "flex-row items-center gap-3", children: [
2777
- /* @__PURE__ */ jsx27(Separator, { className: "flex-1" }),
2778
- /* @__PURE__ */ jsx27(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 uppercase", children: "or continue with" }),
2779
- /* @__PURE__ */ jsx27(Separator, { className: "flex-1" })
3316
+ (onGooglePress || onApplePress) && /* @__PURE__ */ jsxs17(View26, { className: "gap-4", children: [
3317
+ /* @__PURE__ */ jsxs17(View26, { className: "flex-row items-center gap-3", children: [
3318
+ /* @__PURE__ */ jsx31(Separator, { className: "flex-1" }),
3319
+ /* @__PURE__ */ jsx31(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 uppercase", children: "or continue with" }),
3320
+ /* @__PURE__ */ jsx31(Separator, { className: "flex-1" })
2780
3321
  ] }),
2781
- /* @__PURE__ */ jsxs14(View23, { className: "flex-row gap-3", children: [
2782
- onGooglePress && /* @__PURE__ */ jsx27(
3322
+ /* @__PURE__ */ jsxs17(View26, { className: "flex-row gap-3", children: [
3323
+ onGooglePress && /* @__PURE__ */ jsx31(
2783
3324
  Button,
2784
3325
  {
2785
3326
  variant: "outline",
@@ -2788,7 +3329,7 @@ var SignUpTemplate = ({
2788
3329
  children: "Google"
2789
3330
  }
2790
3331
  ),
2791
- onApplePress && /* @__PURE__ */ jsx27(
3332
+ onApplePress && /* @__PURE__ */ jsx31(
2792
3333
  Button,
2793
3334
  {
2794
3335
  variant: "outline",
@@ -2799,9 +3340,9 @@ var SignUpTemplate = ({
2799
3340
  )
2800
3341
  ] })
2801
3342
  ] }),
2802
- onSignInPress && /* @__PURE__ */ jsxs14(View23, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
2803
- /* @__PURE__ */ jsx27(Text2, { className: "text-sm text-neutral-500 dark:text-neutral-400", children: "Already have an account?" }),
2804
- /* @__PURE__ */ jsx27(Pressable14, { onPress: onSignInPress, children: /* @__PURE__ */ jsx27(Text2, { className: "text-sm font-bold text-primary-600 dark:text-primary-400", children: "Sign In" }) })
3343
+ onSignInPress && /* @__PURE__ */ jsxs17(View26, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: [
3344
+ /* @__PURE__ */ jsx31(Text2, { className: "text-sm text-neutral-500 dark:text-neutral-400", children: "Already have an account?" }),
3345
+ /* @__PURE__ */ jsx31(Pressable17, { onPress: onSignInPress, children: /* @__PURE__ */ jsx31(Text2, { className: "text-sm font-bold text-primary-600 dark:text-primary-400", children: "Sign In" }) })
2805
3346
  ] })
2806
3347
  ] })
2807
3348
  }
@@ -2811,15 +3352,15 @@ var SignUpTemplate = ({
2811
3352
  };
2812
3353
 
2813
3354
  // src/templates/auth/ForgotPasswordTemplate.tsx
2814
- import * as React25 from "react";
3355
+ import * as React29 from "react";
2815
3356
  import {
2816
- View as View24,
2817
- ScrollView as ScrollView5,
2818
- KeyboardAvoidingView as KeyboardAvoidingView3,
2819
- Platform as Platform3,
2820
- Pressable as Pressable15
3357
+ View as View27,
3358
+ ScrollView as ScrollView7,
3359
+ KeyboardAvoidingView as KeyboardAvoidingView4,
3360
+ Platform as Platform4,
3361
+ Pressable as Pressable18
2821
3362
  } from "react-native";
2822
- import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
3363
+ import { jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
2823
3364
  var ForgotPasswordTemplate = ({
2824
3365
  title = "Reset Password",
2825
3366
  subtitle = "Enter your email address and we'll send you recovery instructions",
@@ -2830,8 +3371,8 @@ var ForgotPasswordTemplate = ({
2830
3371
  error,
2831
3372
  className
2832
3373
  }) => {
2833
- const [email, setEmail] = React25.useState("");
2834
- const [emailError, setEmailError] = React25.useState();
3374
+ const [email, setEmail] = React29.useState("");
3375
+ const [emailError, setEmailError] = React29.useState();
2835
3376
  const handleSubmit = () => {
2836
3377
  if (!email || !email.includes("@")) {
2837
3378
  setEmailError("Please enter a valid email address");
@@ -2840,31 +3381,31 @@ var ForgotPasswordTemplate = ({
2840
3381
  setEmailError(void 0);
2841
3382
  onSubmit?.({ email });
2842
3383
  };
2843
- return /* @__PURE__ */ jsx28(
2844
- KeyboardAvoidingView3,
3384
+ return /* @__PURE__ */ jsx32(
3385
+ KeyboardAvoidingView4,
2845
3386
  {
2846
- behavior: Platform3.OS === "ios" ? "padding" : "height",
3387
+ behavior: Platform4.OS === "ios" ? "padding" : "height",
2847
3388
  style: { flex: 1 },
2848
3389
  className: cn("flex-1 bg-neutral-50 dark:bg-neutral-950", className),
2849
- children: /* @__PURE__ */ jsx28(
2850
- ScrollView5,
3390
+ children: /* @__PURE__ */ jsx32(
3391
+ ScrollView7,
2851
3392
  {
2852
3393
  style: { flex: 1 },
2853
3394
  contentContainerStyle: { flexGrow: 1, justifyContent: "center" },
2854
3395
  className: "px-6 py-8",
2855
3396
  keyboardShouldPersistTaps: "handled",
2856
3397
  showsVerticalScrollIndicator: false,
2857
- children: /* @__PURE__ */ jsxs15(View24, { className: "w-full max-w-md mx-auto gap-6", children: [
2858
- /* @__PURE__ */ jsxs15(View24, { className: "items-center gap-2", children: [
2859
- /* @__PURE__ */ jsx28(Heading, { level: 2, className: "text-3xl font-extrabold text-neutral-900 dark:text-neutral-50 text-center", children: title }),
2860
- /* @__PURE__ */ jsx28(Text2, { className: "text-neutral-500 dark:text-neutral-400 text-center text-base", children: subtitle })
3398
+ children: /* @__PURE__ */ jsxs18(View27, { className: "w-full max-w-md mx-auto gap-6", children: [
3399
+ /* @__PURE__ */ jsxs18(View27, { className: "items-center gap-2", children: [
3400
+ /* @__PURE__ */ jsx32(Heading, { level: 2, className: "text-3xl font-extrabold text-neutral-900 dark:text-neutral-50 text-center", children: title }),
3401
+ /* @__PURE__ */ jsx32(Text2, { className: "text-neutral-500 dark:text-neutral-400 text-center text-base", children: subtitle })
2861
3402
  ] }),
2862
- error && /* @__PURE__ */ jsx28(Alert, { variant: "danger", children: /* @__PURE__ */ jsx28(AlertDescription, { children: error }) }),
2863
- isSuccess ? /* @__PURE__ */ jsxs15(View24, { className: "gap-4", children: [
2864
- /* @__PURE__ */ jsx28(Alert, { variant: "success", children: /* @__PURE__ */ jsx28(AlertDescription, { children: "Password reset link sent! Check your email inbox." }) }),
2865
- onBackToSignIn && /* @__PURE__ */ jsx28(Button, { variant: "primary", size: "lg", onPress: onBackToSignIn, children: "Back to Sign In" })
2866
- ] }) : /* @__PURE__ */ jsxs15(View24, { className: "gap-4", children: [
2867
- /* @__PURE__ */ jsx28(
3403
+ error && /* @__PURE__ */ jsx32(Alert, { variant: "danger", children: /* @__PURE__ */ jsx32(AlertDescription, { children: error }) }),
3404
+ isSuccess ? /* @__PURE__ */ jsxs18(View27, { className: "gap-4", children: [
3405
+ /* @__PURE__ */ jsx32(Alert, { variant: "success", children: /* @__PURE__ */ jsx32(AlertDescription, { children: "Password reset link sent! Check your email inbox." }) }),
3406
+ onBackToSignIn && /* @__PURE__ */ jsx32(Button, { variant: "primary", size: "lg", onPress: onBackToSignIn, children: "Back to Sign In" })
3407
+ ] }) : /* @__PURE__ */ jsxs18(View27, { className: "gap-4", children: [
3408
+ /* @__PURE__ */ jsx32(
2868
3409
  Input,
2869
3410
  {
2870
3411
  label: "Email Address",
@@ -2879,7 +3420,7 @@ var ForgotPasswordTemplate = ({
2879
3420
  error: emailError
2880
3421
  }
2881
3422
  ),
2882
- /* @__PURE__ */ jsx28(
3423
+ /* @__PURE__ */ jsx32(
2883
3424
  Button,
2884
3425
  {
2885
3426
  variant: "primary",
@@ -2890,7 +3431,7 @@ var ForgotPasswordTemplate = ({
2890
3431
  children: "Send Reset Link"
2891
3432
  }
2892
3433
  ),
2893
- onBackToSignIn && /* @__PURE__ */ jsx28(View24, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: /* @__PURE__ */ jsx28(Pressable15, { onPress: onBackToSignIn, children: /* @__PURE__ */ jsx28(Text2, { className: "text-sm font-semibold text-primary-600 dark:text-primary-400", children: "Back to Sign In" }) }) })
3434
+ onBackToSignIn && /* @__PURE__ */ jsx32(View27, { className: "flex-row justify-center items-center gap-1.5 pt-2", children: /* @__PURE__ */ jsx32(Pressable18, { onPress: onBackToSignIn, children: /* @__PURE__ */ jsx32(Text2, { className: "text-sm font-semibold text-primary-600 dark:text-primary-400", children: "Back to Sign In" }) }) })
2894
3435
  ] })
2895
3436
  ] })
2896
3437
  }
@@ -2901,11 +3442,11 @@ var ForgotPasswordTemplate = ({
2901
3442
 
2902
3443
  // src/templates/dashboard/DashboardTemplate.tsx
2903
3444
  import {
2904
- View as View25,
2905
- ScrollView as ScrollView6,
2906
- Pressable as Pressable16
3445
+ View as View28,
3446
+ ScrollView as ScrollView8,
3447
+ Pressable as Pressable19
2907
3448
  } from "react-native";
2908
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
3449
+ import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
2909
3450
  var DashboardTemplate = ({
2910
3451
  userName,
2911
3452
  userRole = "Administrator",
@@ -2919,8 +3460,8 @@ var DashboardTemplate = ({
2919
3460
  className,
2920
3461
  ...props
2921
3462
  }) => {
2922
- return /* @__PURE__ */ jsxs16(
2923
- ScrollView6,
3463
+ return /* @__PURE__ */ jsxs19(
3464
+ ScrollView8,
2924
3465
  {
2925
3466
  ...props,
2926
3467
  style: [{ flex: 1 }, props.style],
@@ -2928,43 +3469,43 @@ var DashboardTemplate = ({
2928
3469
  contentContainerStyle: { paddingBottom: 40 },
2929
3470
  showsVerticalScrollIndicator: false,
2930
3471
  children: [
2931
- /* @__PURE__ */ jsxs16(View25, { className: "px-6 pt-6 pb-4 flex-row items-center justify-between border-b border-neutral-200 dark:border-neutral-800", children: [
2932
- /* @__PURE__ */ jsxs16(View25, { className: "flex-row items-center gap-3", children: [
2933
- /* @__PURE__ */ jsxs16(Avatar, { size: "lg", children: [
2934
- userAvatarUrl && /* @__PURE__ */ jsx29(AvatarImage, { source: { uri: userAvatarUrl } }),
2935
- /* @__PURE__ */ jsx29(AvatarFallback, { text: userName.slice(0, 2).toUpperCase() })
3472
+ /* @__PURE__ */ jsxs19(View28, { className: "px-6 pt-6 pb-4 flex-row items-center justify-between border-b border-neutral-200 dark:border-neutral-800", children: [
3473
+ /* @__PURE__ */ jsxs19(View28, { className: "flex-row items-center gap-3", children: [
3474
+ /* @__PURE__ */ jsxs19(Avatar, { size: "lg", children: [
3475
+ userAvatarUrl && /* @__PURE__ */ jsx33(AvatarImage, { source: { uri: userAvatarUrl } }),
3476
+ /* @__PURE__ */ jsx33(AvatarFallback, { text: userName.slice(0, 2).toUpperCase() })
2936
3477
  ] }),
2937
- /* @__PURE__ */ jsxs16(View25, { children: [
2938
- /* @__PURE__ */ jsx29(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 font-medium uppercase tracking-wider", children: userRole }),
2939
- /* @__PURE__ */ jsxs16(Heading, { level: 3, className: "text-xl font-bold text-neutral-900 dark:text-neutral-50", children: [
3478
+ /* @__PURE__ */ jsxs19(View28, { children: [
3479
+ /* @__PURE__ */ jsx33(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400 font-medium uppercase tracking-wider", children: userRole }),
3480
+ /* @__PURE__ */ jsxs19(Heading, { level: 3, className: "text-xl font-bold text-neutral-900 dark:text-neutral-50", children: [
2940
3481
  "Hello, ",
2941
3482
  userName,
2942
3483
  " \u{1F44B}"
2943
3484
  ] })
2944
3485
  ] })
2945
3486
  ] }),
2946
- onNotificationPress && /* @__PURE__ */ jsxs16(
2947
- Pressable16,
3487
+ onNotificationPress && /* @__PURE__ */ jsxs19(
3488
+ Pressable19,
2948
3489
  {
2949
3490
  onPress: onNotificationPress,
2950
3491
  className: "w-10 h-10 rounded-full border border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900 items-center justify-center relative active:opacity-70",
2951
3492
  children: [
2952
- /* @__PURE__ */ jsx29(Text2, { className: "text-base text-neutral-900 dark:text-neutral-100", children: "\u{1F514}" }),
2953
- unreadNotificationsCount > 0 && /* @__PURE__ */ jsx29(View25, { className: "absolute -top-1 -right-1 w-5 h-5 rounded-full bg-danger items-center justify-center", children: /* @__PURE__ */ jsx29(Text2, { className: "text-[10px] font-bold text-white", children: unreadNotificationsCount > 9 ? "9+" : unreadNotificationsCount }) })
3493
+ /* @__PURE__ */ jsx33(Text2, { className: "text-base text-neutral-900 dark:text-neutral-100", children: "\u{1F514}" }),
3494
+ unreadNotificationsCount > 0 && /* @__PURE__ */ jsx33(View28, { className: "absolute -top-1 -right-1 w-5 h-5 rounded-full bg-danger items-center justify-center", children: /* @__PURE__ */ jsx33(Text2, { className: "text-[10px] font-bold text-white", children: unreadNotificationsCount > 9 ? "9+" : unreadNotificationsCount }) })
2954
3495
  ]
2955
3496
  }
2956
3497
  )
2957
3498
  ] }),
2958
- /* @__PURE__ */ jsxs16(View25, { className: "px-6 pt-6 gap-6", children: [
2959
- quickActions && quickActions.length > 0 && /* @__PURE__ */ jsxs16(View25, { className: "gap-2", children: [
2960
- /* @__PURE__ */ jsx29(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider", children: "Quick Actions" }),
2961
- /* @__PURE__ */ jsx29(
2962
- ScrollView6,
3499
+ /* @__PURE__ */ jsxs19(View28, { className: "px-6 pt-6 gap-6", children: [
3500
+ quickActions && quickActions.length > 0 && /* @__PURE__ */ jsxs19(View28, { className: "gap-2", children: [
3501
+ /* @__PURE__ */ jsx33(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider", children: "Quick Actions" }),
3502
+ /* @__PURE__ */ jsx33(
3503
+ ScrollView8,
2963
3504
  {
2964
3505
  horizontal: true,
2965
3506
  showsHorizontalScrollIndicator: false,
2966
3507
  className: "-mx-6 px-6",
2967
- children: /* @__PURE__ */ jsx29(View25, { className: "flex-row gap-3", children: quickActions.map((action) => /* @__PURE__ */ jsx29(
3508
+ children: /* @__PURE__ */ jsx33(View28, { className: "flex-row gap-3", children: quickActions.map((action) => /* @__PURE__ */ jsx33(
2968
3509
  Button,
2969
3510
  {
2970
3511
  variant: "outline",
@@ -2977,42 +3518,42 @@ var DashboardTemplate = ({
2977
3518
  }
2978
3519
  )
2979
3520
  ] }),
2980
- /* @__PURE__ */ jsxs16(View25, { className: "gap-3", children: [
2981
- /* @__PURE__ */ jsx29(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider", children: "Overview Performance" }),
2982
- /* @__PURE__ */ jsx29(View25, { className: "gap-3", children: metrics.map((metric) => /* @__PURE__ */ jsx29(StatsCard, { ...metric }, metric.id)) })
3521
+ /* @__PURE__ */ jsxs19(View28, { className: "gap-3", children: [
3522
+ /* @__PURE__ */ jsx33(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider", children: "Overview Performance" }),
3523
+ /* @__PURE__ */ jsx33(View28, { className: "gap-3", children: metrics.map((metric) => /* @__PURE__ */ jsx33(StatsCard, { ...metric }, metric.id)) })
2983
3524
  ] }),
2984
- recentActivities && recentActivities.length > 0 && /* @__PURE__ */ jsxs16(Card, { className: "gap-2", children: [
2985
- /* @__PURE__ */ jsxs16(CardHeader, { className: "flex-row items-center justify-between pb-2", children: [
2986
- /* @__PURE__ */ jsx29(CardTitle, { className: "text-base font-bold", children: "Recent Activity" }),
2987
- onViewAllActivities && /* @__PURE__ */ jsx29(Pressable16, { onPress: onViewAllActivities, children: /* @__PURE__ */ jsx29(Text2, { className: "text-xs font-semibold text-primary-600 dark:text-primary-400", children: "View all" }) })
3525
+ recentActivities && recentActivities.length > 0 && /* @__PURE__ */ jsxs19(Card, { className: "gap-2", children: [
3526
+ /* @__PURE__ */ jsxs19(CardHeader, { className: "flex-row items-center justify-between pb-2", children: [
3527
+ /* @__PURE__ */ jsx33(CardTitle, { className: "text-base font-bold", children: "Recent Activity" }),
3528
+ onViewAllActivities && /* @__PURE__ */ jsx33(Pressable19, { onPress: onViewAllActivities, children: /* @__PURE__ */ jsx33(Text2, { className: "text-xs font-semibold text-primary-600 dark:text-primary-400", children: "View all" }) })
2988
3529
  ] }),
2989
- /* @__PURE__ */ jsx29(CardContent, { className: "gap-3 pt-0", children: recentActivities.map((act) => /* @__PURE__ */ jsxs16(
2990
- View25,
3530
+ /* @__PURE__ */ jsx33(CardContent, { className: "gap-3 pt-0", children: recentActivities.map((act) => /* @__PURE__ */ jsxs19(
3531
+ View28,
2991
3532
  {
2992
3533
  className: "flex-row items-center justify-between py-2 border-b border-neutral-200 dark:border-neutral-800 last:border-b-0",
2993
3534
  children: [
2994
- /* @__PURE__ */ jsxs16(View25, { className: "flex-row items-center gap-3 flex-1 pr-2", children: [
2995
- /* @__PURE__ */ jsxs16(Avatar, { size: "sm", children: [
2996
- act.avatarUrl && /* @__PURE__ */ jsx29(AvatarImage, { source: { uri: act.avatarUrl } }),
2997
- /* @__PURE__ */ jsx29(
3535
+ /* @__PURE__ */ jsxs19(View28, { className: "flex-row items-center gap-3 flex-1 pr-2", children: [
3536
+ /* @__PURE__ */ jsxs19(Avatar, { size: "sm", children: [
3537
+ act.avatarUrl && /* @__PURE__ */ jsx33(AvatarImage, { source: { uri: act.avatarUrl } }),
3538
+ /* @__PURE__ */ jsx33(
2998
3539
  AvatarFallback,
2999
3540
  {
3000
3541
  text: act.avatarInitials || act.title.slice(0, 2).toUpperCase()
3001
3542
  }
3002
3543
  )
3003
3544
  ] }),
3004
- /* @__PURE__ */ jsxs16(View25, { className: "flex-1", children: [
3005
- /* @__PURE__ */ jsx29(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", numberOfLines: 1, children: act.title }),
3006
- /* @__PURE__ */ jsxs16(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", numberOfLines: 1, children: [
3545
+ /* @__PURE__ */ jsxs19(View28, { className: "flex-1", children: [
3546
+ /* @__PURE__ */ jsx33(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", numberOfLines: 1, children: act.title }),
3547
+ /* @__PURE__ */ jsxs19(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", numberOfLines: 1, children: [
3007
3548
  act.subtitle,
3008
3549
  " \u2022 ",
3009
3550
  act.timestamp
3010
3551
  ] })
3011
3552
  ] })
3012
3553
  ] }),
3013
- /* @__PURE__ */ jsxs16(View25, { className: "items-end gap-1", children: [
3014
- act.amount && /* @__PURE__ */ jsx29(Text2, { className: "text-sm font-bold text-neutral-900 dark:text-neutral-100", children: act.amount }),
3015
- act.status && /* @__PURE__ */ jsx29(Badge, { variant: act.status.variant, size: "sm", children: act.status.label })
3554
+ /* @__PURE__ */ jsxs19(View28, { className: "items-end gap-1", children: [
3555
+ act.amount && /* @__PURE__ */ jsx33(Text2, { className: "text-sm font-bold text-neutral-900 dark:text-neutral-100", children: act.amount }),
3556
+ act.status && /* @__PURE__ */ jsx33(Badge, { variant: act.status.variant, size: "sm", children: act.status.label })
3016
3557
  ] })
3017
3558
  ]
3018
3559
  },
@@ -3027,11 +3568,11 @@ var DashboardTemplate = ({
3027
3568
 
3028
3569
  // src/templates/settings/SettingsTemplate.tsx
3029
3570
  import {
3030
- View as View26,
3031
- ScrollView as ScrollView7,
3032
- Pressable as Pressable17
3571
+ View as View29,
3572
+ ScrollView as ScrollView9,
3573
+ Pressable as Pressable20
3033
3574
  } from "react-native";
3034
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
3575
+ import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
3035
3576
  var SettingsTemplate = ({
3036
3577
  user,
3037
3578
  pushNotifications = true,
@@ -3051,39 +3592,39 @@ var SettingsTemplate = ({
3051
3592
  className,
3052
3593
  ...props
3053
3594
  }) => {
3054
- return /* @__PURE__ */ jsx30(
3055
- ScrollView7,
3595
+ return /* @__PURE__ */ jsx34(
3596
+ ScrollView9,
3056
3597
  {
3057
3598
  ...props,
3058
3599
  style: [{ flex: 1 }, props.style],
3059
3600
  className: cn("flex-1 bg-neutral-50 dark:bg-neutral-950", className),
3060
3601
  contentContainerStyle: { paddingBottom: 40 },
3061
3602
  showsVerticalScrollIndicator: false,
3062
- children: /* @__PURE__ */ jsxs17(View26, { className: "px-6 pt-6 gap-6", children: [
3063
- /* @__PURE__ */ jsx30(Heading, { level: 2, className: "text-2xl font-bold text-neutral-900 dark:text-neutral-50", children: "Settings & Profile" }),
3064
- /* @__PURE__ */ jsxs17(Card, { className: "p-4 flex-row items-center gap-4", children: [
3065
- /* @__PURE__ */ jsxs17(Avatar, { size: "lg", children: [
3066
- user.avatarUrl && /* @__PURE__ */ jsx30(AvatarImage, { source: { uri: user.avatarUrl } }),
3067
- /* @__PURE__ */ jsx30(AvatarFallback, { text: user.name.slice(0, 2).toUpperCase() })
3603
+ children: /* @__PURE__ */ jsxs20(View29, { className: "px-6 pt-6 gap-6", children: [
3604
+ /* @__PURE__ */ jsx34(Heading, { level: 2, className: "text-2xl font-bold text-neutral-900 dark:text-neutral-50", children: "Settings & Profile" }),
3605
+ /* @__PURE__ */ jsxs20(Card, { className: "p-4 flex-row items-center gap-4", children: [
3606
+ /* @__PURE__ */ jsxs20(Avatar, { size: "lg", children: [
3607
+ user.avatarUrl && /* @__PURE__ */ jsx34(AvatarImage, { source: { uri: user.avatarUrl } }),
3608
+ /* @__PURE__ */ jsx34(AvatarFallback, { text: user.name.slice(0, 2).toUpperCase() })
3068
3609
  ] }),
3069
- /* @__PURE__ */ jsxs17(View26, { className: "flex-1", children: [
3070
- /* @__PURE__ */ jsxs17(View26, { className: "flex-row items-center gap-2", children: [
3071
- /* @__PURE__ */ jsx30(Text2, { className: "text-base font-bold text-neutral-900 dark:text-neutral-100", children: user.name }),
3072
- user.plan && /* @__PURE__ */ jsx30(Badge, { variant: "primary", size: "sm", children: user.plan })
3610
+ /* @__PURE__ */ jsxs20(View29, { className: "flex-1", children: [
3611
+ /* @__PURE__ */ jsxs20(View29, { className: "flex-row items-center gap-2", children: [
3612
+ /* @__PURE__ */ jsx34(Text2, { className: "text-base font-bold text-neutral-900 dark:text-neutral-100", children: user.name }),
3613
+ user.plan && /* @__PURE__ */ jsx34(Badge, { variant: "primary", size: "sm", children: user.plan })
3073
3614
  ] }),
3074
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: user.email })
3615
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: user.email })
3075
3616
  ] }),
3076
- onEditProfile && /* @__PURE__ */ jsx30(Button, { variant: "outline", size: "sm", onPress: onEditProfile, children: "Edit" })
3617
+ onEditProfile && /* @__PURE__ */ jsx34(Button, { variant: "outline", size: "sm", onPress: onEditProfile, children: "Edit" })
3077
3618
  ] }),
3078
- /* @__PURE__ */ jsxs17(View26, { className: "gap-2", children: [
3079
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider px-1", children: "Preferences" }),
3080
- /* @__PURE__ */ jsxs17(Card, { className: "divide-y divide-neutral-200 dark:divide-neutral-800", children: [
3081
- /* @__PURE__ */ jsxs17(View26, { className: "p-4 flex-row items-center justify-between", children: [
3082
- /* @__PURE__ */ jsxs17(View26, { className: "pr-4 flex-1", children: [
3083
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Push Notifications" }),
3084
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Receive real-time alerts on your mobile device" })
3619
+ /* @__PURE__ */ jsxs20(View29, { className: "gap-2", children: [
3620
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider px-1", children: "Preferences" }),
3621
+ /* @__PURE__ */ jsxs20(Card, { className: "divide-y divide-neutral-200 dark:divide-neutral-800", children: [
3622
+ /* @__PURE__ */ jsxs20(View29, { className: "p-4 flex-row items-center justify-between", children: [
3623
+ /* @__PURE__ */ jsxs20(View29, { className: "pr-4 flex-1", children: [
3624
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Push Notifications" }),
3625
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Receive real-time alerts on your mobile device" })
3085
3626
  ] }),
3086
- /* @__PURE__ */ jsx30(
3627
+ /* @__PURE__ */ jsx34(
3087
3628
  Switch,
3088
3629
  {
3089
3630
  checked: pushNotifications,
@@ -3091,12 +3632,12 @@ var SettingsTemplate = ({
3091
3632
  }
3092
3633
  )
3093
3634
  ] }),
3094
- /* @__PURE__ */ jsxs17(View26, { className: "p-4 flex-row items-center justify-between", children: [
3095
- /* @__PURE__ */ jsxs17(View26, { className: "pr-4 flex-1", children: [
3096
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Email Notifications" }),
3097
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Weekly digests and activity summaries" })
3635
+ /* @__PURE__ */ jsxs20(View29, { className: "p-4 flex-row items-center justify-between", children: [
3636
+ /* @__PURE__ */ jsxs20(View29, { className: "pr-4 flex-1", children: [
3637
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Email Notifications" }),
3638
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Weekly digests and activity summaries" })
3098
3639
  ] }),
3099
- /* @__PURE__ */ jsx30(
3640
+ /* @__PURE__ */ jsx34(
3100
3641
  Switch,
3101
3642
  {
3102
3643
  checked: emailNotifications,
@@ -3104,19 +3645,19 @@ var SettingsTemplate = ({
3104
3645
  }
3105
3646
  )
3106
3647
  ] }),
3107
- /* @__PURE__ */ jsxs17(View26, { className: "p-4 flex-row items-center justify-between", children: [
3108
- /* @__PURE__ */ jsxs17(View26, { className: "pr-4 flex-1", children: [
3109
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Dark Theme" }),
3110
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Enable high contrast dark mode appearance" })
3648
+ /* @__PURE__ */ jsxs20(View29, { className: "p-4 flex-row items-center justify-between", children: [
3649
+ /* @__PURE__ */ jsxs20(View29, { className: "pr-4 flex-1", children: [
3650
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Dark Theme" }),
3651
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Enable high contrast dark mode appearance" })
3111
3652
  ] }),
3112
- /* @__PURE__ */ jsx30(Switch, { checked: isDarkMode, onCheckedChange: onToggleDarkMode })
3653
+ /* @__PURE__ */ jsx34(Switch, { checked: isDarkMode, onCheckedChange: onToggleDarkMode })
3113
3654
  ] }),
3114
- /* @__PURE__ */ jsxs17(View26, { className: "p-4 flex-row items-center justify-between", children: [
3115
- /* @__PURE__ */ jsxs17(View26, { className: "pr-4 flex-1", children: [
3116
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Biometric Login" }),
3117
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Use Face ID or fingerprint to authenticate" })
3655
+ /* @__PURE__ */ jsxs20(View29, { className: "p-4 flex-row items-center justify-between", children: [
3656
+ /* @__PURE__ */ jsxs20(View29, { className: "pr-4 flex-1", children: [
3657
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Biometric Login" }),
3658
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs text-neutral-500 dark:text-neutral-400", children: "Use Face ID or fingerprint to authenticate" })
3118
3659
  ] }),
3119
- /* @__PURE__ */ jsx30(
3660
+ /* @__PURE__ */ jsx34(
3120
3661
  Switch,
3121
3662
  {
3122
3663
  checked: biometricsEnabled,
@@ -3126,47 +3667,47 @@ var SettingsTemplate = ({
3126
3667
  ] })
3127
3668
  ] })
3128
3669
  ] }),
3129
- /* @__PURE__ */ jsxs17(View26, { className: "gap-2", children: [
3130
- /* @__PURE__ */ jsx30(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider px-1", children: "Account & Security" }),
3131
- /* @__PURE__ */ jsxs17(Card, { className: "divide-y divide-neutral-200 dark:divide-neutral-800", children: [
3132
- onChangePassword && /* @__PURE__ */ jsxs17(
3133
- Pressable17,
3670
+ /* @__PURE__ */ jsxs20(View29, { className: "gap-2", children: [
3671
+ /* @__PURE__ */ jsx34(Text2, { className: "text-xs font-bold text-neutral-500 dark:text-neutral-400 uppercase tracking-wider px-1", children: "Account & Security" }),
3672
+ /* @__PURE__ */ jsxs20(Card, { className: "divide-y divide-neutral-200 dark:divide-neutral-800", children: [
3673
+ onChangePassword && /* @__PURE__ */ jsxs20(
3674
+ Pressable20,
3134
3675
  {
3135
3676
  onPress: onChangePassword,
3136
3677
  className: "p-4 flex-row items-center justify-between active:bg-neutral-100 dark:active:bg-neutral-800",
3137
3678
  children: [
3138
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Change Password" }),
3139
- /* @__PURE__ */ jsx30(Text2, { className: "text-neutral-400 dark:text-neutral-500 text-xs", children: "\u203A" })
3679
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Change Password" }),
3680
+ /* @__PURE__ */ jsx34(Text2, { className: "text-neutral-400 dark:text-neutral-500 text-xs", children: "\u203A" })
3140
3681
  ]
3141
3682
  }
3142
3683
  ),
3143
- onViewTerms && /* @__PURE__ */ jsxs17(
3144
- Pressable17,
3684
+ onViewTerms && /* @__PURE__ */ jsxs20(
3685
+ Pressable20,
3145
3686
  {
3146
3687
  onPress: onViewTerms,
3147
3688
  className: "p-4 flex-row items-center justify-between active:bg-neutral-100 dark:active:bg-neutral-800",
3148
3689
  children: [
3149
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Terms of Service" }),
3150
- /* @__PURE__ */ jsx30(Text2, { className: "text-neutral-400 dark:text-neutral-500 text-xs", children: "\u203A" })
3690
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Terms of Service" }),
3691
+ /* @__PURE__ */ jsx34(Text2, { className: "text-neutral-400 dark:text-neutral-500 text-xs", children: "\u203A" })
3151
3692
  ]
3152
3693
  }
3153
3694
  ),
3154
- onViewPrivacy && /* @__PURE__ */ jsxs17(
3155
- Pressable17,
3695
+ onViewPrivacy && /* @__PURE__ */ jsxs20(
3696
+ Pressable20,
3156
3697
  {
3157
3698
  onPress: onViewPrivacy,
3158
3699
  className: "p-4 flex-row items-center justify-between active:bg-neutral-100 dark:active:bg-neutral-800",
3159
3700
  children: [
3160
- /* @__PURE__ */ jsx30(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Privacy Policy" }),
3161
- /* @__PURE__ */ jsx30(Text2, { className: "text-neutral-400 dark:text-neutral-500 text-xs", children: "\u203A" })
3701
+ /* @__PURE__ */ jsx34(Text2, { className: "text-sm font-semibold text-neutral-900 dark:text-neutral-100", children: "Privacy Policy" }),
3702
+ /* @__PURE__ */ jsx34(Text2, { className: "text-neutral-400 dark:text-neutral-500 text-xs", children: "\u203A" })
3162
3703
  ]
3163
3704
  }
3164
3705
  )
3165
3706
  ] })
3166
3707
  ] }),
3167
- /* @__PURE__ */ jsxs17(View26, { className: "gap-3 pt-2", children: [
3168
- onLogout && /* @__PURE__ */ jsx30(Button, { variant: "outline", size: "lg", onPress: onLogout, children: "Log Out" }),
3169
- onDeleteAccount && /* @__PURE__ */ jsx30(
3708
+ /* @__PURE__ */ jsxs20(View29, { className: "gap-3 pt-2", children: [
3709
+ onLogout && /* @__PURE__ */ jsx34(Button, { variant: "outline", size: "lg", onPress: onLogout, children: "Log Out" }),
3710
+ onDeleteAccount && /* @__PURE__ */ jsx34(
3170
3711
  Button,
3171
3712
  {
3172
3713
  variant: "destructive",
@@ -3180,119 +3721,6 @@ var SettingsTemplate = ({
3180
3721
  }
3181
3722
  );
3182
3723
  };
3183
-
3184
- // src/providers/BeyondUIProvider.tsx
3185
- import * as React26 from "react";
3186
- import { View as View27, useColorScheme as useRNColorScheme } from "react-native";
3187
- import { colorScheme as nwColorScheme } from "nativewind";
3188
- import { PortalHost } from "@rn-primitives/portal";
3189
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
3190
- if (typeof __DEV__ !== "undefined" && __DEV__) {
3191
- try {
3192
- const { LogBox } = __require("react-native");
3193
- LogBox?.ignoreLogs?.([
3194
- "You are setting the style `{ shadowOffset: ... }` as a prop",
3195
- "You are setting the style"
3196
- ]);
3197
- if (!Boolean(console.error?.__beyond_ui_filtered)) {
3198
- const originalError = console.error;
3199
- const filteredError = (...args) => {
3200
- const fullMessage = args.map((arg) => typeof arg === "string" ? arg : "").join(" ");
3201
- if (fullMessage.includes("shadowOffset") || fullMessage.includes("You are setting the style")) {
3202
- return;
3203
- }
3204
- originalError(...args);
3205
- };
3206
- filteredError.__beyond_ui_filtered = true;
3207
- console.error = filteredError;
3208
- }
3209
- } catch (_) {
3210
- }
3211
- }
3212
- var BeyondUIContext = React26.createContext({
3213
- colorScheme: "light",
3214
- setColorScheme: () => {
3215
- },
3216
- toggleColorScheme: () => {
3217
- }
3218
- });
3219
- function useBeyondUI() {
3220
- return React26.useContext(BeyondUIContext);
3221
- }
3222
- function BeyondUIProvider({
3223
- children,
3224
- defaultColorScheme = "system"
3225
- }) {
3226
- const systemScheme = useRNColorScheme() ?? "light";
3227
- const [selectedScheme, setSelectedScheme] = React26.useState(defaultColorScheme);
3228
- const [toasts, setToasts] = React26.useState([]);
3229
- const activeScheme = selectedScheme === "system" ? systemScheme : selectedScheme;
3230
- React26.useEffect(() => {
3231
- try {
3232
- nwColorScheme.set(selectedScheme === "system" ? "system" : activeScheme);
3233
- } catch (_) {
3234
- }
3235
- }, [selectedScheme, activeScheme]);
3236
- const handleSetColorScheme = React26.useCallback((scheme) => {
3237
- setSelectedScheme(scheme);
3238
- try {
3239
- nwColorScheme.set(scheme === "system" ? "system" : scheme);
3240
- } catch (_) {
3241
- }
3242
- }, []);
3243
- const toggleColorScheme = React26.useCallback(() => {
3244
- setSelectedScheme((prev) => {
3245
- const current = prev === "system" ? systemScheme : prev;
3246
- const next = current === "dark" ? "light" : "dark";
3247
- try {
3248
- nwColorScheme.set(next);
3249
- } catch (_) {
3250
- }
3251
- return next;
3252
- });
3253
- }, [systemScheme]);
3254
- const dismissToast = React26.useCallback((id) => {
3255
- setToasts((prev) => prev.filter((t) => t.id !== id));
3256
- }, []);
3257
- const showToast = React26.useCallback((toast) => {
3258
- const id = Math.random().toString(36).substring(2, 9);
3259
- setToasts((prev) => [...prev, { ...toast, id }]);
3260
- return id;
3261
- }, []);
3262
- const toastContextValue = React26.useMemo(
3263
- () => ({
3264
- toasts,
3265
- show: showToast,
3266
- dismiss: dismissToast,
3267
- success: (title, description) => showToast({ title, description, variant: "success" }),
3268
- danger: (title, description) => showToast({ title, description, variant: "danger" }),
3269
- error: (title, description) => showToast({ title, description, variant: "danger" }),
3270
- warning: (title, description) => showToast({ title, description, variant: "warning" }),
3271
- info: (title, description) => showToast({ title, description, variant: "info" })
3272
- }),
3273
- [toasts, showToast, dismissToast]
3274
- );
3275
- const contextValue = React26.useMemo(
3276
- () => ({
3277
- colorScheme: activeScheme,
3278
- setColorScheme: handleSetColorScheme,
3279
- toggleColorScheme
3280
- }),
3281
- [activeScheme, handleSetColorScheme, toggleColorScheme]
3282
- );
3283
- return /* @__PURE__ */ jsx31(BeyondUIContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx31(ToastContext.Provider, { value: toastContextValue, children: /* @__PURE__ */ jsxs18(
3284
- View27,
3285
- {
3286
- style: { flex: 1 },
3287
- className: activeScheme === "dark" ? "dark flex-1 bg-neutral-950" : "flex-1 bg-white",
3288
- children: [
3289
- children,
3290
- /* @__PURE__ */ jsx31(PortalHost, {}),
3291
- /* @__PURE__ */ jsx31(ToastContainer, { toasts, onDismiss: dismissToast })
3292
- ]
3293
- }
3294
- ) }) });
3295
- }
3296
3724
  export {
3297
3725
  Accordion,
3298
3726
  AccordionContent,
@@ -3326,6 +3754,7 @@ export {
3326
3754
  CardHeader,
3327
3755
  CardTitle,
3328
3756
  Checkbox,
3757
+ DashboardLayout,
3329
3758
  DashboardTemplate,
3330
3759
  DataTable,
3331
3760
  Dialog,
@@ -3342,6 +3771,14 @@ export {
3342
3771
  ForgotPasswordTemplate,
3343
3772
  Heading,
3344
3773
  Input,
3774
+ Modal4 as Modal,
3775
+ ModalContent,
3776
+ ModalContext,
3777
+ ModalDescription,
3778
+ ModalFooter,
3779
+ ModalHeader,
3780
+ ModalTitle,
3781
+ NightModeSwitch,
3345
3782
  Pressable,
3346
3783
  Radio,
3347
3784
  RadioGroup,
@@ -3384,10 +3821,13 @@ export {
3384
3821
  headingVariants,
3385
3822
  inputVariants,
3386
3823
  joinA11yLabels,
3824
+ modalVariants,
3825
+ nightModeSwitchVariants,
3387
3826
  textVariants,
3388
3827
  tokens,
3389
3828
  useBeyondUI,
3390
3829
  useDialogContext,
3830
+ useModalContext,
3391
3831
  useTabsContext,
3392
3832
  useToast
3393
3833
  };