SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
3.5 KB · 63 lines tsx
Raw Blame History
1/**2 * The RareIndex mark: a cut stone (crown, girdle, pavilion) whose facets are drawn by an ascending3 * index line — rarity and market data in one shape. Source of truth: public/brand/rareindex-mark.svg4 * (favicons, PWA icons and share images are generated from it by scripts/brand-assets.mjs).5 */6export function LogoMark({ className, id = 'ri' }: { className?: string; id?: string }) {7  const gold = `${id}-gold`;8  const mint = `${id}-mint`;9  return (10    <svg viewBox="0 0 64 64" className={className} aria-hidden focusable="false">11      <defs>12        <linearGradient id={gold} x1="12" y1="22" x2="52" y2="54" gradientUnits="userSpaceOnUse">13          <stop offset="0" stopColor="#F1D08A" />14          <stop offset="1" stopColor="#C9963F" />15        </linearGradient>16        <linearGradient id={mint} x1="16" y1="42" x2="46" y2="24" gradientUnits="userSpaceOnUse">17          <stop offset="0" stopColor="#2FB673" />18          <stop offset="1" stopColor="#5FE3A1" />19        </linearGradient>20      </defs>21      <rect width="64" height="64" rx="14" fill="#0B0F19" />22      <rect x="0.75" y="0.75" width="62.5" height="62.5" rx="13.25" fill="none" stroke="#FFFFFF" strokeOpacity="0.08" strokeWidth="1.5" />23      <path d="M19 19.5H45L52.5 29.5 32 54.5 11.5 29.5Z" fill={`url(#${gold})`} fillOpacity="0.12" stroke={`url(#${gold})`} strokeWidth="3" strokeLinejoin="round" />24      <path d="M11.5 29.5H52.5" stroke={`url(#${gold})`} strokeWidth="2" strokeOpacity="0.55" strokeLinecap="round" />25      <path d="M16.5 34.5 24 42.5 31 32.5 37.5 38 46 26.5" fill="none" stroke={`url(#${mint})`} strokeWidth="3.2" strokeLinecap="round" strokeLinejoin="round" />26      <path d="M40.5 26.5H46V32" fill="none" stroke={`url(#${mint})`} strokeWidth="3.2" strokeLinecap="round" strokeLinejoin="round" />27    </svg>28  );29}3031/** Wordmark: "Rare" in the foreground colour, "Index" in brand gold. */32export function LogoWordmark({ className }: { className?: string }) {33  return (34    <span className={`font-semibold tracking-tight ${className ?? ''}`}>35      Rare<span className="text-[#C9963F]">Index</span>36    </span>37  );38}3940/** Static markup for Satori (next/og): no CSS variables, plain attributes, unique gradient ids. */41export function ogMark(size: number) {42  return (43    <svg viewBox="0 0 64 64" width={size} height={size}>44      <defs>45        <linearGradient id="og-gold" x1="12" y1="22" x2="52" y2="54" gradientUnits="userSpaceOnUse">46          <stop offset="0" stopColor="#F1D08A" />47          <stop offset="1" stopColor="#C9963F" />48        </linearGradient>49        <linearGradient id="og-mint" x1="16" y1="42" x2="46" y2="24" gradientUnits="userSpaceOnUse">50          <stop offset="0" stopColor="#2FB673" />51          <stop offset="1" stopColor="#5FE3A1" />52        </linearGradient>53      </defs>54      <rect width="64" height="64" rx="14" fill="#0B0F19" />55      <rect x="0.75" y="0.75" width="62.5" height="62.5" rx="13.25" fill="none" stroke="#FFFFFF" strokeOpacity="0.14" strokeWidth="1.5" />56      <path d="M19 19.5H45L52.5 29.5 32 54.5 11.5 29.5Z" fill="url(#og-gold)" fillOpacity="0.12" stroke="url(#og-gold)" strokeWidth="3" strokeLinejoin="round" />57      <path d="M11.5 29.5H52.5" stroke="url(#og-gold)" strokeWidth="2" strokeOpacity="0.55" strokeLinecap="round" />58      <path d="M16.5 34.5 24 42.5 31 32.5 37.5 38 46 26.5" fill="none" stroke="url(#og-mint)" strokeWidth="3.2" strokeLinecap="round" strokeLinejoin="round" />59      <path d="M40.5 26.5H46V32" fill="none" stroke="url(#og-mint)" strokeWidth="3.2" strokeLinecap="round" strokeLinejoin="round" />60    </svg>61  );62}63