پیش‌نمایش زنده
کد HTML
<div class="nhost-card">
  <div class="card-glow"></div>
  <div class="card-grid"></div>

  <div class="card-header">
    <div class="brand-wrapper">
      <div class="logo-container">
        <svg
          class="nhost-logo"
          viewBox="0 0 32 34"
          fill="none"
          xmlns="http://www.w3.org/2000/svg"
          aria-label="Nhost Logo"
        >
          <path
            d="M29.013 7.305 17.12.46a3.489 3.489 0 0 0-3.461 0 3.458 3.458 0 0 0-1.729 2.984v.894l-.775-.447a3.489 3.489 0 0 0-3.461 0 3.459 3.459 0 0 0-1.729 2.99v.892l-.775-.446a3.488 3.488 0 0 0-3.46 0A3.459 3.459 0 0 0 0 10.313v21.443a1.624 1.624 0 0 0 1.803 1.612c.303-.033.591-.15.83-.34l5.898-4.636 9.096 5.233a1.652 1.652 0 0 0 1.627 0c.501-.29.814-.826.814-1.404V19.319a5.952 5.952 0 0 0-2.983-5.149l-2.983-1.716V3.448a1.288 1.288 0 0 1 1.291-1.286c.227 0 .449.06.645.173L27.93 9.177a3.795 3.795 0 0 1 1.898 3.276V28.52c0 .458-.248.884-.645 1.113l-3.151 1.813V15.884a5.953 5.953 0 0 0-2.983-5.148L15.73 6.524V9.02l6.237 3.59a3.793 3.793 0 0 1 1.898 3.275V32.38c0 .575.311 1.115.813 1.405a1.653 1.653 0 0 0 1.628 0l3.965-2.282A3.457 3.457 0 0 0 32 28.517V12.448a5.968 5.968 0 0 0-2.987-5.143ZM15.995 16.04a3.792 3.792 0 0 1 1.898 3.277v11.97l-7.53-4.333 2.417-1.898a3.424 3.424 0 0 0 1.318-2.707v-7.397l1.898 1.09v-.002Zm-4.066-2.34v8.645c0 .397-.18.766-.491 1.01l-9.27 7.283V10.31a1.286 1.286 0 0 1 1.29-1.286c.226 0 .448.06.644.173l1.863 1.07v15.325l2.168-1.704V6.878a1.286 1.286 0 0 1 1.29-1.285c.227 0 .45.06.645.173l1.861 1.07v4.367L9.762 9.955v2.498l2.17 1.249h-.003Z"
            fill="currentColor"
          ></path>
        </svg>
      </div>
      <span class="brand-text">NHOST</span>
    </div>

    <div class="action-buttons">
      <button class="btn-icon" aria-label="Star this repo">
        <svg
          class="icon star"
          viewBox="0 0 16 16"
          xmlns="http://www.w3.org/2000/svg"
        >
          <path
            fill-rule="evenodd"
            d="M8 .25l2.472 5.008 5.528.803-4 3.899.944 5.508L8 12.625l-4.944 2.843.944-5.508-4-3.9 5.528-.802L8 .25z"
          ></path>
        </svg>
      </button>
      <button class="btn-icon" aria-label="View on GitHub">
        <svg
          class="icon github"
          viewBox="0 0 16 16"
          version="1.1"
          aria-hidden="true"
        >
          <path
            fill-rule="evenodd"
            d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"
          ></path>
        </svg>
      </button>
    </div>
  </div>

  <div class="card-body">
    <div class="repo-title">nhost-js<span class="blinking-cursor"></span></div>
    <p class="repo-description">
      The ultra-lightweight JavaScript SDK for interacting with the Nhost stack.
    </p>
    <div class="tag-wrapper">
      <span class="badge badge-js">JS</span>
      <span class="badge badge-ts">TS</span>
    </div>
  </div>
</div>
کد CSS
@keyframes blink {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
}

@keyframes grid-move {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: 30px 30px;
  }
}

@keyframes float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-4px);
  }
}

/* Component Styles */
.nhost-card {
  --bg-color: #0c111d;
  --card-border: #1f2937;
  --text-primary: #f3f4f6;
  --text-secondary: #9ca3af;
  --accent-color: #0052cc;
  --accent-glow: rgba(0, 82, 204, 0.35);
  --brand-gradient: linear-gradient(135deg, #0052cc, #2684ff);

  font-family: "Inter", system-ui, sans-serif;
  width: 100%;
  max-width: 400px;
  background-color: var(--bg-color);
  border: 1px solid var(--card-border);
  border-radius: 16px;
  padding: 24px;
  position: relative;
  overflow: hidden;
  box-shadow: 0 4px 24px -1px rgba(0, 0, 0, 0.2);
  transition:
    transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.3s ease,
    border-color 0.3s ease;
  z-index: 1;
}

.nhost-card:hover {
  transform: translateY(-4px) scale(1.01);
  box-shadow:
    0 20px 40px -5px rgba(0, 0, 0, 0.4),
    0 0 0 1px rgba(38, 132, 255, 0.3);
  border-color: rgba(38, 132, 255, 0.5);
}

.card-grid {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: linear-gradient(
      rgba(255, 255, 255, 0.05) 1px,
      transparent 1px
    ),
    linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
  background-size: 30px 30px;
  mask-image: linear-gradient(to bottom, black 40%, transparent 100%);
  pointer-events: none;
  z-index: -2;
  transition: opacity 0.5s ease;
  opacity: 0.5;
}

.nhost-card:hover .card-grid {
  animation: grid-move 20s linear infinite;
  opacity: 0.8;
}

.card-glow {
  position: absolute;
  top: -50px;
  right: -50px;
  width: 150px;
  height: 150px;
  background: radial-gradient(
    circle,
    var(--accent-glow) 0%,
    rgba(0, 0, 0, 0) 70%
  );
  filter: blur(40px);
  z-index: -1;
  transition: all 0.5s ease;
}

.nhost-card:hover .card-glow {
  transform: scale(1.5);
  background: radial-gradient(
    circle,
    rgba(38, 132, 255, 0.4) 0%,
    rgba(0, 0, 0, 0) 70%
  );
}

/* Header Section */
.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
}

.brand-wrapper {
  display: flex;
  align-items: center;
  gap: 12px;
}

.logo-container {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.03);
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  transition: background 0.3s ease;
}

.nhost-logo {
  width: 24px;
  height: 24px;
  color: #fff;
  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.3));
}

.brand-text {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0.5px;
  color: var(--text-primary);
}

/* Actions */
.action-buttons {
  display: flex;
  gap: 8px;
}

.btn-icon {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 8px;
  border-radius: 8px;
  color: var(--text-secondary);
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

.btn-icon:hover {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  transform: translateY(-2px);
}

.icon {
  width: 20px;
  height: 20px;
  fill: currentColor;
}

.icon.star {
  transition: color 0.2s;
}

.btn-icon:hover .icon.star {
  color: #fbbf24;
  filter: drop-shadow(0 0 6px rgba(251, 191, 36, 0.5));
}

/* Body Section */
.card-body {
  position: relative;
}

.repo-title {
  font-family: "JetBrains Mono", monospace;
  font-size: 24px;
  font-weight: 500;
  color: var(--text-primary);
  margin: 0 0 12px 0;
  display: flex;
  align-items: center;
}

.blinking-cursor {
  display: inline-block;
  width: 10px;
  height: 3px;
  background-color: var(--accent-color);
  margin-left: 6px;
  animation: blink 1s step-end infinite;
  box-shadow: 0 0 8px var(--accent-color);
}

.repo-description {
  font-size: 15px;
  line-height: 1.6;
  color: var(--text-secondary);
  margin: 0 0 24px 0;
}

/* Tags */
.tag-wrapper {
  display: flex;
  gap: 10px;
}

.badge {
  font-family: "JetBrains Mono", monospace;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 6px;
  transition: all 0.3s ease;
  cursor: default;
  position: relative;
  overflow: hidden;
}

/* JS Tag */
.badge-js {
  background-color: rgba(247, 223, 30, 0.1);
  color: #f7df1e;
  border: 1px solid rgba(247, 223, 30, 0.2);
}

.badge-js:hover {
  background-color: rgba(247, 223, 30, 0.2);
  box-shadow: 0 0 12px rgba(247, 223, 30, 0.2);
  transform: translateY(-1px);
}

/* TS Tag */
.badge-ts {
  background-color: rgba(49, 120, 198, 0.1);
  color: #3178c6;
  border: 1px solid rgba(49, 120, 198, 0.2);
}

.badge-ts:hover {
  background-color: rgba(49, 120, 198, 0.2);
  box-shadow: 0 0 12px rgba(49, 120, 198, 0.3);
  transform: translateY(-1px);
}
نوع: card
تاریخ ایجاد: 2026/06/06
آخرین بروزرسانی: 2026/06/06