Initial commit

This commit is contained in:
DK
2026-02-05 14:19:23 +00:00
commit f17f100c8c
8 changed files with 1855 additions and 0 deletions

2
.env Normal file
View File

@@ -0,0 +1,2 @@
NEXT_PUBLIC_API_URL=https://dev.api.webild.io
NEXT_PUBLIC_PROJECT_ID=722e6fc8-25df-41ec-91e1-92f7532e613d

View 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"

96
src/app/blog/page.tsx Normal file
View File

@@ -0,0 +1,96 @@
"use client";
import ReactLenis from "lenis/react";
import BlogCardOne from '@/components/sections/blog/BlogCardOne';
import FooterSimple from '@/components/sections/footer/FooterSimple';
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="hover-bubble"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="medium"
background="aurora"
cardStyle="elevated"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="solid"
headingFontWeight="medium"
>
<ReactLenis root>
<div className="min-h-screen bg-background">
<NavbarStyleCentered
brandName="iPhone Store"
navItems={[
{ name: "Home", id: "/" },
{ name: "Products", id: "products" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
{ name: "Reviews", id: "testimonials" },
{ 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>
) : (
<BlogCardOne
blogs={posts}
title="Latest iPhone News & Tips"
description="Stay updated with the latest iPhone insights, tips, and product updates from our team"
textboxLayout="default"
useInvertedBackground="noInvert"
animationType="slide-up"
carouselMode="buttons"
tag="Blog"
/>
)}
<FooterSimple
columns={[
{
title: "Shop", items: [
{ label: "iPhone Models", href: "#products" },
{ label: "Accessories", href: "#" },
{ label: "AppleCare+", href: "#" }
]
},
{
title: "Support", items: [
{ label: "Contact Us", href: "#contact" },
{ label: "FAQ", href: "#contact" },
{ label: "Warranty", href: "#" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
]}
bottomLeftText="© 2025 iPhone Store. All rights reserved."
bottomRightText="Made with excellence"
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

5
src/app/globals.css Normal file
View File

@@ -0,0 +1,5 @@
@import "tailwindcss";
@import "./styles/variables.css";
@import "./styles/theme.css";
@import "./styles/utilities.css";
@import "./styles/base.css";

1265
src/app/layout.tsx Normal file

File diff suppressed because it is too large Load Diff

302
src/app/page.tsx Normal file
View File

@@ -0,0 +1,302 @@
"use client"
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
import ProductCardOne from '@/components/sections/product/ProductCardOne';
import FeatureCardTen from '@/components/sections/feature/FeatureCardTen';
import PricingCardThree from '@/components/sections/pricing/PricingCardThree';
import TestimonialCardThirteen from '@/components/sections/testimonial/TestimonialCardThirteen';
import ContactFaq from '@/components/sections/contact/ContactFaq';
import FooterSimple from '@/components/sections/footer/FooterSimple';
import { Sparkles, ShoppingBag, Award, Camera, Zap, Film, Cpu, Wind, Battery, Sun, Shield, Droplets, CreditCard, Star, Heart, MessageCircle } from "lucide-react";
export default function LandingPage() {
return (
<ThemeProvider
defaultButtonVariant="hover-bubble"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="medium"
background="aurora"
cardStyle="elevated"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="solid"
headingFontWeight="medium"
>
<div id="nav" data-section="nav">
<NavbarStyleCentered
brandName="iPhone Store"
navItems={[
{ name: "Products", id: "products" },
{ name: "Features", id: "features" },
{ name: "Pricing", id: "pricing" },
{ name: "Reviews", id: "testimonials" },
{ name: "Contact", id: "contact" }
]}
button={{
text: "Shop Now", href: "products"
}}
/>
</div>
<div id="hero" data-section="hero">
<HeroSplitDualMedia
title="Experience iPhone Innovation"
description="Discover the latest iPhone models with cutting-edge technology, stunning cameras, and all-day battery life. Premium design meets powerful performance."
tag="Latest Technology"
tagIcon={Sparkles}
background={{ variant: "plain" }}
mediaItems={[
{
imageSrc: "https://img.b2bpic.net/free-psd/new-smartphone-17-pro-social-media-banner-design-template_47987-33087.jpg", imageAlt: "iPhone Pro main view"
},
{
imageSrc: "https://img.b2bpic.net/free-psd/new-smartphone-17-pro-social-media-banner-design-template_47987-32600.jpg", imageAlt: "iPhone Pro side angle"
}
]}
rating={5}
ratingText="Trusted by millions worldwide"
buttons={[
{ text: "Explore Models", href: "products" },
{ text: "Learn More", href: "features" }
]}
/>
</div>
<div id="products" data-section="products">
<ProductCardOne
title="Featured iPhone Models"
description="Choose from our curated selection of premium iPhone devices with exceptional performance and design."
tag="Shop Now"
tagIcon={ShoppingBag}
products={[
{
id: "iphone-pro-max", name: "iPhone Pro Max", price: "$1,199", imageSrc: "https://img.b2bpic.net/free-psd/smartphone-16-pro-discount-sale-banner-social-media-design-template_47987-25305.jpg", imageAlt: "iPhone Pro Max with premium display"
},
{
id: "iphone-pro", name: "iPhone Pro", price: "$999", imageSrc: "https://img.b2bpic.net/free-photo/mockup-mobile-phone-screen_53876-63379.jpg", imageAlt: "iPhone Pro with advanced features"
},
{
id: "iphone-plus", name: "iPhone Plus", price: "$799", imageSrc: "https://img.b2bpic.net/free-psd/new-smartphone-17-pro-social-media-banner-design-template_47987-33075.jpg", imageAlt: "iPhone Plus large screen"
}
]}
gridVariant="three-columns-all-equal-width"
animationType="slide-up"
textboxLayout="default"
useInvertedBackground="invertDefault"
/>
</div>
<div id="features" data-section="features">
<FeatureCardTen
title="Why Choose iPhone"
description="Industry-leading technology and innovation combined with timeless design and exceptional build quality."
tag="Premium Features"
tagIcon={Award}
features={[
{
id: "1", title: "Advanced Camera System", description: "Capture stunning photos and videos with our pro-level camera system featuring advanced computational photography.", media: {
imageSrc: "https://img.b2bpic.net/free-photo/closeup-shot-black-camera-lens_181624-24125.jpg"
},
items: [
{ icon: Camera, text: "Pro 48MP main camera" },
{ icon: Zap, text: "Night mode photography" },
{ icon: Film, text: "4K video recording" }
],
reverse: false
},
{
id: "2", title: "Exceptional Performance", description: "Powered by the latest A-series chip for blazing-fast performance and efficient multitasking.", media: {
imageSrc: "https://img.b2bpic.net/free-photo/optical-lens-technology-background-purple-blue-gradient_53876-124678.jpg"
},
items: [
{ icon: Zap, text: "Ultra-fast processor" },
{ icon: Cpu, text: "6-core architecture" },
{ icon: Wind, text: "Efficient power usage" }
],
reverse: true
},
{
id: "3", title: "All-Day Battery Life", description: "Advanced battery technology keeps you powered through your busiest days with extended battery life.", media: {
imageSrc: "https://img.b2bpic.net/free-photo/still-life-shot-dslr-camera-lens_1401-329.jpg"
},
items: [
{ icon: Battery, text: "Extended battery life" },
{ icon: Zap, text: "Fast charging support" },
{ icon: Sun, text: "Wireless charging" }
],
reverse: false
},
{
id: "4", title: "Premium Design & Build", description: "Crafted from premium materials with precision engineering for a device that feels as good as it performs.", media: {
imageSrc: "https://img.b2bpic.net/free-photo/close-up-professional-camera-lens_23-2150720442.jpg"
},
items: [
{ icon: Sparkles, text: "Aerospace-grade aluminum" },
{ icon: Shield, text: "Ceramic Shield protection" },
{ icon: Droplets, text: "Water resistant design" }
],
reverse: true
}
]}
textboxLayout="default"
animationType="slide-up"
useInvertedBackground="noInvert"
/>
</div>
<div id="pricing" data-section="pricing">
<PricingCardThree
title="Simple, Transparent Pricing"
description="Choose the iPhone model that fits your needs and budget."
tag="Pricing Plans"
tagIcon={CreditCard}
plans={[
{
id: "iphone-standard", price: "$799", name: "iPhone Standard", buttons: [
{ text: "Buy Now", href: "#" },
{ text: "Learn More", href: "#" }
],
features: [
"6.1-inch display", "A-series chip", "Dual camera system", "All-day battery", "Water resistant"
]
},
{
id: "iphone-pro", badge: "Most Popular", badgeIcon: Star,
price: "$999", name: "iPhone Pro", buttons: [
{ text: "Buy Now", href: "#" },
{ text: "Learn More", href: "#" }
],
features: [
"6.1-inch ProMotion display", "A-series Pro chip", "Pro triple camera", "Night mode & cinematic", "ProRAW support"
]
},
{
id: "iphone-pro-max", price: "$1,199", name: "iPhone Pro Max", buttons: [
{ text: "Buy Now", href: "#" },
{ text: "Learn More", href: "#" }
],
features: [
"6.7-inch largest display", "A-series Pro Max chip", "Advanced quad cameras", "Extended battery life", "Professional video tools"
]
}
]}
textboxLayout="default"
animationType="slide-up"
useInvertedBackground="invertDefault"
/>
</div>
<div id="testimonials" data-section="testimonials">
<TestimonialCardThirteen
title="Loved by Customers"
description="See what iPhone users around the world have to say about their experience."
tag="Customer Reviews"
tagIcon={Heart}
testimonials={[
{
id: "1", name: "Sarah Johnson", handle: "@sarahj", testimonial: "The iPhone Pro has completely transformed my photography game. The camera quality is simply outstanding and the night mode is incredible.", rating: 5,
imageSrc: "https://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg"
},
{
id: "2", name: "Michael Chen", handle: "@mchen", testimonial: "Best phone I've ever owned. The performance is lightning fast and the battery life easily lasts a full day of heavy use.", rating: 5,
imageSrc: "https://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg"
},
{
id: "3", name: "Emily Rodriguez", handle: "@emilyrod", testimonial: "The design is absolutely gorgeous and feels premium in hand. Worth every penny for the quality and durability.", rating: 5,
imageSrc: "https://img.b2bpic.net/free-photo/portrait-smiley-business-man_23-2148514859.jpg"
},
{
id: "4", name: "David Kim", handle: "@davidkim", testimonial: "Switched from Android and couldn't be happier. The ecosystem integration is seamless and everything just works.", rating: 5,
imageSrc: "https://img.b2bpic.net/free-photo/happy-young-professional-posing-office_1262-21170.jpg"
},
{
id: "5", name: "Jessica White", handle: "@jessw", testimonial: "The iPhone Pro Max screen is absolutely stunning. Perfect for watching videos and editing content on the go.", rating: 5,
imageSrc: "https://img.b2bpic.net/free-photo/smiling-young-handsome-guy-wearing-green-shirt_141793-122624.jpg"
},
{
id: "6", name: "Thomas Park", handle: "@tpark", testimonial: "Outstanding customer service and the build quality is exceptional. This phone has exceeded all my expectations.", rating: 5,
imageSrc: "https://img.b2bpic.net/free-photo/young-businesswoman-portrait-office_1262-1506.jpg"
}
]}
showRating={true}
textboxLayout="default"
animationType="slide-up"
useInvertedBackground="noInvert"
/>
</div>
<div id="contact" data-section="contact">
<ContactFaq
ctaTitle="Get in Touch"
ctaDescription="Have questions about our iPhone models? Our team is here to help you find the perfect device."
ctaIcon={MessageCircle}
ctaButton={{
text: "Contact Us", href: "#"
}}
faqs={[
{
id: "1", title: "What is the warranty coverage?", content: "All iPhone models come with a standard 1-year limited warranty covering hardware defects. AppleCare+ extends coverage to 2 years with accidental damage protection."
},
{
id: "2", title: "Can I trade in my old iPhone?", content: "Yes! We offer competitive trade-in values for your existing device. Trade-in credit can be applied toward your new iPhone purchase."
},
{
id: "3", title: "What payment options are available?", content: "We accept all major credit cards, digital payment options, and offer flexible financing plans through our partners for qualified buyers."
},
{
id: "4", title: "How long does shipping take?", content: "Standard shipping typically takes 5-7 business days. Express shipping options are available for faster delivery to your location."
},
{
id: "5", title: "Are the phones unlocked?", content: "All our iPhone models are unlocked and work with any carrier. You can activate with your preferred network immediately."
},
{
id: "6", title: "What storage options are available?", content: "iPhones are available in multiple storage capacities: 128GB, 256GB, 512GB, and 1TB, depending on the model."
}
]}
useInvertedBackground="invertDefault"
animationType="slide-up"
/>
</div>
<div id="footer" data-section="footer">
<FooterSimple
columns={[
{
title: "Shop", items: [
{ label: "iPhone Models", href: "#products" },
{ label: "Accessories", href: "#" },
{ label: "AppleCare+", href: "#" }
]
},
{
title: "Support", items: [
{ label: "Contact Us", href: "#contact" },
{ label: "FAQ", href: "#contact" },
{ label: "Warranty", href: "#" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
]}
bottomLeftText="© 2025 iPhone Store. All rights reserved."
bottomRightText="Made with excellence"
/>
</div>
</ThemeProvider>
);
}

123
src/app/shop/page.tsx Normal file
View File

@@ -0,0 +1,123 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
import ProductCardFour from '@/components/sections/product/ProductCardFour';
import FooterSimple from '@/components/sections/footer/FooterSimple';
import { ShoppingBag } from 'lucide-react';
export default function ShopPage() {
const products = [
{
id: "1", name: "iPhone 15 Pro Max", price: "$1,199", variant: "Titanium Blue • 4 Colors", imageSrc: "/api/placeholder/400/300", imageAlt: "iPhone 15 Pro Max in Titanium Blue", isFavorited: false,
onFavorite: () => console.log('favorited iPhone 15 Pro Max'),
onProductClick: () => window.open('/product/iphone-15-pro-max', '_blank')
},
{
id: "2", name: "iPhone 15 Pro", price: "$999", variant: "Natural Titanium • 4 Colors", imageSrc: "/api/placeholder/400/300", imageAlt: "iPhone 15 Pro in Natural Titanium", isFavorited: false,
onFavorite: () => console.log('favorited iPhone 15 Pro'),
onProductClick: () => window.open('/product/iphone-15-pro', '_blank')
},
{
id: "3", name: "iPhone 15", price: "$799", variant: "Pink • 5 Colors", imageSrc: "/api/placeholder/400/300", imageAlt: "iPhone 15 in Pink", isFavorited: false,
onFavorite: () => console.log('favorited iPhone 15'),
onProductClick: () => window.open('/product/iphone-15', '_blank')
},
{
id: "4", name: "iPhone 14", price: "$699", variant: "Midnight • 6 Colors", imageSrc: "/api/placeholder/400/300", imageAlt: "iPhone 14 in Midnight", isFavorited: false,
onFavorite: () => console.log('favorited iPhone 14'),
onProductClick: () => window.open('/product/iphone-14', '_blank')
},
{
id: "5", name: "iPhone SE", price: "$429", variant: "Starlight • 3 Colors", imageSrc: "/api/placeholder/400/300", imageAlt: "iPhone SE in Starlight", isFavorited: false,
onFavorite: () => console.log('favorited iPhone SE'),
onProductClick: () => window.open('/product/iphone-se', '_blank')
},
{
id: "6", name: "MagSafe Charger", price: "$39", variant: "White • Wireless Charging", imageSrc: "/api/placeholder/400/300", imageAlt: "MagSafe Charger in White", isFavorited: false,
onFavorite: () => console.log('favorited MagSafe Charger'),
onProductClick: () => window.open('/product/magsafe-charger', '_blank')
}
];
return (
<ThemeProvider
defaultButtonVariant="hover-bubble"
defaultTextAnimation="background-highlight"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="medium"
background="aurora"
cardStyle="elevated"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="solid"
headingFontWeight="medium"
>
<NavbarStyleCentered
brandName="iPhone Store"
navItems={[
{ name: "Home", id: "/" },
{ name: "Shop", id: "/shop" }
]}
button={{
text: "Shop Now", href: "products"
}}
/>
<ProductCardFour
products={products}
title="iPhone Collection"
description="Discover our complete range of iPhones and accessories with the latest technology and premium design"
tag="Latest Models"
tagIcon={ShoppingBag}
textboxLayout="default"
gridVariant="three-columns-all-equal-width"
animationType="slide-up"
useInvertedBackground="noInvert"
buttons={[
{
text: "View All Products", href: "#products"
},
{
text: "Contact Sales", href: "/contact"
}
]}
/>
<FooterSimple
columns={[
{
title: "Shop", items: [
{ label: "iPhone Models", href: "#products" },
{ label: "Accessories", href: "#" },
{ label: "AppleCare+", href: "#" }
]
},
{
title: "Support", items: [
{ label: "Contact Us", href: "#contact" },
{ label: "FAQ", href: "#contact" },
{ label: "Warranty", href: "#" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
]}
bottomLeftText="© 2025 iPhone Store. All rights reserved."
bottomRightText="Made with excellence"
/>
</ThemeProvider>
);
}

5
vercel.json Normal file
View File

@@ -0,0 +1,5 @@
{
"installCommand": "npm ci",
"buildCommand": "npm run build",
"outputDirectory": ".next"
}