eletrotupi / tcc/ frontend/app/(tabs)/actions.tsxec834db7af26c3f993f9ef96ee20860b8e46c8a0
4.9 KB | 178 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
          style={{
48
            ...Shadows.lg,
49
          }}
50
        />
51
      </Section>
52

53
      <Card style={{ padding: Spacing.cardGap, height: 150 }}>
54
        <View style={[styles.cardIcon, { backgroundColor: "#E7FDEF" }]}>
55
          <Ionicons name="bandage-outline" size={20} color="#13EC5B" />
56
        </View>
57

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

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

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

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

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

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

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

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

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

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

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

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