This commit is contained in:
knuthtimo-lab 2025-09-11 10:19:16 +02:00
parent 44ab7d09fd
commit c69735df81
23 changed files with 1806 additions and 67 deletions

90
.dockerignore Normal file
View File

@ -0,0 +1,90 @@
node_modules
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage
.grunt
# Bower dependency directory
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons
build/Release
# Dependency directories
jspm_packages/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# parcel-bundler cache
.cache
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# IDE files
.vscode
.idea
*.swp
*.swo
*~
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Build directories
dist/
build/
# Logs
logs
*.log

43
Dockerfile Normal file
View File

@ -0,0 +1,43 @@
# Use Node.js 18 as the base image
FROM node:18-alpine AS base
# Install dependencies only when needed
FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app
# Copy package files
COPY package.json package-lock.json* ./
RUN npm ci
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# Build the application
RUN npm run build
# Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
# Copy the built application
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./package.json
USER nextjs
EXPOSE 3000
ENV PORT=3000
ENV HOSTNAME="0.0.0.0"
# Use npm start to serve the built application
CMD ["npx", "serve", "-s", "dist", "-l", "3000"]

18
Dockerfile.dev Normal file
View File

@ -0,0 +1,18 @@
# Development Dockerfile
FROM node:18-alpine
# Set working directory
WORKDIR /app
# Install dependencies
COPY package*.json ./
RUN npm install
# Copy source code
COPY . .
# Expose the development port (Vite default)
EXPOSE 5173
# Start the development server
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]

26
docker-compose.yml Normal file
View File

@ -0,0 +1,26 @@
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- NODE_ENV=production
restart: unless-stopped
app-dev:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "5173:5173"
volumes:
- .:/app
- /app/node_modules
environment:
- NODE_ENV=development
command: npm run dev
restart: unless-stopped

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 KiB

View File

@ -6,6 +6,10 @@ import { BrowserRouter, Routes, Route } from "react-router-dom";
import Index from "./pages/Index";
import About from "./pages/About";
import ServicesPage from "./pages/ServicesPage";
import InfoCenter from "./pages/InfoCenter";
import Newsletters from "./pages/Newsletters";
import FinancialTools from "./pages/FinancialTools";
import Links from "./pages/Links";
import Resources from "./pages/Resources";
import TestimonialsPage from "./pages/TestimonialsPage";
import Contact from "./pages/Contact";
@ -23,6 +27,10 @@ const App = () => (
<Route path="/" element={<Index />} />
<Route path="/about" element={<About />} />
<Route path="/services" element={<ServicesPage />} />
<Route path="/info-center" element={<InfoCenter />} />
<Route path="/newsletters" element={<Newsletters />} />
<Route path="/financial-tools" element={<FinancialTools />} />
<Route path="/links" element={<Links />} />
<Route path="/resources" element={<Resources />} />
<Route path="/testimonials" element={<TestimonialsPage />} />
<Route path="/contact" element={<Contact />} />

View File

@ -27,11 +27,11 @@ const CtaSection = () => {
<Button
size="lg"
variant="outline"
className="border-cream/30 text-cream hover:bg-cream/10 text-lg px-8 py-3 rounded-2xl"
onClick={() => window.open('tel:+13618543711')}
className="border-black/30 text-black hover:bg-black/10 text-lg px-8 py-3 rounded-2xl"
onClick={() => window.open('tel:+13618839999')}
>
<Phone className="mr-2 w-5 h-5" />
Call (361) 854-3711
Call (361) 883-8999
</Button>
</div>

View File

@ -23,8 +23,8 @@ const Footer = () => {
</div>
<div className="flex items-center gap-3">
<Phone className="w-5 h-5 text-brass flex-shrink-0" strokeWidth={1.5} />
<a href="tel:+13618543711" className="text-cream/80 hover:text-cream gentle-transition">
(361) 854-3711
<a href="tel:+13618839999" className="text-cream/80 hover:text-cream gentle-transition">
(361) 883-8999
</a>
</div>
<div className="flex items-center gap-3">

View File

@ -7,7 +7,7 @@ const Hero = () => {
className="relative min-h-screen flex items-center justify-center text-center px-4"
style={{
backgroundImage: "url('/lovable-uploads/f8f08a1a-0132-4376-af8a-c5bb86f0627e.png')",
backgroundSize: "cover",
backgroundSize: "90% 80%",
backgroundPosition: "center",
backgroundRepeat: "no-repeat"
}}
@ -37,11 +37,11 @@ const Hero = () => {
<Button
variant="outline"
size="lg"
className="border-cream/30 text-cream hover:bg-cream/10 text-lg px-8 py-3 rounded-2xl"
onClick={() => window.open('tel:+13618543711')}
className="border-black/30 text-black hover:bg-black/10 text-lg px-8 py-3 rounded-2xl"
onClick={() => window.open('tel:+13618839999')}
>
<Phone className="mr-2 w-5 h-5" />
Call (361) 854-3711
Call (361) 883-8999
</Button>
</div>

View File

@ -7,11 +7,13 @@ const Navigation = () => {
const navItems = [
{ name: "Home", href: "/" },
{ name: "About", href: "/about" },
{ name: "Services", href: "/services" },
{ name: "Resources", href: "/resources" },
{ name: "Testimonials", href: "/testimonials" },
{ name: "Contact", href: "/contact" },
{ name: "Firm Profile", href: "/about" },
{ name: "Client Services", href: "/services" },
{ name: "Info Center", href: "/info-center" },
{ name: "Newsletters", href: "/newsletters" },
{ name: "Financial Tools", href: "/financial-tools" },
{ name: "Links", href: "/links" },
{ name: "Contact Us", href: "/contact" },
];
return (
@ -41,17 +43,11 @@ const Navigation = () => {
</div>
{/* Desktop CTA */}
<div className="hidden md:flex items-center space-x-4">
<a
href="#"
className="text-sage hover:text-forest gentle-transition text-sm"
>
Client Login
</a>
<div className="hidden md:flex items-center">
<Button
size="sm"
className="btn-shadow"
onClick={() => window.open('tel:+13618543711')}
onClick={() => window.open('tel:+13618839999')}
>
<Phone className="w-4 h-4 mr-2" />
Schedule Consultation
@ -83,17 +79,11 @@ const Navigation = () => {
{item.name}
</a>
))}
<div className="pt-4 pb-2 space-y-2">
<a
href="#"
className="text-sage hover:text-forest block px-3 py-2 text-sm"
>
Client Login
</a>
<div className="pt-4 pb-2">
<Button
size="sm"
className="ml-3 btn-shadow"
onClick={() => window.open('tel:+13618543711')}
onClick={() => window.open('tel:+13618839999')}
>
<Phone className="w-4 h-4 mr-2" />
Schedule Consultation

View File

@ -1,4 +1,4 @@
import { ArrowRight, Calculator, FileText, Users, Shield, Building } from "lucide-react";
import { ArrowRight, Calculator, FileText, Users, Shield, Building, Heart, TrendingUp, PiggyBank, Scale, Briefcase } from "lucide-react";
import { Card, CardContent } from "@/components/ui/card";
const Services = () => {
@ -7,36 +7,71 @@ const Services = () => {
icon: FileText,
title: "Tax Preparation & Planning",
description: "Maximize deductions with proactive quarterly planning and audit-ready documentation.",
image: "/lovable-uploads/741d6934-b230-43fb-9aac-a2699bba0915.png",
alt: "Abstract illustration of IRS documents and magnifier"
image: "/lovable-uploads/Screenshot 2025-09-10 183339.png",
alt: "TAX illustration with geometric patterns"
},
{
icon: Calculator,
title: "Accounting & Bookkeeping",
description: "Monthly books, financial statements, and cash-flow management for clear business insights.",
image: "/lovable-uploads/1260e5db-df42-4f32-89c2-eecc054d669d.png",
alt: "Abstract financial charts and calculator"
image: "/lovable-uploads/Screenshot 2025-09-10 183757.png",
alt: "Financial documents and accounting illustration"
},
{
icon: Users,
title: "Payroll Solutions",
description: "Full compliance, filings, and benefits coordination to keep your team paid accurately.",
image: null,
alt: null
image: "/lovable-uploads/Screenshot 2025-09-10 183224.png",
alt: "Balance scale with payroll and employee elements"
},
{
icon: Shield,
title: "IRS Representation",
description: "Expert audit defense, penalty negotiations, and payment plan arrangements.",
image: "/lovable-uploads/741d6934-b230-43fb-9aac-a2699bba0915.png",
alt: "Abstract illustration of IRS documents and magnifier"
alt: "IRS documents with magnifying glass illustration"
},
{
icon: Building,
title: "Business Consulting & Formation",
description: "Entity selection, business valuation partners, and operating agreement guidance.",
image: null,
alt: null
image: "/lovable-uploads/bea5e6b1-7510-4876-955e-a265f2600ec5.png",
alt: "Business essentials with smartphone and notebook"
},
{
icon: Heart,
title: "Estate Planning",
description: "Comprehensive estate planning to facilitate orderly transfer of assets and reduce tax burden.",
image: "/lovable-uploads/Screenshot 2025-09-10 183339.png",
alt: "Estate planning illustration"
},
{
icon: TrendingUp,
title: "Financial Planning",
description: "Structured financial plans to help you face any financial challenge at each stage of life.",
image: "/lovable-uploads/Screenshot 2025-09-10 183757.png",
alt: "Financial planning illustration"
},
{
icon: PiggyBank,
title: "Retirement Planning",
description: "Successful implementation and periodic review to ensure financial independence through retirement.",
image: "/lovable-uploads/Screenshot 2025-09-10 183224.png",
alt: "Retirement planning illustration"
},
{
icon: Scale,
title: "Estate & Trust Tax Preparation",
description: "Specialized tax preparation for estates and trusts with expert guidance on complex tax matters.",
image: "/lovable-uploads/741d6934-b230-43fb-9aac-a2699bba0915.png",
alt: "Estate and trust tax illustration"
},
{
icon: Briefcase,
title: "Sales Tax Services",
description: "Assistance with sales tax collection, compilation, and preparation of returns across multiple jurisdictions.",
image: "/lovable-uploads/bea5e6b1-7510-4876-955e-a265f2600ec5.png",
alt: "Sales tax services illustration"
}
];
@ -52,7 +87,7 @@ const Services = () => {
</p>
</div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
<div className="grid md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8">
{services.map((service, index) => {
const Icon = service.icon;
return (

View File

@ -150,7 +150,10 @@ const Contact = () => {
<MapPin className="w-5 h-5 text-sage flex-shrink-0 mt-1" strokeWidth={1.5} />
<div>
<div className="font-medium text-forest">Address</div>
<div className="text-sage">Corpus Christi, TX</div>
<div className="text-sage">
711 N. Carancahua St. Suite 1550<br />
Corpus Christi, TX 78401
</div>
</div>
</div>
@ -158,8 +161,8 @@ const Contact = () => {
<Phone className="w-5 h-5 text-sage flex-shrink-0 mt-1" strokeWidth={1.5} />
<div>
<div className="font-medium text-forest">Phone</div>
<a href="tel:+13618543711" className="text-sage hover:text-forest gentle-transition">
(361) 854-3711
<a href="tel:+13618839999" className="text-sage hover:text-forest gentle-transition">
(361) 883-8999
</a>
</div>
</div>
@ -205,9 +208,9 @@ const Contact = () => {
size="sm"
variant="destructive"
className="rounded-xl"
onClick={() => window.open('tel:+13618543711')}
onClick={() => window.open('tel:+13618839999')}
>
Call Now: (361) 854-3711
Call Now: (361) 883-8999
</Button>
</div>
</div>
@ -220,10 +223,10 @@ const Contact = () => {
size="lg"
variant="outline"
className="w-full rounded-xl"
onClick={() => window.open('tel:+13618543711')}
onClick={() => window.open('tel:+13618839999')}
>
<Phone className="mr-2 w-5 h-5" />
Call (361) 854-3711
Call (361) 883-8999
</Button>
<Button
@ -253,15 +256,18 @@ const Contact = () => {
Visit Our Corpus Christi Office
</h2>
{/* Placeholder for map - would integrate with Google Maps */}
<div className="bg-sage/20 rounded-2xl h-80 flex items-center justify-center">
<div className="text-center">
<MapPin className="w-12 h-12 text-sage mx-auto mb-4" strokeWidth={1.5} />
<p className="text-sage">
Google Maps integration would go here<br />
Showing our Corpus Christi location
</p>
</div>
{/* Google Maps Embed */}
<div className="rounded-2xl overflow-hidden h-80 shadow-lg">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3445.726419458!2d-97.3958!3d27.7947!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x866158c2f8b9c7e5%3A0x123456789abcdef!2s711%20N%20Carancahua%20St%20%231550%2C%20Corpus%20Christi%2C%20TX%2078401!5e0!3m2!1sen!2sus!4v1703123456789!5m2!1sen!2sus"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
title="Greg Knopp CPA Office - 711 N Carancahua St Suite 1550, Corpus Christi, TX"
/>
</div>
<p className="text-sage mt-6">

View File

@ -0,0 +1,480 @@
import Navigation from "@/components/Navigation";
import Footer from "@/components/Footer";
import { Card, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import {
Calculator,
Car,
Building,
CreditCard,
Shield,
TrendingUp,
Home,
PiggyBank,
DollarSign,
FileText,
Search,
ExternalLink
} from "lucide-react";
const FinancialTools = () => {
const calculatorCategories = [
{
icon: Car,
title: "Auto",
description: "Auto loan calculators and financing tools",
tools: [
"Auto Loan Early Payoff",
"Auto Rebate vs. Low Interest Financing",
"Auto Refinance Interest Savings",
"Bi-weekly Payments for an Auto Loan",
"Bi-weekly Payments for an Auto Loan with Fees",
"Car Loan Calculator",
"Dealer Financing vs. Credit Union Financing",
"Home Equity Loan vs. Auto loan",
"Lease vs. Buy",
"Low Interest Financing Savings"
]
},
{
icon: Building,
title: "Business",
description: "Business financial analysis and planning tools",
tools: [
"Breakeven Analysis",
"Business Debt Consolidation Calculator",
"Business Valuation - Discounted Cash Flow",
"Cash Flow Calculator",
"Commercial Loan Calculator",
"Debt Service Coverage",
"Equipment Buy vs. Lease",
"Financial Ratios",
"Inventory Analysis",
"Like Kind Exchange",
"Profit Margin Calculator",
"Repossession of Personal Property from a Deferred Payment Sale",
"Repossession of Personal Property from an Installment Payment Sale",
"Repossession of Real Property",
"Working Capital Needs"
]
},
{
icon: CreditCard,
title: "Debt and Credit Cards",
description: "Debt management and credit card optimization tools",
tools: [
"Accelerated Debt Payoff",
"Consolidation Loan Investment Calculator",
"Cost-of-Debt Calculator",
"Credit Card Minimum Payment Calculator",
"Credit Card Optimizer",
"Credit Card Pay Off",
"Home Equity Debt Consolidation",
"How much do you owe?",
"Personal Debt Consolidation",
"Roll-Down Your Credit Card Debt!",
"Snowball Debt Elimination Calculator",
"Student Loan Consolidation and Debt Payoff"
]
},
{
icon: Shield,
title: "Insurance",
description: "Insurance analysis and planning calculators",
tools: [
"Comprehensive Life Insurance Analysis",
"Disability Insurance",
"Fixed Annuity Calculator",
"Health Savings Account (HSA) Contribution Calculator",
"Health Savings Account (HSA) Goal Calculator",
"Health Savings Account (HSA) Savings Calculator",
"Health Savings Account (HSA) vs. Traditional Health Plan",
"Health Savings Accounts (HSA) Employer Benefit",
"Human Life Value",
"Immediate Annuity Calculator",
"Life Insurance Calculator",
"Long Term Care Calculator",
"Variable Annuity Calculator",
"Variable Annuity without Surrender Charges"
]
},
{
icon: TrendingUp,
title: "Investment",
description: "Investment analysis and portfolio planning tools",
tools: [
"Annual Rate of Return Calculator",
"Annual Stock Option Grants",
"Asset Allocation Calculator",
"Compare Investment Fees",
"Future Contracts Calculator",
"Future Value Calculator",
"Internal Rate of Return (IRR) Calculator",
"Investment Distributions",
"Investment Goal",
"Investment Loan",
"Investment Property Calculator",
"Investment Questionnaire - Broad Portfolio",
"Investment Questionnaire - Cash, Fixed Income and Equities",
"Investment Returns",
"Investment Savings and Distributions",
"Lump Sum Annual Return Calculator",
"Lump Sum Future Value Calculator",
"Lump Sum Present Value Calculator",
"Municipal Bond Tax Equivalent Yield",
"Mutual Fund Expense Calculator",
"Personal Economic Recovery Calculator",
"Present Value Calculator",
"Present Value Goal Calculator",
"REIT Tax-Equivalent Distribution",
"Stock Option Calculator",
"Taxable vs. Tax Deferred Investments",
"Taxable vs. Tax Deferred vs. Tax Free Investment"
]
},
{
icon: DollarSign,
title: "Loan",
description: "Loan calculators and payment analysis tools",
tools: [
"Alternative Payment Frequencies",
"Amortizing Loan Calculator",
"Balloon Loan Calculator",
"Debt Consolidation Calculator",
"Enhanced Loan Calculator",
"Equity Line of Credit Payments",
"Existing Loan Calculator",
"Home Equity Line of Credit Calculator",
"Line of Credit Payoff",
"Loan & Credit Line Payment",
"Loan & Credit Line Tax Savings",
"Loan Comparison Calculator",
"Loan Prequalification Calculator"
]
},
{
icon: Home,
title: "Mortgage",
description: "Mortgage calculators and home financing tools",
tools: [
"Adjustable Rate Mortgage Calculator",
"APR Calculator for Adjustable Rate Mortgages",
"ARM & Interest Only ARM vs. Fixed Rate Mortgage",
"Balloon Mortgages",
"Bi-weekly Payment Calculator",
"Bi-weekly Payments for an Existing Mortgage",
"Blended Rate Mortgage Calculator",
"FHA Maximum Financing Calculator",
"Fixed Rate Mortgage vs. Interest Only Mortgage",
"Fixed Rate Mortgage vs. LIBOR ARM",
"Interest Only ARM Calculator",
"Interest Only Mortgage Calculator",
"Maximum Mortgage",
"Mortgage APR Calculator",
"Mortgage Comparison: 15 Years vs. 30 Years",
"Mortgage Debt Consolidation",
"Mortgage Loan Calculator",
"Mortgage Loan Calculator (PITI)",
"Mortgage Payoff",
"Mortgage Points Calculator",
"Mortgage Qualifier",
"Mortgage Refinance Break Even",
"Mortgage Required Income",
"Mortgage Tax Savings Calculator",
"Option ARM vs. Fixed Rate Mortgage",
"Refinance Interest Savings",
"Rent vs. Buy",
"Reverse Mortgage Calculator"
]
},
{
icon: FileText,
title: "Personal Finance",
description: "Personal finance management and budgeting tools",
tools: [
"Basic Calculator",
"Basic Financial Calculator",
"Checkbook Balancer",
"Credit Assessment",
"Home Budget Analysis",
"Life Expectancy",
"Net Worth",
"Should my spouse work?",
"Student Budget"
]
},
{
icon: PiggyBank,
title: "Retirement",
description: "Retirement planning and savings calculators",
tools: [
"401(k) Calculator",
"401(k) Savings with Profit Sharing",
"401(k) Spend It or Save It Calculator",
"403(b) Savings Calculator",
"457 Plan Contribution Effects on Your Paycheck",
"457 Plan Withdrawal",
"457 Plan: Roth vs. Pre-tax",
"457 Savings Calculator",
"72(t) Calculator",
"72(t) Distribution Impact",
"Beneficiary Required Minimum Distributions",
"Company Stock Distribution Analysis Calculator",
"How Important is Social Security?",
"How long will my retirement savings last?",
"Individual 401(k) Contribution Comparison",
"Individual 401(k) Savings Calculator",
"IRA Spend It or Save It Calculator",
"Pension Plan Retirement Options",
"Required Minimum Distribution (RMD)",
"Required Minimum Distribution (RMD) for Current Year",
"Retirement Account Contribution Accelerator",
"Retirement Contribution Effects on Your Paycheck",
"Retirement Income",
"Retirement Nestegg Calculator",
"Retirement Pension Planner",
"Retirement Plan Withdrawal",
"Retirement Planner",
"Retirement Planner with Retirement Earnings",
"Retirement Shortfall",
"RMD & Stretch IRA Calculator",
"Roth (after-tax) Account or Pre-Tax Account?",
"Roth 401(k) vs. Traditional 401(k)",
"Roth 403(b) vs. Traditional 403(b)",
"Roth IRA Calculator",
"Roth IRA Conversion",
"Roth IRA Conversion with Distributions",
"Roth IRA vs. Traditional IRA",
"Roth vs. Traditional 401(k) and your Paycheck",
"Should you Borrow From a 401(k) or 403(b)?",
"Social Security Benefits",
"Traditional IRA Calculator"
]
},
{
icon: DollarSign,
title: "Savings",
description: "Savings planning and goal calculators",
tools: [
"Benefit of Spending Less",
"CD Ladder Calculator",
"Certificate of Deposit Calculator",
"College Savings",
"Compare Savings Rates",
"Compound Savings Calculator",
"Compounding and Your Return",
"Cool Million",
"Credit Union Certificate Calculator",
"Credit Union Certificate Ladder Calculator",
"Don't Delay Your Savings!",
"Emergency Savings Calculator",
"Home Buyer Savings Calculator",
"Lunch Savings",
"Savings Distribution Calculator",
"Savings Goals",
"Savings, Taxes, and Inflation",
"Vice Savings"
]
},
{
icon: Calculator,
title: "Tax",
description: "Tax planning and calculation tools",
tools: [
"1040 Tax Calculator",
"457 Payroll Deductions",
"Earned Income Credit (EIC) Calculator",
"Estate Tax Planning",
"Flexible Spending Account (FSA) Calculator",
"Hourly Paycheck Calculator",
"Marginal Tax Rate Calculator",
"Net to Gross Paycheck Calculator",
"Payroll Deductions Calculator",
"Self-Employment Tax Calculator",
"U.S. 1040EZ Tax Form Calculator"
]
}
];
return (
<div className="min-h-screen">
<Navigation />
<main className="pt-16">
{/* Hero Section */}
<section className="py-24 bg-gradient-subtle">
<div className="container mx-auto px-4 text-center">
<h1 className="text-display-xl font-display font-bold text-forest mb-6">
Financial Tools
</h1>
<p className="text-body-lg text-sage max-w-3xl mx-auto mb-8">
Should I refinance my mortgage? How much do I need to save for my child's college education? As accounting professionals, these are some of the questions that are posed to us on a daily basis. We are providing these interactive financial calculators and other tools to assist you with some of the day-to-day questions and concerns that may arise.
</p>
<div className="bg-card rounded-2xl p-6 card-elevation max-w-2xl mx-auto">
<p className="text-sage text-sm">
<strong>Disclaimer:</strong> While these financial tools are not a substitute for financial advice from a qualified professional, they can be used as a starting point in the decision making process.
</p>
</div>
</div>
</section>
{/* Calculator Categories */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="space-y-12">
{calculatorCategories.map((category, index) => {
const Icon = category.icon;
return (
<div key={index}>
<div className="flex items-center gap-4 mb-8">
<div className="w-16 h-16 bg-brass/20 rounded-2xl flex items-center justify-center">
<Icon className="w-8 h-8 text-brass" strokeWidth={1.5} />
</div>
<div>
<h2 className="text-display-lg font-display font-semibold text-forest">
{category.title}
</h2>
<p className="text-sage">{category.description}</p>
</div>
</div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-4">
{category.tools.map((tool, toolIndex) => (
<Card key={toolIndex} className="rounded-xl card-elevation hover:shadow-lg gentle-transition cursor-pointer">
<CardContent className="p-4">
<div className="flex items-center justify-between">
<span className="text-sage text-sm font-medium">{tool}</span>
<ExternalLink className="w-4 h-4 text-brass flex-shrink-0" strokeWidth={1.5} />
</div>
</CardContent>
</Card>
))}
</div>
</div>
);
})}
</div>
</div>
</section>
{/* Featured Calculator */}
<section className="py-24 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Featured Calculator
</h2>
<p className="text-body-lg text-sage">
Try our most popular financial calculator
</p>
</div>
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<div className="grid lg:grid-cols-2 gap-8">
<div>
<h3 className="text-display-md font-display font-semibold text-forest mb-4">
Mortgage Loan Calculator
</h3>
<p className="text-sage mb-6">
Calculate your monthly mortgage payment including principal, interest, taxes, and insurance (PITI).
</p>
<div className="space-y-4">
<div>
<label className="block text-sm font-medium text-forest mb-2">
Loan Amount ($)
</label>
<Input
type="number"
placeholder="300,000"
className="rounded-xl"
/>
</div>
<div>
<label className="block text-sm font-medium text-forest mb-2">
Interest Rate (%)
</label>
<Input
type="number"
placeholder="6.5"
step="0.01"
className="rounded-xl"
/>
</div>
<div>
<label className="block text-sm font-medium text-forest mb-2">
Loan Term (Years)
</label>
<Input
type="number"
placeholder="30"
className="rounded-xl"
/>
</div>
<Button className="w-full btn-shadow">
Calculate Payment
</Button>
</div>
</div>
<div className="bg-muted/30 rounded-xl p-6">
<h4 className="font-display font-semibold text-forest mb-4">
Payment Breakdown
</h4>
<div className="space-y-3">
<div className="flex justify-between">
<span className="text-sage">Principal & Interest:</span>
<span className="font-medium text-forest">$1,896.20</span>
</div>
<div className="flex justify-between">
<span className="text-sage">Property Tax:</span>
<span className="font-medium text-forest">$250.00</span>
</div>
<div className="flex justify-between">
<span className="text-sage">Insurance:</span>
<span className="font-medium text-forest">$100.00</span>
</div>
<div className="flex justify-between border-t border-sage/20 pt-3">
<span className="font-medium text-forest">Total Monthly Payment:</span>
<span className="font-bold text-forest text-lg">$2,246.20</span>
</div>
</div>
</div>
</div>
</CardContent>
</Card>
</div>
</div>
</section>
{/* CTA Section */}
<section className="py-24 bg-gradient-hero">
<div className="container mx-auto px-4 text-center">
<div className="max-w-3xl mx-auto">
<h2 className="text-display-lg font-display font-semibold text-cream mb-6">
Need Help Interpreting Your Results?
</h2>
<p className="text-body-lg text-cream/90 mb-8 leading-relaxed">
Our financial calculators are a great starting point, but every situation is unique. Let our experienced CPA team help you understand your results and develop a comprehensive financial strategy.
</p>
<Button
size="lg"
variant="outline"
className="bg-cream text-forest hover:bg-cream/90 border-cream btn-shadow text-lg px-8 py-3 rounded-2xl"
>
Schedule Free Consultation
</Button>
</div>
</div>
</section>
</main>
<Footer />
</div>
);
};
export default FinancialTools;

273
src/pages/InfoCenter.tsx Normal file
View File

@ -0,0 +1,273 @@
import Navigation from "@/components/Navigation";
import Footer from "@/components/Footer";
import { Card, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import {
Calendar,
FileText,
Download,
ExternalLink,
Clock,
CheckCircle2,
AlertCircle
} from "lucide-react";
const InfoCenter = () => {
const upcomingDates = [
{ date: "January 15, 2025", event: "Q4 2024 Estimated Tax Payment Due", type: "deadline" },
{ date: "January 31, 2025", event: "W-2 and 1099 Forms Due to Employees", type: "deadline" },
{ date: "February 15, 2025", event: "1099 Forms Due to IRS", type: "deadline" },
{ date: "March 15, 2025", event: "S-Corporation and Partnership Returns Due", type: "deadline" },
{ date: "April 15, 2025", event: "Individual Tax Returns Due", type: "deadline" },
{ date: "April 15, 2025", event: "Q1 2025 Estimated Tax Payment Due", type: "deadline" },
{ date: "June 15, 2025", event: "Q2 2025 Estimated Tax Payment Due", type: "deadline" },
{ date: "September 15, 2025", event: "Q3 2025 Estimated Tax Payment Due", type: "deadline" },
{ date: "October 15, 2025", event: "Extended Individual Returns Due", type: "deadline" },
{ date: "December 15, 2025", event: "Q4 2025 Estimated Tax Payment Due", type: "deadline" }
];
const taxOrganizerSections = [
"Personal Information",
"Income Sources",
"Business Income & Expenses",
"Investment Information",
"Deductions & Credits",
"Prior Year Information",
"Document Checklist"
];
return (
<div className="min-h-screen">
<Navigation />
<main className="pt-16">
{/* Hero Section */}
<section className="py-24 bg-gradient-subtle">
<div className="container mx-auto px-4 text-center">
<h1 className="text-display-xl font-display font-bold text-forest mb-6">
Info Center
</h1>
<p className="text-body-lg text-sage max-w-3xl mx-auto">
Stay organized and informed with our comprehensive tax calendar, client organizer, and access to essential IRS forms and publications.
</p>
</div>
</section>
{/* Events Calendar */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Events Calendar
</h2>
<p className="text-body-lg text-sage">
The interactive calendar highlights federal and state tax due dates, special firm events and other important dates that may be of interest to you. Because the calendar is continually updated, check back often to keep track of filing requirements, deadlines and other events that will help you stay current and up-to-date.
</p>
</div>
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<div className="flex items-center gap-3 mb-6">
<Calendar className="w-6 h-6 text-brass" strokeWidth={1.5} />
<h3 className="text-display-md font-display font-semibold text-forest">
2025 Tax Calendar
</h3>
</div>
<div className="space-y-4">
{upcomingDates.map((item, index) => (
<div key={index} className="flex items-center gap-4 p-4 rounded-xl bg-muted/30 hover:bg-muted/50 gentle-transition">
<div className="flex-shrink-0">
{item.type === 'deadline' ? (
<AlertCircle className="w-5 h-5 text-destructive" strokeWidth={1.5} />
) : (
<CheckCircle2 className="w-5 h-5 text-brass" strokeWidth={1.5} />
)}
</div>
<div className="flex-1">
<div className="font-medium text-forest">{item.event}</div>
<div className="text-sm text-sage">{item.date}</div>
</div>
<div className="text-sm text-sage">
{item.type === 'deadline' ? 'Deadline' : 'Event'}
</div>
</div>
))}
</div>
<div className="mt-6 p-4 bg-brass/10 rounded-xl">
<p className="text-sm text-sage">
<strong>Note:</strong> Dates may vary for certain circumstances. Always consult with your tax professional for specific deadlines applicable to your situation.
</p>
</div>
</CardContent>
</Card>
</div>
</div>
</section>
{/* Client Tax Organizer */}
<section className="py-24 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Client Tax Organizer
</h2>
<p className="text-body-lg text-sage">
A tax organizer can facilitate the process of pulling together your tax information. This basic tax organizer is designed for new clients and allows you to enter your information right on the screen. You can then print the completed tax organizer and fax or mail it to the office. Current clients should contact the office to request a "proforma" tax organizer that includes prior year information and carryover data.
</p>
</div>
<div className="grid md:grid-cols-2 gap-8">
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<div className="flex items-center gap-3 mb-6">
<FileText className="w-6 h-6 text-brass" strokeWidth={1.5} />
<h3 className="text-display-md font-display font-semibold text-forest">
New Client Organizer
</h3>
</div>
<p className="text-sage mb-6">
Complete this organizer if you're a new client or haven't used our services in the past two years.
</p>
<div className="space-y-3 mb-6">
{taxOrganizerSections.map((section, index) => (
<div key={index} className="flex items-center gap-3">
<CheckCircle2 className="w-4 h-4 text-brass flex-shrink-0" strokeWidth={1.5} />
<span className="text-sage">{section}</span>
</div>
))}
</div>
<Button className="w-full btn-shadow">
<Download className="mr-2 w-4 h-4" />
Download New Client Organizer
</Button>
</CardContent>
</Card>
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<div className="flex items-center gap-3 mb-6">
<Clock className="w-6 h-6 text-brass" strokeWidth={1.5} />
<h3 className="text-display-md font-display font-semibold text-forest">
Returning Client Organizer
</h3>
</div>
<p className="text-sage mb-6">
For existing clients with prior year information and carryover data included.
</p>
<div className="space-y-3 mb-6">
<div className="flex items-center gap-3">
<CheckCircle2 className="w-4 h-4 text-brass flex-shrink-0" strokeWidth={1.5} />
<span className="text-sage">Prior year information included</span>
</div>
<div className="flex items-center gap-3">
<CheckCircle2 className="w-4 h-4 text-brass flex-shrink-0" strokeWidth={1.5} />
<span className="text-sage">Carryover data pre-filled</span>
</div>
<div className="flex items-center gap-3">
<CheckCircle2 className="w-4 h-4 text-brass flex-shrink-0" strokeWidth={1.5} />
<span className="text-sage">Customized for your situation</span>
</div>
</div>
<Button variant="outline" className="w-full">
Request Proforma Organizer
</Button>
</CardContent>
</Card>
</div>
</div>
</div>
</section>
{/* Federal Tax Forms & IRS Publications */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Federal Tax Forms & IRS Publications
</h2>
<p className="text-body-lg text-sage">
Looking for a federal tax form? Browse this online tax forms library to find downloadable IRS forms. The forms are presented in PDF format and are acceptable for filing with the IRS. You may also choose from dozens of helpful tax publications developed by the IRS to help taxpayers have a better understanding of various tax issues.
</p>
</div>
<div className="grid md:grid-cols-2 gap-8">
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<h3 className="text-display-md font-display font-semibold text-forest mb-6">
Popular Tax Forms
</h3>
<div className="space-y-3">
{[
"Form 1040 - Individual Income Tax Return",
"Form 1040-ES - Estimated Tax for Individuals",
"Form 1120 - U.S. Corporation Income Tax Return",
"Form 1120S - U.S. Income Tax Return for an S Corporation",
"Form 1065 - U.S. Return of Partnership Income",
"Form W-2 - Wage and Tax Statement",
"Form 1099-MISC - Miscellaneous Income",
"Form 941 - Employer's Quarterly Federal Tax Return"
].map((form, index) => (
<div key={index} className="flex items-center justify-between p-3 rounded-xl hover:bg-muted/50 gentle-transition cursor-pointer">
<span className="text-sage">{form}</span>
<ExternalLink className="w-4 h-4 text-brass" strokeWidth={1.5} />
</div>
))}
</div>
<Button variant="outline" className="w-full mt-6">
Browse All Forms
</Button>
</CardContent>
</Card>
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<h3 className="text-display-md font-display font-semibold text-forest mb-6">
IRS Publications
</h3>
<div className="space-y-3">
{[
"Publication 17 - Your Federal Income Tax",
"Publication 334 - Tax Guide for Small Business",
"Publication 535 - Business Expenses",
"Publication 587 - Business Use of Your Home",
"Publication 946 - How to Depreciate Property",
"Publication 970 - Tax Benefits for Education",
"Publication 225 - Farmer's Tax Guide",
"Publication 526 - Charitable Contributions"
].map((pub, index) => (
<div key={index} className="flex items-center justify-between p-3 rounded-xl hover:bg-muted/50 gentle-transition cursor-pointer">
<span className="text-sage">{pub}</span>
<ExternalLink className="w-4 h-4 text-brass" strokeWidth={1.5} />
</div>
))}
</div>
<Button variant="outline" className="w-full mt-6">
Browse All Publications
</Button>
</CardContent>
</Card>
</div>
</div>
</div>
</section>
</main>
<Footer />
</div>
);
};
export default InfoCenter;

315
src/pages/Links.tsx Normal file
View File

@ -0,0 +1,315 @@
import Navigation from "@/components/Navigation";
import Footer from "@/components/Footer";
import { Card, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import {
ExternalLink,
DollarSign,
Building,
Newspaper,
FileText,
Globe,
Shield,
TrendingUp
} from "lucide-react";
const Links = () => {
const linkCategories = [
{
icon: DollarSign,
title: "Financial",
description: "Financial news, resources, and tools",
links: [
{
name: "CNN Business",
url: "https://edition.cnn.com/business",
description: "CNN Business offers comprehensive business news, market updates, and financial information."
}
]
},
{
icon: Building,
title: "Governmental",
description: "Government agencies and official resources",
links: [
{
name: "Social Security Online",
url: "https://www.ssa.gov/",
description: "The Official Website of the U.S. Social Security Administration."
},
{
name: "U.S. Small Business Administration",
url: "https://www.sba.gov/",
description: "Small business programs and services to help you start, grow, and succeed."
}
]
},
{
icon: Newspaper,
title: "News",
description: "Financial and business news sources",
links: [
{
name: "MSNBC - Microsoft & NBC",
url: "https://www.msnbc.msn.com/",
description: "MSNBC is the place for up to the minute news. Many of the news articles have audio and video clips."
},
{
name: "Wall Street Journal",
url: "https://www.wsj.com/",
description: "Complete financial news service offers personalized news and market quotes. Plus, links to Barron's Online and Smart Money Interactive."
}
]
},
{
icon: FileText,
title: "Tax",
description: "Tax-related resources and tools",
links: [
{
name: "Check IRS Refund Status",
url: "https://sa.www4.irs.gov/wmr/",
description: "Track your tax return through the IRS website."
},
{
name: "The Internal Revenue Service",
url: "https://www.irs.gov/",
description: "Home of the IRS on the Web. The IRS has definitely done a nice job on their Website."
},
{
name: "Texas Department of Revenue",
url: "https://comptroller.texas.gov/taxes/",
description: "Texas Department of Revenue - Official state tax information and resources."
}
]
}
];
const additionalResources = [
{
icon: Shield,
title: "Professional Organizations",
links: [
{ name: "American Institute of CPAs (AICPA)", url: "https://www.aicpa.org" },
{ name: "Texas Society of CPAs", url: "https://www.tscpa.org" },
{ name: "National Association of Tax Professionals", url: "https://www.natptax.com" }
]
},
{
icon: TrendingUp,
title: "Investment Resources",
links: [
{ name: "Securities and Exchange Commission", url: "https://www.sec.gov" },
{ name: "Financial Industry Regulatory Authority", url: "https://www.finra.org" },
{ name: "Morningstar", url: "https://www.morningstar.com" }
]
},
{
icon: Globe,
title: "Business Resources",
links: [
{ name: "U.S. Chamber of Commerce", url: "https://www.uschamber.com" },
{ name: "Better Business Bureau", url: "https://www.bbb.org" },
{ name: "SCORE - Small Business Mentoring", url: "https://www.score.org" }
]
}
];
const handleLinkClick = (url: string) => {
window.open(url, '_blank', 'noopener,noreferrer');
};
return (
<div className="min-h-screen">
<Navigation />
<main className="pt-16">
{/* Hero Section */}
<section className="py-24 bg-gradient-subtle">
<div className="container mx-auto px-4 text-center">
<h1 className="text-display-xl font-display font-bold text-forest mb-6">
Links
</h1>
<p className="text-body-lg text-sage max-w-3xl mx-auto">
There are many great sites on the Web, but trying to find those great sites can be a frustrating experience. We have compiled a list of websites that we have found to be helpful sources of information. When you click on a link, a new window will pop up. Close the window when you are ready to return to this page.
</p>
</div>
</section>
{/* Main Link Categories */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-6xl mx-auto">
<div className="grid lg:grid-cols-2 gap-12">
{linkCategories.map((category, index) => {
const Icon = category.icon;
return (
<div key={index}>
<div className="flex items-center gap-4 mb-8">
<div className="w-12 h-12 bg-brass/20 rounded-2xl flex items-center justify-center">
<Icon className="w-6 h-6 text-brass" strokeWidth={1.5} />
</div>
<div>
<h2 className="text-display-md font-display font-semibold text-forest">
{category.title}
</h2>
<p className="text-sage">{category.description}</p>
</div>
</div>
<div className="space-y-4">
{category.links.map((link, linkIndex) => (
<Card key={linkIndex} className="rounded-xl card-elevation hover:shadow-lg gentle-transition cursor-pointer">
<CardContent className="p-6">
<div className="flex items-start justify-between">
<div className="flex-1">
<h3 className="font-display font-semibold text-forest mb-2">
{link.name}
</h3>
<p className="text-sage text-sm leading-relaxed">
{link.description}
</p>
</div>
<Button
size="sm"
variant="outline"
className="ml-4 flex-shrink-0"
onClick={() => handleLinkClick(link.url)}
>
<ExternalLink className="w-4 h-4" strokeWidth={1.5} />
</Button>
</div>
</CardContent>
</Card>
))}
</div>
</div>
);
})}
</div>
</div>
</div>
</section>
{/* Additional Resources */}
<section className="py-24 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-6xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Additional Resources
</h2>
<p className="text-body-lg text-sage">
More helpful resources organized by category
</p>
</div>
<div className="grid md:grid-cols-3 gap-8">
{additionalResources.map((category, index) => {
const Icon = category.icon;
return (
<Card key={index} className="rounded-2xl card-elevation">
<CardContent className="p-8">
<div className="flex items-center gap-3 mb-6">
<div className="w-10 h-10 bg-brass/20 rounded-xl flex items-center justify-center">
<Icon className="w-5 h-5 text-brass" strokeWidth={1.5} />
</div>
<h3 className="text-display-md font-display font-semibold text-forest">
{category.title}
</h3>
</div>
<div className="space-y-3">
{category.links.map((link, linkIndex) => (
<div
key={linkIndex}
className="flex items-center justify-between p-3 rounded-xl hover:bg-muted/50 gentle-transition cursor-pointer"
onClick={() => handleLinkClick(link.url)}
>
<span className="text-sage text-sm font-medium">{link.name}</span>
<ExternalLink className="w-4 h-4 text-brass flex-shrink-0" strokeWidth={1.5} />
</div>
))}
</div>
</CardContent>
</Card>
);
})}
</div>
</div>
</div>
</section>
{/* Quick Access */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Quick Access
</h2>
<p className="text-body-lg text-sage">
Most frequently accessed resources
</p>
</div>
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
{[
{ name: "IRS Website", url: "https://www.irs.gov/", icon: FileText },
{ name: "Social Security", url: "https://www.ssa.gov/", icon: Shield },
{ name: "SBA", url: "https://www.sba.gov/", icon: Building },
{ name: "Texas Comptroller", url: "https://comptroller.texas.gov/taxes/", icon: Globe }
].map((link, index) => {
const Icon = link.icon;
return (
<Card key={index} className="rounded-xl card-elevation hover:shadow-lg gentle-transition cursor-pointer">
<CardContent className="p-6 text-center">
<div className="w-12 h-12 bg-brass/20 rounded-2xl flex items-center justify-center mx-auto mb-4">
<Icon className="w-6 h-6 text-brass" strokeWidth={1.5} />
</div>
<h3 className="font-display font-semibold text-forest mb-2">
{link.name}
</h3>
<Button
size="sm"
variant="outline"
className="w-full"
onClick={() => handleLinkClick(link.url)}
>
<ExternalLink className="w-4 h-4 mr-2" strokeWidth={1.5} />
Visit Site
</Button>
</CardContent>
</Card>
);
})}
</div>
</div>
</div>
</section>
{/* Disclaimer */}
<section className="py-16 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<Card className="rounded-2xl bg-brass/10 border-brass/20">
<CardContent className="p-6">
<div className="text-center">
<h3 className="font-display font-semibold text-forest mb-3">
Important Notice
</h3>
<p className="text-sage text-sm leading-relaxed">
These links are provided for your convenience and information only. We are not responsible for the content, accuracy, or availability of these external websites. The inclusion of any link does not imply endorsement by Greg Knopp, P.C. Please review the privacy policies and terms of use of any external websites you visit.
</p>
</div>
</CardContent>
</Card>
</div>
</div>
</section>
</main>
<Footer />
</div>
);
};
export default Links;

321
src/pages/Newsletters.tsx Normal file
View File

@ -0,0 +1,321 @@
import Navigation from "@/components/Navigation";
import Footer from "@/components/Footer";
import { Card, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Badge } from "@/components/ui/badge";
import {
Newspaper,
AlertTriangle,
FileText,
Calendar,
ExternalLink,
Download,
Clock
} from "lucide-react";
const Newsletters = () => {
const taxAlerts = [
{
title: "One Big Beautiful Bill Act (Signed Into Law July 4, 2025)",
date: "July 4, 2025",
type: "alert",
summary: "Major tax legislation signed into law affecting multiple areas of tax policy.",
content: "The One Big Beautiful Bill Act represents significant changes to the tax code that will impact both individual and business taxpayers. This comprehensive legislation includes provisions affecting tax rates, deductions, credits, and compliance requirements."
},
{
title: "2025 Post-Filing Season Update",
date: "April 15, 2025",
type: "update",
summary: "Important updates and reminders following the 2024 tax filing season.",
content: "As we move past the 2024 filing season, there are several important updates and reminders for taxpayers to consider for the 2025 tax year."
},
{
title: "2024 Post-Election Tax Policy Update",
date: "November 15, 2024",
type: "update",
summary: "Analysis of potential tax policy changes following the 2024 elections.",
content: "Following the 2024 elections, we provide analysis of potential tax policy changes and their implications for taxpayers."
}
];
const taxBriefings = [
{
title: "IRS Promises to Propose Regulations on Transfers of U.S. Real Property Interests (Notice 2025-45)",
date: "January 15, 2025",
type: "briefing",
summary: "Treasury and the IRS intend to issue proposed regulations under sections 897(d) and (e) to modify the rules under §§1.897-5T and 1.897-6T, Notice 89-85, 1989-31 I.R.B. 9, and Notice 2006-46, 2006-1 C.B. 896.",
content: "The IRS has announced its intention to propose new regulations that will significantly impact how transfers of U.S. real property interests are handled for tax purposes. These changes will affect both domestic and foreign investors in U.S. real estate."
},
{
title: "IRS Reminds Employers Student Loan Repayments Are Excludable Through 2025 (IR-2025-81)",
date: "January 10, 2025",
type: "briefing",
summary: "The IRS has reminded employers that they may continue to offer student loan repayment assistance through educational assistance programs until the end of the tax year at issue, December 31, 2025.",
content: "Employers can continue to provide tax-free student loan repayment assistance to employees through educational assistance programs. This benefit can be up to $5,250 per employee per year and is excluded from the employee's gross income."
},
{
title: "IRS Whistleblower Office Celebrates National Whistleblower Day (IR-2025-78)",
date: "July 30, 2025",
type: "briefing",
summary: "The IRS Whistleblower Office emphasized the role whistleblowers continue to play in supporting the nation's tax administration ahead of National Whistleblower Appreciation Day on July 30.",
content: "The IRS Whistleblower Office highlighted the important role that whistleblowers play in identifying tax fraud and non-compliance. The program has been instrumental in recovering billions of dollars in unpaid taxes."
},
{
title: "Rates Used in Computing Special Use Value Issued, Rev. Rul. 2025-16",
date: "January 5, 2025",
type: "briefing",
summary: "The 2025 interest rates to be used in computing the special use value of farm real property for which an election is made under Code Sec. 2032A were issued by the IRS.",
content: "The IRS has released the 2025 interest rates for computing special use value under Section 2032A. These rates are used for estate tax purposes when valuing farm and closely held business real property."
},
{
title: "TX - Telehealth services",
date: "December 20, 2024",
type: "briefing",
summary: "The Texas Comptroller issued a private letter ruling stating that a taxpayer's telehealth services are not subject to sales and use tax.",
content: "The Texas Comptroller has clarified that telehealth services provided in a bundle that includes various components are not subject to Texas sales and use tax. This ruling provides important guidance for healthcare providers offering telehealth services in Texas."
},
{
title: "IRS Announces No Changes to 2025 Returns or Withholding Under OBBBA (IR-2025-82)",
date: "January 20, 2025",
type: "briefing",
summary: "The IRS has announced that, under the phased implementation of the One Big Beautiful Bill Act (OBBBA), there will be no changes to individual information returns or federal income tax withholding tables for the tax year at issue.",
content: "Despite the passage of the One Big Beautiful Bill Act, the IRS has confirmed that there will be no immediate changes to withholding tables or information returns for 2025, providing stability for taxpayers and employers."
},
{
title: "IRS Lists FAQs on Expiration of Energy Credits and Deductions Under OBBB and More (FS-2025-5; IR-2025-86)",
date: "January 25, 2025",
type: "briefing",
summary: "The IRS issued frequently asked questions (FAQs) relating to several energy credits and deductions that are expiring under the One, Big, Beautiful Bill Act (OBBB) and their termination dates.",
content: "The IRS has provided comprehensive guidance on energy-related tax credits and deductions that are expiring under the new legislation, including clarification on the energy efficient home improvement credit and residential clean energy credit."
},
{
title: "IRS Provides Guidance for 'Beginning of Construction' for Applicable Wind and Solar Facilities (Notice 2025-42)",
date: "February 1, 2025",
type: "briefing",
summary: "The IRS has provided guidance regarding what is considered 'beginning of constructions' for purposes of the termination of the Code Sec. 45Y clean electricity production credit and the Code Sec. 48E clean electricity investment credit.",
content: "The One Big Beautiful Bill (OBBB) Act terminated the Code Secs. 45Y and 48E credits for applicable wind and solar facilities placed in service after December 31, 2027. This notice provides important guidance on what constitutes 'beginning of construction' for these facilities."
},
{
title: "TIGTA Critical of IRS Level of Service and Wait Time Reporting",
date: "January 30, 2025",
type: "briefing",
summary: "The Treasury Inspector General for Tax Administration suggested the way the Internal Revenue Service reports level of service (ability to reach an operator when requested) and wait times does not necessarily reflect the actual times taxpayers are waiting to reach a representative at the agency.",
content: "TIGTA has raised concerns about the accuracy of IRS reporting on customer service metrics, suggesting that the reported wait times may not accurately reflect the actual experience of taxpayers trying to reach IRS representatives."
},
{
title: "FinCEN Delays Investment Adviser Rules Until 2028 (FinCEN Exemptive Relief Order)",
date: "February 5, 2025",
type: "briefing",
summary: "The Financial Crimes Enforcement Network (FinCEN) has granted exemptive relief to covered investment advisers from the requirements the final regulations in FinCEN Final Rule RIN 1506-AB58 (also called the 'IA AML Rule'), which were set to become effective January 1, 2026.",
content: "FinCEN has extended the compliance deadline for investment advisers under the Anti-Money Laundering (AML) rule until January 1, 2028, providing additional time for advisers to implement the required compliance procedures."
}
];
const getTypeColor = (type: string) => {
switch (type) {
case 'alert': return 'destructive';
case 'update': return 'default';
case 'briefing': return 'secondary';
default: return 'outline';
}
};
const getTypeIcon = (type: string) => {
switch (type) {
case 'alert': return AlertTriangle;
case 'update': return Clock;
case 'briefing': return FileText;
default: return Newspaper;
}
};
return (
<div className="min-h-screen">
<Navigation />
<main className="pt-16">
{/* Hero Section */}
<section className="py-24 bg-gradient-subtle">
<div className="container mx-auto px-4 text-center">
<h1 className="text-display-xl font-display font-bold text-forest mb-6">
Newsletters
</h1>
<p className="text-body-lg text-sage max-w-3xl mx-auto">
Stay informed with the latest tax alerts, briefings, and updates. Our comprehensive coverage ensures you're always up-to-date with the most important tax developments affecting your financial situation.
</p>
</div>
</section>
{/* Tax Alerts */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Tax Alerts
</h2>
<p className="text-body-lg text-sage">
Critical tax updates and legislative changes that require immediate attention.
</p>
</div>
<div className="space-y-6">
{taxAlerts.map((alert, index) => {
const Icon = getTypeIcon(alert.type);
return (
<Card key={index} className="rounded-2xl card-elevation hover:shadow-lg gentle-transition">
<CardContent className="p-8">
<div className="flex items-start gap-4">
<div className="flex-shrink-0">
<div className="w-12 h-12 bg-brass/20 rounded-2xl flex items-center justify-center">
<Icon className="w-6 h-6 text-brass" strokeWidth={1.5} />
</div>
</div>
<div className="flex-1">
<div className="flex items-center gap-3 mb-3">
<Badge variant={getTypeColor(alert.type)}>
{alert.type.toUpperCase()}
</Badge>
<span className="text-sm text-sage flex items-center gap-1">
<Calendar className="w-4 h-4" />
{alert.date}
</span>
</div>
<h3 className="text-display-md font-display font-semibold text-forest mb-3">
{alert.title}
</h3>
<p className="text-sage mb-4 leading-relaxed">
{alert.summary}
</p>
<p className="text-sage leading-relaxed">
{alert.content}
</p>
<div className="flex gap-3 mt-6">
<Button size="sm" variant="outline">
<Download className="mr-2 w-4 h-4" />
Download PDF
</Button>
<Button size="sm" variant="outline">
<ExternalLink className="mr-2 w-4 h-4" />
Read More
</Button>
</div>
</div>
</div>
</CardContent>
</Card>
);
})}
</div>
</div>
</div>
</section>
{/* Tax Briefings */}
<section className="py-24 bg-muted/30">
<div className="container mx-auto px-4">
<div className="max-w-4xl mx-auto">
<div className="text-center mb-12">
<h2 className="text-display-lg font-display font-semibold text-forest mb-4">
Tax Briefings
</h2>
<p className="text-body-lg text-sage">
Detailed analysis and insights on tax law changes, IRS guidance, and regulatory updates.
</p>
</div>
<div className="space-y-6">
{taxBriefings.map((briefing, index) => {
const Icon = getTypeIcon(briefing.type);
return (
<Card key={index} className="rounded-2xl card-elevation hover:shadow-lg gentle-transition">
<CardContent className="p-8">
<div className="flex items-start gap-4">
<div className="flex-shrink-0">
<div className="w-12 h-12 bg-brass/20 rounded-2xl flex items-center justify-center">
<Icon className="w-6 h-6 text-brass" strokeWidth={1.5} />
</div>
</div>
<div className="flex-1">
<div className="flex items-center gap-3 mb-3">
<Badge variant={getTypeColor(briefing.type)}>
{briefing.type.toUpperCase()}
</Badge>
<span className="text-sm text-sage flex items-center gap-1">
<Calendar className="w-4 h-4" />
{briefing.date}
</span>
</div>
<h3 className="text-display-md font-display font-semibold text-forest mb-3">
{briefing.title}
</h3>
<p className="text-sage mb-4 leading-relaxed">
{briefing.summary}
</p>
<p className="text-sage leading-relaxed">
{briefing.content}
</p>
<div className="flex gap-3 mt-6">
<Button size="sm" variant="outline">
<Download className="mr-2 w-4 h-4" />
Download PDF
</Button>
<Button size="sm" variant="outline">
<ExternalLink className="mr-2 w-4 h-4" />
Read More
</Button>
</div>
</div>
</div>
</CardContent>
</Card>
);
})}
</div>
</div>
</div>
</section>
{/* Newsletter Signup */}
<section className="py-24 bg-background">
<div className="container mx-auto px-4">
<div className="max-w-2xl mx-auto text-center">
<Card className="rounded-2xl card-elevation">
<CardContent className="p-8">
<div className="w-16 h-16 bg-brass/20 rounded-2xl flex items-center justify-center mx-auto mb-6">
<Newspaper className="w-8 h-8 text-brass" strokeWidth={1.5} />
</div>
<h3 className="text-display-lg font-display font-semibold text-forest mb-4">
Stay Updated
</h3>
<p className="text-body-lg text-sage mb-8">
Subscribe to our newsletter to receive the latest tax alerts, briefings, and updates directly in your inbox.
</p>
<div className="flex flex-col sm:flex-row gap-4 max-w-md mx-auto">
<input
type="email"
placeholder="Enter your email address"
className="flex-1 px-4 py-3 rounded-xl border border-sage/20 focus:outline-none focus:ring-2 focus:ring-brass/50 focus:border-transparent"
/>
<Button className="btn-shadow">
Subscribe
</Button>
</div>
<p className="text-sm text-sage mt-4">
No spam Unsubscribe anytime We respect your privacy
</p>
</CardContent>
</Card>
</div>
</div>
</section>
</main>
<Footer />
</div>
);
};
export default Newsletters;

View File

@ -44,7 +44,7 @@ const NotFound = () => {
</div>
<p className="text-sage/70 text-sm mt-8">
Need help? <a href="/contact" className="text-forest hover:text-brass gentle-transition underline">Contact us</a> or call <a href="tel:+13618543711" className="text-forest hover:text-brass gentle-transition underline">(361) 854-3711</a>
Need help? <a href="/contact" className="text-forest hover:text-brass gentle-transition underline">Contact us</a> or call <a href="tel:+13618839999" className="text-forest hover:text-brass gentle-transition underline">(361) 883-8999</a>
</p>
</div>
</div>

View File

@ -1,3 +1,4 @@
import { useState } from "react";
import Navigation from "@/components/Navigation";
import Footer from "@/components/Footer";
import { Card, CardContent } from "@/components/ui/card";
@ -14,6 +15,7 @@ import {
} from "lucide-react";
const Resources = () => {
const [searchQuery, setSearchQuery] = useState("");
const resourceCategories = [
{
icon: BookOpen,
@ -61,6 +63,25 @@ const Resources = () => {
}
];
const allResourceItems = resourceCategories.flatMap(category =>
category.items.map(item => ({
title: item,
category: category.title,
icon: category.icon
}))
);
const filteredResources = searchQuery
? allResourceItems.filter(item =>
item.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
item.category.toLowerCase().includes(searchQuery.toLowerCase())
)
: [];
const handlePopularSearch = (term: string) => {
setSearchQuery(term);
};
return (
<div className="min-h-screen">
<Navigation />
@ -119,18 +140,54 @@ const Resources = () => {
<Input
placeholder="Search guides, FAQs, calculators..."
className="pl-10 rounded-xl"
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
/>
</div>
<div className="space-y-2">
<div className="text-sm text-sage">Popular searches:</div>
<div className="flex flex-wrap gap-2">
{["Tax deadlines", "Deductions", "IRS audit", "Business formation"].map((term) => (
<button key={term} className="px-3 py-1 bg-muted rounded-full text-sm text-sage hover:bg-brass/20 hover:text-brass gentle-transition">
<button
key={term}
className="px-3 py-1 bg-muted rounded-full text-sm text-sage hover:bg-brass/20 hover:text-brass gentle-transition"
onClick={() => handlePopularSearch(term)}
>
{term}
</button>
))}
</div>
</div>
{/* Search Results */}
{searchQuery && (
<div className="mt-8 bg-card rounded-2xl p-6 card-elevation">
<h4 className="font-display font-semibold text-forest mb-4">
Search Results for "{searchQuery}"
</h4>
{filteredResources.length > 0 ? (
<div className="space-y-3">
{filteredResources.map((item, index) => {
const Icon = item.icon;
return (
<div key={index} className="flex items-center gap-3 p-3 rounded-xl hover:bg-muted/50 gentle-transition cursor-pointer">
<div className="w-8 h-8 bg-brass/20 rounded-lg flex items-center justify-center">
<Icon className="w-4 h-4 text-brass" strokeWidth={1.5} />
</div>
<div className="flex-1">
<div className="font-medium text-forest">{item.title}</div>
<div className="text-sm text-sage">{item.category}</div>
</div>
<ArrowRight className="w-4 h-4 text-sage" />
</div>
);
})}
</div>
) : (
<p className="text-sage">No results found. Try a different search term or browse our categories below.</p>
)}
</div>
)}
</div>
</div>
</div>

View File

@ -8,6 +8,11 @@ import {
Users,
Shield,
Building,
Heart,
TrendingUp,
PiggyBank,
Scale,
Briefcase,
CheckCircle2,
ArrowRight,
Phone
@ -19,7 +24,7 @@ const ServicesPage = () => {
icon: FileText,
title: "Tax Preparation & Planning",
description: "Comprehensive tax services designed to maximize your deductions and minimize your liability.",
image: "/lovable-uploads/741d6934-b230-43fb-9aac-a2699bba0915.png",
image: "/lovable-uploads/Screenshot 2025-09-10 183339.png",
features: [
"Individual and business tax returns",
"Quarterly estimated tax planning",
@ -33,7 +38,7 @@ const ServicesPage = () => {
icon: Calculator,
title: "Accounting & Bookkeeping",
description: "Professional accounting services to keep your financial records accurate and up-to-date.",
image: "/lovable-uploads/1260e5db-df42-4f32-89c2-eecc054d669d.png",
image: "/lovable-uploads/Screenshot 2025-09-10 183757.png",
features: [
"Monthly bookkeeping services",
"Financial statement preparation",
@ -47,6 +52,7 @@ const ServicesPage = () => {
icon: Users,
title: "Payroll Solutions",
description: "Complete payroll management ensuring compliance and accuracy for your team.",
image: "/lovable-uploads/Screenshot 2025-09-10 183224.png",
features: [
"Full-service payroll processing",
"Tax withholding and remittance",
@ -74,6 +80,7 @@ const ServicesPage = () => {
icon: Building,
title: "Business Consulting & Formation",
description: "Strategic guidance for business formation, growth, and operational optimization.",
image: "/lovable-uploads/bea5e6b1-7510-4876-955e-a265f2600ec5.png",
features: [
"Entity selection and formation",
"Business valuation services",
@ -82,6 +89,76 @@ const ServicesPage = () => {
"Merger and acquisition support",
"Financial analysis and projections"
]
},
{
icon: Heart,
title: "Estate Planning",
description: "Comprehensive estate planning to facilitate orderly transfer of assets and reduce tax burden.",
image: "/lovable-uploads/Screenshot 2025-09-10 183339.png",
features: [
"Will and trust preparation",
"Asset protection strategies",
"Estate tax minimization",
"Beneficiary planning",
"Business succession planning",
"Charitable giving strategies"
]
},
{
icon: TrendingUp,
title: "Financial Planning",
description: "Structured financial plans to help you face any financial challenge at each stage of life.",
image: "/lovable-uploads/Screenshot 2025-09-10 183757.png",
features: [
"Comprehensive financial analysis",
"Investment strategy development",
"Risk management planning",
"Education funding strategies",
"Insurance needs analysis",
"Long-term wealth building"
]
},
{
icon: PiggyBank,
title: "Retirement Planning",
description: "Successful implementation and periodic review to ensure financial independence through retirement.",
image: "/lovable-uploads/Screenshot 2025-09-10 183224.png",
features: [
"401(k) and IRA optimization",
"Social Security strategies",
"Retirement income planning",
"Required minimum distribution planning",
"Roth conversion analysis",
"Retirement account rollover guidance"
]
},
{
icon: Scale,
title: "Estate & Trust Tax Preparation",
description: "Specialized tax preparation for estates and trusts with expert guidance on complex tax matters.",
image: "/lovable-uploads/741d6934-b230-43fb-9aac-a2699bba0915.png",
features: [
"Estate tax return preparation",
"Trust tax return filing",
"Fiduciary tax compliance",
"Estate administration support",
"Trust administration guidance",
"Complex tax issue resolution"
]
},
{
icon: Briefcase,
title: "Sales Tax Services",
description: "Assistance with sales tax collection, compilation, and preparation of returns across multiple jurisdictions.",
image: "/lovable-uploads/bea5e6b1-7510-4876-955e-a265f2600ec5.png",
features: [
"Multi-state sales tax compliance",
"Sales tax return preparation",
"Audit representation",
"Voluntary disclosure programs",
"Nexus analysis",
"Sales tax automation consulting"
]
}
];
@ -121,7 +198,7 @@ const ServicesPage = () => {
<img
src={service.image}
alt={`${service.title} illustration`}
className="rounded-2xl card-elevation w-full object-cover"
className="rounded-2xl card-elevation w-full object-cover max-w-md mx-auto"
/>
</div>
)}
@ -187,11 +264,11 @@ const ServicesPage = () => {
<Button
size="lg"
variant="outline"
className="border-cream/30 text-cream hover:bg-cream/10 text-lg px-8 py-3 rounded-2xl"
onClick={() => window.open('tel:+13618543711')}
className="border-black/30 text-black hover:bg-black/10 text-lg px-8 py-3 rounded-2xl"
onClick={() => window.open('tel:+13618839999')}
>
<Phone className="mr-2 w-5 h-5" />
Call (361) 854-3711
Call (361) 883-8999
</Button>
</div>
</div>

View File

@ -226,9 +226,9 @@ const TestimonialsPage = () => {
<button
className="border border-cream/30 text-cream hover:bg-cream/10 text-lg px-8 py-3 rounded-2xl gentle-transition"
onClick={() => window.open('tel:+13618543711')}
onClick={() => window.open('tel:+13618839999')}
>
Call (361) 854-3711
Call (361) 883-8999
</button>
</div>