Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d16b4b791f | |||
| 41618c9bc5 | |||
| bb177b7d10 | |||
| d647d292ff | |||
| c75ba484e1 | |||
| 449413b96d | |||
| 1093a8308b | |||
| 12770b0ccc | |||
| 00fbb6983d | |||
| 23c51ab060 | |||
| fa0c2d1096 | |||
| 764a398356 | |||
| 71bf474d69 | |||
| 0f302cbf5f | |||
| b466c9e65f | |||
| 476eac78dd | |||
| aa3d5a3d76 | |||
| 8313a676d2 | |||
| c4f4932fb7 | |||
| a103c39ef9 | |||
| b49e234e9a | |||
| 4a9d7dda21 | |||
| e837a437f2 | |||
| fe7dfecc44 | |||
| b3239e0d25 | |||
| 2508ebfb12 | |||
| 38ba9efff6 | |||
| db24c79477 | |||
| 7900afcbe2 |
@@ -14,7 +14,7 @@ export default function BlogPage() {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -69,4 +69,4 @@ export default function BlogPage() {
|
|||||||
</ReactLenis>
|
</ReactLenis>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,9 @@ export default function RootLayout({
|
|||||||
' background-color: #4d96ff05 !important;' +
|
' background-color: #4d96ff05 !important;' +
|
||||||
'}' +
|
'}' +
|
||||||
'img.webild-hover,' +
|
'img.webild-hover,' +
|
||||||
'img.webild-selected {' +
|
'img.webild-selected,' +
|
||||||
|
'video.webild-hover,' +
|
||||||
|
'video.webild-selected {' +
|
||||||
' outline-offset: 2px !important;' +
|
' outline-offset: 2px !important;' +
|
||||||
'}' +
|
'}' +
|
||||||
'.webild-element-type-label {' +
|
'.webild-element-type-label {' +
|
||||||
@@ -162,6 +164,10 @@ export default function RootLayout({
|
|||||||
return 'Image';
|
return 'Image';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tagName === 'video') {
|
||||||
|
return 'Video';
|
||||||
|
}
|
||||||
|
|
||||||
const backgroundImage = computedStyle.backgroundImage;
|
const backgroundImage = computedStyle.backgroundImage;
|
||||||
if (backgroundImage && backgroundImage !== 'none') {
|
if (backgroundImage && backgroundImage !== 'none') {
|
||||||
const urlMatch = backgroundImage.match(/url(['"]?([^'")]+)['"]?)/);
|
const urlMatch = backgroundImage.match(/url(['"]?([^'")]+)['"]?)/);
|
||||||
@@ -244,6 +250,38 @@ export default function RootLayout({
|
|||||||
return url;
|
return url;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getMediaTypeFromUrl = (url) => {
|
||||||
|
const videoExts = ['.mp4', '.webm', '.ogg', '.mov', '.avi', '.mkv', '.m4v', '.wmv'];
|
||||||
|
const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg', '.bmp', '.ico', '.tiff', '.avif'];
|
||||||
|
try {
|
||||||
|
const pathname = new URL(url).pathname.toLowerCase();
|
||||||
|
if (videoExts.some(function(ext) { return pathname.endsWith(ext); })) return 'video';
|
||||||
|
if (imageExts.some(function(ext) { return pathname.endsWith(ext); })) return 'image';
|
||||||
|
} catch(e) {}
|
||||||
|
return 'unknown';
|
||||||
|
};
|
||||||
|
|
||||||
|
const swapMediaElement = (oldEl, newTag, newSrc) => {
|
||||||
|
const newEl = document.createElement(newTag);
|
||||||
|
Array.from(oldEl.attributes).forEach(function(attr) {
|
||||||
|
if (attr.name !== 'src' && attr.name !== 'alt' && attr.name !== 'srcset' && attr.name !== 'autoplay' && attr.name !== 'loop' && attr.name !== 'muted' && attr.name !== 'playsinline') {
|
||||||
|
try { newEl.setAttribute(attr.name, attr.value); } catch(e) {}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
newEl.style.cssText = oldEl.style.cssText;
|
||||||
|
if (newTag === 'video') {
|
||||||
|
newEl.setAttribute('autoplay', '');
|
||||||
|
newEl.setAttribute('loop', '');
|
||||||
|
newEl.setAttribute('muted', '');
|
||||||
|
newEl.setAttribute('playsinline', '');
|
||||||
|
}
|
||||||
|
newEl.src = newSrc;
|
||||||
|
if (oldEl.parentNode) {
|
||||||
|
oldEl.parentNode.replaceChild(newEl, oldEl);
|
||||||
|
}
|
||||||
|
return newEl;
|
||||||
|
};
|
||||||
|
|
||||||
const getElementInfo = (element, assignId = false) => {
|
const getElementInfo = (element, assignId = false) => {
|
||||||
const rect = element.getBoundingClientRect();
|
const rect = element.getBoundingClientRect();
|
||||||
const tagName = element.tagName.toLowerCase();
|
const tagName = element.tagName.toLowerCase();
|
||||||
@@ -286,7 +324,18 @@ export default function RootLayout({
|
|||||||
isBackground: false
|
isBackground: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tagName === 'video') {
|
||||||
|
const rawSrc = element.src || element.currentSrc || (element.querySelector('source') && element.querySelector('source').src) || '';
|
||||||
|
const resolvedSrc = extractOriginalUrl(rawSrc);
|
||||||
|
info.imageData = {
|
||||||
|
src: resolvedSrc,
|
||||||
|
alt: element.getAttribute('aria-label') || undefined,
|
||||||
|
isBackground: false,
|
||||||
|
isVideo: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const computedStyle = window.getComputedStyle(element);
|
const computedStyle = window.getComputedStyle(element);
|
||||||
const backgroundImage = computedStyle.backgroundImage;
|
const backgroundImage = computedStyle.backgroundImage;
|
||||||
if (backgroundImage && backgroundImage !== 'none') {
|
if (backgroundImage && backgroundImage !== 'none') {
|
||||||
@@ -334,7 +383,8 @@ export default function RootLayout({
|
|||||||
const tagName = element.tagName?.toLowerCase();
|
const tagName = element.tagName?.toLowerCase();
|
||||||
if (invalidElements.includes(tagName)) return false;
|
if (invalidElements.includes(tagName)) return false;
|
||||||
const isImage = tagName === 'img';
|
const isImage = tagName === 'img';
|
||||||
if (isImage) return true;
|
const isVideo = tagName === 'video';
|
||||||
|
if (isImage || isVideo) return true;
|
||||||
const hasInnerHTML = element.innerHTML && element.innerHTML.trim().length > 0;
|
const hasInnerHTML = element.innerHTML && element.innerHTML.trim().length > 0;
|
||||||
const hasTextContent = element.textContent && element.textContent.trim().length > 0;
|
const hasTextContent = element.textContent && element.textContent.trim().length > 0;
|
||||||
const hasChildren = element.children && element.children.length > 0;
|
const hasChildren = element.children && element.children.length > 0;
|
||||||
@@ -374,7 +424,7 @@ export default function RootLayout({
|
|||||||
node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim().length > 0
|
node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim().length > 0
|
||||||
);
|
);
|
||||||
|
|
||||||
const hasImages = element.tagName === 'IMG' || computedStyle.backgroundImage !== 'none' || element.querySelector('img');
|
const hasImages = element.tagName === 'IMG' || element.tagName === 'VIDEO' || computedStyle.backgroundImage !== 'none' || element.querySelector('img') || element.querySelector('video');
|
||||||
const isInteractive = ['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(element.tagName);
|
const isInteractive = ['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(element.tagName);
|
||||||
const hasFewChildren = element.children.length <= 3;
|
const hasFewChildren = element.children.length <= 3;
|
||||||
const area = rect.width * rect.height;
|
const area = rect.width * rect.height;
|
||||||
@@ -1055,11 +1105,22 @@ export default function RootLayout({
|
|||||||
updateButtonText(element, change.oldValue);
|
updateButtonText(element, change.oldValue);
|
||||||
}
|
}
|
||||||
} else if (change.type === 'replaceImage') {
|
} else if (change.type === 'replaceImage') {
|
||||||
const isBackground = element.tagName.toLowerCase() !== 'img';
|
const revertTag = element.tagName.toLowerCase();
|
||||||
|
const isBackground = revertTag !== 'img' && revertTag !== 'video';
|
||||||
if (isBackground) {
|
if (isBackground) {
|
||||||
element.style.backgroundImage = change.oldValue ? 'url(' + change.oldValue + ')' : '';
|
element.style.backgroundImage = change.oldValue ? 'url(' + change.oldValue + ')' : '';
|
||||||
} else {
|
} else {
|
||||||
element.src = change.oldValue;
|
const oldMediaType = getMediaTypeFromUrl(change.oldValue);
|
||||||
|
if (revertTag === 'video' && oldMediaType === 'image') {
|
||||||
|
swapMediaElement(element, 'img', change.oldValue);
|
||||||
|
} else if (revertTag === 'img' && oldMediaType === 'video') {
|
||||||
|
swapMediaElement(element, 'video', change.oldValue);
|
||||||
|
} else if (revertTag === 'video') {
|
||||||
|
element.src = change.oldValue;
|
||||||
|
element.load();
|
||||||
|
} else {
|
||||||
|
element.src = change.oldValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -1159,7 +1220,7 @@ export default function RootLayout({
|
|||||||
if (!isActive) return;
|
if (!isActive) return;
|
||||||
|
|
||||||
if (e.data.type === 'webild-replace-image') {
|
if (e.data.type === 'webild-replace-image') {
|
||||||
const { selector, newSrc, isBackground } = e.data.data;
|
const { selector, newSrc, isBackground, allowMediaTypeSwap } = e.data.data;
|
||||||
let element = null;
|
let element = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -1190,7 +1251,32 @@ export default function RootLayout({
|
|||||||
replaced = true;
|
replaced = true;
|
||||||
} else if (element.tagName.toLowerCase() === 'img') {
|
} else if (element.tagName.toLowerCase() === 'img') {
|
||||||
oldValue = element.src;
|
oldValue = element.src;
|
||||||
element.src = newSrc;
|
const newMediaType = getMediaTypeFromUrl(newSrc);
|
||||||
|
if (newMediaType === 'video' && allowMediaTypeSwap) {
|
||||||
|
const swapped = swapMediaElement(element, 'video', newSrc);
|
||||||
|
if (selectedElement === element) selectedElement = swapped;
|
||||||
|
element = swapped;
|
||||||
|
} else {
|
||||||
|
element.src = newSrc;
|
||||||
|
}
|
||||||
|
replaced = true;
|
||||||
|
} else if (element.tagName.toLowerCase() === 'video') {
|
||||||
|
oldValue = element.src || element.currentSrc || '';
|
||||||
|
const newMediaType = getMediaTypeFromUrl(newSrc);
|
||||||
|
const sources = element.querySelectorAll('source');
|
||||||
|
if (newMediaType === 'image' && allowMediaTypeSwap) {
|
||||||
|
const swapped = swapMediaElement(element, 'img', newSrc);
|
||||||
|
if (selectedElement === element) selectedElement = swapped;
|
||||||
|
element = swapped;
|
||||||
|
} else {
|
||||||
|
if (sources.length > 0) {
|
||||||
|
sources.forEach(function(source) { source.src = newSrc; });
|
||||||
|
element.load();
|
||||||
|
} else {
|
||||||
|
element.src = newSrc;
|
||||||
|
element.load();
|
||||||
|
}
|
||||||
|
}
|
||||||
replaced = true;
|
replaced = true;
|
||||||
} else {
|
} else {
|
||||||
const hasBackgroundImage = window.getComputedStyle(element).backgroundImage !== 'none';
|
const hasBackgroundImage = window.getComputedStyle(element).backgroundImage !== 'none';
|
||||||
@@ -1328,4 +1414,4 @@ export default function RootLayout({
|
|||||||
</ServiceWrapper>
|
</ServiceWrapper>
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
|||||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||||
import FeatureCardOne from '@/components/sections/feature/FeatureCardOne';
|
import FeatureCardOne from '@/components/sections/feature/FeatureCardOne';
|
||||||
import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';
|
import AboutMetric from '@/components/sections/about/AboutMetric';
|
||||||
import TestimonialCardSix from '@/components/sections/testimonial/TestimonialCardSix';
|
import TestimonialCardSix from '@/components/sections/testimonial/TestimonialCardSix';
|
||||||
import MetricCardThree from '@/components/sections/metrics/MetricCardThree';
|
import MetricCardThree from '@/components/sections/metrics/MetricCardThree';
|
||||||
import TeamCardSix from '@/components/sections/team/TeamCardSix';
|
import TeamCardSix from '@/components/sections/team/TeamCardSix';
|
||||||
@@ -17,7 +17,7 @@ export default function LandingPage() {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -83,22 +83,22 @@ export default function LandingPage() {
|
|||||||
tagIcon={Scissors}
|
tagIcon={Scissors}
|
||||||
features={[
|
features={[
|
||||||
{
|
{
|
||||||
title: "Classic Haircuts", description: "Timeless styles executed with precision and attention to detail. From fades to tapers, we craft the perfect cut for you.", imageSrc: "https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg", imageAlt: "Classic Haircuts"
|
title: "Classic Haircuts", description: "Timeless styles executed with precision and attention to detail. From fades to tapers, we craft the perfect cut for you.", imageSrc: "https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg?_wi=1", imageAlt: "Classic Haircuts"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Beard Grooming", description: "Professional beard trimming, shaping, and conditioning. Maintain that distinguished look with expert care.", imageSrc: "https://img.b2bpic.net/free-photo/serious-elegant-bearded-male-wearing-classic-waistcoat-slim-bow-tie_613910-1520.jpg", imageAlt: "Beard Grooming"
|
title: "Beard Grooming", description: "Professional beard trimming, shaping, and conditioning. Maintain that distinguished look with expert care.", imageSrc: "https://img.b2bpic.net/free-photo/serious-elegant-bearded-male-wearing-classic-waistcoat-slim-bow-tie_613910-1520.jpg?_wi=1", imageAlt: "Beard Grooming"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Hot Shave", description: "Traditional hot towel shaves using premium products and classic techniques for the ultimate relaxation.", imageSrc: "https://img.b2bpic.net/free-photo/portrait-pensive-man-with-receive-moustache-beard-trimming-procedure-barbershop_613910-15033.jpg", imageAlt: "Hot Shave"
|
title: "Hot Shave", description: "Traditional hot towel shaves using premium products and classic techniques for the ultimate relaxation.", imageSrc: "https://img.b2bpic.net/free-photo/portrait-pensive-man-with-receive-moustache-beard-trimming-procedure-barbershop_613910-15033.jpg?_wi=1", imageAlt: "Hot Shave"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Hair Styling", description: "Modern styling with premium products. Whether it's pomade or gel, we'll give you the look you want.", imageSrc: "https://img.b2bpic.net/free-photo/studio-portrait-bearded-photographer-wearing-classic-suit-holding-retro-camera-standing-with-his-arms-crossed_613910-19282.jpg", imageAlt: "Hair Styling"
|
title: "Hair Styling", description: "Modern styling with premium products. Whether it's pomade or gel, we'll give you the look you want.", imageSrc: "https://img.b2bpic.net/free-photo/studio-portrait-bearded-photographer-wearing-classic-suit-holding-retro-camera-standing-with-his-arms-crossed_613910-19282.jpg?_wi=1", imageAlt: "Hair Styling"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Signature Treatments", description: "Exclusive grooming treatments including scalp massage and conditioning therapy for complete wellness.", imageSrc: "https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg", imageAlt: "Signature Treatments"
|
title: "Signature Treatments", description: "Exclusive grooming treatments including scalp massage and conditioning therapy for complete wellness.", imageSrc: "https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg?_wi=2", imageAlt: "Signature Treatments"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "VIP Experience", description: "Premium service package with extended time, complimentary beverages, and personalized consultation.", imageSrc: "https://img.b2bpic.net/free-photo/serious-elegant-bearded-male-wearing-classic-waistcoat-slim-bow-tie_613910-1520.jpg", imageAlt: "VIP Experience"
|
title: "VIP Experience", description: "Premium service package with extended time, complimentary beverages, and personalized consultation.", imageSrc: "https://img.b2bpic.net/free-photo/serious-elegant-bearded-male-wearing-classic-waistcoat-slim-bow-tie_613910-1520.jpg?_wi=2", imageAlt: "VIP Experience"
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
gridVariant="uniform-all-items-equal"
|
gridVariant="uniform-all-items-equal"
|
||||||
@@ -109,16 +109,15 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="about" data-section="about">
|
<div id="about" data-section="about">
|
||||||
<TestimonialAboutCard
|
<AboutMetric
|
||||||
title="Refined Barbershop Heritage"
|
title="At Refined Barber we redefine barbering by empowering clients to look and feel their absolute best"
|
||||||
description="With over 15 years in the grooming industry, we've perfected the art of classic barbering combined with modern expertise."
|
metrics={[
|
||||||
subdescription="Our shop is a sanctuary where tradition meets innovation, delivering exceptional grooming experiences with personalized attention to every client."
|
{ icon: Users, label: "Satisfied Clients", value: "2,000+" },
|
||||||
tag="Our Story"
|
{ icon: Star, label: "5-Star Rating", value: "98%" },
|
||||||
tagIcon={History}
|
{ icon: Award, label: "Years Experience", value: "15+" },
|
||||||
icon={Award}
|
{ icon: Zap, label: "Monthly Appointments", value: "800+" }
|
||||||
imageSrc="https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg"
|
]}
|
||||||
imageAlt="Refined Barbershop Heritage"
|
metricsAnimation="slide-up"
|
||||||
mediaAnimation="slide-up"
|
|
||||||
useInvertedBackground={true}
|
useInvertedBackground={true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -194,16 +193,16 @@ export default function LandingPage() {
|
|||||||
tagIcon={Users}
|
tagIcon={Users}
|
||||||
members={[
|
members={[
|
||||||
{
|
{
|
||||||
id: "1", name: "Marcus DeVille", role: "Master Barber & Owner", imageSrc: "https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg", imageAlt: "Marcus DeVille"
|
id: "1", name: "Marcus DeVille", role: "Master Barber & Owner", imageSrc: "https://img.b2bpic.net/free-photo/handsome-businessman-barber-shop_1157-21514.jpg?_wi=3", imageAlt: "Marcus DeVille"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "2", name: "Antonio Rossi", role: "Senior Stylist", imageSrc: "https://img.b2bpic.net/free-photo/serious-elegant-bearded-male-wearing-classic-waistcoat-slim-bow-tie_613910-1520.jpg", imageAlt: "Antonio Rossi"
|
id: "2", name: "Antonio Rossi", role: "Senior Stylist", imageSrc: "https://img.b2bpic.net/free-photo/serious-elegant-bearded-male-wearing-classic-waistcoat-slim-bow-tie_613910-1520.jpg?_wi=3", imageAlt: "Antonio Rossi"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "3", name: "James Turner", role: "Grooming Specialist", imageSrc: "https://img.b2bpic.net/free-photo/portrait-pensive-man-with-receive-moustache-beard-trimming-procedure-barbershop_613910-15033.jpg", imageAlt: "James Turner"
|
id: "3", name: "James Turner", role: "Grooming Specialist", imageSrc: "https://img.b2bpic.net/free-photo/portrait-pensive-man-with-receive-moustache-beard-trimming-procedure-barbershop_613910-15033.jpg?_wi=2", imageAlt: "James Turner"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "4", name: "David Hassan", role: "Master Barber", imageSrc: "https://img.b2bpic.net/free-photo/studio-portrait-bearded-photographer-wearing-classic-suit-holding-retro-camera-standing-with-his-arms-crossed_613910-19282.jpg", imageAlt: "David Hassan"
|
id: "4", name: "David Hassan", role: "Master Barber", imageSrc: "https://img.b2bpic.net/free-photo/studio-portrait-bearded-photographer-wearing-classic-suit-holding-retro-camera-standing-with-his-arms-crossed_613910-19282.jpg?_wi=2", imageAlt: "David Hassan"
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
gridVariant="uniform-all-items-equal"
|
gridVariant="uniform-all-items-equal"
|
||||||
@@ -245,4 +244,4 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -114,7 +114,7 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -164,7 +164,7 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -233,4 +233,4 @@ export default function ProductPage({ params }: ProductPageProps) {
|
|||||||
</ReactLenis>
|
</ReactLenis>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export default function ShopPage() {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -63,7 +63,7 @@ export default function ShopPage() {
|
|||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="shift-hover"
|
defaultButtonVariant="shift-hover"
|
||||||
defaultTextAnimation="entrance-slide"
|
defaultTextAnimation="entrance-slide"
|
||||||
borderRadius="sharp"
|
borderRadius="rounded"
|
||||||
contentWidth="smallMedium"
|
contentWidth="smallMedium"
|
||||||
sizing="medium"
|
sizing="medium"
|
||||||
background="noise"
|
background="noise"
|
||||||
@@ -107,4 +107,4 @@ export default function ShopPage() {
|
|||||||
</ReactLenis>
|
</ReactLenis>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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-archivo), sans-serif;
|
font-family: var(--font-inter), 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-archivo), sans-serif;
|
font-family: var(--font-public-sans), sans-serif;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
/* Base units */
|
/* Base units */
|
||||||
/* --vw is set by ThemeProvider */
|
/* --vw is set by ThemeProvider */
|
||||||
|
|
||||||
/* --background: #f5f4ef;;
|
/* --background: #010912;;
|
||||||
--card: #dad6cd;;
|
--card: #152840;;
|
||||||
--foreground: #2a2928;;
|
--foreground: #e6f0ff;;
|
||||||
--primary-cta: #2a2928;;
|
--primary-cta: #cee7ff;;
|
||||||
--secondary-cta: #efe7dd;;
|
--secondary-cta: #0e1a29;;
|
||||||
--accent: #ffffff;;
|
--accent: #3f5c79;;
|
||||||
--background-accent: #c6b180;; */
|
--background-accent: #004a93;; */
|
||||||
|
|
||||||
--background: #f5f4ef;;
|
--background: #010912;;
|
||||||
--card: #dad6cd;;
|
--card: #152840;;
|
||||||
--foreground: #2a2928;;
|
--foreground: #e6f0ff;;
|
||||||
--primary-cta: #2a2928;;
|
--primary-cta: #cee7ff;;
|
||||||
--secondary-cta: #efe7dd;;
|
--secondary-cta: #0e1a29;;
|
||||||
--accent: #ffffff;;
|
--accent: #3f5c79;;
|
||||||
--background-accent: #c6b180;;
|
--background-accent: #004a93;;
|
||||||
|
|
||||||
/* 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);
|
||||||
|
|||||||
Reference in New Issue
Block a user