Initial commit
This commit is contained in:
2
.env
Normal file
2
.env
Normal file
@@ -0,0 +1,2 @@
|
||||
NEXT_PUBLIC_API_URL=undefined
|
||||
NEXT_PUBLIC_PROJECT_ID=7f255730-9211-4e00-8d87-439077e37402
|
||||
57
.gitea/workflows/build.yml
Normal file
57
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,57 @@
|
||||
name: Code Check
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
branch:
|
||||
description: 'Branch to check'
|
||||
required: true
|
||||
default: 'main'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- name: Checkout branch
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ gitea.event.inputs.branch }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 24
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
set -euo pipefail
|
||||
npm ci --prefer-offline --no-audit 2>&1 | tee install.log
|
||||
env:
|
||||
NODE_OPTIONS: '--max-old-space-size=4096'
|
||||
|
||||
- name: TypeScript check
|
||||
run: |
|
||||
set -euo pipefail
|
||||
npm run typecheck 2>&1 | tee build.log
|
||||
|
||||
- name: ESLint check
|
||||
run: |
|
||||
set -euo pipefail
|
||||
npm run lint 2>&1 | tee build.log
|
||||
|
||||
- name: Upload build log on failure
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: build-log
|
||||
path: build.log
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Check completed
|
||||
if: success()
|
||||
run: echo "Typecheck and lint passed successfully"
|
||||
91
src/app/blog/page.tsx
Normal file
91
src/app/blog/page.tsx
Normal file
@@ -0,0 +1,91 @@
|
||||
"use client";
|
||||
|
||||
import ReactLenis from "lenis/react";
|
||||
import BlogCardThree from '@/components/sections/blog/BlogCardThree';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
|
||||
import { useBlogPosts } from "@/hooks/useBlogPosts";
|
||||
|
||||
export default function BlogPage() {
|
||||
const { posts, isLoading } = useBlogPosts();
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-stagger"
|
||||
defaultTextAnimation="background-highlight"
|
||||
borderRadius="soft"
|
||||
contentWidth="smallMedium"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="aurora"
|
||||
cardStyle="outline"
|
||||
primaryButtonStyle="shadow"
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="normal"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div className="min-h-screen bg-background">
|
||||
<NavbarLayoutFloatingInline
|
||||
brandName="iPhone Store"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Models", id: "products" },
|
||||
{ name: "Features", id: "features" },
|
||||
{ name: "Pricing", id: "pricing" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
]}
|
||||
button={{ text: "Shop Now", href: "#products" }}
|
||||
/>
|
||||
|
||||
{isLoading ? (
|
||||
<div className="w-content-width mx-auto py-20 text-center">
|
||||
<p className="text-foreground">Loading posts...</p>
|
||||
</div>
|
||||
) : (
|
||||
<BlogCardThree
|
||||
blogs={posts}
|
||||
title="Latest iPhone News"
|
||||
description="Stay updated with the latest iPhone features, updates, and insights from our team"
|
||||
tag="Blog"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="noInvert"
|
||||
carouselMode="buttons"
|
||||
animationType="slide-up"
|
||||
uniformGridCustomHeightClasses="min-h-[600px]"
|
||||
/>
|
||||
)}
|
||||
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Shop", items: [
|
||||
{ label: "iPhone Models", href: "products" },
|
||||
{ label: "Accessories", href: "#" },
|
||||
{ label: "Trade-In", href: "#" },
|
||||
{ label: "Financing", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Support", items: [
|
||||
{ label: "Help & Support", href: "#" },
|
||||
{ label: "Warranty", href: "#" },
|
||||
{ label: "Contact Us", href: "contact" },
|
||||
{ label: "Status", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Company", items: [
|
||||
{ label: "About Us", href: "#" },
|
||||
{ label: "Careers", href: "#" },
|
||||
{ label: "Privacy", href: "#" },
|
||||
{ label: "Terms", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2025 iPhone Store. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
5
src/app/globals.css
Normal file
5
src/app/globals.css
Normal file
@@ -0,0 +1,5 @@
|
||||
@import "tailwindcss";
|
||||
@import "./styles/variables.css";
|
||||
@import "./styles/theme.css";
|
||||
@import "./styles/utilities.css";
|
||||
@import "./styles/base.css";
|
||||
1264
src/app/layout.tsx
Normal file
1264
src/app/layout.tsx
Normal file
File diff suppressed because it is too large
Load Diff
305
src/app/page.tsx
Normal file
305
src/app/page.tsx
Normal file
@@ -0,0 +1,305 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
|
||||
import HeroSignup from '@/components/sections/hero/HeroSignup';
|
||||
import ProductCardOne from '@/components/sections/product/ProductCardOne';
|
||||
import FeatureCardTwelve from '@/components/sections/feature/FeatureCardTwelve';
|
||||
import PricingCardEight from '@/components/sections/pricing/PricingCardEight';
|
||||
import TestimonialCardSix from '@/components/sections/testimonial/TestimonialCardSix';
|
||||
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
|
||||
import ContactSplit from '@/components/sections/contact/ContactSplit';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { Bell, Crown, DollarSign, Heart, Smartphone, Sparkles, Star, TrendingUp, Zap } from "lucide-react";
|
||||
|
||||
export default function LandingPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-stagger"
|
||||
defaultTextAnimation="background-highlight"
|
||||
borderRadius="soft"
|
||||
contentWidth="smallMedium"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="aurora"
|
||||
cardStyle="outline"
|
||||
primaryButtonStyle="shadow"
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="normal"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingInline
|
||||
brandName="iPhone Store"
|
||||
navItems={[
|
||||
{ name: "Models", id: "products" },
|
||||
{ name: "Features", id: "features" },
|
||||
{ name: "Pricing", id: "pricing" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
]}
|
||||
button={{
|
||||
text: "Shop Now", href: "#products"
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroSignup
|
||||
title="Experience Innovation in Your Hand"
|
||||
description="Discover the latest iPhone models with cutting-edge technology, stunning displays, and revolutionary cameras. Pre-order now and be among the first to experience the future."
|
||||
tag="Latest Release"
|
||||
tagIcon={Sparkles}
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
inputPlaceholder="Enter your email"
|
||||
buttonText="Get Notified"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<ProductCardOne
|
||||
title="Our Latest iPhone Models"
|
||||
description="Explore our premium collection of the newest iPhone models, each engineered for performance and elegance."
|
||||
tag="Featured Models"
|
||||
tagIcon={Smartphone}
|
||||
products={[
|
||||
{
|
||||
id: "1", name: "iPhone 15", price: "$799", imageSrc: "https://img.b2bpic.net/free-psd/new-smartphone-17-pro-social-media-banner-design-template_47987-33087.jpg", imageAlt: "iPhone 15 smartphone"
|
||||
},
|
||||
{
|
||||
id: "2", name: "iPhone 15 Pro", price: "$999", imageSrc: "https://img.b2bpic.net/free-psd/smartphone-16-pro-discount-sale-banner-social-media-design-template_47987-25305.jpg", imageAlt: "iPhone 15 Pro with titanium design"
|
||||
},
|
||||
{
|
||||
id: "3", name: "iPhone 14", price: "$699", imageSrc: "https://img.b2bpic.net/free-psd/new-smartphone-17-pro-social-media-story-design-template_47987-33775.jpg", imageAlt: "iPhone 14 smartphone"
|
||||
}
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="invertDefault"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<FeatureCardTwelve
|
||||
title="Why Choose iPhone?"
|
||||
description="Superior technology meets elegant design in every detail"
|
||||
tag="Premium Features"
|
||||
tagIcon={Zap}
|
||||
features={[
|
||||
{
|
||||
id: "display", label: "Display", title: "Stunning Visual Experience", items: [
|
||||
"Super Retina XDR technology", "Dynamic Island innovation", "120Hz ProMotion display", "Always-On Retina screen"
|
||||
],
|
||||
buttons: [
|
||||
{
|
||||
text: "Learn More", href: "#"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "camera", label: "Camera", title: "Professional Photography", items: [
|
||||
"Advanced computational photography", "Cinematic mode recording", "ProRAW and ProRes support", "Night mode excellence"
|
||||
],
|
||||
buttons: [
|
||||
{
|
||||
text: "Explore Camera", href: "#"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "performance", label: "Performance", title: "Blazing Fast Computing", items: [
|
||||
"A17 Pro chip architecture", "Industry-leading processing speed", "Exceptional battery efficiency", "Thermal management system"
|
||||
],
|
||||
buttons: [
|
||||
{
|
||||
text: "View Specs", href: "#"
|
||||
}
|
||||
]
|
||||
}
|
||||
]}
|
||||
animationType="opacity"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="noInvert"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<PricingCardEight
|
||||
title="Flexible Pricing Options"
|
||||
description="Choose the perfect plan that fits your needs and budget"
|
||||
tag="Transparent Pricing"
|
||||
tagIcon={DollarSign}
|
||||
plans={[
|
||||
{
|
||||
id: "base", badge: "Popular", badgeIcon: Star,
|
||||
price: "$799", subtitle: "iPhone 15 - Entry Level", buttons: [
|
||||
{
|
||||
text: "Select Plan", href: "#"
|
||||
}
|
||||
],
|
||||
features: [
|
||||
"128GB Storage", "A17 chip", "Advanced dual camera", "Night mode", "All-day battery", "12-month warranty"
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "pro", badge: "Best Value", badgeIcon: Sparkles,
|
||||
price: "$999", subtitle: "iPhone 15 Pro - Professional", buttons: [
|
||||
{
|
||||
text: "Select Plan", href: "#"
|
||||
}
|
||||
],
|
||||
features: [
|
||||
"256GB Storage", "A17 Pro chip", "ProRAW support", "Telephoto lens", "ProMotion display", "Premium titanium design", "24-month warranty"
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "max", badge: "Ultimate", badgeIcon: Crown,
|
||||
price: "$1,199", subtitle: "iPhone 15 Pro Max - Maximum", buttons: [
|
||||
{
|
||||
text: "Select Plan", href: "#"
|
||||
}
|
||||
],
|
||||
features: [
|
||||
"512GB Storage", "A17 Pro chip", "Advanced ProRAW", "Dual telephoto", "120Hz display", "Titanium construction", "Extended 36-month warranty"
|
||||
]
|
||||
}
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="invertDefault"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<TestimonialCardSix
|
||||
title="What Our Customers Say"
|
||||
description="Real experiences from thousands of satisfied iPhone users worldwide"
|
||||
tag="Customer Reviews"
|
||||
tagIcon={Heart}
|
||||
testimonials={[
|
||||
{
|
||||
id: "1", name: "Sarah Johnson", handle: "@sarahjtech", testimonial: "The iPhone 15 Pro has completely transformed my mobile photography. The camera system is absolutely incredible and the performance is blazing fast. Best phone I've ever owned.", imageSrc: "https://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg", imageAlt: "Sarah Johnson"
|
||||
},
|
||||
{
|
||||
id: "2", name: "Michael Chen", handle: "@mikechen_dev", testimonial: "Outstanding build quality and design. The titanium finish feels premium, and the display is crisp and responsive. Every feature is thoughtfully implemented. Highly recommend!", imageSrc: "https://img.b2bpic.net/free-photo/business-woman-banner-concept-with-copy-space_23-2149601533.jpg", imageAlt: "Michael Chen"
|
||||
},
|
||||
{
|
||||
id: "3", name: "Emily Rodriguez", handle: "@emilyrodriguez", testimonial: "The battery life on this phone is insane. I'm getting a full day of heavy usage without any issues. The A17 Pro chip makes everything buttery smooth. Love it!", imageSrc: "https://img.b2bpic.net/free-photo/happy-business-woman-white-shirt_23-2148095748.jpg", imageAlt: "Emily Rodriguez"
|
||||
},
|
||||
{
|
||||
id: "4", name: "David Kim", handle: "@davidkim_creative", testimonial: "As a content creator, the video capabilities are phenomenal. ProRes recording, cinematic mode, and advanced editing tools all in my pocket. This is a game-changer for mobile production.", imageSrc: "https://img.b2bpic.net/free-photo/medium-shot-female-economist-working-office_23-2150251746.jpg", imageAlt: "David Kim"
|
||||
},
|
||||
{
|
||||
id: "5", name: "Jessica Martinez", handle: "@jessicam_design", testimonial: "The display is absolutely stunning. Colors are vibrant, blacks are deep, and the 120Hz refresh rate makes scrolling a joy. Worth every penny for a power user like me.", imageSrc: "https://img.b2bpic.net/free-photo/portrait-pretty-smiling-woman-posing-white-background_231208-1813.jpg", imageAlt: "Jessica Martinez"
|
||||
},
|
||||
{
|
||||
id: "6", name: "Alex Thompson", handle: "@alexthompson", testimonial: "Customer service was outstanding. Device arrived faster than expected, and the setup process was seamless. iPhone ecosystem is truly integrated and user-friendly. Impressed!", imageSrc: "https://img.b2bpic.net/free-photo/portrait-young-entrepreneur-woman_23-2148898746.jpg", imageAlt: "Alex Thompson"
|
||||
}
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="noInvert"
|
||||
speed={40}
|
||||
topMarqueeDirection="left"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<MetricCardEleven
|
||||
title="iPhone Excellence by Numbers"
|
||||
description="Industry-leading performance and customer satisfaction metrics"
|
||||
tag="Our Success"
|
||||
tagIcon={TrendingUp}
|
||||
metrics={[
|
||||
{
|
||||
id: "1", value: "2.2B+", title: "Active Users", description: "Millions of satisfied customers worldwide", imageSrc: "https://img.b2bpic.net/free-photo/mockup-mobile-phone-screen_53876-63379.jpg"
|
||||
},
|
||||
{
|
||||
id: "2", value: "98%", title: "Satisfaction Rate", description: "Customer happiness and loyalty metrics", imageSrc: "https://img.b2bpic.net/free-photo/people-holding-colorful-smartphones_23-2151969201.jpg"
|
||||
},
|
||||
{
|
||||
id: "3", value: "50%", title: "Faster Processing", description: "Performance improvement over previous generation", imageSrc: "https://img.b2bpic.net/free-psd/new-smartphone-17-pro-social-media-banner-design-template_47987-33075.jpg"
|
||||
},
|
||||
{
|
||||
id: "4", value: "72h+", title: "Battery Endurance", description: "Extended battery life with optimized power management", imageSrc: "https://img.b2bpic.net/free-photo/proud-joyful-charming-cheerful-blond-european-woman-stylish-silver-shiny-dress-hold-hand-waist-co_1258-134478.jpg"
|
||||
}
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="invertDefault"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplit
|
||||
tag="Stay Connected"
|
||||
title="Get the Latest iPhone Updates"
|
||||
description="Subscribe to our newsletter and be the first to know about new releases, exclusive offers, and special promotions. Join our community of tech enthusiasts."
|
||||
tagIcon={Bell}
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
useInvertedBackground="noInvert"
|
||||
imageSrc="https://img.b2bpic.net/free-photo/business-woman-talking-phone-staying-late-night-office_1303-27089.jpg"
|
||||
imageAlt="Latest iPhone technology"
|
||||
mediaPosition="right"
|
||||
inputPlaceholder="your@email.com"
|
||||
buttonText="Subscribe"
|
||||
termsText="We respect your privacy. Unsubscribe at any time."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Shop", items: [
|
||||
{
|
||||
label: "iPhone Models", href: "products"
|
||||
},
|
||||
{
|
||||
label: "Accessories", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Trade-In", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Financing", href: "#"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Support", items: [
|
||||
{
|
||||
label: "Help & Support", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Warranty", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Contact Us", href: "contact"
|
||||
},
|
||||
{
|
||||
label: "Status", href: "#"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Company", items: [
|
||||
{
|
||||
label: "About Us", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Careers", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Privacy", href: "#"
|
||||
},
|
||||
{
|
||||
label: "Terms", href: "#"
|
||||
}
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2025 iPhone Store. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
5
vercel.json
Normal file
5
vercel.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"installCommand": "npm ci",
|
||||
"buildCommand": "npm run build",
|
||||
"outputDirectory": ".next"
|
||||
}
|
||||
Reference in New Issue
Block a user