+
{{ t(key(section.id, `block.${i}.caption`), locale) }}
@@ -221,7 +221,7 @@ function scrollToSection(id: string) {
"
>
"{{ t(key(section.id, `block.${i}.text`), locale) }}"
@@ -238,17 +238,17 @@ function scrollToSection(id: string) {
{{ t(key(section.id, `block.${i}.label`), locale) }}
-
+
{{ t(key(section.id, `block.${i}.name`), locale) }}
-
+
{{ t(key(section.id, `block.${i}.role`), locale) }}
-
+
{{ t(key(section.id, `block.${i}.name2`), locale) }}
-
+
{{ t(key(section.id, `block.${i}.role2`), locale) }}
diff --git a/apps/website/src/components/common/HeaderMain/HeaderMain.vue b/apps/website/src/components/common/HeaderMain/HeaderMain.vue
new file mode 100644
index 0000000000..2541de8212
--- /dev/null
+++ b/apps/website/src/components/common/HeaderMain/HeaderMain.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
diff --git a/apps/website/src/components/common/HeaderMain/HeaderMainDesktop.vue b/apps/website/src/components/common/HeaderMain/HeaderMainDesktop.vue
new file mode 100644
index 0000000000..c95737e084
--- /dev/null
+++ b/apps/website/src/components/common/HeaderMain/HeaderMainDesktop.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+ {{ navItem.label }}
+
+
+
+
+
+
+ {{
+ navItem.label
+ }}
+
+
+
+
+
diff --git a/apps/website/src/components/common/HeaderMain/HeaderMainMobile.vue b/apps/website/src/components/common/HeaderMain/HeaderMainMobile.vue
new file mode 100644
index 0000000000..ec65c90faa
--- /dev/null
+++ b/apps/website/src/components/common/HeaderMain/HeaderMainMobile.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+ {{ t('nav.menu', locale) }}
+
+ {{ t('nav.mobileMenuDescription', locale) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/website/src/components/common/HeaderMain/NavColumn.vue b/apps/website/src/components/common/HeaderMain/NavColumn.vue
new file mode 100644
index 0000000000..90bd8a8817
--- /dev/null
+++ b/apps/website/src/components/common/HeaderMain/NavColumn.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+ {{ column.header }}
+
+
+
+
diff --git a/apps/website/src/components/common/HeaderMain/NavFeaturedCard.vue b/apps/website/src/components/common/HeaderMain/NavFeaturedCard.vue
new file mode 100644
index 0000000000..cbfcdc4854
--- /dev/null
+++ b/apps/website/src/components/common/HeaderMain/NavFeaturedCard.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+ {{ featured.cta.label }}
+
+
+
+
+
diff --git a/apps/website/src/components/common/HeaderMain/NavLinkContent.vue b/apps/website/src/components/common/HeaderMain/NavLinkContent.vue
new file mode 100644
index 0000000000..473d9567fe
--- /dev/null
+++ b/apps/website/src/components/common/HeaderMain/NavLinkContent.vue
@@ -0,0 +1,23 @@
+
+
+
+
+ {{ item.label }}
+
+ {{ t('nav.badgeNew', locale) }}
+
+
+
+
diff --git a/apps/website/src/components/common/MaskRevealButton.vue b/apps/website/src/components/common/MaskRevealButton.vue
deleted file mode 100644
index 83c3803d3c..0000000000
--- a/apps/website/src/components/common/MaskRevealButton.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/website/src/components/common/MobileMenu.vue b/apps/website/src/components/common/MobileMenu.vue
deleted file mode 100644
index dcef970f44..0000000000
--- a/apps/website/src/components/common/MobileMenu.vue
+++ /dev/null
@@ -1,186 +0,0 @@
-
-
-
-
-
diff --git a/apps/website/src/components/common/NavDesktopLink.vue b/apps/website/src/components/common/NavDesktopLink.vue
deleted file mode 100644
index ead0fea99f..0000000000
--- a/apps/website/src/components/common/NavDesktopLink.vue
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
diff --git a/apps/website/src/components/common/PillButton.vue b/apps/website/src/components/common/PillButton.vue
deleted file mode 100644
index adfb216203..0000000000
--- a/apps/website/src/components/common/PillButton.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/website/src/components/common/SiteNav.vue b/apps/website/src/components/common/SiteNav.vue
deleted file mode 100644
index c65b24e17e..0000000000
--- a/apps/website/src/components/common/SiteNav.vue
+++ /dev/null
@@ -1,262 +0,0 @@
-
-
-
-
-
-
-
diff --git a/apps/website/src/components/common/badge.variants.ts b/apps/website/src/components/common/badge.variants.ts
deleted file mode 100644
index 6023cc32c6..0000000000
--- a/apps/website/src/components/common/badge.variants.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import type { VariantProps } from 'cva'
-import { cva } from 'cva'
-
-export const badgeVariants = cva({
- base: 'text-primary-warm-gray focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-4 py-1 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3',
- variants: {
- variant: {
- default: 'bg-transparency-ink-t80',
- subtle: 'bg-transparency-white-t4 text-primary-comfy-canvas'
- }
- },
- defaultVariants: {
- variant: 'default'
- }
-})
-
-export type BadgeVariants = VariantProps
diff --git a/apps/website/src/components/common/maskRevealButton.variants.ts b/apps/website/src/components/common/maskRevealButton.variants.ts
deleted file mode 100644
index 9ae2583add..0000000000
--- a/apps/website/src/components/common/maskRevealButton.variants.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-import type { VariantProps } from 'cva'
-import { cva } from 'cva'
-
-export const maskRevealButtonVariants = cva({
- base: 'group relative uppercase inline-flex w-fit cursor-pointer items-center overflow-hidden rounded-lg p-1 font-bold text-nowrap transition-all duration-500 disabled:cursor-not-allowed disabled:opacity-50',
- variants: {
- variant: {
- solid: 'bg-primary-comfy-yellow text-primary-comfy-ink',
- ghost: 'text-primary-comfy-yellow bg-transparent'
- },
- size: {
- sm: 'h-10 text-xs',
- md: 'h-12 text-sm',
- lg: 'h-14 text-base'
- },
- iconPosition: {
- right: '',
- left: ''
- }
- },
- compoundVariants: [
- { size: 'sm', iconPosition: 'right', class: 'ps-12 pe-4' },
- { size: 'md', iconPosition: 'right', class: 'ps-14 pe-6' },
- { size: 'lg', iconPosition: 'right', class: 'ps-16 pe-8' },
- { size: 'sm', iconPosition: 'left', class: 'ps-4 pe-12' },
- { size: 'md', iconPosition: 'left', class: 'ps-6 pe-14' },
- { size: 'lg', iconPosition: 'left', class: 'ps-8 pe-16' }
- ],
- defaultVariants: {
- variant: 'solid',
- size: 'md',
- iconPosition: 'right'
- }
-})
-
-export const maskRevealButtonBadgeVariants = cva({
- base: 'absolute z-10 flex items-center justify-center rounded-lg transition-all duration-500',
- variants: {
- variant: {
- solid: 'bg-primary-comfy-ink text-primary-comfy-yellow',
- ghost: 'bg-primary-comfy-yellow text-primary-comfy-ink'
- },
- size: {
- sm: 'size-8',
- md: 'size-10',
- lg: 'size-12'
- },
- iconPosition: {
- right: '',
- left: ''
- }
- },
- compoundVariants: [
- {
- size: 'sm',
- iconPosition: 'right',
- class: 'right-1 group-hover:right-[calc(100%-36px)]'
- },
- {
- size: 'md',
- iconPosition: 'right',
- class: 'right-1 group-hover:right-[calc(100%-44px)]'
- },
- {
- size: 'lg',
- iconPosition: 'right',
- class: 'right-1 group-hover:right-[calc(100%-52px)]'
- },
- {
- size: 'sm',
- iconPosition: 'left',
- class: 'left-1 group-hover:left-[calc(100%-36px)]'
- },
- {
- size: 'md',
- iconPosition: 'left',
- class: 'left-1 group-hover:left-[calc(100%-44px)]'
- },
- {
- size: 'lg',
- iconPosition: 'left',
- class: 'left-1 group-hover:left-[calc(100%-52px)]'
- }
- ],
- defaultVariants: {
- variant: 'solid',
- size: 'md',
- iconPosition: 'right'
- }
-})
-
-export const maskRevealLabelVariants = cva({
- base: [
- 'relative inline-block align-baseline',
- '[will-change:mask-size,-webkit-mask-size]',
- '[mask-image:linear-gradient(black,black)] [-webkit-mask-image:linear-gradient(black,black)]',
- 'mask-no-repeat [-webkit-mask-repeat:no-repeat]',
- 'transition-[mask-size,-webkit-mask-size] duration-500 ease-in-out',
- 'data-[icon-position=right]:[mask-position:100%_0] data-[icon-position=right]:[-webkit-mask-position:100%_0]',
- 'data-[icon-position=left]:[mask-position:0_0] data-[icon-position=left]:[-webkit-mask-position:0_0]',
- 'data-[hidden=true]:[mask-size:0%_100%] data-[hidden=true]:[-webkit-mask-size:0%_100%]',
- 'data-[hidden=false]:[mask-size:100%_100%] data-[hidden=false]:[-webkit-mask-size:100%_100%]',
- 'group-hover:data-[hidden=true]:[mask-size:calc(100%_+_1px)_100%] group-hover:data-[hidden=true]:[-webkit-mask-size:calc(100%_+_1px)_100%]',
- 'group-focus-visible:data-[hidden=true]:[mask-size:calc(100%_+_1px)_100%] group-focus-visible:data-[hidden=true]:[-webkit-mask-size:calc(100%_+_1px)_100%]'
- ].join(' ')
-})
-
-export type MaskRevealButtonVariants = VariantProps<
- typeof maskRevealButtonVariants
->
diff --git a/apps/website/src/components/common/pillButton.variants.ts b/apps/website/src/components/common/pillButton.variants.ts
deleted file mode 100644
index 33091ff761..0000000000
--- a/apps/website/src/components/common/pillButton.variants.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import type { VariantProps } from 'cva'
-import { cva } from 'cva'
-
-export const pillButtonVariants = cva({
- base: 'group relative inline-flex w-fit cursor-pointer items-center overflow-hidden rounded-lg p-1 font-bold text-nowrap transition-all duration-500 disabled:cursor-not-allowed disabled:opacity-50',
- variants: {
- variant: {
- solid: 'bg-primary-comfy-yellow text-primary-comfy-ink',
- ghost: 'text-primary-comfy-yellow bg-transparent'
- },
- size: {
- sm: 'h-10 text-xs',
- md: 'h-12 text-sm',
- lg: 'h-14 text-base'
- },
- iconPosition: {
- right: '',
- left: ''
- }
- },
- compoundVariants: [
- {
- size: 'sm',
- iconPosition: 'right',
- class: 'ps-4 pe-12 hover:ps-12 hover:pe-4'
- },
- {
- size: 'md',
- iconPosition: 'right',
- class: 'ps-6 pe-14 hover:ps-14 hover:pe-6'
- },
- {
- size: 'lg',
- iconPosition: 'right',
- class: 'ps-8 pe-16 hover:ps-16 hover:pe-8'
- },
- {
- size: 'sm',
- iconPosition: 'left',
- class: 'ps-12 pe-4 hover:ps-4 hover:pe-12'
- },
- {
- size: 'md',
- iconPosition: 'left',
- class: 'ps-14 pe-6 hover:ps-6 hover:pe-14'
- },
- {
- size: 'lg',
- iconPosition: 'left',
- class: 'ps-16 pe-8 hover:ps-8 hover:pe-16'
- }
- ],
- defaultVariants: {
- variant: 'solid',
- size: 'md',
- iconPosition: 'right'
- }
-})
-
-export const pillButtonBadgeVariants = cva({
- base: 'absolute z-10 flex items-center justify-center rounded-lg transition-all duration-500',
- variants: {
- variant: {
- solid: 'bg-primary-comfy-ink text-primary-comfy-yellow',
- ghost: 'bg-primary-comfy-yellow text-primary-comfy-ink'
- },
- size: {
- sm: 'size-8',
- md: 'size-10',
- lg: 'size-12'
- },
- iconPosition: {
- right: '',
- left: ''
- }
- },
- compoundVariants: [
- {
- size: 'sm',
- iconPosition: 'right',
- class: 'right-1 group-hover:right-[calc(100%-36px)]'
- },
- {
- size: 'md',
- iconPosition: 'right',
- class: 'right-1 group-hover:right-[calc(100%-44px)]'
- },
- {
- size: 'lg',
- iconPosition: 'right',
- class: 'right-1 group-hover:right-[calc(100%-52px)]'
- },
- {
- size: 'sm',
- iconPosition: 'left',
- class: 'left-1 group-hover:left-[calc(100%-36px)]'
- },
- {
- size: 'md',
- iconPosition: 'left',
- class: 'left-1 group-hover:left-[calc(100%-44px)]'
- },
- {
- size: 'lg',
- iconPosition: 'left',
- class: 'left-1 group-hover:left-[calc(100%-52px)]'
- }
- ],
- defaultVariants: {
- variant: 'solid',
- size: 'md',
- iconPosition: 'right'
- }
-})
-
-export type PillButtonVariants = VariantProps
diff --git a/apps/website/src/components/customers/HeroSection.vue b/apps/website/src/components/customers/HeroSection.vue
index 5ff5903d3c..e5c3a873c8 100644
--- a/apps/website/src/components/customers/HeroSection.vue
+++ b/apps/website/src/components/customers/HeroSection.vue
@@ -58,13 +58,13 @@ function handleLogoLoad() {
{{ t('customers.hero.heading', locale) }}
{{ t('customers.hero.body', locale) }}
@@ -72,7 +72,12 @@ function handleLogoLoad() {