Files
CtrlCash/src/views/ConfiguracoesView.vue

112 lines
5.9 KiB
Vue

<template>
<div class="config-page bg-light min-vh-100">
<!-- Header da Aplicação -->
<HeaderApp />
<div class="container-fluid py-4 max-w-7xl mx-auto px-4">
<h1 class="h3 fw-bold text-primary-dark mb-4">Configurações e Gestão da Conta</h1>
<div class="row g-4">
<!-- Coluna de Navegação Lateral -->
<div class="col-lg-3">
<div class="list-group shadow-sm border-0 rounded-3">
<a href="#"
@click.prevent="setActiveTab('perfil')"
:class="['list-group-item list-group-item-action', {'active-feature': activeTab === 'perfil'}]">
<i class="bi bi-person-circle me-2"></i> Perfil e Dados Pessoais
</a>
<a href="#"
@click.prevent="setActiveTab('categorias')"
:class="['list-group-item list-group-item-action', {'active-feature': activeTab === 'categorias'}]">
<i class="bi bi-tags-fill me-2"></i> Gestão de Categorias
</a>
<a href="#"
@click.prevent="setActiveTab('seguranca')"
:class="['list-group-item list-group-item-action', {'active-feature': activeTab === 'seguranca'}]">
<i class="bi bi-lock-fill me-2"></i> Segurança e Senha
</a>
</div>
</div>
<!-- Área de Conteúdo (Abas) -->
<div class="col-lg-9">
<div class="card shadow-sm border-0 p-4 h-100">
<!-- Aba: Perfil e Dados Pessoais -->
<div v-if="activeTab === 'perfil'">
<h2 class="h4 fw-bold text-primary-dark mb-3">Meu Perfil</h2>
<p class="text-muted">Gerencie seu nome, e-mail e outras informações de contato.</p>
<!-- Placeholder de Formulário -->
<form>
<div class="mb-3"><label class="form-label">Nome:</label><input type="text" class="form-control" value="[Nome do Usuário]"></div>
<div class="mb-3"><label class="form-label">E-mail:</label><input type="email" class="form-control" value="[Email do Usuário]" disabled></div>
<button class="btn btn-primary-feature mt-2">Salvar Alterações</button>
</form>
</div>
<!-- Aba: Gestão de Categorias -->
<div v-if="activeTab === 'categorias'">
<h2 class="h4 fw-bold text-primary-dark mb-3">Categorias Financeiras</h2>
<p class="text-muted">Crie, edite ou remova categorias de receitas e despesas.</p>
<button class="btn btn-success-feature mb-3"><i class="bi bi-plus-circle me-2"></i> Nova Categoria</button>
<!-- Placeholder de Lista -->
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">Moradia <span class="badge bg-danger">Despesa</span></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Salário <span class="badge bg-success">Receita</span></li>
</ul>
</div>
<!-- Aba: Segurança e Senha -->
<div v-if="activeTab === 'seguranca'">
<h2 class="h4 fw-bold text-primary-dark mb-3">Segurança da Conta</h2>
<p class="text-muted">Altere sua senha e configure a autenticação de dois fatores.</p>
<!-- Placeholder de Formulário -->
<form>
<div class="mb-3"><label class="form-label">Nova Senha:</label><input type="password" class="form-control"></div>
<div class="mb-3"><label class="form-label">Confirmar Nova Senha:</label><input type="password" class="form-control"></div>
<button class="btn btn-warning text-white mt-2">Alterar Senha</button>
</form>
</div>
<!-- Aba: Integrações -->
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import HeaderApp from '@/components/HeaderApp.vue';
const activeTab = ref('perfil'); // Aba ativa por padrão
const setActiveTab = (tabName) => {
activeTab.value = tabName;
};
// Lógica para marcar o link "Configurações" como ativo no HeaderApp
onMounted(() => {
// Esta lógica é apenas um lembrete. O HeaderApp usa o Vue Router para gerenciar o estado ativo.
});
</script>
<style scoped>
/* Estilos Customizados do CtrlCash */
.bg-primary-dark { background-color: #1A3B5E !important; }
.text-primary-dark { color: #1A3B5E !important; }
.btn-primary-feature { background-color: #1A3B5E !important; border-color: #1A3B5E !important; color: white; }
.btn-success-feature { background-color: #2ECC71 !important; border-color: #2ECC71 !important; color: white; }
.active-feature { background-color: #1A3B5E !important; color: white !important; }
.max-w-7xl { max-width: 80rem; }
.mx-auto { margin-left: auto !important; margin-right: auto !important; }
</style>