first commit
This commit is contained in:
BIN
public/images/hero.png
Normal file
BIN
public/images/hero.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 792 KiB |
BIN
public/images/logo.jpg
Normal file
BIN
public/images/logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
24
src/app/(public)/about/page.tsx
Normal file
24
src/app/(public)/about/page.tsx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import { company } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function AboutPage() {
|
||||||
|
return (
|
||||||
|
<Section title="About AMREZ" subtitle={company.tagline}>
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
<div className="card">
|
||||||
|
<h3 className="text-xl font-semibold">Vision</h3>
|
||||||
|
<p className="text-white/80 mt-3">{company.vision}</p>
|
||||||
|
</div>
|
||||||
|
<div className="card">
|
||||||
|
<h3 className="text-xl font-semibold">Mission</h3>
|
||||||
|
<p className="text-white/80 mt-3">{company.mission}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="card mt-6">
|
||||||
|
<h3 className="text-xl font-semibold">Company</h3>
|
||||||
|
<p className="text-white/80 mt-3">{company.about}</p>
|
||||||
|
<p className="text-white/60 mt-3 text-sm">Source: Company profile</p>
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
17
src/app/(public)/companies/page.tsx
Normal file
17
src/app/(public)/companies/page.tsx
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import { groupCompanies } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function CompaniesPage() {
|
||||||
|
return (
|
||||||
|
<Section title="Current Group of Companies">
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
{groupCompanies.map((c, i) => (
|
||||||
|
<div key={i} className="card">
|
||||||
|
<h3 className="text-lg font-semibold">{c.name}</h3>
|
||||||
|
<p className="text-white/70 mt-2">{c.focus}</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
26
src/app/(public)/contact/page.tsx
Normal file
26
src/app/(public)/contact/page.tsx
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import Section from "../../components/Section";
|
||||||
|
import { useState } from "react";
|
||||||
|
|
||||||
|
export default function ContactPage() {
|
||||||
|
const [sent, setSent] = useState(false);
|
||||||
|
return (
|
||||||
|
<Section title="Contact Us" subtitle="Leave your info and we’ll get back to you">
|
||||||
|
{!sent ? (
|
||||||
|
<form className="card grid gap-4 max-w-xl" onSubmit={(e)=>{e.preventDefault(); setSent(true);}}>
|
||||||
|
<input required placeholder="Name" className="px-4 py-3 rounded-xl bg-white/5 border border-white/10" />
|
||||||
|
<input required type="email" placeholder="Email" className="px-4 py-3 rounded-xl bg-white/5 border border-white/10" />
|
||||||
|
<textarea required placeholder="Message" rows={5} className="px-4 py-3 rounded-xl bg-white/5 border border-white/10"></textarea>
|
||||||
|
<button className="px-5 py-3 rounded-full bg-white text-black font-semibold w-fit">Send</button>
|
||||||
|
<p className="text-white/50 text-sm">This is a demo form. Hook your API or email service here.</p>
|
||||||
|
</form>
|
||||||
|
) : (
|
||||||
|
<div className="card max-w-xl">
|
||||||
|
<h3 className="text-xl font-semibold">Thanks!</h3>
|
||||||
|
<p className="text-white/80 mt-2">We‘ll be in touch shortly.</p>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
19
src/app/(public)/distribution/page.tsx
Normal file
19
src/app/(public)/distribution/page.tsx
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import { channels } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function DistributionPage() {
|
||||||
|
return (
|
||||||
|
<Section title="Channels of Distribution" subtitle="Online, offline, convenience & drug stores, and traditional retail">
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
{channels.map((c, i) => (
|
||||||
|
<div key={i} className="card">
|
||||||
|
<h3 className="text-xl font-semibold">{c.name}</h3>
|
||||||
|
<ul className="mt-3 grid sm:grid-cols-2 gap-2 text-white/80">
|
||||||
|
{c.items.map((it, idx) => <li key={idx} className="px-3 py-2 bg-white/5 rounded-lg">{it}</li>)}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
src/app/(public)/founders/page.tsx
Normal file
18
src/app/(public)/founders/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import { founders } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function FoundersPage() {
|
||||||
|
return (
|
||||||
|
<Section title="Meet the Founders">
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
{founders.map((f, i) => (
|
||||||
|
<div key={i} className="card">
|
||||||
|
<h3 className="text-xl font-semibold">{f.name}</h3>
|
||||||
|
<p className="text-white/60 mt-1">{f.role}</p>
|
||||||
|
<p className="text-white/80 mt-3">{f.bio}</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
17
src/app/(public)/future/page.tsx
Normal file
17
src/app/(public)/future/page.tsx
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import { futurePlans } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function FuturePage() {
|
||||||
|
return (
|
||||||
|
<Section title="Future of the Company" subtitle="Expansion roadmap 2025–2026 and beyond">
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
{futurePlans.map((p, i) => (
|
||||||
|
<div key={i} className="card">
|
||||||
|
<h3 className="text-lg font-semibold">{p.title}</h3>
|
||||||
|
{p.details && <p className="text-white/70 mt-2">{p.details}</p>}
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
13
src/app/(public)/milestones/page.tsx
Normal file
13
src/app/(public)/milestones/page.tsx
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import Timeline from "../../components/Timeline";
|
||||||
|
import { milestones } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function MilestonesPage() {
|
||||||
|
return (
|
||||||
|
<Section title="Milestones">
|
||||||
|
<div className="card">
|
||||||
|
<Timeline entries={milestones} />
|
||||||
|
</div>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
39
src/app/(public)/performance/page.tsx
Normal file
39
src/app/(public)/performance/page.tsx
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import Section from "../../components/Section";
|
||||||
|
import { kpis } from "../../lib/data";
|
||||||
|
import { useMemo } from "react";
|
||||||
|
|
||||||
|
export default function PerformancePage() {
|
||||||
|
const rows = useMemo(() => kpis.map(k => ({
|
||||||
|
year: k.year,
|
||||||
|
sales: k.salesMillionBaht.toFixed(1),
|
||||||
|
note: k.note ?? ""
|
||||||
|
})), []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Section title="Historical Performance" subtitle="Sales (Million Baht)">
|
||||||
|
<div className="overflow-auto">
|
||||||
|
<table className="min-w-[480px] w-full text-left border-separate border-spacing-y-2">
|
||||||
|
<thead>
|
||||||
|
<tr className="text-white/70">
|
||||||
|
<th className="px-3 py-2">Year</th>
|
||||||
|
<th className="px-3 py-2">Sales (M ฿)</th>
|
||||||
|
<th className="px-3 py-2">Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{rows.map((r) => (
|
||||||
|
<tr key={r.year} className="bg-white/5">
|
||||||
|
<td className="px-3 py-2 rounded-l-lg font-semibold">{r.year}</td>
|
||||||
|
<td className="px-3 py-2">{r.sales}</td>
|
||||||
|
<td className="px-3 py-2 rounded-r-lg text-white/70">{r.note}</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<p className="text-white/60 mt-6 text-sm">* 2024: Strategic shift to profitability; profit +2.5%.</p>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
12
src/app/(public)/products/page.tsx
Normal file
12
src/app/(public)/products/page.tsx
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import Section from "../../components/Section";
|
||||||
|
import ProductGrid from "../../components/ProductGrid";
|
||||||
|
import { products } from "../../lib/data";
|
||||||
|
|
||||||
|
export default function ProductsPage() {
|
||||||
|
return (
|
||||||
|
<Section title="Products">
|
||||||
|
<ProductGrid products={products} />
|
||||||
|
<p className="text-white/60 mt-6 text-sm">Note: This is a catalog overview — images, shades, and details can be added later.</p>
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
}
|
||||||
BIN
src/app/font/dbheavent/DBHeavent-Bold.woff2
Normal file
BIN
src/app/font/dbheavent/DBHeavent-Bold.woff2
Normal file
Binary file not shown.
BIN
src/app/font/dbheavent/DBHeavent-Regular.woff2
Normal file
BIN
src/app/font/dbheavent/DBHeavent-Regular.woff2
Normal file
Binary file not shown.
0
src/app/fonts.ts
Normal file
0
src/app/fonts.ts
Normal file
89
src/app/lib/data.ts
Normal file
89
src/app/lib/data.ts
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
export type KPI = { year: number; salesMillionBaht: number; note?: string };
|
||||||
|
export type Milestone = { year: number; items: string[] };
|
||||||
|
export type Founder = { name: string; role: string; bio: string };
|
||||||
|
export type ChannelGroup = { name: string; items: string[] };
|
||||||
|
export type Company = { name: string; focus: string };
|
||||||
|
export type Product = { category: string; items: string[] };
|
||||||
|
export type FuturePlan = { title: string; details?: string };
|
||||||
|
|
||||||
|
export const company = {
|
||||||
|
name: "Amrez Co., Ltd.",
|
||||||
|
tagline: "Counter-brand quality at an affordable price for Thai consumers.",
|
||||||
|
about: "Amrez is a Thai beauty & wellness company operating online-first, offering cosmetics, skincare, and supplements with counter-brand quality and accessible pricing.",
|
||||||
|
vision: "To be recognized for innovative, high-quality yet affordable products that meet customer needs while operating with good governance.",
|
||||||
|
mission: "Create and deliver innovative products at reasonable cost from Thai and international suppliers, ensuring top product quality and excellent customer service."
|
||||||
|
};
|
||||||
|
|
||||||
|
export const founders: Founder[] = [
|
||||||
|
{
|
||||||
|
name: "Ms. Kratae Boonyaleung",
|
||||||
|
role: "Founder",
|
||||||
|
bio: "Born in Lampang, she won multiple Muay Thai and singing accolades, later becoming a popular Thai singer. She brings creativity and brand vision, aiming to make Kathy Cosmetics globally recognized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Mr. Jirateep \"Toshi\" Panthi",
|
||||||
|
role: "Co‑Founder",
|
||||||
|
bio: "World Hip‑Hop Dance Champion and Thailand Ballroom champion. Former 316 Boy Band trainee. He choreographed for Ms. Kratae and co‑built the brand’s product strategy and operations."
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export const milestones: Milestone[] = [
|
||||||
|
{ year: 2019, items: ["Company established", "Launched 'Kate’' supplement for skin glow"] },
|
||||||
|
{ year: 2020, items: ["Launched 'Kate’ Detox' for weight control & detox"] },
|
||||||
|
{ year: 2021, items: ["AMREZ Factory opened (Chiang Mai)", "First cosmetic '3B Cream Gold' launched", "Follow‑ups: Lip Golden, Lip Duo, Lip Minimatte"] },
|
||||||
|
{ year: 2023, items: ["AMREZ logo improved", "On Stage Powder launched", "Jelly Biotox (pre/probiotic) launched", "STARFACE (blush+contour+highlight) launched", "Established KATHY LABZ & KATHY SKIN", "Lip Juicy, Lip Glaze, Lip Light Minimatte V2, Lip Duo (new packaging)", "KARISTA, LAVIESTE, 4D Placenta Serum, Serum in Oil, Sunscreen, Lash & Brow Serum, Cleansing Oil"] },
|
||||||
|
{ year: 2024, items: ["Good Morning Powder (first light facial puffed powder)", "Women Probiotics (pre/probiotic blend)"] },
|
||||||
|
{ year: 2025, items: ["Lip Trio On Stage (Thailand’s first 3‑color lipstick, upcoming)"] }
|
||||||
|
];
|
||||||
|
|
||||||
|
export const kpis: KPI[] = [
|
||||||
|
{ year: 2019, salesMillionBaht: 12.2 },
|
||||||
|
{ year: 2020, salesMillionBaht: 78.9 },
|
||||||
|
{ year: 2021, salesMillionBaht: 157.6 },
|
||||||
|
{ year: 2022, salesMillionBaht: 539.9 },
|
||||||
|
{ year: 2023, salesMillionBaht: 700.8 },
|
||||||
|
{ year: 2024, salesMillionBaht: 485, note: "Management & strategy shift; profit +2.5%" },
|
||||||
|
{ year: 2025, salesMillionBaht: 1000 }
|
||||||
|
];
|
||||||
|
|
||||||
|
export const channels: ChannelGroup[] = [
|
||||||
|
{ name: "E‑commerce & Marketplace", items: ["Facebook", "LINE", "TikTok", "Shopee", "Lazada"] },
|
||||||
|
{ name: "Live Streaming", items: ["In‑house live", "MCN live‑streaming"] },
|
||||||
|
{ name: "Offline Retail", items: ["EVEANDBOY", "Beautium", "KIS", "Konvy (online & offline)"] },
|
||||||
|
{ name: "Convenience & Drug Stores", items: ["7‑Eleven", "Watsons", "Chain drug stores"] },
|
||||||
|
{ name: "Traditional Stores", items: ["Independent retailers"] }
|
||||||
|
];
|
||||||
|
|
||||||
|
export const groupCompanies: Company[] = [
|
||||||
|
{ name: "Amrez Co., Ltd.", focus: "Distributor of cosmetics, supplements, skincare" },
|
||||||
|
{ name: "Amerz Co., Ltd.", focus: "Manufacturing unit for cosmetics" },
|
||||||
|
{ name: "KT Entertainment Co., Ltd.", focus: "Concerts, shows, production house" },
|
||||||
|
{ name: "Kathy Labz Co., Ltd.", focus: "Owner/developer of supplements & skincare" },
|
||||||
|
{ name: "Mataranee Co., Ltd.", focus: "Belief/spiritual products" },
|
||||||
|
{ name: "KT Kids Co., Ltd.", focus: "Pet products business" },
|
||||||
|
{ name: "KT Trading", focus: "Local & international general trading" }
|
||||||
|
];
|
||||||
|
|
||||||
|
export const products: Product[] = [
|
||||||
|
{ category: "Lip", items: ["Lip Duo (Matte & Shine Fix)", "Lip Juicy (tint)", "Lip Glaze (oil treatment)", "Golden HYA Lip Serum", "Lip Trio (upcoming)"] },
|
||||||
|
{ category: "Face / Makeup", items: ["3B Cream Gold", "3B Cream Matte", "Onstage Perfect Skin Powder", "STARFACE Pro Makeup", "Fix Glow", "Makeup Remover"] },
|
||||||
|
{ category: "Eye & Brow", items: ["Dolly Eye Stick", "Superslim 2B Brow", "3B Brow", "4D Brow Lift", "Super Sharp Eyeliner", "Waterproof Gel Liner"] },
|
||||||
|
{ category: "Accessories", items: ["Lip Brush", "Mini Powder Brush", "Large Powder Brush", "Body Brush"] },
|
||||||
|
{ category: "Hair & Body", items: ["Hair Shadow Stick", "Body Oil"] },
|
||||||
|
{ category: "Food Supplement", items: ["KARISTA", "LAVIESTE", "Biotox Jelly", "Women Probiotics (upcoming)"] },
|
||||||
|
{ category: "Skincare", items: ["4D Placenta Serum", "Hydrating 4D HYA Oil in Serum", "HYA Aqua Sunscreen SPF50+ PA++++", "Lash & Brow Booster Serum", "Cleansing Oil", "Bright Up Underarm & Body Cream", "Bright Secret Whitening Underarm Cream"] }
|
||||||
|
];
|
||||||
|
|
||||||
|
export const futurePlans: FuturePlan[] = [
|
||||||
|
{ title: "Export Business", details: "China, India, Dubai" },
|
||||||
|
{ title: "Global Artist", details: "Elevate Ms. Kratae internationally" },
|
||||||
|
{ title: "Fulfillment & Warehouse Services" },
|
||||||
|
{ title: "Belief‑based Business (Matarenee)" },
|
||||||
|
{ title: "School of Dance" },
|
||||||
|
{ title: "School of Live Streaming & Affiliate Marketing" },
|
||||||
|
{ title: "Multinational Networking" },
|
||||||
|
{ title: "AI‑Assisted Marketing Services" },
|
||||||
|
{ title: "Real Estate Ventures" },
|
||||||
|
{ title: "International Trading (Hong Kong Office)" },
|
||||||
|
{ title: "Holding Company Formation" }
|
||||||
|
];
|
||||||
Reference in New Issue
Block a user