21 Commits

Author SHA1 Message Date
2267eff784 Update src/app/page.tsx 2026-04-05 05:17:05 +00:00
555578c127 Merge version_6 into main
Merge version_6 into main
2026-04-05 05:11:47 +00:00
45e14c3f46 Update src/app/styles/base.css 2026-04-05 05:11:44 +00:00
935006000b Update src/app/page.tsx 2026-04-05 05:11:43 +00:00
5435f49fbb Update src/app/layout.tsx 2026-04-05 05:11:43 +00:00
37d3b5ac45 Merge version_5 into main
Merge version_5 into main
2026-04-05 04:30:04 +00:00
b46d9b1cfb Update src/app/styles/base.css 2026-04-05 04:30:01 +00:00
03c5a859a0 Update src/app/page.tsx 2026-04-05 04:30:00 +00:00
234df95761 Merge version_4 into main
Merge version_4 into main
2026-04-05 04:23:01 +00:00
7d4372fd2b Update src/app/styles/variables.css 2026-04-05 04:22:58 +00:00
9d9c9d1d4a Update src/app/page.tsx 2026-04-05 04:22:57 +00:00
13353ecc05 Merge version_3 into main
Merge version_3 into main
2026-04-04 17:15:14 +00:00
e2ac9ce464 Update src/app/page.tsx 2026-04-04 17:15:08 +00:00
99a7aa594e Merge version_2 into main
Merge version_2 into main
2026-04-04 17:05:24 +00:00
c298e8b7db Update src/app/styles/variables.css 2026-04-04 17:05:21 +00:00
196936c960 Update src/app/page.tsx 2026-04-04 17:05:21 +00:00
563a8d10b4 Merge version_1 into main
Merge version_1 into main
2026-04-04 17:01:48 +00:00
f19b405840 Merge version_1 into main
Merge version_1 into main
2026-04-04 17:01:24 +00:00
8eddb6b335 Merge version_1 into main
Merge version_1 into main
2026-04-04 17:00:53 +00:00
a5571c92e2 Merge version_1 into main
Merge version_1 into main
2026-04-04 17:00:23 +00:00
b225fc078b Merge version_1 into main
Merge version_1 into main
2026-04-04 16:59:56 +00:00
4 changed files with 59 additions and 54 deletions

View File

@@ -7,6 +7,7 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag"; import Tag from "@/tag/Tag";
import { getVisualEditScript } from "@/utils/visual-edit-script"; import { getVisualEditScript } from "@/utils/visual-edit-script";
import { DM_Sans } from "next/font/google"; import { DM_Sans } from "next/font/google";
import { Cormorant_Garamond, Montserrat } from "next/font/google";
@@ -20,13 +21,14 @@ export const metadata: Metadata = {
}, },
}; };
const dmSans = DM_Sans({
variable: "--font-dm-sans", const cormorantGaramond = Cormorant_Garamond({
subsets: ["latin"], variable: "--font-cormorant", subsets: ["latin"],
weight: ["700"],
}); });
const inter = Inter({ const montserrat = Montserrat({
variable: "--font-inter", variable: "--font-montserrat", subsets: ["latin"],
subsets: ["latin"], weight: ["500"],
}); });
export default function RootLayout({ export default function RootLayout({
@@ -37,7 +39,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${dmSans.variable} ${inter.variable} antialiased`}> <body className={`${cormorantGaramond.variable} ${montserrat.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

View File

@@ -18,72 +18,80 @@ export default function LandingPage() {
borderRadius="pill" borderRadius="pill"
contentWidth="small" contentWidth="small"
sizing="largeSmallSizeMediumTitles" sizing="largeSmallSizeMediumTitles"
background="grid" background="none"
cardStyle="gradient-mesh" cardStyle="outline"
primaryButtonStyle="flat" primaryButtonStyle="flat"
secondaryButtonStyle="solid" secondaryButtonStyle="solid"
headingFontWeight="extrabold" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav" className="py-10">
<NavbarStyleCentered <NavbarStyleCentered
navItems={[ navItems={[
{ name: "Archive", id: "archive" }, { name: "THE ESTATE", id: "archive" },
{ name: "Manifesto", id: "manifesto" }, { name: "THE MANIFESTO", id: "manifesto" },
]} ]}
brandName="ESTATE" brandName="ESTATE"
className="tracking-[0.05em] uppercase"
/> />
</div> </div>
<div id="hero" data-section="hero"> <div id="hero" data-section="hero" className="py-10">
<HeroBillboardRotatedCarousel <HeroBillboardRotatedCarousel
background={{ variant: "rotated-rays-static" }} background={{ variant: "plain" }}
title="THE WINDOW TO EUROPE" title="THE WINDOW TO EUROPE"
description="Access granted to the authorized selection. ESTATE is the preservation of rock and couture." description="Request Access to the authorized selection. ESTATE is the preservation of rock and couture."
carouselItems={[ carouselItems={[
{ id: "1", imageSrc: "http://img.b2bpic.net/free-photo/woman-lifestyle-fashion-shoot_53876-24683.jpg", imageAlt: "Window to Europe" }, { id: "1", imageSrc: "http://img.b2bpic.net/free-photo/woman-lifestyle-fashion-shoot_53876-24683.jpg?q=80&w=800&blur=5&filter=sepia", imageAlt: "Architectural detail" },
{ id: "2", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-portrait-with-overexposed-moving-style_23-2149495261.jpg?_wi=1", imageAlt: "European Archive" }, { id: "2", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-portrait-with-overexposed-moving-style_23-2149495261.jpg?_wi=1&q=80&w=800&blur=5&filter=grayscale", imageAlt: "Grainy Grisha" },
{ id: "3", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-punk-model-posing-studio_23-2149267474.jpg", imageAlt: "The Vision" }, { id: "3", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-punk-model-posing-studio_23-2149267474.jpg?q=80&w=800&blur=5&filter=sepia", imageAlt: "Sepia archive" },
{ id: "4", imageSrc: "http://img.b2bpic.net/free-photo/view-vintage-camera_23-2150315163.jpg", imageAlt: "Estate Design" }, { id: "4", imageSrc: "http://img.b2bpic.net/free-photo/view-vintage-camera_23-2150315163.jpg?q=80&w=800&blur=5&filter=grayscale", imageAlt: "Architectural detail" },
{ id: "5", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-holding-old-mirror_23-2149640689.jpg", imageAlt: "Signature Look" }, { id: "5", imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-holding-old-mirror_23-2149640689.jpg?q=80&w=800&blur=5&filter=sepia", imageAlt: "Grainy Grisha" },
{ id: "6", imageSrc: "http://img.b2bpic.net/free-photo/rough-concrete-wall-surface_23-2148413267.jpg", imageAlt: "Luxury Detail" }, { id: "6", imageSrc: "http://img.b2bpic.net/free-photo/rough-concrete-wall-surface_23-2148413267.jpg?q=80&w=800&blur=5&filter=grayscale", imageAlt: "Sepia architectural" },
]} ]}
titleClassName="tracking-[-0.02em]"
/> />
</div> </div>
<div id="manifesto" data-section="manifesto"> <div id="manifesto" data-section="manifesto" className="py-20">
<TextAbout <TextAbout
useInvertedBackground={false} useInvertedBackground={false}
tag="MANIFESTO" tag="MANIFESTO"
title="THE VISION OF THE GRISHA" title="THE VISION OF THE GRISHA"
titleClassName="tracking-[-0.02em]"
/> />
</div> </div>
<div id="archive" data-section="archive"> <div id="archive" data-section="archive" className="py-20">
<ProductCardOne <ProductCardOne
textboxLayout="split-description" textboxLayout="split-description"
gridVariant="three-columns-all-equal-width" gridVariant="three-columns-all-equal-width"
animationType="slide-up" animationType="blur-reveal"
useInvertedBackground={false} useInvertedBackground={false}
cardClassName="border border-[#8C5638] overflow-hidden"
imageClassName="filter sepia-50 brightness-75 scale-110"
products={[ products={[
{ id: "001", name: "ITEM #001", price: "ARCHIVE", imageSrc: "http://img.b2bpic.net/free-photo/close-up-girl-with-vintage-backpack_23-2148752408.jpg" }, { id: "001", name: "ITEM #001", price: "THE ESTATE", imageSrc: "http://img.b2bpic.net/free-photo/close-up-girl-with-vintage-backpack_23-2148752408.jpg" },
{ id: "002", name: "ITEM #002", price: "ARCHIVE", imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-wearing-heels_23-2149741919.jpg" }, { id: "002", name: "ITEM #002", price: "THE ESTATE", imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-wearing-heels_23-2149741919.jpg" },
{ id: "003", name: "ITEM #003", price: "ARCHIVE", imageSrc: "http://img.b2bpic.net/free-photo/button-warm-blue-shirt-macro-shot_169016-23219.jpg" }, { id: "003", name: "ITEM #003", price: "THE ESTATE", imageSrc: "http://img.b2bpic.net/free-photo/button-warm-blue-shirt-macro-shot_169016-23219.jpg" },
]} ]}
title="AUTHORIZED SELECTION" title="THE EVIDENCE"
description="Pieces from the private archive." description="Pieces from the private archive."
textBoxTitleClassName="tracking-[-0.02em]"
/> />
</div> </div>
<div id="faq" data-section="faq"> <div id="faq" data-section="faq" className="py-20">
<FaqSplitMedia <FaqSplitMedia
textboxLayout="default" textboxLayout="split-actions"
useInvertedBackground={false} useInvertedBackground={false}
title="INQUIRIES" title="INQUIRIES"
description="Standard protocol for new members." description="Standard protocol for new members."
imageSrc="http://img.b2bpic.net/free-photo/young-woman-portrait-with-overexposed-moving-style_23-2149495261.jpg?_wi=2" imageSrc="http://img.b2bpic.net/free-photo/young-woman-portrait-with-overexposed-moving-style_23-2149495261.jpg?_wi=2"
mediaAnimation="blur-reveal" mediaAnimation="blur-reveal"
faqsAnimation="slide-up" faqsAnimation="blur-reveal"
buttons={[{ text: "Request Access", href: "/apply" }]}
className="[&_a[href='/apply']]:underline [&_a[href='/apply']]:no-underline [&_a[href='/apply']]:text-inherit [&_a[href='/apply']]:font-normal"
faqs={[ faqs={[
{ id: "q1", title: "How do I access the vault?", content: "Access is currently restricted to invite-only members." }, { id: "q1", title: "How do I access the vault?", content: "Access is currently restricted to invite-only members." },
{ id: "q2", title: "Is the leather ethically sourced?", content: "Every hide is vetted for quality and environmental standards." }, { id: "q2", title: "Is the leather ethically sourced?", content: "Every hide is vetted for quality and environmental standards." },
@@ -91,10 +99,11 @@ export default function LandingPage() {
{ id: "q4", title: "Are these pieces limited?", content: "Yes, every item in our archive is produced in strictly limited runs." }, { id: "q4", title: "Are these pieces limited?", content: "Yes, every item in our archive is produced in strictly limited runs." },
{ id: "q5", title: "Can I visit the boutique?", content: "Boutique appointments are handled via private request." }, { id: "q5", title: "Can I visit the boutique?", content: "Boutique appointments are handled via private request." },
]} ]}
textBoxTitleClassName="tracking-[-0.02em]"
/> />
</div> </div>
<div id="legal" data-section="legal"> <div id="legal" data-section="legal" className="py-20" style={{ backgroundColor: '#2B231F', color: '#EAE7E1', borderTop: '1px solid #8C5638', borderBottom: '1px solid #8C5638' }}>
<LegalSection <LegalSection
layout="section" layout="section"
title="TERMS OF EXCLUSIVITY" title="TERMS OF EXCLUSIVITY"
@@ -102,29 +111,23 @@ export default function LandingPage() {
{ heading: "Privacy Policy", content: [{ type: "paragraph", text: "Your data is handled with the same reverence as our craft." }] }, { heading: "Privacy Policy", content: [{ type: "paragraph", text: "Your data is handled with the same reverence as our craft." }] },
{ heading: "Membership Terms", content: [{ type: "paragraph", text: "No sharing of credentials; strict adherence to the Grisha conduct." }] }, { heading: "Membership Terms", content: [{ type: "paragraph", text: "No sharing of credentials; strict adherence to the Grisha conduct." }] },
]} ]}
titleClassName="tracking-[-0.02em]"
/> />
</div> </div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer" className="py-20" style={{ backgroundColor: '#2B231F', color: '#EAE7E1' }}>
<FooterBaseCard <FooterBaseCard
logoText="ESTATE" logoText="ESTATE"
copyrightText="© 2025 ESTATE. All rights reserved. ESTATE is a registered trademark."
columns={[ columns={[
{ { title: "THE ESTATE", items: [{ label: "INSTAGRAM", href: "#" }, { label: "VIMEO", href: "#" }] },
title: "ARCHIVE", items: [ { title: "IDENTITY", items: [{ label: "FOUNDED BY THE GRISHA", href: "#" }, { label: "PHILOSOPHY", href: "#" }] },
{ label: "Instagram", href: "https://instagram.com" },
{ label: "Vimeo", href: "#" },
],
},
{
title: "IDENTITY", items: [
{ label: "Founded by THE GRISHA", href: "#" },
{ label: "Philosophy", href: "#" },
],
},
]} ]}
columnTitleClassName="tracking-[0.05em] uppercase opacity-70"
columnItemClassName="tracking-[0.05em] uppercase"
/> />
</div> </div>
</ReactLenis> </ReactLenis>
</ThemeProvider> </ThemeProvider>
); );
} }

View File

@@ -11,7 +11,7 @@ html {
body { body {
background-color: var(--background); background-color: var(--background);
color: var(--foreground); color: var(--foreground);
font-family: var(--font-inter), sans-serif; font-family: var(--font-montserrat), sans-serif;
position: relative; position: relative;
min-height: 100vh; min-height: 100vh;
overscroll-behavior: none; overscroll-behavior: none;
@@ -24,5 +24,5 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: var(--font-dm-sans), sans-serif; font-family: var(--font-cormorant), serif;
} }

View File

@@ -10,15 +10,15 @@
--accent: #ffffff; --accent: #ffffff;
--background-accent: #ffffff; */ --background-accent: #ffffff; */
--background: #EAE7E1; --background: #2B231F;
--card: #f3f0ea; --card: #2B231F;
--foreground: #2B231F; --foreground: #EAE7E1;
--primary-cta: #2B231F; --primary-cta: #8C5638;
--primary-cta-text: #EAE7E1; --primary-cta-text: #EAE7E1;
--secondary-cta: #EAE7E1; --secondary-cta: #EAE7E1;
--secondary-cta-text: #2B231F; --secondary-cta-text: #2B231F;
--accent: #8C5638; --accent: #8C5638;
--background-accent: #EAE7E1; --background-accent: #3B332F;
/* text sizing - set by ThemeProvider */ /* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);