Files
carvalho-finances/apps/web/src/App.vue
T
Mlcavalho1andClaude Sonnet 4.6 83dff2de78 feat(#18): import de extratos OFX e CSV — parser, dedup, preview e confirmação
Parser OFX tolerante ao formato SGML de bancos brasileiros (sem closing tags, BOM,
timezone suffix). Parser CSV com separador de campo/decimal configurável. Dedup por
FITID (OFX) ou date+amount+desc normalizado. Fluxo: POST /preview → revisão na UI
→ POST /confirm salva e loga. Migration 002 adiciona external_id com unique index.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-05-26 20:17:46 -03:00

36 lines
960 B
Vue

<script setup lang="ts">
</script>
<template>
<header class="app-header">
<span class="app-title">💰 Financeiro Carvalho</span>
<nav class="app-nav">
<RouterLink to="/">Início</RouterLink>
<RouterLink to="/categorias">Categorias</RouterLink>
<RouterLink to="/importar">Importar</RouterLink>
</nav>
</header>
<RouterView />
</template>
<style>
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, sans-serif; background: #f8fafc; color: #1e293b; }
a { color: inherit; text-decoration: none; }
</style>
<style scoped>
.app-header {
display: flex;
align-items: center;
gap: 2rem;
padding: 0.75rem 1.5rem;
background: #1e293b;
color: #f8fafc;
}
.app-title { font-weight: 700; font-size: 1rem; }
.app-nav { display: flex; gap: 1.25rem; }
.app-nav a { font-size: 0.875rem; opacity: 0.8; }
.app-nav a.router-link-active { opacity: 1; text-decoration: underline; }
</style>