From fdee322d2c579e3de84be497237d4e3e542d077c Mon Sep 17 00:00:00 2001 From: DK Date: Thu, 5 Feb 2026 14:13:52 +0000 Subject: [PATCH] Initial commit --- .env | 2 + .gitea/workflows/build.yml | 57 ++ src/app/blog/page.tsx | 95 +++ src/app/globals.css | 5 + src/app/layout.tsx | 1270 ++++++++++++++++++++++++++++++++++++ src/app/page.tsx | 243 +++++++ src/app/shop/page.tsx | 133 ++++ vercel.json | 5 + 8 files changed, 1810 insertions(+) create mode 100644 .env create mode 100644 .gitea/workflows/build.yml create mode 100644 src/app/blog/page.tsx create mode 100644 src/app/globals.css create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/app/shop/page.tsx create mode 100644 vercel.json diff --git a/.env b/.env new file mode 100644 index 0000000..ad3cbcc --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +NEXT_PUBLIC_API_URL=https://dev.api.webild.io +NEXT_PUBLIC_PROJECT_ID=49f930ed-5b57-4e04-b162-fa10eb33caab \ No newline at end of file diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..d372c5f --- /dev/null +++ b/.gitea/workflows/build.yml @@ -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" diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx new file mode 100644 index 0000000..5385000 --- /dev/null +++ b/src/app/blog/page.tsx @@ -0,0 +1,95 @@ +"use client"; + +import ReactLenis from "lenis/react"; +import BlogCardTwo from '@/components/sections/blog/BlogCardTwo'; +import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis'; +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 ( + + +
+ + + {isLoading ? ( +
+

Loading posts...

+
+ ) : ( + + )} + + +
+
+
+ ); +} \ No newline at end of file diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 0000000..f624db2 --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,5 @@ +@import "tailwindcss"; +@import "./styles/variables.css"; +@import "./styles/theme.css"; +@import "./styles/utilities.css"; +@import "./styles/base.css"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..1896c60 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,1270 @@ +import type { Metadata } from "next"; +import { Mulish } from "next/font/google"; +import { Inter } from "next/font/google"; +import "./globals.css"; +import { ServiceWrapper } from "@/components/ServiceWrapper"; +import Tag from "@/tag/Tag"; + +const mulish = Mulish({ + variable: "--font-mulish", subsets: ["latin"], +}); + +const inter = Inter({ + variable: "--font-inter", subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "iPhone 15 | Premium Smartphones | Shop Now", description: "Discover the latest iPhone 15 with advanced camera, A17 Pro chip, and all-day battery. Experience premium smartphone technology.", keywords: "iPhone, smartphone, Apple, iPhone 15, Pro, Max, camera, technology", metadataBase: new URL("https://img.b2bpic.net/free-psd/new-smartphone-a18-bionic-social-media-banner-design-template_47987-33085.jpg"), + alternates: { + canonical: "https://img.b2bpic.net/free-psd/new-smartphone-a18-bionic-social-media-banner-design-template_47987-33085.jpg" + }, + openGraph: { + title: "iPhone 15 | Premium Smartphones", description: "Experience the future of mobile technology with the new iPhone 15.", siteName: "iPhone", type: "website", images: [{ + url: "https://img.b2bpic.net/free-psd/new-smartphone-a18-bionic-social-media-banner-design-template_47987-33085.jpg", alt: "iPhone 15 Premium Smartphone" + }] + }, + twitter: { + card: "summary_large_image", title: "iPhone 15 | Premium Smartphones", description: "Discover the latest iPhone with revolutionary features.", images: ["https://img.b2bpic.net/free-psd/new-smartphone-a18-bionic-social-media-banner-design-template_47987-33085.jpg"] + }, + robots: { + index: true, + follow: true + } +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + + {children} + +