eletrotupi / tcc/ frontend/app/(tabs)/actions.tsxbee79a3ab499c11539d5799b6c9cb1fc0d8ba1e0
4.9 KB | 176 lines Raw
1
import { View, StyleSheet } from "react-native";
2
import { Text } from "@/components/ui/Text";
3
import { ThemedView } from "@/components/misc/themed-view";
4
import { ScreenLayout } from "@/components/ui/ScreenLayout";
5
import { useAuth } from "@/context/AuthContext";
6
import { Section, SectionHeader } from "@/components/ui/Sections";
7
import { Card, SubtleInfoCard } from "@/components/ui/Cards";
8
import { Grid, Col, Row, Between } from "@/components/ui/LayoutHelpers";
9
import { Button } from "@/components/ui/Button";
10
import {
11
  Shadows,
12
  Colors,
13
  Typography,
14
  Spacing,
15
  BorderRadius,
16
} from "@/constants/theme";
17
import { Ionicons, Octicons } from "@expo/vector-icons";
18
import { Link, router } from "expo-router";
19

20
export default function Actions() {
21
  const { user } = useAuth();
22

23
  const onPressSleep = () => {
24
    router.push("/sleep/new");
25
  };
26

27
  const onPressTrigger = () => {
28
    router.push("/triggers/new");
29
  };
30

31
  return (
32
    <ScreenLayout
33
      userName={user?.firstName}
34
      userAvatar={user?.avatarURL}
35
      showNotificationBadge={true}
36
    >
37
      <Section>
38
        <SectionHeader
39
          title="Ações de Cuidado"
40
          subtitle="Registre atividades, acompanhe medicamentos e mantenha sua rotina organizada"
41
        ></SectionHeader>
42

43
        <Button
44
          title="Registrar ação de cuidado"
45
          size="large"
46
          onPress={() => router.push('/care-actions/new')}
47
          style={{ ...Shadows.lg }}
48
        />
49
      </Section>
50

51
      <Card style={{ padding: Spacing.cardGap, height: 150 }} onPress={() => router.push('/medicine-regimens')}>
52
        <View style={[styles.cardIcon, { backgroundColor: "#E7FDEF" }]}>
53
          <Ionicons name="bandage-outline" size={20} color="#13EC5B" />
54
        </View>
55

56
        <Text style={styles.cardTitleHeadline}>Gerenciar Medicamentos</Text>
57

58
        <Text style={styles.cardDescriptionHeadline}>
59
          Organize seus medicamentos, horários e doses
60
        </Text>
61
      </Card>
62

63
      <Grid gap={4}>
64
        <Card onPress={onPressSleep} style={{ padding: Spacing.cardGap }}>
65
          <View style={[styles.cardIcon, { backgroundColor: "#EFF6FF" }]}>
66
            <Ionicons name="moon-outline" size={20} color="#2563EB" />
67
          </View>
68

69
          <Text style={styles.cardTitle}>Registrar Sono</Text>
70

71
          <Text style={styles.cardDescription}>
72
            Registre a duração e a qualidade do sono
73
          </Text>
74
        </Card>
75

76
        <Card style={{ padding: Spacing.cardGap }} onPress={onPressTrigger}>
77
          <View style={[styles.cardIcon, { backgroundColor: "#FFF7ED" }]}>
78
            <Ionicons name="flash-outline" size={20} color="#EA580C" />
79
          </View>
80

81
          <Text style={styles.cardTitle}>Registrar Gatilho</Text>
82

83
          <Text style={styles.cardDescription}>
84
            Registre eventos que aferatam seu humor
85
          </Text>
86
        </Card>
87
      </Grid>
88

89
      <Card style={styles.disclaimerCard}>
90
        <View style={styles.disclaimerTitleContainer}>
91
          <Ionicons
92
            name="information-circle-outline"
93
            size={20}
94
            color={Colors.light.tint}
95
          />
96
          <Text style={styles.disclaimerTitleText}>Nota de Apoio</Text>
97
        </View>
98

99
        <Text style={styles.disclaimerText}>
100
          Este aplicativo é um assistente digital para auxiliar no seu
101
          monitoramento diário. Em caso de emergência ou sintomas graves, entre
102
          em contato imediatamente com seu médico ou serviços de saúde locais.
103
        </Text>
104

105
        <View style={styles.disclaimerHelp}>
106
          <Link href="https://expo.dev" style={styles.disclaimerHelpText}>
107
            Ver canais de ajuda{" "}
108
            <Octicons name="link-external" size={12} color="black" />
109
          </Link>
110
        </View>
111
      </Card>
112
    </ScreenLayout>
113
  );
114
}
115

116
const styles = StyleSheet.create({
117
  cardIcon: {
118
    paddingVertical: 15,
119
    paddingHorizontal: 14,
120
    width: 48,
121
    borderRadius: BorderRadius.md,
122
  },
123
  cardTitleHeadline: {
124
    ...Typography.headlineMd,
125
    lineHeight: 20,
126
    marginTop: 4,
127
  },
128
  cardTitle: {
129
    ...Typography.bodyLg,
130
    lineHeight: 20,
131
    marginTop: 4,
132
  },
133
  cardDescriptionHeadline: {
134
    ...Typography.bodyMg,
135
    color: Colors.light.textSecondary,
136
    marginTop: 4,
137
  },
138
  cardDescription: {
139
    ...Typography.labelSm,
140
    color: Colors.light.textSecondary,
141
    marginTop: 4,
142
  },
143
  disclaimerCard: {
144
    padding: Spacing.cardGap,
145
    marginTop: 20,
146
  },
147
  disclaimerTitleContainer: {
148
    flex: 1,
149
    flexDirection: "row",
150
    gap: 5,
151
    marginBottom: 10,
152
  },
153
  disclaimerTitleText: {
154
    fontWeight: 600,
155
    fontSize: 16,
156
    lineHeight: 20,
157
  },
158
  disclaimerText: {
159
    fontSize: 12,
160
    lineHeight: 18,
161
    color: Colors.light.textSecondary,
162
  },
163
  disclaimerHelp: {
164
    marginTop: 10,
165
    borderTopWidth: 1,
166
    borderTopColor: Colors.light.divider,
167
    paddingTop: 5,
168
  },
169
  disclaimerHelpText: {
170
    color: "#0f172a",
171
    fontWeight: 500,
172
    fontSize: 12,
173
    lineHeight: 16,
174
    alignItems: "center",
175
  },
176
});