diff --git a/src/app/clientes/[clientId]/page.tsx b/src/app/clientes/[clientId]/page.tsx new file mode 100644 index 0000000..9a67cdf --- /dev/null +++ b/src/app/clientes/[clientId]/page.tsx @@ -0,0 +1,57 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import { useParams } from 'next/navigation'; +import Link from 'next/link'; + +export default function ClientDashboardPage() { + const params = useParams(); + const { clientId } = params; + + const navItems = [ + { name: "Inicio", id: "/" }, + { name: "Clientes", id: "/clientes" }, + { name: "Características", id: "/caracteristicas" }, + { name: "Precios", id: "/precios" }, + { name: "FAQ", id: "/#faq" }, + ]; + + return ( + + + + +
+

Dashboard del Cliente: {clientId}

+
+

Aquí se mostraría la información detallada del dashboard y el estado del cliente {clientId}.

+

Esto podría incluir gráficos de impuestos, historial de pagos, documentos adjuntos, etc.

+ ← Volver al Listado de Clientes +
+
+
+
+ ); +} diff --git a/src/app/clientes/page.tsx b/src/app/clientes/page.tsx new file mode 100644 index 0000000..a7823ec --- /dev/null +++ b/src/app/clientes/page.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import Input from '@/components/form/Input'; +import Link from 'next/link'; +import { useState } from 'react'; +import ButtonExpandHover from '@/components/button/ButtonExpandHover'; + +interface Client { + id: string; + name: string; + status: string; + email: string; +} + +const initialClients: Client[] = [ + { id: 'client-1', name: 'Contador Uno SRL', status: 'Activo', email: 'contador1@example.com' }, + { id: 'client-2', name: 'Estudio Contable Dos', status: 'Pendiente', email: 'estudio2@example.com' }, + { id: 'client-3', name: 'Finanzas Tres S.A.', status: 'Activo', email: 'finanzas3@example.com' }, +]; + +export default function ClientsPage() { + const [clients, setClients] = useState(initialClients); + const [newClientName, setNewClientName] = useState(''); + const [newClientEmail, setNewClientEmail] = useState(''); + + const handleCreateClient = (e: React.FormEvent) => { + e.preventDefault(); + if (newClientName.trim() && newClientEmail.trim()) { + const newClient: Client = { + id: `client-${clients.length + 1}`, + name: newClientName.trim(), + status: 'Pendiente', + email: newClientEmail.trim(), + }; + setClients([...clients, newClient]); + setNewClientName(''); + setNewClientEmail(''); + } + }; + + const navItems = [ + { name: "Inicio", id: "/" }, + { name: "Clientes", id: "/clientes" }, + { name: "Características", id: "/caracteristicas" }, + { name: "Precios", id: "/precios" }, + { name: "FAQ", id: "/#faq" }, + ]; + + return ( + + + + +
+

Gestión de Clientes

+ +
+

Crear Nuevo Cliente

+
+
+ + +
+
+ + +
+ + +
+ +
+

Listado de Clientes

+ {clients.length === 0 ? ( +

No hay clientes para mostrar.

+ ) : ( +
+ {clients.map((client) => ( + +
+

{client.name}

+

Email: {client.email}

+

Estado: {client.status}

+ Ver Dashboard → +
+ + ))} +
+ )} +
+
+
+
+ ); +} diff --git a/src/app/contabilidad/page.tsx b/src/app/contabilidad/page.tsx new file mode 100644 index 0000000..d038bf0 --- /dev/null +++ b/src/app/contabilidad/page.tsx @@ -0,0 +1,153 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import FeatureCardTwentyThree from '@/components/sections/feature/FeatureCardTwentyThree'; +import FooterMedia from '@/components/sections/footer/FooterMedia'; +import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel'; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; + +export default function ContabilidadPage() { + return ( + + + + +
+ +
+ +
+ alert('Ir a Registro de Asientos Contables') + }, + { + id: "chart-of-accounts", title: "Plan de Cuentas Básico", tags: ["Cuentas", "Estructura"], + imageSrc: "http://img.b2bpic.net/free-photo/modern-work-environment-empty-office-business-industry-enterprise-culture_482257-125598.jpg", imageAlt: "Chart of accounts structure", onFeatureClick: () => alert('Ir a Plan de Cuentas') + }, + { + id: "daily-journal", title: "Diario General", tags: ["Transacciones", "Historial"], + imageSrc: "http://img.b2bpic.net/free-photo/relaxed-businessman-looking-up-with-his-mobile-phone-table_23-2148164255.jpg", imageAlt: "Daily journal view", onFeatureClick: () => alert('Ir a Diario General') + }, + { + id: "trial-balance", title: "Balance de Comprobación", tags: ["Informes", "Verificación"], + imageSrc: "http://img.b2bpic.net/free-photo/blue-glasses-liquid-with-shadow-yellow-background_23-2147949153.jpg", imageAlt: "Trial balance report", onFeatureClick: () => alert('Ir a Balance de Comprobación') + }, + { + id: "income-statement", title: "Estado de Resultados", tags: ["Rentabilidad", "Análisis"], + imageSrc: "http://img.b2bpic.net/free-photo/businessman-sustainability-specialist-inspecting-solar-panel-factory-focusing-infrastructure_482257-135619.jpg", imageAlt: "Income statement analysis", onFeatureClick: () => alert('Ir a Estado de Resultados') + }, + { + id: "file-upload", title: "Carga de Datos por Archivo", tags: ["Importación", "Automatización"], + imageSrc: "http://img.b2bpic.net/free-photo/person-using-retro-computer_23-2149506873.jpg", imageAlt: "File upload interface", onFeatureClick: () => alert('Ir a Carga de Datos por Archivo') + }, + ]} + title="Herramientas Esenciales de Contabilidad" + description="Desde la gestión diaria de transacciones hasta la generación de informes financieros." + /> +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx new file mode 100644 index 0000000..e3d1440 --- /dev/null +++ b/src/app/dashboard/page.tsx @@ -0,0 +1,147 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import HeroOverlay from '@/components/sections/hero/HeroOverlay'; +import MetricCardOne from '@/components/sections/metrics/MetricCardOne'; +import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven'; +import { Calendar, Bell, CreditCard, Wallet, Receipt, Banknote, TrendingUp, UploadCloud, FileText, PiggyBank, Scale } from "lucide-react"; + +export default function DashboardPage() { + const navItems = [ + { + name: "Inicio", id: "/"}, + { + name: "Dashboard", id: "/dashboard"}, + { + name: "Características", id: "/#features"}, + { + name: "Precios", id: "/#pricing"}, + { + name: "FAQ", id: "/#faq"}, + ]; + + return ( + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ ); +} diff --git a/src/app/ganancias/page.tsx b/src/app/ganancias/page.tsx new file mode 100644 index 0000000..d32b28b --- /dev/null +++ b/src/app/ganancias/page.tsx @@ -0,0 +1,263 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import FooterMedia from '@/components/sections/footer/FooterMedia'; +import React, { useState, ChangeEvent, FormEvent } from 'react'; +import { Upload, DollarSign, BarChart2, AlertCircle, CalendarDays } from "lucide-react"; + +export default function GananciasPage() { + const [annualIncome, setAnnualIncome] = useState(''); + const [deductions, setDeductions] = useState(''); + const [file, setFile] = useState(null); + const [taxEstimation, setTaxEstimation] = useState(null); + const [fiscalYearProgress, setFiscalYearProgress] = useState(0); // Percentage + + // Mock calculation function + const calculateTax = (income: number, ded: number) => { + // This is a simplified mock. Real tax calculation is complex. + const taxableIncome = income - ded; + if (taxableIncome <= 0) return 0; + // Example tiers for Argentina's Ganancias (simplified and arbitrary for demo) + if (taxableIncome < 500000) return taxableIncome * 0.05; + if (taxableIncome < 1500000) return 25000 + (taxableIncome - 500000) * 0.10; + return 125000 + (taxableIncome - 1500000) * 0.15; + }; + + const handleIncomeChange = (e: ChangeEvent) => { + const value = parseFloat(e.target.value); + setAnnualIncome(isNaN(value) ? '' : value); + }; + + const handleDeductionsChange = (e: ChangeEvent) => { + const value = parseFloat(e.target.value); + setDeductions(isNaN(value) ? '' : value); + }; + + const handleFileChange = (e: ChangeEvent) => { + if (e.target.files && e.target.files[0]) { + setFile(e.target.files[0]); + } else { + setFile(null); + } + }; + + const handleSubmit = (e: FormEvent) => { + e.preventDefault(); + if (annualIncome !== '' && deductions !== '') { + const estimatedTax = calculateTax(annualIncome as number, deductions as number); + setTaxEstimation(estimatedTax); + alert("Cálculo realizado. (Simulado)"); + // In a real app, file would be uploaded here + if (file) { + console.log("File uploaded:", file.name); + } + } else { + alert("Por favor, ingresa los montos de ingresos y deducciones."); + } + }; + + // Effect to calculate fiscal year progress (mock) + React.useEffect(() => { + const now = new Date(); + const startOfYear = new Date(now.getFullYear(), 0, 1); + const endOfYear = new Date(now.getFullYear(), 11, 31, 23, 59, 59); + const totalDays = (endOfYear.getTime() - startOfYear.getTime()) / (1000 * 60 * 60 * 24); + const passedDays = (now.getTime() - startOfYear.getTime()) / (1000 * 60 * 60 * 24); + setFiscalYearProgress(Math.min(100, Math.max(0, (passedDays / totalDays) * 100))); + }, []); + + const commonNavItems = [ + { name: "Inicio", id: "/" }, + { name: "Características", id: "/caracteristicas" }, + { name: "Precios", id: "/precios" }, + { name: "Ganancias", id: "/ganancias" }, // New link + { name: "FAQ", id: "/#faq" }, + ]; + + const footerColumns = [ + { + title: "Empresa", items: [ + { label: "Sobre Nosotros", href: "#" }, + { label: "Contacto", href: "#" }, + { label: "Carreras", href: "#" }, + ], + }, + { + title: "Soluciones", items: [ + { label: "Monotributo", href: "/monotributo" }, + { label: "IVA", href: "/iva" }, + { label: "Ganancias", href: "/ganancias" }, + ], + }, + { + title: "Soporte", items: [ + { label: "FAQ", href: "/#faq" }, + { label: "Ayuda", href: "#" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Legal", items: [ + { label: "Términos de Servicio", href: "#" }, + { label: "Política de Privacidad", href: "#" }, + ], + }, + ]; + + return ( + + + + +
+
+

+ Módulo de Ganancias +

+ +
+

+ Declaración Anual de Ingresos +

+
+
+ + +
+
+ + +
+ +
+ +
+ + + +
+
+ + +
+
+ + {taxEstimation !== null && ( +
+

+ Estimación de Impuesto a las Ganancias +

+

+ Basado en tus datos, el impuesto estimado sería:{" "} + + ${taxEstimation.toLocaleString('es-AR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} ARS + +

+

+ Esta es una estimación simplificada y no constituye asesoramiento fiscal. Consulta siempre con un contador. +

+
+ )} + +
+

+ Progreso del Año Fiscal +

+
+
+
+

+ Llevamos un {fiscalYearProgress.toFixed(1)}% del año fiscal {new Date().getFullYear()} completado. +

+
+ +
+

+ Alertas de Anticipos y Vencimientos +

+
    +
  • Próximo anticipo de Ganancias: 10/09/2024
  • +
  • Recordatorio: Vencimiento de DJ Anual Ganancias: 15/05/2025
  • +
  • Alerta: Ingreso de DDJJ de retenciones pendientes.
  • +
+

+ Mantente al día con tus obligaciones fiscales para evitar multas. +

+
+
+
+ + +
+
+ ); +} diff --git a/src/app/import-data/page.tsx b/src/app/import-data/page.tsx new file mode 100644 index 0000000..5c9a1b1 --- /dev/null +++ b/src/app/import-data/page.tsx @@ -0,0 +1,110 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel'; +import FooterMedia from '@/components/sections/footer/FooterMedia'; + +export default function ImportDataPage() { + return ( + + + + +
+ +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/monotributo/page.tsx b/src/app/monotributo/page.tsx new file mode 100644 index 0000000..ab4cb8c --- /dev/null +++ b/src/app/monotributo/page.tsx @@ -0,0 +1,244 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import ButtonElasticEffect from '@/components/button/ButtonElasticEffect/ButtonElasticEffect'; +import { useState, useMemo, ChangeEvent } from 'react'; +import { UploadCloud } from 'lucide-react'; + +interface MonotributoCategory { + category: string; + annualIncomeLimit: number; + monthlyFee: number; +} + +const CATEGORIES_2024: MonotributoCategory[] = [ + { category: 'A', annualIncomeLimit: 2108288.00, monthlyFee: 12128.00 }, + { category: 'B', annualIncomeLimit: 3133995.00, monthlyFee: 13571.00 }, + { category: 'C', annualIncomeLimit: 4401988.00, monthlyFee: 15364.00 }, + { category: 'D', annualIncomeLimit: 5459629.00, monthlyFee: 19301.00 }, + { category: 'E', annualIncomeLimit: 6416528.00, monthlyFee: 26143.00 }, + { category: 'F', annualIncomeLimit: 8020660.00, monthlyFee: 34809.00 }, + { category: 'G', annualIncomeLimit: 9624792.00, monthlyFee: 40111.00 }, + { category: 'H', annualIncomeLimit: 11991641.00, monthlyFee: 66111.00 }, + { category: 'I', annualIncomeLimit: 13337213.00, monthlyFee: 81161.00 }, + { category: 'J', annualIncomeLimit: 15285088.00, monthlyFee: 93619.00 }, + { category: 'K', annualIncomeLimit: 16957968.00, monthlyFee: 106465.00 }, +]; + +export default function MonotributoPage() { + const [cuit, setCuit] = useState(''); + const [accumulatedIncome, setAccumulatedIncome] = useState(0); + const [monthlyIncomeInput, setMonthlyIncomeInput] = useState(''); + const [calculatedMonthlyFee, setCalculatedMonthlyFee] = useState(null); + const [fileContent, setFileContent] = useState(null); + + const currentCategory = useMemo(() => { + if (accumulatedIncome === 0) return 'N/A'; + for (const cat of CATEGORIES_2024) { + if (accumulatedIncome <= cat.annualIncomeLimit) { + return cat.category; + } + } + return 'K (Max)'; // If income exceeds category K + }, [accumulatedIncome]); + + const recategorizationAlert = useMemo(() => { + if (accumulatedIncome === 0) return ''; + const currentCatIndex = CATEGORIES_2024.findIndex(cat => cat.category === currentCategory); + if (currentCatIndex !== -1 && currentCatIndex < CATEGORIES_2024.length - 1) { + const nextCategoryLimit = CATEGORIES_2024[currentCatIndex + 1].annualIncomeLimit; + if (accumulatedIncome > (CATEGORIES_2024[currentCatIndex]?.annualIncomeLimit || 0) * 0.8) { // Example: 80% of limit + return `¡Atención! Estás cerca del límite de la Categoría ${currentCategory}. Podrías recategorizarte a ${CATEGORIES_2024[currentCatIndex + 1].category}.`; + } + } + return ''; + }, [accumulatedIncome, currentCategory]); + + const handleCalculateFee = () => { + const income = parseFloat(monthlyIncomeInput) * 12; // Annualize monthly income + if (isNaN(income) || income <= 0) { + setCalculatedMonthlyFee(null); + return; + } + + let fee: number | null = null; + for (const cat of CATEGORIES_2024) { + if (income <= cat.annualIncomeLimit) { + fee = cat.monthlyFee; + break; + } + } + if (fee === null && income > CATEGORIES_2024[CATEGORIES_2024.length - 1].annualIncomeLimit) { + fee = CATEGORIES_2024[CATEGORIES_2024.length - 1].monthlyFee; // Max category fee + } + setCalculatedMonthlyFee(fee); + }; + + const handleFileUpload = (event: ChangeEvent) => { + const file = event.target.files?.[0]; + if (file) { + const reader = new FileReader(); + reader.onload = (e) => { + const content = e.target?.result as string; + setFileContent(content); + // Example: parse CUIT or income from file content + // This is a placeholder for actual parsing logic + try { + const data = JSON.parse(content); + if (data.cuit) setCuit(data.cuit); + if (data.accumulatedIncome) setAccumulatedIncome(parseFloat(data.accumulatedIncome)); + } catch (error) { + console.error("Error parsing file content:", error); + } + }; + reader.readAsText(file); + } + }; + + return ( + + + + +
+

Módulo Monotributo

+ +
+ {/* CUIT Form and Current Status */} +
+

Tu Estado Actual

+
+ + setCuit(e.target.value)} + placeholder="Ingresa tu CUIT" + /> +
+
+

Categoría Actual:

+

{currentCategory}

+
+
+

Ingreso Acumulado (últimos 12 meses):

+

{accumulatedIncome.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' })}

+
+ {recategorizationAlert && ( +
+

Alerta de Recategorización

+

{recategorizationAlert}

+
+ )} +
+ + {/* Monthly Fee Calculator */} +
+

Calculadora de Cuota Mensual

+
+ + setMonthlyIncomeInput(e.target.value)} + placeholder="Ej: 150000" + /> +
+ + {calculatedMonthlyFee !== null && ( +
+

Cuota Mensual Estimada:

+

{calculatedMonthlyFee.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' })}

+
+ )} + alert('Funcionalidad para generar VEP en desarrollo.')} + className="w-full mt-8" + /> +
+
+ + {/* File Upload for Data Loading */} +
+

Cargar Datos (JSON/CSV)

+ + {fileContent && ( +
+

Contenido del archivo cargado:

+
{fileContent}
+
+ )} +
+ + {/* 2024 Category Table */} +
+

Tabla de Categorías Monotributo 2024

+
+ + + + + + + + + + {CATEGORIES_2024.map((cat) => ( + + + + + + ))} + +
CategoríaIngresos Brutos Anuales (Hasta)Cuota Mensual
{cat.category}{cat.annualIncomeLimit.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' })}{cat.monthlyFee.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' })}
+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 991c97b..c8c95a9 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -11,8 +11,63 @@ import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarS import PricingCardEight from '@/components/sections/pricing/PricingCardEight'; import SocialProofOne from '@/components/sections/socialProof/SocialProofOne'; import { Briefcase, Building, Clock, DollarSign, User, Users } from "lucide-react"; +import { useEffect } from "react"; export default function LandingPage() { + useEffect(() => { + const HAS_PRELOADED_DATA_KEY = "hasPreloadedData"; + const hasPreloadedData = localStorage.getItem(HAS_PRELOADED_DATA_KEY); + + if (!hasPreloadedData) { + // Seed data + const accountantId = "acc-1"; + const client1Id = "cli-1"; // Monotributist D + const client2Id = "cli-2"; // RI + const client3Id = "cli-3"; // Another client for accountant + + const accountants = [ + { + id: accountantId, + name: "Juan Perez", email: "juan.perez@example.com", clients: [client1Id, client2Id, client3Id], + }, + ]; + + const clients = [ + { + id: client1Id, + name: "Maria Gomez", cuit: "27-12345678-9", type: "Monotributist", accountantId: accountantId, + category: "D", invoices: [ + { id: "inv-m1", date: "2023-01-15", amount: 15000, type: "C" }, + { id: "inv-m2", date: "2023-02-20", amount: 20000, type: "C" }, + ], + }, + { + id: client2Id, + name: "Carlos Sanchez", cuit: "30-98765432-1", type: "Responsible Inscripto", accountantId: accountantId, + sales: [ + { id: "sale-r1", date: "2023-03-01", amount: 50000, taxRate: 0.21, total: 60500 }, + { id: "sale-r2", date: "2023-04-10", amount: 75000, taxRate: 0.21, total: 90750 }, + ], + purchases: [ + { id: "pur-r1", date: "2023-03-05", amount: 20000, taxRate: 0.21, total: 24200 }, + { id: "pur-r2", date: "2023-04-12", amount: 10000, taxRate: 0.21, total: 12100 }, + ], + }, + { + id: client3Id, + name: "Laura Fernandez", cuit: "20-11223344-5", type: "Monotributist", accountantId: accountantId, + category: "B", invoices: [ + { id: "inv-l1", date: "2023-05-01", amount: 8000, type: "C" }, + ], + }, + ]; + + localStorage.setItem("accountants", JSON.stringify(accountants)); + localStorage.setItem("clients", JSON.stringify(clients)); + localStorage.setItem(HAS_PRELOADED_DATA_KEY, "true"); // Mark data as preloaded + } + }, []); // Run only once on mount + return ( @@ -114,35 +140,17 @@ export default function LandingPage() { useInvertedBackground={false} features={[ { - id: "monotributo-calc", - title: "Cálculo Automático Monotributo", - tags: [ - "Impuestos", - "Simplificado", - ], - imageSrc: "http://img.b2bpic.net/free-photo/person-using-retro-computer_23-2149506873.jpg", - imageAlt: "Monotributo automatic calculation interface", - }, + id: "monotributo-calc", title: "Cálculo Automático Monotributo", tags: [ + "Impuestos", "Simplificado"], + imageSrc: "http://img.b2bpic.net/free-photo/person-using-retro-computer_23-2149506873.jpg", imageAlt: "Monotributo automatic calculation interface"}, { - id: "iva-gestion", - title: "Gestión Integral de IVA", - tags: [ - "Facturas", - "Crédito Fiscal", - ], - imageSrc: "http://img.b2bpic.net/free-photo/businessman-working-with-touchpad_1098-21357.jpg", - imageAlt: "IVA management data flow", - }, + id: "iva-gestion", title: "Gestión Integral de IVA", tags: [ + "Facturas", "Crédito Fiscal"], + imageSrc: "http://img.b2bpic.net/free-photo/businessman-working-with-touchpad_1098-21357.jpg", imageAlt: "IVA management data flow"}, { - id: "vencimientos-alertas", - title: "Alertas de Vencimientos AFIP", - tags: [ - "AFIP", - "Notificaciones", - ], - imageSrc: "http://img.b2bpic.net/free-photo/mobile-phone-with-sale-tag-modern-laptop-keypad_23-2147854239.jpg", - imageAlt: "Tax deadline calendar with notifications", - }, + id: "vencimientos-alertas", title: "Alertas de Vencimientos AFIP", tags: [ + "AFIP", "Notificaciones"], + imageSrc: "http://img.b2bpic.net/free-photo/mobile-phone-with-sale-tag-modern-laptop-keypad_23-2147854239.jpg", imageAlt: "Tax deadline calendar with notifications"}, ]} title="Funcionalidades clave para tu gestión." description="Potencia tu estudio o simplifica tus finanzas personales con herramientas diseñadas para Argentina." @@ -156,19 +164,13 @@ export default function LandingPage() { metrics={[ { icon: Users, - label: "Clientes Atendidos", - value: "+500", - }, + label: "Clientes Atendidos", value: "+500"}, { icon: DollarSign, - label: "Operaciones al Mes", - value: "+10K", - }, + label: "Operaciones al Mes", value: "+10K"}, { icon: Clock, - label: "Horas Ahorradas", - value: "+200K", - }, + label: "Horas Ahorradas", value: "+200K"}, ]} metricsAnimation="slide-up" /> @@ -181,59 +183,31 @@ export default function LandingPage() { useInvertedBackground={false} plans={[ { - id: "basic", - badge: "Individual", - badgeIcon: User, - price: "$8.000/mes", - subtitle: "Para contribuyentes individuales.", - buttons: [ + id: "basic", badge: "Individual", badgeIcon: User, + price: "$8.000/mes", subtitle: "Para contribuyentes individuales.", buttons: [ { - text: "Elegir Básico", - href: "/auth/register?plan=basic", - }, + text: "Elegir Básico", href: "/auth/register?plan=basic"}, ], features: [ - "1 CUIT", - "Módulos Monotributo + IVA", - "Soporte por email", - ], + "1 CUIT", "Módulos Monotributo + IVA", "Soporte por email"], }, { - id: "professional", - badge: "Profesional", - badgeIcon: Briefcase, - price: "$18.000/mes", - subtitle: "Ideal para pequeños estudios.", - buttons: [ + id: "professional", badge: "Profesional", badgeIcon: Briefcase, + price: "$18.000/mes", subtitle: "Ideal para pequeños estudios.", buttons: [ { - text: "Elegir Profesional", - href: "/auth/register?plan=professional", - }, + text: "Elegir Profesional", href: "/auth/register?plan=professional"}, ], features: [ - "Hasta 10 CUITs", - "Todos los módulos", - "Soporte por WhatsApp", - ], + "Hasta 10 CUITs", "Todos los módulos", "Soporte por WhatsApp"], }, { - id: "studio", - badge: "Estudio", - badgeIcon: Building, - price: "$35.000/mes", - subtitle: "Solución completa para estudios grandes.", - buttons: [ + id: "studio", badge: "Estudio", badgeIcon: Building, + price: "$35.000/mes", subtitle: "Solución completa para estudios grandes.", buttons: [ { - text: "Elegir Estudio", - href: "/auth/register?plan=studio", - }, + text: "Elegir Estudio", href: "/auth/register?plan=studio"}, ], features: [ - "CUITs ilimitados", - "Todos los módulos", - "API AFIP futura", - "Soporte prioritario", - ], + "CUITs ilimitados", "Todos los módulos", "API AFIP futura", "Soporte prioritario"], }, ]} title="Planes adaptados a tu necesidad." @@ -247,30 +221,15 @@ export default function LandingPage() { useInvertedBackground={true} faqs={[ { - id: "q1", - title: "¿Cómo funciona la prueba gratuita?", - content: "Ofrecemos una prueba gratuita de 7 días para que explores todas las funcionalidades de nuestro plan Profesional sin compromiso.", - }, + id: "q1", title: "¿Cómo funciona la prueba gratuita?", content: "Ofrecemos una prueba gratuita de 7 días para que explores todas las funcionalidades de nuestro plan Profesional sin compromiso."}, { - id: "q2", - title: "¿Necesito conocimientos contables para usar la app?", - content: "Nuestra interfaz es intuitiva y está diseñada para ser usada tanto por contadores como por contribuyentes sin experiencia previa. Sin embargo, para decisiones complejas, siempre recomendamos consultar con un profesional.", - }, + id: "q2", title: "¿Necesito conocimientos contables para usar la app?", content: "Nuestra interfaz es intuitiva y está diseñada para ser usada tanto por contadores como por contribuyentes sin experiencia previa. Sin embargo, para decisiones complejas, siempre recomendamos consultar con un profesional."}, { - id: "q3", - title: "¿Qué seguridad tienen mis datos fiscales?", - content: "Utilizamos encriptación de grado bancario y seguimos los más altos estándares de seguridad para proteger toda tu información fiscal y personal.", - }, + id: "q3", title: "¿Qué seguridad tienen mis datos fiscales?", content: "Utilizamos encriptación de grado bancario y seguimos los más altos estándares de seguridad para proteger toda tu información fiscal y personal."}, { - id: "q4", - title: "¿Puedo cambiar de plan en cualquier momento?", - content: "Sí, puedes ascender o descender de plan en cualquier momento. El cambio se aplicará de forma proporcional en tu próxima facturación.", - }, + id: "q4", title: "¿Puedo cambiar de plan en cualquier momento?", content: "Sí, puedes ascender o descender de plan en cualquier momento. El cambio se aplicará de forma proporcional en tu próxima facturación."}, { - id: "q5", - title: "¿Se integra con otros sistemas?", - content: "Actualmente estamos trabajando en integraciones con plataformas de facturación electrónica y bancos. Consulta nuestra hoja de ruta para más detalles.", - }, + id: "q5", title: "¿Se integra con otros sistemas?", content: "Actualmente estamos trabajando en integraciones con plataformas de facturación electrónica y bancos. Consulta nuestra hoja de ruta para más detalles."}, ]} title="¿Preguntas frecuentes?" description="Resolvemos tus dudas más comunes sobre nuestra plataforma y servicios." @@ -283,15 +242,7 @@ export default function LandingPage() { textboxLayout="default" useInvertedBackground={false} names={[ - "Alpha Solutions", - "Innovate Corp", - "Global Connect", - "Dynamic Growth", - "Swift Solutions", - "Nexus Tech", - "Pinnacle Services", - "Velocity Corp", - ]} + "Alpha Solutions", "Innovate Corp", "Global Connect", "Dynamic Growth", "Swift Solutions", "Nexus Tech", "Pinnacle Services", "Velocity Corp"]} title="La confianza de nuestros clientes nos impulsa." description="Trabajamos con empresas y profesionales de todo el país, ayudándolos a optimizar su gestión fiscal." /> @@ -306,67 +257,41 @@ export default function LandingPage() { logoText="[NOMBRE DE TU MARCA]" columns={[ { - title: "Empresa", - items: [ + title: "Empresa", items: [ { - label: "Sobre Nosotros", - href: "#", - }, + label: "Sobre Nosotros", href: "#"}, { - label: "Contacto", - href: "#", - }, + label: "Contacto", href: "#"}, { - label: "Carreras", - href: "#", - }, + label: "Carreras", href: "#"}, ], }, { - title: "Soluciones", - items: [ + title: "Soluciones", items: [ { - label: "Monotributo", - href: "/app/monotributo", - }, + label: "Monotributo", href: "/app/monotributo"}, { - label: "IVA", - href: "/app/iva", - }, + label: "IVA", href: "/app/iva"}, { - label: "Ganancias", - href: "/app/ganancias", - }, + label: "Ganancias", href: "/app/ganancias"}, ], }, { - title: "Soporte", - items: [ + title: "Soporte", items: [ { - label: "FAQ", - href: "/#faq", - }, + label: "FAQ", href: "/#faq"}, { - label: "Ayuda", - href: "#", - }, + label: "Ayuda", href: "#"}, { - label: "Blog", - href: "#", - }, + label: "Blog", href: "#"}, ], }, { - title: "Legal", - items: [ + title: "Legal", items: [ { - label: "Términos de Servicio", - href: "#", - }, + label: "Términos de Servicio", href: "#"}, { - label: "Política de Privacidad", - href: "#", - }, + label: "Política de Privacidad", href: "#"}, ], }, ]} diff --git a/src/app/payroll/page.tsx b/src/app/payroll/page.tsx new file mode 100644 index 0000000..4bf5992 --- /dev/null +++ b/src/app/payroll/page.tsx @@ -0,0 +1,162 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import FooterMedia from '@/components/sections/footer/FooterMedia'; +import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel'; +import FeatureCardTwentyThree from '@/components/sections/feature/FeatureCardTwentyThree'; +import { UserPlus, FileText, UploadCloud, ReceiptText, Wallet, ClipboardCheck } from "lucide-react"; + +export default function PayrollPage() { + return ( + + + + +
+ +
+ +
+ console.log("Employee Registration clicked") + }, + { + id: "salary-liquidation", title: "Liquidación de Salarios", tags: ["Automatizado", "Precisión"], + imageSrc: "http://img.b2bpic.net/free-photo/close-up-person-calculating-taxes_23-2149176465.jpg?_wi=1", imageAlt: "Salary calculation interface", onFeatureClick: () => console.log("Salary Liquidation clicked") + }, + { + id: "employer-contributions", title: "Contribuciones Empleador", tags: ["Seguridad Social", "AFIP"], + imageSrc: "http://img.b2bpic.net/free-photo/tax-payment-calculator-document_23-2149176451.jpg?_wi=1", imageAlt: "Employer contributions report", onFeatureClick: () => console.log("Employer Contributions clicked") + }, + { + id: "f931-summary", title: "Resumen Mensual F931", tags: ["Generación Automática", "Cumplimiento"], + imageSrc: "http://img.b2bpic.net/free-photo/tax-form-pen-calculator-table_23-2149176449.jpg?_wi=1", imageAlt: "F931 summary document", onFeatureClick: () => console.log("F931 Summary clicked") + }, + { + id: "printable-payslip", title: "Recibos de Sueldo Imprimibles", tags: ["Personalizado", "Descargable"], + imageSrc: "http://img.b2bpic.net/free-photo/financial-document-paperwork-concept_23-2151121085.jpg?_wi=1", imageAlt: "Printable payslip example", onFeatureClick: () => console.log("Printable Payslip clicked") + }, + { + id: "file-upload", title: "Carga Masiva de Datos", tags: ["Importación", "Eficiencia"], + imageSrc: "http://img.b2bpic.net/free-photo/hand-using-mobile-phone-working_23-2149488358.jpg?_wi=1", imageAlt: "File upload interface for employee data", onFeatureClick: () => console.log("File Upload clicked") + } + ]} + title="Gestión de Nóminas al detalle." + description="Desde el alta de empleados hasta la generación de F931 y recibos, todo en un solo lugar." + /> +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx new file mode 100644 index 0000000..13295e3 --- /dev/null +++ b/src/app/settings/page.tsx @@ -0,0 +1,112 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered'; +import Textarea from '@/components/form/Textarea'; + +export default function SettingsPage() { + const navItems = [ + { name: "Inicio", id: "/" }, + { name: "FAQ", id: "/#faq" }, + { name: "Configuración", id: "/settings" }, + ]; + + return ( + + + + +
+

Configuración del Módulo

+ + {/* Accounting Firm Data Form */} +
+

Datos de la Firma Contable

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ + {/* User Fiscal Data Form */} +
+

Datos Fiscales del Usuario

+
+
+ + +
+
+ + +
+
+ +