eletrotupi / tcc/ frontend/app/(tabs)/actions.tsxd139cd140eae38d7f5b7000fa39a09c78d163f07
5.0 KB | 177 lines Raw
1
import { View, Text, StyleSheet } from "react-native";
2
import { ThemedText } from "@/components/misc/themed-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
      onNotificationPress={() => console.log("Notifications")}
36
      showNotificationBadge={true}
37
    >
38
      <Section>
39
        <SectionHeader
40
          title="Ações de Cuidado"
41
          subtitle="Registre atividades, acompanhe medicamentos e mantenha sua rotina organizada"
42
        ></SectionHeader>
43

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

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

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

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

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

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

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

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

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

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

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

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

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

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