"use client"; import { getLayerRuntimeSource, type Layer, type LayerEffect, } from "@pien-studio/types"; import Image from "next/image"; import { Eye, EyeOff } from "lucide-react"; import { useTranslations } from "../../hooks/use-translations"; import { panelClass, panelCounterClass, panelInsetClass, panelTitleClass, } from "../../lib/theme"; const EFFECT_LABELS: Record = { "face-blur": "Face Blur", }; type Props = { layers: Layer[]; selectedLayerId: string | null; isDark: boolean; onSelectLayer: (layerId: string) => void; onSetLayerVisible: (layerId: string, visible: boolean) => void; onSetEffectEnabled: ( layerId: string, kind: LayerEffect["kind"], enabled: boolean, ) => void; onMoveLayerOrder: (direction: "up" | "down") => void; onRemoveSelectedLayer: () => void; onAddLayer?: () => void; }; export function LayersPanel({ layers, selectedLayerId, isDark, onSelectLayer, onSetLayerVisible, onSetEffectEnabled, onMoveLayerOrder, onRemoveSelectedLayer, onAddLayer, }: Props) { const { t } = useTranslations(); return (

{t("editor.layers")}

{onAddLayer ? ( ) : null} {layers.length}
{layers .slice() .reverse() .map((layer, idx) => { const isSelected = layer.id === selectedLayerId; const isRaster = layer.type === "raster" || layer.type === "sticker"; const sourceUri = getLayerRuntimeSource(layer); const hasEffects = layer.effects.length > 0; const isHidden = layer.visible === false; return (
{layers.length - idx}
{hasEffects ? (
{layer.effects.map((effect) => { const isDisabled = effect.enabled === false; return ( ); })}
) : null}
); })} {layers.length === 0 ? (
{t("editor.noLayersYet")}
) : null}
); }