VibeCoderzVibeCoderz
Telegram
All Prompts
Component 2 UI Preview

Component 2

UI компонент: набор из 30 иконок. Автоматически сгенерирован из вставленного кода. Используется для визуального оформления интерфейсов.

by Wesley AlexanderLive Preview

Prompt

# Component 2

You are given a task to integrate an existing React component in the codebase

~~~/README.md
# Logo Marquee

A seamless, infinite-scrolling marquee component designed for displaying partner or client logos. It features a gradient fade mask on the edges and automatically pauses animation on user hover.

## Dependencies

- React
- Tailwind CSS (standard configuration)

## Props

This component currently uses a static list of logos for demonstration. You can modify the `logos` array in `LogoMarquee.tsx` to accept a prop if dynamic content is required.

## Usage

```tsx
import LogoMarquee from '@/sd-components/logo-marquee';

export default function Page() {
  return (
    <div className="bg-black">
      <LogoMarquee />
    </div>
  );
}
```
~~~

~~~/src/App.tsx
import React from 'react';
import LogoMarquee from './LogoMarquee';

export default function App() {
  return (
    <main className="min-h-screen w-full bg-[#181a1b] flex items-center justify-center font-sans text-white">
      <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet" />
      <div className="w-full">
        <div className="max-w-7xl mx-auto mb-8 px-8">
          <h1 className="text-3xl font-bold font-outfit mb-2 text-[#e8e6e3]">Logo Marquee</h1>
          <p className="text-[#afa99e]">Infinite scrolling carousel with edge fading and pause-on-hover.</p>
        </div>
        <div className="border-y border-[#323638]">
          <LogoMarquee />
        </div>
      </div>
    </main>
  );
}
~~~

~~~/src/Icon1.tsx
import React from "react";

export const Icon1 = (props) => (
  <svg stroke="rgb(175, 169, 158)" fill="none" strokeWidth="2px" viewBox="0 0 24 24" strokeLinecap="round" strokeLinejoin="round" xmlns="http://www.w3.org/2000/svg" className="[--darkreader-inline-stroke:currentColor] align-middle w-[18px] h-[18px] block overflow-x-hidden overflow-y-hidden fill-none stroke-[#afa99e] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#afa99e] [color-scheme:dark]" {...props}>
<path d="m15 18-6-6 6-6" className="inline fill-none stroke-[#afa99e] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#afa99e] [color-scheme:dark]"></path>
  </svg>
);
~~~

~~~/src/Icon2.tsx
import React from "react";

export const Icon2 = (props) => (
  <svg stroke="rgb(229, 227, 223)" fill="none" strokeWidth="2px" viewBox="0 0 24 24" strokeLinecap="round" strokeLinejoin="round" xmlns="http://www.w3.org/2000/svg" className="[--darkreader-inline-stroke:currentColor] align-middle w-3.5 h-3.5 block overflow-x-hidden overflow-y-hidden fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none" {...props}>
<rect width="20" height="14" x="2" y="3" rx="2" className="w-5 h-3.5 inline fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none"></rect>
  </svg>
);
~~~

~~~/src/Icon3.tsx
import React from "react";

export const Icon3 = (props) => (
  <svg stroke="rgb(229, 227, 223)" fill="none" strokeWidth="2px" viewBox="0 0 24 24" strokeLinecap="round" strokeLinejoin="round" xmlns="http://www.w3.org/2000/svg" className="[--darkreader-inline-stroke:currentColor] align-middle w-3.5 h-3.5 block overflow-x-hidden overflow-y-hidden fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none" {...props}>
<rect width="16" height="20" x="4" y="2" rx="2" ry="2" className="w-4 h-5 inline fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none"></rect>
  </svg>
);
~~~

~~~/src/Icon4.tsx
import React from "react";

export const Icon4 = (props) => (
  <svg stroke="rgb(229, 227, 223)" fill="none" strokeWidth="2px" viewBox="0 0 24 24" strokeLinecap="round" strokeLinejoin="round" xmlns="http://www.w3.org/2000/svg" className="[--darkreader-inline-stroke:currentColor] align-middle w-3.5 h-3.5 block overflow-x-hidden overflow-y-hidden fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none" {...props}>
<rect width="14" height="20" x="5" y="2" rx="2" ry="2" className="w-3.5 h-5 inline fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none"></rect><path d="M12 18h.01" className="inline fill-none stroke-[#e5e3df] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#e5e3df] [color-scheme:dark] select-none"></path>
  </svg>
);
~~~

~~~/src/Icon5.tsx
import React from "react";

export const Icon5 = (props) => (
  <svg stroke="rgb(216, 213, 207)" fill="none" strokeWidth="2px" viewBox="0 0 24 24" strokeLinecap="round" strokeLinejoin="round" xmlns="http://www.w3.org/2000/svg" className="[--darkreader-inline-stroke:currentColor] [text-wrap-mode:nowrap] align-middle w-5 h-5 block overflow-x-hidden overflow-y-hidden shrink-0 fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none" {...props}>
<rect width="18" height="11" x="3" y="11" rx="2" ry="2" className="[text-wrap-mode:nowrap] w-[18px] h-[11px] inline fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4" className="[text-wrap-mode:nowrap] inline fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none"></path>
  </svg>
);
~~~

~~~/src/Icon6.tsx
import React from "react";

export const Icon6 = (props) => (
  <svg stroke="rgb(216, 213, 207)" fill="none" strokeWidth="2px" viewBox="0 0 24 24" strokeLinecap="round" strokeLinejoin="round" xmlns="http://www.w3.org/2000/svg" className="[--darkreader-inline-stroke:currentColor] text-[16.8px] [text-wrap-mode:nowrap] align-middle w-5 h-5 block overflow-x-hidden overflow-y-hidden shrink-0 fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none" {...props}>
<path d="M15 3h6v6" className="[text-wrap-mode:nowrap] inline fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none"></path><path d="M10 14 21 3" className="[text-wrap-mode:nowrap] inline fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" className="[text-wrap-mode:nowrap] inline fill-none stroke-[#d8d5cf] stroke-[2px] [stroke-linecap:round] [stroke-linejoin:round] caret-[#d8d5cf] [color-scheme:dark] select-none"></path>
  </svg>
);
~~~

~~~/src/Icon7.tsx
import React from "react";

export const Icon7 = (props) => (
  <svg viewBox="0 0 168 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon8.tsx
import React from "react";

export const Icon8 = (props) => (
  <svg viewBox="0 0 167 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon9.tsx
import React from "react";

export const Icon9 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon10.tsx
import React from "react";

export const Icon10 = (props) => (
  <svg viewBox="0 0 153 38" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon11.tsx
import React from "react";

export const Icon11 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon12.tsx
import React from "react";

export const Icon12 = (props) => (
  <svg viewBox="0 0 161 44" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon13.tsx
import React from "react";

export const Icon13 = (props) => (
  <svg viewBox="0 0 168 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon14.tsx
import React from "react";

export const Icon14 = (props) => (
  <svg viewBox="0 0 167 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon15.tsx
import React from "react";

export const Icon15 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon16.tsx
import React from "react";

export const Icon16 = (props) => (
  <svg viewBox="0 0 153 38" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon17.tsx
import React from "react";

export const Icon17 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon18.tsx
import React from "react";

export const Icon18 = (props) => (
  <svg viewBox="0 0 161 44" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon19.tsx
import React from "react";

export const Icon19 = (props) => (
  <svg viewBox="0 0 161 44" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon20.tsx
import React from "react";

export const Icon20 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon21.tsx
import React from "react";

export const Icon21 = (props) => (
  <svg viewBox="0 0 153 38" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon22.tsx
import React from "react";

export const Icon22 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon23.tsx
import React from "react";

export const Icon23 = (props) => (
  <svg viewBox="0 0 167 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon24.tsx
import React from "react";

export const Icon24 = (props) => (
  <svg viewBox="0 0 168 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon25.tsx
import React from "react";

export const Icon25 = (props) => (
  <svg viewBox="0 0 161 44" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon26.tsx
import React from "react";

export const Icon26 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon27.tsx
import React from "react";

export const Icon27 = (props) => (
  <svg viewBox="0 0 153 38" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon28.tsx
import React from "react";

export const Icon28 = (props) => (
  <svg viewBox="0 0 170 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon29.tsx
import React from "react";

export const Icon29 = (props) => (
  <svg viewBox="0 0 167 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/Icon30.tsx
import React from "react";

export const Icon30 = (props) => (
  <svg viewBox="0 0 168 41" fill="currentColor" className="align-middle h-8 block overflow-x-hidden overflow-y-hidden fill-[#e5e3df] caret-[#e5e3df] [color-scheme:dark]" {...props}>

  </svg>
);
~~~

~~~/src/LogoMarquee.tsx
import React from 'react';
import { Icon7 } from './Icon7';
import { Icon8 } from './Icon8';
import { Icon9 } from './Icon9';
import { Icon10 } from './Icon10';
import { Icon11 } from './Icon11';
import { Icon12 } from './Icon12';

const logos = [
  { id: 1, name: 'Logo 1', icon: Icon7 },
  { id: 2, name: 'Logo 2', icon: Icon8 },
  { id: 3, name: 'Logo 3', icon: Icon9 },
  { id: 4, name: 'Logo 4', icon: Icon10 },
  { id: 5, name: 'Logo 5', icon: Icon11 },
  { id: 6, name: 'Logo 6', icon: Icon12 },
];

export default function LogoMarquee() {
  return (
    <section className="w-full bg-[#080808] py-20 overflow-hidden relative">
      <style>{`
        @keyframes marquee {
          0% {
            transform: translateX(0);
          }
          100% {
            transform: translateX(-50%);
          }
        }
        .animate-marquee {
          animation: marquee 30s linear infinite;
        }
        /* Mask for fading edges */
        .marquee-mask {
          mask-image: linear-gradient(
            to right,
            transparent,
            rgb(0, 0, 0) 10%,
            rgb(0, 0, 0) 90%,
            transparent
          );
        }
      `}</style>

      <div className="w-full max-w-[1440px] mx-auto px-4 md:px-8">
        <div className="flex flex-col gap-4">
          <div className="marquee-mask w-full overflow-hidden">
            {/* Marquee Track */}
            <div className="flex w-max animate-marquee hover:[animation-play-state:paused]">
              {/* First Set of Logos */}
              <div className="flex gap-4 pr-4">
                {logos.map((logo) => (
                  <LogoCard key={`set1-${logo.id}`} logo={logo} />
                ))}
              </div>
              {/* Second Set of Logos (Duplicate for seamless loop) */}
              <div className="flex gap-4 pr-4">
                {logos.map((logo) => (
                  <LogoCard key={`set2-${logo.id}`} logo={logo} />
                ))}
              </div>
              {/* Third Set of Logos (Extra buffer for wide screens) */}
              <div className="flex gap-4 pr-4">
                {logos.map((logo) => (
                  <LogoCard key={`set3-${logo.id}`} logo={logo} />
                ))}
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>
  );
}

function LogoCard({ logo }: { logo: { id: number; name: string; icon: React.ElementType } }) {
  const Icon = logo.icon;
  return (
    <div className="bg-[#0d0e0e] text-[#e5e3df] min-w-[200px] h-[100px] relative flex flex-col justify-center rounded-[6px] border border-[#7f7668] transition-all duration-300 hover:border-[#e5e3df] hover:shadow-[0_0_15px_rgba(255,255,255,0.05)] cursor-pointer group">
      <div className="flex items-center gap-4 px-6">
        <Icon className="w-8 h-8 fill-[#e5e3df] transition-transform duration-300 group-hover:scale-110" />
        <span className="text-lg font-semibold tracking-wide font-outfit select-none">
          {logo.name}
        </span>
      </div>
    </div>
  );
}
~~~

Implementation Guidelines

1. Analyze the component structure, styling, animation implementations
2. Review the component's arguments and state
3. Think through what is the best place to adopt this component/style into the design we are doing
4. Then adopt the component/design to our current system

Help me integrate this into my design
All Prompts