@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/{chunk-2B6HTSGM.mjs → chunk-RNHEGFYR.mjs} +16 -2
- package/dist/chunk-RNHEGFYR.mjs.map +1 -0
- package/dist/index.d.mts +83 -230
- package/dist/index.d.ts +83 -230
- package/dist/index.js +525 -323
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +474 -273
- package/dist/index.mjs.map +1 -1
- package/dist/preset-BmUHLoAa.d.mts +274 -0
- package/dist/preset-BmUHLoAa.d.ts +274 -0
- package/dist/preset.d.mts +1 -117
- package/dist/preset.d.ts +1 -117
- package/dist/preset.js +19 -3
- package/dist/preset.js.map +1 -1
- package/dist/preset.mjs +5 -3
- package/package.json +1 -1
- package/dist/chunk-2B6HTSGM.mjs.map +0 -1
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
|
|
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({
|
|
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
|
-
|
|
851
|
+
import_react_native11.Pressable,
|
|
827
852
|
{
|
|
828
853
|
ref,
|
|
829
|
-
|
|
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-
|
|
834
|
-
|
|
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
|
-
|
|
867
|
+
import_react_native11.View,
|
|
841
868
|
{
|
|
869
|
+
role: "presentation",
|
|
842
870
|
className: cn(
|
|
843
|
-
"h-6 w-6 rounded-full bg-white shadow-
|
|
844
|
-
|
|
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
|
|
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({
|
|
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
|
-
|
|
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
|
-
|
|
867
|
-
|
|
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)(
|
|
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
|
-
|
|
935
|
+
import_react_native12.Text,
|
|
887
936
|
{
|
|
888
|
-
onPress:
|
|
937
|
+
onPress: !disabled ? handlePress : void 0,
|
|
889
938
|
className: cn(
|
|
890
939
|
"text-sm font-medium text-neutral-800 dark:text-neutral-200",
|
|
891
|
-
|
|
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
|
|
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)(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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)(
|
|
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
|
|
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
|
|
1071
|
+
const pulseAnim = React13.useRef(new import_react_native15.Animated.Value(0.4)).current;
|
|
1023
1072
|
React13.useEffect(() => {
|
|
1024
|
-
const animation =
|
|
1025
|
-
|
|
1026
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
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
|
-
|
|
1284
|
+
import_react_native18.Modal,
|
|
1188
1285
|
{
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
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(
|
|
1201
|
-
|
|
1202
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1203
|
-
|
|
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:
|
|
1322
|
+
style: import_react_native18.StyleSheet.absoluteFill,
|
|
1208
1323
|
className: "z-50 items-center justify-center p-4",
|
|
1209
|
-
children:
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
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
|
-
|
|
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(
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
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(
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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 = (
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
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
|
-
|
|
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 } =
|
|
1321
|
-
const isSelected =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
1398
|
-
const translateY = React17.useRef(new
|
|
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
|
-
|
|
1401
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1419
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
1449
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1450
|
-
toast.description ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
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)(
|
|
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
|
-
|
|
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
|
|
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)(
|
|
1500
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1501
|
-
icon ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
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)(
|
|
1504
|
-
trend ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1826
|
+
const rotationAnim = React19.useRef(new import_react_native22.Animated.Value(isOpen ? 1 : 0)).current;
|
|
1658
1827
|
React19.useEffect(() => {
|
|
1659
|
-
|
|
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
|
-
|
|
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)(
|
|
1683
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
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
|
-
|
|
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
|
|
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)(
|
|
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 =
|
|
1763
|
-
const translateY = React20.useRef(new
|
|
1764
|
-
const backdropOpacity = React20.useRef(new
|
|
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
|
-
|
|
1768
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1781
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
2031
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2032
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2033
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
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)(
|
|
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)(
|
|
2038
|
-
|
|
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)(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
2140
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2141
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2142
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
2272
|
-
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
2298
|
-
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2299
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
2587
|
+
import_react_native26.KeyboardAvoidingView,
|
|
2419
2588
|
{
|
|
2420
|
-
behavior:
|
|
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
|
-
|
|
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)(
|
|
2430
|
-
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2431
|
-
logo && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
2469
|
-
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
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)(
|
|
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)(
|
|
2488
|
-
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
2747
|
+
import_react_native27.KeyboardAvoidingView,
|
|
2577
2748
|
{
|
|
2578
|
-
behavior:
|
|
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
|
-
|
|
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)(
|
|
2588
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2589
|
-
logo && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
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)(
|
|
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)(
|
|
2638
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
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)(
|
|
2666
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
2901
|
+
import_react_native28.KeyboardAvoidingView,
|
|
2729
2902
|
{
|
|
2730
|
-
behavior:
|
|
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
|
-
|
|
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)(
|
|
2740
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
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)(
|
|
2809
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
2836
|
-
quickActions && quickActions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
2943
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
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)(
|
|
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)(
|
|
2955
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
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)(
|
|
2968
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
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)(
|
|
2981
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
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)(
|
|
2988
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
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)(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
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
|
|
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,
|
|
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)(
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
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
|