From eff4278d86875d643e3d0341358d33725bc17a5e Mon Sep 17 00:00:00 2001 From: Jonghyeon Ko Date: Fri, 20 Dec 2024 08:09:43 +0900 Subject: [PATCH] docs: main page --- docs/package.json | 11 +- docs/src/components/main.tsx | 391 ++++++++++++++++- docs/src/pages/ko/_meta.tsx | 2 +- docs/src/pages/ko/index.mdx | 4 +- docs/theme.config.tsx | 44 +- yarn.lock | 783 ++++++++++++++++++++++++++++++++++- 6 files changed, 1215 insertions(+), 20 deletions(-) diff --git a/docs/package.json b/docs/package.json index 46cb6cd..b7d2eb2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -6,21 +6,30 @@ "build": "next build", "start": "next start" }, + "type": "commonjs", "dependencies": { "@codesandbox/sandpack-react": "^2.19.10", + "@react-three/drei": "^9.120.4", + "@react-three/fiber": "^8.17.10", "@stylexjs/stylex": "^0.9.3", "@stylexswc/nextjs-plugin": "^0.5.0", + "@suspensive/react": "^2.18.10", + "codehike": "^1.0.4", + "motion": "^11.15.0", "next": "^15.1.0", "nextra": "^3.2.5", "nextra-theme-docs": "^3.2.5", "react": "^18.0.0", "react-dom": "^18.0.0", - "remark-sandpack": "^0.0.5" + "remark-sandpack": "^0.0.5", + "three": "^0.171.0", + "zod": "^3.24.1" }, "devDependencies": { "@types/node": "22.10.2", "@types/react": "^18", "@types/react-dom": "^18", + "@types/three": "^0", "typescript": "^5" } } diff --git a/docs/src/components/main.tsx b/docs/src/components/main.tsx index fd1680f..1d0b73c 100644 --- a/docs/src/components/main.tsx +++ b/docs/src/components/main.tsx @@ -1,6 +1,133 @@ +import { Canvas, useFrame, useThree } from '@react-three/fiber'; import * as stylex from '@stylexjs/stylex'; +import { Delay } from '@suspensive/react'; +import { motion } from 'motion/react'; import { useRouter } from 'nextra/hooks'; import { Link } from 'nextra-theme-docs'; +import React, { useEffect, useRef, useState } from 'react'; +import * as THREE from 'three'; + +const vertexShader = ` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } +`; + +const fragmentShader = ` + vec2 hash(vec2 p) { + p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3))); + return -1.0 + 2.0 * fract(sin(p) * 43758.5453123); + } + + float noise(vec2 p) { + const float K1 = 0.366025404; // (sqrt(3)-1)/2 + const float K2 = 0.211324865; // (3-sqrt(3))/6 + vec2 i = floor(p + (p.x + p.y) * K1); + vec2 a = p - i + (i.x + i.y) * K2; + vec2 o = (a.x > a.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); + vec2 b = a - o + K2; + vec2 c = a - 1.0 + 2.0 * K2; + vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0); + vec3 n = h * h * h * h * vec3(dot(a, hash(i)), dot(b, hash(i + o)), dot(c, hash(i + 1.0))); + return dot(n, vec3(70.0)); + } + + uniform float time; + varying vec2 vUv; + + void main() { + vec2 pos = vUv - 0.5; + float len = length(pos); + float angle = atan(pos.y, pos.x); + float radius = len; + angle += time * 2.0; + pos = vec2(cos(angle), sin(angle)) * radius; + + float n = noise(pos * 5.0 + time * 0.5); + n += 0.5 * noise(pos * 10.0 + time * 1.0); + n += 0.25 * noise(pos * 20.0 + time * 2.0); + + vec3 color = mix(vec3(0.0, 0.0, 1.0), vec3(1.0, 0.0, 1.0), n); + color = mix(color, vec3(1.0, 1.0, 1.0), len); + + float alpha = 1.0 - smoothstep(0.3, 0.5, len); + + gl_FragColor = vec4(color, alpha); + } +`; + +const BurningCircle = () => { + const materialRef = useRef(null); + const [outerRadius, setOuterRadius] = useState(3.4); // 초기 외부 반지름 설정 + + useFrame(({ clock }) => { + if (materialRef.current) { + const elapsedTime = clock.getElapsedTime(); + materialRef.current.uniforms.time.value = elapsedTime; + // 외부 반지름을 시간에 따라 증가 + setOuterRadius((prev) => prev + elapsedTime * 0.001); + } + }); + + return ( + + + + + ); +}; + +const MixedControlledCamera: React.FC = () => { + const { camera } = useThree(); + + useFrame(({ clock }) => { + const elapsedTime = clock.getElapsedTime(); + // Math.sin으로 부드럽게 반복하는 값을 생성 (-1 ~ 1) + const oscillation = Math.sin(Number(elapsedTime) * 2); + camera.position.z = THREE.MathUtils.lerp(3, 3.2, (oscillation + 1) / 2); + }); + + const handleMouseMove = (event: MouseEvent) => { + const { innerWidth, innerHeight } = window; + const x = (event.clientX / innerWidth - 0.5) * 2; // -1 ~ 1 + const y = -(event.clientY / innerHeight - 0.5) * 2; // -1 ~ 1 + + camera.rotation.y = x * 0.05; // 마우스 좌우 회전 + camera.rotation.x = y * 0.05; // 마우스 상하 회전 + camera.position.z = 3; + }; + + const handleDeviceOrientation = (event: DeviceOrientationEvent) => { + const { beta, gamma } = event; // 자이로스코프 값 + if (beta !== null && gamma !== null) { + camera.rotation.x += THREE.MathUtils.degToRad((beta - 45) * 0.001); // 자이로스코프 상하 + camera.rotation.y += THREE.MathUtils.degToRad(gamma * 0.001); // 자이로스코프 좌우 + camera.position.z = 3; + } + }; + + useEffect(() => { + window.addEventListener('mousemove', handleMouseMove); + window.addEventListener('deviceorientation', handleDeviceOrientation); + + return () => { + window.removeEventListener('mousemove', handleMouseMove); + window.removeEventListener('deviceorientation', handleDeviceOrientation); + }; + }, []); + + return null; +}; type MainProps = { title: string; @@ -9,20 +136,94 @@ type MainProps = { items: Array<{ title: string; description: string }>; }; -export function Main({ title, description, navButtonText, items }: MainProps) { +export function Main({ navButtonText, items }: MainProps) { const router = useRouter(); return (
-
-

{title}

-

{description}

- +
+ + + + + + + + + + + + + + + + + + Declarative Overlay Pattern + + } + > + + overlay-kit + + + + {navButtonText} + + + +
+
{items.map(({ title, description }) => (
@@ -42,8 +243,6 @@ const styles = stylex.create({ root: { display: 'flex', flexDirection: 'column', - gap: 120, - paddingTop: 98, }, mainRoot: { display: 'flex', @@ -73,7 +272,10 @@ const styles = stylex.create({ color: 'white', }, cardRoot: { + maxWidth: 1440, + padding: '66px 16px', display: 'flex', + margin: 'auto', gap: 32, }, card: { @@ -101,3 +303,170 @@ const backtickToCodeBlock = (text: string) => text.replace(/`([^`]+)`/g, `$1`); const formatCodeBlocks = (desc: string) => backtickToCodeBlock(escapeHtml(desc)); + +const LineCircle: React.FC = () => { + const lineCount = 60000; // 선분의 개수 + const radius = 2; // 원의 반지름 + + // 각 선분의 시작점과 끝점을 계산 + const vertices = React.useMemo(() => { + const positions = []; + for (let i = 0; i < lineCount; i++) { + const angle = (i / lineCount) * Math.PI * 2; // 현재 각도 + const nextAngle = ((i + 1) / lineCount) * Math.PI * 2; // 다음 각도 + + // 선분의 시작점 + const x1 = Math.cos(angle) * (radius + 0.2 * Math.random()); + const y1 = Math.sin(angle) * (radius + 0.2 * Math.random()); + + // 선분의 끝점 (살짝 안쪽으로 이동) + const x2 = Math.cos(nextAngle) * (radius - 0.3 * Math.random()); + const y2 = Math.sin(nextAngle) * (radius - 0.3 * Math.random()); + + positions.push(x1, y1, Math.random() * 0.8); // 시작점 + positions.push(x2, y2, Math.random() * 0.8); // 끝점 + } + return new Float32Array(positions); + }, [lineCount, radius]); + + return ( + + + + + + + ); +}; + +interface Vertex { + pos: number[]; + velocity: number[]; + distance: number; + size: number; +} + +const TILE = 16; +const OFFSET_FACTOR = 0.75; +const RANDOM_Z_FACTOR = 2; +const VELOCITY_CONSTANT = 8; +const RANDOM_DISTANCE_MAX = 900; +const RANDOM_SIZE_FACTOR = 2; + +const StarCanvasFar = () => { + const animationFrameIdRef = useRef(null); + const resizeAnimationFrameIdRef = useRef(0); + const onRenderRef = useRef(null); + const canvasRef = useRef(null); + + useEffect(() => { + const canvas = canvasRef.current; + const parentElement = canvas?.parentElement; + const ctx = canvas?.getContext('2d'); + const vertexMap: Record = {}; + const startTime = Date.now(); + + function getVertex(sx: number, sy: number): Vertex { + const id = `${sx}x${sy}`; + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!vertexMap[id]) { + const x = TILE * sx + TILE * 1.5 * Math.random() - TILE * OFFSET_FACTOR; + const y = TILE * sy + TILE * 1.5 * Math.random() - TILE * OFFSET_FACTOR; + const z = Math.random() * RANDOM_Z_FACTOR; + const vx = 1 + Math.random() * VELOCITY_CONSTANT; + const vy = 1 + Math.random() * VELOCITY_CONSTANT; + const distance = 10 + Math.random() * RANDOM_DISTANCE_MAX; + const size = 0.1 + Math.random() * RANDOM_SIZE_FACTOR; + + vertexMap[id] = { + pos: [x, y, z], + velocity: [vx, vy], + size, + distance, + }; + } + return vertexMap[id]; + } + + onRenderRef.current = () => { + const width = canvas?.width ?? 0; + const height = canvas?.height ?? 0; + const distTime = Date.now() - startTime; + + ctx?.clearRect(0, 0, width, height); + + const maxSX = Math.ceil(width / TILE); + const maxSY = Math.ceil(height / TILE); + + for (let sx = 0; sx <= maxSX; ++sx) { + for (let sy = 0; sy <= maxSY; ++sy) { + const { velocity, distance, pos, size } = getVertex(sx, sy); + const scalar = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]); + const totalDistance = (distTime * scalar) / 1000; + const isReverse = Math.floor(totalDistance / distance) % 2 !== 0; + let nextDistance = totalDistance % distance; + + if (isReverse) { + nextDistance = distance - nextDistance; + } + const x = pos[0] + (nextDistance / scalar) * velocity[0]; + const y = pos[1] + (nextDistance / scalar) * velocity[1]; + const a = 1 - pos[2]; + + ctx?.beginPath(); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + ctx!.fillStyle = `rgba(255, 255, 255, ${a})`; + ctx?.arc(x, y, size, 0, 2 * Math.PI); + ctx?.fill(); + } + } + }; + const observer = new ResizeObserver(() => { + const inlineSize = parentElement?.offsetWidth ?? 0; + const blockSize = parentElement?.offsetHeight ?? 0; + + cancelAnimationFrame(resizeAnimationFrameIdRef.current); + resizeAnimationFrameIdRef.current = requestAnimationFrame(() => { + if (canvas) { + canvas.width = inlineSize; + canvas.height = blockSize; + canvas.style.cssText += `width: ${inlineSize}px; height: ${blockSize}px;`; + onRenderRef.current?.(); + } + }); + }); + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + parentElement && observer.observe(parentElement); + + return () => { + cancelAnimationFrame(resizeAnimationFrameIdRef.current); + observer.disconnect(); + }; + }, []); + + useEffect(() => { + const requestAnimation = () => { + onRenderRef.current?.(); + animationFrameIdRef.current = requestAnimationFrame(requestAnimation); + }; + + if (animationFrameIdRef.current === null) { + animationFrameIdRef.current = requestAnimationFrame(requestAnimation); + } + + return () => { + if (animationFrameIdRef.current !== null) { + cancelAnimationFrame(animationFrameIdRef.current); + animationFrameIdRef.current = null; + } + }; + }, []); + + return ( + + ); +}; diff --git a/docs/src/pages/ko/_meta.tsx b/docs/src/pages/ko/_meta.tsx index 798ddad..4640c6e 100644 --- a/docs/src/pages/ko/_meta.tsx +++ b/docs/src/pages/ko/_meta.tsx @@ -3,7 +3,7 @@ export default { type: 'page', display: 'hidden', theme: { - layout: 'full', + layout: 'raw', }, }, docs: { diff --git a/docs/src/pages/ko/index.mdx b/docs/src/pages/ko/index.mdx index 6cb0fa0..16da249 100644 --- a/docs/src/pages/ko/index.mdx +++ b/docs/src/pages/ko/index.mdx @@ -1,4 +1,4 @@ -import { Main } from '@/components'; +import { Main, Scrollycoding } from '@/components';
+ + diff --git a/docs/theme.config.tsx b/docs/theme.config.tsx index 9afbf1a..1e61243 100644 --- a/docs/theme.config.tsx +++ b/docs/theme.config.tsx @@ -1,5 +1,19 @@ -export default { - logo: overlay-kit, +import { motion } from 'motion/react'; +import { useRouter } from 'nextra/hooks'; +import { type DocsThemeConfig } from 'nextra-theme-docs'; + +const config: DocsThemeConfig = { + logo: () => { + const router = useRouter(); + if (router.pathname === '/ko' || router.pathname === '/en') { + return <>; + } + return ( + + overlay-kit + + ); + }, project: { link: 'https://github.com/toss/overlay-kit', }, @@ -7,4 +21,30 @@ export default { { locale: 'en', name: 'English' }, { locale: 'ko', name: '한국어' }, ], + darkMode: false, + nextThemes: { + forcedTheme: 'dark', + }, + main: function Main({ children }: { children: React.ReactNode }) { + const router = useRouter(); + + return ( + + {children} + + ); + }, + search: { + placeholder: function Placeholder() { + const router = useRouter(); + + if (router.locale === 'ko') { + return '검색어를 입력하세요...'; + } + + return 'Search documentation...'; + }, + }, }; + +export default config; diff --git a/yarn.lock b/yarn.lock index fbdced9..34dfe2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -487,6 +487,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/runtime@npm:7.26.0" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287 + languageName: node + linkType: hard + "@babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.5.5": version: 7.24.7 resolution: "@babel/runtime@npm:7.24.7" @@ -868,6 +877,15 @@ __metadata: languageName: node linkType: hard +"@code-hike/lighter@npm:1.0.1": + version: 1.0.1 + resolution: "@code-hike/lighter@npm:1.0.1" + dependencies: + ansi-sequence-parser: "npm:1.1.1" + checksum: 10c0/20c77d116cb4fbd5d1a5a4aa0a02640f9dd883ee68a3449a1906d90183b65b77afeca7a186d2b7330761b8f8ba02722bcba62eb6f3ee242dad58cf4d661075af + languageName: node + linkType: hard + "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.4.0": version: 6.18.3 resolution: "@codemirror/autocomplete@npm:6.18.3" @@ -2176,6 +2194,13 @@ __metadata: languageName: node linkType: hard +"@mediapipe/tasks-vision@npm:0.10.17": + version: 0.10.17 + resolution: "@mediapipe/tasks-vision@npm:0.10.17" + checksum: 10c0/f2f5dd9ca39d562b902a6d964f8b786f17a143f42776d0d26b8c79632b10cf210e28d98ec92de757b7bb2e6595ed4f9bbf5e49f1709b09dc08709bd276ced442 + languageName: node + linkType: hard + "@mermaid-js/parser@npm:^0.3.0": version: 0.3.0 resolution: "@mermaid-js/parser@npm:0.3.0" @@ -2185,6 +2210,17 @@ __metadata: languageName: node linkType: hard +"@monogrid/gainmap-js@npm:^3.0.6": + version: 3.1.0 + resolution: "@monogrid/gainmap-js@npm:3.1.0" + dependencies: + promise-worker-transferable: "npm:^1.0.4" + peerDependencies: + three: ">= 0.159.0" + checksum: 10c0/0afae39fdca31456a57803d5751c0e5b742d8dfac53aa95b21b43fbf02ad250cd80f5ae0368071128729754b89ff1be6317e1e23be86706c0d3e227bb5f82db2 + languageName: node + linkType: hard + "@motionone/animation@npm:^10.12.0": version: 10.18.0 resolution: "@motionone/animation@npm:10.18.0" @@ -2672,6 +2708,73 @@ __metadata: languageName: node linkType: hard +"@react-spring/animated@npm:~9.7.5": + version: 9.7.5 + resolution: "@react-spring/animated@npm:9.7.5" + dependencies: + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/f8c2473c60f39a878c7dd0fdfcfcdbc720521e1506aa3f63c9de64780694a0a73d5ccc535a5ccec3520ddb70a71cf43b038b32c18e99531522da5388c510ecd7 + languageName: node + linkType: hard + +"@react-spring/core@npm:~9.7.5": + version: 9.7.5 + resolution: "@react-spring/core@npm:9.7.5" + dependencies: + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/5bfd83dfe248cd91889f215f015d908c7714ef445740fd5afa054b27ebc7d5a456abf6c309e2459d9b5b436e78d6fda16b62b9601f96352e9130552c02270830 + languageName: node + linkType: hard + +"@react-spring/rafz@npm:~9.7.5": + version: 9.7.5 + resolution: "@react-spring/rafz@npm:9.7.5" + checksum: 10c0/8bdad180feaa9a0e870a513043a5e98a4e9b7292a9f887575b7e6fadab2677825bc894b7ff16c38511b35bfe6cc1072df5851c5fee64448d67551559578ca759 + languageName: node + linkType: hard + +"@react-spring/shared@npm:~9.7.5": + version: 9.7.5 + resolution: "@react-spring/shared@npm:9.7.5" + dependencies: + "@react-spring/rafz": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/0207eacccdedd918a2fc55e78356ce937f445ce27ad9abd5d3accba8f9701a39349b55115641dc2b39bb9d3a155b058c185b411d292dc8cc5686bfa56f73b94f + languageName: node + linkType: hard + +"@react-spring/three@npm:~9.7.5": + version: 9.7.5 + resolution: "@react-spring/three@npm:9.7.5" + dependencies: + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/core": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" + peerDependencies: + "@react-three/fiber": ">=6.0" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + three: ">=0.126" + checksum: 10c0/793f2c27a55060b015880e661ede045f240e4be9b85f448616fb0f8f282bed21d08fb2389a70c73addffbdb868c38bc26d8c6f6f55dd2b0ef67ba6c5a11a55d9 + languageName: node + linkType: hard + +"@react-spring/types@npm:~9.7.5": + version: 9.7.5 + resolution: "@react-spring/types@npm:9.7.5" + checksum: 10c0/85c05121853cacb64f7cf63a4855e9044635e1231f70371cd7b8c78bc10be6f4dd7c68f592f92a2607e8bb68051540989b4677a2ccb525dba937f5cd95dc8bc1 + languageName: node + linkType: hard + "@react-stately/utils@npm:^3.10.5": version: 3.10.5 resolution: "@react-stately/utils@npm:3.10.5" @@ -2683,6 +2786,87 @@ __metadata: languageName: node linkType: hard +"@react-three/drei@npm:^9.120.4": + version: 9.120.4 + resolution: "@react-three/drei@npm:9.120.4" + dependencies: + "@babel/runtime": "npm:^7.26.0" + "@mediapipe/tasks-vision": "npm:0.10.17" + "@monogrid/gainmap-js": "npm:^3.0.6" + "@react-spring/three": "npm:~9.7.5" + "@use-gesture/react": "npm:^10.3.1" + camera-controls: "npm:^2.9.0" + cross-env: "npm:^7.0.3" + detect-gpu: "npm:^5.0.56" + glsl-noise: "npm:^0.0.0" + hls.js: "npm:^1.5.17" + maath: "npm:^0.10.8" + meshline: "npm:^3.3.1" + react-composer: "npm:^5.0.3" + stats-gl: "npm:^2.2.8" + stats.js: "npm:^0.17.0" + suspend-react: "npm:^0.1.3" + three-mesh-bvh: "npm:^0.7.8" + three-stdlib: "npm:^2.34.0" + troika-three-text: "npm:^0.52.0" + tunnel-rat: "npm:^0.1.2" + utility-types: "npm:^3.11.0" + uuid: "npm:^9.0.1" + zustand: "npm:^5.0.1" + peerDependencies: + "@react-three/fiber": ^8 || ^9.0.0-0 + react: ^18 + react-dom: ^18 + three: ">=0.137" + peerDependenciesMeta: + react-dom: + optional: true + checksum: 10c0/63b4c043a252bc4e22ca56b5b5b399b6bad3b62c3e0c8b530bc540ffec418bf4391590ca71e14cef3ee3b91c0aeca16bbc2b1b49f7cc5ee696ccf27d69a1dc4d + languageName: node + linkType: hard + +"@react-three/fiber@npm:^8.17.10": + version: 8.17.10 + resolution: "@react-three/fiber@npm:8.17.10" + dependencies: + "@babel/runtime": "npm:^7.17.8" + "@types/debounce": "npm:^1.2.1" + "@types/react-reconciler": "npm:^0.26.7" + "@types/webxr": "npm:*" + base64-js: "npm:^1.5.1" + buffer: "npm:^6.0.3" + debounce: "npm:^1.2.1" + its-fine: "npm:^1.0.6" + react-reconciler: "npm:^0.27.0" + scheduler: "npm:^0.21.0" + suspend-react: "npm:^0.1.3" + zustand: "npm:^3.7.1" + peerDependencies: + expo: ">=43.0" + expo-asset: ">=8.4" + expo-file-system: ">=11.0" + expo-gl: ">=11.0" + react: ">=18.0" + react-dom: ">=18.0" + react-native: ">=0.64" + three: ">=0.133" + peerDependenciesMeta: + expo: + optional: true + expo-asset: + optional: true + expo-file-system: + optional: true + expo-gl: + optional: true + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/650f1dac4e275e05757297e58b1413b46a322fd9b05ea381c94118ed2be582f132a905890aa41fca73a43d96752470859aa3f93c8b0b95175807d70aaef634a6 + languageName: node + linkType: hard + "@react-types/shared@npm:^3.26.0": version: 3.26.0 resolution: "@react-types/shared@npm:3.26.0" @@ -3153,6 +3337,15 @@ __metadata: languageName: node linkType: hard +"@suspensive/react@npm:^2.18.10": + version: 2.18.10 + resolution: "@suspensive/react@npm:2.18.10" + peerDependencies: + react: ^18 || ^19 + checksum: 10c0/6de1cec1f05ddc775d7dd026e129d8b6f36e4e0dd0b42d7e7cf343ef5a6fcf5952bd0fc7f1214af569401a7d1b911ba5aa2013cac99a173d221a66194e5d504d + languageName: node + linkType: hard + "@swc/counter@npm:0.1.3": version: 0.1.3 resolution: "@swc/counter@npm:0.1.3" @@ -3270,6 +3463,13 @@ __metadata: languageName: node linkType: hard +"@tweenjs/tween.js@npm:~23.1.3": + version: 23.1.3 + resolution: "@tweenjs/tween.js@npm:23.1.3" + checksum: 10c0/811b30f5f0e7409fb41833401c501c2d6f600eb5f43039dd9067a7f70aff6dad5f5ce1233848e13f0b33a269a160d9c133f344d986cbff4f1f6b72ddecd06c89 + languageName: node + linkType: hard + "@types/acorn@npm:^4.0.0": version: 4.0.6 resolution: "@types/acorn@npm:4.0.6" @@ -3599,6 +3799,13 @@ __metadata: languageName: node linkType: hard +"@types/debounce@npm:^1.2.1": + version: 1.2.4 + resolution: "@types/debounce@npm:1.2.4" + checksum: 10c0/89db97397312b1273be74b326133af4744e5f63b726016bb6eb5c31b94f07a2f3bd3fb5bc3a3667bce506f01ede46c9abbfb88a4745ee9f34641fb636ab51210 + languageName: node + linkType: hard + "@types/debug@npm:^4.0.0": version: 4.1.12 resolution: "@types/debug@npm:4.1.12" @@ -3608,6 +3815,13 @@ __metadata: languageName: node linkType: hard +"@types/draco3d@npm:^1.4.0": + version: 1.4.10 + resolution: "@types/draco3d@npm:1.4.10" + checksum: 10c0/431e333b2fd67e2b081e8697e71dfb82a125fc04b2cbfa0205e4d521719d3749c964b2bf82bb7944ba0a12e5bc3d9afe387a58e68b195d838fcdbc65c8572a35 + languageName: node + linkType: hard + "@types/eslint@npm:*": version: 8.56.10 resolution: "@types/eslint@npm:8.56.10" @@ -3766,6 +3980,13 @@ __metadata: languageName: node linkType: hard +"@types/offscreencanvas@npm:^2019.6.4": + version: 2019.7.3 + resolution: "@types/offscreencanvas@npm:2019.7.3" + checksum: 10c0/6d1dfae721d321cd2b5435f347a0e53b09f33b2f9e9333396480f592823bc323847b8169f7d251d2285cb93dbc1ba2e30741ac5cf4b1c003d660fd4c24526963 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.12 resolution: "@types/prop-types@npm:15.7.12" @@ -3818,6 +4039,24 @@ __metadata: languageName: node linkType: hard +"@types/react-reconciler@npm:^0.26.7": + version: 0.26.7 + resolution: "@types/react-reconciler@npm:0.26.7" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/ed01a9cdc81db41f244552a16a7b168acb32f2f11f7529b020a9a65fae77a12c5f51bbf62e147955c453a41582a5eceae5bedebbc022e9d99a2714d3cb68df21 + languageName: node + linkType: hard + +"@types/react-reconciler@npm:^0.28.0": + version: 0.28.9 + resolution: "@types/react-reconciler@npm:0.28.9" + peerDependencies: + "@types/react": "*" + checksum: 10c0/9fe71fa856aab2cd4742fe0416bdd4f5c82ecc05ef6451ee7fcb65a5efdf5fa588f5820fbe2a665b15371b0da3bfc4097f28bb6d450b9a834af2d0fc00f403bd + languageName: node + linkType: hard + "@types/react@npm:*, @types/react@npm:^18.2.0": version: 18.3.3 resolution: "@types/react@npm:18.3.3" @@ -3883,6 +4122,27 @@ __metadata: languageName: node linkType: hard +"@types/stats.js@npm:*": + version: 0.17.3 + resolution: "@types/stats.js@npm:0.17.3" + checksum: 10c0/ccccc992c6dfe08fb85049aa3ce44ca7e428db8da4a3edd20298f1c8b72768021fa8bacdfbe8e9735a7552ee5d57f667c6f557050ad2d9a87b699b3566a6177a + languageName: node + linkType: hard + +"@types/three@npm:*, @types/three@npm:^0": + version: 0.171.0 + resolution: "@types/three@npm:0.171.0" + dependencies: + "@tweenjs/tween.js": "npm:~23.1.3" + "@types/stats.js": "npm:*" + "@types/webxr": "npm:*" + "@webgpu/types": "npm:*" + fflate: "npm:~0.8.2" + meshoptimizer: "npm:~0.18.1" + checksum: 10c0/749d4dbabc6a8d67ece70d3f0de267391a836abb0e25e1379998e2058f3f651df99b0a1bc95f45dbab6b8f4f2c0b70b35a3c9f540a78620e60d02b93db54cb28 + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.7": version: 2.0.7 resolution: "@types/trusted-types@npm:2.0.7" @@ -3918,6 +4178,13 @@ __metadata: languageName: node linkType: hard +"@types/webxr@npm:*, @types/webxr@npm:^0.5.2": + version: 0.5.20 + resolution: "@types/webxr@npm:0.5.20" + checksum: 10c0/f8bddda79a43bfc31ce92d9c4b6d324390c40382e4981262b6217199636b5b7cb77228dea35ce18a054a2d2e9c19d1c59e3f7b14f450527b72764db786c8c7b9 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:7.12.0": version: 7.12.0 resolution: "@typescript-eslint/eslint-plugin@npm:7.12.0" @@ -4061,6 +4328,24 @@ __metadata: languageName: node linkType: hard +"@use-gesture/core@npm:10.3.1": + version: 10.3.1 + resolution: "@use-gesture/core@npm:10.3.1" + checksum: 10c0/2e3b5c0f7fe26cdb47be3a9c2a58a6a9edafc5b2895b07d2898eda9ab5a2b29fb0098b15597baa0856907b593075cd44cc69bba4785c9cfb7b6fabaa3b52cd3e + languageName: node + linkType: hard + +"@use-gesture/react@npm:^10.3.1": + version: 10.3.1 + resolution: "@use-gesture/react@npm:10.3.1" + dependencies: + "@use-gesture/core": "npm:10.3.1" + peerDependencies: + react: ">= 16.8.0" + checksum: 10c0/978da66e4e7c424866ad52eba8fdf0ce93a4c8fc44f8837c7043e68c6a6107cd67e817fffb27f7db2ae871ef2f6addb0c8ddf1586f24c67b7e6aef1646c668cf + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:^4.3.4": version: 4.3.4 resolution: "@vitejs/plugin-react@npm:4.3.4" @@ -4402,6 +4687,13 @@ __metadata: languageName: node linkType: hard +"@webgpu/types@npm:*": + version: 0.1.52 + resolution: "@webgpu/types@npm:0.1.52" + checksum: 10c0/584c92ce8e35c487b287bee2805e0b5fdf1ebcda51826094d4bb75796c58c9e6b8f33c53c1d7012d14f3419d61ae309c84a202a84e2b6a829ad361b569eed9c1 + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -4541,6 +4833,13 @@ __metadata: languageName: node linkType: hard +"ansi-sequence-parser@npm:1.1.1": + version: 1.1.1 + resolution: "ansi-sequence-parser@npm:1.1.1" + checksum: 10c0/ab2259ccf69f145ecf1418d4e71524158828f44afdf37c7536677871f4cebaa8b176fcb95de8f94a68129357dddc59586597da25f9d4ebf9968f6ef022bf0b31 + languageName: node + linkType: hard + "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" @@ -4760,7 +5059,7 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.3.1": +"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf @@ -4787,6 +5086,15 @@ __metadata: languageName: node linkType: hard +"bidi-js@npm:^1.0.2": + version: 1.0.3 + resolution: "bidi-js@npm:1.0.3" + dependencies: + require-from-string: "npm:^2.0.2" + checksum: 10c0/fdddea4aa4120a34285486f2267526cd9298b6e8b773ad25e765d4f104b6d7437ab4ba542e6939e3ac834a7570bcf121ee2cf6d3ae7cd7082c4b5bedc8f271e1 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" @@ -4934,6 +5242,15 @@ __metadata: languageName: node linkType: hard +"camera-controls@npm:^2.9.0": + version: 2.9.0 + resolution: "camera-controls@npm:2.9.0" + peerDependencies: + three: ">=0.126.1" + checksum: 10c0/a772881a7a290615f144dac35e9fae78db14472e96eeb6cdf8d328a40f76bf007e64fb4ed093b1256e5b3bb9b9da2a94b97f623bbbd5cbd9485e6e75dc84af75 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001579, caniuse-lite@npm:^1.0.30001669": version: 1.0.30001688 resolution: "caniuse-lite@npm:1.0.30001688" @@ -5215,6 +5532,19 @@ __metadata: languageName: node linkType: hard +"codehike@npm:^1.0.4": + version: 1.0.4 + resolution: "codehike@npm:1.0.4" + dependencies: + "@code-hike/lighter": "npm:1.0.1" + diff: "npm:^5.1.0" + estree-util-visit: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/f2efc7dfda853b7bd4e6f6c6d820b0f9817b6858758c9fd88e83cc7f160914da0df5506306084e8808ea1d20a45f3c5d11219b795b961a5dd2eda5c89c037614 + languageName: node + linkType: hard + "collapse-white-space@npm:^2.0.0": version: 2.1.0 resolution: "collapse-white-space@npm:2.1.0" @@ -5387,6 +5717,18 @@ __metadata: languageName: node linkType: hard +"cross-env@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: "npm:^7.0.1" + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 10c0/f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf + languageName: node + linkType: hard + "cross-spawn@npm:^5.1.0": version: 5.1.0 resolution: "cross-spawn@npm:5.1.0" @@ -5409,6 +5751,17 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^7.0.1": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + "css-mediaquery@npm:^0.1.2": version: 0.1.2 resolution: "css-mediaquery@npm:0.1.2" @@ -5898,6 +6251,13 @@ __metadata: languageName: node linkType: hard +"debounce@npm:^1.2.1": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 10c0/6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -6006,6 +6366,15 @@ __metadata: languageName: node linkType: hard +"detect-gpu@npm:^5.0.56": + version: 5.0.61 + resolution: "detect-gpu@npm:5.0.61" + dependencies: + webgl-constants: "npm:^1.1.1" + checksum: 10c0/48468e5fc3d72addcd5ac10e7e7d9e35fe20e8acb81de716edcae17f9c330e3259de22f00683f5f33f2b0ac485953233d5fb28034596b1cefaa67a7fa70ebc45 + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -6029,6 +6398,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^5.1.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -6051,18 +6427,26 @@ __metadata: resolution: "docs@workspace:docs" dependencies: "@codesandbox/sandpack-react": "npm:^2.19.10" + "@react-three/drei": "npm:^9.120.4" + "@react-three/fiber": "npm:^8.17.10" "@stylexjs/stylex": "npm:^0.9.3" "@stylexswc/nextjs-plugin": "npm:^0.5.0" + "@suspensive/react": "npm:^2.18.10" "@types/node": "npm:22.10.2" "@types/react": "npm:^18" "@types/react-dom": "npm:^18" + "@types/three": "npm:^0" + codehike: "npm:^1.0.4" + motion: "npm:^11.15.0" next: "npm:^15.1.0" nextra: "npm:^3.2.5" nextra-theme-docs: "npm:^3.2.5" react: "npm:^18.0.0" react-dom: "npm:^18.0.0" remark-sandpack: "npm:^0.0.5" + three: "npm:^0.171.0" typescript: "npm:^5" + zod: "npm:^3.24.1" languageName: unknown linkType: soft @@ -6124,6 +6508,13 @@ __metadata: languageName: node linkType: hard +"draco3d@npm:^1.4.1": + version: 1.5.7 + resolution: "draco3d@npm:1.5.7" + checksum: 10c0/4419509bb93c31560a22a1a54e1c394a5b5017cab39941120c75151d941c11dec05925abf31f597ac2694c570b78c04f82aa3d69e5311f8f8e71fc8b9d92d12f + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -7249,7 +7640,14 @@ __metadata: languageName: node linkType: hard -"fflate@npm:^0.8.2": +"fflate@npm:^0.6.9": + version: 0.6.10 + resolution: "fflate@npm:0.6.10" + checksum: 10c0/c452f720e4cb404b300fceb8ef0bdf345f18fbfd3f57f7d0974dce5f5e2ac0e8dd4b6ff4bb7061ae74fd919b9c707172f9dbd44d91149b1137199b8c705768f1 + languageName: node + linkType: hard + +"fflate@npm:^0.8.2, fflate@npm:~0.8.2": version: 0.8.2 resolution: "fflate@npm:0.8.2" checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293 @@ -7397,6 +7795,28 @@ __metadata: languageName: node linkType: hard +"framer-motion@npm:^11.15.0": + version: 11.15.0 + resolution: "framer-motion@npm:11.15.0" + dependencies: + motion-dom: "npm:^11.14.3" + motion-utils: "npm:^11.14.3" + tslib: "npm:^2.4.0" + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 10c0/59f1c1eea09a5cbda346624a7d700bdb1ccff8a8528ed145009db974283064c3a4e55ca9eaaf4950494f254f6233c37634735b9bd8463b25ffeef624030894d6 + languageName: node + linkType: hard + "framer-motion@npm:^11.2.10": version: 11.3.17 resolution: "framer-motion@npm:11.3.17" @@ -7735,6 +8155,13 @@ __metadata: languageName: node linkType: hard +"glsl-noise@npm:^0.0.0": + version: 0.0.0 + resolution: "glsl-noise@npm:0.0.0" + checksum: 10c0/442630e86ed109079f4ed92f3b59d24d0b9da60c03cb8ac9313a056996bf4b5d696b4c6121ee29952e8a19c5cf174a999cfe672464959db36fc75334c3134677 + languageName: node + linkType: hard + "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -8069,6 +8496,13 @@ __metadata: languageName: node linkType: hard +"hls.js@npm:^1.5.17": + version: 1.5.18 + resolution: "hls.js@npm:1.5.18" + checksum: 10c0/38c61a70596f943e7649a9a7b367b6263cffcdaae21b0338b561e69eca8888f126ed94aa5a60ddab3fdf9046fb9babb03169aad98fe9b01d9e4b1b3bad206876 + languageName: node + linkType: hard + "hookable@npm:^5.5.3": version: 5.5.3 resolution: "hookable@npm:5.5.3" @@ -8205,6 +8639,13 @@ __metadata: languageName: node linkType: hard +"immediate@npm:~3.0.5": + version: 3.0.6 + resolution: "immediate@npm:3.0.6" + checksum: 10c0/f8ba7ede69bee9260241ad078d2d535848745ff5f6995c7c7cb41cfdc9ccc213f66e10fa5afb881f90298b24a3f7344b637b592beb4f54e582770cdce3f1f039 + languageName: node + linkType: hard + "import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" @@ -8545,6 +8986,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^2.1.0": + version: 2.2.2 + resolution: "is-promise@npm:2.2.2" + checksum: 10c0/2dba959812380e45b3df0fb12e7cb4d4528c989c7abb03ececb1d1fd6ab1cbfee956ca9daa587b9db1d8ac3c1e5738cf217bdb3dfd99df8c691be4c00ae09069 + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -8708,6 +9156,17 @@ __metadata: languageName: node linkType: hard +"its-fine@npm:^1.0.6": + version: 1.2.5 + resolution: "its-fine@npm:1.2.5" + dependencies: + "@types/react-reconciler": "npm:^0.28.0" + peerDependencies: + react: ">=18.0" + checksum: 10c0/5618955ac7ae0d7788580186f91ac9989301ead2c87250883258cd7ee32f9a4e08574728506d1deb90477090d7a688ba19571126aae9fb25661e90057dd772df + languageName: node + linkType: hard + "jackspeak@npm:^3.1.2": version: 3.1.2 resolution: "jackspeak@npm:3.1.2" @@ -8955,6 +9414,15 @@ __metadata: languageName: node linkType: hard +"lie@npm:^3.0.2": + version: 3.3.0 + resolution: "lie@npm:3.3.0" + dependencies: + immediate: "npm:~3.0.5" + checksum: 10c0/56dd113091978f82f9dc5081769c6f3b947852ecf9feccaf83e14a123bc630c2301439ce6182521e5fbafbde88e88ac38314327a4e0493a1bea7e0699a7af808 + languageName: node + linkType: hard + "lilconfig@npm:^3.0.0": version: 3.1.1 resolution: "lilconfig@npm:3.1.1" @@ -9125,6 +9593,16 @@ __metadata: languageName: node linkType: hard +"maath@npm:^0.10.8": + version: 0.10.8 + resolution: "maath@npm:0.10.8" + peerDependencies: + "@types/three": ">=0.134.0" + three: ">=0.134.0" + checksum: 10c0/fb61faac89567595f7e25f261f8a9750d0ced674fd16c77c6e486a0c4a00c572fa37969d613d017380f8ea4e8ff357d481dcd94240a104a7969bc7e95b9fe99e + languageName: node + linkType: hard + "magic-string@npm:^0.30.10": version: 0.30.10 resolution: "magic-string@npm:0.30.10" @@ -9545,6 +10023,22 @@ __metadata: languageName: node linkType: hard +"meshline@npm:^3.3.1": + version: 3.3.1 + resolution: "meshline@npm:3.3.1" + peerDependencies: + three: ">=0.137" + checksum: 10c0/95d5c7c90aca350530f37f9ea5c5e333a66ea0c50416fa6372c24a23321837a4c70d92d6a9a5942ee124484855a2d3fc8ca0656305feb8d8f86aa10513e324e4 + languageName: node + linkType: hard + +"meshoptimizer@npm:~0.18.1": + version: 0.18.1 + resolution: "meshoptimizer@npm:0.18.1" + checksum: 10c0/8a825c58b20b65585e8d00788843929b60c66ba4297e89afaa49f7c51ab9a0f7b9130f90cc9ad1b9b48b3d1bee3beb1bc93608acba0d73e78995c3e6e5ca436b + languageName: node + linkType: hard + "mhchemparser@npm:^4.1.0": version: 4.2.1 resolution: "mhchemparser@npm:4.2.1" @@ -10239,6 +10733,13 @@ __metadata: languageName: node linkType: hard +"motion-dom@npm:^11.14.3": + version: 11.14.3 + resolution: "motion-dom@npm:11.14.3" + checksum: 10c0/14989aba2981dcf618dc77d202ac35325366e645fd9e57c6942d88d0696263bbe7d0680da2e5f84e93339a67255bdbfebb8a4994a46584a661dd9a1e136fa7a1 + languageName: node + linkType: hard + "motion-utils@npm:^11.14.1": version: 11.14.1 resolution: "motion-utils@npm:11.14.1" @@ -10246,6 +10747,34 @@ __metadata: languageName: node linkType: hard +"motion-utils@npm:^11.14.3": + version: 11.14.3 + resolution: "motion-utils@npm:11.14.3" + checksum: 10c0/7459bcb27311b72b416b2618cbfd56bad7d0fbec27736529e3f45a561fa78c43bf82e05338d9d9b765649b57d1c693821e83b30c6ba449d6f7f66c5245f072fb + languageName: node + linkType: hard + +"motion@npm:^11.15.0": + version: 11.15.0 + resolution: "motion@npm:11.15.0" + dependencies: + framer-motion: "npm:^11.15.0" + tslib: "npm:^2.4.0" + peerDependencies: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/is-prop-valid": + optional: true + react: + optional: true + react-dom: + optional: true + checksum: 10c0/fe10db69ad3ca7cb3fd2896d4cd6a79ca8080de16f5fdfcf82a6decd474423f4207b7a924dc7bfb405cffb36d7de0e13780f1a623287be354ced65c78a612c99 + languageName: node + linkType: hard + "mri@npm:^1.1.0, mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" @@ -11228,6 +11757,13 @@ __metadata: languageName: node linkType: hard +"potpack@npm:^1.0.1": + version: 1.0.2 + resolution: "potpack@npm:1.0.2" + checksum: 10c0/670c23898a4257130858b960c2e654d3327c0f6a7e7091ff5846f213e65af8f9476320b995b8ad561a47a4d1c359c7ef347de57d22e7b02597051abb52bc85c4 + languageName: node + linkType: hard + "preact@npm:^10.0.0": version: 10.22.0 resolution: "preact@npm:10.22.0" @@ -11316,7 +11852,17 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.2": +"promise-worker-transferable@npm:^1.0.4": + version: 1.0.4 + resolution: "promise-worker-transferable@npm:1.0.4" + dependencies: + is-promise: "npm:^2.1.0" + lie: "npm:^3.0.2" + checksum: 10c0/110d273cbba2631c318762f02c159531f1e05e4af91080368b9d4c02b880824ae4c49a8ec7094c6434989ea2ee8de913b21c809279babeaf447fc90a682dcd7c + languageName: node + linkType: hard + +"prop-types@npm:^15.6.0, prop-types@npm:^15.6.2": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -11368,6 +11914,17 @@ __metadata: languageName: node linkType: hard +"react-composer@npm:^5.0.3": + version: 5.0.3 + resolution: "react-composer@npm:5.0.3" + dependencies: + prop-types: "npm:^15.6.0" + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/6f0a62ce02f37d5b7b7959006b33eaa9c0949c404b25e78a3f19d8bdb7b31c8e30b836863601c3464dec847d45976e62274291ce60015892999094be1a0e7e03 + languageName: node + linkType: hard + "react-devtools-inline@npm:4.4.0": version: 4.4.0 resolution: "react-devtools-inline@npm:4.4.0" @@ -11441,6 +11998,18 @@ __metadata: languageName: node linkType: hard +"react-reconciler@npm:^0.27.0": + version: 0.27.0 + resolution: "react-reconciler@npm:0.27.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.21.0" + peerDependencies: + react: ^18.0.0 + checksum: 10c0/55daff215ff9544dc5b2ba6ecda20520df0f1b2ca145c00fd0905ced1b025f3779664715c36b511a8906aa24b8b433270b0032cd499c55c4e4c878cddc8fc986 + languageName: node + linkType: hard + "react-refresh@npm:^0.14.2": version: 0.14.2 resolution: "react-refresh@npm:0.14.2" @@ -11848,6 +12417,13 @@ __metadata: languageName: node linkType: hard +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -12230,6 +12806,15 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.21.0": + version: 0.21.0 + resolution: "scheduler@npm:0.21.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/083a9a0c83f4923f7f5bb28d8bcf13cff42c90f4303bc187166520fcfc576c97e946d426c707d5a9c0aa0a655819605dd0c741467c626824bbf191251c126f1b + languageName: node + linkType: hard + "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -12687,6 +13272,26 @@ __metadata: languageName: node linkType: hard +"stats-gl@npm:^2.2.8": + version: 2.4.2 + resolution: "stats-gl@npm:2.4.2" + dependencies: + "@types/three": "npm:*" + three: "npm:^0.170.0" + peerDependencies: + "@types/three": "*" + three: "*" + checksum: 10c0/cff079103d4004cdfd72d65c977b7237a929b02f57b275081188e9313d74620b70ea0a57e0561fb6a43b1597830068b4adb2625dbc08b99799fd12a71ec54729 + languageName: node + linkType: hard + +"stats.js@npm:^0.17.0": + version: 0.17.0 + resolution: "stats.js@npm:0.17.0" + checksum: 10c0/03392b4b9eb15cb285b8cf46c5dd68e4e7b556d8e4c72a3a48e6bd2ab6f2e72a02b145d465f594450df081d8f94a45e8ac1112a0d507a200a5768504082ca080 + languageName: node + linkType: hard + "std-env@npm:^3.8.0": version: 3.8.0 resolution: "std-env@npm:3.8.0" @@ -12954,6 +13559,15 @@ __metadata: languageName: node linkType: hard +"suspend-react@npm:^0.1.3": + version: 0.1.3 + resolution: "suspend-react@npm:0.1.3" + peerDependencies: + react: ">=17.0" + checksum: 10c0/c35436f492a5cab85a2aac8f5ee5af8f67edbab3a49e12d15c7f770aae4cf09fe2925b3b8c122929210c1f28aa0958f91684a687d6608f116f7da8406d8a2f1c + languageName: node + linkType: hard + "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" @@ -13042,6 +13656,45 @@ __metadata: languageName: node linkType: hard +"three-mesh-bvh@npm:^0.7.8": + version: 0.7.8 + resolution: "three-mesh-bvh@npm:0.7.8" + peerDependencies: + three: ">= 0.151.0" + checksum: 10c0/0d5f7fb4c9ae9a7477c394950a68bcd3eea88e3b0ea787dac4096cfdfcca2298268d1832575288d37ae0f19f3028f3ff79e7d70e3966bc2e8da51c95ba4209b1 + languageName: node + linkType: hard + +"three-stdlib@npm:^2.34.0": + version: 2.35.2 + resolution: "three-stdlib@npm:2.35.2" + dependencies: + "@types/draco3d": "npm:^1.4.0" + "@types/offscreencanvas": "npm:^2019.6.4" + "@types/webxr": "npm:^0.5.2" + draco3d: "npm:^1.4.1" + fflate: "npm:^0.6.9" + potpack: "npm:^1.0.1" + peerDependencies: + three: ">=0.128.0" + checksum: 10c0/b8326ea66106a98329e5cd937606d3214a566d28975563a73e37d2932ae8911bcb3883557016bbd8461aa7606df994c7faf2bf498469fb948c87fa35d0533802 + languageName: node + linkType: hard + +"three@npm:^0.170.0": + version: 0.170.0 + resolution: "three@npm:0.170.0" + checksum: 10c0/eeaa1eccb31467654a044fb90634b3b6bb8d0768a4f029c082fb6aa22aec0d6362d0e3af74938caa1db512b7823a031b54a76e88fba6cfd535054165ea9667c9 + languageName: node + linkType: hard + +"three@npm:^0.171.0": + version: 0.171.0 + resolution: "three@npm:0.171.0" + checksum: 10c0/33a36861c815b914f79dc8546ac30610af40e3f16acc85be851933e6fcab2d90d4227a62c1d3d86bddab672c908103298daaf592615147721e3dbd719619952a + languageName: node + linkType: hard + "tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0" @@ -13183,6 +13836,36 @@ __metadata: languageName: node linkType: hard +"troika-three-text@npm:^0.52.0": + version: 0.52.3 + resolution: "troika-three-text@npm:0.52.3" + dependencies: + bidi-js: "npm:^1.0.2" + troika-three-utils: "npm:^0.52.0" + troika-worker-utils: "npm:^0.52.0" + webgl-sdf-generator: "npm:1.1.1" + peerDependencies: + three: ">=0.125.0" + checksum: 10c0/25c3ae9db859771896422d15d91f67e3b501ed65b6394ce4985a1bb68376c6f5d0dbc4a1da923dc96f6d760ec6544324f46123ca5d08bddbbccd0c63208d839d + languageName: node + linkType: hard + +"troika-three-utils@npm:^0.52.0": + version: 0.52.0 + resolution: "troika-three-utils@npm:0.52.0" + peerDependencies: + three: ">=0.125.0" + checksum: 10c0/6fe5de1e9540bb8c79314a49aee47fdd6f9e739992a6a04b111b364efdd0a8b15af6786d12512edf5b1a2a5f3e324906489533c0645d4d2c70a95e5ddf27b04f + languageName: node + linkType: hard + +"troika-worker-utils@npm:^0.52.0": + version: 0.52.0 + resolution: "troika-worker-utils@npm:0.52.0" + checksum: 10c0/bcd776324ce3e941c1a913531cee6022c867b71bc2d6bb67f1eadf6df96fd4f865c51b90ac58fc5c0ae3346a4bd8360b0a52398864800a7a9c60473151d452d5 + languageName: node + linkType: hard + "trough@npm:^2.0.0": version: 2.2.0 resolution: "trough@npm:2.2.0" @@ -13285,6 +13968,15 @@ __metadata: languageName: node linkType: hard +"tunnel-rat@npm:^0.1.2": + version: 0.1.2 + resolution: "tunnel-rat@npm:0.1.2" + dependencies: + zustand: "npm:^4.3.2" + checksum: 10c0/93cd50c7c9141e2662707602a21401145092e5a3c815b57a752937419ab6187a2ff36fa7e0f65e0c587022149bf2d323ace07dff61106511b7d4845e53390cc9 + languageName: node + linkType: hard + "twoslash-protocol@npm:0.2.12": version: 0.2.12 resolution: "twoslash-protocol@npm:0.2.12" @@ -13737,6 +14429,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:1.2.2": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf + languageName: node + linkType: hard + "use-sync-external-store@npm:^1.4.0": version: 1.4.0 resolution: "use-sync-external-store@npm:1.4.0" @@ -13746,6 +14447,13 @@ __metadata: languageName: node linkType: hard +"utility-types@npm:^3.11.0": + version: 3.11.0 + resolution: "utility-types@npm:3.11.0" + checksum: 10c0/2f1580137b0c3e6cf5405f37aaa8f5249961a76d26f1ca8efc0ff49a2fc0e0b2db56de8e521a174d075758e0c7eb3e590edec0832eb44478b958f09914920f19 + languageName: node + linkType: hard + "uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" @@ -14099,6 +14807,20 @@ __metadata: languageName: node linkType: hard +"webgl-constants@npm:^1.1.1": + version: 1.1.1 + resolution: "webgl-constants@npm:1.1.1" + checksum: 10c0/525a9838b0cbcbab902d1bc5457882424a9c146f851042c901ae457123193f5c5e47846b47c1c999e4f3abc24322cac494cea0cc52fec28bd8eb3a05cd79d573 + languageName: node + linkType: hard + +"webgl-sdf-generator@npm:1.1.1": + version: 1.1.1 + resolution: "webgl-sdf-generator@npm:1.1.1" + checksum: 10c0/769bfab22a9485a59bda9448d1d8684228adc9ebdac2cc69012a0854282385d1bef319f703758829e2c647e7532a9844e62977110e825bd75a3e0b8a0ee276ce + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -14418,13 +15140,66 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.22.3": +"zod@npm:^3.22.3, zod@npm:^3.24.1": version: 3.24.1 resolution: "zod@npm:3.24.1" checksum: 10c0/0223d21dbaa15d8928fe0da3b54696391d8e3e1e2d0283a1a070b5980a1dbba945ce631c2d1eccc088fdbad0f2dfa40155590bf83732d3ac4fcca2cc9237591b languageName: node linkType: hard +"zustand@npm:^3.7.1": + version: 3.7.2 + resolution: "zustand@npm:3.7.2" + peerDependencies: + react: ">=16.8" + peerDependenciesMeta: + react: + optional: true + checksum: 10c0/6a56185ca67080c252dfe96039da02094cfd780bd7a45768708105f114dea39ae9abc80ffaa7f3f6104e6490db325bd443b857ab5eab8ebf9a697318cd163bb6 + languageName: node + linkType: hard + +"zustand@npm:^4.3.2": + version: 4.5.5 + resolution: "zustand@npm:4.5.5" + dependencies: + use-sync-external-store: "npm:1.2.2" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0.6" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10c0/d04469d76b29c7e4070da269886de4efdadedd3d3824dc2a06ac4ff62e3b5877f925e927afe7382de651829872b99adec48082f1bd69fe486149be666345e626 + languageName: node + linkType: hard + +"zustand@npm:^5.0.1": + version: 5.0.2 + resolution: "zustand@npm:5.0.2" + peerDependencies: + "@types/react": ">=18.0.0" + immer: ">=9.0.6" + react: ">=18.0.0" + use-sync-external-store: ">=1.2.0" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + checksum: 10c0/d9bb048d8129fd1aaed3fda974991b15a7c9c31ef06f78e9bf5c4b3678f249850764a6dadb8c93127257d07831995cf7a048281658a37c5d1143ad6f397fe37c + languageName: node + linkType: hard + "zwitch@npm:^2.0.0, zwitch@npm:^2.0.4": version: 2.0.4 resolution: "zwitch@npm:2.0.4"