import { Input } from '@/components/ui/input' import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/ui/resizable' import { Separator } from '@/components/ui/separator' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { TooltipProvider } from '@/components/ui/tooltip' import { cn } from '@/lib/utils' import { type Recipe01, type Recipes } from '@/models/recipe/schema' import { memo, useMemo, useState } from 'react' import AndroidSwitcher from './android-switcher' import { Search, CupSoda, Wheat, Dessert, Cherry, WineOff } from 'lucide-react' import Nav from './nav' import RecipeList from './recipe-list' import { isBefore, isToday } from 'date-fns' import RecipeDisplay from './recipe-display' interface RecipeMenuProps { recipes: Recipes recipe01: Recipe01[] defaultSize?: number isDevBranch: boolean } const RecipeMenu: React.FC = memo(({ recipes, recipe01, defaultSize, isDevBranch }) => { recipe01 = useMemo(() => { return recipe01.sort((a, b) => (a.LastChange && b.LastChange && isBefore(a.LastChange, b.LastChange) ? 1 : -1)) }, [recipe01]) return ( <>

Recipe Version: {recipes.MachineSetting.configNumber} {isDevBranch ? '(Dev)' : ''}

All Menu Today
item.LastChange && isToday(item.LastChange))} />
) }) interface RecipeEditorProps { androids: { label: string deviceName: string serial: string icon: React.ReactNode }[] isDevBranch: boolean recipes: Recipes defaultLayout: number[] | undefined defaultCollapsed?: boolean navCollapsedSize: number } export const RecipeEditor: React.FC = ({ androids, recipes, isDevBranch, defaultLayout = [265, 440, 655], defaultCollapsed = false, navCollapsedSize }) => { const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed) const [showListIndex, setShowListIndex] = useState(0) const { recipesEnable, recipeDisable } = useMemo(() => { return { recipesEnable: recipes.Recipe01.filter(r => r.isUse), recipeDisable: recipes.Recipe01.filter(r => !r.isUse) } }, [recipes]) return ( { document.cookie = `react-resizable-panels:layout=${JSON.stringify(sizes)}` }} className="h-full max-h-[800px] items-stretch" > { setIsCollapsed(true) document.cookie = `react-resizable-panels:collapsed=${JSON.stringify(true)}` }} onExpand={() => { setIsCollapsed(false) document.cookie = `react-resizable-panels:collapsed=${JSON.stringify(false)}` }} className={cn(isCollapsed && 'min-w-[50px] transition-all duration-300 ease-in-out')} >