@retray-dev/ui-kit 2.3.0 → 2.5.1
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/COMPONENTS.md +80 -26
- package/README.md +3 -5
- package/dist/index.d.mts +35 -3
- package/dist/index.d.ts +35 -3
- package/dist/index.js +204 -143
- package/dist/index.mjs +204 -143
- package/package.json +4 -2
- package/src/components/Accordion/Accordion.tsx +4 -6
- package/src/components/AlertBanner/AlertBanner.tsx +16 -14
- package/src/components/Badge/Badge.tsx +1 -1
- package/src/components/Button/Button.tsx +4 -4
- package/src/components/Card/Card.tsx +8 -13
- package/src/components/Checkbox/Checkbox.tsx +4 -4
- package/src/components/Input/Input.tsx +6 -6
- package/src/components/ListItem/ListItem.tsx +157 -21
- package/src/components/MonthPicker/MonthPicker.tsx +3 -6
- package/src/components/RadioGroup/RadioGroup.tsx +2 -2
- package/src/components/Select/Select.tsx +17 -13
- package/src/components/Textarea/Textarea.tsx +4 -5
- package/src/components/Toast/Toast.tsx +23 -18
- package/src/components/Toggle/Toggle.tsx +29 -49
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var React23 = require('react');
|
|
4
4
|
var reactNative = require('react-native');
|
|
5
5
|
var Haptics12 = require('expo-haptics');
|
|
6
|
+
var vectorIcons = require('@expo/vector-icons');
|
|
6
7
|
var expoLinearGradient = require('expo-linear-gradient');
|
|
7
8
|
var ReanimatedAnimated = require('react-native-reanimated');
|
|
8
9
|
var RNSlider = require('@react-native-community/slider');
|
|
@@ -107,9 +108,9 @@ function useTheme() {
|
|
|
107
108
|
}
|
|
108
109
|
var nativeDriver = reactNative.Platform.OS !== "web";
|
|
109
110
|
var containerSizeStyles = {
|
|
110
|
-
sm: { paddingHorizontal: 20, paddingVertical:
|
|
111
|
-
md: { paddingHorizontal: 24, paddingVertical:
|
|
112
|
-
lg: { paddingHorizontal: 32, paddingVertical:
|
|
111
|
+
sm: { paddingHorizontal: 20, paddingVertical: 10 },
|
|
112
|
+
md: { paddingHorizontal: 24, paddingVertical: 14 },
|
|
113
|
+
lg: { paddingHorizontal: 32, paddingVertical: 18 }
|
|
113
114
|
};
|
|
114
115
|
var labelSizeStyles = {
|
|
115
116
|
sm: { fontSize: 15 },
|
|
@@ -202,7 +203,7 @@ var styles = reactNative.StyleSheet.create({
|
|
|
202
203
|
fontWeight: "600"
|
|
203
204
|
},
|
|
204
205
|
labelWithIcon: {
|
|
205
|
-
marginHorizontal:
|
|
206
|
+
marginHorizontal: 8
|
|
206
207
|
}
|
|
207
208
|
});
|
|
208
209
|
var variantStyles = {
|
|
@@ -233,7 +234,7 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, t
|
|
|
233
234
|
const [showPassword, setShowPassword] = React23.useState(false);
|
|
234
235
|
const isPassword = type === "password";
|
|
235
236
|
const effectiveSecure = isPassword ? !showPassword : secureTextEntry;
|
|
236
|
-
const effectiveSuffix = isPassword && !suffix ? /* @__PURE__ */ React23__default.default.createElement(reactNative.TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React23__default.default.createElement(
|
|
237
|
+
const effectiveSuffix = isPassword && !suffix ? /* @__PURE__ */ React23__default.default.createElement(reactNative.TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React23__default.default.createElement(vectorIcons.AntDesign, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffix;
|
|
237
238
|
return /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: [styles2.container, containerStyle] }, label ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles2.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React23__default.default.createElement(
|
|
238
239
|
reactNative.View,
|
|
239
240
|
{
|
|
@@ -276,20 +277,19 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, t
|
|
|
276
277
|
}
|
|
277
278
|
var styles2 = reactNative.StyleSheet.create({
|
|
278
279
|
container: {
|
|
279
|
-
gap:
|
|
280
|
+
gap: 8
|
|
280
281
|
},
|
|
281
282
|
label: {
|
|
282
283
|
fontSize: 15,
|
|
283
|
-
fontWeight: "500"
|
|
284
|
-
marginBottom: 6
|
|
284
|
+
fontWeight: "500"
|
|
285
285
|
},
|
|
286
286
|
inputWrapper: {
|
|
287
287
|
flexDirection: "row",
|
|
288
288
|
alignItems: "center",
|
|
289
289
|
borderWidth: 1.5,
|
|
290
|
-
borderRadius:
|
|
291
|
-
paddingHorizontal:
|
|
292
|
-
paddingVertical:
|
|
290
|
+
borderRadius: 8,
|
|
291
|
+
paddingHorizontal: 16,
|
|
292
|
+
paddingVertical: 14
|
|
293
293
|
},
|
|
294
294
|
input: {
|
|
295
295
|
flex: 1,
|
|
@@ -351,7 +351,7 @@ function Badge({ label, children, variant = "default", size = "md", icon, style
|
|
|
351
351
|
}
|
|
352
352
|
var styles3 = reactNative.StyleSheet.create({
|
|
353
353
|
container: {
|
|
354
|
-
borderRadius:
|
|
354
|
+
borderRadius: 6,
|
|
355
355
|
alignSelf: "flex-start",
|
|
356
356
|
flexDirection: "row",
|
|
357
357
|
alignItems: "center"
|
|
@@ -396,10 +396,10 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
396
396
|
backgroundColor: colors.card,
|
|
397
397
|
borderColor: colors.border,
|
|
398
398
|
shadowColor: "#000",
|
|
399
|
-
shadowOffset: { width: 0, height:
|
|
400
|
-
shadowOpacity: 0.
|
|
401
|
-
shadowRadius:
|
|
402
|
-
elevation:
|
|
399
|
+
shadowOffset: { width: 0, height: 4 },
|
|
400
|
+
shadowOpacity: 0.06,
|
|
401
|
+
shadowRadius: 12,
|
|
402
|
+
elevation: 3
|
|
403
403
|
},
|
|
404
404
|
outlined: {
|
|
405
405
|
backgroundColor: colors.card,
|
|
@@ -449,16 +449,11 @@ function CardFooter({ children, style }) {
|
|
|
449
449
|
}
|
|
450
450
|
var styles4 = reactNative.StyleSheet.create({
|
|
451
451
|
card: {
|
|
452
|
-
borderRadius:
|
|
453
|
-
borderWidth: 1
|
|
454
|
-
shadowColor: "#000",
|
|
455
|
-
shadowOffset: { width: 0, height: 1 },
|
|
456
|
-
shadowOpacity: 0.05,
|
|
457
|
-
shadowRadius: 2,
|
|
458
|
-
elevation: 1
|
|
452
|
+
borderRadius: 12,
|
|
453
|
+
borderWidth: 1
|
|
459
454
|
},
|
|
460
455
|
header: {
|
|
461
|
-
padding:
|
|
456
|
+
padding: 24,
|
|
462
457
|
paddingBottom: 0,
|
|
463
458
|
gap: 8
|
|
464
459
|
},
|
|
@@ -472,10 +467,10 @@ var styles4 = reactNative.StyleSheet.create({
|
|
|
472
467
|
lineHeight: 22
|
|
473
468
|
},
|
|
474
469
|
content: {
|
|
475
|
-
padding:
|
|
470
|
+
padding: 24
|
|
476
471
|
},
|
|
477
472
|
footer: {
|
|
478
|
-
padding:
|
|
473
|
+
padding: 24,
|
|
479
474
|
paddingTop: 0,
|
|
480
475
|
flexDirection: "row",
|
|
481
476
|
alignItems: "center"
|
|
@@ -613,19 +608,24 @@ function AlertBanner({ title, description, variant = "default", icon, style }) {
|
|
|
613
608
|
const borderColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.border;
|
|
614
609
|
const titleColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.foreground;
|
|
615
610
|
const descColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.mutedForeground;
|
|
616
|
-
const defaultIcon = variant === "
|
|
617
|
-
return /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] },
|
|
611
|
+
const defaultIcon = variant === "success" ? /* @__PURE__ */ React23__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React23__default.default.createElement(vectorIcons.MaterialIcons, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "info-with-circle", size: 18, color: titleColor });
|
|
612
|
+
return /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles8.icon }, icon ?? defaultIcon), /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles8.content }, title ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles8.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles8.description, { color: descColor }], allowFontScaling: true }, description) : null));
|
|
618
613
|
}
|
|
619
614
|
var styles8 = reactNative.StyleSheet.create({
|
|
620
615
|
container: {
|
|
621
616
|
flexDirection: "row",
|
|
622
617
|
borderWidth: 1,
|
|
623
|
-
borderRadius:
|
|
618
|
+
borderRadius: 12,
|
|
624
619
|
padding: 16,
|
|
625
|
-
gap: 12
|
|
620
|
+
gap: 12,
|
|
621
|
+
shadowColor: "#000",
|
|
622
|
+
shadowOffset: { width: 0, height: 4 },
|
|
623
|
+
shadowOpacity: 0.06,
|
|
624
|
+
shadowRadius: 12,
|
|
625
|
+
elevation: 3
|
|
626
626
|
},
|
|
627
627
|
icon: {
|
|
628
|
-
marginTop:
|
|
628
|
+
marginTop: 0
|
|
629
629
|
},
|
|
630
630
|
content: {
|
|
631
631
|
flex: 1,
|
|
@@ -639,10 +639,6 @@ var styles8 = reactNative.StyleSheet.create({
|
|
|
639
639
|
description: {
|
|
640
640
|
fontSize: 14,
|
|
641
641
|
lineHeight: 20
|
|
642
|
-
},
|
|
643
|
-
defaultIcon: {
|
|
644
|
-
fontSize: 18,
|
|
645
|
-
fontWeight: "700"
|
|
646
642
|
}
|
|
647
643
|
});
|
|
648
644
|
function Progress({ value = 0, max = 100, style }) {
|
|
@@ -815,18 +811,17 @@ function Textarea({
|
|
|
815
811
|
}
|
|
816
812
|
var styles11 = reactNative.StyleSheet.create({
|
|
817
813
|
container: {
|
|
818
|
-
gap:
|
|
814
|
+
gap: 8
|
|
819
815
|
},
|
|
820
816
|
label: {
|
|
821
817
|
fontSize: 15,
|
|
822
|
-
fontWeight: "500"
|
|
823
|
-
marginBottom: 6
|
|
818
|
+
fontWeight: "500"
|
|
824
819
|
},
|
|
825
820
|
input: {
|
|
826
821
|
borderWidth: 1.5,
|
|
827
|
-
borderRadius:
|
|
828
|
-
paddingHorizontal:
|
|
829
|
-
paddingVertical:
|
|
822
|
+
borderRadius: 8,
|
|
823
|
+
paddingHorizontal: 16,
|
|
824
|
+
paddingVertical: 14,
|
|
830
825
|
fontSize: 17
|
|
831
826
|
},
|
|
832
827
|
helperText: {
|
|
@@ -893,16 +888,16 @@ var styles12 = reactNative.StyleSheet.create({
|
|
|
893
888
|
gap: 12
|
|
894
889
|
},
|
|
895
890
|
box: {
|
|
896
|
-
width:
|
|
897
|
-
height:
|
|
891
|
+
width: 24,
|
|
892
|
+
height: 24,
|
|
898
893
|
borderRadius: 8,
|
|
899
894
|
borderWidth: 1.5,
|
|
900
895
|
alignItems: "center",
|
|
901
896
|
justifyContent: "center"
|
|
902
897
|
},
|
|
903
898
|
checkmark: {
|
|
904
|
-
width:
|
|
905
|
-
height:
|
|
899
|
+
width: 12,
|
|
900
|
+
height: 7,
|
|
906
901
|
borderLeftWidth: 2,
|
|
907
902
|
borderBottomWidth: 2,
|
|
908
903
|
transform: [{ rotate: "-45deg" }, { translateY: -1 }]
|
|
@@ -1042,54 +1037,48 @@ function Toggle({
|
|
|
1042
1037
|
if (pressed) {
|
|
1043
1038
|
const active = renderProp(activeIcon);
|
|
1044
1039
|
if (active) return /* @__PURE__ */ React23__default.default.createElement(React23__default.default.Fragment, null, active);
|
|
1045
|
-
return /* @__PURE__ */ React23__default.default.createElement(
|
|
1040
|
+
return /* @__PURE__ */ React23__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 20, color: colors.primary });
|
|
1046
1041
|
}
|
|
1047
1042
|
const custom = renderProp(icon);
|
|
1048
1043
|
if (custom) return /* @__PURE__ */ React23__default.default.createElement(React23__default.default.Fragment, null, custom);
|
|
1049
|
-
return /* @__PURE__ */ React23__default.default.createElement(
|
|
1044
|
+
return /* @__PURE__ */ React23__default.default.createElement(vectorIcons.FontAwesome5, { name: "circle", size: 20, color: colors.mutedForeground });
|
|
1050
1045
|
};
|
|
1051
|
-
return /* @__PURE__ */ React23__default.default.createElement(reactNative.Animated.View, { style: { transform: [{ scale }] } }, /* @__PURE__ */ React23__default.default.createElement(
|
|
1052
|
-
reactNative.
|
|
1046
|
+
return /* @__PURE__ */ React23__default.default.createElement(reactNative.Animated.View, { style: [{ transform: [{ scale }] }, disabled && styles14.disabled, style] }, /* @__PURE__ */ React23__default.default.createElement(
|
|
1047
|
+
reactNative.TouchableOpacity,
|
|
1053
1048
|
{
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1049
|
+
onPress: () => {
|
|
1050
|
+
Haptics12__namespace.selectionAsync();
|
|
1051
|
+
onPressedChange?.(!pressed);
|
|
1052
|
+
},
|
|
1053
|
+
onPressIn: handlePressIn,
|
|
1054
|
+
onPressOut: handlePressOut,
|
|
1055
|
+
disabled,
|
|
1056
|
+
activeOpacity: 1,
|
|
1057
|
+
touchSoundDisabled: true,
|
|
1058
|
+
...props
|
|
1061
1059
|
},
|
|
1062
1060
|
/* @__PURE__ */ React23__default.default.createElement(
|
|
1063
|
-
reactNative.
|
|
1061
|
+
reactNative.Animated.View,
|
|
1064
1062
|
{
|
|
1065
|
-
style:
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
onPressIn: handlePressIn,
|
|
1071
|
-
onPressOut: handlePressOut,
|
|
1072
|
-
disabled,
|
|
1073
|
-
activeOpacity: 1,
|
|
1074
|
-
touchSoundDisabled: true,
|
|
1075
|
-
...props
|
|
1063
|
+
style: [
|
|
1064
|
+
styles14.base,
|
|
1065
|
+
sizeStyles[size],
|
|
1066
|
+
{ borderColor, backgroundColor, borderWidth: 2 }
|
|
1067
|
+
]
|
|
1076
1068
|
},
|
|
1077
|
-
/* @__PURE__ */ React23__default.default.createElement(LeftIcon, null),
|
|
1078
|
-
label ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null
|
|
1069
|
+
/* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles14.inner }, /* @__PURE__ */ React23__default.default.createElement(LeftIcon, null), label ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null)
|
|
1079
1070
|
)
|
|
1080
1071
|
));
|
|
1081
1072
|
}
|
|
1082
1073
|
var styles14 = reactNative.StyleSheet.create({
|
|
1083
1074
|
base: {
|
|
1084
|
-
borderRadius: 8
|
|
1085
|
-
overflow: "hidden"
|
|
1075
|
+
borderRadius: 8
|
|
1086
1076
|
},
|
|
1087
|
-
|
|
1077
|
+
inner: {
|
|
1088
1078
|
flexDirection: "row",
|
|
1089
1079
|
alignItems: "center",
|
|
1090
1080
|
justifyContent: "center",
|
|
1091
|
-
gap: 8
|
|
1092
|
-
flex: 1
|
|
1081
|
+
gap: 8
|
|
1093
1082
|
},
|
|
1094
1083
|
disabled: {
|
|
1095
1084
|
opacity: 0.45
|
|
@@ -1097,18 +1086,6 @@ var styles14 = reactNative.StyleSheet.create({
|
|
|
1097
1086
|
label: {
|
|
1098
1087
|
fontSize: 14,
|
|
1099
1088
|
fontWeight: "500"
|
|
1100
|
-
},
|
|
1101
|
-
checkContainer: {
|
|
1102
|
-
width: 24,
|
|
1103
|
-
height: 24,
|
|
1104
|
-
borderRadius: 12,
|
|
1105
|
-
borderWidth: 2,
|
|
1106
|
-
alignItems: "center",
|
|
1107
|
-
justifyContent: "center"
|
|
1108
|
-
},
|
|
1109
|
-
checkMark: {
|
|
1110
|
-
fontSize: 14,
|
|
1111
|
-
fontWeight: "700"
|
|
1112
1089
|
}
|
|
1113
1090
|
});
|
|
1114
1091
|
function RadioItem({
|
|
@@ -1185,7 +1162,7 @@ function RadioGroup({
|
|
|
1185
1162
|
}
|
|
1186
1163
|
var styles15 = reactNative.StyleSheet.create({
|
|
1187
1164
|
container: {
|
|
1188
|
-
gap:
|
|
1165
|
+
gap: 12
|
|
1189
1166
|
},
|
|
1190
1167
|
horizontal: {
|
|
1191
1168
|
flexDirection: "row",
|
|
@@ -1194,7 +1171,7 @@ var styles15 = reactNative.StyleSheet.create({
|
|
|
1194
1171
|
row: {
|
|
1195
1172
|
flexDirection: "row",
|
|
1196
1173
|
alignItems: "center",
|
|
1197
|
-
gap:
|
|
1174
|
+
gap: 12
|
|
1198
1175
|
},
|
|
1199
1176
|
radio: {
|
|
1200
1177
|
width: 24,
|
|
@@ -1423,13 +1400,7 @@ function AccordionItemComponent({
|
|
|
1423
1400
|
touchSoundDisabled: true
|
|
1424
1401
|
},
|
|
1425
1402
|
/* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles17.triggerText, { color: colors.foreground }] }, item.trigger),
|
|
1426
|
-
/* @__PURE__ */ React23__default.default.createElement(
|
|
1427
|
-
ReanimatedAnimated__default.default.Text,
|
|
1428
|
-
{
|
|
1429
|
-
style: [styles17.chevron, { color: colors.foreground }, rotationStyle]
|
|
1430
|
-
},
|
|
1431
|
-
"\u25BE"
|
|
1432
|
-
)
|
|
1403
|
+
/* @__PURE__ */ React23__default.default.createElement(ReanimatedAnimated__default.default.View, { style: [styles17.chevron, rotationStyle] }, /* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "chevron-down", size: 20, color: colors.foreground }))
|
|
1433
1404
|
)), /* @__PURE__ */ React23__default.default.createElement(ReanimatedAnimated__default.default.View, { style: heightStyle }, /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles17.content, onLayout }, item.content)));
|
|
1434
1405
|
}
|
|
1435
1406
|
function Accordion({ items, type = "single", defaultValue, style }) {
|
|
@@ -1472,7 +1443,6 @@ var styles17 = reactNative.StyleSheet.create({
|
|
|
1472
1443
|
flex: 1
|
|
1473
1444
|
},
|
|
1474
1445
|
chevron: {
|
|
1475
|
-
fontSize: 18,
|
|
1476
1446
|
marginLeft: 8
|
|
1477
1447
|
},
|
|
1478
1448
|
content: {
|
|
@@ -1690,7 +1660,7 @@ function Select({
|
|
|
1690
1660
|
},
|
|
1691
1661
|
selected?.label ?? placeholder
|
|
1692
1662
|
),
|
|
1693
|
-
/* @__PURE__ */ React23__default.default.createElement(
|
|
1663
|
+
/* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
|
|
1694
1664
|
)) : null, isIOS ? /* @__PURE__ */ React23__default.default.createElement(
|
|
1695
1665
|
reactNative.Modal,
|
|
1696
1666
|
{
|
|
@@ -1779,28 +1749,31 @@ function Select({
|
|
|
1779
1749
|
}
|
|
1780
1750
|
var styles20 = reactNative.StyleSheet.create({
|
|
1781
1751
|
container: {
|
|
1782
|
-
gap:
|
|
1752
|
+
gap: 8
|
|
1783
1753
|
},
|
|
1784
1754
|
label: {
|
|
1785
1755
|
fontSize: 15,
|
|
1786
|
-
fontWeight: "500"
|
|
1787
|
-
marginBottom: 2
|
|
1756
|
+
fontWeight: "500"
|
|
1788
1757
|
},
|
|
1789
1758
|
trigger: {
|
|
1790
1759
|
flexDirection: "row",
|
|
1791
1760
|
alignItems: "center",
|
|
1792
1761
|
justifyContent: "space-between",
|
|
1793
1762
|
borderWidth: 1.5,
|
|
1794
|
-
borderRadius:
|
|
1795
|
-
paddingHorizontal:
|
|
1796
|
-
paddingVertical:
|
|
1763
|
+
borderRadius: 8,
|
|
1764
|
+
paddingHorizontal: 16,
|
|
1765
|
+
paddingVertical: 14,
|
|
1766
|
+
shadowColor: "#000",
|
|
1767
|
+
shadowOffset: { width: 0, height: 1 },
|
|
1768
|
+
shadowOpacity: 0.04,
|
|
1769
|
+
shadowRadius: 2,
|
|
1770
|
+
elevation: 1
|
|
1797
1771
|
},
|
|
1798
1772
|
triggerText: {
|
|
1799
1773
|
fontSize: 17,
|
|
1800
1774
|
flex: 1
|
|
1801
1775
|
},
|
|
1802
1776
|
chevron: {
|
|
1803
|
-
fontSize: 16,
|
|
1804
1777
|
marginLeft: 8
|
|
1805
1778
|
},
|
|
1806
1779
|
helperText: {
|
|
@@ -1811,15 +1784,15 @@ var styles20 = reactNative.StyleSheet.create({
|
|
|
1811
1784
|
backgroundColor: "rgba(0,0,0,0.4)"
|
|
1812
1785
|
},
|
|
1813
1786
|
iosSheet: {
|
|
1814
|
-
borderTopLeftRadius:
|
|
1815
|
-
borderTopRightRadius:
|
|
1787
|
+
borderTopLeftRadius: 16,
|
|
1788
|
+
borderTopRightRadius: 16,
|
|
1816
1789
|
paddingBottom: 32
|
|
1817
1790
|
},
|
|
1818
1791
|
iosToolbar: {
|
|
1819
1792
|
flexDirection: "row",
|
|
1820
1793
|
alignItems: "center",
|
|
1821
1794
|
justifyContent: "space-between",
|
|
1822
|
-
paddingHorizontal:
|
|
1795
|
+
paddingHorizontal: 16,
|
|
1823
1796
|
paddingVertical: 12,
|
|
1824
1797
|
borderBottomWidth: 1
|
|
1825
1798
|
},
|
|
@@ -1841,9 +1814,9 @@ var styles20 = reactNative.StyleSheet.create({
|
|
|
1841
1814
|
},
|
|
1842
1815
|
webPicker: {
|
|
1843
1816
|
borderWidth: 1.5,
|
|
1844
|
-
borderRadius:
|
|
1845
|
-
paddingHorizontal:
|
|
1846
|
-
paddingVertical:
|
|
1817
|
+
borderRadius: 8,
|
|
1818
|
+
paddingHorizontal: 16,
|
|
1819
|
+
paddingVertical: 14,
|
|
1847
1820
|
fontSize: 17
|
|
1848
1821
|
}
|
|
1849
1822
|
});
|
|
@@ -1902,8 +1875,9 @@ function ToastNotification({ item, onDismiss }) {
|
|
|
1902
1875
|
destructive: colors.destructiveForeground,
|
|
1903
1876
|
success: colors.successForeground
|
|
1904
1877
|
}[item.variant ?? "default"];
|
|
1905
|
-
const
|
|
1906
|
-
|
|
1878
|
+
const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React23__default.default.createElement(vectorIcons.FontAwesome5, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React23__default.default.createElement(vectorIcons.MaterialIcons, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "info-with-circle", size: 22, color: textColor });
|
|
1879
|
+
const leftIcon = item.icon ?? defaultIcon;
|
|
1880
|
+
return /* @__PURE__ */ React23__default.default.createElement(reactNativeGestureHandler.GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React23__default.default.createElement(ReanimatedAnimated__default.default.View, { style: [styles21.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles21.leftIconContainer }, leftIcon), /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles21.toastContent }, item.title ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles21.toastTitle, { color: textColor }] }, item.title) : null, item.description ? /* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles21.toastDescription, { color: textColor, opacity: 0.85 }] }, item.description) : null), /* @__PURE__ */ React23__default.default.createElement(reactNative.TouchableOpacity, { onPress: onDismiss, style: styles21.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React23__default.default.createElement(vectorIcons.AntDesign, { name: "close-circle", size: 18, color: textColor }))));
|
|
1907
1881
|
}
|
|
1908
1882
|
function ToastProvider({ children }) {
|
|
1909
1883
|
const [toasts, setToasts] = React23.useState([]);
|
|
@@ -1922,7 +1896,7 @@ function ToastProvider({ children }) {
|
|
|
1922
1896
|
const dismiss = React23.useCallback((id) => {
|
|
1923
1897
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
1924
1898
|
}, []);
|
|
1925
|
-
return /* @__PURE__ */ React23__default.default.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: [styles21.container, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23__default.default.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1899
|
+
return /* @__PURE__ */ React23__default.default.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: [styles21.container, reactNative.Platform.OS === "web" && styles21.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23__default.default.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1926
1900
|
}
|
|
1927
1901
|
var styles21 = reactNative.StyleSheet.create({
|
|
1928
1902
|
container: {
|
|
@@ -1932,6 +1906,12 @@ var styles21 = reactNative.StyleSheet.create({
|
|
|
1932
1906
|
gap: 8,
|
|
1933
1907
|
zIndex: 9999
|
|
1934
1908
|
},
|
|
1909
|
+
containerWeb: {
|
|
1910
|
+
left: void 0,
|
|
1911
|
+
right: void 0,
|
|
1912
|
+
alignSelf: "center",
|
|
1913
|
+
width: 400
|
|
1914
|
+
},
|
|
1935
1915
|
toast: {
|
|
1936
1916
|
flexDirection: "row",
|
|
1937
1917
|
alignItems: "center",
|
|
@@ -1949,15 +1929,11 @@ var styles21 = reactNative.StyleSheet.create({
|
|
|
1949
1929
|
gap: 4
|
|
1950
1930
|
},
|
|
1951
1931
|
leftIconContainer: {
|
|
1952
|
-
width:
|
|
1932
|
+
width: 40,
|
|
1953
1933
|
alignItems: "center",
|
|
1954
1934
|
justifyContent: "center",
|
|
1955
1935
|
marginRight: 8
|
|
1956
1936
|
},
|
|
1957
|
-
defaultIcon: {
|
|
1958
|
-
fontSize: 22,
|
|
1959
|
-
fontWeight: "700"
|
|
1960
|
-
},
|
|
1961
1937
|
toastTitle: {
|
|
1962
1938
|
fontSize: 15,
|
|
1963
1939
|
fontWeight: "600"
|
|
@@ -1966,11 +1942,8 @@ var styles21 = reactNative.StyleSheet.create({
|
|
|
1966
1942
|
fontSize: 14
|
|
1967
1943
|
},
|
|
1968
1944
|
dismissButton: {
|
|
1969
|
-
padding:
|
|
1945
|
+
padding: 8,
|
|
1970
1946
|
marginLeft: 4
|
|
1971
|
-
},
|
|
1972
|
-
dismissIcon: {
|
|
1973
|
-
fontSize: 14
|
|
1974
1947
|
}
|
|
1975
1948
|
});
|
|
1976
1949
|
function formatCurrency(raw, separator) {
|
|
@@ -2044,7 +2017,24 @@ var styles22 = reactNative.StyleSheet.create({
|
|
|
2044
2017
|
}
|
|
2045
2018
|
});
|
|
2046
2019
|
var nativeDriver4 = reactNative.Platform.OS !== "web";
|
|
2047
|
-
function ListItem({
|
|
2020
|
+
function ListItem({
|
|
2021
|
+
leftRender,
|
|
2022
|
+
rightRender,
|
|
2023
|
+
trailing,
|
|
2024
|
+
icon,
|
|
2025
|
+
title,
|
|
2026
|
+
subtitle,
|
|
2027
|
+
caption,
|
|
2028
|
+
variant = "plain",
|
|
2029
|
+
showChevron = false,
|
|
2030
|
+
showSeparator = false,
|
|
2031
|
+
onPress,
|
|
2032
|
+
disabled,
|
|
2033
|
+
style,
|
|
2034
|
+
titleStyle,
|
|
2035
|
+
subtitleStyle,
|
|
2036
|
+
captionStyle
|
|
2037
|
+
}) {
|
|
2048
2038
|
const { colors } = useTheme();
|
|
2049
2039
|
const scale = React23.useRef(new reactNative.Animated.Value(1)).current;
|
|
2050
2040
|
const handlePressIn = () => {
|
|
@@ -2068,10 +2058,23 @@ function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style })
|
|
|
2068
2058
|
Haptics12__namespace.selectionAsync();
|
|
2069
2059
|
onPress?.();
|
|
2070
2060
|
};
|
|
2061
|
+
const effectiveLeft = leftRender ?? icon;
|
|
2062
|
+
const effectiveRight = rightRender ?? trailing;
|
|
2063
|
+
const cardStyle = variant === "card" ? {
|
|
2064
|
+
backgroundColor: colors.card,
|
|
2065
|
+
borderRadius: 12,
|
|
2066
|
+
borderWidth: 1,
|
|
2067
|
+
borderColor: colors.border,
|
|
2068
|
+
shadowColor: "#000",
|
|
2069
|
+
shadowOffset: { width: 0, height: 2 },
|
|
2070
|
+
shadowOpacity: 0.06,
|
|
2071
|
+
shadowRadius: 6,
|
|
2072
|
+
elevation: 2
|
|
2073
|
+
} : {};
|
|
2071
2074
|
return /* @__PURE__ */ React23__default.default.createElement(reactNative.Animated.View, { style: [{ transform: [{ scale }] }, disabled && styles23.disabled] }, /* @__PURE__ */ React23__default.default.createElement(
|
|
2072
2075
|
reactNative.TouchableOpacity,
|
|
2073
2076
|
{
|
|
2074
|
-
style: [styles23.container, style],
|
|
2077
|
+
style: [styles23.container, cardStyle, style],
|
|
2075
2078
|
onPress: onPress ? handlePress : void 0,
|
|
2076
2079
|
onPressIn: handlePressIn,
|
|
2077
2080
|
onPressOut: handlePressOut,
|
|
@@ -2079,10 +2082,49 @@ function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style })
|
|
|
2079
2082
|
activeOpacity: 1,
|
|
2080
2083
|
touchSoundDisabled: true
|
|
2081
2084
|
},
|
|
2082
|
-
|
|
2083
|
-
/* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles23.content }, /* @__PURE__ */ React23__default.default.createElement(
|
|
2084
|
-
|
|
2085
|
-
|
|
2085
|
+
effectiveLeft ? /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles23.leftContainer }, effectiveLeft) : null,
|
|
2086
|
+
/* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles23.content }, /* @__PURE__ */ React23__default.default.createElement(
|
|
2087
|
+
reactNative.Text,
|
|
2088
|
+
{
|
|
2089
|
+
style: [styles23.title, { color: colors.foreground }, titleStyle],
|
|
2090
|
+
numberOfLines: 2,
|
|
2091
|
+
allowFontScaling: true
|
|
2092
|
+
},
|
|
2093
|
+
title
|
|
2094
|
+
), subtitle ? /* @__PURE__ */ React23__default.default.createElement(
|
|
2095
|
+
reactNative.Text,
|
|
2096
|
+
{
|
|
2097
|
+
style: [styles23.subtitle, { color: colors.mutedForeground }, subtitleStyle],
|
|
2098
|
+
numberOfLines: 2,
|
|
2099
|
+
allowFontScaling: true
|
|
2100
|
+
},
|
|
2101
|
+
subtitle
|
|
2102
|
+
) : null, caption ? /* @__PURE__ */ React23__default.default.createElement(
|
|
2103
|
+
reactNative.Text,
|
|
2104
|
+
{
|
|
2105
|
+
style: [styles23.caption, { color: colors.mutedForeground }, captionStyle],
|
|
2106
|
+
numberOfLines: 1,
|
|
2107
|
+
allowFontScaling: true
|
|
2108
|
+
},
|
|
2109
|
+
caption
|
|
2110
|
+
) : null),
|
|
2111
|
+
effectiveRight !== void 0 ? /* @__PURE__ */ React23__default.default.createElement(reactNative.View, { style: styles23.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React23__default.default.createElement(
|
|
2112
|
+
reactNative.Text,
|
|
2113
|
+
{
|
|
2114
|
+
style: [styles23.rightText, { color: colors.mutedForeground }],
|
|
2115
|
+
allowFontScaling: true
|
|
2116
|
+
},
|
|
2117
|
+
effectiveRight
|
|
2118
|
+
) : effectiveRight) : showChevron ? /* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
|
|
2119
|
+
), showSeparator ? /* @__PURE__ */ React23__default.default.createElement(
|
|
2120
|
+
reactNative.View,
|
|
2121
|
+
{
|
|
2122
|
+
style: [
|
|
2123
|
+
styles23.separator,
|
|
2124
|
+
{ backgroundColor: colors.border, marginLeft: effectiveLeft ? 16 + 44 + 12 : 16 }
|
|
2125
|
+
]
|
|
2126
|
+
}
|
|
2127
|
+
) : null);
|
|
2086
2128
|
}
|
|
2087
2129
|
var styles23 = reactNative.StyleSheet.create({
|
|
2088
2130
|
container: {
|
|
@@ -2092,26 +2134,49 @@ var styles23 = reactNative.StyleSheet.create({
|
|
|
2092
2134
|
paddingVertical: 14,
|
|
2093
2135
|
gap: 12
|
|
2094
2136
|
},
|
|
2095
|
-
|
|
2137
|
+
leftContainer: {
|
|
2138
|
+
width: 44,
|
|
2139
|
+
height: 44,
|
|
2096
2140
|
alignItems: "center",
|
|
2097
|
-
justifyContent: "center"
|
|
2141
|
+
justifyContent: "center",
|
|
2142
|
+
flexShrink: 0
|
|
2098
2143
|
},
|
|
2099
2144
|
content: {
|
|
2100
2145
|
flex: 1,
|
|
2101
|
-
gap:
|
|
2146
|
+
gap: 4
|
|
2102
2147
|
},
|
|
2103
2148
|
title: {
|
|
2104
|
-
fontSize:
|
|
2149
|
+
fontSize: 17,
|
|
2105
2150
|
fontWeight: "500",
|
|
2106
|
-
lineHeight:
|
|
2151
|
+
lineHeight: 24
|
|
2107
2152
|
},
|
|
2108
2153
|
subtitle: {
|
|
2109
|
-
fontSize:
|
|
2110
|
-
|
|
2154
|
+
fontSize: 14,
|
|
2155
|
+
fontWeight: "400",
|
|
2156
|
+
lineHeight: 20
|
|
2157
|
+
},
|
|
2158
|
+
caption: {
|
|
2159
|
+
fontSize: 12,
|
|
2160
|
+
fontWeight: "400",
|
|
2161
|
+
lineHeight: 16,
|
|
2162
|
+
opacity: 0.7
|
|
2163
|
+
},
|
|
2164
|
+
rightContainer: {
|
|
2165
|
+
alignItems: "flex-end",
|
|
2166
|
+
justifyContent: "center",
|
|
2167
|
+
flexShrink: 0,
|
|
2168
|
+
maxWidth: 160
|
|
2111
2169
|
},
|
|
2112
|
-
|
|
2170
|
+
rightText: {
|
|
2113
2171
|
fontSize: 15
|
|
2114
2172
|
},
|
|
2173
|
+
chevron: {
|
|
2174
|
+
marginLeft: 4
|
|
2175
|
+
},
|
|
2176
|
+
separator: {
|
|
2177
|
+
height: reactNative.StyleSheet.hairlineWidth,
|
|
2178
|
+
marginRight: 16
|
|
2179
|
+
},
|
|
2115
2180
|
disabled: {
|
|
2116
2181
|
opacity: 0.45
|
|
2117
2182
|
}
|
|
@@ -2344,7 +2409,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2344
2409
|
activeOpacity: 0.6,
|
|
2345
2410
|
touchSoundDisabled: true
|
|
2346
2411
|
},
|
|
2347
|
-
/* @__PURE__ */ React23__default.default.createElement(
|
|
2412
|
+
/* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "chevron-left", size: 22, color: colors.foreground })
|
|
2348
2413
|
), /* @__PURE__ */ React23__default.default.createElement(reactNative.Text, { style: [styles27.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React23__default.default.createElement(
|
|
2349
2414
|
reactNative.TouchableOpacity,
|
|
2350
2415
|
{
|
|
@@ -2353,7 +2418,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2353
2418
|
activeOpacity: 0.6,
|
|
2354
2419
|
touchSoundDisabled: true
|
|
2355
2420
|
},
|
|
2356
|
-
/* @__PURE__ */ React23__default.default.createElement(
|
|
2421
|
+
/* @__PURE__ */ React23__default.default.createElement(vectorIcons.Entypo, { name: "chevron-right", size: 22, color: colors.foreground })
|
|
2357
2422
|
));
|
|
2358
2423
|
}
|
|
2359
2424
|
var styles27 = reactNative.StyleSheet.create({
|
|
@@ -2368,10 +2433,6 @@ var styles27 = reactNative.StyleSheet.create({
|
|
|
2368
2433
|
alignItems: "center",
|
|
2369
2434
|
justifyContent: "center"
|
|
2370
2435
|
},
|
|
2371
|
-
arrowText: {
|
|
2372
|
-
fontSize: 24,
|
|
2373
|
-
lineHeight: 30
|
|
2374
|
-
},
|
|
2375
2436
|
label: {
|
|
2376
2437
|
fontSize: 17,
|
|
2377
2438
|
fontWeight: "500",
|