diff --git a/apps/web/src/components/editor/media-panel/views/settings.tsx b/apps/web/src/components/editor/media-panel/views/settings.tsx index 54387dd7..cdfa36f2 100644 --- a/apps/web/src/components/editor/media-panel/views/settings.tsx +++ b/apps/web/src/components/editor/media-panel/views/settings.tsx @@ -14,6 +14,7 @@ import { PropertyItem, PropertyItemLabel, PropertyItemValue, + PropertyGroup, } from "../../properties-panel/property-item"; import { FPS_PRESETS } from "@/constants/timeline-constants"; import { useProjectStore } from "@/stores/project-store"; @@ -55,7 +56,7 @@ function ProjectSettingsTabs() { function ProjectInfoView() { const { activeProject, updateProjectFps } = useProjectStore(); - const { canvasSize, canvasPresets, setCanvasSize } = useEditorStore(); + const { canvasPresets, setCanvasSize } = useEditorStore(); const { getDisplayName } = useAspectRatio(); const handleAspectRatioChange = (value: string) => { @@ -147,7 +148,7 @@ const BlurPreview = memo( fill className="object-cover" style={{ filter: `blur(${blur.value}px)` }} - priority + loading="eager" />
@@ -223,24 +224,19 @@ function BackgroundView() { ); return ( -
- - Blur - -
{blurPreviews}
-
-
- - Color - -
-
- -
- {colorPreviews} +
+ +
{blurPreviews}
+
+ + +
+
+
- - + {colorPreviews} +
+
); } diff --git a/apps/web/src/components/editor/properties-panel/property-item.tsx b/apps/web/src/components/editor/properties-panel/property-item.tsx index 86a8d378..dc6b6d74 100644 --- a/apps/web/src/components/editor/properties-panel/property-item.tsx +++ b/apps/web/src/components/editor/properties-panel/property-item.tsx @@ -1,4 +1,6 @@ import { cn } from "@/lib/utils"; +import { ChevronDown } from "lucide-react"; +import { useState } from "react"; interface PropertyItemProps { direction?: "row" | "column"; @@ -49,3 +51,34 @@ export function PropertyItemValue({ }) { return
{children}
; } + +interface PropertyGroupProps { + title: string; + children: React.ReactNode; + defaultExpanded?: boolean; + className?: string; +} + +export function PropertyGroup({ + title, + children, + defaultExpanded = true, + className, +}: PropertyGroupProps) { + const [isExpanded, setIsExpanded] = useState(defaultExpanded); + + return ( + +
setIsExpanded(!isExpanded)} + > + + {title} + + +
+ {isExpanded && {children}} +
+ ); +}