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