eletrotupi / tcc / frontend/app/(tabs)/actions.tsx master
4.9 KB Raw
import { View, Text, StyleSheet } from 'react-native';
import { ThemedText } from '@/components/misc/themed-text';
import { ThemedView } from '@/components/misc/themed-view';
import { ScreenLayout } from '@/components/ui/ScreenLayout';
import { useAuth } from '@/context/AuthContext';
import { Section, SectionHeader } from '@/components/ui/Sections';
import { Card, SubtleInfoCard } from '@/components/ui/Cards';
import { Grid, Col, Row, Between } from '@/components/ui/LayoutHelpers';
import { Button } from '@/components/ui/Button'
import { Shadows, Colors, Typography, Spacing, BorderRadius } from '@/constants/theme';
import { Ionicons, Octicons } from '@expo/vector-icons';
import { Link, router } from 'expo-router';

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

  const onPressSleep = () => {
    router.push('/sleep/new')
  }

  const onPressTrigger = () => {
    router.push('/triggers/new')
  }

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

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

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

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

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

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

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

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

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

          <Text style={styles.cardTitle}>
            Adicionar Gatilho
          </Text>

          <Text style={styles.cardDescription}>
            Registre eventos que aferatam seu humor.
          </Text>
        </Card>
      </Grid>

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

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

        <View style={styles.disclaimerHelp}>
          <Link href="https://expo.dev" style={styles.disclaimerHelpText}>
            Ver canais de ajuda <Octicons name="link-external" size={12} color="black" />
          </Link>
        </View>
      </Card>
    </ScreenLayout>
  )
}

const styles = StyleSheet.create({
  cardIcon: {
    paddingVertical: 15,
    paddingHorizontal: 14,
    width: 48,
    borderRadius: BorderRadius.md,
  },
  cardTitleHeadline: {
    ...Typography.headlineMd,
    lineHeight: 20,
    marginTop: 4
  },
  cardTitle: {
    ...Typography.bodyLg,
    lineHeight: 20,
    marginTop: 4
  },
  cardDescriptionHeadline: {
    ...Typography.bodyMg,
    color: Colors.light.textSecondary,
    marginTop: 4
  },
  cardDescription: {
    ...Typography.labelSm,
    color: Colors.light.textSecondary,
    marginTop: 4
  },
  disclaimerCard: {
    padding: Spacing.cardGap,
    marginTop: 20
  },
  disclaimerTitleContainer: {
    flex: 1,
    flexDirection: 'row',
    gap: 5,
    marginBottom: 10
  },
  disclaimerTitleText: {
    fontWeight: 600,
    fontSize: 16,
    lineHeight: 20,
  },
  disclaimerText: {
    fontSize: 12,
    lineHeight: 18,
    color: Colors.light.textSecondary,
  },
  disclaimerHelp: {
    marginTop: 10,
    borderTopWidth: 1,
    borderTopColor: Colors.light.divider,
    paddingTop: 5,
  },
  disclaimerHelpText: {
    color: "#0f172a",
    fontWeight: 500,
    fontSize: 12,
    lineHeight: 16,
    alignItems: 'center'
  }
})