/**
 * @file Integration registry — metadata, official SVG logos, and SEO data for
 * every platform Pulse supports.
 *
 * ! SVG paths sourced from simple-icons (https://simpleicons.org).
 * ! All icons use a 24×24 viewBox.
 *
 * * 75 integrations across 7 categories.
 */

import { type ReactNode } from 'react'

// * ─── Types ──────────────────────────────────────────────────────────────────

export type IntegrationCategory =
  | 'framework'
  | 'backend'
  | 'ssg'
  | 'cms'
  | 'ecommerce'
  | 'platform'
  | 'hosting'

export interface Integration {
  id: string
  name: string
  description: string
  category: IntegrationCategory
  /** Brand hex colour (with #) */
  brandColor: string
  /** Whether the icon needs `dark:invert` (black-only logos) */
  invertInDark?: boolean
  /** Official 24×24 SVG as a React node */
  icon: ReactNode
  /** URL to official documentation / website */
  officialUrl: string
  /** SEO meta description for this integration's guide page */
  seoDescription: string
  /** Related integration IDs for cross-linking */
  relatedIds: string[]
}

// * ─── Category labels (for UI grouping) ──────────────────────────────────────

export const categoryLabels: Record<IntegrationCategory, string> = {
  framework: 'JavaScript Frameworks',
  backend: 'Backend Frameworks',
  ssg: 'Static Sites & Documentation',
  cms: 'CMS & Blogging',
  ecommerce: 'eCommerce',
  platform: 'Platforms & Tools',
  hosting: 'Hosting & Deployment',
}

export const categoryOrder: IntegrationCategory[] = [
  'framework',
  'backend',
  'ssg',
  'cms',
  'ecommerce',
  'platform',
  'hosting',
]

// * ─── Integration registry ──────────────────────────────────────────────────

export const integrations: Integration[] = [
  // * ─── JavaScript Frameworks ────────────────────────────────────────────────
  {
    id: 'nextjs',
    name: 'Next.js',
    description: 'Add privacy-friendly analytics to your Next.js application using next/script.',
    category: 'framework',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M18.665 21.978C16.758 23.255 14.465 24 12 24 5.377 24 0 18.623 0 12S5.377 0 12 0s12 5.377 12 12c0 3.583-1.574 6.801-4.067 9.001L9.219 7.2H7.2v9.596h1.615V9.251l9.85 12.727Zm-3.332-8.533 1.6 2.061V7.2h-1.6v6.245Z" />
      </svg>
    ),
    officialUrl: 'https://nextjs.org/docs',
    seoDescription:
      'Step-by-step guide to adding Pulse privacy-first analytics to your Next.js app with next/script. Covers App Router and Pages Router.',
    relatedIds: ['react', 'vercel', 'nuxt'],
  },
  {
    id: 'react',
    name: 'React',
    description: 'Integrate Pulse with any React SPA (Create React App, Vite, etc).',
    category: 'framework',
    brandColor: '#61DAFB',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#61DAFB' }}>
        <path d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z" />
      </svg>
    ),
    officialUrl: 'https://react.dev',
    seoDescription:
      'Integrate Pulse analytics with any React SPA — Create React App, Vite, or custom setups. Two easy methods.',
    relatedIds: ['nextjs', 'remix', 'gatsby', 'preact'],
  },
  {
    id: 'vue',
    name: 'Vue.js',
    description: 'Simple setup for Vue 2 and Vue 3 applications.',
    category: 'framework',
    brandColor: '#4FC08D',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#4FC08D' }}>
        <path d="M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z" />
      </svg>
    ),
    officialUrl: 'https://vuejs.org',
    seoDescription:
      'Add Pulse privacy-first analytics to your Vue.js app. Works with Vue 2, Vue 3, Vue CLI, and Vite.',
    relatedIds: ['nuxt', 'vitepress'],
  },
  {
    id: 'angular',
    name: 'Angular',
    description: 'Add Pulse analytics to your Angular application with a simple script tag.',
    category: 'framework',
    brandColor: '#0F0F11',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M16.712 17.711H7.288l-1.204 2.916L12 24l5.916-3.373-1.204-2.916ZM14.692 0l7.832 16.855.814-12.856L14.692 0ZM9.308 0 .662 3.999l.814 12.856L9.308 0Zm-.405 13.93h6.198L12 6.396 8.903 13.93Z" />
      </svg>
    ),
    officialUrl: 'https://angular.dev',
    seoDescription:
      'Add Pulse analytics to your Angular application. Simple index.html setup for all Angular versions.',
    relatedIds: ['react', 'vue'],
  },
  {
    id: 'svelte',
    name: 'Svelte',
    description: 'Integrate Pulse with Svelte or SvelteKit in under a minute.',
    category: 'framework',
    brandColor: '#FF3E00',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF3E00' }}>
        <path d="M10.354 21.125a4.44 4.44 0 0 1-4.765-1.767 4.109 4.109 0 0 1-.703-3.107 3.898 3.898 0 0 1 .134-.522l.105-.321.287.21a7.21 7.21 0 0 0 2.186 1.092l.208.063-.02.208a1.253 1.253 0 0 0 .226.83 1.337 1.337 0 0 0 1.435.533 1.231 1.231 0 0 0 .343-.15l5.59-3.562a1.164 1.164 0 0 0 .524-.778 1.242 1.242 0 0 0-.211-.937 1.338 1.338 0 0 0-1.435-.533 1.23 1.23 0 0 0-.343.15l-2.133 1.36a4.078 4.078 0 0 1-1.135.499 4.44 4.44 0 0 1-4.765-1.766 4.108 4.108 0 0 1-.702-3.108 3.855 3.855 0 0 1 1.742-2.582l5.589-3.563a4.072 4.072 0 0 1 1.135-.499 4.44 4.44 0 0 1 4.765 1.767 4.109 4.109 0 0 1 .703 3.107 3.943 3.943 0 0 1-.134.522l-.105.321-.286-.21a7.204 7.204 0 0 0-2.187-1.093l-.208-.063.02-.207a1.255 1.255 0 0 0-.226-.831 1.337 1.337 0 0 0-1.435-.532 1.231 1.231 0 0 0-.343.15L8.62 9.368a1.162 1.162 0 0 0-.524.778 1.24 1.24 0 0 0 .211.937 1.338 1.338 0 0 0 1.435.533 1.235 1.235 0 0 0 .344-.151l2.132-1.36a4.067 4.067 0 0 1 1.135-.498 4.44 4.44 0 0 1 4.765 1.766 4.108 4.108 0 0 1 .702 3.108 3.857 3.857 0 0 1-1.742 2.583l-5.589 3.562a4.072 4.072 0 0 1-1.135.499m10.358-17.95C18.484-.015 14.082-.96 10.9 1.068L5.31 4.63a6.412 6.412 0 0 0-2.896 4.295 6.753 6.753 0 0 0 .666 4.336 6.43 6.43 0 0 0-.96 2.396 6.833 6.833 0 0 0 1.168 5.167c2.229 3.19 6.63 4.135 9.812 2.108l5.59-3.562a6.41 6.41 0 0 0 2.896-4.295 6.756 6.756 0 0 0-.665-4.336 6.429 6.429 0 0 0 .958-2.396 6.831 6.831 0 0 0-1.167-5.168Z" />
      </svg>
    ),
    officialUrl: 'https://svelte.dev',
    seoDescription:
      'Add Pulse analytics to Svelte or SvelteKit. Simple setup for both Vite-based Svelte and SvelteKit applications.',
    relatedIds: ['astro', 'vue'],
  },
  {
    id: 'nuxt',
    name: 'Nuxt',
    description: 'Configure Pulse in your Nuxt application via nuxt.config.',
    category: 'framework',
    brandColor: '#00DC82',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#00DC82' }}>
        <path d="M13.4642 19.8295h8.9218c.2834 0 .5618-.0723.8072-.2098a1.5899 1.5899 0 0 0 .5908-.5732 1.5293 1.5293 0 0 0 .216-.783 1.529 1.529 0 0 0-.2167-.7828L17.7916 7.4142a1.5904 1.5904 0 0 0-.5907-.573 1.6524 1.6524 0 0 0-.807-.2099c-.2833 0-.5616.0724-.807.2098a1.5904 1.5904 0 0 0-.5907.5731L13.4642 9.99l-2.9954-5.0366a1.5913 1.5913 0 0 0-.591-.573 1.6533 1.6533 0 0 0-.8071-.2098c-.2834 0-.5617.0723-.8072.2097a1.5913 1.5913 0 0 0-.591.573L.2168 17.4808A1.5292 1.5292 0 0 0 0 18.2635c-.0001.2749.0744.545.216.783a1.59 1.59 0 0 0 .5908.5732c.2454.1375.5238.2098.8072.2098h5.6003c2.219 0 3.8554-.9454 4.9813-2.7899l2.7337-4.5922L16.3935 9.99l4.3944 7.382h-5.8586ZM7.123 17.3694l-3.9083-.0009 5.8586-9.8421 2.9232 4.921-1.9572 3.2892c-.7478 1.1967-1.5972 1.6328-2.9163 1.6328z" />
      </svg>
    ),
    officialUrl: 'https://nuxt.com/docs',
    seoDescription:
      'Configure Pulse analytics in Nuxt 2 or Nuxt 3 via nuxt.config. Simple, framework-native setup.',
    relatedIds: ['vue', 'nextjs', 'vitepress'],
  },
  {
    id: 'remix',
    name: 'Remix',
    description: 'Add Pulse to your Remix app via the root route loader.',
    category: 'framework',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M21.511 18.508c.216 2.773.216 4.073.216 5.492H15.31c0-.309.006-.592.011-.878.018-.892.036-1.821-.109-3.698-.19-2.747-1.374-3.358-3.55-3.358H1.574v-5h10.396c2.748 0 4.122-.835 4.122-3.049 0-1.946-1.374-3.125-4.122-3.125H1.573V0h11.541c6.221 0 9.313 2.938 9.313 7.632 0 3.511-2.176 5.8-5.114 6.182 2.48.497 3.93 1.909 4.198 4.694ZM1.573 24v-3.727h6.784c1.133 0 1.379.84 1.379 1.342V24Z" />
      </svg>
    ),
    officialUrl: 'https://remix.run/docs',
    seoDescription:
      'Add Pulse analytics to your Remix application via the root route. Simple script tag in app/root.tsx.',
    relatedIds: ['react', 'nextjs'],
  },
  {
    id: 'astro',
    name: 'Astro',
    description: 'Integrate Pulse with your Astro site for lightning-fast analytics.',
    category: 'framework',
    brandColor: '#BC52EE',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#BC52EE' }}>
        <path d="M8.358 20.162c-1.186-1.07-1.532-3.316-1.038-4.944.856 1.026 2.043 1.352 3.272 1.535 1.897.283 3.76.177 5.522-.678.202-.098.388-.229.608-.36.166.473.209.95.151 1.437-.14 1.185-.738 2.1-1.688 2.794-.38.277-.782.525-1.175.787-1.205.804-1.531 1.747-1.078 3.119l.044.148a3.158 3.158 0 0 1-1.407-1.188 3.31 3.31 0 0 1-.544-1.815c-.004-.32-.004-.642-.048-.958-.106-.769-.472-1.113-1.161-1.133-.707-.02-1.267.411-1.415 1.09-.012.053-.028.104-.045.165h.002zm-5.961-4.445s3.24-1.575 6.49-1.575l2.451-7.565c.092-.366.36-.614.662-.614.302 0 .57.248.662.614l2.45 7.565c3.85 0 6.491 1.575 6.491 1.575L16.088.727C15.93.285 15.663 0 15.303 0H8.697c-.36 0-.615.285-.784.727l-5.516 14.99z" />
      </svg>
    ),
    officialUrl: 'https://docs.astro.build',
    seoDescription:
      'Integrate Pulse analytics with Astro. Add the script to your base layout for all pages.',
    relatedIds: ['svelte', 'hugo', 'eleventy'],
  },
  {
    id: 'solidjs',
    name: 'Solid.js',
    description: 'Add Pulse analytics to your Solid.js application.',
    category: 'framework',
    brandColor: '#2C4F7C',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#2C4F7C' }}>
        <path d="M11.558.788A9.082 9.082 0 0 0 9.776.99l-.453.15c-.906.303-1.656.755-2.1 1.348l-.301.452-2.035 3.528c.426-.387.974-.698 1.643-.894h.001l.613-.154h.001a8.82 8.82 0 0 1 1.777-.206c2.916-.053 6.033 1.148 8.423 2.36 2.317 1.175 3.888 2.32 3.987 2.39L24 5.518c-.082-.06-1.66-1.21-3.991-2.386-2.393-1.206-5.521-2.396-8.45-2.343zM8.924 5.366a8.634 8.634 0 0 0-1.745.203l-.606.151c-1.278.376-2.095 1.16-2.43 2.108-.334.948-.188 2.065.487 3.116.33.43.747.813 1.216 1.147L12.328 10h.001a6.943 6.943 0 0 1 6.013 1.013l2.844-.963c-.17-.124-1.663-1.2-3.91-2.34-2.379-1.206-5.479-2.396-8.352-2.344zm5.435 4.497a6.791 6.791 0 0 0-1.984.283L2.94 13.189 0 18.334l9.276-2.992a6.945 6.945 0 0 1 7.408 2.314v.001c.695.903.89 1.906.66 2.808l2.572-4.63c.595-1.041.45-2.225-.302-3.429a6.792 6.792 0 0 0-5.255-2.543zm-3.031 5.341a6.787 6.787 0 0 0-2.006.283L.008 18.492c.175.131 2.02 1.498 4.687 2.768 2.797 1.332 6.37 2.467 9.468 1.712l.454-.152h.002c1.278-.376 2.134-1.162 2.487-2.09.353-.93.207-2.004-.541-2.978a6.791 6.791 0 0 0-5.237-2.548z" />
      </svg>
    ),
    officialUrl: 'https://www.solidjs.com/docs',
    seoDescription:
      'Add Pulse analytics to your Solid.js application. Simple index.html script tag setup.',
    relatedIds: ['react', 'qwik', 'preact'],
  },
  {
    id: 'qwik',
    name: 'Qwik',
    description: 'Integrate Pulse analytics with your Qwik application.',
    category: 'framework',
    brandColor: '#AC7EF4',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#AC7EF4' }}>
        <path d="M7.5469 0a2.957 2.957 0 0 0-2.5606 1.4785L.5332 9.1915a2.957 2.957 0 0 0 0 2.957l4.4531 7.7128a2.955 2.955 0 0 0 2.5606 1.4766H12l8.5938 2.6484c.2409.0742.4512-.1782.3359-.4023l-1.916-3.7227 4.4531-7.7129a2.957 2.957 0 0 0 0-2.957l-4.4531-7.7129A2.957 2.957 0 0 0 16.453 0zm0 .7656L17.7324 10.67l-1.8965 1.8985.5782 7.5332L6.2676 10.67l2.371-2.373z" />
      </svg>
    ),
    officialUrl: 'https://qwik.dev/docs',
    seoDescription:
      'Integrate Pulse analytics with Qwik. Add the script to your root entry file.',
    relatedIds: ['react', 'solidjs', 'astro'],
  },
  {
    id: 'preact',
    name: 'Preact',
    description: 'Add Pulse analytics to your lightweight Preact application.',
    category: 'framework',
    brandColor: '#673AB8',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#673AB8' }}>
        <path d="M12 1.608 22.392 6v12L12 23.392 1.608 18V6Z" />
      </svg>
    ),
    officialUrl: 'https://preactjs.com/guide',
    seoDescription:
      'Add Pulse analytics to your Preact application. Same simple setup as any Vite or HTML project.',
    relatedIds: ['react', 'solidjs'],
  },
  {
    id: 'htmx',
    name: 'HTMX',
    description: 'Add Pulse analytics to your HTMX-powered site.',
    category: 'framework',
    brandColor: '#3366CC',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#3366CC' }}>
        <path d="M0 13.01v-2l7.09-2.98.58 1.94-5.1 2.05 5.16 2.05-.63 1.9Zm16.37 1.03 5.18-2-5.16-2.09.65-1.88L24 10.95v2.12L17 16zm-2.85-9.98H16l-5.47 15.88H8.05Z" />
      </svg>
    ),
    officialUrl: 'https://htmx.org/docs',
    seoDescription:
      'Add Pulse analytics to your HTMX-powered site. Works with any backend serving HTML.',
    relatedIds: ['django', 'flask', 'laravel', 'rails'],
  },
  {
    id: 'ember',
    name: 'Ember.js',
    description: 'Add Pulse analytics to your Ember.js application.',
    category: 'framework',
    brandColor: '#E04E39',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#E04E39' }}>
        <path d="M0 0v24h24V0H0zm12.29 4.38c1.66-.03 2.83.42 3.84 1.85 2.25 5.58-6 8.4-6 8.4s-.23 1.48 2.02 1.42c2.78 0 5.7-2.15 6.81-3.06a.66.66 0 01.9.05l.84.87a.66.66 0 01.01.9c-.72.8-2.42 2.46-4.97 3.53 0 0-4.26 1.97-7.13.1a4.95 4.95 0 01-2.38-3.83s-2.08-.11-3.42-.63c-1.33-.52.01-2.1.01-2.1s.42-.65 1.2 0 2.24.36 2.24.36c.13-1.03.35-2.38.98-3.81 1.34-3 3.38-4.01 5.05-4.05zm.33 2.8c-1.1.07-2.8 1.78-2.88 4.93 0 0 .75.23 2.41-.91 1.67-1.14 2-2.97 1.11-3.81a.82.82 0 00-.64-.21Z" />
      </svg>
    ),
    officialUrl: 'https://guides.emberjs.com',
    seoDescription:
      'Add Pulse analytics to your Ember.js app. Simple index.html script tag setup.',
    relatedIds: ['react', 'angular'],
  },

  // * ─── Backend Frameworks ───────────────────────────────────────────────────
  {
    id: 'laravel',
    name: 'Laravel',
    description: 'Add Pulse analytics to your Laravel app via Blade templates.',
    category: 'backend',
    brandColor: '#FF2D20',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF2D20' }}>
        <path d="M23.642 5.43a.364.364 0 01.014.1v5.149c0 .135-.073.26-.189.326l-4.323 2.49v4.934a.378.378 0 01-.188.326L9.93 23.949a.316.316 0 01-.066.027c-.008.002-.016.008-.024.01a.348.348 0 01-.192 0c-.011-.002-.02-.008-.03-.012-.02-.008-.042-.014-.062-.025L.533 18.755a.376.376 0 01-.189-.326V2.974c0-.033.005-.066.014-.098.003-.012.01-.02.014-.032a.369.369 0 01.023-.058c.004-.013.015-.022.023-.033l.033-.045c.012-.01.025-.018.037-.027.014-.012.027-.024.041-.034H.53L5.043.05a.375.375 0 01.375 0L9.93 2.647h.002c.015.01.027.021.04.033l.038.027c.013.014.02.03.033.045.008.011.02.021.025.033.01.02.017.038.024.058.003.011.01.021.013.032.01.031.014.064.014.098v9.652l3.76-2.164V5.527c0-.033.004-.066.013-.098.003-.01.01-.02.013-.032a.487.487 0 01.024-.059c.007-.012.018-.02.025-.033.012-.015.021-.03.033-.043.012-.012.025-.02.037-.028.014-.01.026-.023.041-.032h.001l4.513-2.598a.375.375 0 01.375 0l4.513 2.598c.016.01.027.021.042.031.012.01.025.018.036.028.013.014.022.03.034.044.008.012.019.021.024.033.011.02.018.04.024.06.006.01.012.021.015.032zm-.74 5.032V6.179l-1.578.908-2.182 1.256v4.283zm-4.51 7.75v-4.287l-2.147 1.225-6.126 3.498v4.325zM1.093 3.624v14.588l8.273 4.761v-4.325l-4.322-2.445-.002-.003H5.04c-.014-.01-.025-.021-.04-.031-.011-.01-.024-.018-.035-.027l-.001-.002c-.013-.012-.021-.025-.031-.04-.01-.011-.021-.022-.028-.036h-.002c-.008-.014-.013-.031-.02-.047-.006-.016-.014-.027-.018-.043a.49.49 0 01-.008-.057c-.002-.014-.006-.027-.006-.041V5.789l-2.18-1.257zM5.23.81L1.47 2.974l3.76 2.164 3.758-2.164zm1.956 13.505l2.182-1.256V3.624l-1.58.91-2.182 1.255v9.435zm11.581-10.95l-3.76 2.163 3.76 2.163 3.759-2.164zm-.376 4.978L16.21 7.087 14.63 6.18v4.283l2.182 1.256 1.58.908zm-8.65 9.654l5.514-3.148 2.756-1.572-3.757-2.163-4.323 2.489-3.941 2.27z" />
      </svg>
    ),
    officialUrl: 'https://laravel.com/docs',
    seoDescription:
      'Add Pulse analytics to your Laravel app. Blade template integration for all Laravel versions.',
    relatedIds: ['django', 'rails', 'wordpress'],
  },
  {
    id: 'django',
    name: 'Django',
    description: 'Add Pulse analytics to your Django app via templates.',
    category: 'backend',
    brandColor: '#092E20',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#092E20' }}>
        <path d="M11.146 0h3.924v18.166c-2.013.382-3.491.535-5.096.535-4.791 0-7.288-2.166-7.288-6.32 0-4.002 2.65-6.6 6.753-6.6.637 0 1.121.05 1.707.203zm0 9.143a3.894 3.894 0 00-1.325-.204c-1.988 0-3.134 1.223-3.134 3.365 0 2.09 1.096 3.236 3.109 3.236.433 0 .79-.025 1.35-.102V9.142zM21.314 6.06v9.098c0 3.134-.229 4.638-.917 5.937-.637 1.249-1.478 2.039-3.211 2.905l-3.644-1.733c1.733-.815 2.574-1.53 3.109-2.625.561-1.121.739-2.421.739-5.835V6.059h3.924zM17.39.021h3.924v4.026H17.39z" />
      </svg>
    ),
    officialUrl: 'https://docs.djangoproject.com',
    seoDescription:
      'Add Pulse analytics to your Django app. Template-based integration for all Django versions.',
    relatedIds: ['flask', 'laravel', 'htmx'],
  },
  {
    id: 'rails',
    name: 'Ruby on Rails',
    description: 'Add Pulse analytics to your Rails app via ERB layouts.',
    category: 'backend',
    brandColor: '#D30001',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#D30001' }}>
        <path d="M.741 19.365h8.36s-1.598-7.291 3.693-10.243l.134-.066c1.286-.637 4.907-2.431 10.702 1.854.19-.159.37-.286.37-.286s-5.503-5.492-11.63-4.878c-3.079.275-6.867 3.079-9.09 6.783C1.058 16.233.741 19.365.741 19.365Zm8.804-.783a10.682 10.682 0 0 1-.127-1.333l1.143.412c.063.498.159.963.254 1.376l-1.27-.455Zm-7.799-4.317L.529 13.82c-.201.455-.423.984-.529 1.27l1.217.444c.137-.359.36-.878.529-1.269Zm7.831.296.857.677c.042-.413.116-.825.222-1.238l-.762-.603c-.137.391-.233.783-.317 1.164Zm2.042-2.646-.508-.762c.191-.243.413-.486.656-.709l.476.72a5.958 5.958 0 0 0-.624.751ZM4.19 8.878l.752.656c-.254.265-.498.551-.72.836l-.815-.698c.244-.265.508-.529.783-.794Zm9.799 1.027-.243-.73c.265-.117.571-.233.931-.339l.233.698a6.82 6.82 0 0 0-.921.371Zm3.122-.656.042-.667c.339.021.688.064 1.048.138l-.042.656a5.859 5.859 0 0 0-1.048-.127ZM8.942 6.392l-.476-.731c-.265.138-.54.286-.826.455l.487.741c.275-.169.54-.328.815-.465Zm9.217-.053.042-.709c-.095-.053-.36-.18-1.026-.371l-.043.699c.349.116.688.243 1.027.381ZM13.238 5.28h.106l-.212-.645c-.328 0-.666.021-1.016.063l.201.625a8.87 8.87 0 0 1 .921-.043Z" />
      </svg>
    ),
    officialUrl: 'https://guides.rubyonrails.org',
    seoDescription:
      'Add Pulse analytics to your Ruby on Rails app. ERB layout integration.',
    relatedIds: ['laravel', 'django', 'jekyll'],
  },
  {
    id: 'flask',
    name: 'Flask',
    description: 'Add Pulse analytics to your Flask app via Jinja2 templates.',
    category: 'backend',
    brandColor: '#3BABC3',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#3BABC3' }}>
        <path d="M10.773 2.878c-.013 1.434.322 4.624.445 5.734l-8.558 3.83c-.56-.959-.98-2.304-1.237-3.38l-.06.027c-.205.09-.406.053-.494-.088l-.011-.018-.82-1.506c-.058-.105-.05-.252.024-.392a.78.78 0 0 1 .358-.331l9.824-4.207c.146-.064.299-.063.4.004.106.062.127.128.13.327Zm.68 7c.523 1.97.675 2.412.832 2.818l-7.263 3.7a19.35 19.35 0 0 1-1.81-2.83l8.24-3.689Zm12.432 8.786h.003c.283.402-.047.657-.153.698l-.947.37c.037.125.035.319-.217.414l-.736.287c-.229.09-.398-.059-.42-.2l-.025-.125c-4.427 1.784-7.94 1.685-10.696.647-1.981-.745-3.576-1.983-4.846-3.379l6.948-3.54c.721 1.431 1.586 2.454 2.509 3.178 2.086 1.638 4.415 1.712 5.793 1.563l-.047-.233c-.015-.077.007-.135.086-.165l.734-.288a.302.302 0 0 1 .342.086l.748-.288a.306.306 0 0 1 .341.086l.583.89Z" />
      </svg>
    ),
    officialUrl: 'https://flask.palletsprojects.com',
    seoDescription:
      'Add Pulse analytics to your Flask app. Jinja2 template integration.',
    relatedIds: ['django', 'htmx', 'express'],
  },
  {
    id: 'express',
    name: 'Express',
    description: 'Serve Pulse analytics from your Express.js application.',
    category: 'backend',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M24 18.588a1.529 1.529 0 01-1.895-.72l-3.45-4.771-.5-.667-4.003 5.444a1.466 1.466 0 01-1.802.708l5.158-6.92-4.798-6.251a1.595 1.595 0 011.9.666l3.576 4.83 3.596-4.81a1.435 1.435 0 011.788-.668L21.708 7.9l-2.522 3.283a.666.666 0 000 .994l4.804 6.412zM.002 11.576l.42-2.075c1.154-4.103 5.858-5.81 9.094-3.27 1.895 1.489 2.368 3.597 2.275 5.973H1.116C.943 16.447 4.005 19.009 7.92 17.7a4.078 4.078 0 002.582-2.876c.207-.666.548-.78 1.174-.588a5.417 5.417 0 01-2.589 3.957 6.272 6.272 0 01-7.306-.933 6.575 6.575 0 01-1.64-3.858c0-.235-.08-.455-.134-.666A88.33 88.33 0 010 11.577zm1.127-.286h9.654c-.06-3.076-2.001-5.258-4.59-5.278-2.882-.04-4.944 2.094-5.071 5.264z" />
      </svg>
    ),
    officialUrl: 'https://expressjs.com',
    seoDescription:
      'Serve Pulse analytics from your Express.js app. Middleware or template-based setup.',
    relatedIds: ['flask', 'nextjs', 'react'],
  },

  // * ─── Static Sites & Documentation ─────────────────────────────────────────
  {
    id: 'gatsby',
    name: 'Gatsby',
    description: 'Add Pulse to your Gatsby site via gatsby-ssr or a plugin.',
    category: 'ssg',
    brandColor: '#663399',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#663399' }}>
        <path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm0 2.571c3.171 0 5.915 1.543 7.629 3.858l-1.286 1.115C16.886 5.572 14.571 4.286 12 4.286c-3.343 0-6.171 2.143-7.286 5.143l9.857 9.857c2.486-.857 4.373-3 4.973-5.572h-4.115V12h6c0 4.457-3.172 8.228-7.372 9.17L2.83 9.944C3.772 5.743 7.543 2.57 12 2.57zm-9.429 9.6l9.344 9.258c-2.4-.086-4.801-.943-6.601-2.743-1.8-1.8-2.743-4.201-2.743-6.515z" />
      </svg>
    ),
    officialUrl: 'https://www.gatsbyjs.com/docs',
    seoDescription:
      'Add Pulse analytics to your Gatsby site using gatsby-ssr or the Gatsby Head API.',
    relatedIds: ['react', 'nextjs', 'hugo'],
  },
  {
    id: 'hugo',
    name: 'Hugo',
    description: 'Drop the Pulse script into your Hugo partial or base template.',
    category: 'ssg',
    brandColor: '#FF4088',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF4088' }}>
        <path d="M11.754 0a3.998 3.998 0 00-2.049.596L3.33 4.532a4.252 4.252 0 00-2.017 3.615v8.03c0 1.473.79 2.838 2.067 3.574l6.486 3.733a3.88 3.88 0 003.835.018l7.043-3.966a3.817 3.817 0 001.943-3.323V7.752a3.57 3.57 0 00-1.774-3.084L13.817.541a3.998 3.998 0 00-2.063-.54zm.022 1.674c.413-.006.828.1 1.2.315l7.095 4.127c.584.34.941.96.94 1.635v8.462c0 .774-.414 1.484-1.089 1.864l-7.042 3.966a2.199 2.199 0 01-2.179-.01l-6.485-3.734a2.447 2.447 0 01-1.228-2.123v-8.03c0-.893.461-1.72 1.221-2.19l6.376-3.935a2.323 2.323 0 011.19-.347zm-4.7 3.844V18.37h2.69v-5.62h4.46v5.62h2.696V5.518h-2.696v4.681h-4.46V5.518Z" />
      </svg>
    ),
    officialUrl: 'https://gohugo.io/documentation',
    seoDescription:
      'Add Pulse analytics to your Hugo site via a partial or base template.',
    relatedIds: ['jekyll', 'eleventy', 'astro'],
  },
  {
    id: 'eleventy',
    name: 'Eleventy',
    description: 'Add Pulse analytics to your Eleventy (11ty) static site.',
    category: 'ssg',
    brandColor: '#222222',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M3.398 12V0h17.204v24H3.398zm13.17 6.07a1.07 1.07 0 00.373-.107c.432-.213.68-.672.877-1.626.076-.372 1.195-6.168 1.209-6.263.026-.186-.008-.382-.084-.476a.325.325 0 00-.087-.064l-.06-.031h-.291c-.253 0-.298 0-.348.02-.113.039-.207.156-.255.316-.011.038-.168.881-.348 1.873l-.328 1.802-.046-.21c-.56-2.547-.764-3.452-.794-3.532a.383.383 0 00-.103-.16c-.105-.107-.117-.11-.567-.11-.411 0-.422 0-.5.074-.086.079-.122.216-.111.42.006.115.045.27.688 2.784.663 2.587.751 2.943.787 3.177.046.3-.05.713-.208.893-.032.037-.037.039-.084.032-.028 0-.12-.027-.204-.051-.268-.078-.362-.072-.462.028-.096.096-.137.248-.138.51 0 .256.028.34.159.473.131.133.324.208.595.23.164.012.22.012.33-.001zm-1.896-1.712a.31.31 0 00.16-.192c.02-.058.022-.098.022-.356 0-.255-.003-.299-.021-.354-.04-.121-.136-.196-.278-.217-.041-.01-.2-.01-.355-.01-.365-.001-.378-.01-.446-.184-.068-.18-.096-.326-.113-.602a85.799 85.799 0 01-.012-1.94v-1.765h.35c.454 0 .507-.01.602-.113a.465.465 0 00.102-.24 3.273 3.273 0 000-.534c-.026-.16-.099-.271-.211-.322-.057-.025-.065-.026-.45-.03h-.392l-.003-1.22c-.003-1.09-.005-1.227-.021-1.278a.378.378 0 00-.201-.247c-.052-.024-.072-.025-.32-.029-.27 0-.356 0-.429.038-.087.042-.148.133-.185.278-.014.054-.032.346-.076 1.262l-.06 1.194s-.08 0-.18.01c-.206.01-.263.022-.327.086-.092.092-.12.19-.127.455-.01.334.02.487.115.588.075.081.134.1.345.106l.173.01v1.785c0 1.7.006 2.019.034 2.274.041.37.13.709.241.928.194.38.544.617.988.668h1.005l.07-.04zm-7.447 0c.098-.053.16-.154.2-.332.016-.077.018-.401.018-4.518 0-4.184-.001-4.44-.02-4.51-.05-.194-.19-.29-.378-.26-.035.01-.344.084-.686.175-.343.09-.684.18-.758.198-.17.043-.214.062-.281.126-.105.098-.122.185-.122.606 0 .416.016.5.12.604.094.095.189.1.456.03.103-.026.193-.048.2-.048.01 0 .014.784.017 3.763.003 3.436.005 3.77.021 3.84.048.202.113.296.236.34.034.013.133.016.487.014.435 0 .445 0 .49-.027zm3.203 0c.092-.046.152-.135.197-.29l.024-.084.003-4.435c.002-3.194 0-4.456-.01-4.509-.033-.2-.145-.308-.322-.308-.066 0-.198.03-.857.204-.56.147-.799.214-.849.239a.34.34 0 00-.17.184c-.024.06-.024.071-.024.479 0 .415 0 .417.026.483a.362.362 0 00.083.12c.1.1.172.105.456.034a5.46 5.46 0 01.208-.05c.008 0 .012 1.202.014 3.791l.003 3.79.026.086a.48.48 0 00.135.23c.078.062.085.063.57.06.414 0 .447 0 .487-.024z" />
      </svg>
    ),
    officialUrl: 'https://www.11ty.dev/docs',
    seoDescription:
      'Add Pulse analytics to your Eleventy (11ty) site. Template-based integration.',
    relatedIds: ['hugo', 'jekyll', 'astro'],
  },
  {
    id: 'jekyll',
    name: 'Jekyll',
    description: 'Add Pulse analytics to your Jekyll site via Liquid templates.',
    category: 'ssg',
    brandColor: '#CC0000',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#CC0000' }}>
        <path d="M8.073 24c-.348 0-.689-.063-1.02-.189-1.375-.525-2.104-2.02-1.726-3.402l-.015-.006.09-.226L12.399 2.01c.105-.27.057-.91.006-1.267-.016-.085-.016-.161.008-.24l.008-.023.006-.015V.458l.009-.019c.108-.292.45-.439 1.008-.439.673 0 1.602.21 2.551.573.797.307 1.523.689 2.033 1.075.602.45.842.854.707 1.2l-.031.045-.016.015c-.045.061-.09.12-.15.165-.314.271-.764.735-.84.945l-7.063 18.421-.016-.006c-.494.948-1.457 1.557-2.543 1.561H8.07l.003.006zm-2.187-3.718l-.02.05c-.447 1.201.162 2.557 1.364 3.018.271.105.551.154.837.154.971 0 1.83-.585 2.188-1.5l.027-.061 6.959-18.09c.146-.39.84-1.02.979-1.14l.016-.016c.012-.015.02-.015.02-.03 0-.06-.061-.27-.557-.645-.479-.36-1.154-.72-1.904-1.005-.868-.328-1.768-.539-2.368-.539-.39 0-.524.082-.545.126v.04c.016.104.147 1.035-.034 1.515l-6.962 18.12v.003zm8.95-11.507s-.964 1.109-1.843 1.509c-.88.398-1.529.293-2.32.756-.789.461-1.188 1.103-1.188 1.103L6.27 20.505c-.348.944.168 2.05 1.125 2.42.96.369 2.04-.12 2.412-1.056l5.029-13.094zM9.905 18.76c.104-.041.225 0 .266.105.042.104 0 .222-.105.264-.104.043-.225 0-.266-.104-.042-.097 0-.216.105-.265zm-1.014-1.802c-.152.068-.334 0-.397-.155-.07-.152 0-.334.154-.397.154-.07.335 0 .398.153.074.15.008.314-.155.39v.009zm.286-1.096c-.123-.288 0-.623.287-.758.285-.124.615 0 .75.285.121.289 0 .624-.285.757-.3.126-.629 0-.765-.285l.013.001zm2.426-2.258c.153-.074.335 0 .398.15.07.154 0 .336-.153.399-.155.07-.337 0-.399-.155-.074-.152 0-.334.154-.397v.003zm-1.293-1.379c.105-.042.226 0 .266.105.043.104 0 .226-.104.266-.104.042-.226 0-.265-.104-.044-.106.006-.227.103-.267zM13.681 1.14c.1-.261.993-.162 1.995.226.999.384 1.729.909 1.63 1.17-.104.264-.997.164-1.996-.221-1.005-.385-1.734-.91-1.632-1.176h.003z" />
      </svg>
    ),
    officialUrl: 'https://jekyllrb.com/docs',
    seoDescription:
      'Add Pulse analytics to your Jekyll site. Liquid template integration for GitHub Pages and beyond.',
    relatedIds: ['hugo', 'eleventy', 'github-pages'],
  },
  {
    id: 'docusaurus',
    name: 'Docusaurus',
    description: 'Add Pulse analytics to your Docusaurus documentation site.',
    category: 'ssg',
    brandColor: '#3ECC5F',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#3ECC5F' }}>
        <path d="M2.462 22.201h12.321a2.466 2.466 0 0 0 2.369-1.854c.026.004.052.008.079.008a.621.621 0 0 0 .615-.615.621.621 0 0 0-.615-.615c-.027 0-.053.004-.079.007l-.014-.055a.62.62 0 0 0 .378-.568.621.621 0 0 0-.615-.615.608.608 0 0 0-.371.127l-.042-.041a.606.606 0 0 0 .125-.368c0-.67-.919-.858-1.181-.241l-.055-.014c.003-.026.008-.052.008-.079a.622.622 0 0 0-.616-.615.621.621 0 0 0-.615.615h-.096a.617.617 0 0 0-1.033 0h-.717v-2.461h2.461c.115 0 .226-.017.331-.047a.307.307 0 1 0 .529-.304l.02-.021c.052.04.116.064.186.064h.002c.337 0 .428-.463.117-.591l.007-.028c.013.001.026.004.039.004a.31.31 0 0 0 .308-.308.31.31 0 0 0-.308-.308c-.013 0-.026.003-.039.004a.28.28 0 0 1-.007-.027c.327-.13-.028-.745-.305-.528l-.02-.021a.307.307 0 0 0 .062-.184c-.011-.326-.454-.416-.591-.12a1.238 1.238 0 0 0-.32-.047h-2.143a2.465 2.465 0 0 1 2.132-1.23h7.385V9.894l-8.618-.539a1.315 1.315 0 0 1-1.229-1.308c0-.688.542-1.265 1.229-1.307l8.618-.539v-1.23a2.473 2.473 0 0 0-2.462-2.462H8.615l-.307-.533a.356.356 0 0 0-.616 0l-.307.533-.308-.533a.355.355 0 0 0-.615 0l-.308.533-.308-.533a.355.355 0 0 0-.615 0l-.308.533-.008.001-.51-.51a.354.354 0 0 0-.594.159l-.168.628-.639-.171a.357.357 0 0 0-.436.435l.172.639-.628.169a.356.356 0 0 0-.16.594l.51.51v.008l-.533.307a.356.356 0 0 0 0 .616l.533.307-.533.308a.356.356 0 0 0 0 .616l.533.307-.533.308a.355.355 0 0 0 0 .615l.533.308-.533.308a.355.355 0 0 0 0 .615l.533.308-.533.307a.356.356 0 0 0 0 .616l.533.308-.533.307a.356.356 0 0 0 0 .616l.533.307-.533.308a.355.355 0 0 0 0 .615l.533.308-.533.308a.355.355 0 0 0 0 .615l.533.308-.533.308a.355.355 0 0 0 0 .615l.533.308-.533.307a.356.356 0 0 0 0 .616l.533.307-.533.308a.355.355 0 0 0 0 .615l.533.308-.533.308a.355.355 0 0 0 0 .615l.533.308a2.463 2.463 0 0 1-2.13-1.231A2.465 2.465 0 0 0 0 19.74c0 1.35 1.112 2.46 2.462 2.461zm19.692-5.204v2.743a2.473 2.473 0 0 1-2.461 2.461h-.001 1.231a2.466 2.466 0 0 0 2.383-1.854c.026.004.052.008.079.008A.621.621 0 0 0 24 19.74a.621.621 0 0 0-.615-.615c-.027 0-.053.004-.079.007l-.014-.055a.62.62 0 0 0 .378-.568.621.621 0 0 0-.615-.615.608.608 0 0 0-.371.127l-.042-.041a.612.612 0 0 0 .125-.368.623.623 0 0 0-.613-.615zm-4.067 2.62h2.223c.067 0 .123.056.123.123a.124.124 0 0 1-.123.123h-2.223a.845.845 0 0 0 0-.246zm-.33-1.231h2.553c.067 0 .123.056.123.123a.124.124 0 0 1-.123.123h-2.553a.845.845 0 0 0 0-.246zm-1.026-1.231h3.579c.067 0 .123.056.123.123a.124.124 0 0 1-.123.123h-3.474a.85.85 0 0 0-.105-.246zm3.579-.984h-6.159a.126.126 0 0 1-.123-.123c0-.068.056-.123.123-.123h6.159c.067 0 .123.056.123.123a.124.124 0 0 1-.123.123zm1.844-3.816v2.462c.115 0 .225-.017.331-.047a.308.308 0 1 0 .528-.304l.021-.021c.052.04.116.064.186.064a.312.312 0 0 0 .307-.308.306.306 0 0 0-.189-.283l.007-.028c.013.001.026.004.04.004a.312.312 0 0 0 .307-.308.312.312 0 0 0-.307-.308c-.014 0-.027.003-.04.004l-.007-.027a.31.31 0 0 0-.118-.592.306.306 0 0 0-.186.064l-.021-.021a.3.3 0 0 0 .063-.184c-.011-.326-.454-.416-.591-.12a1.24 1.24 0 0 0-.321-.047zm-6.059 2.339h4.215c.067 0 .123.056.123.123a.124.124 0 0 1-.123.123h-4.451a.564.564 0 0 0 .073-.19.553.553 0 0 0 .163-.056zm.454-1.208h3.761c.067 0 .123.056.123.123a.124.124 0 0 1-.123.123h-3.772a.552.552 0 0 0 .011-.246zm5.605-6.225h-.004c-.381.013-.561.393-.719.729-.166.35-.294.578-.504.572-.233-.009-.366-.271-.506-.549-.162-.32-.347-.682-.734-.668-.375.013-.556.344-.715.636-.169.311-.285.5-.507.491-.237-.008-.363-.222-.509-.469-.163-.275-.351-.585-.731-.574-.368.013-.549.294-.709.542-.169.262-.287.421-.513.412-.243-.009-.368-.186-.513-.391-.163-.231-.347-.491-.726-.479-.36.013-.541.243-.701.446-.151.192-.27.344-.52.335h-.005a.126.126 0 0 0-.123.123c0 .066.053.121.119.123.371.012.559-.222.723-.429.145-.184.27-.343.516-.352.237-.01.348.138.516.375.16.226.341.482.705.495.382.013.566-.273.729-.525.145-.226.271-.421.511-.429.22-.008.34.166.51.453.159.271.34.577.712.59.385.014.57-.322.732-.619.14-.257.273-.5.507-.508.221-.005.336.196.506.533.159.314.339.67.717.684h.021c.377 0 .556-.378.714-.713.14-.297.273-.576.501-.588zM7.385 6.509a.312.312 0 0 1-.308-.308c-.01-.532-.378-.911-.927-.922-.528-.011-.888.432-.919.922-.011.168-.139.307-.308.308a.31.31 0 0 1-.308-.308c0-.848.69-1.538 1.539-1.538.848 0 1.538.69 1.538 1.538a.312.312 0 0 1-.307.308zm9.846-2.308a.31.31 0 0 1 .308.308.31.31 0 0 1-.308.308.31.31 0 0 1-.308-.308.31.31 0 0 1 .308-.308zm2.461-.153a.31.31 0 0 1 .307.308.31.31 0 0 1-.308.308h-.001a.31.31 0 0 1-.307-.308.31.31 0 0 1 .308-.308z" />
      </svg>
    ),
    officialUrl: 'https://docusaurus.io/docs',
    seoDescription:
      'Add Pulse analytics to your Docusaurus documentation site via docusaurus.config.js.',
    relatedIds: ['vitepress', 'mkdocs', 'gatsby'],
  },
  {
    id: 'vitepress',
    name: 'VitePress',
    description: 'Add Pulse analytics to your VitePress documentation site.',
    category: 'ssg',
    brandColor: '#5C73E7',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#5C73E7' }}>
        <path d="M17.029.0014a1.8382 1.8382 0 0 0-.1875.0176L4.0845 1.8334C3.0779 1.9767 2.3767 2.9196 2.518 3.939l2.5604 18.457c.1415 1.0193 1.0735 1.7292 2.08 1.586l12.757-1.8165c1.0066-.1433 1.7078-1.0861 1.5664-2.1054L18.9215 1.6049C18.7889.6493 17.961-.035 17.029.0014Zm.127.9316c.4271.027.7915.3549.8534.8008l2.5604 18.457c.0707.5097-.28.9812-.7831 1.0528L7.0296 23.058c-.5033.0717-.9683-.2833-1.039-.793L3.4302 3.81c-.0707-.5097.2799-.9811.7832-1.0528L16.9704.9408A.9066.9066 0 0 1 17.156.933zm-3.6443 5.3541L9.9668 7.5215a.1364.1364 0 0 0-.0898.1406l.3183 3.8692c.0075.0911.0994.1497.1836.1171l.9824-.3789c.092-.0355.1894.0373.1836.1368l-.0898 1.539c-.006.1036.1005.1763.1933.1328l.5997-.2812c.093-.0435.1976.031.1914.1347l-.1465 2.418c-.0092.1513.195.2037.2578.0664l.041-.0918 2.123-6.4238c.0355-.1076-.0658-.2104-.1718-.1738l-1.0176.3515c-.0955.033-.1917-.0491-.1777-.1504l.3437-2.4902a.1368.1368 0 0 0-.1426-.1562c-.016-.001-.0422.0084-.037.0058zm2.8223.7988a.2717.2717 0 0 0-.0801.0137L14 7.8496l-.0762.5606.4551-.1563c.5074-.1627.973.2955.8106.8027l-2.131 6.4493-.0526.1171c-.1268.2776-.4416.4304-.7383.3516-.2904-.077-.4911-.353-.4727-.6562l.1094-1.8086c-.5057.2578-.9731-.1473-.9473-.5938l.0567-.9765-.4532.1757c-.4144.1536-.8298-.1366-.8632-.543L9.453 8.5997l-3.0625-.123c-.2294-.0093-.3635.2552-.2226.4394l6.291 8.2305c.1293.169.391.1302.4668-.0684l3.668-9.6191c.072-.1889-.0765-.377-.2598-.373z" />
      </svg>
    ),
    officialUrl: 'https://vitepress.dev',
    seoDescription:
      'Add Pulse analytics to your VitePress documentation site via config.',
    relatedIds: ['docusaurus', 'vue', 'nuxt'],
  },
  {
    id: 'hexo',
    name: 'Hexo',
    description: 'Add Pulse analytics to your Hexo blog or documentation site.',
    category: 'ssg',
    brandColor: '#0E83CD',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#0E83CD' }}>
        <path d="M12.02 0L1.596 6.02l-.02 12L11.978 24l10.426-6.02.02-12zm4.828 17.14l-.96.558-.969-.574V12.99H9.081v4.15l-.96.558-.969-.574V6.854l.964-.552.965.563v4.145h5.838V6.86l.965-.552.964.563z" />
      </svg>
    ),
    officialUrl: 'https://hexo.io/docs',
    seoDescription:
      'Add Pulse analytics to your Hexo blog or documentation site.',
    relatedIds: ['hugo', 'jekyll', 'eleventy'],
  },
  {
    id: 'mkdocs',
    name: 'MkDocs',
    description: 'Add Pulse analytics to your MkDocs documentation site.',
    category: 'ssg',
    brandColor: '#526CFE',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#526CFE' }}>
        <path d="m17.029 18.772.777 1.166-5.417 2.709L0 16.451V4.063l5.417-2.709 5.298 7.948 7.867-5.24L24 1.354V16.84l-5.417 2.709zm2.023-13.827v13.253l3.949-1.975V2.97zM5.076 2.642 1.458 4.45 12.73 21.358l3.618-1.809z" />
      </svg>
    ),
    officialUrl: 'https://www.mkdocs.org',
    seoDescription:
      'Add Pulse analytics to your MkDocs documentation site.',
    relatedIds: ['docusaurus', 'vitepress', 'django'],
  },

  // * ─── CMS & Blogging ──────────────────────────────────────────────────────
  {
    id: 'wordpress',
    name: 'WordPress',
    description: 'Add the tracking script to your WordPress header or use a plugin.',
    category: 'cms',
    brandColor: '#21759B',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#21759B' }}>
        <path d="M21.469 6.825c.84 1.537 1.318 3.3 1.318 5.175 0 3.979-2.156 7.456-5.363 9.325l3.295-9.527c.615-1.54.82-2.771.82-3.864 0-.405-.026-.78-.07-1.11m-7.981.105c.647-.03 1.232-.105 1.232-.105.582-.075.514-.93-.067-.899 0 0-1.755.135-2.88.135-1.064 0-2.85-.15-2.85-.15-.585-.03-.661.855-.075.885 0 0 .54.061 1.125.09l1.68 4.605-2.37 7.08L5.354 6.9c.649-.03 1.234-.1 1.234-.1.585-.075.516-.93-.065-.896 0 0-1.746.138-2.874.138-.2 0-.438-.008-.69-.015C4.911 3.15 8.235 1.215 12 1.215c2.809 0 5.365 1.072 7.286 2.833-.046-.003-.091-.009-.141-.009-1.06 0-1.812.923-1.812 1.914 0 .89.513 1.643 1.06 2.531.411.72.89 1.643.89 2.977 0 .915-.354 1.994-.821 3.479l-1.075 3.585-3.9-11.61.001.014zM12 22.784c-1.059 0-2.081-.153-3.048-.437l3.237-9.406 3.315 9.087c.024.053.05.101.078.149-1.12.393-2.325.609-3.582.609M1.211 12c0-1.564.336-3.05.935-4.39L7.29 21.709C3.694 19.96 1.212 16.271 1.211 12M12 0C5.385 0 0 5.385 0 12s5.385 12 12 12 12-5.385 12-12S18.615 0 12 0" />
      </svg>
    ),
    officialUrl: 'https://wordpress.org/documentation',
    seoDescription:
      'Add Pulse analytics to your WordPress site via a plugin or theme header code.',
    relatedIds: ['ghost', 'drupal', 'woocommerce'],
  },
  {
    id: 'ghost',
    name: 'Ghost',
    description: 'Inject Pulse into your Ghost theme via Code Injection settings.',
    category: 'cms',
    brandColor: '#15171A',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.256 2.313c2.47.005 5.116 2.008 5.898 2.962l.244.3c1.64 1.994 3.569 4.34 3.569 6.966 0 3.719-2.98 5.808-6.158 7.508-1.433.766-2.98 1.508-4.748 1.508-4.543 0-8.366-3.569-8.366-8.112 0-.706.17-1.425.342-2.15.122-.515.244-1.033.307-1.549.548-4.539 2.967-6.795 8.422-7.408a4.29 4.29 0 01.49-.026Z" />
      </svg>
    ),
    officialUrl: 'https://ghost.org/docs',
    seoDescription:
      'Add Pulse analytics to your Ghost blog via Code Injection settings.',
    relatedIds: ['wordpress', 'blogger'],
  },
  {
    id: 'drupal',
    name: 'Drupal',
    description: 'Add Pulse analytics to your Drupal site using a module or theme.',
    category: 'cms',
    brandColor: '#0678BE',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#0678BE' }}>
        <path d="M15.78 5.113C14.09 3.425 12.48 1.815 11.998 0c-.48 1.815-2.09 3.425-3.778 5.113-2.534 2.53-5.405 5.4-5.405 9.702a9.184 9.185 0 1018.368 0c0-4.303-2.871-7.171-5.405-9.702M6.72 16.954c-.563-.019-2.64-3.6 1.215-7.416l2.55 2.788a.218.218 0 01-.016.325c-.61.625-3.204 3.227-3.527 4.126-.066.186-.164.18-.222.177M12 21.677a3.158 3.158 0 01-3.158-3.159 3.291 3.291 0 01.787-2.087c.57-.696 2.37-2.655 2.37-2.655s1.774 1.988 2.367 2.649a3.09 3.09 0 01.792 2.093A3.158 3.158 0 0112 21.677m6.046-5.123c-.068.15-.223.398-.431.405-.371.014-.411-.177-.686-.583-.604-.892-5.864-6.39-6.848-7.455-.866-.935-.122-1.595.223-1.94C10.736 6.547 12 5.285 12 5.285s3.766 3.574 5.336 6.016c1.57 2.443 1.029 4.556.71 5.253" />
      </svg>
    ),
    officialUrl: 'https://www.drupal.org/docs',
    seoDescription:
      'Add Pulse analytics to your Drupal site using a module or theme template.',
    relatedIds: ['wordpress', 'joomla'],
  },
  {
    id: 'joomla',
    name: 'Joomla',
    description: 'Add Pulse analytics to your Joomla site via template or extension.',
    category: 'cms',
    brandColor: '#5091CD',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#5091CD' }}>
        <path d="M16.719 14.759L14.22 17.26l-2.37 2.37-.462.466c-1.368 1.365-3.297 1.83-5.047 1.397-.327 1.424-1.604 2.49-3.13 2.49C1.438 23.983 0 22.547 0 20.772c0-1.518 1.055-2.789 2.469-3.123-.446-1.76.016-3.705 1.396-5.08l.179-.18 2.37 2.37-.184.181c-.769.779-.769 2.024 0 2.789.771.78 2.022.78 2.787 0l.465-.465 2.367-2.371 2.502-2.506 2.368 2.372zm.924 6.652c-1.822.563-3.885.12-5.328-1.318l-.18-.185 2.365-2.369.18.184c.771.768 2.018.768 2.787 0 .765-.765.769-2.01-.004-2.781l-.466-.465-2.365-2.37-2.502-2.503 2.37-2.369 2.499 2.505 2.367 2.37.464.464c1.365 1.36 1.846 3.278 1.411 5.021 1.56.224 2.759 1.56 2.759 3.18 0 1.784-1.439 3.21-3.209 3.21-1.545 0-2.851-1.096-3.135-2.565l-.013-.009zM6.975 9.461l2.508-2.505 2.37-2.369.462-.461C13.74 2.7 15.772 2.251 17.58 2.79c.212-1.561 1.555-2.775 3.179-2.775 1.772 0 3.211 1.437 3.211 3.209 0 1.631-1.216 2.978-2.79 3.186.519 1.799.068 3.816-1.35 5.234l-.182.184-2.369-2.369.184-.184c.769-.77.769-2.016 0-2.783-.766-.766-2.011-.768-2.781.003l-.462.461-2.37 2.369-2.505 2.502-2.37-2.366zm-2.653 2.647l-.461-.462C2.43 10.215 1.986 8.17 2.529 6.358 1.1 6.029.03 4.754.03 3.224.03 1.454 1.47.015 3.24.015c1.596 0 2.92 1.166 3.17 2.691 1.73-.405 3.626.065 4.979 1.415l.184.185-2.37 2.37-.183-.181c-.77-.765-2.016-.765-2.785 0-.771.781-.77 2.025-.005 2.79l.465.466 2.37 2.369 2.505 2.505-2.367 2.37-2.51-2.505-2.371-2.37v-.012z" />
      </svg>
    ),
    officialUrl: 'https://docs.joomla.org',
    seoDescription:
      'Add Pulse analytics to your Joomla site via template or extension.',
    relatedIds: ['wordpress', 'drupal'],
  },
  {
    id: 'strapi',
    name: 'Strapi',
    description: 'Add Pulse analytics to your Strapi-powered frontend.',
    category: 'cms',
    brandColor: '#4945FF',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#4945FF' }}>
        <path d="M8.32 0c-3.922 0-5.882 0-7.1 1.219C0 2.438 0 4.399 0 8.32v7.36c0 3.922 0 5.882 1.219 7.101C2.438 24 4.399 24 8.32 24h7.36c3.922 0 5.882 0 7.101-1.219C24 21.562 24 19.601 24 15.68V8.32c0-3.922 0-5.882-1.219-7.101C21.562 0 19.601 0 15.68 0H8.32zm.41 7.28h7.83a.16.16 0 0 1 .16.16v7.83h-3.87v-3.71a.41.41 0 0 0-.313-.398l-.086-.012h-3.72V7.28zm-.5.25v3.87H4.553a.08.08 0 0 1-.057-.136L8.23 7.529zm.25 4.12h3.87v3.87H8.64a.16.16 0 0 1-.16-.16v-3.71zm4.12 4.12h3.87l-3.734 3.734a.08.08 0 0 1-.136-.057V15.77z" />
      </svg>
    ),
    officialUrl: 'https://docs.strapi.io',
    seoDescription:
      'Add Pulse analytics to your Strapi-powered frontend.',
    relatedIds: ['contentful', 'sanity', 'nextjs'],
  },
  {
    id: 'sanity',
    name: 'Sanity',
    description: 'Add Pulse analytics to your Sanity-powered frontend.',
    category: 'cms',
    brandColor: '#0D0E12',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M7.394 7.31a5.745 5.745 0 0 1-.833-.68c-.913-.91-1.38-2.067-1.38-3.568v-.575C6.699.929 9.039 0 11.828 0c5.394 0 8.515 2.8 9.285 6.74H16.22c-.54-1.554-1.89-2.764-4.352-2.764-2.422 0-4.136 1.276-4.473 3.334h-.002ZM4.683 3.062c0 3.236 2.034 5.162 6.106 6.177l4.316.983c3.854.87 6.2 3.03 6.2 6.55a6.61 6.61 0 0 1-1.436 4.239c0-3.511-1.85-5.409-6.31-6.55l-4.236-.946c-3.393-.76-6.011-2.536-6.011-6.36a6.578 6.578 0 0 1 1.37-4.093ZM17.18 16.484c-.292 2.235-2.092 3.495-4.698 3.495-2.314 0-4.048-.946-4.703-2.99H2.694C3.518 21.44 7.224 24 12.519 24c2.828 0 5.277-.87 6.85-2.439v-.55c0-1.66-.433-2.876-1.342-3.816a5.508 5.508 0 0 0-.847-.71v-.001Z" />
      </svg>
    ),
    officialUrl: 'https://www.sanity.io/docs',
    seoDescription:
      'Add Pulse analytics to your Sanity-powered frontend application.',
    relatedIds: ['strapi', 'contentful', 'nextjs'],
  },
  {
    id: 'contentful',
    name: 'Contentful',
    description: 'Add Pulse analytics to your Contentful-powered frontend.',
    category: 'cms',
    brandColor: '#2478CC',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#2478CC' }}>
        <path d="M21.875 16.361c-.043-.048-1.067-1.18-2.365-1.19-.68 0-1.288.283-1.815.858-.773.842-2.35 1.85-4.25 1.921-1.598.059-3.085-.548-4.423-1.805-1.644-1.544-2.155-4.016-1.302-6.297.834-2.23 2.752-3.616 5.131-3.707l.044-.004c.024-.003 2.302-.258 4.325 1.548.17.185 1.154 1.197 2.475 1.228.823.018 1.586-.336 2.27-1.055.602-.632.87-1.342.797-2.112-.154-1.61-1.806-2.876-2.03-3.04-.212-.184-1.878-1.578-4.476-2.294-2.52-.695-6.42-.853-10.685 2.349a7.31 7.31 0 0 0-.557.49c-.28.208-.523.462-.716.753a12.469 12.469 0 0 0-3.064 8.677c.207 6.283 5.265 9.293 5.646 9.51.262.17 2.906 1.81 6.495 1.809 2.106 0 4.538-.565 7.005-2.322.248-.138 1.714-1.012 2.103-2.52.23-.894.042-1.815-.562-2.737l-.046-.06zm-16.932 1.97c0-1.09.887-1.977 1.977-1.977s1.977.886 1.977 1.977c0 1.09-.887 1.977-1.977 1.977s-1.977-.887-1.977-1.977zm.139-13.657c.236-.275.451-.498.628-.67a1.965 1.965 0 0 1 1.088-.329c1.09 0 1.977.887 1.977 1.977S7.888 7.63 6.798 7.63s-1.977-.887-1.977-1.977c0-.356.096-.69.261-.978zM13.249.999c3.954 0 6.657 2.336 6.826 2.486l.043.034c.42.3 1.532 1.301 1.63 2.324.044.469-.126.898-.52 1.313-.477.5-.983.752-1.504.738-.964-.019-1.743-.887-1.76-.905l-.042-.044c-2.292-2.063-4.83-1.855-5.13-1.822a6.82 6.82 0 0 0-3.012.818 3 3 0 0 0-2.34-3.214C9.543 1.45 11.516.999 13.248.999zM3.884 6.34a3 3 0 0 0 2.914 2.31c.122 0 .24-.01.358-.024a7.336 7.336 0 0 0-.39.866c-.75 2.003-.59 4.14.359 5.854-.068-.005-.136-.01-.205-.01a2.999 2.999 0 0 0-2.967 2.6 10.075 10.075 0 0 1-1.7-5.288 11.43 11.43 0 0 1 1.63-6.309zM21.497 18.9c-.3 1.174-1.615 1.89-1.627 1.896l-.058.036c-6.287 4.499-12.137.667-12.382.502l-.036-.022a2.848 2.848 0 0 1-.034-.02 2.998 2.998 0 0 0 2.543-3.228c1.124.64 2.336.951 3.58.906 2.214-.083 4.057-1.264 4.962-2.25.327-.356.67-.53 1.048-.53h.005c.762.004 1.46.688 1.593.826.421.658.558 1.291.406 1.884z" />
      </svg>
    ),
    officialUrl: 'https://www.contentful.com/developers/docs',
    seoDescription:
      'Add Pulse analytics to your Contentful-powered frontend.',
    relatedIds: ['strapi', 'sanity', 'nextjs'],
  },
  {
    id: 'payload',
    name: 'Payload CMS',
    description: 'Add Pulse analytics to your Payload CMS frontend.',
    category: 'cms',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M11.068 0 22.08 6.625v12.573L13.787 24V11.427L2.769 4.808 11.068 0ZM1.92 18.302l8.31-4.812v9.812l-8.31-5Z" />
      </svg>
    ),
    officialUrl: 'https://payloadcms.com/docs',
    seoDescription:
      'Add Pulse analytics to your Payload CMS frontend application.',
    relatedIds: ['strapi', 'contentful', 'nextjs'],
  },

  // * ─── eCommerce ────────────────────────────────────────────────────────────
  {
    id: 'shopify',
    name: 'Shopify',
    description: 'Add privacy-first analytics to your Shopify store via theme editor.',
    category: 'ecommerce',
    brandColor: '#7AB55C',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#7AB55C' }}>
        <path d="M15.337 23.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.018-.116-.114-.192-.211-.192s-1.929-.136-1.929-.136-1.275-1.274-1.439-1.411c-.045-.037-.075-.057-.121-.074l-.914 21.104h.023zM11.71 11.305s-.81-.424-1.774-.424c-1.447 0-1.504.906-1.504 1.141 0 1.232 3.24 1.715 3.24 4.629 0 2.295-1.44 3.76-3.406 3.76-2.354 0-3.54-1.465-3.54-1.465l.646-2.086s1.245 1.066 2.28 1.066c.675 0 .975-.545.975-.932 0-1.619-2.654-1.694-2.654-4.359-.034-2.237 1.571-4.416 4.827-4.416 1.257 0 1.875.361 1.875.361l-.945 2.715-.02.01zM11.17.83c.136 0 .271.038.405.135-.984.465-2.064 1.639-2.508 3.992-.656.213-1.293.405-1.889.578C7.697 3.75 8.951.84 11.17.84V.83zm1.235 2.949v.135c-.754.232-1.583.484-2.394.736.466-1.777 1.333-2.645 2.085-2.971.193.501.309 1.176.309 2.1zm.539-2.234c.694.074 1.141.867 1.429 1.755-.349.114-.735.231-1.158.366v-.252c0-.752-.096-1.371-.271-1.871v.002zm2.992 1.289c-.02 0-.06.021-.078.021s-.289.075-.714.21c-.423-1.233-1.176-2.37-2.508-2.37h-.115C12.135.209 11.669 0 11.265 0 8.159 0 6.675 3.877 6.21 5.846c-1.194.365-2.063.636-2.16.674-.675.213-.694.232-.772.87-.075.462-1.83 14.063-1.83 14.063L15.009 24l.927-21.166z" />
      </svg>
    ),
    officialUrl: 'https://shopify.dev/docs',
    seoDescription:
      'Add Pulse privacy-first analytics to your Shopify store via the theme editor.',
    relatedIds: ['woocommerce', 'bigcommerce', 'prestashop'],
  },
  {
    id: 'woocommerce',
    name: 'WooCommerce',
    description: 'Add Pulse analytics to your WooCommerce store.',
    category: 'ecommerce',
    brandColor: '#96588A',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#96588A' }}>
        <path d="M.754 9.58a.754.754 0 00-.754.758v2.525c0 .42.339.758.758.758h3.135l1.431.799-.326-.799h2.373a.757.757 0 00.758-.758v-2.525a.757.757 0 00-.758-.758H.754zm2.709.445h.03c.065.001.124.023.179.067a.26.26 0 01.103.19.29.29 0 01-.033.16c-.13.239-.236.64-.322 1.199-.083.541-.114.965-.094 1.267a.392.392 0 01-.039.219.213.213 0 01-.176.12c-.086.006-.177-.034-.263-.124-.31-.316-.555-.788-.735-1.416-.216.425-.375.744-.478.957-.196.376-.363.568-.502.578-.09.007-.166-.069-.233-.228-.17-.436-.352-1.277-.548-2.524a.297.297 0 01.054-.222c.047-.064.116-.095.21-.102.169-.013.265.065.288.238.103.695.217 1.284.336 1.766l.727-1.387c.066-.126.15-.192.25-.199.146-.01.237.083.273.28.083.441.188.817.315 1.136.086-.844.233-1.453.44-1.828a.255.255 0 01.218-.147zm1.293.36c.056 0 .116.006.18.02.232.05.411.177.53.386.107.18.161.395.161.654 0 .343-.087.654-.26.94-.2.332-.459.5-.781.5a.88.88 0 01-.18-.022.763.763 0 01-.531-.384 1.287 1.287 0 01-.158-.659c0-.342.085-.655.258-.937.202-.333.462-.498.78-.498zm2.084 0c.056 0 .116.006.18.02.236.05.411.177.53.386.107.18.16.395.16.654 0 .343-.086.654-.259.94-.2.332-.459.5-.781.5a.88.88 0 01-.18-.022.763.763 0 01-.531-.384 1.287 1.287 0 01-.16-.659c0-.342.087-.655.26-.937.202-.333.462-.498.78-.498zm-2.084.443c-.104 0-.205.069-.301.211a1.078 1.078 0 00-.2.639c0 .096.02.2.06.303.049.13.117.198.196.215.083.016.173-.02.27-.106.123-.11.205-.273.252-.492.016-.077.023-.16.023-.246 0-.097-.02-.2-.06-.303-.05-.13-.116-.198-.196-.215a.246.246 0 00-.045-.006zm2.083 0c-.103 0-.204.069-.3.211a1.078 1.078 0 00-.2.639c0 .096.02.2.06.303.049.13.117.198.196.215.083.016.173-.02.27-.106.123-.11.205-.273.252-.492.013-.077.023-.16.023-.246 0-.097-.02-.2-.06-.303-.05-.13-.116-.198-.196-.215a.246.246 0 00-.045-.006z" />
      </svg>
    ),
    officialUrl: 'https://woocommerce.com/documentation',
    seoDescription:
      'Add Pulse analytics to your WooCommerce store. WordPress-based setup.',
    relatedIds: ['shopify', 'wordpress', 'bigcommerce'],
  },
  {
    id: 'bigcommerce',
    name: 'BigCommerce',
    description: 'Add Pulse analytics to your BigCommerce store.',
    category: 'ecommerce',
    brandColor: '#121118',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M12.645 13.663h3.027c.861 0 1.406-.474 1.406-1.235 0-.717-.545-1.234-1.406-1.234h-3.027c-.1 0-.187.086-.187.172v2.125c.015.1.086.172.187.172zm0 4.896h3.128c.961 0 1.535-.488 1.535-1.35 0-.746-.545-1.35-1.535-1.35h-3.128c-.1 0-.187.087-.187.173v2.34c.015.115.086.187.187.187zM23.72.053l-8.953 8.93h1.464c2.281 0 3.63 1.435 3.63 3 0 1.235-.832 2.14-1.722 2.541-.143.058-.143.259.014.316 1.033.402 1.765 1.48 1.765 2.742 0 1.78-1.19 3.202-3.5 3.202h-6.342c-.1 0-.187-.086-.187-.172V13.85L.062 23.64c-.13.13-.043.359.143.359h23.631a.16.16 0 0 0 .158-.158V.182c.043-.158-.158-.244-.273-.13z" />
      </svg>
    ),
    officialUrl: 'https://developer.bigcommerce.com/docs',
    seoDescription:
      'Add Pulse analytics to your BigCommerce store via Script Manager.',
    relatedIds: ['shopify', 'woocommerce', 'prestashop'],
  },
  {
    id: 'prestashop',
    name: 'PrestaShop',
    description: 'Add Pulse analytics to your PrestaShop store.',
    category: 'ecommerce',
    brandColor: '#DF0067',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#DF0067' }}>
        <path d="M11.558 1.034C5.174 1.034 0 6.21 0 12.592c0 1.258.201 2.47.574 3.597l.002-.007a12.415 12.415 0 01.53-1.787l.011-.03c.085-.222.179-.442.277-.66l.084-.181c.08-.171.165-.34.253-.507.036-.068.07-.136.108-.203.02-.038.044-.073.064-.11.094-.166.19-.332.29-.493l.075-.114c.125-.195.256-.386.393-.573l.035-.05c.144-.193.295-.38.451-.563l.1-.118c.155-.177.315-.35.481-.517l.099-.097a10.321 10.321 0 01.546-.503c.74-2.48 3.005-4.285 5.686-4.285 1.079 0 2.152.31 3.071.873a6.017 6.017 0 012.211 2.407l.007.015.04.074v.003l.004.002a9.925 9.925 0 011.567 1.198c.04.037.081.071.12.109.002 0 .006.005.007.006l-.002-.006-.001-.004v-.003l.042-.084c.377-2.384 1.43-4.102 2.67-4.102.934 0 1.762.975 2.276 2.476l.005.016.001.002c.145.158.287.331.424.521l.007.01.021.067-.02-.078c-1.542-4.569-5.863-7.857-10.952-7.857zM9.927 5.477C7.586 5.52 5.34 7.132 4.574 9.365l-.012.034a10.14 10.14 0 011.315-.895c2.806-1.656 6.479-1.646 9.278.016-.895-1.653-2.631-2.819-4.5-3.004a5.14 5.14 0 00-.728-.039zm9.834.5a1.36 1.36 0 00-.39.067c-1.265.562-1.719 2.073-2.031 3.303l-.016.072c.365-.62.808-1.215 1.396-1.642.835-.687 2.105-.655 2.916.053.308.326.141.008.031-.22-.342-.75-1.025-1.653-1.906-1.634zM21.67 7.98zm-9.32.335l-1.07 3.27-.002.005-.006.002-4.498 1.112h-.009l4.456 1.087c.105.11.227.205.36.28h.002c.042.024.085.045.129.065l.01.005c.041.018.083.033.126.047l.021.008c.04.013.08.023.12.032l.033.008a1.677 1.677 0 00.318.033 1.546 1.546 0 001.43-.948c.08-.186.123-.39.123-.604v-.011l-.001-.012c-.001-.054-.004-.107-.01-.16l-.001-.002a1.506 1.506 0 00-.026-.153l-.001-.004a1.511 1.511 0 00-.096-.288v-.003a1.521 1.521 0 00-.348-.49v-.003zm3.148.626c.048 1.008.036 2.046-.1 3.057-.17 2.018-1.19 3.798-1.972 5.616l-.03.08-.035.086c1.51-1.522 3.17-3.04 3.969-5.082.383-.636.118-1.342-.115-1.976-.17-.877-1.069-1.278-1.717-1.781zm6.172.572l-.588 2.688a1.764 1.764 0 00-.047.2c-.002.02-.007.04-.01.06a1.76 1.76 0 00-.016.222l-.002.031h.003c0 .628.297 1.136.663 1.137a.41.41 0 00.182-.045l.027-.015a.537.537 0 00.07-.047c.013-.01.024-.022.036-.033a.752.752 0 00.137-.168l.03-.054a1.23 1.23 0 00.052-.108l.017-.04c.02-.053.038-.108.053-.166l.002-.002.001-.003.404-.451-.407-.456v.001l-.02-.063zm-4.381.856c.69 1.716.85 3.707.091 5.43-.49 1.368-1.587 2.463-1.874 3.905.73.115 1.468.176 2.21.186 2.166.029 4.332-.42 6.284-1.365-2.04-2.869-4.121-5.755-6.711-8.156zm-4.948.977a.583.583 0 110 1.166.583.583 0 010-1.166zm9.352.37c.138 0 .249.19.249.426s-.111.426-.249.426c-.137 0-.248-.19-.248-.426 0-.235.11-.426.248-.426zm-4.044.184c-.016.112-.033.209-.05.29l-.006.023c-.01.05-.022.094-.033.128-.48 1.417-1.275 2.52-2.36 3.697-.147.16-.301.32-.459.484a58.883 58.883 0 01-1.196 1.205c-.112.11-.259.261-.425.436-.103.287-.22.61-.318.95-.044-.016-.086-.031-.131-.049-2.108-.815-3.519-1.904-3.519-1.904s1.086 1.414 2.915 2.74c.177.129.351.24.522.339-.075 1.194.452 2.34 2.83 2.682a4.81 4.81 0 001.228.008l-.01-.029a.062.062 0 00-.004-.01s-.167-.133-.379-.377a3.842 3.842 0 01-.584-.897 3.382 3.382 0 01-.266-.862 3.176 3.176 0 01-.006-.972c.017-.12.04-.241.072-.366.093-.374.255-.772.507-1.192l.002-.003.241-.404c1.103-1.86 1.797-3.275 1.506-5.441a8.943 8.943 0 00-.078-.476zm4.668.576zm.013.203l.003.036v.01c0 .013-.003.025-.003.038 0-.014.003-.028.003-.043 0-.014-.002-.026-.003-.04zm-.012.275v.001l-.002.01-.002.014.004-.025zm1.353 5.928c-2.553 1.138-5.44 1.44-8.192 1.007-.14 1.108.384 2.218 1.214 2.93l.012.01c2.703-.433 4.975-2.168 6.966-3.946z" />
      </svg>
    ),
    officialUrl: 'https://devdocs.prestashop-project.org',
    seoDescription:
      'Add Pulse analytics to your PrestaShop store via theme template.',
    relatedIds: ['shopify', 'woocommerce', 'bigcommerce'],
  },

  // * ─── Platforms & Tools ────────────────────────────────────────────────────
  {
    id: 'webflow',
    name: 'Webflow',
    description: 'Paste the Pulse snippet into your Webflow project custom code.',
    category: 'platform',
    brandColor: '#146EF5',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#146EF5' }}>
        <path d="m24 4.515-7.658 14.97H9.149l3.205-6.204h-.144C9.566 16.713 5.621 18.973 0 19.485v-6.118s3.596-.213 5.71-2.435H0V4.515h6.417v5.278l.144-.001 2.622-5.277h4.854v5.244h.144l2.72-5.244H24Z" />
      </svg>
    ),
    officialUrl: 'https://university.webflow.com',
    seoDescription:
      'Add Pulse analytics to your Webflow site via project custom code settings.',
    relatedIds: ['squarespace', 'wix', 'framer'],
  },
  {
    id: 'squarespace',
    name: 'Squarespace',
    description: 'Add Pulse to Squarespace via the Code Injection panel.',
    category: 'platform',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M22.655 8.719c-1.802-1.801-4.726-1.801-6.564 0l-7.351 7.35c-.45.45-.45 1.2 0 1.65.45.449 1.2.449 1.65 0l7.351-7.351c.899-.899 2.362-.899 3.264 0 .9.9.9 2.364 0 3.264l-7.239 7.239c.9.899 2.362.899 3.263 0l5.589-5.589c1.836-1.838 1.836-4.763.037-6.563zm-2.475 2.437c-.451-.45-1.201-.45-1.65 0l-7.354 7.389c-.9.899-2.361.899-3.262 0-.45-.45-1.2-.45-1.65 0s-.45 1.2 0 1.649c1.801 1.801 4.726 1.801 6.564 0l7.351-7.35c.449-.487.449-1.239.001-1.688zm-2.439-7.35c-1.801-1.801-4.726-1.801-6.564 0l-7.351 7.351c-.45.449-.45 1.199 0 1.649s1.2.45 1.65 0l7.395-7.351c.9-.899 2.371-.899 3.27 0 .451.45 1.201.45 1.65 0 .421-.487.421-1.199-.029-1.649h-.021zm-2.475 2.437c-.45-.45-1.2-.45-1.65 0l-7.351 7.389c-.899.9-2.363.9-3.265 0-.9-.899-.9-2.363 0-3.264l7.239-7.239c-.9-.9-2.362-.9-3.263 0L1.35 8.719c-1.8 1.8-1.8 4.725 0 6.563 1.801 1.801 4.725 1.801 6.564 0l7.35-7.351c.451-.488.451-1.238 0-1.688h.002z" />
      </svg>
    ),
    officialUrl: 'https://support.squarespace.com',
    seoDescription:
      'Add Pulse analytics to your Squarespace site via the Code Injection panel.',
    relatedIds: ['webflow', 'wix', 'carrd'],
  },
  {
    id: 'wix',
    name: 'Wix',
    description: 'Add Pulse to your Wix site via the Custom Code settings.',
    category: 'platform',
    brandColor: '#0C6EFC',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#0C6EFC' }}>
        <path d="m0 7.354 2.113 9.292h.801a1.54 1.54 0 0 0 1.506-1.218l1.351-6.34a.171.171 0 0 1 .167-.137c.08 0 .15.058.167.137l1.352 6.34a1.54 1.54 0 0 0 1.506 1.218h.805l2.113-9.292h-.565c-.62 0-1.159.43-1.296 1.035l-1.26 5.545-1.106-5.176a1.76 1.76 0 0 0-2.19-1.324c-.639.176-1.113.716-1.251 1.365l-1.094 5.127-1.26-5.537A1.33 1.33 0 0 0 .563 7.354H0zm13.992 0a.951.951 0 0 0-.951.95v8.342h.635a.952.952 0 0 0 .951-.95V7.353h-.635zm1.778 0 3.158 4.66-3.14 4.632h1.325c.368 0 .712-.181.918-.486l1.756-2.59a.12.12 0 0 1 .197 0l1.754 2.59c.206.305.55.486.918.486h1.326l-3.14-4.632L24 7.354h-1.326c-.368 0-.712.181-.918.486l-1.772 2.617a.12.12 0 0 1-.197 0L18.014 7.84a1.108 1.108 0 0 0-.918-.486H15.77z" />
      </svg>
    ),
    officialUrl: 'https://support.wix.com',
    seoDescription:
      'Add Pulse analytics to your Wix site via Custom Code settings.',
    relatedIds: ['webflow', 'squarespace', 'framer'],
  },
  {
    id: 'framer',
    name: 'Framer',
    description: 'Add Pulse analytics to your Framer site via custom code.',
    category: 'platform',
    brandColor: '#0055FF',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#0055FF' }}>
        <path d="M4 0h16v8h-8zM4 8h8l8 8H4zM4 16h8v8z" />
      </svg>
    ),
    officialUrl: 'https://www.framer.com/help',
    seoDescription:
      'Add Pulse analytics to your Framer site via custom code settings.',
    relatedIds: ['webflow', 'squarespace', 'wix'],
  },
  {
    id: 'carrd',
    name: 'Carrd',
    description: 'Add Pulse analytics to your Carrd one-page site.',
    category: 'platform',
    brandColor: '#596CAF',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#596CAF' }}>
        <path d="M21.2539 18.4207 9.7457 23.9469a.5163.5163 0 0 1-.23.0531.5491.5491 0 0 1-.2832-.0796.5289.5289 0 0 1-.2478-.4513v-5.4732l-6.2165-2.6016c-.199-.084-.3274-.2743-.3274-.4911V.5324c0-.1814.093-.354.2478-.4513.1549-.0974.3495-.1062.5132-.031l11.964 5.743 5.6323-2.7034c.1638-.0796.3584-.0663.5133.031a.5289.5289 0 0 1 .2478.4513v14.3708c-.004.2036-.1195.3894-.3053.4779zM3.5027 1.3774v13.1718l5.482 2.2964v-2.646L5.538 12.8105c-.2699-.1106-.4026-.4203-.2965-.6902.1107-.2743.4204-.4027.6903-.2965l3.0529 1.23v-2.1724L5.538 9.492c-.2699-.1106-.4026-.4203-.2965-.6902.1107-.2743.4204-.4026.6903-.2965l3.0529 1.23v-.6326c0-.2036.115-.3894.3009-.4779l.7875-.3805-4.5617-2.0751c-.2654-.1195-.3849-.438-.2654-.7035.1194-.2655.438-.385.7035-.2655l5.367 2.4468 2.6148-1.2566zM20.493 4.4171 10.0466 9.4345v13.1939l10.4463-5.0219zm-8.4509 6.8668 5.9864-2.8936a.5279.5279 0 0 1 .708.2478c.1282.2654.0176.584-.2478.7079l-5.9864 2.8936a.5448.5448 0 0 1-.23.0531c-.1992 0-.385-.1106-.478-.3008-.1238-.261-.0132-.5797.2478-.708zm0 3.3184 5.9864-2.8936a.5279.5279 0 0 1 .708.2478c.1282.2654.0176.584-.2478.7079l-5.9864 2.8936a.5448.5448 0 0 1-.23.0531c-.1992 0-.385-.1106-.478-.3009-.1238-.2654-.0132-.5796.2478-.7079zm0 3.314 5.9864-2.8936a.5279.5279 0 0 1 .708.2477c.1282.2655.0176.584-.2478.708l-5.9864 2.8936a.5448.5448 0 0 1-.23.053c-.1992 0-.385-.1105-.478-.3008-.1238-.261-.0132-.5796.2478-.708z" />
      </svg>
    ),
    officialUrl: 'https://carrd.co/docs',
    seoDescription:
      'Add Pulse analytics to your Carrd one-page site via head code.',
    relatedIds: ['framer', 'webflow'],
  },
  {
    id: 'blogger',
    name: 'Blogger',
    description: 'Add Pulse analytics to your Blogger blog.',
    category: 'platform',
    brandColor: '#FF5722',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF5722' }}>
        <path d="M21.976 24H2.026C.9 24 0 23.1 0 21.976V2.026C0 .9.9 0 2.025 0H22.05C23.1 0 24 .9 24 2.025v19.95C24 23.1 23.1 24 21.976 24zM12 3.975H9c-2.775 0-5.025 2.25-5.025 5.025v6c0 2.774 2.25 5.024 5.025 5.024h6c2.774 0 5.024-2.25 5.024-5.024v-3.975c0-.6-.45-1.05-1.05-1.05H18c-.524 0-.976-.45-.976-.976 0-2.776-2.25-5.026-5.024-5.026zm3.074 12H9c-.525 0-.975-.45-.975-.975s.45-.976.975-.976h6.074c.526 0 .977.45.977.976s-.45.976-.975.976zm-2.55-7.95c.527 0 .976.45.976.975s-.45.975-.975.975h-3.6c-.525 0-.976-.45-.976-.975s.45-.975.975-.975h3.6z" />
      </svg>
    ),
    officialUrl: 'https://support.google.com/blogger',
    seoDescription:
      'Add Pulse analytics to your Blogger blog via theme HTML editor.',
    relatedIds: ['wordpress', 'ghost'],
  },
  {
    id: 'gtm',
    name: 'Google Tag Manager',
    description: 'Add Pulse analytics via Google Tag Manager.',
    category: 'platform',
    brandColor: '#246FDB',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#246FDB' }}>
        <path d="M12.003 0a3 3 0 0 0-2.121 5.121l6.865 6.865-4.446 4.541 1.745 1.836a3.432 3.432 0 0 1 .7.739l.012.011-.001.002a3.432 3.432 0 0 1 .609 1.953 3.432 3.432 0 0 1-.09.78l7.75-7.647c.031-.029.067-.05.098-.08.023-.023.038-.052.06-.076a2.994 2.994 0 0 0-.06-4.166l-9-9A2.99 2.99 0 0 0 12.003 0zM8.63 2.133L.88 9.809a2.998 2.998 0 0 0 0 4.238l7.7 7.75a3.432 3.432 0 0 1-.077-.729 3.432 3.432 0 0 1 3.431-3.431 3.432 3.432 0 0 1 .826.101l-5.523-5.81 4.371-4.373-2.08-2.08c-.903-.904-1.193-2.183-.898-3.342zm3.304 16.004a2.932 2.932 0 0 0-2.931 2.931A2.932 2.932 0 0 0 11.934 24a2.932 2.932 0 0 0 2.932-2.932 2.932 2.932 0 0 0-2.932-2.931z" />
      </svg>
    ),
    officialUrl: 'https://tagmanager.google.com',
    seoDescription:
      'Add Pulse analytics via Google Tag Manager. Works with any site using GTM.',
    relatedIds: ['wordpress', 'shopify', 'webflow'],
  },
  {
    id: 'notion',
    name: 'Notion',
    description: 'Add Pulse analytics to Notion-powered websites.',
    category: 'platform',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z" />
      </svg>
    ),
    officialUrl: 'https://www.notion.so',
    seoDescription:
      'Add Pulse analytics to Notion-powered websites using Super.so, Potion, or similar tools.',
    relatedIds: ['webflow', 'framer', 'carrd'],
  },

  // * ─── Hosting & Deployment ─────────────────────────────────────────────────
  {
    id: 'cloudflare-pages',
    name: 'Cloudflare Pages',
    description: 'Deploy with Pulse analytics on Cloudflare Pages.',
    category: 'hosting',
    brandColor: '#F38020',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#F38020' }}>
        <path d="M10.715 14.32H5.442l-.64-1.203L13.673 0l1.397.579-1.752 9.112h5.24l.648 1.192L10.719 24l-1.412-.54ZM4.091 5.448a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.543 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm1.544 0a.5787.5787 0 1 1 0-1.1574.5787.5787 0 0 1 0 1.1574zm8.657-2.7h5.424l.772.771v16.975l-.772.772h-7.392l.374-.579h6.779l.432-.432V3.758l-.432-.432h-4.676l-.552 2.85h-.59l.529-2.877.108-.552ZM2.74 21.265l-.772-.772V3.518l.772-.771h7.677l-.386.579H2.98l-.432.432v16.496l.432.432h5.586l-.092.579zm1.157-1.93h3.28l-.116.58h-3.55l-.192-.193v-3.473l.578 1.158zm13.117 0 .579.58H14.7l.385-.58z" />
      </svg>
    ),
    officialUrl: 'https://developers.cloudflare.com/pages',
    seoDescription:
      'Deploy with Pulse analytics on Cloudflare Pages. Works with any framework.',
    relatedIds: ['netlify', 'vercel', 'github-pages'],
  },
  {
    id: 'netlify',
    name: 'Netlify',
    description: 'Add Pulse analytics to sites deployed on Netlify.',
    category: 'hosting',
    brandColor: '#00C7B7',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#00C7B7' }}>
        <path d="M6.49 19.04h-.23L5.13 17.9v-.23l1.73-1.71h1.2l.15.15v1.2L6.5 19.04ZM5.13 6.31V6.1l1.13-1.13h.23L8.2 6.68v1.2l-.15.15h-1.2L5.13 6.31Zm9.96 9.09h-1.65l-.14-.13v-3.83c0-.68-.27-1.2-1.1-1.23-.42 0-.9 0-1.43.02l-.07.08v4.96l-.14.14H8.9l-.13-.14V8.73l.13-.14h3.7a2.6 2.6 0 0 1 2.61 2.6v4.08l-.13.14Zm-8.37-2.44H.14L0 12.82v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14Zm17.14 0h-6.58l-.14-.14v-1.64l.14-.14h6.58l.14.14v1.64l-.14.14ZM11.05 6.55V1.64l.14-.14h1.65l.14.14v4.9l-.14.14h-1.65l-.14-.13Zm0 15.81v-4.9l.14-.14h1.65l.14.13v4.91l-.14.14h-1.65l-.14-.14Z" />
      </svg>
    ),
    officialUrl: 'https://docs.netlify.com',
    seoDescription:
      'Add Pulse analytics to sites deployed on Netlify. Snippet injection and build-based methods.',
    relatedIds: ['cloudflare-pages', 'vercel', 'github-pages'],
  },
  {
    id: 'vercel',
    name: 'Vercel',
    description: 'Add Pulse analytics to sites deployed on Vercel.',
    category: 'hosting',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="m12 1.608 12 20.784H0Z" />
      </svg>
    ),
    officialUrl: 'https://vercel.com/docs',
    seoDescription:
      'Add Pulse analytics to sites deployed on Vercel. Works with any framework.',
    relatedIds: ['netlify', 'cloudflare-pages', 'nextjs'],
  },
  {
    id: 'github-pages',
    name: 'GitHub Pages',
    description: 'Add Pulse analytics to your GitHub Pages site.',
    category: 'hosting',
    brandColor: '#222222',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M14.088 13.126h-.296V9.858h.998c.815 0 1.094.47 1.094.98s-.28.98-1.094.98h-.701v1.308zm0-1.582h.74a.642.642 0 0 0 .733-.705.642.642 0 0 0-.732-.706h-.741zm2.881-.37a1.913 1.913 0 0 0-.653.11v-.262a1.756 1.756 0 0 1 .653-.118c.654 0 .824.297.824.732v1.49h-.17l-.066-.174a1.143 1.143 0 0 1-.657.218.663.663 0 0 1-.763-.702c0-.37.205-.645.776-.68l.575-.035v-.122c0-.318-.113-.457-.519-.457zm-.078.85c-.31.03-.445.192-.445.445 0 .196.048.431.462.431a1.056 1.056 0 0 0 .58-.174v-.758zm1.86.493a.252.252 0 0 0-.083.16c0 .11.053.158.166.17l.74.088c.41.044.598.205.598.584 0 .532-.532.74-1.133.74-.61 0-.976-.178-.976-.657a.609.609 0 0 1 .449-.575v-.005a.321.321 0 0 1-.14-.287.392.392 0 0 1 .166-.297.746.746 0 0 1-.349-.714c0-.449.192-.82.85-.82a1.36 1.36 0 0 1 .349.044h.74v.165l-.365.105a.908.908 0 0 1 .126.505c0 .449-.192.82-.85.82a1.397 1.397 0 0 1-.288-.027zm.127.588c-.288.065-.532.2-.532.48 0 .322.244.413.693.413.435 0 .845-.109.845-.48 0-.221-.105-.309-.37-.34zm.727-1.381c0-.288-.056-.554-.566-.554-.51 0-.567.266-.567.554 0 .288.057.553.567.553.51 0 .566-.266.566-.554zm1.637-.82c.74 0 .828.506.828 1.133v.14h-1.438c.018.379.118.723.61.723a1.665 1.665 0 0 0 .719-.122v.261a1.765 1.765 0 0 1-.719.131c-.736 0-.915-.505-.915-1.133s.179-1.133.915-1.133zm-.61 1.024h1.133c0-.387-.022-.753-.523-.753-.506 0-.597.36-.61.753zm2.601-.052c.619.057.767.266.767.623 0 .336-.213.671-.876.671a2.147 2.147 0 0 1-.649-.109V12.8a1.924 1.924 0 0 0 .654.1c.453 0 .575-.192.575-.397 0-.2-.061-.34-.492-.374-.632-.057-.763-.28-.763-.58 0-.31.2-.645.815-.645a1.627 1.627 0 0 1 .627.11v.26a1.799 1.799 0 0 0-.631-.1c-.432 0-.523.162-.523.376 0 .19.078.29.496.326zm-20.787-.659H1.38a.05.05 0 0 0-.05.05v.522a.05.05 0 0 0 .05.05h.416v.649a1.267 1.267 0 0 1-.351.032c-.305 0-.731-.112-.731-1.048s.443-1.06.86-1.06a1.69 1.69 0 0 1 .614.094.05.05 0 0 0 .06-.05l.12-.504a.047.047 0 0 0-.02-.039 1.715 1.715 0 0 0-.903-.165C.73 9.748 0 10.05 0 11.508s.837 1.675 1.542 1.675a1.736 1.736 0 0 0 .938-.25.043.043 0 0 0 .016-.038v-1.628a.05.05 0 0 0-.05-.05zm5.545-1.294a.05.05 0 0 0-.05-.05H7.34a.05.05 0 0 0-.05.05v1.161h-.936V9.923a.05.05 0 0 0-.05-.05h-.6a.05.05 0 0 0-.05.05v3.145a.05.05 0 0 0 .05.05h.6a.05.05 0 0 0 .05-.05v-1.345h.937l-.002 1.345a.05.05 0 0 0 .05.05h.603a.05.05 0 0 0 .05-.05zm-4.389.412a.388.388 0 1 0-.387.392.39.39 0 0 0 .387-.392zm-.042 2.068v-1.451a.05.05 0 0 0-.05-.05h-.6a.057.057 0 0 0-.051.056v2.08c0 .06.038.079.087.079h.54c.06 0 .074-.03.074-.08zm6.764-1.497h-.597a.05.05 0 0 0-.05.05v1.542a.673.673 0 0 1-.367.11c-.215 0-.272-.097-.272-.307v-1.344a.05.05 0 0 0-.05-.05h-.604a.05.05 0 0 0-.05.05v1.446c0 .626.348.779.828.779a1.398 1.398 0 0 0 .71-.217 1.274 1.274 0 0 0 .022.128.052.052 0 0 0 .044.027l.385-.002a.05.05 0 0 0 .05-.05v-2.112a.05.05 0 0 0-.05-.05zm1.662-.07a1.121 1.121 0 0 0-.569.15V9.923a.05.05 0 0 0-.05-.05h-.602a.05.05 0 0 0-.05.05v3.145a.05.05 0 0 0 .05.05h.418a.05.05 0 0 0 .044-.027.973.973 0 0 0 .025-.144 1.08 1.08 0 0 0 .713.233c.548 0 .862-.278.862-1.248s-.502-1.095-.841-1.095zm-.235 1.771a.716.716 0 0 1-.347-.1v-.996a.793.793 0 0 1 .308-.1c.215-.019.422.046.422.558 0 .54-.094.647-.383.639zm-6.475-1.706h-.45l-.002-.595c0-.023-.011-.034-.037-.034h-.615c-.024 0-.036.01-.036.033v.615l-.33.08a.05.05 0 0 0-.035.048v.387a.05.05 0 0 0 .05.05h.315v.93c0 .692.484.76.812.76a1.375 1.375 0 0 0 .357-.06.046.046 0 0 0 .028-.044l.001-.426a.05.05 0 0 0-.05-.05c-.026 0-.094.01-.163.01-.221 0-.296-.102-.296-.236v-.884h.451a.05.05 0 0 0 .05-.05v-.484a.05.05 0 0 0-.05-.05z" />
      </svg>
    ),
    officialUrl: 'https://docs.github.com/en/pages',
    seoDescription:
      'Add Pulse analytics to your GitHub Pages site. Works with Jekyll, Hugo, or plain HTML.',
    relatedIds: ['jekyll', 'hugo', 'netlify'],
  },

  // * ─── CMS & Blogging (continued) ──────────────────────────────────────────
  {
    id: 'craftcms',
    name: 'Craft CMS',
    description: 'Add Pulse to your Craft CMS site with a simple template tag.',
    category: 'cms',
    brandColor: '#E5422B',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#E5422B' }}>
        <path d="M21.474 0H2.526A2.516 2.516 0 0 0 0 2.526v18.948A2.516 2.516 0 0 0 2.526 24h18.948A2.534 2.534 0 0 0 24 21.474V2.526A2.516 2.516 0 0 0 21.474 0m-9.516 14.625c.786 0 1.628-.31 2.442-1.039l1.123 1.291c-1.18.955-2.527 1.488-3.874 1.488-2.667 0-4.35-1.769-3.958-4.267.393-2.498 2.667-4.266 5.334-4.266 1.29 0 2.498.505 3.34 1.431l-1.572 1.291c-.45-.59-1.207-.982-2.05-.982-1.6 0-2.834 1.039-3.087 2.526-.224 1.488.674 2.527 2.302 2.527" />
      </svg>
    ),
    officialUrl: 'https://craftcms.com/docs',
    seoDescription:
      'Add Pulse analytics to your Craft CMS site via Twig templates. Simple installation.',
    relatedIds: ['wordpress', 'statamic', 'drupal'],
  },
  {
    id: 'statamic',
    name: 'Statamic',
    description: 'Integrate Pulse with your Statamic site via Antlers templates.',
    category: 'cms',
    brandColor: '#FF269E',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF269E' }}>
        <path d="M19.78 21.639c1.754 0 2.398-.756 2.398-2.607v-3.62c0-1.722.837-2.704 1.641-3.17.242-.145.242-.483 0-.644-.836-.531-1.64-1.642-1.64-3.122v-3.54c0-1.996-.548-2.575-2.302-2.575H4.123c-1.754 0-2.301.58-2.301 2.575v3.556c0 1.48-.805 2.59-1.641 3.122a.377.377 0 0 0 0 .643c.804.451 1.64 1.433 1.64 3.17v3.605c0 1.85.645 2.607 2.399 2.607zm-7.82-3.299c-1.883 0-3.25-.563-4.522-1.673a.891.891 0 0 1-.29-.676.83.83 0 0 1 .193-.563l.403-.515c.193-.242.402-.354.643-.354.274 0 .531.112.805.29a5.331 5.331 0 0 0 2.993.884c.885 0 1.593-.37 1.593-1.126 0-1.963-6.533-.885-6.533-5.294 0-2.366 1.93-3.685 4.441-3.685 1.77 0 3.074.515 4.04 1.126.24.161.402.483.402.805 0 .193-.049.37-.161.53l-.29.435c-.21.29-.45.435-.756.435-.21 0-.435-.08-.676-.193a5.07 5.07 0 0 0-2.398-.564c-.95 0-1.513.515-1.513 1.046 0 2.012 6.534.918 6.534 5.198 0 2.414-1.947 3.894-4.908 3.894z" />
      </svg>
    ),
    officialUrl: 'https://statamic.dev/docs',
    seoDescription:
      'Add Pulse analytics to your Statamic site. Antlers template integration.',
    relatedIds: ['craftcms', 'laravel', 'wordpress'],
  },
  {
    id: 'typo3',
    name: 'TYPO3',
    description: 'Add Pulse to your TYPO3 site via TypoScript or Fluid templates.',
    category: 'cms',
    brandColor: '#FF8700',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF8700' }}>
        <path d="M18.08 16.539c-.356.105-.64.144-1.012.144-3.048 0-7.524-10.652-7.524-14.197 0-1.305.31-1.74.745-2.114C6.56.808 2.082 2.177.651 3.917c-.31.436-.497 1.12-.497 1.99C.154 11.442 6.06 24 10.228 24c1.928 0 5.178-3.168 7.852-7.46M16.134 0c3.855 0 7.713.622 7.713 2.798 0 4.415-2.8 9.765-4.23 9.765-2.549 0-5.72-7.09-5.72-10.635C13.897.31 14.518 0 16.134 0" />
      </svg>
    ),
    officialUrl: 'https://docs.typo3.org',
    seoDescription:
      'Add Pulse analytics to your TYPO3 CMS site. TypoScript and Fluid template integration.',
    relatedIds: ['wordpress', 'drupal', 'joomla'],
  },
  {
    id: 'kirby',
    name: 'Kirby',
    description: 'Add Pulse to your Kirby site via PHP snippets.',
    category: 'cms',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M16.571 12l-2.857 1.48v.234h2.857V16H7.43v-2.286h2.857v-.25L7.429 12V9.143L12 11.598l4.571-2.455M12 0l10.286 5.999V18L12 24 1.714 18.001V6zM2.857 6.682v10.636L12 22.651l9.143-5.333V6.682L12 1.349Z" />
      </svg>
    ),
    officialUrl: 'https://getkirby.com/docs',
    seoDescription:
      'Add Pulse analytics to your Kirby CMS site. Simple PHP snippet integration.',
    relatedIds: ['craftcms', 'statamic', 'grav'],
  },
  {
    id: 'grav',
    name: 'Grav',
    description: 'Add Pulse to your Grav site via Twig templates.',
    category: 'cms',
    brandColor: '#221E1F',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm6.489 13.965c-1.251-.825-1.965-1.523-2.589-2.777-.427.859-1.421 2.135-3.098 3.139-.84 2.61-4.823 7.605-6.113 6.885-.381-.195-.452-.48-.367-.765.093-.704 1.566-2.34 1.566-2.34s.029.345.494 1.065c-.629-1.936 1.021-4.305 1.456-5.131.689-.209.734-1.095.734-1.095.046-1.364-.569-2.34-1.155-2.94.421.525.556 1.306.57 2.025v.255c-.029.601-.21 1.41-.585 1.41v.016c-.39-.016-.885.074-1.319.21l-.961.239s.51-.015.78.226c-.314.51-1.005 1.125-1.771 1.484-1.109.525-1.439-.51-.869-1.17.135-.165.285-.3.404-.404-.09-.09-.135-.21-.149-.36-.075-.345-.045-.78.45-1.485.09-.149.21-.3.345-.449l.015-.016.016-.015v-.015c.029-.046.074-.076.104-.12.57-.585 1.485-1.2 2.911-1.74 1.694-2.49 2.309-2.956 2.309-2.956.181-.179.511-.419.615-.479-.87-1.515-1.049-3.646-.824-4.215-.03.03-.046.06-.061.105.09-.195.135-.255.225-.36.24-.27 1.035-.42 1.336.18.15.315.18.735.18 1.035-.645-.029-1.215.69-1.215.69s.524-.24 1.186-.255c0 0 .179.164.389.449-.284.556-.779 1.725-.42 2.971.061.24.15.45.256.629.015.016.015.016.015.031l.03.029c.585.886 1.649.976 1.649.976-.495-.24-.915-.646-1.169-1.125-.136-.255-.227-.48-.271-.646-.285-1.08.135-1.725.375-2.145.54-.84 1.544-1.351 2.609-1.23 1.5.165 2.581 1.53 2.399 3.03-.104.915-.659 1.681-1.409 2.085.181.494-.015 1.08-.015 1.08.449.57.479.9.465 1.215-.585-.09-1.141.301-1.141.301s1.111-.256 1.756.314c.42.449.704.87.869 1.17.24.435 1.35.465 1.229 1.23-.135.779-.989.779-2.31-.09l.074-.151zm-4.824-4.61c-.22-.219-.574-.219-.795 0l-.465.468c-.222.21-.222.57 0 .796l.51.51c.222.225.577.21.795 0l.47-.466c.221-.225.221-.585 0-.794l-.515-.525v.011zm-2.205-.186c-.14.14-.14.368 0 .511.141.138.368.138.51 0 .14-.143.14-.371 0-.511-.142-.141-.369-.141-.51 0zm1.269-.252c.142-.139.142-.366 0-.51-.141-.138-.367-.138-.51 0-.139.144-.139.371 0 .51.142.142.369.142.51 0zm5.385-1.304c.591-1.131-.247-1.791-.825-2.332-.924-.87-1.846-1.245-2.9-.029-1.052 1.199-.383 2.609.58 3.284.96.69 2.535.226 3.135-.915l.01-.008zm-1.595-.463c-.372-.445.322-1.252.757-.77.8.89-.387 1.216-.757.77z" />
      </svg>
    ),
    officialUrl: 'https://learn.getgrav.org',
    seoDescription:
      'Add Pulse analytics to your Grav flat-file CMS. Twig template integration.',
    relatedIds: ['kirby', 'craftcms', 'hugo'],
  },
  {
    id: 'umbraco',
    name: 'Umbraco',
    description: 'Add Pulse to your Umbraco site via Razor views.',
    category: 'cms',
    brandColor: '#3544B1',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#3544B1' }}>
        <path d="M0 11.982A12 12 0 1 1 12 24 12 12 0 0 1 0 11.982zm11.756 4.11a11.856 11.856 0 0 1-2.773-.25 2.12 2.12 0 0 1-1.514-1.218q-.41-.943-.396-2.895a18.419 18.419 0 0 1 .127-2.04q.118-.988.236-1.629l.082-.425a.201.201 0 0 0 0-.038.244.244 0 0 0-.201-.236l-1.544-.246H5.74a.243.243 0 0 0-.235.189 6.517 6.517 0 0 0-.089.409c-.088.455-.17.9-.26 1.548a19.99 19.99 0 0 0-.176 2.12 11.165 11.165 0 0 0 0 1.486q.05 1.977.675 3.155.626 1.179 2.106 1.695 1.482.517 4.135.506h.22q2.655.01 4.134-.506 1.478-.518 2.1-1.695.623-1.178.678-3.147a11.165 11.165 0 0 0 0-1.485 19.99 19.99 0 0 0-.176-2.121 30.014 30.014 0 0 0-.26-1.548 6.724 6.724 0 0 0-.088-.41.243.243 0 0 0-.236-.188h-.04l-1.548.242a.236.236 0 0 0-.203.236.201.201 0 0 0 0 .037l.081.426q.118.643.236 1.63a18.709 18.709 0 0 1 .126 2.039q.019 1.95-.396 2.892a2.12 2.12 0 0 1-1.502 1.22 11.82 11.82 0 0 1-2.769.247Z" />
      </svg>
    ),
    officialUrl: 'https://docs.umbraco.com',
    seoDescription:
      'Add Pulse analytics to your Umbraco CMS site. Razor view integration for .NET.',
    relatedIds: ['wordpress', 'drupal', 'typo3'],
  },
  {
    id: 'storyblok',
    name: 'Storyblok',
    description: 'Add Pulse to the frontend of your Storyblok-powered site.',
    category: 'cms',
    brandColor: '#09B3AF',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#09B3AF' }}>
        <path d="M13.953 11.462H9.088v2.34h4.748c.281 0 .538-.118.749-.305.187-.187.304-.468.304-.819a1.404 1.404 0 0 0-.257-.842c-.188-.234-.398-.374-.679-.374zm.164-2.83c.21-.14.304-.445.304-.843 0-.35-.094-.608-.257-.771a.935.935 0 0 0-.608-.234H9.088v2.105h4.374c.234 0 .468-.117.655-.257zM21.251 0H2.89c-.585 0-1.053.468-1.053 1.03v18.385c0 .562.468.912 1.03.912H5.58V24l3.368-3.65h12.304c.562 0 .913-.35.913-.935V1.053c0-.562-.351-1.03-.936-1.03zm-3.087 14.9a2.827 2.827 0 0 1-1.006 1.03c-.445.28-.936.538-1.497.655-.562.14-1.17.257-1.801.257H5.579v-13.1h9.403c.468 0 .866.094 1.24.305.351.187.679.444.936.748.524.64.806 1.443.795 2.27 0 .608-.164 1.192-.468 1.754a2.924 2.924 0 0 1-1.403 1.263c.748.21 1.333.585 1.778 1.123.42.561.631 1.286.631 2.199 0 .584-.117 1.076-.35 1.497z" />
      </svg>
    ),
    officialUrl: 'https://www.storyblok.com/docs',
    seoDescription:
      'Add Pulse analytics to your Storyblok-powered frontend application.',
    relatedIds: ['contentful', 'prismic', 'nextjs'],
  },
  {
    id: 'prismic',
    name: 'Prismic',
    description: 'Add Pulse to the frontend of your Prismic-powered site.',
    category: 'cms',
    brandColor: '#5163BA',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#5163BA' }}>
        <path d="M7.7 0C5.033 0 4.066.278 3.09.8A5.447 5.447 0 0 0 .825 3.07c-.522.977-.8 1.947-.8 4.622v.998c0 .199.078.388.218.529l1.77 1.774a.15.15 0 0 0 .257-.106V8.019c0-2.006.208-2.733.6-3.467A4.088 4.088 0 0 1 4.568 2.85c.731-.392 1.457-.6 3.459-.6h2.164c.199 0 .39-.08.53-.221l1.77-1.772A.15.15 0 0 0 12.387 0zm7.605 0c-.2 0-.392.08-.532.22l-1.769 1.775a.147.147 0 0 0-.044.104c0 .083.068.15.15.15h2.862c2.002 0 2.728.21 3.46.601a4.089 4.089 0 0 1 1.698 1.702c.39.734.599 1.461.599 3.467v2.17c0 .198.078.39.218.53l1.77 1.774a.15.15 0 0 0 .257-.106V7.692c0-2.675-.278-3.645-.8-4.623A5.446 5.446 0 0 0 20.91.801C19.935.278 18.968 0 16.3 0zM6.761 3.75a2.995 2.995 0 0 0-2.993 2.999v5.691a.75.75 0 0 0 .219.529l1.77 1.776a.149.149 0 0 0 .255-.106v-7.14a1.5 1.5 0 0 1 .097-.53c.072-.2.188-.385.348-.545l2.308-2.421a.15.15 0 0 0-.11-.253zm4.802 0c-.2 0-.39.08-.53.22L9.26 5.744A.151.151 0 0 0 9.366 6h7.124c.186 0 .364.034.528.097.2.072.386.188.546.347l2.413 2.313a.15.15 0 0 0 .255-.108v-1.9a2.995 2.995 0 0 0-2.993-3zm6.573 5.463a.15.15 0 0 0-.15.15v7.139a1.5 1.5 0 0 1-.095.53 1.49 1.49 0 0 1-.348.546l-2.308 2.42a.15.15 0 0 0 .108.255h1.896a2.997 2.997 0 0 0 2.993-3.002v-5.69a.752.752 0 0 0-.219-.53l-1.77-1.774a.15.15 0 0 0-.107-.044zm-17.96 2.25a.15.15 0 0 0-.15.15v4.695c0 2.674.278 3.645.8 4.623a5.442 5.442 0 0 0 2.263 2.267c.976.522 1.943.802 4.612.802h.994c.2 0 .39-.08.53-.22l1.771-1.775a.149.149 0 0 0-.106-.255H8.027c-2.002 0-2.728-.208-3.46-.6a4.088 4.088 0 0 1-1.698-1.702c-.39-.734-.599-1.461-.599-3.467v-2.172a.749.749 0 0 0-.22-.528L.282 11.507a.15.15 0 0 0-.106-.044zm21.703 1.5a.15.15 0 0 0-.15.15v2.868c0 2.006-.208 2.733-.6 3.467a4.088 4.088 0 0 1-1.698 1.702c-.731.392-1.457.6-3.459.6h-2.164a.749.749 0 0 0-.532.22l-1.769 1.773a.151.151 0 0 0-.043.107c0 .083.065.15.148.15H16.3c2.67 0 3.636-.28 4.612-.802a5.442 5.442 0 0 0 2.263-2.267c.522-.978.8-1.948.8-4.623v-.998a.749.749 0 0 0-.22-.529l-1.769-1.774a.15.15 0 0 0-.106-.044zm-17.96 2.238a.15.15 0 0 0-.151.15v1.898a2.997 2.997 0 0 0 2.993 3.001h5.676c.2 0 .39-.08.53-.22l1.773-1.775a.146.146 0 0 0 .044-.104.15.15 0 0 0-.15-.15H7.51a1.48 1.48 0 0 1-.53-.098 1.49 1.49 0 0 1-.546-.347l-2.413-2.313a.147.147 0 0 0-.103-.042z" />
      </svg>
    ),
    officialUrl: 'https://prismic.io/docs',
    seoDescription:
      'Add Pulse analytics to your Prismic-powered frontend application.',
    relatedIds: ['contentful', 'storyblok', 'nextjs'],
  },

  // * ─── eCommerce (continued) ───────────────────────────────────────────────
  {
    id: 'shopware',
    name: 'Shopware',
    description: 'Add Pulse analytics to your Shopware 6 store.',
    category: 'ecommerce',
    brandColor: '#189EFF',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#189EFF' }}>
        <path d="M23.9477 10.8913a.1735.1735 0 00-.061-.1178c-2.5032-2.078-4.5288-2.9261-6.9905-2.9261-1.3127 0-2.32.2638-2.9916.7827-.5822.4492-.8896 1.0772-.8896 1.812 0 2.0605 2.5184 3.0003 5.4358 4.0883 1.5023.5604 3.057 1.1404 4.483 1.9319a.1626.1626 0 00.0828.0218.187.187 0 00.0589-.011c.0458-.0174.085-.0523.1025-.1002.545-1.3955.822-2.8673.822-4.374a13.082 13.082 0 00-.0523-1.1076zm-4.81 10.4791c-1.0423-.785-2.5795-1.3824-4.2061-2.0125-1.9362-.7501-4.132-1.6027-5.7803-2.913-1.8665-1.4871-2.7757-3.3623-2.7757-5.7324 0-2.1281.883-3.9466 2.5533-5.2614 1.873-1.474 4.7119-2.2546 8.2071-2.2546.966 0 1.8883.0589 2.743.1766a.1696.1696 0 00.1788-.098.17.17 0 00-.0414-.2007C17.814 1.0924 14.9664.0022 12.001.0022c-3.2052 0-6.2186 1.2472-8.4862 3.5148C1.2494 5.7825 0 8.796 0 11.999c0 3.2051 1.2472 6.2185 3.5149 8.484 2.2654 2.2654 5.2788 3.5148 8.4862 3.5148 2.5903 0 5.0564-.8133 7.1344-2.3505a.1714.1714 0 00.0697-.1374.1735.1735 0 00-.0676-.1395Z" />
      </svg>
    ),
    officialUrl: 'https://developer.shopware.com/docs',
    seoDescription:
      'Add Pulse analytics to your Shopware 6 store via theme template.',
    relatedIds: ['shopify', 'woocommerce', 'magento'],
  },
  {
    id: 'magento',
    name: 'Magento',
    description: 'Add Pulse analytics to your Magento / Adobe Commerce store.',
    category: 'ecommerce',
    brandColor: '#F46F25',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#F46F25' }}>
        <path d="M12 0L2 5.5v13L5 20.25V7.25L12 3.5l7 3.75V20.25l3-1.75v-13L12 0zm0 8L7 10.75v6.5L10 19V12.25l2-1.125 2 1.125V19l3-1.75v-6.5L12 8z" />
      </svg>
    ),
    officialUrl: 'https://developer.adobe.com/commerce',
    seoDescription:
      'Add Pulse analytics to your Magento or Adobe Commerce store via layout XML.',
    relatedIds: ['shopify', 'woocommerce', 'shopware'],
  },

  // * ─── Platforms & Tools (continued) ───────────────────────────────────────
  {
    id: 'bubble',
    name: 'Bubble',
    description: 'Add Pulse to your Bubble no-code application.',
    category: 'platform',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm0 14a4 4 0 1 1 0-8 4 4 0 0 1 0 8z" />
      </svg>
    ),
    officialUrl: 'https://manual.bubble.io',
    seoDescription:
      'Add Pulse analytics to your Bubble no-code app via the SEO/Meta tags section.',
    relatedIds: ['webflow', 'framer', 'wix'],
  },
  {
    id: 'discourse',
    name: 'Discourse',
    description: 'Add Pulse to your Discourse community forum.',
    category: 'platform',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563c-2.593-.003-4.996 1.352-6.337 3.57-1.33 2.208-1.387 4.957-.148 7.22L4.4 19.61l4.794-1.074c2.745 1.225 5.965.676 8.136-1.39 2.17-2.054 2.86-5.228 1.737-7.997-1.135-2.778-3.84-4.59-6.84-4.585h-.008z" />
      </svg>
    ),
    officialUrl: 'https://meta.discourse.org/docs',
    seoDescription:
      'Add Pulse analytics to your Discourse forum via admin customization.',
    relatedIds: ['wordpress', 'ghost'],
  },
  {
    id: 'hubspot',
    name: 'HubSpot',
    description: 'Add Pulse to your HubSpot-hosted pages.',
    category: 'platform',
    brandColor: '#FF7A59',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF7A59' }}>
        <path d="M18.164 7.93V5.084a2.198 2.198 0 001.267-1.978v-.067A2.2 2.2 0 0017.238.845h-.067a2.2 2.2 0 00-2.193 2.193v.067a2.196 2.196 0 001.252 1.973l.013.006v2.852a6.22 6.22 0 00-2.969 1.31l.012-.01-7.828-6.095A2.497 2.497 0 104.3 4.656l-.012.006 7.697 5.991a6.176 6.176 0 00-1.038 3.446c0 1.343.425 2.588 1.147 3.607l-.013-.02-2.342 2.343a1.968 1.968 0 00-.58-.095h-.002a2.033 2.033 0 102.033 2.033 1.978 1.978 0 00-.1-.595l.005.014 2.317-2.317a6.247 6.247 0 104.782-11.134l-.036-.005zm-.964 9.378a3.206 3.206 0 113.215-3.207v.002a3.206 3.206 0 01-3.207 3.207z" />
      </svg>
    ),
    officialUrl: 'https://knowledge.hubspot.com',
    seoDescription:
      'Add Pulse analytics to HubSpot landing pages and website via Settings.',
    relatedIds: ['wordpress', 'webflow'],
  },
  {
    id: 'substack',
    name: 'Substack',
    description: 'Add Pulse to your Substack publication with a custom domain.',
    category: 'platform',
    brandColor: '#FF6719',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#FF6719' }}>
        <path d="M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z" />
      </svg>
    ),
    officialUrl: 'https://substack.com',
    seoDescription:
      'Add Pulse analytics to your Substack publication using custom domain settings.',
    relatedIds: ['ghost', 'blogger', 'wordpress'],
  },
  {
    id: 'linktree',
    name: 'Linktree',
    description: 'Add Pulse to your Linktree page via custom code.',
    category: 'platform',
    brandColor: '#43E55E',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#43E55E' }}>
        <path d="m13.73635 5.85251 4.00467-4.11665 2.3248 2.3808-4.20064 4.00466h5.9085v3.30473h-5.9365l4.22865 4.10766-2.3248 2.3338L12.0005 12.099l-5.74052 5.76852-2.3248-2.3248 4.22864-4.10766h-5.9375V8.12132h5.9085L3.93417 4.11666l2.3248-2.3808 4.00468 4.11665V0h3.4727zm-3.4727 10.30614h3.4727V24h-3.4727z" />
      </svg>
    ),
    officialUrl: 'https://linktr.ee',
    seoDescription:
      'Add Pulse analytics to your Linktree link-in-bio page.',
    relatedIds: ['carrd', 'framer', 'webflow'],
  },
  {
    id: 'weebly',
    name: 'Weebly',
    description: 'Add Pulse to your Weebly site via header code.',
    category: 'platform',
    brandColor: '#2C5CC5',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#2C5CC5' }}>
        <path d="M2 7l4 10 4-7 4 7 4-10h3L15 21h-2l-4-7-4 7H3L.5 7z" />
      </svg>
    ),
    officialUrl: 'https://www.weebly.com',
    seoDescription:
      'Add Pulse analytics to your Weebly website via the header code settings.',
    relatedIds: ['squarespace', 'wix', 'webflow'],
  },

  // * ─── Static Sites & Documentation (continued) ───────────────────────────
  {
    id: 'gitbook',
    name: 'GitBook',
    description: 'Add Pulse to your GitBook documentation site.',
    category: 'ssg',
    brandColor: '#BBDDE5',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#BBDDE5' }}>
        <path d="M12.513 1.097c-.645 0-1.233.34-2.407 1.017L3.675 5.82A7.233 7.233 0 0 0 0 12.063v.236a7.233 7.233 0 0 0 3.667 6.238L7.69 20.86c2.354 1.36 3.531 2.042 4.824 2.042 1.292.001 2.47-.678 4.825-2.038l4.251-2.453c1.177-.68 1.764-1.02 2.087-1.579.323-.56.324-1.24.323-2.6v-2.63a1.04 1.04 0 0 0-1.558-.903l-8.728 5.024c-.587.337-.88.507-1.201.507-.323 0-.616-.168-1.204-.506l-5.904-3.393c-.297-.171-.446-.256-.565-.271a.603.603 0 0 0-.634.368c-.045.111-.045.282-.043.625.002.252 0 .378.025.494.053.259.189.493.387.667.089.077.198.14.416.266l6.315 3.65c.589.34.884.51 1.207.51.324 0 .617-.17 1.206-.509l7.74-4.469c.202-.116.302-.172.377-.13.075.044.075.16.075.392v1.193c0 .34.001.51-.08.649-.08.14-.227.224-.522.394l-6.382 3.685c-1.178.68-1.767 1.02-2.413 1.02-.646 0-1.236-.34-2.412-1.022l-5.97-3.452-.043-.025a4.106 4.106 0 0 1-2.031-3.52V11.7c0-.801.427-1.541 1.12-1.944a1.979 1.979 0 0 1 1.982-.001l4.946 2.858c1.174.679 1.762 1.019 2.407 1.02.645 0 1.233-.34 2.41-1.017l7.482-4.306a1.091 1.091 0 0 0 0-1.891L14.92 2.11c-1.175-.675-1.762-1.013-2.406-1.013Z" />
      </svg>
    ),
    officialUrl: 'https://docs.gitbook.com',
    seoDescription:
      'Add Pulse analytics to your GitBook-hosted documentation.',
    relatedIds: ['docusaurus', 'readme', 'readthedocs'],
  },
  {
    id: 'gridsome',
    name: 'Gridsome',
    description: 'Add Pulse to your Gridsome static site.',
    category: 'ssg',
    brandColor: '#00A672',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#00A672' }}>
        <path d="M12.026.017l-.108.001C4.905.135-.102 5.975.002 11.956.025 19.286 6.02 24.13 12.083 23.98c7.208-.2 12.323-6.461 11.892-12.05a2.197 2.197 0 0 0-2.192-2.001h-3.15a2.155 2.155 0 0 0-2.161 2.147c0 1.187.967 2.148 2.16 2.148h.788c-.87 2.791-3.62 5.455-7.44 5.56-3.803.095-7.61-2.904-7.768-7.569a2.173 2.173 0 0 0 0-.159c-.148-3.72 2.895-7.637 7.88-7.845a2.096 2.096 0 0 0 2.003-2.183 2.095 2.095 0 0 0-2.07-2.011zm-.018 9.911a2.15 2.15 0 0 0-2.146 2.151 2.15 2.15 0 0 0 2.146 2.152 2.15 2.15 0 0 0 2.147-2.152 2.15 2.15 0 0 0-2.147-2.15Z" />
      </svg>
    ),
    officialUrl: 'https://gridsome.org/docs',
    seoDescription:
      'Add Pulse analytics to your Gridsome Vue-based static site.',
    relatedIds: ['gatsby', 'vue', 'nuxt'],
  },
  {
    id: 'readthedocs',
    name: 'Read the Docs',
    description: 'Add Pulse to your Read the Docs documentation.',
    category: 'ssg',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M10.806 11.568a.573.573 0 0 0-.076 1.123s1.403.464 3.788.658c1.917.157 4.09-.135 4.09-.135.841-.028.678-1.318-.143-1.136 0 0-2.127.262-3.854.123-2.28-.186-3.52-.604-3.52-.604a.65.65 0 0 0-.285-.03m0-2.854a.573.573 0 0 0-.076 1.123s1.403.464 3.788.658c1.917.157 4.09-.135 4.09-.135.841-.028.678-1.318-.143-1.136 0 0-2.127.263-3.854.123-2.28-.186-3.52-.604-3.52-.604a.65.65 0 0 0-.285-.03m0-2.854a.573.573 0 0 0-.076 1.123s1.403.464 3.788.66c1.917.155 4.09-.137 4.09-.137.841-.028.678-1.318-.143-1.136 0 0-2.127.263-3.854.123-2.28-.186-3.52-.603-3.52-.603a.65.65 0 0 0-.285-.03m0-2.85a.573.573 0 0 0-.076 1.123s1.403.465 3.788.66c1.917.155 4.09-.136 4.09-.136.841-.028.678-1.318-.143-1.136 0 0-2.127.262-3.854.122-2.28-.185-3.52-.603-3.52-.603a.6.6 0 0 0-.285-.03M6.81 0C3.812.021 2.693.941 2.693.941v22.39s1.09-.943 4.602-.799 4.234 1.378 8.55 1.46q.366.008.702.008c3.732 0 4.699-.668 4.699-.668l.06-22.825s-1.941.548-5.72.578S10.9.122 7.43.008A34 34 0 0 0 6.81 0m2.508 1.46s1.815.6 5.173.77c2.837.138 5.678-.28 5.678-.28v20.286s-1.44.756-5.036.5c-2.787-.2-5.857-1.255-5.857-1.255Zm-1.752.528c.718.052.718 1.105 0 1.157 0 0-.942.004-1.51.064-.964.097-1.618.447-1.618.447-.677.346-1.207-.658-.54-1.022 0 0 .852-.45 2.043-.57.688-.07 1.625-.076 1.625-.076m-.557 2.863c.32-.008.56 0 .56 0a.58.58 0 0 1 .001 1.152s-.94.004-1.51.064c-.964.097-1.618.447-1.618.447-.662.294-1.155-.65-.536-1.026 0 0 .852-.45 2.043-.57.334-.038.74-.059 1.06-.067m.557 2.85c.71.06.71 1.097 0 1.156 0 0-.942-.004-1.51.051-.964.097-1.618.448-1.618.448-.665.3-1.162-.65-.537-1.026 0 0 .853-.452 2.044-.57.684-.064 1.62-.06 1.62-.06" />
      </svg>
    ),
    officialUrl: 'https://docs.readthedocs.io',
    seoDescription:
      'Add Pulse analytics to your Read the Docs documentation site.',
    relatedIds: ['sphinx', 'mkdocs', 'docusaurus'],
  },
  {
    id: 'sphinx',
    name: 'Sphinx',
    description: 'Add Pulse to your Sphinx documentation via conf.py.',
    category: 'ssg',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M16.284 19.861c0-.654.177-1.834.393-2.623.499-1.822.774-4.079.497-4.079-.116 0-.959.762-1.873 1.694-3.472 3.54-7.197 5.543-10.312 5.543-1.778 0-2.987-.45-4.154-1.545C.128 18.186 0 17.858 0 16.703c0-1.188.117-1.468.909-2.175.718-.642 1.171-.813 2.157-.813.76.171 1.21.16 1.457.461.251.296.338 1.265.035 1.832-.162.303-.585.491-1.105.491-.49 0-.77-.116-.669-.278.315-.511-.135-.857-.713-.548-.699.374-.711 1.698-.021 2.322.969.878 3.65 1.208 5.262.648 1.743-.605 4.022-2.061 5.841-3.732l1.6-1.469-2.088-.013c-2.186-.012-3.608-.273-8.211-1.506-1.531-.41-3.003-.765-3.271-.789-.304-.026-.503-.274-.487-.656.027-.646.378-1.127.793-1.308.249-.109 1.977-.274 3.809-.761 7.136-1.898 7.569-1.629 12.323-.426 1.553.393 3.351.821 4.147.835 1.227.022 1.493.124 1.74.666.16.351.291.686.291.745 0 .058-.695.424-1.545.813-3.12 1.428-4.104 2.185-3.088 3.635.421.602.412.666-.14 1.052-.323.227-.59.687-.593 1.022-.009.908-.583 2.856-1.417 3.624l-.732.675v-1.189Zm1.594-8.328c1.242-.346 1.994-.738 3.539-1.562-1.272-.372-4.462-.895-4.462-.895-2.354-.472-2.108-.448-2.214.071a3.475 3.475 0 0 1-.45 1.105c-.541.848-2.521 1.026-3.656.483-.356-.171-.714-.821-.709-1.283.007-.65-.362-.801-.598-.714-.191.07-.813.079-2.179.448-4.514 1.217-5.132 1.078-2.189 1.495.353.05 2.223.572 3.136.815 2.239.597 2.658.641 5.556.581 2.015-.042 2.858-.163 4.226-.544ZM.732 6.258c.056-.577.088-.702 1.692-1.025.919-.185 3.185-.785 5.036-1.333 4.254-1.26 5.462-1.263 9.873-.026 1.904.535 4.037.973 4.74.975 1.097.002 1.668.487 1.668.487.505 1.16.412 1.24-1.558 1.24-1.374 0-2.558-.232-4.385-.857-1.389-.476-3.369-.923-4.451-1.004-1.974-.149-1.971-.15-8.072 1.529-1.072.295-2.553.624-3.29.732l-1.342.196.089-.914Z" />
      </svg>
    ),
    officialUrl: 'https://www.sphinx-doc.org',
    seoDescription:
      'Add Pulse analytics to your Sphinx-generated documentation.',
    relatedIds: ['readthedocs', 'mkdocs', 'docusaurus'],
  },
  {
    id: 'readme',
    name: 'ReadMe',
    description: 'Add Pulse to your ReadMe API documentation.',
    category: 'ssg',
    brandColor: '#018EF5',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#018EF5' }}>
        <path d="M22.0113 3.269h-5.8219a4.2894 4.2894 0 0 0-4.1854 3.3452A4.2894 4.2894 0 0 0 7.8186 3.269h-5.818A2.0007 2.0007 0 0 0 0 5.2697v10.2434a2.0007 2.0007 0 0 0 2.0007 2.0007h3.7372c4.2574 0 5.5299 1.0244 6.138 3.133a.112.112 0 0 0 .1121.084h.024a.112.112 0 0 0 .112-.084c.6122-2.1086 1.8847-3.133 6.138-3.133h3.7373A2.0007 2.0007 0 0 0 24 15.5131V5.2697a2.0007 2.0007 0 0 0-1.9887-2.0006Zm-11.928 11.0557a.144.144 0 0 1-.144.144H3.2571a.144.144 0 0 1-.144-.144v-.9523a.144.144 0 0 1 .144-.144h6.6822a.144.144 0 0 1 .144.144zm0-2.5368a.144.144 0 0 1-.144.144H3.2571a.144.144 0 0 1-.144-.144v-.9523a.144.144 0 0 1 .144-.144h6.6822a.144.144 0 0 1 .144.144zm0-2.5368a.144.144 0 0 1-.144.144H3.2571a.144.144 0 0 1-.144-.144v-.9524a.144.144 0 0 1 .144-.144h6.6822a.144.144 0 0 1 .144.144zm10.8037 5.0696a.144.144 0 0 1-.144.144h-6.6823a.144.144 0 0 1-.144-.144v-.9523a.144.144 0 0 1 .144-.144h6.6822a.144.144 0 0 1 .144.144zm0-2.5368a.144.144 0 0 1-.144.144h-6.6823a.144.144 0 0 1-.144-.144v-.9523a.144.144 0 0 1 .144-.144h6.6822a.144.144 0 0 1 .144.144zm0-2.5368a.144.144 0 0 1-.144.144h-6.6823a.144.144 0 0 1-.144-.144v-.9484a.144.144 0 0 1 .144-.144h6.6822a.144.144 0 0 1 .144.144v.9524z" />
      </svg>
    ),
    officialUrl: 'https://docs.readme.com',
    seoDescription:
      'Add Pulse analytics to your ReadMe API documentation portal.',
    relatedIds: ['gitbook', 'docusaurus', 'readthedocs'],
  },

  // * ─── JavaScript Frameworks (continued) ───────────────────────────────────
  {
    id: 'flutter',
    name: 'Flutter',
    description: 'Add Pulse to your Flutter web application.',
    category: 'framework',
    brandColor: '#02569B',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#02569B' }}>
        <path d="M14.314 0L2.3 12 6 15.7 21.684.013h-7.357zm.014 11.072L7.857 17.53l6.47 6.47H21.7l-6.46-6.468 6.46-6.46h-7.37z" />
      </svg>
    ),
    officialUrl: 'https://docs.flutter.dev',
    seoDescription:
      'Add Pulse analytics to your Flutter web app via web/index.html.',
    relatedIds: ['react', 'angular', 'preact'],
  },

  // * ─── Hosting & Deployment (continued) ────────────────────────────────────
  {
    id: 'render',
    name: 'Render',
    description: 'Deploy with Pulse analytics on Render.',
    category: 'hosting',
    brandColor: '#000000',
    invertInDark: true,
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8 fill-current dark:invert">
        <path d="M18.263.007c-3.121-.147-5.744 2.109-6.192 5.082-.018.138-.045.272-.067.405-.696 3.703-3.936 6.507-7.827 6.507-1.388 0-2.691-.356-3.825-.979a.2024.2024 0 0 0-.302.178V24H12v-8.999c0-1.656 1.338-3 2.987-3h2.988c3.382 0 6.103-2.817 5.97-6.244-.12-3.084-2.61-5.603-5.682-5.75" />
      </svg>
    ),
    officialUrl: 'https://docs.render.com',
    seoDescription:
      'Add Pulse analytics to sites deployed on Render. Works with any framework.',
    relatedIds: ['netlify', 'vercel', 'cloudflare-pages'],
  },
  {
    id: 'firebase',
    name: 'Firebase Hosting',
    description: 'Deploy with Pulse analytics on Firebase Hosting.',
    category: 'hosting',
    brandColor: '#DD2C00',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#DD2C00' }}>
        <path d="M19.455 8.369c-.538-.748-1.778-2.285-3.681-4.569-.826-.991-1.535-1.832-1.884-2.245a146 146 0 0 0-.488-.576l-.207-.245-.113-.133-.022-.032-.01-.005L12.57 0l-.609.488c-1.555 1.246-2.828 2.851-3.681 4.64-.523 1.064-.864 2.105-1.043 3.176-.047.241-.088.489-.121.738-.209-.017-.421-.028-.632-.033-.018-.001-.035-.002-.059-.003a7.46 7.46 0 0 0-2.28.274l-.317.089-.163.286c-.765 1.342-1.198 2.869-1.252 4.416-.07 2.01.477 3.954 1.583 5.625 1.082 1.633 2.61 2.882 4.42 3.611l.236.095.071.025.003-.001a9.59 9.59 0 0 0 2.941.568q.171.006.342.006c1.273 0 2.513-.249 3.69-.742l.008.004.313-.145a9.63 9.63 0 0 0 3.927-3.335c1.01-1.49 1.577-3.234 1.641-5.042.075-2.161-.643-4.304-2.133-6.371m-7.083 6.695c.328 1.244.264 2.44-.191 3.558-1.135-1.12-1.967-2.352-2.475-3.665-.543-1.404-.87-2.74-.974-3.975.48.157.922.366 1.315.622 1.132.737 1.914 1.902 2.325 3.461zm.207 6.022c.482.368.99.712 1.513 1.028-.771.21-1.565.302-2.369.273a8 8 0 0 1-.373-.022c.458-.394.869-.823 1.228-1.279zm1.347-6.431c-.516-1.957-1.527-3.437-3.002-4.398-.647-.421-1.385-.741-2.194-.95.011-.134.026-.268.043-.4.014-.113.03-.216.046-.313.133-.689.332-1.37.589-2.025.099-.25.206-.499.321-.74l.004-.008c.177-.358.376-.719.61-1.105l.092-.152-.003-.001c.544-.851 1.197-1.627 1.942-2.311l.288.341c.672.796 1.304 1.548 1.878 2.237 1.291 1.549 2.966 3.583 3.612 4.48 1.277 1.771 1.893 3.579 1.83 5.375-.049 1.395-.461 2.755-1.195 3.933-.694 1.116-1.661 2.05-2.8 2.708-.636-.318-1.559-.839-2.539-1.599.79-1.575.952-3.28.479-5.072zm-2.575 5.397c-.725.939-1.587 1.55-2.09 1.856-.081-.029-.163-.06-.243-.093l-.065-.026c-1.49-.616-2.747-1.656-3.635-3.01-.907-1.384-1.356-2.993-1.298-4.653.041-1.19.338-2.327.882-3.379.316-.07.638-.114.96-.131l.084-.002c.162-.003.324-.003.478 0 .227.011.454.035.677.07.073 1.513.445 3.145 1.105 4.852.637 1.644 1.694 3.162 3.144 4.515z" />
      </svg>
    ),
    officialUrl: 'https://firebase.google.com/docs/hosting',
    seoDescription:
      'Add Pulse analytics to sites deployed on Firebase Hosting.',
    relatedIds: ['netlify', 'vercel', 'render'],
  },

  // * ─── Platforms & Tools (continued) ───────────────────────────────────────
  {
    id: 'amp',
    name: 'Google AMP',
    description: 'Add Pulse to your AMP (Accelerated Mobile Pages) site.',
    category: 'platform',
    brandColor: '#005AF0',
    icon: (
      <svg role="img" viewBox="0 0 24 24" className="w-8 h-8" style={{ fill: '#005AF0' }}>
        <path d="M12 0c6.628 0 12 5.373 12 12s-5.372 12-12 12C5.373 24 0 18.627 0 12S5.373 0 12 0zm-.92 19.278l5.034-8.377a.444.444 0 00.097-.268.455.455 0 00-.455-.455l-2.851.004.924-5.468-.927-.003-5.018 8.367s-.1.183-.1.291c0 .251.204.455.455.455l2.831-.004-.901 5.458z" />
      </svg>
    ),
    officialUrl: 'https://amp.dev/documentation',
    seoDescription:
      'Add Pulse analytics to Google AMP pages using amp-analytics.',
    relatedIds: ['gtm', 'wordpress', 'webflow'],
  },
]

// * ─── Helpers ────────────────────────────────────────────────────────────────

/** Retrieve a single integration by its route slug. */
export function getIntegration(id: string): Integration | undefined {
  return integrations.find((i) => i.id === id)
}

/** Group integrations by category, preserving category ordering. */
export function getGroupedIntegrations(): {
  category: IntegrationCategory
  label: string
  items: Integration[]
}[] {
  return categoryOrder
    .map((cat) => ({
      category: cat,
      label: categoryLabels[cat],
      items: integrations.filter((i) => i.category === cat),
    }))
    .filter((group) => group.items.length > 0)
}
