Section

Prompt Library — Sharp Glassmorphism

Frosted-glass prompt gallery floating over a vivid animated gradient mesh — translucent panels, backdrop blur, and luminous gradient accents. Includes category filter chips (Writing, Code, Analysis, Image), live search, and a working copy-to-clipboard button on every card with a checkmark 'Copied!' state. Requires a colored backdrop behind the panel for the glass to read.

  • Section
  • Tailwind
  • HTML
  • MIT

What it does

Capabilities

  • Frosted-glass panels with backdrop blur
  • Animated gradient mesh backdrop
  • Gradient primary accents and cyan glow dot
  • Luminous top-edge highlight
  • Live search across cards
  • Copy-to-clipboard with checkmark Copied! state
  • Empty state for no matches
  • Keyboard accessible controls

Preview

Live section

Interactive preview
Open preview
9:41 100%
devsnips.site/library/tailwind/sections/ai-product/prompt-library/sharp-glassmorphism/
fluid · no fixed width 100%
Dependencies: Tailwind CSS (CDN) · Google Fonts: Sora, JetBrains Mono Responsive · Keyboard-ready

Install

Add to your project

terminal
npx devsnips add Tailwind/Sections/AI-Product/prompt-library/sharp-glassmorphism
registry path: Tailwind/Sections/AI-Product/prompt-library/sharp-glassmorphism

Source

Implementation

code.html
<!--
Snippet Name: Prompt Library — Sharp Glassmorphism
Description: Frosted-glass prompt gallery floating over a vivid animated gradient mesh — category filter chips, live search, and a working copy-to-clipboard button per card.
Author: DevSnips Contributors
Usage Example: Drop into a vivid app shell as a prompt template gallery. Requires a colored backdrop behind the panel for the glass to read. Filter chips, search, and copy buttons are fully wired in preview.html.
-->
<div class="relative w-full" data-promptlib="sg">

  <!-- Glass panel -->
  <div class="relative overflow-hidden rounded-2xl border border-white/20 bg-white/10 shadow-[0_8px_40px_-12px_rgba(99,102,241,0.45)] backdrop-blur-2xl">
    <!-- Top highlight -->
    <div class="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-white/50 to-transparent" aria-hidden="true"></div>

    <!-- Header -->
    <div class="flex flex-wrap items-center justify-between gap-3 border-b border-white/15 px-5 py-4">
      <div class="flex items-center gap-3">
        <div class="sg-glow flex h-10 w-10 items-center justify-center rounded-xl border border-white/30 bg-white/20 text-white backdrop-blur">
          <svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M4 4h11l5 5v11H4z" /><path d="M15 4v5h5" /><path d="M8 12h8M8 16h5" /></svg>
        </div>
        <div class="leading-tight">
          <p class="font-sora text-[15px] font-semibold text-white">Prompt Library</p>
          <p class="sg-mono mt-1 flex items-center gap-1.5 text-[11px] text-white/70">
            <span class="sg-dot"></span> <span data-count>9</span> templates · copy-ready
          </p>
        </div>
      </div>
      <div class="relative flex items-center">
        <svg class="pointer-events-none absolute left-3 h-3.5 w-3.5 text-white/50" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="M21 21l-4-4" /></svg>
        <input
          type="search"
          name="q"
          placeholder="Search prompts…"
          aria-label="Search prompts"
          class="w-44 rounded-xl border border-white/20 bg-white/10 py-2 pl-9 pr-3 font-sora text-[13px] text-white placeholder:text-white/40 backdrop-blur focus:border-white/40 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/40 sm:w-64"
          data-search
        />
      </div>
    </div>

    <!-- Filter chips -->
    <div class="flex flex-wrap gap-2 border-b border-white/15 px-5 py-3.5" role="tablist" aria-label="Filter prompts by category" data-filters>
      <button type="button" role="tab" aria-selected="true" data-filter="all" class="filter-chip sg-mono rounded-full border border-white/30 bg-gradient-to-r from-fuchsia-500 to-indigo-500 px-3 py-1.5 text-[11px] font-medium text-white shadow-[0_0_0_1px_rgba(255,255,255,0.08)] transition-opacity hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60">All</button>
      <button type="button" role="tab" aria-selected="false" data-filter="writing" class="filter-chip sg-mono rounded-full border border-white/20 bg-white/10 px-3 py-1.5 text-[11px] font-medium text-white/85 backdrop-blur transition-colors hover:bg-white/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60">Writing</button>
      <button type="button" role="tab" aria-selected="false" data-filter="code" class="filter-chip sg-mono rounded-full border border-white/20 bg-white/10 px-3 py-1.5 text-[11px] font-medium text-white/85 backdrop-blur transition-colors hover:bg-white/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60">Code</button>
      <button type="button" role="tab" aria-selected="false" data-filter="analysis" class="filter-chip sg-mono rounded-full border border-white/20 bg-white/10 px-3 py-1.5 text-[11px] font-medium text-white/85 backdrop-blur transition-colors hover:bg-white/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60">Analysis</button>
      <button type="button" role="tab" aria-selected="false" data-filter="image" class="filter-chip sg-mono rounded-full border border-white/20 bg-white/10 px-3 py-1.5 text-[11px] font-medium text-white/85 backdrop-blur transition-colors hover:bg-white/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60">Image</button>
    </div>

    <!-- Grid -->
    <div class="grid grid-cols-1 gap-3 p-5 sm:grid-cols-2 lg:grid-cols-3" data-grid>

      <!-- Card: Writing -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="writing">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Writing</span>
          <span class="sg-mono text-[10px] text-white/40">#01</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Cold Email Hook</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Craft a punchy first sentence that earns a reply within three seconds.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Write a cold email opening line for {{product}} targeting {{role}}. One sentence, curiosity-driven, no more than 12 words. Avoid hype words.">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Code -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="code">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Code</span>
          <span class="sg-mono text-[10px] text-white/40">#02</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Code Reviewer</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Review a function for bugs, edge cases, and readability — list issues by severity.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Review the following code for bugs, security, and readability. Report findings as a list grouped by severity (critical / warning / nit). Suggest concrete fixes with code snippets.&#10;&#10;CODE:&#10;{{code}}">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Analysis -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="analysis">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Analysis</span>
          <span class="sg-mono text-[10px] text-white/40">#03</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Data Summarizer</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Extract three key insights, a trend, and one risk from raw data.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Summarize the following data. Output: 3 key insights (bullet), 1 trend with direction, 1 risk to watch. Keep each item under 25 words.&#10;&#10;DATA:&#10;{{data}}">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Image -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="image">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Image</span>
          <span class="sg-mono text-[10px] text-white/40">#04</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Product Hero Shot</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Cinematic product photography prompt with lighting, lens, and mood baked in.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Cinematic product photo of {{product}} on a textured stone surface, soft rim light, 85mm lens, shallow depth of field, warm golden hour glow, high detail, 4k, no text.">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Writing -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="writing">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Writing</span>
          <span class="sg-mono text-[10px] text-white/40">#05</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Blog Post Outline</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Generate a structured outline with H2/H3 hierarchy and a hook intro.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Create a blog post outline for {{topic}} aimed at {{audience}}. Structure: H2 sections with H3 sub-points, a hook intro, and a CTA. Keep each H3 to one sentence.">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Code -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="code">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Code</span>
          <span class="sg-mono text-[10px] text-white/40">#06</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">SQL Optimizer</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Diagnose a slow query, suggest indexes, and rewrite for performance.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Analyze the following SQL for performance. Output: (1) what is slow and why, (2) indexes to add, (3) a rewritten query. Note the dialect.&#10;&#10;SQL:&#10;{{sql}}">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Analysis -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="analysis">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Analysis</span>
          <span class="sg-mono text-[10px] text-white/40">#07</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Sentiment Analyzer</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Classify sentiment per message with confidence scores and a summary.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Classify sentiment for each message as positive / neutral / negative with a confidence 0-1. End with a one-line aggregate summary.&#10;&#10;MESSAGES:&#10;{{messages}}">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Image -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="image">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Image</span>
          <span class="sg-mono text-[10px] text-white/40">#08</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Logo Concept</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Minimal geometric logo prompt — mark, palette, and negative space.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Minimal geometric logo for {{brand}}, single mark, strong negative space, two-color palette, flat vector, centered, on white, no text.">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

      <!-- Card: Code -->
      <article class="prompt-card group relative overflow-hidden rounded-xl border border-white/20 bg-white/10 p-4 backdrop-blur-md transition-colors hover:bg-white/15" data-category="code">
        <div class="flex items-center justify-between gap-2">
          <span class="sg-mono rounded-md border border-white/20 bg-white/15 px-1.5 py-0.5 text-[10px] uppercase tracking-wider text-white/80">Code</span>
          <span class="sg-mono text-[10px] text-white/40">#09</span>
        </div>
        <h3 class="mt-3 font-sora text-[15px] font-semibold leading-tight text-white">Refactor to Hooks</h3>
        <p class="mt-2 flex-1 font-sora text-[13px] leading-relaxed text-white/70">Convert a class component to idiomatic React hooks with tests.</p>
        <button type="button" class="copy-btn mt-4 inline-flex items-center justify-center gap-2 rounded-lg border border-white/20 bg-white/15 px-3 py-2 sg-mono text-[11px] text-white backdrop-blur transition-colors hover:bg-white/25 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60" data-prompt="Refactor this React class component to hooks. Preserve behavior, split into small effects, and add a unit test for the main case.&#10;&#10;CODE:&#10;{{code}}">
          <svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>
          <span class="copy-label">Copy</span>
        </button>
      </article>

    </div>

    <!-- Empty state -->
    <div class="hidden border-t border-white/15 px-5 py-10 text-center" data-empty>
      <p class="font-sora text-[14px] font-medium text-white/70">No prompts match that filter.</p>
      <p class="sg-mono mt-1 text-[11px] text-white/40">Try a different category or search term.</p>
    </div>

    <!-- Footer -->
    <div class="flex items-center justify-between gap-2 border-t border-white/15 px-5 py-3">
      <p class="sg-mono text-[11px] text-white/50">// click copy to grab the prompt</p>
      <p class="sg-mono text-[11px] text-white/60"><span data-visible-count>9</span> shown</p>
    </div>
  </div>

  <style>
    [data-promptlib="sg"] .sg-mono { font-family: 'JetBrains Mono', ui-monospace, monospace; }
    [data-promptlib="sg"] .font-sora { font-family: 'Sora', sans-serif; }
    [data-promptlib="sg"] .sg-dot { display: inline-block; height: 6px; width: 6px; border-radius: 9999px; background: #6ee7ff; box-shadow: 0 0 8px #6ee7ff; }
    [data-promptlib="sg"] .sg-glow { box-shadow: 0 0 0 1px rgba(255,255,255,0.08), 0 4px 20px -4px rgba(168,85,247,0.5); }
  </style>

  <script>
    (function () {
      var root = document.currentScript.closest('[data-promptlib="sg"]');
      if (!root) return;
      var filters = root.querySelector('[data-filters]');
      var search = root.querySelector('[data-search]');
      var empty = root.querySelector('[data-empty]');
      var visibleCount = root.querySelector('[data-visible-count]');
      var cards = Array.prototype.slice.call(root.querySelectorAll('.prompt-card'));
      var current = 'all';

      function apply() {
        var q = (search && search.value || '').toLowerCase().trim();
        var shown = 0;
        cards.forEach(function (card) {
          var cat = card.getAttribute('data-category');
          var text = (card.textContent || '').toLowerCase();
          var matchCat = current === 'all' || cat === current;
          var matchQ = !q || text.indexOf(q) !== -1;
          var show = matchCat && matchQ;
          card.style.display = show ? '' : 'none';
          if (show) shown++;
        });
        if (empty) empty.classList.toggle('hidden', shown !== 0);
        if (visibleCount) visibleCount.textContent = String(shown);
      }

      filters.addEventListener('click', function (e) {
        var btn = e.target.closest('[data-filter]');
        if (!btn) return;
        current = btn.getAttribute('data-filter');
        Array.prototype.forEach.call(filters.querySelectorAll('.filter-chip'), function (c) {
          var on = c === btn;
          c.setAttribute('aria-selected', on ? 'true' : 'false');
          if (on) {
            c.classList.add('bg-gradient-to-r', 'from-fuchsia-500', 'to-indigo-500', 'border-white/30');
            c.classList.remove('bg-white/10', 'border-white/20', 'text-white/85');
          } else {
            c.classList.remove('bg-gradient-to-r', 'from-fuchsia-500', 'to-indigo-500', 'border-white/30');
            c.classList.add('bg-white/10', 'border-white/20', 'text-white/85');
          }
        });
        apply();
      });

      if (search) search.addEventListener('input', apply);

      var checkSVG = '<svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path d="M20 6L9 17l-5-5" /></svg>';
      var copySVG = '<svg class="copy-icon h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2" /><path d="M5 15V5h10" /></svg>';

      function flash(btn) {
        var label = btn.querySelector('.copy-label');
        var icon = btn.querySelector('.copy-icon');
        var prevLabel = label ? label.textContent : '';
        if (label) label.textContent = 'Copied!';
        if (icon) { var tmp = document.createElement('span'); tmp.innerHTML = checkSVG; icon.replaceWith(tmp.firstChild); }
        btn.classList.add('border-[#6ee7ff]/50', 'text-[#6ee7ff]');
        setTimeout(function () {
          if (label) label.textContent = prevLabel || 'Copy';
          var cur = btn.querySelector('.copy-icon');
          if (cur) { var tmp2 = document.createElement('span'); tmp2.innerHTML = copySVG; cur.replaceWith(tmp2.firstChild); }
          btn.classList.remove('border-[#6ee7ff]/50', 'text-[#6ee7ff]');
        }, 1200);
      }

      function copyText(text, btn) {
        function done() { flash(btn); }
        if (navigator.clipboard && navigator.clipboard.writeText) {
          navigator.clipboard.writeText(text).then(done, function () { fallbackCopy(text); done(); });
        } else {
          fallbackCopy(text); done();
        }
      }

      function fallbackCopy(text) {
        var ta = document.createElement('textarea');
        ta.value = text; ta.setAttribute('readonly', '');
        ta.style.position = 'absolute'; ta.style.left = '-9999px';
        document.body.appendChild(ta); ta.select();
        try { document.execCommand('copy'); } catch (e) {}
        document.body.removeChild(ta);
      }

      root.addEventListener('click', function (e) {
        var btn = e.target.closest('.copy-btn');
        if (!btn) return;
        copyText(btn.getAttribute('data-prompt') || '', btn);
      });
    })();
  </script>
</div>
290 lines UTF-8 · LF · Spaces: 2
DevSnips AI ready Claude · Cursor · Windsurf

Agent skill & Model Context Protocol

Pass this section straight into your AI workflow. DevSnips exposes each resource as a structured, addressable registry entry, so your agent installs the real files instead of approximating them.

devsnips://sections/ai-product/prompt-library/sharp-glassmorphism
Prompt instruction
I want to use this DevSnips resource in production:

Page:
https://devsnips.site/library/tailwind/sections/ai-product/prompt-library/sharp-glassmorphism/

Install: npx devsnips add
Tailwind/Sections/AI-Product/prompt-library/sharp-glassmorphism

This is the Prompt Library — Sharp Glassmorphism — Frosted-glass prompt gallery floating over a vivid animated gradient mesh — translucent panels, backdrop blur, and luminous gradient accents. Includes category filter chips (Writing, Code, Analysis, Image), live search, and a working copy-to-clipboard button on every card with a checkmark 'Copied!' state. Requires a colored backdrop behind the panel for the glass to read.

Use this DevSnips resource as the starting point for my project.
Adapt it to my project's stack and conventions, fix any issues,
and make it production-ready while preserving its intended design
and behavior.

Paste into ChatGPT, Claude or your agent — it already carries the page URL and the exact install path.

Resource URI
devsnips://sections/ai-product/prompt-library/sharp-glassmorphism