Skip to content
This repository was archived by the owner on Jul 2, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/app/[countryCode]/(checkout)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import LocalizedClientLink from "@modules/common/components/localized-client-link"
import ChevronDown from "@modules/common/icons/chevron-down"
import MedusaCTA from "@modules/layout/components/medusa-cta"
import { retrieveStore } from "@lib/data/store"

export default function CheckoutLayout({
export default async function CheckoutLayout({
children,
}: {
children: React.ReactNode
}) {
const store = await retrieveStore()
const storeName = store?.name || "Luxe Linen"

return (
<div className="w-full bg-white relative small:min-h-screen">
<div className="h-16 bg-white border-b ">
Expand All @@ -29,15 +32,12 @@ export default function CheckoutLayout({
className="txt-compact-xlarge-plus text-ui-fg-subtle hover:text-ui-fg-base uppercase"
data-testid="store-link"
>
Medusa Store
{storeName}
</LocalizedClientLink>
<div className="flex-1 basis-0" />
</nav>
</div>
<div className="relative" data-testid="checkout-container">{children}</div>
<div className="py-4 w-full flex items-center justify-center">
<MedusaCTA />
</div>
</div>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { retrieveCustomer } from "@lib/data/customer"

export const metadata: Metadata = {
title: "Profile",
description: "View and edit your Medusa Store profile.",
description: "View and edit your Luxe Linen profile.",
}

export default async function Profile() {
Expand Down
2 changes: 1 addition & 1 deletion src/app/[countryCode]/(main)/account/@login/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import LoginTemplate from "@modules/account/templates/login-template"

export const metadata: Metadata = {
title: "Sign in",
description: "Sign in to your Medusa Store account.",
description: "Sign in to your Luxe Linen account.",
}

export default function Login() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ export async function generateMetadata(props: Props): Promise<Metadata> {
try {
const productCategory = await getCategoryByHandle(params.category)

const title = productCategory.name + " | Medusa Store"
const title = productCategory.name + " | Luxe Linen"

const description = productCategory.description ?? `${title} category.`

return {
title: `${title} | Medusa Store`,
title: `${title} | Luxe Linen`,
description,
alternates: {
canonical: `${params.category.join("/")}`,
Expand Down
2 changes: 1 addition & 1 deletion src/app/[countryCode]/(main)/collections/[handle]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export async function generateMetadata(props: Props): Promise<Metadata> {
}

const metadata = {
title: `${collection.title} | Medusa Store`,
title: `${collection.title} | Luxe Linen`,
description: `${collection.title} collection`,
} as Metadata

Expand Down
31 changes: 31 additions & 0 deletions src/app/[countryCode]/(main)/contact/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { Metadata } from "next"

export const metadata: Metadata = {
title: "Contact | Luxe Linen",
}

export default function ContactPage() {
return (
<div className="content-container py-16">
<h1 className="text-2xl font-semibold text-ui-fg-base">Contact</h1>
<div className="mt-6 space-y-4 text-ui-fg-subtle">
<p>
Please update the contact details below to match your local office
information.
</p>
<div>
<p className="text-ui-fg-base">Office Address</p>
<p>[add your local office address in Pakistan]</p>
</div>
<div>
<p className="text-ui-fg-base">Phone</p>
<p>[add your contact number]</p>
</div>
<div>
<p className="text-ui-fg-base">Email</p>
<p>[add your support email]</p>
</div>
</div>
</div>
)
}
21 changes: 16 additions & 5 deletions src/app/[countryCode]/(main)/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,20 @@ import { Metadata } from "next"

import FeaturedProducts from "@modules/home/components/featured-products"
import Hero from "@modules/home/components/hero"
import About from "@modules/home/components/about"
import { listCollections } from "@lib/data/collections"
import { retrievePageBySlug } from "@lib/data/pages"
import { getRegion } from "@lib/data/regions"
import { retrieveStore } from "@lib/data/store"

export const metadata: Metadata = {
title: "Medusa Next.js Starter Template",
description:
"A performant frontend ecommerce starter template with Next.js 15 and Medusa.",
export async function generateMetadata(): Promise<Metadata> {
const store = await retrieveStore()
const storeName = store?.name || "Luxe Linen"

return {
title: storeName,
description: "Soft essentials for everyday living.",
}
}

export default async function Home(props: {
Expand All @@ -23,14 +30,18 @@ export default async function Home(props: {
const { collections } = await listCollections({
fields: "id, handle, title",
})
const store = await retrieveStore()
const storeName = store?.name || "Luxe Linen"
const homePage = await retrievePageBySlug("home")

if (!collections || !region) {
return null
}

return (
<>
<Hero />
<Hero page={homePage} />
<About content={homePage?.content} />
<div className="py-12">
<ul className="flex flex-col gap-x-6">
<FeaturedProducts collections={collections} region={region} />
Expand Down
62 changes: 62 additions & 0 deletions src/app/[countryCode]/(main)/pages/[slug]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { Metadata } from "next"
import { notFound } from "next/navigation"
import { retrievePageBySlug } from "@lib/data/pages"

type PageProps = {
params: Promise<{ countryCode: string; slug: string }>
}

export async function generateMetadata(
props: PageProps
): Promise<Metadata> {
const params = await props.params
const page = await retrievePageBySlug(params.slug)

if (!page) {
return {}
}

return {
title: page.seo_title || page.title,
description: page.seo_description || page.excerpt || undefined,
}
}

export default async function Page(props: PageProps) {
const params = await props.params
const page = await retrievePageBySlug(params.slug)

if (!page) {
notFound()
}

return (
<div className="content-container py-16">
<div className="flex flex-col gap-y-6">
<div className="flex flex-col gap-y-2">
<h1 className="text-2xl font-semibold text-ui-fg-base">
{page.title}
</h1>
{page.excerpt && (
<p className="text-ui-fg-subtle">{page.excerpt}</p>
)}
</div>
{page.featured_image && (
<div className="overflow-hidden rounded-md border border-ui-border-base">
<img
src={page.featured_image}
alt={page.title}
className="w-full h-auto object-cover"
/>
</div>
)}
{page.content && (
<div
className="prose max-w-none"
dangerouslySetInnerHTML={{ __html: page.content }}
/>
)}
</div>
</div>
)
}
30 changes: 30 additions & 0 deletions src/app/[countryCode]/(main)/policies/privacy/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { Metadata } from "next"

export const metadata: Metadata = {
title: "Privacy Policy | Luxe Linen",
}

export default function PrivacyPolicyPage() {
return (
<div className="content-container py-16">
<h1 className="text-2xl font-semibold text-ui-fg-base">
Privacy Policy
</h1>
<div className="mt-6 space-y-4 text-ui-fg-subtle">
<p>
This Privacy Policy explains how Luxe Linen collects, uses, and
protects your information when you use our website and services.
</p>
<p>
Please update this page with your exact data collection practices,
analytics tools, payment providers, and customer support processes.
</p>
<p>
For privacy-related requests, contact us at:
{" "}
<span className="text-ui-fg-base">[add email]</span>
</p>
</div>
</div>
)
}
26 changes: 26 additions & 0 deletions src/app/[countryCode]/(main)/policies/returns/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Metadata } from "next"

export const metadata: Metadata = {
title: "Returns & Refunds | Luxe Linen",
}

export default function ReturnsPolicyPage() {
return (
<div className="content-container py-16">
<h1 className="text-2xl font-semibold text-ui-fg-base">
Returns & Refunds
</h1>
<div className="mt-6 space-y-4 text-ui-fg-subtle">
<p>
Please update this policy with your return window, eligibility
criteria, refund method, and processing timelines.
</p>
<p>
For return requests, contact:
{" "}
<span className="text-ui-fg-base">[add support email/phone]</span>
</p>
</div>
</div>
)
}
26 changes: 26 additions & 0 deletions src/app/[countryCode]/(main)/policies/shipping/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Metadata } from "next"

export const metadata: Metadata = {
title: "Shipping Policy | Luxe Linen",
}

export default function ShippingPolicyPage() {
return (
<div className="content-container py-16">
<h1 className="text-2xl font-semibold text-ui-fg-base">
Shipping Policy
</h1>
<div className="mt-6 space-y-4 text-ui-fg-subtle">
<p>
Please update this policy with your shipping zones, delivery times,
shipping fees, and courier partners.
</p>
<p>
For shipping questions, contact:
{" "}
<span className="text-ui-fg-base">[add support email/phone]</span>
</p>
</div>
</div>
)
}
26 changes: 26 additions & 0 deletions src/app/[countryCode]/(main)/policies/terms/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Metadata } from "next"

export const metadata: Metadata = {
title: "Terms & Conditions | Luxe Linen",
}

export default function TermsPage() {
return (
<div className="content-container py-16">
<h1 className="text-2xl font-semibold text-ui-fg-base">
Terms & Conditions
</h1>
<div className="mt-6 space-y-4 text-ui-fg-subtle">
<p>
Please update these terms with your business name, legal entity,
customer obligations, limitations of liability, and governing law.
</p>
<p>
For questions about these terms, contact:
{" "}
<span className="text-ui-fg-base">[add support email/phone]</span>
</p>
</div>
</div>
)
}
4 changes: 2 additions & 2 deletions src/app/[countryCode]/(main)/products/[handle]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,10 @@ export async function generateMetadata(props: Props): Promise<Metadata> {
}

return {
title: `${product.title} | Medusa Store`,
title: `${product.title} | Luxe Linen`,
description: `${product.title}`,
openGraph: {
title: `${product.title} | Medusa Store`,
title: `${product.title} | Luxe Linen`,
description: `${product.title}`,
images: product.thumbnail ? [product.thumbnail] : [],
},
Expand Down
5 changes: 2 additions & 3 deletions src/app/[countryCode]/(main)/store/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ type Params = {
}

export default async function StorePage(props: Params) {
const params = await props.params;
const searchParams = await props.searchParams;
const params = await props.params
const searchParams = await props.searchParams
const { sortBy, page } = searchParams

return (
<StoreTemplate
sortBy={sortBy}
Expand Down
12 changes: 12 additions & 0 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,18 @@ export const metadata: Metadata = {
export default function RootLayout(props: { children: React.ReactNode }) {
return (
<html lang="en" data-mode="light">
<head>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link
rel="preconnect"
href="https://fonts.gstatic.com"
crossOrigin="anonymous"
/>
<link
href="https://fonts.googleapis.com/css2?family=Marcellus&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
rel="stylesheet"
/>
</head>
<body>
<main className="relative">{props.children}</main>
</body>
Expand Down
Loading