'use client'
import { useMemo, useState } from 'react'
import { ArrowDownToLine, Check, ChevronDown, CircleHelp, Download, GripVertical, Link2, Moon, MoreHorizontal, Plus, RotateCcw, Settings2, SlidersHorizontal, Sun, Upload, X } from 'lucide-react'
const initialSteps = [
{ id: 1, title: 'Gradient background', type: 'BACKGROUND' },
{ id: 2, title: 'Remove background', type: 'TRANSFORM' },
{ id: 3, title: 'Add outline', type: 'STYLE' },
{ id: 4, title: 'Round corners', type: 'STYLE' },
]
function PreviewTile({ label, sublabel, style, active = false }: { label: string; sublabel: string; style: React.CSSProperties; active?: boolean }) {
return
}
export default function Page() {
const [steps, setSteps] = useState(initialSteps)
const [angle, setAngle] = useState(135)
const [radius, setRadius] = useState(18)
const [outline, setOutline] = useState(2)
const [language, setLanguage] = useState('RU')
const [dark, setDark] = useState(false)
const [showIntermediate, setShowIntermediate] = useState(true)
const [gradient, setGradient] = useState('#DCEBFF')
const gradientStyle = useMemo(() => ({ background: `linear-gradient(${angle}deg, ${gradient}, #8BC8F5)` }), [angle, gradient])
const finalStyle = { ...gradientStyle, borderRadius: radius, boxShadow: `0 0 0 ${outline}px #16202B` }
return
PNG PROCESSING / WORKSPACE
Build your image pipeline.
Chain simple tools together. Every change is processed automatically and previewed at each stage.
source.png1.8 MB
PROCESSING PIPELINE{steps.length} active steps • LIVE
{steps.map((step, index) =>
{String(index + 1).padStart(2, '0')}
{step.type}
{step.title}
AUTO
{index === 0 ?
: index === 2 ?
: index === 3 ?
:
Automatic subject detection enabled
}
)}
changes are applied automatically
PIPELINE OUTPUTSVisual history
DIMENSIONS1200 × 800 px
FORMATPNG-24
SIZE1.2 MB
{showIntermediate && <>
>}
Output is generated in-browser. Your files never leave this device.
}