feat(design): enhance UI with animations, gradients, and hover effects

- Add AnimatedBackground component with canvas-based floating orbs
- Add reusable Button component with shimmer effects and variants
- Update globals.css with animation keyframes and utility classes
- Enhance Header with glass effect and animated nav underlines
- Enhance Footer with gradient overlays and hover effects
- Update all pages with animated gradient backgrounds
- Add hover effects on cards, icons, and buttons
- Implement gradient text effects throughout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Andrés Mora
2025-12-23 19:22:50 -05:00
co-authored by Claude Opus 4.5
parent 9eebabdc7c
commit 238b1c9a87
11 changed files with 1348 additions and 1141 deletions
+79 -66
View File
@@ -1,4 +1,5 @@
import Link from "next/link";
"use client";
import {
Building2,
Users,
@@ -12,13 +13,10 @@ import {
Star,
Zap,
Globe,
Phone,
} from "lucide-react";
export const metadata = {
title: "Solutions | AB Group LLC",
description:
"QuickBooks Enterprise, Pro, Premier, and Point of Sale solutions. Find the right accounting software for your business.",
};
import AnimatedBackground from "../components/AnimatedBackground";
import Button from "../components/Button";
const solutions = [
{
@@ -137,42 +135,51 @@ export default function SolutionsPage() {
return (
<>
{/* Hero Section */}
<section className="bg-zinc-900 text-white">
<div className="mx-auto max-w-7xl px-4 py-16 sm:px-6 sm:py-20 lg:px-8 lg:py-24">
<section className="relative animated-gradient-bg text-white overflow-hidden">
<AnimatedBackground variant="dark" orbCount={5} />
<div className="relative mx-auto max-w-7xl px-4 py-16 sm:px-6 sm:py-20 lg:px-8 lg:py-24">
<div className="max-w-3xl">
<p className="text-red-500 font-semibold mb-4">Our Solutions</p>
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl">
Find the Right <span className="text-red-500">QuickBooks</span>{" "}
<p className="text-red-400 font-semibold mb-4 animate-fade-in">
Our Solutions
</p>
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl animate-slide-up">
Find the Right{" "}
<span className="text-transparent bg-gradient-to-r from-red-400 via-red-500 to-red-600 bg-clip-text">
QuickBooks
</span>{" "}
for Your Business
</h1>
<p className="mt-6 text-lg text-zinc-300">
<p className="mt-6 text-lg text-zinc-300 animate-slide-up animation-delay-100">
From small startups to growing enterprises, we help you choose and
implement the perfect QuickBooks solution. Save thousands compared
to enterprise alternatives.
</p>
</div>
</div>
<div className="absolute right-10 top-1/4 w-64 h-64 bg-red-500/10 rounded-full blur-3xl animate-float" />
</section>
{/* Solutions */}
{solutions.map((solution, index) => (
<section
key={solution.id}
className={index % 2 === 0 ? "bg-white" : "bg-zinc-50"}
className={`relative ${index % 2 === 0 ? "bg-white" : "bg-zinc-50"}`}
>
<div className="mx-auto max-w-7xl px-4 py-16 sm:px-6 md:py-24 lg:px-8">
{solution.featured && (
<div className="flex items-center gap-2 mb-4">
<Star className="h-5 w-5 text-red-600 fill-red-600" />
<span className="text-sm font-semibold text-red-600 uppercase tracking-wide">
Most Popular
</span>
<div className="flex items-center gap-1 px-3 py-1 bg-gradient-to-r from-red-500 to-red-600 rounded-full">
<Star className="h-4 w-4 text-white fill-white" />
<span className="text-xs font-semibold text-white uppercase tracking-wide">
Most Popular
</span>
</div>
</div>
)}
<div className="grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16">
<div>
<p className="text-red-600 font-medium mb-2">
<p className="text-transparent bg-gradient-to-r from-red-500 to-red-700 bg-clip-text font-medium mb-2">
{solution.tagline}
</p>
<h2 className="text-3xl font-semibold text-zinc-900 sm:text-4xl">
@@ -183,37 +190,39 @@ export default function SolutionsPage() {
</p>
<ul className="mt-8 grid grid-cols-1 sm:grid-cols-2 gap-3">
{solution.features.map((feature) => (
<li key={feature} className="flex items-center gap-2">
<CheckCircle className="h-5 w-5 text-red-600 flex-shrink-0" />
{solution.features.map((feature, idx) => (
<li
key={feature}
className="flex items-center gap-2 group"
style={{ animationDelay: `${idx * 50}ms` }}
>
<CheckCircle className="h-5 w-5 text-red-600 flex-shrink-0 group-hover:scale-110 transition-transform duration-300" />
<span className="text-sm text-zinc-700">{feature}</span>
</li>
))}
</ul>
<div className="mt-8">
<Link
href="/contact"
className="inline-flex items-center justify-center px-6 py-3 bg-red-600 text-white font-medium rounded-lg hover:bg-red-700 transition-colors"
>
<Button href="/contact">
Get a Quote
<ArrowRight className="ml-2 h-5 w-5" />
</Link>
</Button>
</div>
</div>
<div className="grid grid-cols-1 gap-6">
{solution.highlights.map((highlight) => (
{solution.highlights.map((highlight, idx) => (
<div
key={highlight.title}
className="bg-white rounded-xl p-6 shadow-sm border border-zinc-100"
className="group bg-white rounded-xl p-6 shadow-sm border border-zinc-100 hover:shadow-xl hover:shadow-red-500/5 hover:-translate-y-1 transition-all duration-300"
style={{ animationDelay: `${idx * 100}ms` }}
>
<div className="flex items-start gap-4">
<div className="w-12 h-12 bg-red-100 rounded-lg flex items-center justify-center flex-shrink-0">
<highlight.icon className="h-6 w-6 text-red-600" />
<div className="w-12 h-12 bg-gradient-to-br from-red-100 to-red-50 rounded-lg flex items-center justify-center flex-shrink-0 group-hover:bg-gradient-to-br group-hover:from-red-500 group-hover:to-red-700 transition-all duration-300">
<highlight.icon className="h-6 w-6 text-red-600 group-hover:text-white transition-colors duration-300" />
</div>
<div>
<h3 className="font-semibold text-zinc-900">
<h3 className="font-semibold text-zinc-900 group-hover:text-red-600 transition-colors duration-300">
{highlight.title}
</h3>
<p className="mt-1 text-sm text-zinc-600">
@@ -230,8 +239,9 @@ export default function SolutionsPage() {
))}
{/* Integrations */}
<section className="bg-zinc-900 text-white py-16 md:py-24">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<section className="relative animated-gradient-bg text-white py-16 md:py-24 overflow-hidden">
<AnimatedBackground variant="dark" orbCount={4} />
<div className="relative mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div className="text-center max-w-3xl mx-auto mb-12">
<h2 className="text-3xl font-semibold sm:text-4xl">
Integrations & Add-ons
@@ -243,12 +253,13 @@ export default function SolutionsPage() {
</div>
<div className="grid grid-cols-2 sm:grid-cols-4 gap-4">
{integrations.map((integration) => (
{integrations.map((integration, index) => (
<div
key={integration}
className="bg-white/5 rounded-lg p-4 text-center hover:bg-white/10 transition-colors"
className="group bg-white/5 backdrop-blur-sm rounded-lg p-4 text-center hover:bg-gradient-to-br hover:from-red-500/20 hover:to-red-700/20 border border-white/10 hover:border-red-500/30 transition-all duration-300 cursor-pointer"
style={{ animationDelay: `${index * 50}ms` }}
>
<p className="text-sm font-medium text-zinc-300">
<p className="text-sm font-medium text-zinc-300 group-hover:text-white transition-colors duration-300">
{integration}
</p>
</div>
@@ -264,38 +275,39 @@ export default function SolutionsPage() {
{/* Comparison CTA */}
<section className="bg-white py-16 md:py-24">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div className="bg-zinc-100 rounded-2xl p-8 md:p-12 text-center">
<Building2 className="h-12 w-12 text-red-600 mx-auto mb-4" />
<h2 className="text-2xl font-semibold text-zinc-900 sm:text-3xl">
Not Sure Which Solution is Right for You?
</h2>
<p className="mt-4 text-zinc-600 max-w-2xl mx-auto">
Let our experts analyze your business needs and recommend the
perfect QuickBooks solution. We&apos;ll help you choose the right
edition and configure it for your specific requirements.
</p>
<div className="mt-8 flex flex-col sm:flex-row gap-4 justify-center">
<Link
href="/contact"
className="inline-flex items-center justify-center px-6 py-3 bg-red-600 text-white font-medium rounded-lg hover:bg-red-700 transition-colors"
>
Schedule a Free Consultation
<ArrowRight className="ml-2 h-5 w-5" />
</Link>
<a
href="tel:3053878582"
className="inline-flex items-center justify-center px-6 py-3 bg-white text-zinc-900 font-medium rounded-lg border border-zinc-200 hover:bg-zinc-50 transition-colors"
>
Call (305) 387-8582
</a>
<div className="relative group">
<div className="absolute -inset-4 bg-gradient-to-r from-red-500 to-red-700 rounded-3xl opacity-10 blur-xl group-hover:opacity-20 transition-opacity duration-300" />
<div className="relative bg-gradient-to-br from-zinc-100 to-zinc-50 rounded-2xl p-8 md:p-12 text-center border border-zinc-200">
<div className="w-16 h-16 bg-gradient-to-br from-red-500 to-red-700 rounded-xl flex items-center justify-center mx-auto mb-4 shadow-lg shadow-red-500/20">
<Building2 className="h-8 w-8 text-white" />
</div>
<h2 className="text-2xl font-semibold text-zinc-900 sm:text-3xl">
Not Sure Which Solution is Right for You?
</h2>
<p className="mt-4 text-zinc-600 max-w-2xl mx-auto">
Let our experts analyze your business needs and recommend the
perfect QuickBooks solution. We&apos;ll help you choose the
right edition and configure it for your specific requirements.
</p>
<div className="mt-8 flex flex-col sm:flex-row gap-4 justify-center">
<Button href="/contact">
Schedule a Free Consultation
<ArrowRight className="ml-2 h-5 w-5" />
</Button>
<Button href="tel:3053878582" variant="secondary">
<Phone className="mr-2 h-5 w-5" />
Call (305) 387-8582
</Button>
</div>
</div>
</div>
</div>
</section>
{/* CTA Banner */}
<section className="bg-red-600 py-12 md:py-16">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<section className="relative overflow-hidden animated-gradient-bg-red py-12 md:py-16">
<AnimatedBackground variant="red" orbCount={4} />
<div className="relative mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div className="flex flex-col md:flex-row items-center justify-between gap-6">
<div className="text-center md:text-left">
<h2 className="text-2xl font-semibold text-white sm:text-3xl">
@@ -306,13 +318,14 @@ export default function SolutionsPage() {
alternatives.
</p>
</div>
<Link
<Button
href="/contact"
className="inline-flex items-center justify-center px-6 py-3 bg-white text-red-600 font-medium rounded-lg hover:bg-red-50 transition-colors"
variant="secondary"
className="bg-white text-red-600 hover:bg-red-50 border-transparent"
>
Get Your Quote
<ArrowRight className="ml-2 h-5 w-5" />
</Link>
</Button>
</div>
</div>
</section>