10 Commits

Author SHA1 Message Date
8f68d40397 Merge version_4 into main
Merge version_4 into main
2026-06-03 12:09:43 +00:00
13f7ade5fc Update src/app/page.tsx 2026-06-03 12:09:37 +00:00
2aa84b7576 Merge version_3 into main
Merge version_3 into main
2026-06-03 12:05:11 +00:00
486122a6d5 Update src/app/styles/variables.css 2026-06-03 12:05:05 +00:00
6726b2494a Update src/app/styles/base.css 2026-06-03 12:05:05 +00:00
2eab5beb00 Update src/app/page.tsx 2026-06-03 12:05:04 +00:00
ecaf7c1c97 Update src/app/layout.tsx 2026-06-03 12:05:04 +00:00
3226bc44eb Merge version_2 into main
Merge version_2 into main
2026-06-03 11:58:32 +00:00
2cd8dcff34 Update src/app/page.tsx 2026-06-03 11:58:29 +00:00
9db8bae460 Merge version_1 into main
Merge version_1 into main
2026-06-03 11:55:02 +00:00
4 changed files with 52 additions and 59 deletions

View File

@@ -1,13 +1,13 @@
import type { Metadata } from "next"; import type { Metadata } from "next";
import { Halant } from "next/font/google";
import { Inter } from "next/font/google"; import { Inter } from "next/font/google";
import "./globals.css"; import "./globals.css";
import "@/lib/gsap-setup"; import "@/lib/gsap-setup";
import { ServiceWrapper } from "@/components/ServiceWrapper"; 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 { Manrope } from "next/font/google";
import { DM_Sans } from "next/font/google"; import { Libre_Baskerville } from "next/font/google";
@@ -16,23 +16,15 @@ export const metadata: Metadata = {
description: 'Experience premium haircuts, beard trims, and wet shaves at Nordkrone Barbershop. Blending Scandinavian design with timeless grooming artistry in Stockholm.', description: 'Experience premium haircuts, beard trims, and wet shaves at Nordkrone Barbershop. Blending Scandinavian design with timeless grooming artistry in Stockholm.',
keywords: ["barbershop, luxury, grooming, haircut, beard trim, wet shave, Stockholm, premium, Scandinavian, style"], keywords: ["barbershop, luxury, grooming, haircut, beard trim, wet shave, Stockholm, premium, Scandinavian, style"],
openGraph: { openGraph: {
"title": "Nordkrone Barbershop | Luxury Grooming & Style", "title": "Nordkrone Barbershop | Luxury Grooming & Style", "description": "Experience premium haircuts, beard trims, and wet shaves at Nordkrone Barbershop. Blending Scandinavian design with timeless grooming artistry in Stockholm.", "url": "https://www.nordkrone.com", "siteName": "Nordkrone Barbershop", "images": [
"description": "Experience premium haircuts, beard trims, and wet shaves at Nordkrone Barbershop. Blending Scandinavian design with timeless grooming artistry in Stockholm.",
"url": "https://www.nordkrone.com",
"siteName": "Nordkrone Barbershop",
"images": [
{ {
"url": "http://img.b2bpic.net/free-photo/sensual-glamour-portrait-beautiful-woman-model-with-fresh-daily-makeup-with-dark-red-lips-color-clean-healthy-skin-face-studio-lights_158538-14326.jpg", "url": "http://img.b2bpic.net/free-photo/sensual-glamour-portrait-beautiful-woman-model-with-fresh-daily-makeup-with-dark-red-lips-color-clean-healthy-skin-face-studio-lights_158538-14326.jpg", "alt": "Luxurious barbershop interior"
"alt": "Luxurious barbershop interior"
} }
], ],
"type": "website" "type": "website"
}, },
twitter: { twitter: {
"card": "summary_large_image", "card": "summary_large_image", "title": "Nordkrone Barbershop | Luxury Grooming & Style", "description": "Experience premium haircuts, beard trims, and wet shaves at Nordkrone Barbershop. Blending Scandinavian design with timeless grooming artistry in Stockholm.", "images": [
"title": "Nordkrone Barbershop | Luxury Grooming & Style",
"description": "Experience premium haircuts, beard trims, and wet shaves at Nordkrone Barbershop. Blending Scandinavian design with timeless grooming artistry in Stockholm.",
"images": [
"http://img.b2bpic.net/free-photo/sensual-glamour-portrait-beautiful-woman-model-with-fresh-daily-makeup-with-dark-red-lips-color-clean-healthy-skin-face-studio-lights_158538-14326.jpg" "http://img.b2bpic.net/free-photo/sensual-glamour-portrait-beautiful-woman-model-with-fresh-daily-makeup-with-dark-red-lips-color-clean-healthy-skin-face-studio-lights_158538-14326.jpg"
] ]
}, },
@@ -42,13 +34,13 @@ export const metadata: Metadata = {
}, },
}; };
const manrope = Manrope({ const libreBaskerville = Libre_Baskerville({
variable: "--font-manrope", variable: "--font-libre-baskerville", subsets: ["latin"],
subsets: ["latin"], weight: ["400", "700"],
}); });
const dmSans = DM_Sans({
variable: "--font-dm-sans", const inter = Inter({
subsets: ["latin"], variable: "--font-inter", subsets: ["latin"],
}); });
export default function RootLayout({ export default function RootLayout({
@@ -59,7 +51,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${manrope.variable} ${dmSans.variable} antialiased`}> <body className={`${libreBaskerville.variable} ${inter.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script
@@ -71,4 +63,4 @@ export default function RootLayout({
</ServiceWrapper> </ServiceWrapper>
</html> </html>
); );
} }

View File

@@ -2,7 +2,7 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react"; import ReactLenis from "lenis/react";
import ContactCTA from '@/components/sections/contact/ContactCTA'; import ContactSplit from '@/components/sections/contact/ContactSplit';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia'; import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven'; import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';
import FooterBase from '@/components/sections/footer/FooterBase'; import FooterBase from '@/components/sections/footer/FooterBase';
@@ -62,7 +62,7 @@ export default function LandingPage() {
background={{ background={{
variant: "radial-gradient"}} variant: "radial-gradient"}}
logoText="Nordkrone Barbershop" logoText="Nordkrone Barbershop"
description="The Art of Refined Grooming. Experience the Nordkrone difference, where tradition meets modern elegance. \\n\\n4.9 ★ Rating across 500+ reviews | 3,200+ Satisfied Clients | 15+ Years of Craftsmanship." description="The Art of Refined Grooming. Experience the Nordkrone difference, where tradition meets modern elegance. \n\n4.9 ★ Rating across 500+ reviews | 3,200+ Satisfied Clients | 15+ Years of Craftsmanship."
buttons={[ buttons={[
{ {
text: "Book an Appointment", href: "#contact"}, text: "Book an Appointment", href: "#contact"},
@@ -117,17 +117,17 @@ export default function LandingPage() {
useInvertedBackground={true} useInvertedBackground={true}
features={[ features={[
{ {
title: "Classic Haircut", description: "Precision cut and style with a hot towel finish. $60 (45 min)", imageSrc: "http://img.b2bpic.net/free-photo/male-self-care-setting-still-life_23-2150326549.jpg", imageAlt: "Classic haircut tools"}, title: "Classic Haircut", description: "Precision cut and style with a hot towel finish. 600 NOK (45 min)", imageSrc: "http://img.b2bpic.net/free-photo/male-self-care-setting-still-life_23-2150326549.jpg", imageAlt: "Classic haircut tools"},
{ {
title: "Beard Trim & Shape", description: "Expert beard grooming, line-up, and conditioning. $40 (30 min)", imageSrc: "http://img.b2bpic.net/free-photo/professional-hairdresser-modeling-beard-barbershop-close-up-photo_613910-18583.jpg", imageAlt: "Man getting beard trim"}, title: "Beard Trim & Shape", description: "Expert beard grooming, line-up, and conditioning. 400 NOK (30 min)", imageSrc: "http://img.b2bpic.net/free-photo/professional-hairdresser-modeling-beard-barbershop-close-up-photo_613910-18583.jpg", imageAlt: "Man getting beard trim"},
{ {
title: "Royal Wet Shave", description: "Traditional straight razor shave, hot lather, and facial massage. $75 (60 min)", imageSrc: "http://img.b2bpic.net/free-photo/razor-shaving-brush-folded-napkin-near-wooden-bowl-with-foam-against-blue-background_23-2148088325.jpg", imageAlt: "Traditional wet shave"}, title: "Royal Wet Shave", description: "Traditional straight razor shave, hot lather, and facial massage. 750 NOK (60 min)", imageSrc: "http://img.b2bpic.net/free-photo/razor-shaving-brush-folded-napkin-near-wooden-bowl-with-foam-against-blue-background_23-2148088325.jpg", imageAlt: "Traditional wet shave"},
{ {
title: "Hair & Beard Combo", description: "Full haircut and comprehensive beard service. $95 (75 min)", imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-shaving-his-beard_23-2148506239.jpg", imageAlt: "Hair and beard grooming"}, title: "Hair & Beard Combo", description: "Full haircut and comprehensive beard service. 950 NOK (75 min)", imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-shaving-his-beard_23-2148506239.jpg", imageAlt: "Hair and beard grooming"},
{ {
title: "Youth Haircut", description: "Stylish cuts for our younger clientele (under 12). $45 (30 min)", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-man-with-backpack-his-back_158595-3453.jpg", imageAlt: "Youth haircut"}, title: "Youth Haircut", description: "Stylish cuts for our younger clientele (under 12). 450 NOK (30 min)", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-man-with-backpack-his-back_158595-3453.jpg", imageAlt: "Youth haircut"},
{ {
title: "Head Shave", description: "Close, clean head shave with a soothing finish. $65 (45 min)", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-with-beard-closed-eyes-barbershop-closeup_1153-9484.jpg", imageAlt: "Man getting head shave"}, title: "Head Shave", description: "Close, clean head shave with a soothing finish. 650 NOK (45 min)", imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-with-beard-closed-eyes-barbershop-closeup_1153-9484.jpg", imageAlt: "Man getting head shave"},
]} ]}
title="Our Signature Services" title="Our Signature Services"
description="Discover our range of meticulously crafted grooming experiences." description="Discover our range of meticulously crafted grooming experiences."
@@ -141,19 +141,19 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
plans={[ plans={[
{ {
id: "cut", title: "The Crown Cut", price: "$60", period: "/ visit", features: [ id: "cut", title: "The Crown Cut", price: "600 NOK", period: "/ visit", features: [
"Precision Cut & Style", "Hot Towel Finish", "Neck Shave", "Hair Wash & Conditioning"], "Precision Cut & Style", "Hot Towel Finish", "Neck Shave", "Hair Wash & Conditioning"],
button: { button: {
text: "Book Now", href: "#contact"}, text: "Book Now", href: "#contact"},
imageSrc: "http://img.b2bpic.net/free-photo/top-view-male-self-care-setting-still-life_23-2150326550.jpg", imageAlt: "The Crown Cut service"}, imageSrc: "http://img.b2bpic.net/free-photo/top-view-male-self-care-setting-still-life_23-2150326550.jpg", imageAlt: "The Crown Cut service"},
{ {
id: "combo", title: "The Royal Treatment", price: "$95", period: "/ visit", features: [ id: "combo", title: "The Royal Treatment", price: "950 NOK", period: "/ visit", features: [
"Includes The Crown Cut", "Expert Beard Trim", "Hot Lather & Straight Razor Line Up", "Facial Steaming & Moisturize"], "Includes The Crown Cut", "Expert Beard Trim", "Hot Lather & Straight Razor Line Up", "Facial Steaming & Moisturize"],
button: { button: {
text: "Book Now", href: "#contact"}, text: "Book Now", href: "#contact"},
imageSrc: "http://img.b2bpic.net/free-photo/professional-barber-with-shave-brush-old-male-client_23-2148181929.jpg", imageAlt: "The Royal Treatment service"}, imageSrc: "http://img.b2bpic.net/free-photo/professional-barber-with-shave-brush-old-male-client_23-2148181929.jpg", imageAlt: "The Royal Treatment service"},
{ {
id: "shave", title: "Nordic Wet Shave", price: "$75", period: "/ visit", features: [ id: "shave", title: "Nordic Wet Shave", price: "750 NOK", period: "/ visit", features: [
"Traditional Straight Razor Shave", "Pre-Shave Oil Application", "Hot Lather & Cold Towel", "Post-Shave Balm"], "Traditional Straight Razor Shave", "Pre-Shave Oil Application", "Hot Lather & Cold Towel", "Post-Shave Balm"],
button: { button: {
text: "Book Now", href: "#contact"}, text: "Book Now", href: "#contact"},
@@ -237,19 +237,20 @@ export default function LandingPage() {
</div> </div>
<div id="contact" data-section="contact"> <div id="contact" data-section="contact">
<ContactCTA <ContactSplit
useInvertedBackground={false} tag="Book Your Visit"
title="Schedule Your Premium Grooming Experience"
description="Connect with us for your next premium grooming experience. We look forward to welcoming you!\n\n**Address:** Bogstadveien 24, 0355 Oslo\n**Phone:** +47 22 44 88 00\n**Email:** booking@nordkrone.no\n**Hours:** Mon-Fri: 9AM-7PM, Sat: 10AM-6PM"
background={{ background={{
variant: "sparkles-gradient"}} variant: "sparkles-gradient"}}
tag="Connect with Us" useInvertedBackground={false}
title="Your Next Appointment Awaits" imageSrc="http://img.b2bpic.net/free-photo/stylish-barbershop-interior-with-vintage-chairs_23-2148496417.jpg"
description="Visit us, call us, or book your next premium grooming experience using the form below. We look forward to welcoming you.\\n\\n**Address:** Storgatan 1, 111 45 Stockholm\\n**Hours:** Mon-Fri: 9AM-7PM, Sat: 10AM-6PM\\n**Booking:** Use the form for service, barber, date & time preference." imageAlt="Stylish barbershop interior"
buttons={[ mediaAnimation="opacity"
{ mediaPosition="right"
text: "Call Us: +123 456 7890", href: "tel:+1234567890"}, inputPlaceholder="Your Name, Email, and Preferred Service"
{ buttonText="Submit Booking Request"
text: "Get Directions", href: "https://maps.google.com/?q=Nordkrone+Barbershop"}, onSubmit={(email: string) => console.log('Booking inquiry submitted:', email)}
]}
/> />
</div> </div>
@@ -283,11 +284,11 @@ export default function LandingPage() {
{ {
label: "Book Now", href: "#contact"}, label: "Book Now", href: "#contact"},
{ {
label: "Storgatan 1, Stockholm", href: "https://maps.google.com/?q=Nordkrone+Barbershop"}, label: "Bogstadveien 24, 0355 Oslo", href: "https://maps.google.com/?q=Bogstadveien%2024%2C%200355%20Oslo"},
{ {
label: "+123 456 7890", href: "tel:+1234567890"}, label: "+47 22 44 88 00", href: "tel:+4722448800"},
{ {
label: "info@nordkrone.com", href: "mailto:info@nordkrone.com"}, label: "booking@nordkrone.no", href: "mailto:booking@nordkrone.no"},
], ],
}, },
]} ]}
@@ -298,4 +299,4 @@ export default function LandingPage() {
</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-dm-sans), sans-serif; font-family: var(--font-var(--font-libre-baskerville), serif), 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-manrope), sans-serif; font-family: var(--font-var(--font-libre-baskerville), serif), sans-serif;
} }

View File

@@ -10,15 +10,15 @@
--accent: #ffffff; --accent: #ffffff;
--background-accent: #ffffff; */ --background-accent: #ffffff; */
--background: #0a0a0a; --background: #0D0D0D;
--card: #1a1a1a; --card: #1A1A1A;
--foreground: #f5f5f5; --foreground: #F0F0F0;
--primary-cta: #ffdf7d; --primary-cta: #B49A67;
--primary-cta-text: #0a0a0a; --primary-cta-text: #000000;
--secondary-cta: #1a1a1a; --secondary-cta: #3A3A3A;
--secondary-cta-text: #ffffff; --secondary-cta-text: #1a1a1a;
--accent: #b8860b; --accent: #D4AF37;
--background-accent: #8b6914; --background-accent: #242424;
/* 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);