// OVE — right-hand control panel: the six tabs. // // Desktop: fixed width, content scrolls inside the panel. Mobile: natural // height (the page scrolls and the footer is pushed down naturally). 'use client' import { motion } from 'framer-motion' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { PresetsTab } from '@/components/ava/presets-tab' import { ScriptTab } from '@/components/ava/script-tab' import { DirectoryTab } from '@/components/ava/directory-tab' import { DetectTab } from '@/components/ava/detect-tab' import { BeatTab } from '@/components/ava/beat-tab' import { NativeTab } from '@/components/ava/native-tab' import { SettingsTab } from '@/components/ava/settings-tab' import { useAvaStore } from '@/lib/store' import { thinScrollbar } from '@/components/ava/shared' import { cn } from '@/lib/utils' // v6.5 — the Native tab is PARKED (hidden) so the Settings tab can take its // slot; it returns unchanged when the project nears completion. Flip this // flag to bring it back — the tab row widens to 7 columns automatically and // the component + /api/rust-scaffold endpoint are untouched. // // v7.11 — the Directory tab (community script browser) joined between Script // and Detect; the row is 3 columns on phones (two stacked rows) and one row // from sm up. const NATIVE_TAB_ENABLED = false function TabBody({ children }: { children: React.ReactNode }) { return ( {children} ) } export function ControlPanel() { const tab = useAvaStore((s) => s.tab) const setTab = useAvaStore((s) => s.setTab) return ( Presets Script Directory Detect Beat {NATIVE_TAB_ENABLED && ( Native )} Settings
{NATIVE_TAB_ENABLED && ( )}
) }