From adc8cb37fcec21afac848b1e5dd724394c344050 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Wed, 27 Aug 2025 00:52:39 +0200 Subject: another huge refactor --- .../components/editor/panel-preset-selector.tsx | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 apps/web/src/components/editor/panel-preset-selector.tsx (limited to 'apps/web/src/components/editor/panel-preset-selector.tsx') diff --git a/apps/web/src/components/editor/panel-preset-selector.tsx b/apps/web/src/components/editor/panel-preset-selector.tsx new file mode 100644 index 00000000..e6ae97b3 --- /dev/null +++ b/apps/web/src/components/editor/panel-preset-selector.tsx @@ -0,0 +1,91 @@ +"use client"; + +import { Button } from "../ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "../ui/dropdown-menu"; +import { ChevronDown, RotateCcw, LayoutPanelTop } from "lucide-react"; +import { usePanelStore, type PanelPreset } from "@/stores/panel-store"; + +const PRESET_LABELS: Record = { + default: "Default", + media: "Media", + inspector: "Inspector", + "vertical-preview": "Vertical Preview", +}; + +const PRESET_DESCRIPTIONS: Record = { + default: "Media, preview, and inspector on top row, timeline on bottom", + media: "Full height media on left, preview and inspector on top row", + inspector: "Full height inspector on right, media and preview on top row", + "vertical-preview": "Full height preview on right for vertical videos", +}; + +export function PanelPresetSelector() { + const { activePreset, setActivePreset, resetPreset } = usePanelStore(); + + const handlePresetChange = (preset: PanelPreset) => { + setActivePreset(preset); + }; + + const handleResetPreset = (preset: PanelPreset, event: React.MouseEvent) => { + event.stopPropagation(); + resetPreset(preset); + }; + + return ( + + + + + +
+ Panel Presets +
+ + {(Object.keys(PRESET_LABELS) as PanelPreset[]).map((preset) => ( + handlePresetChange(preset)} + className="flex items-start justify-between gap-2 py-2 cursor-pointer" + > +
+
+ + {PRESET_LABELS[preset]} + + {activePreset === preset && ( +
+ )} +
+

+ {PRESET_DESCRIPTIONS[preset]} +

+
+ + + ))} + + + ); +} -- cgit v1.3.1 From 88c4d160e02c040c50c5b9252c761c50f56e1ae5 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Wed, 27 Aug 2025 01:02:43 +0200 Subject: more padding --- apps/web/src/components/editor/panel-preset-selector.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'apps/web/src/components/editor/panel-preset-selector.tsx') diff --git a/apps/web/src/components/editor/panel-preset-selector.tsx b/apps/web/src/components/editor/panel-preset-selector.tsx index e6ae97b3..af22a171 100644 --- a/apps/web/src/components/editor/panel-preset-selector.tsx +++ b/apps/web/src/components/editor/panel-preset-selector.tsx @@ -51,7 +51,7 @@ export function PanelPresetSelector() { -
+
Panel Presets
@@ -59,7 +59,7 @@ export function PanelPresetSelector() { handlePresetChange(preset)} - className="flex items-start justify-between gap-2 py-2 cursor-pointer" + className="flex items-start justify-between gap-2 py-2 px-3 cursor-pointer" >
-- cgit v1.3.1