fixed build errors
This commit is contained in:
@@ -4,8 +4,8 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Mycelium - Unleash the Power of Decentralized Networks</title>
|
<title>Project Mycelium - Unleash the Power of Decentralized Networks</title>
|
||||||
<meta name="description" content="Discover Mycelium, an end-to-end encrypted IPv6 overlay network. The future of secure, efficient, and scalable networking." />
|
<meta name="description" content="Project Mycelium's technology enables anyone to deploy their own Internet infrastructure, anywhere." />
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ type TextOwnProps = {
|
|||||||
font?: keyof typeof fontVariants
|
font?: keyof typeof fontVariants
|
||||||
color?: keyof typeof colorVariants
|
color?: keyof typeof colorVariants
|
||||||
className?: string
|
className?: string
|
||||||
|
children?: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
// Polymorphic helpers
|
// Polymorphic helpers
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import React from "react";
|
|
||||||
import { useId } from "react";
|
import { useId } from "react";
|
||||||
|
|
||||||
export default function FeaturesSectionDemo() {
|
export default function FeaturesSectionDemo() {
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import * as THREE from "three";
|
|
||||||
import { Canvas, useFrame } from "@react-three/fiber";
|
import { Canvas, useFrame } from "@react-three/fiber";
|
||||||
import { OrbitControls, useTexture } from "@react-three/drei";
|
import { Line, OrbitControls, useTexture } from "@react-three/drei";
|
||||||
import { useRef } from "react";
|
import { useMemo, useRef } from "react";
|
||||||
|
|
||||||
|
type RotatableGroup = {
|
||||||
|
rotation: { y: number };
|
||||||
|
};
|
||||||
|
|
||||||
function Globe() {
|
function Globe() {
|
||||||
const groupRef = useRef<THREE.Group>(null);
|
const groupRef = useRef<RotatableGroup | null>(null);
|
||||||
const cloudTexture = useTexture("/images/cloud1.png");
|
const cloudTexture = useTexture("/images/cloud1.png");
|
||||||
|
|
||||||
// Rotate the globe slowly
|
// Rotate the globe slowly
|
||||||
@@ -17,7 +20,7 @@ function Globe() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Coordinates for markers (half-globe)
|
// Coordinates for markers (half-globe)
|
||||||
const points = [
|
const markers = [
|
||||||
[0, 1, 0],
|
[0, 1, 0],
|
||||||
[0.7, 0.5, 0.2],
|
[0.7, 0.5, 0.2],
|
||||||
[-0.5, 0.4, 0.5],
|
[-0.5, 0.4, 0.5],
|
||||||
@@ -25,42 +28,47 @@ function Globe() {
|
|||||||
[-0.6, -0.1, 0.3],
|
[-0.6, -0.1, 0.3],
|
||||||
[0.3, -0.2, 0.8],
|
[0.3, -0.2, 0.8],
|
||||||
];
|
];
|
||||||
|
const arcPoints = useMemo(() => {
|
||||||
|
const radius = 2.5;
|
||||||
|
const verticalRadius = radius / 2;
|
||||||
|
const segments = 120;
|
||||||
|
|
||||||
|
return Array.from({ length: 8 }, () => {
|
||||||
|
const points: number[] = [];
|
||||||
|
for (let i = 0; i < segments; i++) {
|
||||||
|
const t = (i / (segments - 1)) * Math.PI;
|
||||||
|
const x = Math.cos(t) * radius;
|
||||||
|
const z = Math.sin(t) * verticalRadius;
|
||||||
|
const y = Math.sin(x / radius) * 0.5;
|
||||||
|
points.push(x, y, z);
|
||||||
|
}
|
||||||
|
return points;
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<group ref={groupRef}>
|
<group ref={groupRef}>
|
||||||
{/* Cyan arcs */}
|
{/* Cyan arcs */}
|
||||||
{Array.from({ length: 8 }).map((_, i) => {
|
{arcPoints.map((points, i) => (
|
||||||
const radius = 2.5;
|
<Line
|
||||||
const curve = new THREE.EllipseCurve(
|
key={i}
|
||||||
0,
|
points={points}
|
||||||
0,
|
color="#00e5ff"
|
||||||
radius,
|
lineWidth={1}
|
||||||
radius / 2,
|
transparent
|
||||||
0,
|
opacity={0.5}
|
||||||
Math.PI,
|
/>
|
||||||
false,
|
))}
|
||||||
0
|
|
||||||
);
|
|
||||||
const points = curve.getPoints(100);
|
|
||||||
const geometry = new THREE.BufferGeometry().setFromPoints(
|
|
||||||
points.map((p) => new THREE.Vector3(p.x, Math.sin(p.x / radius) * 0.5, p.y))
|
|
||||||
);
|
|
||||||
return (
|
|
||||||
<line key={i} geometry={geometry}>
|
|
||||||
<lineBasicMaterial color="#00e5ff" linewidth={1} transparent opacity={0.5} />
|
|
||||||
</line>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
|
|
||||||
{/* Cloud markers */}
|
{/* Cloud markers */}
|
||||||
{points.map(([x, y, z], i) => (
|
{markers.map(([x, y, z], i) => (
|
||||||
<mesh key={i} position={[x * 2.5, y * 2.5, z * 2.5]}>
|
<mesh key={i} position={[x * 2.5, y * 2.5, z * 2.5]}>
|
||||||
<planeGeometry args={[0.3, 0.3]} />
|
<planeGeometry args={[0.3, 0.3]} />
|
||||||
<meshBasicMaterial
|
<meshBasicMaterial
|
||||||
map={cloudTexture}
|
map={cloudTexture}
|
||||||
transparent
|
transparent
|
||||||
opacity={1}
|
opacity={1}
|
||||||
side={THREE.DoubleSide}
|
side={2 /* DoubleSide */}
|
||||||
/>
|
/>
|
||||||
</mesh>
|
</mesh>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import React, { ReactNode } from "react";
|
import type { CSSProperties, HTMLProps, ReactNode } from "react";
|
||||||
|
|
||||||
interface AuroraBackgroundProps extends React.HTMLProps<HTMLDivElement> {
|
interface AuroraBackgroundProps extends HTMLProps<HTMLDivElement> {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
showRadialGradient?: boolean;
|
showRadialGradient?: boolean;
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@ export const AuroraBackground = ({
|
|||||||
"--black": "#000",
|
"--black": "#000",
|
||||||
"--white": "#fff",
|
"--white": "#fff",
|
||||||
"--transparent": "transparent",
|
"--transparent": "transparent",
|
||||||
} as React.CSSProperties
|
} as CSSProperties
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React, { useEffect, useRef, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
|
||||||
type DottedGlowBackgroundProps = {
|
type DottedGlowBackgroundProps = {
|
||||||
className?: string;
|
className?: string;
|
||||||
@@ -203,12 +203,8 @@ export function DottedGlowBackground({
|
|||||||
|
|
||||||
regenDots();
|
regenDots();
|
||||||
|
|
||||||
let last = performance.now();
|
|
||||||
|
|
||||||
const draw = (now: number) => {
|
const draw = (now: number) => {
|
||||||
if (stopped) return;
|
if (stopped) return;
|
||||||
const dt = (now - last) / 1000; // seconds
|
|
||||||
last = now;
|
|
||||||
const { width, height } = container.getBoundingClientRect();
|
const { width, height } = container.getBoundingClientRect();
|
||||||
|
|
||||||
ctx.clearRect(0, 0, el.width, el.height);
|
ctx.clearRect(0, 0, el.width, el.height);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React from "react";
|
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { P, Eyebrow } from "@/components/Texts";
|
import { P, Eyebrow } from "@/components/Texts";
|
||||||
import { InfiniteMovingCards } from "@/components/magicui/infinite-moving-cards";
|
import { InfiniteMovingCards } from "@/components/magicui/infinite-moving-cards";
|
||||||
|
|||||||
@@ -2,25 +2,45 @@
|
|||||||
|
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { SectionHeader, P, Eyebrow, CT, CP } from "@/components/Texts";
|
import { SectionHeader, P, Eyebrow, CT, CP } from "@/components/Texts";
|
||||||
import { TbCircleNumber1Filled, TbCircleNumber2Filled, TbCircleNumber3Filled } from "react-icons/tb";
|
import type { ComponentPropsWithoutRef } from "react";
|
||||||
|
|
||||||
|
type CircleIconProps = ComponentPropsWithoutRef<"svg">;
|
||||||
|
|
||||||
|
const CircleNumber1Icon = (props: CircleIconProps) => (
|
||||||
|
<svg viewBox="0 0 24 24" fill="currentColor" {...props}>
|
||||||
|
<path d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm.994 5.886c-.083-.777-1.008-1.16-1.617-.67l-.084.077-2 2-.083.094a1 1 0 000 1.226l.083.094.094.083a1 1 0 001.226 0l.094-.083.293-.293v5.586l.007.117a1 1 0 001.986 0l.007-.117v-8l-.006-.114z" />
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
|
||||||
|
const CircleNumber2Icon = (props: CircleIconProps) => (
|
||||||
|
<svg viewBox="0 0 24 24" fill="currentColor" {...props}>
|
||||||
|
<path d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm1 5h-3l-.117.007a1 1 0 000 1.986l.117.007h3v2h-2l-.15.005a2 2 0 00-1.844 1.838l-.006.157v2l.005.15a2 2 0 001.838 1.844l.157.006h3l.117-.007a1 1 0 000-1.986l-.117-.007h-3v-2h2l.15-.005a2 2 0 001.844-1.838l.006-.157v-2l-.005-.15a2 2 0 00-1.838-1.844l-.157-.006z" />
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
|
||||||
|
const CircleNumber3Icon = (props: CircleIconProps) => (
|
||||||
|
<svg viewBox="0 0 24 24" fill="currentColor" {...props}>
|
||||||
|
<path d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2zm1 5h-2l-.15.005a2 2 0 00-1.85 1.995 1 1 0 001.974.23l.02-.113.006-.117h2v2h-2l-.133.007c-1.111.12-1.154 1.73-.128 1.965l.128.021.133.007h2v2h-2l-.007-.117a1 1 0 00-1.993.117 2 2 0 001.85 1.995l.15.005h2l.15-.005a2 2 0 001.844-1.838l.006-.157v-2l-.005-.15a1.988 1.988 0 00-.17-.667l-.075-.152-.019-.032.02-.03a2.01 2.01 0 00.242-.795l.007-.174v-2l-.005-.15a2 2 0 00-1.838-1.844l-.157-.006z" />
|
||||||
|
</svg>
|
||||||
|
);
|
||||||
|
|
||||||
const features = [
|
const features = [
|
||||||
{
|
{
|
||||||
name: 'Choose Your Intelligence',
|
name: 'Choose Your Intelligence',
|
||||||
description: 'Explore a library of leading LLMs and agentic functions. Pick the ones that fit your use case, from general assistants to specialized reasoning models.',
|
description: 'Explore a library of leading LLMs and agentic functions. Pick the ones that fit your use case, from general assistants to specialized reasoning models.',
|
||||||
icon: TbCircleNumber1Filled,
|
icon: CircleNumber1Icon,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Add Your Knowledge',
|
name: 'Add Your Knowledge',
|
||||||
description:
|
description:
|
||||||
'Connect your data or knowledge base to enable personalized, context-aware results while keeping your information private.',
|
'Connect your data or knowledge base to enable personalized, context-aware results while keeping your information private.',
|
||||||
icon: TbCircleNumber2Filled,
|
icon: CircleNumber2Icon,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Define Your Network',
|
name: 'Define Your Network',
|
||||||
description:
|
description:
|
||||||
'Set up and manage your nodes with ease. Scale compute and storage as you grow, while staying fully sovereign and decentralized.',
|
'Set up and manage your nodes with ease. Scale compute and storage as you grow, while staying fully sovereign and decentralized.',
|
||||||
icon: TbCircleNumber3Filled,
|
icon: CircleNumber3Icon,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export function HomeAurora() {
|
|||||||
<span className="text-bold lg:text-8xl">
|
<span className="text-bold lg:text-8xl">
|
||||||
Project Mycelium.
|
Project Mycelium.
|
||||||
<br className="hidden lg:block" />
|
<br className="hidden lg:block" />
|
||||||
Full Sovereignty for Cloud, Network & AI.
|
Full Sovereignty for<br />Cloud, Network & AI.
|
||||||
</span>
|
</span>
|
||||||
</H1>
|
</H1>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import React from "react";
|
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import createGlobe from "cobe";
|
import createGlobe from "cobe";
|
||||||
import { useEffect, useRef } from "react";
|
import { useEffect, useRef, type ReactNode } from "react";
|
||||||
import { motion } from "motion/react";
|
import { motion } from "motion/react";
|
||||||
import { IconBrandYoutubeFilled } from "@tabler/icons-react";
|
import { IconBrandYoutubeFilled } from "@tabler/icons-react";
|
||||||
import { LockClosedIcon, CogIcon, BoltIcon, CurrencyDollarIcon } from '@heroicons/react/24/solid'
|
import { LockClosedIcon, CogIcon, BoltIcon, CurrencyDollarIcon } from '@heroicons/react/24/solid'
|
||||||
@@ -67,7 +66,7 @@ const FeatureCard = ({
|
|||||||
children,
|
children,
|
||||||
className,
|
className,
|
||||||
}: {
|
}: {
|
||||||
children?: React.ReactNode;
|
children?: ReactNode;
|
||||||
className?: string;
|
className?: string;
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
@@ -77,7 +76,7 @@ const FeatureCard = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const FeatureTitle = ({ children, icon }: { children?: React.ReactNode, icon?: React.ReactNode }) => {
|
const FeatureTitle = ({ children, icon }: { children?: ReactNode; icon?: ReactNode }) => {
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
{icon}
|
{icon}
|
||||||
@@ -88,7 +87,7 @@ const FeatureTitle = ({ children, icon }: { children?: React.ReactNode, icon?: R
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const FeatureDescription = ({ children }: { children?: React.ReactNode }) => {
|
const FeatureDescription = ({ children }: { children?: ReactNode }) => {
|
||||||
return (
|
return (
|
||||||
<p
|
<p
|
||||||
className={cn(
|
className={cn(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import { Globe } from "@/components/ui/Globe"
|
import { Globe } from "@/components/ui/Globe"
|
||||||
import { motion } from "framer-motion"
|
import { motion } from "framer-motion"
|
||||||
import { H2, P, CT, CP, SectionHeader, Eyebrow } from "@/components/Texts"
|
import { P, CT, CP, SectionHeader, Eyebrow } from "@/components/Texts"
|
||||||
import { CountUpNumber } from '@/components/CountUpNumber'
|
import { CountUpNumber } from '@/components/CountUpNumber'
|
||||||
|
|
||||||
export function WorldMap() {
|
export function WorldMap() {
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
import { AnimatedSection } from '../../components/AnimatedSection'
|
import { AnimatedSection } from '../../components/AnimatedSection'
|
||||||
import { HomeAurora } from './HomeAurora'
|
import { HomeAurora } from './HomeAurora'
|
||||||
import { HomeFeatures } from './HomeFeatures'
|
|
||||||
import { HomeFeaturesDark } from './HomeFeaturesDark'
|
import { HomeFeaturesDark } from './HomeFeaturesDark'
|
||||||
import { HomeCloud } from './HomeCloud'
|
|
||||||
import { HomeAgent } from './HomeAgent'
|
|
||||||
import { StackSectionLight } from './StackSection'
|
import { StackSectionLight } from './StackSection'
|
||||||
import { WorldMap } from './HomeGlobe'
|
import { WorldMap } from './HomeGlobe'
|
||||||
import { HomeBenefits } from './HomeBenefits'
|
import { HomeBenefits } from './HomeBenefits'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { StackedCubesLight } from "@/components/ui/StackedCubesLight";
|
import { StackedCubesLight } from "@/components/ui/StackedCubesLight";
|
||||||
import { H2, P, SectionHeader, Eyebrow } from "@/components/Texts";
|
import { P, SectionHeader, Eyebrow } from "@/components/Texts";
|
||||||
import { FadeIn } from "@/components/ui/FadeIn";
|
import { FadeIn } from "@/components/ui/FadeIn";
|
||||||
import { DottedGlowBackground } from '@/components/ui/dotted-glow-background';
|
import { DottedGlowBackground } from '@/components/ui/dotted-glow-background';
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import clsx from 'clsx'
|
|||||||
import {
|
import {
|
||||||
type MotionProps,
|
type MotionProps,
|
||||||
type Variant,
|
type Variant,
|
||||||
type Variants,
|
|
||||||
AnimatePresence,
|
AnimatePresence,
|
||||||
motion,
|
motion,
|
||||||
} from 'framer-motion'
|
} from 'framer-motion'
|
||||||
@@ -137,12 +136,6 @@ function DeviceTouchIcon(props: React.ComponentPropsWithoutRef<'svg'>) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const headerAnimation: Variants = {
|
|
||||||
initial: { opacity: 0, transition: { duration: 0.3 } },
|
|
||||||
animate: { opacity: 1, transition: { duration: 0.3, delay: 0.3 } },
|
|
||||||
exit: { opacity: 0, transition: { duration: 0.3 } },
|
|
||||||
}
|
|
||||||
|
|
||||||
const maxZIndex = 2147483647
|
const maxZIndex = 2147483647
|
||||||
|
|
||||||
const bodyVariantBackwards: Variant = {
|
const bodyVariantBackwards: Variant = {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ type Props = {
|
|||||||
|
|
||||||
const ACCENT = '#00b8db';
|
const ACCENT = '#00b8db';
|
||||||
const STROKE = '#111827';
|
const STROKE = '#111827';
|
||||||
const GRAY = '#9CA3AF';
|
|
||||||
const GRAY_LT = '#E5E7EB';
|
const GRAY_LT = '#E5E7EB';
|
||||||
|
|
||||||
const IconSquare = () => (
|
const IconSquare = () => (
|
||||||
|
|||||||
@@ -10,4 +10,22 @@ export default defineConfig({
|
|||||||
'@': path.resolve(__dirname, './src'),
|
'@': path.resolve(__dirname, './src'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
build: {
|
||||||
|
rollupOptions: {
|
||||||
|
output: {
|
||||||
|
manualChunks: {
|
||||||
|
react: ['react', 'react-dom', 'react-router', 'react-router-dom'],
|
||||||
|
framer: ['framer-motion'],
|
||||||
|
motion: ['motion/react'],
|
||||||
|
antd: [
|
||||||
|
'antd',
|
||||||
|
'rc-field-form',
|
||||||
|
'rc-motion',
|
||||||
|
'@ant-design/cssinjs',
|
||||||
|
'@rc-component/async-validator',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user