diff --git a/biome.json b/biome.json index f4b2a92..08d276d 100644 --- a/biome.json +++ b/biome.json @@ -93,13 +93,7 @@ "useExhaustiveDependencies": "warn" }, "nursery": { - "useSortedClasses": { - "level": "warn", - "options": { - "attributes": ["class", "className"], - "functions": ["cn", "cva"] - } - } + "useSortedClasses": "off" }, "performance": { "noImgElement": "error" diff --git a/bun.lock b/bun.lock index e62cd40..badd769 100644 --- a/bun.lock +++ b/bun.lock @@ -6,7 +6,7 @@ "dependencies": { "@base-ui/react": "^1.3.0", "@basementstudio/shader-lab": "workspace:*", - "@phosphor-icons/react": "^2.1.10", + "@radix-ui/react-icons": "^1.3.2", "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.5.0", "@react-three/postprocessing": "^3.0.4", @@ -539,10 +539,10 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], - "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], - "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], + "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], + "@react-three/drei": ["@react-three/drei@10.7.7", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-ff+J5iloR0k4tC++QtD/j9u3w5fzfgFAWDtAGQah9pF2B1YgOq/5JxqY0/aVoQG5r3xSZz0cv5tk2YuBob4xEQ=="], "@react-three/fiber": ["@react-three/fiber@9.5.0", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.0.0", "react-use-measure": "^2.1.7", "scheduler": "^0.27.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.3", "react-dom": ">=19 <19.3", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-FiUzfYW4wB1+PpmsE47UM+mCads7j2+giRBltfwH7SNhah95rqJs3ltEs9V3pP8rYdS0QlNne+9Aj8dS/SiaIA=="], diff --git a/package.json b/package.json index 7365a25..4d1a85c 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "dependencies": { "@base-ui/react": "^1.3.0", "@basementstudio/shader-lab": "workspace:*", - "@phosphor-icons/react": "^2.1.10", + "@radix-ui/react-icons": "^1.3.2", "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.5.0", "@react-three/postprocessing": "^3.0.4", diff --git a/src/components/editor/editor-export-dialog.tsx b/src/components/editor/editor-export-dialog.tsx index caf1b13..99c42ae 100644 --- a/src/components/editor/editor-export-dialog.tsx +++ b/src/components/editor/editor-export-dialog.tsx @@ -2,11 +2,11 @@ import { CopyIcon, - FileArrowDownIcon, - FolderIcon, - UploadSimpleIcon, - XIcon, -} from "@phosphor-icons/react" + Cross2Icon, + DownloadIcon, + FileIcon, + UploadIcon, +} from "@radix-ui/react-icons" import { AnimatePresence, motion, useReducedMotion } from "motion/react" import { type ChangeEvent, @@ -713,7 +713,7 @@ export function EditorExportDialog({ onClick={() => onOpenChange(false)} variant="default" > - + @@ -990,7 +990,7 @@ function ImageTabContent({ @@ -1141,9 +1141,9 @@ function VideoTabContent({ onClick={() => void onExport()} > {isWorking ? ( - + ) : ( - + )} {isWorking ? "Cancel Export" : `Export ${videoFormat.toUpperCase()}`} @@ -1173,7 +1173,7 @@ function ProjectTabContent({ return (
@@ -1202,7 +1202,7 @@ function ProjectTabContent({ type="file" /> - +
Import .lab configuration @@ -1220,7 +1220,7 @@ function ProjectTabContent({ }} variant="active" > - +
@@ -1272,7 +1272,7 @@ function ShaderTabContent({ diff --git a/src/components/editor/editor-timeline-overlay.tsx b/src/components/editor/editor-timeline-overlay.tsx index 1a91ec6..7f076e7 100644 --- a/src/components/editor/editor-timeline-overlay.tsx +++ b/src/components/editor/editor-timeline-overlay.tsx @@ -2,14 +2,16 @@ import { Select as BaseSelect } from "@base-ui/react/select" import { - BezierCurveIcon, CaretDownIcon, CaretUpIcon, CircleIcon, + CommitIcon, + DotFilledIcon, + LoopIcon, PauseIcon, PlayIcon, StopIcon, -} from "@phosphor-icons/react" +} from "@radix-ui/react-icons" import { motion, useReducedMotion } from "motion/react" import { type CSSProperties, @@ -20,6 +22,7 @@ import { useRef, useState, } from "react" +import { FloatingDesktopPanel } from "@/components/editor/floating-desktop-panel" import { GlassPanel } from "@/components/ui/glass-panel" import { IconButton } from "@/components/ui/icon-button" import { NumberInput } from "@/components/ui/number-input" @@ -27,8 +30,8 @@ import { Typography } from "@/components/ui/typography" import { cn } from "@/lib/cn" import { getLayerDefinition } from "@/lib/editor/config/layer-registry" import { getLongestVideoLayerDuration } from "@/lib/editor/timeline-duration" -import { useAssetStore } from "@/store/asset-store" import { useEditorStore, useLayerStore, useTimelineStore } from "@/store" +import { useAssetStore } from "@/store/asset-store" import { createLayerPropertyBinding, createParamBinding, @@ -293,9 +296,9 @@ function TimelineTransport({ variant="default" > {isPlaying ? ( - + ) : ( - + )} - + - - -