eletrotupi / tcc/ frontend/app/(tabs)/actions.tsx3c48957da540557e7d3a844d97efd318222a1371
4.9 KB | 169 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 { Shadows, Colors, Typography, Spacing, BorderRadius } from '@/constants/theme';
11
import { Ionicons, Octicons } from '@expo/vector-icons';
12
import { Link, router } from 'expo-router';
13

14
export default function Actions() {
15
  const { user } = useAuth();
16

17
  const onPressSleep = () => {
18
    router.push('/sleep/new')
19
  }
20

21
  const onPressTrigger = () => {
22
    router.push('/triggers/new')
23
  }
24

25
  return (
26
    <ScreenLayout userName={user.firstName} userAvatar={user.avatarURL}
27
      onNotificationPress={() => console.log('Notifications')}
28
      showNotificationBadge={true}>
29
      <Section>
30
        <SectionHeader
31
          title="Hub de Ações e Gestão"
32
          subtitle="Sua ferramenta de apoio para menter a rotina de saúde organizada e monitorada"
33
          >
34
        </SectionHeader>
35

36
        <Button title="Registrar Intervenção" size="large" style={{
37
          ...Shadows.lg
38
        }} />
39
      </Section>
40

41
      <Card style={{ padding: Spacing.cardGap, height: 150 }}>
42
        <View style={[styles.cardIcon, { backgroundColor: '#E7FDEF' }]}>
43
          <Ionicons name="bandage-outline" size={20} color="#13EC5B" />
44
        </View>
45

46
        <Text style={styles.cardTitleHeadline}>
47
          Gerenciar Medicamentos
48
        </Text>
49

50
        <Text style={styles.cardDescriptionHeadline}>
51
          Controle horários, doses e estoque de suas prescrições.
52
        </Text>
53
      </Card>
54

55
      <Grid gap={4}>
56
        <Card onPress={onPressSleep} style={{ padding: Spacing.cardGap }}>
57
          <View style={[styles.cardIcon, { backgroundColor: '#EFF6FF' }]}>
58
            <Ionicons name="moon-outline" size={20} color="#2563EB" />
59
          </View>
60

61
          <Text style={styles.cardTitle}>
62
            Registrar Sono
63
          </Text>
64

65
          <Text style={styles.cardDescription}>
66
            Informe duração e qualidade do sono.
67
          </Text>
68
        </Card>
69

70
        <Card style={{ padding: Spacing.cardGap }} onPress={onPressTrigger}>
71
          <View style={[styles.cardIcon, { backgroundColor: '#FFF7ED' }]}>
72
            <Ionicons name="flash-outline" size={20} color="#EA580C" />
73
          </View>
74

75
          <Text style={styles.cardTitle}>
76
            Adicionar Gatilho
77
          </Text>
78

79
          <Text style={styles.cardDescription}>
80
            Registre eventos que aferatam seu humor.
81
          </Text>
82
        </Card>
83
      </Grid>
84

85
      <Card style={styles.disclaimerCard}>
86
        <View style={styles.disclaimerTitleContainer}>
87
          <Ionicons name="information-circle-outline" size={20} color={Colors.light.tint} />
88
          <Text style={styles.disclaimerTitleText}>Nota de Apoio</Text>
89
        </View>
90

91
        <Text style={styles.disclaimerText}>
92
          Este aplicativo é um assistente digital para
93
          auxiliar no seu monitoramento diário. Em caso
94
          de emergência ou sintomas graves, entre em
95
          contato imediatamente com seu médico ou
96
          serviços de saúde locais.
97
        </Text>
98

99
        <View style={styles.disclaimerHelp}>
100
          <Link href="https://expo.dev" style={styles.disclaimerHelpText}>
101
            Ver canais de ajuda <Octicons name="link-external" size={12} color="black" />
102
          </Link>
103
        </View>
104
      </Card>
105
    </ScreenLayout>
106
  )
107
}
108

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