1 estrella en GitHub = 1 componente nuevo.

Dar una estrella
Secciones de Página heroglassmorphismanimated-orbstrustresponsive

Hero Glass

Cabecera hero con tarjeta de cristal esmerilado, titulares con degradado y badges interactivos.

Vista Previa en Vivo

Your Complete Component Library

Build stunning landing pages and apps with 200+ accessible, responsive, and customizable components.

Trusted by 5,000+ developers
A B C D +

Uso

Copia y pega este código directamente en tu página de Astro:

astro
---
import { HeroGlass } from 'astro-component-kit';
---

<HeroGlass />
--- import { HeroGlass } from 'astro-component-kit'; --- <HeroGlass />

Instalación Manual

Si no estás usando el paquete npm, crea un archivo nuevo y pega el siguiente código: src/components/lib/HeroGlass.astro:

astro
---
// HeroGlass.astro — Centered hero with glassmorphism card overlay
interface Props {
  title?: string;
  subtitle?: string;
}

const {
  title = "Your Complete Component Library",
  subtitle = "Build stunning landing pages and apps with 200+ accessible, responsive, and customizable components.",
} = Astro.props;
---

<div class="cq-hero-glass-cq">
<section class="hero-glass">
  <div class="hero-glass__bg" aria-hidden="true">
    <div class="hero-glass__orb hero-glass__orb--1"></div>
    <div class="hero-glass__orb hero-glass__orb--2"></div>
    <div class="hero-glass__orb hero-glass__orb--3"></div>
  </div>
  <div class="container">
    <div class="hero-glass__card">
      <h1 class="hero-glass__title">{title}</h1>
      <p class="hero-glass__subtitle">{subtitle}</p>
      <div class="hero-glass__actions">
        <button class="hero-glass__btn hero-glass__btn--primary">
          Get Started Free
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
        </button>
        <button class="hero-glass__btn hero-glass__btn--secondary">
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="5 3 19 12 5 21 5 3"/></svg>
          Watch Demo
        </button>
      </div>
      <div class="hero-glass__trust">
        <span>Trusted by 5,000+ developers</span>
        <div class="hero-glass__avatars">
          <span class="hero-glass__avatar">A</span>
          <span class="hero-glass__avatar">B</span>
          <span class="hero-glass__avatar">C</span>
          <span class="hero-glass__avatar">D</span>
          <span class="hero-glass__avatar hero-glass__avatar--more">+</span>
        </div>
      </div>
    </div>
  </div>
</section>
</div>
<style>
  .cq-hero-glass-cq { container-type: inline-size; }
  .hero-glass {
    position: relative;
    min-height: 90vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-8) var(--sp-6);
    overflow: hidden;
  }
  .hero-glass__bg {
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 20% 50%, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent) 0%, transparent 50%),
                radial-gradient(ellipse at 80% 20%, color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent) 0%, transparent 50%),
                radial-gradient(ellipse at 50% 80%, color-mix(in srgb, var(--c-primary, #b8860b) 6%, transparent) 0%, transparent 50%);
  }
  .hero-glass__orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    animation: orbFloat 10s ease-in-out infinite alternate;
  }
  .hero-glass__orb--1 {
    width: 400px; height: 400px;
    top: 10%; left: 15%;
    background: color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent);
  }
  .hero-glass__orb--2 {
    width: 300px; height: 300px;
    top: 40%; right: 10%;
    background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent);
    animation-delay: 2s;
  }
  .hero-glass__orb--3 {
    width: 250px; height: 250px;
    bottom: 15%; left: 40%;
    background: color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent);
    animation-delay: 4s;
  }
  @keyframes orbFloat {
    0% { transform: translate(0, 0) scale(1); }
    50% { transform: translate(20px, -15px) scale(1.05); }
    100% { transform: translate(-10px, 10px) scale(0.95); }
  }
  .hero-glass__card {
    position: relative;
    z-index: 1;
    max-width: 700px;
    margin: 0 auto;
    padding: var(--sp-8);
    background: rgba(10, 10, 10, 0.6);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
    border-radius: var(--r-xl);
    box-shadow: 0 24px 80px rgba(0,0,0,0.5),
                inset 0 1px 0 rgb(var(--ink-rgb, 255 255 255) / 0.05);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-6);
  }
  .hero-glass__title {
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 900;
    color: var(--c-text-1);
    letter-spacing: -0.03em;
    line-height: 1.1;
    margin: 0;
    text-align: center;
  }
  .hero-glass__subtitle {
    font-size: 1.05rem;
    color: var(--c-text-2);
    line-height: 1.6;
    margin: 0;
    text-align: center;
    max-width: 500px;
  }
  .hero-glass__actions {
    display: flex;
    gap: var(--sp-4);
    flex-wrap: wrap;
    justify-content: center;
    margin-top: var(--sp-4);
  }
  .hero-glass__btn {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-2);
    padding: 0.8rem 1.6rem;
    font-size: 0.9rem;
    font-weight: 600;
    font-family: var(--font-sans);
    border-radius: var(--r-md);
    cursor: pointer;
    transition: all 0.25s ease;
  }
  .hero-glass__btn--primary {
    background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary));
    color: var(--c-on-primary, #0a0a0a);
    border: none;
    box-shadow: 0 4px 20px color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
  }
  .hero-glass__btn--primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 30px color-mix(in srgb, var(--c-primary, #b8860b) 45%, transparent);
  }
  .hero-glass__btn--secondary {
    background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
    color: var(--c-text-1);
    border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
  }
  .hero-glass__btn--secondary:hover {
    background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
    border-color: color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
    transform: translateY(-2px);
  }
  .hero-glass__trust {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
    font-size: 0.8rem;
    color: var(--c-text-3);
    padding-top: var(--sp-3);
    border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
  }
  .hero-glass__avatars { display: flex; }
  .hero-glass__avatar {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--c-primary), var(--c-primary-light));
    color: var(--c-on-primary, #0a0a0a);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.65rem;
    font-weight: 700;
    border: 2px solid rgba(10,10,10,0.8);
    margin-left: -8px;
  }
  .hero-glass__avatar:first-child { margin-left: 0; }
  .hero-glass__avatar--more {
    background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
    color: var(--c-text-3);
  }

  @container (max-width: 640px) {
    .hero-glass { min-height: 75vh; padding: var(--sp-8) var(--sp-4); }
    .hero-glass__card { padding: var(--sp-6); }
    .hero-glass__actions { flex-direction: column; width: 100%; max-width: 260px; }
    .hero-glass__btn { width: 100%; justify-content: center; }
  }
</style>
--- // HeroGlass.astro — Centered hero with glassmorphism card overlay interface Props { title?: string; subtitle?: string; } const { title = "Your Complete Component Library", subtitle = "Build stunning landing pages and apps with 200+ accessible, responsive, and customizable components.", } = Astro.props; --- <div class="cq-hero-glass-cq"> <section class="hero-glass"> <div class="hero-glass__bg" aria-hidden="true"> <div class="hero-glass__orb hero-glass__orb--1"></div> <div class="hero-glass__orb hero-glass__orb--2"></div> <div class="hero-glass__orb hero-glass__orb--3"></div> </div> <div class="container"> <div class="hero-glass__card"> <h1 class="hero-glass__title">{title}</h1> <p class="hero-glass__subtitle">{subtitle}</p> <div class="hero-glass__actions"> <button class="hero-glass__btn hero-glass__btn--primary"> Get Started Free <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg> </button> <button class="hero-glass__btn hero-glass__btn--secondary"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="5 3 19 12 5 21 5 3"/></svg> Watch Demo </button> </div> <div class="hero-glass__trust"> <span>Trusted by 5,000+ developers</span> <div class="hero-glass__avatars"> <span class="hero-glass__avatar">A</span> <span class="hero-glass__avatar">B</span> <span class="hero-glass__avatar">C</span> <span class="hero-glass__avatar">D</span> <span class="hero-glass__avatar hero-glass__avatar--more">+</span> </div> </div> </div> </div> </section> </div> <style> .cq-hero-glass-cq { container-type: inline-size; } .hero-glass { position: relative; min-height: 90vh; display: flex; align-items: center; justify-content: center; padding: var(--sp-8) var(--sp-6); overflow: hidden; } .hero-glass__bg { position: absolute; inset: 0; background: radial-gradient(ellipse at 20% 50%, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent) 0%, transparent 50%), radial-gradient(ellipse at 50% 80%, color-mix(in srgb, var(--c-primary, #b8860b) 6%, transparent) 0%, transparent 50%); } .hero-glass__orb { position: absolute; border-radius: 50%; filter: blur(80px); animation: orbFloat 10s ease-in-out infinite alternate; } .hero-glass__orb--1 { width: 400px; height: 400px; top: 10%; left: 15%; background: color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent); } .hero-glass__orb--2 { width: 300px; height: 300px; top: 40%; right: 10%; background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent); animation-delay: 2s; } .hero-glass__orb--3 { width: 250px; height: 250px; bottom: 15%; left: 40%; background: color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent); animation-delay: 4s; } @keyframes orbFloat { 0% { transform: translate(0, 0) scale(1); } 50% { transform: translate(20px, -15px) scale(1.05); } 100% { transform: translate(-10px, 10px) scale(0.95); } } .hero-glass__card { position: relative; z-index: 1; max-width: 700px; margin: 0 auto; padding: var(--sp-8); background: rgba(10, 10, 10, 0.6); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1); border-radius: var(--r-xl); box-shadow: 0 24px 80px rgba(0,0,0,0.5), inset 0 1px 0 rgb(var(--ink-rgb, 255 255 255) / 0.05); display: flex; flex-direction: column; align-items: center; gap: var(--sp-6); } .hero-glass__title { font-size: clamp(2rem, 4vw, 3rem); font-weight: 900; color: var(--c-text-1); letter-spacing: -0.03em; line-height: 1.1; margin: 0; text-align: center; } .hero-glass__subtitle { font-size: 1.05rem; color: var(--c-text-2); line-height: 1.6; margin: 0; text-align: center; max-width: 500px; } .hero-glass__actions { display: flex; gap: var(--sp-4); flex-wrap: wrap; justify-content: center; margin-top: var(--sp-4); } .hero-glass__btn { display: inline-flex; align-items: center; gap: var(--sp-2); padding: 0.8rem 1.6rem; font-size: 0.9rem; font-weight: 600; font-family: var(--font-sans); border-radius: var(--r-md); cursor: pointer; transition: all 0.25s ease; } .hero-glass__btn--primary { background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary)); color: var(--c-on-primary, #0a0a0a); border: none; box-shadow: 0 4px 20px color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent); } .hero-glass__btn--primary:hover { transform: translateY(-2px); box-shadow: 0 8px 30px color-mix(in srgb, var(--c-primary, #b8860b) 45%, transparent); } .hero-glass__btn--secondary { background: rgb(var(--ink-rgb, 255 255 255) / 0.05); color: var(--c-text-1); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12); } .hero-glass__btn--secondary:hover { background: rgb(var(--ink-rgb, 255 255 255) / 0.1); border-color: color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent); transform: translateY(-2px); } .hero-glass__trust { display: flex; align-items: center; gap: var(--sp-3); font-size: 0.8rem; color: var(--c-text-3); padding-top: var(--sp-3); border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06); } .hero-glass__avatars { display: flex; } .hero-glass__avatar { width: 28px; height: 28px; border-radius: 50%; background: linear-gradient(135deg, var(--c-primary), var(--c-primary-light)); color: var(--c-on-primary, #0a0a0a); display: flex; align-items: center; justify-content: center; font-size: 0.65rem; font-weight: 700; border: 2px solid rgba(10,10,10,0.8); margin-left: -8px; } .hero-glass__avatar:first-child { margin-left: 0; } .hero-glass__avatar--more { background: rgb(var(--ink-rgb, 255 255 255) / 0.1); color: var(--c-text-3); } @container (max-width: 640px) { .hero-glass { min-height: 75vh; padding: var(--sp-8) var(--sp-4); } .hero-glass__card { padding: var(--sp-6); } .hero-glass__actions { flex-direction: column; width: 100%; max-width: 260px; } .hero-glass__btn { width: 100%; justify-content: center; } } </style>

Información Rápida

Categoría
Secciones de Página
Nombre de archivo
HeroGlass.astro
Dependencias
Ninguna — Astro nativo + CSS puro
Etiquetas
heroglassmorphismanimated-orbstrustresponsive