/* global React */
const { useState, useEffect, useMemo, useRef, useCallback } = React;

const PRODUCTS = [
  {
    id: "horizon-kpi",
    name: "Horizon KPI",
    tagline: "Multi-metric KPI card with trend, target and variance baked in.",
    category: "KPI",
    price: 49,
    version: "2.4.1",
    updated: "2026-03-18",
    downloads: 12400,
    rating: 4.8,
    tags: ["KPI", "Finance", "Executive"],
    summary:
      "A dense but legible KPI card for executive dashboards. Display current, prior-period, target, variance and a compact sparkline inside a single tile, with conditional formatting across all elements.",
    features: [
      "Up to 6 metrics per card, each with independent formatting",
      "Target lines, variance pills and trend micro-charts",
      "High-contrast mode and accessibility-tested color scales",
      "Tooltip drill-through with custom payloads"
    ]
  },
  {
    id: "strata-waterfall",
    name: "Strata Waterfall",
    tagline: "Publication-grade waterfall with subtotals, bridges and annotations.",
    category: "Comparison",
    price: 59,
    version: "1.9.0",
    updated: "2026-02-11",
    downloads: 8720,
    rating: 4.9,
    tags: ["Finance", "P&L", "Variance"],
    summary:
      "Build variance bridges that a CFO would sign off on. Automatic subtotals, stacked categories, and inline annotations with callouts — no post-processing in a slide tool required.",
    features: [
      "Stacked and signed waterfall variants",
      "Subtotal and bridge segments with custom labels",
      "Currency and unit scaling with smart rounding",
      "Export to vector for presentation decks"
    ]
  },
  {
    id: "atlas-small-multiples",
    name: "Atlas Small Multiples",
    tagline: "Dense grids of synchronised charts for cohort and segment comparison.",
    category: "Comparison",
    price: 79,
    version: "3.0.2",
    updated: "2026-04-02",
    downloads: 6140,
    rating: 4.7,
    tags: ["Cohort", "Segment", "Time series"],
    summary:
      "Render up to 64 synchronised panels with shared axes, linked brushing and per-panel annotations. Ideal for cohort analysis, territory reviews and product-line comparisons.",
    features: [
      "Linked brushing across panels",
      "Shared or independent axis scaling",
      "Per-panel conditional highlighting",
      "Automatic pagination for large sets"
    ]
  },
  {
    id: "meridian-map",
    name: "Meridian Choropleth",
    tagline: "Administrative-boundary maps with choropleth, bubbles and flows.",
    category: "Geospatial",
    price: 89,
    version: "4.1.0",
    updated: "2026-03-30",
    downloads: 9320,
    rating: 4.6,
    tags: ["Map", "Geo", "Territory"],
    summary:
      "Ship geo dashboards without a custom tile server. Bundled admin boundaries for 90+ countries, bubble overlays, and support for custom TopoJSON shapes.",
    features: [
      "90+ country admin boundaries bundled",
      "Bubble, flow and choropleth layers",
      "Custom TopoJSON upload",
      "Drill-down from country → region → city"
    ]
  },
  {
    id: "cascade-funnel",
    name: "Cascade Funnel",
    tagline: "Conversion funnels with stage dropoff, timing and cohort splits.",
    category: "Analytics",
    price: 49,
    version: "2.2.0",
    updated: "2026-01-24",
    downloads: 7810,
    rating: 4.7,
    tags: ["Funnel", "Conversion", "SaaS"],
    summary:
      "A funnel visual that respects the underlying data model. Stage time, drop-off reasons, and cohort splits are all first-class — not crammed into tooltips.",
    features: [
      "Stage duration and drop-off",
      "Cohort-colored stage bands",
      "Lateral comparison of 2+ funnels",
      "Drill-through to stage exits"
    ]
  },
  {
    id: "lattice-heatmap",
    name: "Lattice Heatmap",
    tagline: "Calendar, matrix and clustered heatmaps with principled color scales.",
    category: "Matrix",
    price: 39,
    version: "1.7.3",
    updated: "2026-02-28",
    downloads: 10120,
    rating: 4.8,
    tags: ["Heatmap", "Calendar", "Density"],
    summary:
      "Diverging, sequential and cyclic color scales engineered for perceptual uniformity. Calendar, matrix and clustered variants in a single visual.",
    features: [
      "Perceptually uniform color scales",
      "Calendar, matrix and clustered modes",
      "Cell-level drill-through",
      "Color-blind safe defaults"
    ]
  },
  {
    id: "beacon-gauge",
    name: "Beacon Gauge",
    tagline: "Bullet, radial and linear gauges with target bands and thresholds.",
    category: "KPI",
    price: 29,
    version: "1.4.0",
    updated: "2025-12-15",
    downloads: 5430,
    rating: 4.5,
    tags: ["Gauge", "Target", "Threshold"],
    summary:
      "Gauges that communicate progress without gimmicks. Bullet charts for compact dashboards, radial for landing tiles, linear for operations screens.",
    features: [
      "Bullet, radial and linear forms",
      "Multiple target and threshold bands",
      "Dynamic thresholds from measures",
      "Screen-reader friendly summaries"
    ]
  },
  {
    id: "prism-decomp",
    name: "Prism Decomposition",
    tagline: "Decomposition tree with quantitative drivers and leaf sparklines.",
    category: "Analytics",
    price: 99,
    version: "1.2.0",
    updated: "2026-03-05",
    downloads: 3290,
    rating: 4.6,
    tags: ["Tree", "Driver", "Root cause"],
    summary:
      "Walk from a top-line number down to its drivers, with variance contributions and inline sparklines at every leaf. Built for root-cause analysis sessions.",
    features: [
      "Quantitative variance contributions",
      "Inline sparklines per leaf",
      "Automatic top-N branching",
      "Exportable driver paths"
    ]
  },
  {
    id: "orbit-network",
    name: "Orbit Network",
    tagline: "Force-directed network graph with community detection.",
    category: "Graph",
    price: 119,
    version: "0.9.2",
    updated: "2026-04-12",
    downloads: 1420,
    rating: 4.4,
    tags: ["Network", "Graph", "Community"],
    summary:
      "Visualise relationships at scale. Force-directed layout with WebGL rendering, community detection, and path highlighting for up to 20,000 nodes.",
    features: [
      "WebGL rendering up to 20k nodes",
      "Louvain community detection",
      "Path & neighbour highlighting",
      "Exportable clustered layouts"
    ]
  },
  {
    id: "ledger-table",
    name: "Ledger Table",
    tagline: "Dense, spreadsheet-class table with inline sparklines and totals.",
    category: "Table",
    price: 59,
    version: "2.8.1",
    updated: "2026-04-01",
    downloads: 14200,
    rating: 4.9,
    tags: ["Table", "Ledger", "Finance"],
    summary:
      "A table visual designed for people who still live in spreadsheets. Grouped totals, inline sparklines, frozen columns, and conditional formatting that actually works.",
    features: [
      "Grouped subtotals with roll-ups",
      "Inline sparklines and data bars",
      "Frozen rows and columns",
      "Cell-level conditional formatting"
    ]
  }
];

window.PRODUCTS = PRODUCTS;
window.ReactHooks = { useState, useEffect, useMemo, useRef, useCallback };
