VibeCoderzVibeCoderz
Telegram
All Prompts
Workflow Canvas Hero with AI Generator UI preview
herosectionuitailwindinteractivebackground

Workflow Canvas Hero with AI Generator UI

Интерактивный UI-компонент "Workflow Canvas Hero" с генератором изображений на базе AI. Демонстрирует процесс создания изображений с помощью промптов и предпросмотра. Идеально для интерактивных демо.

Prompt

<div class="canvas"
  style="--bg-canvas: #0d0e11; --bg-dot: #25262a; --panel-base: #1a1c20; --panel-elevated: #222429; --panel-inset: #131417; --border-subtle: #2d2f34; --text-primary: #e2e4e9; --text-secondary: #8b8e96; --text-tertiary: #5b5c61; --accent-green: #8cf1b4; --accent-blue: #60a5fa; --accent-pink: #ff629a; --accent-yellow: #f1d84a; --accent-red: #f87171; position: relative; width: 100%; height: 100vh; background-color: var(--bg-canvas); background-image: radial-gradient(var(--bg-dot) 1px, transparent 0); background-size: 32px 32px; font-family: 'Inter', sans-serif; overflow: hidden; color: var(--text-primary);">
  <style>
    .node-glow-blue::before {
      content: '';
      position: absolute;
      bottom: -15px;
      left: 10%;
      width: 80%;
      height: 30px;
      filter: blur(24px);
      z-index: -1;
      opacity: 0.4;
      border-radius: 50%;
      background: var(--accent-blue);
    }

    .node-glow-green::before {
      content: '';
      position: absolute;
      bottom: -15px;
      left: 10%;
      width: 80%;
      height: 30px;
      filter: blur(24px);
      z-index: -1;
      opacity: 0.4;
      border-radius: 50%;
      background: var(--accent-green);
    }

    .wire {
      fill: none;
      stroke: #3a3f4b;
      stroke-width: 1.5;
      stroke-linecap: round;
    }

    .wire.active {
      stroke: var(--accent-blue);
      filter: drop-shadow(0 0 4px rgba(96, 165, 250, 0.4));
    }

    .blob {
      position: absolute;
      border-radius: 50%;
      mix-blend-mode: screen;
      filter: blur(40px);
    }
  </style>

  <svg class="absolute inset-0 w-full h-full pointer-events-none z-0">
    <path class="wire active" d="M 460 390 C 530 390, 530 275, 600 275"></path>
    <path class="wire active" d="M 920 240 C 1000 240, 1000 200, 1080 200"></path>
    <path class="wire" d="M 920 310 C 980 310, 950 420, 800 420" stroke-dasharray="4 4" opacity="0.3"></path>
  </svg>

  <nav class="absolute top-6 left-6 right-6 flex justify-between items-start z-50">
    <div class="flex gap-3 items-center">
      <div
        class="w-10 h-10 bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-xl flex items-center justify-center shadow-xl">
        <svg class="w-5 h-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
          <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"></path>
        </svg>
      </div>
      <div class="flex bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-xl p-1 shadow-xl">
        <button class="px-4 py-2 text-xs font-medium bg-[var(--panel-elevated)] text-[var(--text-primary)] rounded-md">Workflow</button>
        <button class="px-4 py-2 text-xs font-medium text-[var(--text-secondary)] hover:text-[var(--text-primary)]">Edit</button>
        <button class="px-4 py-2 text-xs font-medium text-[var(--text-secondary)] hover:text-[var(--text-primary)]">Help</button>
      </div>
    </div>
    <div class="flex gap-3 items-center">
      <div
        class="flex items-center gap-2 bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-xl px-3 py-2 shadow-xl">
        <div class="w-2 h-2 rounded-full bg-[var(--accent-green)] shadow-[0_0_8px_var(--accent-green)]"></div>
        <span class="text-[10px] text-[var(--text-secondary)] uppercase tracking-wider font-bold">Running</span>
      </div>
      <button class="flex items-center gap-2 bg-[var(--panel-base)] border border-[var(--border-subtle)] text-[var(--text-primary)] text-xs font-medium px-4 py-2 rounded-xl shadow-xl hover:bg-[var(--panel-elevated)] transition-colors">
        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8M16 6l-4-4-4 4M12 2v13"></path></svg> Share
      </button>
      <button class="flex items-center gap-2 bg-[var(--text-primary)] text-black text-xs font-bold px-4 py-2 rounded-xl shadow-xl hover:opacity-90 transition-opacity">
        <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg> Queue
      </button>
    </div>
  </nav>

  <div class="absolute text-xs text-[var(--text-primary)] flex items-center gap-2" style="left: 120px; top: 250px;">
    <div class="w-2 h-2 rounded-full bg-white"></div> Prompt
  </div>
  <article
    class="absolute bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-2xl w-[340px] shadow-2xl z-10"
    style="left: 120px; top: 280px;">
    <div class="p-4 flex justify-between border-b border-white/5">
      <div class="flex items-center gap-2 text-sm font-medium">
        <div class="w-2 h-2 rounded-full bg-[var(--accent-green)]"></div> Positive
      </div>
    </div>
    <div class="p-4 space-y-4">
      <div class="text-xs leading-relaxed text-[var(--text-primary)] italic">"A black bear with a pink snout, minimalist
        style, soft gradients, clear blue sky"</div>
      <div
        class="bg-[var(--panel-inset)] border border-[var(--border-subtle)] rounded-lg p-3 h-20 text-xs text-[var(--text-secondary)]">
        Type what you want to get</div>
      <div class="flex justify-end relative">
        <div
          class="bg-[var(--accent-green)] text-black text-[10px] font-bold px-3 py-1.5 rounded flex items-center gap-2 cursor-pointer uppercase tracking-tight">
          <svg class="w-3 h-3" viewBox="0 0 24 24" fill="currentColor">
            <path d="M5 3l14 9-14 9V3z"></path>
          </svg> Generate
        </div>
        <div
          class="absolute -right-9 top-1/2 -translate-y-1/2 w-3 h-3 rounded-full border-2 border-[var(--accent-blue)] bg-[var(--accent-blue)]">
        </div>
      </div>
    </div>
  </article>

  <div class="absolute text-xs text-[var(--text-primary)] flex items-center gap-2" style="left: 600px; top: 150px;">
    <div class="w-2 h-2 rounded-full bg-white"></div> Generator
  </div>
  <article
    class="absolute bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-2xl w-[320px] shadow-2xl z-10 node-glow-blue"
    style="left: 600px; top: 180px;">
    <div class="p-4 pt-6 space-y-6">
      <div class="relative flex justify-between items-center">
        <div class="absolute -left-9 w-3 h-3 rounded-full border-2 border-[var(--border-subtle)] bg-[var(--bg-canvas)]">
        </div>
        <span class="text-xs text-[var(--text-secondary)] flex items-center gap-2"><div class="w-1.5 h-1.5 rounded-full bg-[var(--accent-yellow)]"></div> model</span>
      </div>
      <div class="relative flex justify-between items-center">
        <div class="absolute -left-9 w-3 h-3 rounded-full border-2 border-[var(--accent-blue)] bg-[var(--accent-blue)]">
        </div>
        <span class="text-xs text-[var(--text-secondary)] flex items-center gap-2"><div class="w-1.5 h-1.5 rounded-full bg-[var(--accent-green)]"></div> positive</span>
      </div>
      <div class="relative flex justify-between items-center mb-4">
        <div class="absolute -left-9 w-3 h-3 rounded-full border-2 border-[var(--border-subtle)] bg-[var(--bg-canvas)]">
        </div>
        <span class="text-xs text-[var(--text-secondary)] flex items-center gap-2"><div class="w-1.5 h-1.5 rounded-full bg-[var(--accent-red)]"></div> negative</span>
      </div>
      <div class="space-y-3">
        <div class="flex justify-between items-center text-[10px] text-[var(--text-secondary)] uppercase">
          <span>Randomness</span>
          <div
            class="bg-[var(--panel-inset)] px-3 py-1.5 rounded border border-[var(--border-subtle)] text-[var(--text-primary)] w-28 flex justify-between">
            12345 <span>▾</span></div>
        </div>
        <div class="flex justify-between items-center text-[10px] text-[var(--text-secondary)] uppercase">
          <span>Quality steps</span>
          <div
            class="bg-[var(--panel-inset)] px-3 py-1.5 rounded border border-[var(--border-subtle)] text-[var(--text-primary)] w-28 flex justify-center gap-4">
            <span>‹</span> 30 <span>›</span>
          </div>
        </div>
      </div>
      <div class="relative pt-2">
        <div
          class="absolute -right-9 top-0 w-3 h-3 rounded-full border-2 border-[var(--accent-blue)] bg-[var(--accent-blue)]">
        </div>
        <div class="text-right text-xs text-[var(--text-secondary)] flex items-center justify-end gap-2">
          <div class="w-1.5 h-1.5 rounded-full bg-[var(--accent-blue)]"></div> image
        </div>
      </div>
    </div>
  </article>

  <div class="absolute text-xs text-[var(--text-primary)] flex items-center gap-2" style="left: 1080px; top: 110px;">
    <div class="w-2 h-2 rounded-full bg-white"></div> Preview
  </div>
  <article
    class="absolute bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-2xl w-[360px] shadow-2xl z-10 node-glow-green"
    style="left: 1080px; top: 140px;">
    <div class="p-3">
      <div class="relative h-[300px] bg-black rounded-xl overflow-hidden mb-4">
        <div class="absolute inset-0 bg-[#0d1117] filter blur-[40px]">
          <div class="blob w-1/2 h-1/2 top-10 left-10 bg-[#ff7eb3]"></div>
          <div class="blob w-2/3 h-2/3 bottom-5 right-5 bg-[#60a5fa]"></div>
          <div class="blob w-1/3 h-1/3 top-1/2 left-1/2 bg-[#facc15] opacity-60"></div>
        </div>
        <div
          class="absolute -left-6 top-10 w-3 h-3 rounded-full border-2 border-[var(--accent-blue)] bg-[var(--accent-blue)]">
        </div>
      </div>
      <div class="px-1">
        <div class="text-sm font-medium mb-1">Final Result</div>
        <p class="text-[11px] text-[var(--text-secondary)] leading-relaxed">Minimalist abstract render with soft
          gradients and smooth shapes against a dark space.</p>
      </div>
      <div
        class="mt-4 flex bg-[var(--panel-elevated)] border border-[var(--border-subtle)] rounded-xl p-1 justify-between">
        <div class="flex border-r border-[var(--border-subtle)] pr-1">
          <button class="p-2 text-[var(--text-secondary)] hover:text-white"><svg class="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"></path></svg></button>
          <button class="p-2 text-[var(--text-secondary)] hover:text-white"><svg class="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button>
        </div>
        <div class="flex gap-1">
          <button class="px-2 text-[10px] font-bold">2x ▾</button>
          <button class="px-2 text-[10px] font-bold">PNG ▾</button>
          <button class="p-2 text-[var(--text-secondary)] hover:text-white"><svg class="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"></path></svg></button>
        </div>
      </div>
    </div>
  </article>

  <div
    class="absolute z-[60] p-2 bg-[var(--panel-base)] border border-[var(--border-subtle)] rounded-xl w-56 shadow-2xl flex flex-col"
    style="left: 780px; top: 400px;">
    <div class="flex items-center gap-3 p-2 mb-2">
      <div
        class="w-8 h-8 rounded-lg bg-[var(--panel-elevated)] border border-[var(--border-subtle)] flex items-center justify-center text-[var(--accent-blue)]">
        +</div>
      <div>
        <div class="text-xs font-bold">Add node</div>
        <div class="text-[9px] text-[var(--text-tertiary)] uppercase">Core Action</div>
      </div>
    </div>
    <div class="h-px bg-[var(--border-subtle)] my-1"></div>
    <div
      class="flex items-center justify-between p-2 text-xs text-[var(--text-secondary)] hover:bg-white/5 rounded-lg cursor-pointer">
      <span>Example data</span><span class="font-mono text-[9px] opacity-50">⌘D</span>
    </div>
    <div
      class="flex items-center justify-between p-2 text-xs text-[var(--text-secondary)] hover:bg-white/5 rounded-lg cursor-pointer">
      <span>Copy link</span><span class="font-mono text-[9px] opacity-50">⌘C</span>
    </div>
    <div
      class="flex items-center justify-between p-2 text-xs text-[var(--accent-red)] hover:bg-red-500/10 rounded-lg cursor-pointer mt-1 border-t border-[var(--border-subtle)] pt-2">
      <span>Remove</span>
    </div>
  </div>

  <div class="absolute pointer-events-none z-[100] flex flex-col items-start" id="paul-cursor"
    style="left: 450px; top: 360px;">
    <svg class="drop-shadow-lg" width="18" height="18" viewBox="0 0 24 24">
      <path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z" fill="var(--accent-yellow)" stroke="black" stroke-width="1.5">
      </path>
    </svg>
    <div class="bg-[var(--accent-yellow)] text-black text-[10px] font-bold px-2 py-0.5 rounded ml-3 -mt-1 shadow-lg">
      Paul</div>
  </div>

  <script src="https://cdn.tailwindcss.com"></script>
  <script>
    document.addEventListener('mousemove', (e) => {
      const cursor = document.getElementById('paul-cursor');
      if(cursor) {
        const x = 450 + (e.clientX - window.innerWidth/2) * 0.05;
        const y = 360 + (e.clientY - window.innerHeight/2) * 0.05;
        cursor.style.transform = `translate(${x-450}px, ${y-360}px)`;
      }
    });
  </script>
</div>
All Prompts