@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.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React23, { createContext, useMemo, useContext, useRef, useState, useEffect, useCallback } from 'react';
|
|
2
2
|
import { Platform, StyleSheet, useColorScheme, Animated, TouchableOpacity, ActivityIndicator, Text, View, TextInput, Image, Easing, Modal } from 'react-native';
|
|
3
3
|
import * as Haptics12 from 'expo-haptics';
|
|
4
|
+
import { AntDesign, Entypo, FontAwesome5, MaterialIcons } from '@expo/vector-icons';
|
|
4
5
|
import { LinearGradient } from 'expo-linear-gradient';
|
|
5
6
|
import ReanimatedAnimated, { useSharedValue, useAnimatedStyle, withTiming, Easing as Easing$1, withSpring } from 'react-native-reanimated';
|
|
6
7
|
import RNSlider from '@react-native-community/slider';
|
|
@@ -81,9 +82,9 @@ function useTheme() {
|
|
|
81
82
|
}
|
|
82
83
|
var nativeDriver = Platform.OS !== "web";
|
|
83
84
|
var containerSizeStyles = {
|
|
84
|
-
sm: { paddingHorizontal: 20, paddingVertical:
|
|
85
|
-
md: { paddingHorizontal: 24, paddingVertical:
|
|
86
|
-
lg: { paddingHorizontal: 32, paddingVertical:
|
|
85
|
+
sm: { paddingHorizontal: 20, paddingVertical: 10 },
|
|
86
|
+
md: { paddingHorizontal: 24, paddingVertical: 14 },
|
|
87
|
+
lg: { paddingHorizontal: 32, paddingVertical: 18 }
|
|
87
88
|
};
|
|
88
89
|
var labelSizeStyles = {
|
|
89
90
|
sm: { fontSize: 15 },
|
|
@@ -176,7 +177,7 @@ var styles = StyleSheet.create({
|
|
|
176
177
|
fontWeight: "600"
|
|
177
178
|
},
|
|
178
179
|
labelWithIcon: {
|
|
179
|
-
marginHorizontal:
|
|
180
|
+
marginHorizontal: 8
|
|
180
181
|
}
|
|
181
182
|
});
|
|
182
183
|
var variantStyles = {
|
|
@@ -207,7 +208,7 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, t
|
|
|
207
208
|
const [showPassword, setShowPassword] = useState(false);
|
|
208
209
|
const isPassword = type === "password";
|
|
209
210
|
const effectiveSecure = isPassword ? !showPassword : secureTextEntry;
|
|
210
|
-
const effectiveSuffix = isPassword && !suffix ? /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React23.createElement(
|
|
211
|
+
const effectiveSuffix = isPassword && !suffix ? /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: () => setShowPassword(!showPassword), style: styles2.passwordToggle, activeOpacity: 0.6 }, /* @__PURE__ */ React23.createElement(AntDesign, { name: showPassword ? "eye" : "eye-invisible", size: 20, color: colors.mutedForeground })) : suffix;
|
|
211
212
|
return /* @__PURE__ */ React23.createElement(View, { style: [styles2.container, containerStyle] }, label ? /* @__PURE__ */ React23.createElement(Text, { style: [styles2.label, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React23.createElement(
|
|
212
213
|
View,
|
|
213
214
|
{
|
|
@@ -250,20 +251,19 @@ function Input({ label, error, hint, prefix, suffix, prefixStyle, suffixStyle, t
|
|
|
250
251
|
}
|
|
251
252
|
var styles2 = StyleSheet.create({
|
|
252
253
|
container: {
|
|
253
|
-
gap:
|
|
254
|
+
gap: 8
|
|
254
255
|
},
|
|
255
256
|
label: {
|
|
256
257
|
fontSize: 15,
|
|
257
|
-
fontWeight: "500"
|
|
258
|
-
marginBottom: 6
|
|
258
|
+
fontWeight: "500"
|
|
259
259
|
},
|
|
260
260
|
inputWrapper: {
|
|
261
261
|
flexDirection: "row",
|
|
262
262
|
alignItems: "center",
|
|
263
263
|
borderWidth: 1.5,
|
|
264
|
-
borderRadius:
|
|
265
|
-
paddingHorizontal:
|
|
266
|
-
paddingVertical:
|
|
264
|
+
borderRadius: 8,
|
|
265
|
+
paddingHorizontal: 16,
|
|
266
|
+
paddingVertical: 14
|
|
267
267
|
},
|
|
268
268
|
input: {
|
|
269
269
|
flex: 1,
|
|
@@ -325,7 +325,7 @@ function Badge({ label, children, variant = "default", size = "md", icon, style
|
|
|
325
325
|
}
|
|
326
326
|
var styles3 = StyleSheet.create({
|
|
327
327
|
container: {
|
|
328
|
-
borderRadius:
|
|
328
|
+
borderRadius: 6,
|
|
329
329
|
alignSelf: "flex-start",
|
|
330
330
|
flexDirection: "row",
|
|
331
331
|
alignItems: "center"
|
|
@@ -370,10 +370,10 @@ function Card({ children, variant = "elevated", onPress, style }) {
|
|
|
370
370
|
backgroundColor: colors.card,
|
|
371
371
|
borderColor: colors.border,
|
|
372
372
|
shadowColor: "#000",
|
|
373
|
-
shadowOffset: { width: 0, height:
|
|
374
|
-
shadowOpacity: 0.
|
|
375
|
-
shadowRadius:
|
|
376
|
-
elevation:
|
|
373
|
+
shadowOffset: { width: 0, height: 4 },
|
|
374
|
+
shadowOpacity: 0.06,
|
|
375
|
+
shadowRadius: 12,
|
|
376
|
+
elevation: 3
|
|
377
377
|
},
|
|
378
378
|
outlined: {
|
|
379
379
|
backgroundColor: colors.card,
|
|
@@ -423,16 +423,11 @@ function CardFooter({ children, style }) {
|
|
|
423
423
|
}
|
|
424
424
|
var styles4 = StyleSheet.create({
|
|
425
425
|
card: {
|
|
426
|
-
borderRadius:
|
|
427
|
-
borderWidth: 1
|
|
428
|
-
shadowColor: "#000",
|
|
429
|
-
shadowOffset: { width: 0, height: 1 },
|
|
430
|
-
shadowOpacity: 0.05,
|
|
431
|
-
shadowRadius: 2,
|
|
432
|
-
elevation: 1
|
|
426
|
+
borderRadius: 12,
|
|
427
|
+
borderWidth: 1
|
|
433
428
|
},
|
|
434
429
|
header: {
|
|
435
|
-
padding:
|
|
430
|
+
padding: 24,
|
|
436
431
|
paddingBottom: 0,
|
|
437
432
|
gap: 8
|
|
438
433
|
},
|
|
@@ -446,10 +441,10 @@ var styles4 = StyleSheet.create({
|
|
|
446
441
|
lineHeight: 22
|
|
447
442
|
},
|
|
448
443
|
content: {
|
|
449
|
-
padding:
|
|
444
|
+
padding: 24
|
|
450
445
|
},
|
|
451
446
|
footer: {
|
|
452
|
-
padding:
|
|
447
|
+
padding: 24,
|
|
453
448
|
paddingTop: 0,
|
|
454
449
|
flexDirection: "row",
|
|
455
450
|
alignItems: "center"
|
|
@@ -587,19 +582,24 @@ function AlertBanner({ title, description, variant = "default", icon, style }) {
|
|
|
587
582
|
const borderColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.border;
|
|
588
583
|
const titleColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.foreground;
|
|
589
584
|
const descColor = variant === "destructive" ? colors.destructive : variant === "success" ? colors.success : colors.mutedForeground;
|
|
590
|
-
const defaultIcon = variant === "
|
|
591
|
-
return /* @__PURE__ */ React23.createElement(View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] },
|
|
585
|
+
const defaultIcon = variant === "success" ? /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 18, color: titleColor }) : variant === "destructive" ? /* @__PURE__ */ React23.createElement(MaterialIcons, { name: "error-outline", size: 20, color: titleColor }) : /* @__PURE__ */ React23.createElement(Entypo, { name: "info-with-circle", size: 18, color: titleColor });
|
|
586
|
+
return /* @__PURE__ */ React23.createElement(View, { style: [styles8.container, { backgroundColor: colors.card, borderColor }, style] }, /* @__PURE__ */ React23.createElement(View, { style: styles8.icon }, icon ?? defaultIcon), /* @__PURE__ */ React23.createElement(View, { style: styles8.content }, title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles8.title, { color: titleColor }], allowFontScaling: true }, title) : null, description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles8.description, { color: descColor }], allowFontScaling: true }, description) : null));
|
|
592
587
|
}
|
|
593
588
|
var styles8 = StyleSheet.create({
|
|
594
589
|
container: {
|
|
595
590
|
flexDirection: "row",
|
|
596
591
|
borderWidth: 1,
|
|
597
|
-
borderRadius:
|
|
592
|
+
borderRadius: 12,
|
|
598
593
|
padding: 16,
|
|
599
|
-
gap: 12
|
|
594
|
+
gap: 12,
|
|
595
|
+
shadowColor: "#000",
|
|
596
|
+
shadowOffset: { width: 0, height: 4 },
|
|
597
|
+
shadowOpacity: 0.06,
|
|
598
|
+
shadowRadius: 12,
|
|
599
|
+
elevation: 3
|
|
600
600
|
},
|
|
601
601
|
icon: {
|
|
602
|
-
marginTop:
|
|
602
|
+
marginTop: 0
|
|
603
603
|
},
|
|
604
604
|
content: {
|
|
605
605
|
flex: 1,
|
|
@@ -613,10 +613,6 @@ var styles8 = StyleSheet.create({
|
|
|
613
613
|
description: {
|
|
614
614
|
fontSize: 14,
|
|
615
615
|
lineHeight: 20
|
|
616
|
-
},
|
|
617
|
-
defaultIcon: {
|
|
618
|
-
fontSize: 18,
|
|
619
|
-
fontWeight: "700"
|
|
620
616
|
}
|
|
621
617
|
});
|
|
622
618
|
function Progress({ value = 0, max = 100, style }) {
|
|
@@ -789,18 +785,17 @@ function Textarea({
|
|
|
789
785
|
}
|
|
790
786
|
var styles11 = StyleSheet.create({
|
|
791
787
|
container: {
|
|
792
|
-
gap:
|
|
788
|
+
gap: 8
|
|
793
789
|
},
|
|
794
790
|
label: {
|
|
795
791
|
fontSize: 15,
|
|
796
|
-
fontWeight: "500"
|
|
797
|
-
marginBottom: 6
|
|
792
|
+
fontWeight: "500"
|
|
798
793
|
},
|
|
799
794
|
input: {
|
|
800
795
|
borderWidth: 1.5,
|
|
801
|
-
borderRadius:
|
|
802
|
-
paddingHorizontal:
|
|
803
|
-
paddingVertical:
|
|
796
|
+
borderRadius: 8,
|
|
797
|
+
paddingHorizontal: 16,
|
|
798
|
+
paddingVertical: 14,
|
|
804
799
|
fontSize: 17
|
|
805
800
|
},
|
|
806
801
|
helperText: {
|
|
@@ -867,16 +862,16 @@ var styles12 = StyleSheet.create({
|
|
|
867
862
|
gap: 12
|
|
868
863
|
},
|
|
869
864
|
box: {
|
|
870
|
-
width:
|
|
871
|
-
height:
|
|
865
|
+
width: 24,
|
|
866
|
+
height: 24,
|
|
872
867
|
borderRadius: 8,
|
|
873
868
|
borderWidth: 1.5,
|
|
874
869
|
alignItems: "center",
|
|
875
870
|
justifyContent: "center"
|
|
876
871
|
},
|
|
877
872
|
checkmark: {
|
|
878
|
-
width:
|
|
879
|
-
height:
|
|
873
|
+
width: 12,
|
|
874
|
+
height: 7,
|
|
880
875
|
borderLeftWidth: 2,
|
|
881
876
|
borderBottomWidth: 2,
|
|
882
877
|
transform: [{ rotate: "-45deg" }, { translateY: -1 }]
|
|
@@ -1016,54 +1011,48 @@ function Toggle({
|
|
|
1016
1011
|
if (pressed) {
|
|
1017
1012
|
const active = renderProp(activeIcon);
|
|
1018
1013
|
if (active) return /* @__PURE__ */ React23.createElement(React23.Fragment, null, active);
|
|
1019
|
-
return /* @__PURE__ */ React23.createElement(
|
|
1014
|
+
return /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 20, color: colors.primary });
|
|
1020
1015
|
}
|
|
1021
1016
|
const custom = renderProp(icon);
|
|
1022
1017
|
if (custom) return /* @__PURE__ */ React23.createElement(React23.Fragment, null, custom);
|
|
1023
|
-
return /* @__PURE__ */ React23.createElement(
|
|
1018
|
+
return /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "circle", size: 20, color: colors.mutedForeground });
|
|
1024
1019
|
};
|
|
1025
|
-
return /* @__PURE__ */ React23.createElement(Animated.View, { style: { transform: [{ scale }] } }, /* @__PURE__ */ React23.createElement(
|
|
1026
|
-
|
|
1020
|
+
return /* @__PURE__ */ React23.createElement(Animated.View, { style: [{ transform: [{ scale }] }, disabled && styles14.disabled, style] }, /* @__PURE__ */ React23.createElement(
|
|
1021
|
+
TouchableOpacity,
|
|
1027
1022
|
{
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1023
|
+
onPress: () => {
|
|
1024
|
+
Haptics12.selectionAsync();
|
|
1025
|
+
onPressedChange?.(!pressed);
|
|
1026
|
+
},
|
|
1027
|
+
onPressIn: handlePressIn,
|
|
1028
|
+
onPressOut: handlePressOut,
|
|
1029
|
+
disabled,
|
|
1030
|
+
activeOpacity: 1,
|
|
1031
|
+
touchSoundDisabled: true,
|
|
1032
|
+
...props
|
|
1035
1033
|
},
|
|
1036
1034
|
/* @__PURE__ */ React23.createElement(
|
|
1037
|
-
|
|
1035
|
+
Animated.View,
|
|
1038
1036
|
{
|
|
1039
|
-
style:
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
onPressIn: handlePressIn,
|
|
1045
|
-
onPressOut: handlePressOut,
|
|
1046
|
-
disabled,
|
|
1047
|
-
activeOpacity: 1,
|
|
1048
|
-
touchSoundDisabled: true,
|
|
1049
|
-
...props
|
|
1037
|
+
style: [
|
|
1038
|
+
styles14.base,
|
|
1039
|
+
sizeStyles[size],
|
|
1040
|
+
{ borderColor, backgroundColor, borderWidth: 2 }
|
|
1041
|
+
]
|
|
1050
1042
|
},
|
|
1051
|
-
/* @__PURE__ */ React23.createElement(LeftIcon, null),
|
|
1052
|
-
label ? /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null
|
|
1043
|
+
/* @__PURE__ */ React23.createElement(View, { style: styles14.inner }, /* @__PURE__ */ React23.createElement(LeftIcon, null), label ? /* @__PURE__ */ React23.createElement(Animated.Text, { style: [styles14.label, { color: textColor }] }, label) : null)
|
|
1053
1044
|
)
|
|
1054
1045
|
));
|
|
1055
1046
|
}
|
|
1056
1047
|
var styles14 = StyleSheet.create({
|
|
1057
1048
|
base: {
|
|
1058
|
-
borderRadius: 8
|
|
1059
|
-
overflow: "hidden"
|
|
1049
|
+
borderRadius: 8
|
|
1060
1050
|
},
|
|
1061
|
-
|
|
1051
|
+
inner: {
|
|
1062
1052
|
flexDirection: "row",
|
|
1063
1053
|
alignItems: "center",
|
|
1064
1054
|
justifyContent: "center",
|
|
1065
|
-
gap: 8
|
|
1066
|
-
flex: 1
|
|
1055
|
+
gap: 8
|
|
1067
1056
|
},
|
|
1068
1057
|
disabled: {
|
|
1069
1058
|
opacity: 0.45
|
|
@@ -1071,18 +1060,6 @@ var styles14 = StyleSheet.create({
|
|
|
1071
1060
|
label: {
|
|
1072
1061
|
fontSize: 14,
|
|
1073
1062
|
fontWeight: "500"
|
|
1074
|
-
},
|
|
1075
|
-
checkContainer: {
|
|
1076
|
-
width: 24,
|
|
1077
|
-
height: 24,
|
|
1078
|
-
borderRadius: 12,
|
|
1079
|
-
borderWidth: 2,
|
|
1080
|
-
alignItems: "center",
|
|
1081
|
-
justifyContent: "center"
|
|
1082
|
-
},
|
|
1083
|
-
checkMark: {
|
|
1084
|
-
fontSize: 14,
|
|
1085
|
-
fontWeight: "700"
|
|
1086
1063
|
}
|
|
1087
1064
|
});
|
|
1088
1065
|
function RadioItem({
|
|
@@ -1159,7 +1136,7 @@ function RadioGroup({
|
|
|
1159
1136
|
}
|
|
1160
1137
|
var styles15 = StyleSheet.create({
|
|
1161
1138
|
container: {
|
|
1162
|
-
gap:
|
|
1139
|
+
gap: 12
|
|
1163
1140
|
},
|
|
1164
1141
|
horizontal: {
|
|
1165
1142
|
flexDirection: "row",
|
|
@@ -1168,7 +1145,7 @@ var styles15 = StyleSheet.create({
|
|
|
1168
1145
|
row: {
|
|
1169
1146
|
flexDirection: "row",
|
|
1170
1147
|
alignItems: "center",
|
|
1171
|
-
gap:
|
|
1148
|
+
gap: 12
|
|
1172
1149
|
},
|
|
1173
1150
|
radio: {
|
|
1174
1151
|
width: 24,
|
|
@@ -1397,13 +1374,7 @@ function AccordionItemComponent({
|
|
|
1397
1374
|
touchSoundDisabled: true
|
|
1398
1375
|
},
|
|
1399
1376
|
/* @__PURE__ */ React23.createElement(Text, { style: [styles17.triggerText, { color: colors.foreground }] }, item.trigger),
|
|
1400
|
-
/* @__PURE__ */ React23.createElement(
|
|
1401
|
-
ReanimatedAnimated.Text,
|
|
1402
|
-
{
|
|
1403
|
-
style: [styles17.chevron, { color: colors.foreground }, rotationStyle]
|
|
1404
|
-
},
|
|
1405
|
-
"\u25BE"
|
|
1406
|
-
)
|
|
1377
|
+
/* @__PURE__ */ React23.createElement(ReanimatedAnimated.View, { style: [styles17.chevron, rotationStyle] }, /* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-down", size: 20, color: colors.foreground }))
|
|
1407
1378
|
)), /* @__PURE__ */ React23.createElement(ReanimatedAnimated.View, { style: heightStyle }, /* @__PURE__ */ React23.createElement(View, { style: styles17.content, onLayout }, item.content)));
|
|
1408
1379
|
}
|
|
1409
1380
|
function Accordion({ items, type = "single", defaultValue, style }) {
|
|
@@ -1446,7 +1417,6 @@ var styles17 = StyleSheet.create({
|
|
|
1446
1417
|
flex: 1
|
|
1447
1418
|
},
|
|
1448
1419
|
chevron: {
|
|
1449
|
-
fontSize: 18,
|
|
1450
1420
|
marginLeft: 8
|
|
1451
1421
|
},
|
|
1452
1422
|
content: {
|
|
@@ -1664,7 +1634,7 @@ function Select({
|
|
|
1664
1634
|
},
|
|
1665
1635
|
selected?.label ?? placeholder
|
|
1666
1636
|
),
|
|
1667
|
-
/* @__PURE__ */ React23.createElement(
|
|
1637
|
+
/* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-with-circle-down", size: 20, color: colors.mutedForeground })
|
|
1668
1638
|
)) : null, isIOS ? /* @__PURE__ */ React23.createElement(
|
|
1669
1639
|
Modal,
|
|
1670
1640
|
{
|
|
@@ -1753,28 +1723,31 @@ function Select({
|
|
|
1753
1723
|
}
|
|
1754
1724
|
var styles20 = StyleSheet.create({
|
|
1755
1725
|
container: {
|
|
1756
|
-
gap:
|
|
1726
|
+
gap: 8
|
|
1757
1727
|
},
|
|
1758
1728
|
label: {
|
|
1759
1729
|
fontSize: 15,
|
|
1760
|
-
fontWeight: "500"
|
|
1761
|
-
marginBottom: 2
|
|
1730
|
+
fontWeight: "500"
|
|
1762
1731
|
},
|
|
1763
1732
|
trigger: {
|
|
1764
1733
|
flexDirection: "row",
|
|
1765
1734
|
alignItems: "center",
|
|
1766
1735
|
justifyContent: "space-between",
|
|
1767
1736
|
borderWidth: 1.5,
|
|
1768
|
-
borderRadius:
|
|
1769
|
-
paddingHorizontal:
|
|
1770
|
-
paddingVertical:
|
|
1737
|
+
borderRadius: 8,
|
|
1738
|
+
paddingHorizontal: 16,
|
|
1739
|
+
paddingVertical: 14,
|
|
1740
|
+
shadowColor: "#000",
|
|
1741
|
+
shadowOffset: { width: 0, height: 1 },
|
|
1742
|
+
shadowOpacity: 0.04,
|
|
1743
|
+
shadowRadius: 2,
|
|
1744
|
+
elevation: 1
|
|
1771
1745
|
},
|
|
1772
1746
|
triggerText: {
|
|
1773
1747
|
fontSize: 17,
|
|
1774
1748
|
flex: 1
|
|
1775
1749
|
},
|
|
1776
1750
|
chevron: {
|
|
1777
|
-
fontSize: 16,
|
|
1778
1751
|
marginLeft: 8
|
|
1779
1752
|
},
|
|
1780
1753
|
helperText: {
|
|
@@ -1785,15 +1758,15 @@ var styles20 = StyleSheet.create({
|
|
|
1785
1758
|
backgroundColor: "rgba(0,0,0,0.4)"
|
|
1786
1759
|
},
|
|
1787
1760
|
iosSheet: {
|
|
1788
|
-
borderTopLeftRadius:
|
|
1789
|
-
borderTopRightRadius:
|
|
1761
|
+
borderTopLeftRadius: 16,
|
|
1762
|
+
borderTopRightRadius: 16,
|
|
1790
1763
|
paddingBottom: 32
|
|
1791
1764
|
},
|
|
1792
1765
|
iosToolbar: {
|
|
1793
1766
|
flexDirection: "row",
|
|
1794
1767
|
alignItems: "center",
|
|
1795
1768
|
justifyContent: "space-between",
|
|
1796
|
-
paddingHorizontal:
|
|
1769
|
+
paddingHorizontal: 16,
|
|
1797
1770
|
paddingVertical: 12,
|
|
1798
1771
|
borderBottomWidth: 1
|
|
1799
1772
|
},
|
|
@@ -1815,9 +1788,9 @@ var styles20 = StyleSheet.create({
|
|
|
1815
1788
|
},
|
|
1816
1789
|
webPicker: {
|
|
1817
1790
|
borderWidth: 1.5,
|
|
1818
|
-
borderRadius:
|
|
1819
|
-
paddingHorizontal:
|
|
1820
|
-
paddingVertical:
|
|
1791
|
+
borderRadius: 8,
|
|
1792
|
+
paddingHorizontal: 16,
|
|
1793
|
+
paddingVertical: 14,
|
|
1821
1794
|
fontSize: 17
|
|
1822
1795
|
}
|
|
1823
1796
|
});
|
|
@@ -1876,8 +1849,9 @@ function ToastNotification({ item, onDismiss }) {
|
|
|
1876
1849
|
destructive: colors.destructiveForeground,
|
|
1877
1850
|
success: colors.successForeground
|
|
1878
1851
|
}[item.variant ?? "default"];
|
|
1879
|
-
const
|
|
1880
|
-
|
|
1852
|
+
const defaultIcon = item.variant === "success" ? /* @__PURE__ */ React23.createElement(FontAwesome5, { name: "check-circle", size: 22, color: textColor }) : item.variant === "destructive" ? /* @__PURE__ */ React23.createElement(MaterialIcons, { name: "error-outline", size: 24, color: textColor }) : /* @__PURE__ */ React23.createElement(Entypo, { name: "info-with-circle", size: 22, color: textColor });
|
|
1853
|
+
const leftIcon = item.icon ?? defaultIcon;
|
|
1854
|
+
return /* @__PURE__ */ React23.createElement(GestureDetector, { gesture: panGesture }, /* @__PURE__ */ React23.createElement(ReanimatedAnimated.View, { style: [styles21.toast, { backgroundColor: bgColor }, animatedStyle] }, /* @__PURE__ */ React23.createElement(View, { style: styles21.leftIconContainer }, leftIcon), /* @__PURE__ */ React23.createElement(View, { style: styles21.toastContent }, item.title ? /* @__PURE__ */ React23.createElement(Text, { style: [styles21.toastTitle, { color: textColor }] }, item.title) : null, item.description ? /* @__PURE__ */ React23.createElement(Text, { style: [styles21.toastDescription, { color: textColor, opacity: 0.85 }] }, item.description) : null), /* @__PURE__ */ React23.createElement(TouchableOpacity, { onPress: onDismiss, style: styles21.dismissButton, touchSoundDisabled: true }, /* @__PURE__ */ React23.createElement(AntDesign, { name: "close-circle", size: 18, color: textColor }))));
|
|
1881
1855
|
}
|
|
1882
1856
|
function ToastProvider({ children }) {
|
|
1883
1857
|
const [toasts, setToasts] = useState([]);
|
|
@@ -1896,7 +1870,7 @@ function ToastProvider({ children }) {
|
|
|
1896
1870
|
const dismiss = useCallback((id) => {
|
|
1897
1871
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
1898
1872
|
}, []);
|
|
1899
|
-
return /* @__PURE__ */ React23.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23.createElement(View, { style: [styles21.container, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1873
|
+
return /* @__PURE__ */ React23.createElement(ToastContext.Provider, { value: { toast, dismiss } }, children, /* @__PURE__ */ React23.createElement(View, { style: [styles21.container, Platform.OS === "web" && styles21.containerWeb, { top: insets.top + 8 }], pointerEvents: "box-none" }, toasts.map((item) => /* @__PURE__ */ React23.createElement(ToastNotification, { key: item.id, item, onDismiss: () => dismiss(item.id) }))));
|
|
1900
1874
|
}
|
|
1901
1875
|
var styles21 = StyleSheet.create({
|
|
1902
1876
|
container: {
|
|
@@ -1906,6 +1880,12 @@ var styles21 = StyleSheet.create({
|
|
|
1906
1880
|
gap: 8,
|
|
1907
1881
|
zIndex: 9999
|
|
1908
1882
|
},
|
|
1883
|
+
containerWeb: {
|
|
1884
|
+
left: void 0,
|
|
1885
|
+
right: void 0,
|
|
1886
|
+
alignSelf: "center",
|
|
1887
|
+
width: 400
|
|
1888
|
+
},
|
|
1909
1889
|
toast: {
|
|
1910
1890
|
flexDirection: "row",
|
|
1911
1891
|
alignItems: "center",
|
|
@@ -1923,15 +1903,11 @@ var styles21 = StyleSheet.create({
|
|
|
1923
1903
|
gap: 4
|
|
1924
1904
|
},
|
|
1925
1905
|
leftIconContainer: {
|
|
1926
|
-
width:
|
|
1906
|
+
width: 40,
|
|
1927
1907
|
alignItems: "center",
|
|
1928
1908
|
justifyContent: "center",
|
|
1929
1909
|
marginRight: 8
|
|
1930
1910
|
},
|
|
1931
|
-
defaultIcon: {
|
|
1932
|
-
fontSize: 22,
|
|
1933
|
-
fontWeight: "700"
|
|
1934
|
-
},
|
|
1935
1911
|
toastTitle: {
|
|
1936
1912
|
fontSize: 15,
|
|
1937
1913
|
fontWeight: "600"
|
|
@@ -1940,11 +1916,8 @@ var styles21 = StyleSheet.create({
|
|
|
1940
1916
|
fontSize: 14
|
|
1941
1917
|
},
|
|
1942
1918
|
dismissButton: {
|
|
1943
|
-
padding:
|
|
1919
|
+
padding: 8,
|
|
1944
1920
|
marginLeft: 4
|
|
1945
|
-
},
|
|
1946
|
-
dismissIcon: {
|
|
1947
|
-
fontSize: 14
|
|
1948
1921
|
}
|
|
1949
1922
|
});
|
|
1950
1923
|
function formatCurrency(raw, separator) {
|
|
@@ -2018,7 +1991,24 @@ var styles22 = StyleSheet.create({
|
|
|
2018
1991
|
}
|
|
2019
1992
|
});
|
|
2020
1993
|
var nativeDriver4 = Platform.OS !== "web";
|
|
2021
|
-
function ListItem({
|
|
1994
|
+
function ListItem({
|
|
1995
|
+
leftRender,
|
|
1996
|
+
rightRender,
|
|
1997
|
+
trailing,
|
|
1998
|
+
icon,
|
|
1999
|
+
title,
|
|
2000
|
+
subtitle,
|
|
2001
|
+
caption,
|
|
2002
|
+
variant = "plain",
|
|
2003
|
+
showChevron = false,
|
|
2004
|
+
showSeparator = false,
|
|
2005
|
+
onPress,
|
|
2006
|
+
disabled,
|
|
2007
|
+
style,
|
|
2008
|
+
titleStyle,
|
|
2009
|
+
subtitleStyle,
|
|
2010
|
+
captionStyle
|
|
2011
|
+
}) {
|
|
2022
2012
|
const { colors } = useTheme();
|
|
2023
2013
|
const scale = useRef(new Animated.Value(1)).current;
|
|
2024
2014
|
const handlePressIn = () => {
|
|
@@ -2042,10 +2032,23 @@ function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style })
|
|
|
2042
2032
|
Haptics12.selectionAsync();
|
|
2043
2033
|
onPress?.();
|
|
2044
2034
|
};
|
|
2035
|
+
const effectiveLeft = leftRender ?? icon;
|
|
2036
|
+
const effectiveRight = rightRender ?? trailing;
|
|
2037
|
+
const cardStyle = variant === "card" ? {
|
|
2038
|
+
backgroundColor: colors.card,
|
|
2039
|
+
borderRadius: 12,
|
|
2040
|
+
borderWidth: 1,
|
|
2041
|
+
borderColor: colors.border,
|
|
2042
|
+
shadowColor: "#000",
|
|
2043
|
+
shadowOffset: { width: 0, height: 2 },
|
|
2044
|
+
shadowOpacity: 0.06,
|
|
2045
|
+
shadowRadius: 6,
|
|
2046
|
+
elevation: 2
|
|
2047
|
+
} : {};
|
|
2045
2048
|
return /* @__PURE__ */ React23.createElement(Animated.View, { style: [{ transform: [{ scale }] }, disabled && styles23.disabled] }, /* @__PURE__ */ React23.createElement(
|
|
2046
2049
|
TouchableOpacity,
|
|
2047
2050
|
{
|
|
2048
|
-
style: [styles23.container, style],
|
|
2051
|
+
style: [styles23.container, cardStyle, style],
|
|
2049
2052
|
onPress: onPress ? handlePress : void 0,
|
|
2050
2053
|
onPressIn: handlePressIn,
|
|
2051
2054
|
onPressOut: handlePressOut,
|
|
@@ -2053,10 +2056,49 @@ function ListItem({ icon, title, subtitle, trailing, onPress, disabled, style })
|
|
|
2053
2056
|
activeOpacity: 1,
|
|
2054
2057
|
touchSoundDisabled: true
|
|
2055
2058
|
},
|
|
2056
|
-
|
|
2057
|
-
/* @__PURE__ */ React23.createElement(View, { style: styles23.content }, /* @__PURE__ */ React23.createElement(
|
|
2058
|
-
|
|
2059
|
-
|
|
2059
|
+
effectiveLeft ? /* @__PURE__ */ React23.createElement(View, { style: styles23.leftContainer }, effectiveLeft) : null,
|
|
2060
|
+
/* @__PURE__ */ React23.createElement(View, { style: styles23.content }, /* @__PURE__ */ React23.createElement(
|
|
2061
|
+
Text,
|
|
2062
|
+
{
|
|
2063
|
+
style: [styles23.title, { color: colors.foreground }, titleStyle],
|
|
2064
|
+
numberOfLines: 2,
|
|
2065
|
+
allowFontScaling: true
|
|
2066
|
+
},
|
|
2067
|
+
title
|
|
2068
|
+
), subtitle ? /* @__PURE__ */ React23.createElement(
|
|
2069
|
+
Text,
|
|
2070
|
+
{
|
|
2071
|
+
style: [styles23.subtitle, { color: colors.mutedForeground }, subtitleStyle],
|
|
2072
|
+
numberOfLines: 2,
|
|
2073
|
+
allowFontScaling: true
|
|
2074
|
+
},
|
|
2075
|
+
subtitle
|
|
2076
|
+
) : null, caption ? /* @__PURE__ */ React23.createElement(
|
|
2077
|
+
Text,
|
|
2078
|
+
{
|
|
2079
|
+
style: [styles23.caption, { color: colors.mutedForeground }, captionStyle],
|
|
2080
|
+
numberOfLines: 1,
|
|
2081
|
+
allowFontScaling: true
|
|
2082
|
+
},
|
|
2083
|
+
caption
|
|
2084
|
+
) : null),
|
|
2085
|
+
effectiveRight !== void 0 ? /* @__PURE__ */ React23.createElement(View, { style: styles23.rightContainer }, typeof effectiveRight === "string" ? /* @__PURE__ */ React23.createElement(
|
|
2086
|
+
Text,
|
|
2087
|
+
{
|
|
2088
|
+
style: [styles23.rightText, { color: colors.mutedForeground }],
|
|
2089
|
+
allowFontScaling: true
|
|
2090
|
+
},
|
|
2091
|
+
effectiveRight
|
|
2092
|
+
) : effectiveRight) : showChevron ? /* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-with-circle-right", size: 20, color: colors.mutedForeground }) : null
|
|
2093
|
+
), showSeparator ? /* @__PURE__ */ React23.createElement(
|
|
2094
|
+
View,
|
|
2095
|
+
{
|
|
2096
|
+
style: [
|
|
2097
|
+
styles23.separator,
|
|
2098
|
+
{ backgroundColor: colors.border, marginLeft: effectiveLeft ? 16 + 44 + 12 : 16 }
|
|
2099
|
+
]
|
|
2100
|
+
}
|
|
2101
|
+
) : null);
|
|
2060
2102
|
}
|
|
2061
2103
|
var styles23 = StyleSheet.create({
|
|
2062
2104
|
container: {
|
|
@@ -2066,26 +2108,49 @@ var styles23 = StyleSheet.create({
|
|
|
2066
2108
|
paddingVertical: 14,
|
|
2067
2109
|
gap: 12
|
|
2068
2110
|
},
|
|
2069
|
-
|
|
2111
|
+
leftContainer: {
|
|
2112
|
+
width: 44,
|
|
2113
|
+
height: 44,
|
|
2070
2114
|
alignItems: "center",
|
|
2071
|
-
justifyContent: "center"
|
|
2115
|
+
justifyContent: "center",
|
|
2116
|
+
flexShrink: 0
|
|
2072
2117
|
},
|
|
2073
2118
|
content: {
|
|
2074
2119
|
flex: 1,
|
|
2075
|
-
gap:
|
|
2120
|
+
gap: 4
|
|
2076
2121
|
},
|
|
2077
2122
|
title: {
|
|
2078
|
-
fontSize:
|
|
2123
|
+
fontSize: 17,
|
|
2079
2124
|
fontWeight: "500",
|
|
2080
|
-
lineHeight:
|
|
2125
|
+
lineHeight: 24
|
|
2081
2126
|
},
|
|
2082
2127
|
subtitle: {
|
|
2083
|
-
fontSize:
|
|
2084
|
-
|
|
2128
|
+
fontSize: 14,
|
|
2129
|
+
fontWeight: "400",
|
|
2130
|
+
lineHeight: 20
|
|
2131
|
+
},
|
|
2132
|
+
caption: {
|
|
2133
|
+
fontSize: 12,
|
|
2134
|
+
fontWeight: "400",
|
|
2135
|
+
lineHeight: 16,
|
|
2136
|
+
opacity: 0.7
|
|
2137
|
+
},
|
|
2138
|
+
rightContainer: {
|
|
2139
|
+
alignItems: "flex-end",
|
|
2140
|
+
justifyContent: "center",
|
|
2141
|
+
flexShrink: 0,
|
|
2142
|
+
maxWidth: 160
|
|
2085
2143
|
},
|
|
2086
|
-
|
|
2144
|
+
rightText: {
|
|
2087
2145
|
fontSize: 15
|
|
2088
2146
|
},
|
|
2147
|
+
chevron: {
|
|
2148
|
+
marginLeft: 4
|
|
2149
|
+
},
|
|
2150
|
+
separator: {
|
|
2151
|
+
height: StyleSheet.hairlineWidth,
|
|
2152
|
+
marginRight: 16
|
|
2153
|
+
},
|
|
2089
2154
|
disabled: {
|
|
2090
2155
|
opacity: 0.45
|
|
2091
2156
|
}
|
|
@@ -2318,7 +2383,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2318
2383
|
activeOpacity: 0.6,
|
|
2319
2384
|
touchSoundDisabled: true
|
|
2320
2385
|
},
|
|
2321
|
-
/* @__PURE__ */ React23.createElement(
|
|
2386
|
+
/* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-left", size: 22, color: colors.foreground })
|
|
2322
2387
|
), /* @__PURE__ */ React23.createElement(Text, { style: [styles27.label, { color: colors.foreground }], allowFontScaling: true }, MONTH_NAMES[value.month - 1], " ", value.year), /* @__PURE__ */ React23.createElement(
|
|
2323
2388
|
TouchableOpacity,
|
|
2324
2389
|
{
|
|
@@ -2327,7 +2392,7 @@ function MonthPicker({ value, onChange, style }) {
|
|
|
2327
2392
|
activeOpacity: 0.6,
|
|
2328
2393
|
touchSoundDisabled: true
|
|
2329
2394
|
},
|
|
2330
|
-
/* @__PURE__ */ React23.createElement(
|
|
2395
|
+
/* @__PURE__ */ React23.createElement(Entypo, { name: "chevron-right", size: 22, color: colors.foreground })
|
|
2331
2396
|
));
|
|
2332
2397
|
}
|
|
2333
2398
|
var styles27 = StyleSheet.create({
|
|
@@ -2342,10 +2407,6 @@ var styles27 = StyleSheet.create({
|
|
|
2342
2407
|
alignItems: "center",
|
|
2343
2408
|
justifyContent: "center"
|
|
2344
2409
|
},
|
|
2345
|
-
arrowText: {
|
|
2346
|
-
fontSize: 24,
|
|
2347
|
-
lineHeight: 30
|
|
2348
|
-
},
|
|
2349
2410
|
label: {
|
|
2350
2411
|
fontSize: 17,
|
|
2351
2412
|
fontWeight: "500",
|