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=569680d2-4442-484c-b112-3a709c84e2a4
|
||||
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"
|
||||
97
src/app/blog/page.tsx
Normal file
97
src/app/blog/page.tsx
Normal file
@@ -0,0 +1,97 @@
|
||||
"use client";
|
||||
|
||||
import ReactLenis from "lenis/react";
|
||||
import BlogCardOne from "@/components/sections/blog/BlogCardOne";
|
||||
import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered";
|
||||
import { useBlogPosts } from "@/hooks/useBlogPosts";
|
||||
|
||||
export default function BlogPage() {
|
||||
const { posts, isLoading } = useBlogPosts();
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="icon-arrow"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="small"
|
||||
sizing="largeSmallSizeLargeTitles"
|
||||
background="aurora"
|
||||
cardStyle="glass-depth"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="solid"
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div className="min-h-screen bg-background">
|
||||
<NavbarStyleCentered
|
||||
brandName="iPhone Store"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Shop", id: "products" },
|
||||
{ name: "Features", id: "features" },
|
||||
{ name: "Why Us", id: "metrics" },
|
||||
{ name: "FAQ", id: "faq" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
]}
|
||||
button={{
|
||||
text: "Buy Now", href: "products"
|
||||
}}
|
||||
/>
|
||||
|
||||
{isLoading ? (
|
||||
<div className="w-content-width mx-auto py-20 text-center">
|
||||
<p className="text-foreground">Loading posts...</p>
|
||||
</div>
|
||||
) : (
|
||||
<BlogCardOne
|
||||
blogs={posts}
|
||||
title="Latest iPhone News & Updates"
|
||||
description="Stay updated with the latest iPhone features, reviews, and technology insights from our expert team"
|
||||
tag="Blog"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="noInvert"
|
||||
carouselMode="buttons"
|
||||
animationType="slide-up"
|
||||
/>
|
||||
)}
|
||||
|
||||
<FooterLogoEmphasis
|
||||
logoText="iPhone Store"
|
||||
columns={[
|
||||
{
|
||||
items: [
|
||||
{ label: "Shop", href: "products" },
|
||||
{ label: "Features", href: "features" },
|
||||
{ label: "Pricing", href: "products" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "About Us", href: "#about" },
|
||||
{ label: "Support", href: "contact" },
|
||||
{ label: "Contact", href: "contact" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Privacy Policy", href: "#privacy" },
|
||||
{ label: "Terms of Service", href: "#terms" },
|
||||
{ label: "Warranty", href: "#warranty" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Instagram", href: "https://instagram.com" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</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";
|
||||
1269
src/app/layout.tsx
Normal file
1269
src/app/layout.tsx
Normal file
File diff suppressed because it is too large
Load Diff
282
src/app/page.tsx
Normal file
282
src/app/page.tsx
Normal file
@@ -0,0 +1,282 @@
|
||||
"use client"
|
||||
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import HeroBillboardGallery from '@/components/sections/hero/HeroBillboardGallery';
|
||||
import ProductCardThree from '@/components/sections/product/ProductCardThree';
|
||||
import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';
|
||||
import MetricCardOne from '@/components/sections/metrics/MetricCardOne';
|
||||
import TestimonialCardFifteen from '@/components/sections/testimonial/TestimonialCardFifteen';
|
||||
import FaqDouble from '@/components/sections/faq/FaqDouble';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import { Check, Package, Sparkles, Star, Trophy, Users } from "lucide-react";
|
||||
|
||||
export default function LandingPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="icon-arrow"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="small"
|
||||
sizing="largeSmallSizeLargeTitles"
|
||||
background="aurora"
|
||||
cardStyle="glass-depth"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="solid"
|
||||
headingFontWeight="medium"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleCentered
|
||||
brandName="iPhone Store"
|
||||
navItems={[
|
||||
{ name: "Shop", id: "products" },
|
||||
{ name: "Features", id: "features" },
|
||||
{ name: "Why Us", id: "metrics" },
|
||||
{ name: "FAQ", id: "faq" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
]}
|
||||
button={{
|
||||
text: "Buy Now", href: "products"
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroBillboardGallery
|
||||
title="The Future of iPhone"
|
||||
description="Experience innovation in every detail. Discover the latest iPhone with cutting-edge technology, stunning design, and incredible performance."
|
||||
background={{ variant: "plain" }}
|
||||
tag="Latest Collection"
|
||||
tagIcon={Sparkles}
|
||||
buttons={[
|
||||
{ text: "Shop Now", href: "products" },
|
||||
{ text: "Learn More", href: "features" }
|
||||
]}
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "https://img.b2bpic.net/free-photo/smartphone-bokeh-background_23-2147983809.jpg", imageAlt: "iPhone latest model front view"
|
||||
},
|
||||
{
|
||||
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", imageAlt: "iPhone premium design"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://img.b2bpic.net/free-photo/modern-workspace-featuring-cellphone-setup_58702-17222.jpg", imageAlt: "iPhone camera system"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://img.b2bpic.net/free-photo/female-with-phone-shopping-bags_23-2147932441.jpg", imageAlt: "iPhone display interface"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://img.b2bpic.net/free-photo/modern-workspace-featuring-cellphone-setup_58702-17242.jpg", imageAlt: "iPhone luxury edition"
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<ProductCardThree
|
||||
title="Shop iPhone Models"
|
||||
description="Browse our complete selection of iPhone models. Choose the perfect device for your needs with flexible pricing and options."
|
||||
tag="Available Now"
|
||||
tagIcon={Check}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="invertDefault"
|
||||
animationType="slide-up"
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
products={[
|
||||
{
|
||||
id: "iphone-15-pro", name: "iPhone 15 Pro Max", price: "$1,199", imageSrc: "https://img.b2bpic.net/free-photo/smiling-young-woman-showing-blank-smartphone-screen_93675-132174.jpg", imageAlt: "iPhone 15 Pro Max premium smartphone", initialQuantity: 1
|
||||
},
|
||||
{
|
||||
id: "iphone-15", name: "iPhone 15", price: "$799", imageSrc: "https://img.b2bpic.net/free-photo/arabic-phone-16_187299-46335.jpg", imageAlt: "iPhone 15 latest model", initialQuantity: 1
|
||||
},
|
||||
{
|
||||
id: "iphone-14-plus", name: "iPhone 14 Plus", price: "$899", imageSrc: "https://img.b2bpic.net/free-vector/abstract-mobile-wallpapers_23-2147657831.jpg", imageAlt: "iPhone 14 Plus large display", initialQuantity: 1
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<FeatureCardSeven
|
||||
title="Why Choose iPhone"
|
||||
description="Experience the perfect blend of hardware and software, designed to work seamlessly together. Discover what makes iPhone the choice of millions worldwide."
|
||||
tag="Innovation"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="noInvert"
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
id: 1,
|
||||
title: "Advanced Camera System", description: "Capture stunning photos and videos with our revolutionary camera system featuring advanced computational photography, night mode, and cinematic video recording.", imageSrc: "https://img.b2bpic.net/free-photo/dynamic-light-painting-background_23-2149679076.jpg", imageAlt: "Advanced camera technology"
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "All-Day Battery Life", description: "Power through your entire day with industry-leading battery technology. Fast charging gets you ready to go in minutes, not hours.", imageSrc: "https://img.b2bpic.net/free-photo/camera-lens_93675-130020.jpg", imageAlt: "Battery performance and charging"
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: "Stunning Display", description: "Experience vibrant colors and incredible detail on our high-refresh-rate display. Every pixel is perfectly calibrated for an immersive viewing experience.", imageSrc: "https://img.b2bpic.net/free-photo/closeup-shot-black-camera-lens_181624-22497.jpg", imageAlt: "Retina display technology"
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
title: "Powerful Performance", description: "Blazing-fast processor handles everything you throw at it. From gaming to professional apps, experience unmatched performance and efficiency.", imageSrc: "https://img.b2bpic.net/free-photo/closeup-shot-black-camera-lens_181624-24059.jpg", imageAlt: "Chip performance technology"
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<MetricCardOne
|
||||
title="By The Numbers"
|
||||
description="Join millions of iPhone users worldwide and experience the ecosystem that just works."
|
||||
tag="Global Impact"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="invertDefault"
|
||||
animationType="scale-rotate"
|
||||
gridVariant="uniform-all-items-equal"
|
||||
metrics={[
|
||||
{
|
||||
id: "1", value: "2B+", title: "Users", description: "Active iPhone users worldwide", icon: Users
|
||||
},
|
||||
{
|
||||
id: "2", value: "99.8%", title: "Satisfaction", description: "Customer satisfaction rate", icon: Star
|
||||
},
|
||||
{
|
||||
id: "3", value: "150K+", title: "Apps", description: "Available on the App Store", icon: Package
|
||||
},
|
||||
{
|
||||
id: "4", value: "#1", title: "Brand", description: "Most valued tech brand globally", icon: Trophy
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<TestimonialCardFifteen
|
||||
testimonial="iPhone has completely transformed how I work and create. The seamless integration between hardware and software makes everything feel intuitive and powerful. I can't imagine using anything else."
|
||||
rating={5}
|
||||
author="Alex Morgan, Creative Professional"
|
||||
avatars={[
|
||||
{
|
||||
src: "https://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", alt: "User testimonial avatar 1"
|
||||
},
|
||||
{
|
||||
src: "https://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg", alt: "User testimonial avatar 2"
|
||||
},
|
||||
{
|
||||
src: "https://img.b2bpic.net/free-photo/portrait-smiley-business-man_23-2148514859.jpg", alt: "User testimonial avatar 3"
|
||||
},
|
||||
{
|
||||
src: "https://img.b2bpic.net/free-photo/positive-confident-businesswoman-wearing-formal-suit-standing-with-arms-folded_74855-10328.jpg", alt: "User testimonial avatar 4"
|
||||
},
|
||||
{
|
||||
src: "https://img.b2bpic.net/free-photo/happy-young-professional-posing-office_1262-21170.jpg", alt: "User testimonial avatar 5"
|
||||
},
|
||||
{
|
||||
src: "https://img.b2bpic.net/free-photo/pensive-person-alone-corridor-serious_1262-1042.jpg", alt: "User testimonial avatar 6"
|
||||
}
|
||||
]}
|
||||
useInvertedBackground="noInvert"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<FaqDouble
|
||||
title="Frequently Asked Questions"
|
||||
description="Find answers to common questions about iPhone models, features, pricing, and support."
|
||||
tag="Help & Support"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground="invertDefault"
|
||||
animationType="smooth"
|
||||
faqs={[
|
||||
{
|
||||
id: "1", title: "What is the warranty on new iPhones?", content: "All new iPhones come with a one-year limited warranty that covers hardware defects. AppleCare+ extends coverage to up to two years for accidental damage, with affordable replacement options."
|
||||
},
|
||||
{
|
||||
id: "2", title: "Can I trade in my old iPhone?", content: "Yes! We offer competitive trade-in values for your old iPhone. Visit our store or check online for your device's value. The credit can be applied directly to your new purchase."
|
||||
},
|
||||
{
|
||||
id: "3", title: "What payment plans are available?", content: "We offer flexible financing options including monthly installments with zero interest over 24 months. Monthly payments start at just $29.99 depending on the model selected."
|
||||
},
|
||||
{
|
||||
id: "4", title: "Is the display really that durable?", content: "iPhone features Ceramic Shield, tougher than any smartphone glass. It provides superior protection against drops and scratches while maintaining crystal-clear display quality."
|
||||
},
|
||||
{
|
||||
id: "5", title: "How long do iPhones last?", content: "iPhones typically last 5-7 years with proper care. We provide regular software updates for several years, ensuring your device stays secure and performs optimally."
|
||||
},
|
||||
{
|
||||
id: "6", title: "Can I customize my iPhone?", content: "Yes! Choose from multiple color options and storage capacities. We also offer protective cases, screen protectors, and accessories to personalize your device."
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplitForm
|
||||
title="Get in Touch"
|
||||
description="Have questions about iPhone? Our expert team is here to help. Contact us for product recommendations, technical support, or to place an order."
|
||||
useInvertedBackground="noInvert"
|
||||
imageSrc="https://img.b2bpic.net/free-photo/confident-call-center-operator-talking-with-client_74855-4059.jpg"
|
||||
imageAlt="Customer service support team"
|
||||
mediaPosition="right"
|
||||
buttonText="Send Message"
|
||||
inputs={[
|
||||
{
|
||||
name: "name", type: "text", placeholder: "Your Name", required: true
|
||||
},
|
||||
{
|
||||
name: "email", type: "email", placeholder: "Your Email", required: true
|
||||
},
|
||||
{
|
||||
name: "phone", type: "tel", placeholder: "Phone Number", required: false
|
||||
},
|
||||
{
|
||||
name: "product", type: "text", placeholder: "Product Interest", required: false
|
||||
}
|
||||
]}
|
||||
textarea={{
|
||||
name: "message", placeholder: "How can we help you?", rows: 5,
|
||||
required: true
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterLogoEmphasis
|
||||
logoText="iPhone Store"
|
||||
columns={[
|
||||
{
|
||||
items: [
|
||||
{ label: "Shop", href: "products" },
|
||||
{ label: "Features", href: "features" },
|
||||
{ label: "Pricing", href: "products" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "About Us", href: "#about" },
|
||||
{ label: "Support", href: "contact" },
|
||||
{ label: "Contact", href: "contact" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Privacy Policy", href: "#privacy" },
|
||||
{ label: "Terms of Service", href: "#terms" },
|
||||
{ label: "Warranty", href: "#warranty" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Instagram", href: "https://instagram.com" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</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