react-native-exp-fig 0.1.9 → 0.1.10

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.
Files changed (52) hide show
  1. package/package.json +1 -1
  2. package/src/common/icons-svg/agent/index.tsx +40 -0
  3. package/src/common/icons-svg/bed/index.tsx +41 -0
  4. package/src/common/icons-svg/car/index.tsx +29 -0
  5. package/src/common/icons-svg/check-outline/index.tsx +42 -0
  6. package/src/common/icons-svg/coffee/index.tsx +43 -0
  7. package/src/common/icons-svg/constants/index.ts +63 -55
  8. package/src/common/icons-svg/index.tsx +255 -217
  9. package/src/common/icons-svg/pencil/index.tsx +32 -0
  10. package/src/common/icons-svg/refresh-ccw-dot/index.tsx +32 -0
  11. package/src/common/icons-svg/truck-activity/index.tsx +29 -0
  12. package/src/components/activities-daily/index.tsx +116 -0
  13. package/src/components/activities-daily/interface.d.ts +22 -0
  14. package/src/components/activities-progress/index.tsx +162 -0
  15. package/src/components/activities-progress/interface.d.ts +41 -0
  16. package/src/components/avatar-profile/index.tsx +95 -0
  17. package/src/components/avatar-profile/interface.d.ts +39 -0
  18. package/src/components/card-history/index.tsx +149 -150
  19. package/src/components/card-loading/index.tsx +16 -1
  20. package/src/components/card-work-session/index.tsx +187 -185
  21. package/src/components/check-box/index.tsx +94 -125
  22. package/src/components/check-box/interface.d.ts +31 -27
  23. package/src/components/coil/index.tsx +3 -3
  24. package/src/components/coil/interface.d.ts +1 -1
  25. package/src/components/filter-date-selector/index.tsx +101 -89
  26. package/src/components/history-details/index.tsx +100 -0
  27. package/src/components/history-details/interface.d.ts +18 -0
  28. package/src/components/image-capture-with-remove/index.tsx +8 -2
  29. package/src/components/image-capture-with-remove/interface.d.ts +3 -0
  30. package/src/components/notification-loading/index.tsx +18 -7
  31. package/src/components/notification-loading/interface.d.ts +4 -0
  32. package/src/components/profile-menu-option/index.tsx +65 -0
  33. package/src/components/profile-menu-option/interface.d.ts +42 -0
  34. package/src/components/step-indicator/index.tsx +164 -164
  35. package/src/components/step-indicator/interface.d.ts +34 -34
  36. package/src/components/user-profile/index.tsx +58 -70
  37. package/src/index.ts +42 -37
  38. package/src/stories/activities-daily/activities-daily.stories.tsx +40 -0
  39. package/src/stories/activities-progress/activities-progress.stories.tsx +61 -0
  40. package/src/stories/avatar-profile/avatar-profile.stories.tsx +32 -0
  41. package/src/stories/card-loading/card-loading.stories.tsx +2 -2
  42. package/src/stories/check-box/check-box.stories.tsx +81 -83
  43. package/src/stories/coil/coil.stories.tsx +26 -3
  44. package/src/stories/filter-date-selector/filter-date-selector.stories.tsx +122 -93
  45. package/src/stories/history-details/history-details.stories.tsx +36 -0
  46. package/src/stories/image-capture-with-remove/image-capture-with-remove.stories.tsx +10 -0
  47. package/src/stories/notification-loading/notification-loading.stories.tsx +15 -0
  48. package/src/stories/profile-menu-option/profile-menu-option.stories.tsx +70 -0
  49. package/src/stories/step-indicator/step-indicator.stories.tsx +124 -116
  50. package/src/styles/theme/theme.ts +2 -0
  51. package/src/utils/format-data/index.ts +66 -40
  52. package/src/utils/status-color/return-color.ts +12 -4
@@ -0,0 +1,116 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+ import { TouchableOpacity } from "react-native";
6
+
7
+ // components
8
+ import { Box } from "../../components/box";
9
+ import { Typography } from "../../components/typography";
10
+
11
+ //commons/ icons
12
+ import { Icons } from "../../common/icons-svg";
13
+
14
+ // styles
15
+ import { theme } from "../../styles/theme/theme";
16
+
17
+ // typings
18
+ import { IActivitiesDaily } from "./interface";
19
+
20
+ const ActivitiesDaily: React.FC<IActivitiesDaily> = ({ handleActivity }) => {
21
+ return (
22
+ <Box
23
+ testID={"activities-daily"}
24
+ width={"100%"}
25
+ height={100}
26
+ backgroundColor={theme.colors.neutral[25]}
27
+ borderStyled={{
28
+ borderRadius: theme.borderWidths.thick_medium,
29
+ }}
30
+ >
31
+ <Box
32
+ width={"100%"}
33
+ height={30}
34
+ backgroundColor={theme.colors.blue[400]}
35
+ borderStyled={{
36
+ borderTopLeftRadius: theme.borderWidths.thin_bold,
37
+ borderTopRightRadius: theme.borderWidths.thin_bold,
38
+ borderColor: theme.colors.blue[400],
39
+ }}
40
+ flexStyle={{
41
+ justifyContent: "center",
42
+ }}
43
+ >
44
+ <Typography
45
+ text={"Atividades diárias"}
46
+ color={theme.colors.neutral[25]}
47
+ size={theme.fontSizes.sm}
48
+ fontFamily={theme.fonts.inter_medium_500}
49
+ fontWeight={"500"}
50
+ lineHeight={theme.fontSizes.lg}
51
+ marginLeft={theme.margins["2xs"]}
52
+ />
53
+ </Box>
54
+ <Box
55
+ width={"100%"}
56
+ flexStyle={{
57
+ flexDirection: "row",
58
+ justifyContent: "space-between",
59
+ }}
60
+ paddingStyle={{
61
+ padding: theme.paddings["2xs"],
62
+ }}
63
+ >
64
+ <Typography
65
+ text={"Selecione uma das opções"}
66
+ color={theme.colors.blue[500]}
67
+ size={theme.fontSizes.xs}
68
+ fontFamily={theme.fonts.inter_bold_700}
69
+ fontWeight={"700"}
70
+ lineHeight={theme.fontSizes.md}
71
+ />
72
+
73
+ <Box flexStyle={{ flexDirection: "row" }} marginStyle={{ marginTop: 5 }}>
74
+ <TouchableOpacity
75
+ activeOpacity={0.7}
76
+ style={{ marginRight: theme.margins.xl, alignItems: "center" }}
77
+ onPress={() => handleActivity("trabalho")}
78
+ >
79
+ <Icons icon={"TRUCK_ACTIVITY"} />
80
+ <Typography
81
+ text={"Trabalho"}
82
+ color={theme.colors.black[25]}
83
+ size={theme.fontSizes.xs}
84
+ fontFamily={theme.fonts.inter_bold_700}
85
+ fontWeight={"700"}
86
+ lineHeight={theme.fontSizes.sm}
87
+ marginTop={4}
88
+ />
89
+ </TouchableOpacity>
90
+
91
+ <TouchableOpacity
92
+ activeOpacity={0.7}
93
+ style={{ alignItems: "center" }}
94
+ onPress={() => handleActivity("descanso")}
95
+ >
96
+ <Icons icon={"BED"} />
97
+ <Typography
98
+ text={"Descanso"}
99
+ color={theme.colors.black[25]}
100
+ size={theme.fontSizes.xs}
101
+ fontFamily={theme.fonts.inter_bold_700}
102
+ fontWeight={"700"}
103
+ lineHeight={theme.fontSizes.sm}
104
+ marginTop={4}
105
+ />
106
+ </TouchableOpacity>
107
+ </Box>
108
+ </Box>
109
+ </Box>
110
+ );
111
+ };
112
+
113
+ /**
114
+ * EXPORTS
115
+ */
116
+ export { ActivitiesDaily };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+
5
+ import { type ViewProps } from "react-native";
6
+ /**
7
+ * INTERFACE
8
+ */
9
+ import { IGlobalCss } from "../../styles/global/interface";
10
+
11
+ interface IActivitiesDaily extends ViewProps, IGlobalCss {
12
+ /**
13
+ * function que pega o valor do tipo de atividade
14
+ */
15
+ // eslint-disable-next-line no-unused-vars
16
+ handleActivity: (activity: string) => void;
17
+ }
18
+
19
+ /**
20
+ * EXPORT
21
+ */
22
+ export type { IActivitiesDaily };
@@ -0,0 +1,162 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+
6
+ // components
7
+ import { Box } from "../../components/box";
8
+ import { Typography } from "../../components/typography";
9
+
10
+ //commons/ icons
11
+ import { Icons } from "../../common/icons-svg";
12
+
13
+ // styles
14
+ import { theme } from "../../styles/theme/theme";
15
+
16
+ // typings
17
+ import { IActivitiesProgress } from "./interface";
18
+
19
+ const ActivitiesProgress: React.FC<IActivitiesProgress> = ({
20
+ data_fim = "11/05/2025",
21
+ duracao = "00:30",
22
+ data_inicio = "17:20",
23
+ titleLabel = "Descanso",
24
+ situation = true,
25
+ }) => {
26
+ return (
27
+ <Box
28
+ width={"100%"}
29
+ height={100}
30
+ backgroundColor={theme.colors.neutral[25]}
31
+ borderStyled={{ borderRadius: theme.borderWidths.thick_medium }}
32
+ >
33
+ <Box
34
+ width={"100%"}
35
+ height={30}
36
+ backgroundColor={theme.colors.blue[400]}
37
+ borderStyled={{
38
+ borderTopLeftRadius: theme.borderWidths.thin_bold,
39
+ borderTopRightRadius: theme.borderWidths.thin_bold,
40
+ borderColor: theme.colors.blue[400],
41
+ }}
42
+ flexStyle={{
43
+ justifyContent: "space-between",
44
+ flexDirection: "row",
45
+ }}
46
+ >
47
+ <Box
48
+ flexStyle={{
49
+ flexDirection: "row",
50
+ alignItems: "center",
51
+ }}
52
+ >
53
+ <Typography
54
+ text={"Status: "}
55
+ color={theme.colors.neutral[25]}
56
+ size={theme.fontSizes.sm}
57
+ fontFamily={theme.fonts.inter_medium_500}
58
+ fontWeight={"500"}
59
+ lineHeight={theme.fontSizes.lg}
60
+ marginLeft={theme.margins["2xs"]}
61
+ />
62
+ <Typography
63
+ text={titleLabel}
64
+ color={titleLabel === "Trabalho" ? theme.colors.green[400] : theme.colors.orange[500]}
65
+ size={theme.fontSizes.sm}
66
+ fontFamily={theme.fonts.inter_semi_bold_600}
67
+ fontWeight={"600"}
68
+ lineHeight={theme.fontSizes.lg}
69
+ />
70
+ </Box>
71
+
72
+ <Box
73
+ style={{ marginRight: theme.margins["2xs"], marginTop: theme.margins["1xs"] }}
74
+ height={20}
75
+ width={20}
76
+ >
77
+ <Icons
78
+ icon={"CHECK_OUTLINE"}
79
+ color={situation ? theme.colors.green[400] : theme.colors.orange[500]}
80
+ />
81
+ </Box>
82
+ </Box>
83
+
84
+ <Box
85
+ width={"100%"}
86
+ flexStyle={{
87
+ flexDirection: "row",
88
+ justifyContent: "space-between",
89
+ }}
90
+ paddingStyle={{
91
+ padding: theme.paddings["2xs"],
92
+ }}
93
+ >
94
+ <Box height={20} flexStyle={{ flexDirection: "row", alignItems: "center" }}>
95
+ <Icons icon={"COFFEE"} size={24} />
96
+ <Typography
97
+ text={data_fim}
98
+ color={theme.colors.black[25]}
99
+ size={theme.fontSizes.xs}
100
+ fontFamily={theme.fonts.inter_bold_700}
101
+ fontWeight={"700"}
102
+ lineHeight={theme.fontSizes.lg}
103
+ marginLeft={4}
104
+ />
105
+ </Box>
106
+
107
+ <Box height={50} flexStyle={{ flexDirection: "row", alignItems: "flex-end" }}>
108
+ <Box
109
+ flexStyle={{ alignItems: "center" }}
110
+ marginStyle={{ marginRight: theme.margins["2xs"] }}
111
+ >
112
+ <Typography
113
+ text={data_inicio}
114
+ color={theme.colors.blue[500]}
115
+ size={theme.fontSizes.sm}
116
+ fontFamily={theme.fonts.inter_bold}
117
+ fontWeight={"700"}
118
+ lineHeight={theme.fontSizes.md}
119
+ />
120
+ <Typography
121
+ text={"INICIO"}
122
+ color={theme.colors.gray[600]}
123
+ size={theme.fontSizes["2xs"]}
124
+ fontFamily={theme.fonts.inter_medium_500}
125
+ fontWeight={"500"}
126
+ lineHeight={theme.fontSizes.xs}
127
+ marginTop={4}
128
+ />
129
+ </Box>
130
+
131
+ <Box
132
+ flexStyle={{ alignItems: "center" }}
133
+ marginStyle={{ marginRight: theme.margins["2xs"] }}
134
+ >
135
+ <Typography
136
+ text={duracao}
137
+ color={theme.colors.blue[500]}
138
+ size={theme.fontSizes.sm}
139
+ fontFamily={theme.fonts.inter_bold}
140
+ fontWeight={"700"}
141
+ lineHeight={theme.fontSizes.md}
142
+ />
143
+ <Typography
144
+ text={"DURAÇÃO"}
145
+ color={theme.colors.gray[600]}
146
+ size={theme.fontSizes["2xs"]}
147
+ fontFamily={theme.fonts.inter_medium_500}
148
+ fontWeight={"500"}
149
+ lineHeight={theme.fontSizes.xs}
150
+ marginTop={4}
151
+ />
152
+ </Box>
153
+ </Box>
154
+ </Box>
155
+ </Box>
156
+ );
157
+ };
158
+
159
+ /**
160
+ * EXPORTS
161
+ */
162
+ export { ActivitiesProgress };
@@ -0,0 +1,41 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+
5
+ import { type ViewProps } from "react-native";
6
+ /**
7
+ * INTERFACE
8
+ */
9
+ import { IGlobalCss } from "../../styles/global/interface";
10
+
11
+ interface IActivitiesProgress extends ViewProps, IGlobalCss {
12
+ /**
13
+ * Data de fim da atividade
14
+ */
15
+ data_fim?: string;
16
+
17
+ /**
18
+ * Duração da atividade
19
+ */
20
+ duracao?: string;
21
+
22
+ /**
23
+ * Horário de início da atividade
24
+ */
25
+ data_inicio?: string;
26
+
27
+ /**
28
+ * Título/label da atividade
29
+ */
30
+ titleLabel?: string;
31
+
32
+ /**
33
+ * Situação da atividade
34
+ */
35
+ situation: boolean;
36
+ }
37
+
38
+ /**
39
+ * EXPORT
40
+ */
41
+ export type { IActivitiesProgress };
@@ -0,0 +1,95 @@
1
+ import React from "react";
2
+ import { TouchableOpacity, Image } from "react-native";
3
+
4
+ // components
5
+ import { Box } from "../box";
6
+ import { Typography } from "../typography";
7
+
8
+ // styles
9
+ import { theme } from "../../styles/theme/theme";
10
+
11
+ // icons
12
+ import { Icons } from "../../common/icons-svg";
13
+
14
+ // types
15
+ import { IAvatarProfile } from "./interface";
16
+
17
+ const AvatarProfile: React.FC<IAvatarProfile> = ({
18
+ avatar,
19
+ isEdit = false,
20
+ handleTakePicker,
21
+ name,
22
+ email,
23
+ testID,
24
+ }) => {
25
+ return (
26
+ <Box flexStyle={{ justifyContent: "center", alignItems: "center" }}>
27
+ <Box
28
+ backgroundColor={theme.colors.neutral[25]}
29
+ width={96}
30
+ height={96}
31
+ borderStyled={{ borderRadius: 50 }}
32
+ flexStyle={{ justifyContent: "center", alignItems: "center" }}
33
+ testID={testID}
34
+ >
35
+ <Image
36
+ source={{ uri: avatar ?? "" }}
37
+ alt={avatar ?? "foto de perfil"}
38
+ style={{
39
+ width: 90,
40
+ height: 90,
41
+ borderRadius: 45,
42
+ borderWidth: theme.borderWidths.thin_medium,
43
+ borderColor: theme.colors.black[25],
44
+ }}
45
+ />
46
+ {isEdit && (
47
+ <Box
48
+ width={20}
49
+ height={20}
50
+ backgroundColor={theme.colors.blue[350]}
51
+ borderStyled={{
52
+ borderRadius: 10,
53
+ borderWidth: theme.borderWidths.thin_medium,
54
+ borderColor: theme.colors.black[25],
55
+ }}
56
+ flexStyle={{ justifyContent: "center", alignItems: "center" }}
57
+ style={{
58
+ position: "absolute",
59
+ bottom: 5,
60
+ right: 5,
61
+ }}
62
+ >
63
+ <TouchableOpacity
64
+ activeOpacity={0.7}
65
+ onPress={handleTakePicker}
66
+ testID="avatar-profile"
67
+ >
68
+ <Icons size={12} icon={"PENCIL"} />
69
+ </TouchableOpacity>
70
+ </Box>
71
+ )}
72
+ </Box>
73
+
74
+ {/* Informações do usuário */}
75
+ <Typography
76
+ text={name}
77
+ size={theme.fontSizes.xl}
78
+ fontFamily={theme.fonts.inter_bold_700}
79
+ fontWeight={"700"}
80
+ lineHeight={theme.fontSizes["2xl"]}
81
+ color={theme.colors.black[100]}
82
+ />
83
+ <Typography
84
+ text={email}
85
+ size={theme.fontSizes.xs}
86
+ fontFamily={theme.fonts.inter_regular_400}
87
+ fontWeight={"400"}
88
+ lineHeight={theme.fontSizes.sm}
89
+ color={theme.colors.gray[900]}
90
+ />
91
+ </Box>
92
+ );
93
+ };
94
+
95
+ export { AvatarProfile };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import { ViewProps } from "react-native";
5
+
6
+ // typing
7
+ import { IGlobalCss } from "../../styles/global/interface";
8
+
9
+ interface IAvatarProfile extends ViewProps, IGlobalCss {
10
+ /**
11
+ * Função que tira uma foto e editar.
12
+ */
13
+ handleTakePicker?: () => void;
14
+
15
+ /**
16
+ * foto do usuário.
17
+ */
18
+ avatar: string;
19
+
20
+ /**
21
+ * nome do usuário.
22
+ */
23
+ name: string;
24
+
25
+ /**
26
+ * email do usuário.
27
+ */
28
+ email: string;
29
+
30
+ /**
31
+ * A propriedade para editar a foto do usuário.
32
+ */
33
+ isEdit: boolean;
34
+ }
35
+
36
+ /**
37
+ * EXPORTS
38
+ */
39
+ export type { IAvatarProfile };