improve(public): remove heavy svgs and replaced some images with local
@@ -1,152 +1,36 @@
|
|||||||
import { cn } from '@/lib/utils';
|
import { cn } from '@/lib/utils';
|
||||||
|
import Image, { type ImageProps } from 'next/image';
|
||||||
|
|
||||||
interface SwirlProps extends React.SVGProps<SVGSVGElement> {
|
type SwirlProps = Omit<ImageProps, 'src' | 'alt'>;
|
||||||
className?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function SingleSwirl({ className, ...props }: SwirlProps) {
|
export function SingleSwirl({ className, ...props }: SwirlProps) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<Image
|
||||||
width="1193"
|
|
||||||
height="634"
|
|
||||||
viewBox="0 0 1193 634"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
className={cn('text-white', className)}
|
|
||||||
{...props}
|
{...props}
|
||||||
>
|
src="/swirl-2.png"
|
||||||
<g filter="url(#filter0_f_290_140)">
|
alt="Swirl"
|
||||||
<path
|
className={cn(
|
||||||
d="M996.469 546.016C728.822 501.422 310.916 455.521 98.1817 18.6728"
|
'pointer-events-none w-full h-full object-cover',
|
||||||
stroke="currentColor"
|
className,
|
||||||
strokeWidth="26"
|
)}
|
||||||
|
width={1200}
|
||||||
|
height={1200}
|
||||||
/>
|
/>
|
||||||
</g>
|
|
||||||
<g filter="url(#filter1_f_290_140)">
|
|
||||||
<path
|
|
||||||
d="M780.821 634.792C582.075 610.494 151.698 468.051 20.1495 92.6602"
|
|
||||||
stroke="currentColor"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<filter
|
|
||||||
id="filter0_f_290_140"
|
|
||||||
x="-107.406"
|
|
||||||
y="-180.919"
|
|
||||||
width="1299.91"
|
|
||||||
height="933.658"
|
|
||||||
filterUnits="userSpaceOnUse"
|
|
||||||
colorInterpolationFilters="sRGB"
|
|
||||||
>
|
|
||||||
<feFlood floodOpacity="0" result="BackgroundImageFix" />
|
|
||||||
<feBlend
|
|
||||||
mode="normal"
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="BackgroundImageFix"
|
|
||||||
result="shape"
|
|
||||||
/>
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="96.95"
|
|
||||||
result="effect1_foregroundBlur_290_140"
|
|
||||||
/>
|
|
||||||
</filter>
|
|
||||||
<filter
|
|
||||||
id="filter1_f_290_140"
|
|
||||||
x="-3.32227"
|
|
||||||
y="69.4946"
|
|
||||||
width="807.204"
|
|
||||||
height="588.793"
|
|
||||||
filterUnits="userSpaceOnUse"
|
|
||||||
colorInterpolationFilters="sRGB"
|
|
||||||
>
|
|
||||||
<feFlood floodOpacity="0" result="BackgroundImageFix" />
|
|
||||||
<feBlend
|
|
||||||
mode="normal"
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="BackgroundImageFix"
|
|
||||||
result="shape"
|
|
||||||
/>
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="11.5"
|
|
||||||
result="effect1_foregroundBlur_290_140"
|
|
||||||
/>
|
|
||||||
</filter>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DoubleSwirl({ className, ...props }: SwirlProps) {
|
export function DoubleSwirl({ className, ...props }: SwirlProps) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<Image
|
||||||
width="1535"
|
|
||||||
height="1178"
|
|
||||||
viewBox="0 0 1535 1178"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
className={cn('text-white', className)}
|
|
||||||
{...props}
|
{...props}
|
||||||
>
|
src="/swirl.png"
|
||||||
<g filter="url(#filter0_f_290_639)">
|
alt="Swirl"
|
||||||
<path
|
className={cn(
|
||||||
d="M1392.59 1088C1108.07 603.225 323.134 697.532 143.435 135.494"
|
'pointer-events-none w-full h-full object-cover',
|
||||||
stroke="currentColor"
|
className,
|
||||||
strokeOpacity="0.5"
|
)}
|
||||||
strokeWidth="26"
|
width={1200}
|
||||||
|
height={1200}
|
||||||
/>
|
/>
|
||||||
</g>
|
|
||||||
<g filter="url(#filter1_f_290_639)">
|
|
||||||
<path
|
|
||||||
d="M1446.57 1014.51C1162.05 529.732 377.111 624.039 197.412 62.0001"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeOpacity="0.06"
|
|
||||||
strokeWidth="26"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<filter
|
|
||||||
id="filter0_f_290_639"
|
|
||||||
x="0.244919"
|
|
||||||
y="0.679001"
|
|
||||||
width="1534.37"
|
|
||||||
height="1224.74"
|
|
||||||
filterUnits="userSpaceOnUse"
|
|
||||||
colorInterpolationFilters="sRGB"
|
|
||||||
>
|
|
||||||
<feFlood floodOpacity="0" result="BackgroundImageFix" />
|
|
||||||
<feBlend
|
|
||||||
mode="normal"
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="BackgroundImageFix"
|
|
||||||
result="shape"
|
|
||||||
/>
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="65.4"
|
|
||||||
result="effect1_foregroundBlur_290_639"
|
|
||||||
/>
|
|
||||||
</filter>
|
|
||||||
<filter
|
|
||||||
id="filter1_f_290_639"
|
|
||||||
x="160.022"
|
|
||||||
y="32.9856"
|
|
||||||
width="1322.77"
|
|
||||||
height="1013.14"
|
|
||||||
filterUnits="userSpaceOnUse"
|
|
||||||
colorInterpolationFilters="sRGB"
|
|
||||||
>
|
|
||||||
<feFlood floodOpacity="0" result="BackgroundImageFix" />
|
|
||||||
<feBlend
|
|
||||||
mode="normal"
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="BackgroundImageFix"
|
|
||||||
result="shape"
|
|
||||||
/>
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="12.5"
|
|
||||||
result="effect1_foregroundBlur_290_639"
|
|
||||||
/>
|
|
||||||
</filter>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export function Footer() {
|
|||||||
<div className="mt-32">
|
<div className="mt-32">
|
||||||
<section className="overflow-hidden relative bg-foreground dark:bg-background-dark text-background dark:text-foreground rounded-xl p-0 pb-32 pt-16 max-w-7xl mx-auto">
|
<section className="overflow-hidden relative bg-foreground dark:bg-background-dark text-background dark:text-foreground rounded-xl p-0 pb-32 pt-16 max-w-7xl mx-auto">
|
||||||
<SingleSwirl className="pointer-events-none absolute top-0 bottom-0 left-0" />
|
<SingleSwirl className="pointer-events-none absolute top-0 bottom-0 left-0" />
|
||||||
<SingleSwirl className="pointer-events-none rotate-180 absolute top-0 bottom-0 -right-32 opacity-50" />
|
<SingleSwirl className="pointer-events-none rotate-180 absolute top-0 bottom-0 -right-0 opacity-50" />
|
||||||
<div className="container center-center col">
|
<div className="container center-center col">
|
||||||
<SectionHeader
|
<SectionHeader
|
||||||
tag={<Tag>Discover User Insights</Tag>}
|
tag={<Tag>Discover User Insights</Tag>}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export default Pricing;
|
|||||||
export function Pricing() {
|
export function Pricing() {
|
||||||
return (
|
return (
|
||||||
<Section className="overflow-hidden relative bg-foreground dark:bg-background-dark text-background dark:text-foreground rounded-xl p-0 pb-32 pt-16 max-w-7xl mx-auto">
|
<Section className="overflow-hidden relative bg-foreground dark:bg-background-dark text-background dark:text-foreground rounded-xl p-0 pb-32 pt-16 max-w-7xl mx-auto">
|
||||||
<DoubleSwirl className="absolute -top-32 left-0" />
|
<DoubleSwirl className="absolute top-0 left-0" />
|
||||||
<div className="container relative z-10">
|
<div className="container relative z-10">
|
||||||
<SectionHeader
|
<SectionHeader
|
||||||
tag={
|
tag={
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ import { MessageCircleIcon } from 'lucide-react';
|
|||||||
const testimonials = [
|
const testimonials = [
|
||||||
{
|
{
|
||||||
verified: true,
|
verified: true,
|
||||||
avatarUrl:
|
avatarUrl: '/twitter-steven.jpg',
|
||||||
'https://pbs.twimg.com/profile_images/1506792347840888834/dS-r50Je_x96.jpg',
|
|
||||||
name: 'Steven Tey',
|
name: 'Steven Tey',
|
||||||
handle: 'steventey',
|
handle: 'steventey',
|
||||||
content: [
|
content: [
|
||||||
@@ -21,8 +20,7 @@ const testimonials = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified: true,
|
verified: true,
|
||||||
avatarUrl:
|
avatarUrl: '/twitter-pontus.jpg',
|
||||||
'https://pbs.twimg.com/profile_images/1755611130368770048/JwLEqyeo_x96.jpg',
|
|
||||||
name: 'Pontus Abrahamsson — oss/acc',
|
name: 'Pontus Abrahamsson — oss/acc',
|
||||||
handle: 'pontusab',
|
handle: 'pontusab',
|
||||||
content: ['Thanks, OpenPanel is a beast, love it!'],
|
content: ['Thanks, OpenPanel is a beast, love it!'],
|
||||||
@@ -32,8 +30,7 @@ const testimonials = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified: true,
|
verified: true,
|
||||||
avatarUrl:
|
avatarUrl: '/twitter-piotr.jpg',
|
||||||
'https://pbs.twimg.com/profile_images/1849912160593268736/Zm3zrpOI_x96.jpg',
|
|
||||||
name: 'Piotr Kulpinski',
|
name: 'Piotr Kulpinski',
|
||||||
handle: 'piotrkulpinski',
|
handle: 'piotrkulpinski',
|
||||||
content: [
|
content: [
|
||||||
@@ -46,8 +43,7 @@ const testimonials = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified: true,
|
verified: true,
|
||||||
avatarUrl:
|
avatarUrl: '/twitter-greg.jpg',
|
||||||
'https://pbs.twimg.com/profile_images/1825857658017959936/3nEG8n7__x96.jpg',
|
|
||||||
name: 'greg hodson 🍜',
|
name: 'greg hodson 🍜',
|
||||||
handle: 'h0dson',
|
handle: 'h0dson',
|
||||||
content: ['i second this, openpanel is killing it'],
|
content: ['i second this, openpanel is killing it'],
|
||||||
@@ -57,8 +53,7 @@ const testimonials = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified: true,
|
verified: true,
|
||||||
avatarUrl:
|
avatarUrl: '/twitter-jacob.jpg',
|
||||||
'https://pbs.twimg.com/profile_images/1777870199515164672/47EBkHLm_x96.jpg',
|
|
||||||
name: 'Jacob 🍀 Build in Public',
|
name: 'Jacob 🍀 Build in Public',
|
||||||
handle: 'javayhuwx',
|
handle: 'javayhuwx',
|
||||||
content: [
|
content: [
|
||||||
@@ -72,8 +67,7 @@ const testimonials = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified: true,
|
verified: true,
|
||||||
avatarUrl:
|
avatarUrl: '/twitter-lee.jpg',
|
||||||
'https://pbs.twimg.com/profile_images/1787577276646780929/YuoDbD1f_x96.jpg',
|
|
||||||
name: 'Lee',
|
name: 'Lee',
|
||||||
handle: 'DutchEngIishman',
|
handle: 'DutchEngIishman',
|
||||||
content: [
|
content: [
|
||||||
|
|||||||
BIN
apps/public/public/swirl-2.png
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
apps/public/public/swirl.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
apps/public/public/twitter-greg.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
apps/public/public/twitter-jacob.jpg
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
apps/public/public/twitter-lee.jpg
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
apps/public/public/twitter-piotr.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
apps/public/public/twitter-pontus.jpg
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
apps/public/public/twitter-steven.jpg
Normal file
|
After Width: | Height: | Size: 3.8 KiB |