<3/products/personal-site/components/

StackIcon.tsx

// Original geometry from Ghost's assets/manifesto-stack-icons.svg.
// Navigation styles control stroke weight and color for the selected segment.
const paths = {
  personhood: "M12 20C10.5 18.7 3.5 13.8 3.5 9.2C3.5 6.5 5.45 4.7 8 4.7C9.7 4.7 11.2 5.6 12 7.1C12.8 5.6 14.3 4.7 16 4.7C18.55 4.7 20.5 6.5 20.5 9.2C20.5 13.8 13.5 18.7 12 20Z",
  ai: "M3.6 5.5H20.4M8.2 5.5V14.8C8.2 17.1 7.5 18.9 5.9 20M15.8 5.5V14.8C15.8 17.1 16.5 18.9 18.1 20",
  stock: "M18.5 7.2C17.15 5.65 14.95 4.8 12.3 4.8C8.8 4.8 6.2 6.4 6.2 9C6.2 11.6 8.8 12.1 12.2 12.6C15.6 13.1 18 13.8 18 16.3C18 18.7 15.5 20 12.1 20C9.3 20 6.8 19 5.4 17.1M12 2.5V22",
};

export type Section = keyof typeof paths;

export function StackIcon({ section, size = 18, stroke = "currentColor", strokeWidth = 1.8 }: {
  section: Section;
  size?: number;
  stroke?: string;
  strokeWidth?: number;
}) {
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 24 24"
      width={size}
      height={size}
      fill="none"
      stroke={stroke}
      strokeOpacity=".96"
      strokeWidth={strokeWidth}
      strokeLinecap="round"
      strokeLinejoin="round"
      aria-hidden="true"
      focusable="false"
    >
      <path d={paths[section]} />
    </svg>
  );
}