{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "nx-logo",
  "title": "Nx Logo",
  "description": "The Nexus ReGen logotype (emblem, lockup and wordmark), drawn inline as vector paths and coloured by token so it flips correctly with the theme.",
  "registryDependencies": [
    "@nx-ui/nx-emblem",
    "@nx-ui/utils"
  ],
  "files": [
    {
      "path": "components/blocks/nx-logo.tsx",
      "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { NxEmblem } from \"@/components/blocks/nx-emblem\"\n\n/**\n * NxLogo — the Nexus ReGen brand mark, drawn inline as vector paths (built on\n * {@link NxEmblem} plus the wordmark letterforms extracted from the brand\n * assets). Colouring is token-driven so it flips correctly with the theme\n * rather than swapping two `<img>`s:\n *\n *  - the arrow emblem is navy on light, Nexus accent-yellow on dark;\n *  - the \"Nexus ReGen\" wordmark is navy on light, white on dark (yellow text on\n *    white is a brand no-no, so the wordmark never goes yellow).\n *\n * Variants (public API kept stable — size each by setting a height via\n * `className`, width follows the intrinsic ratio):\n *  - `emblem`   — the arrow logomark on its own (default). 1:1.\n *  - `lockup`   — emblem + \"NR\" monogram, side by side. ~2.5:1.\n *  - `wordmark` — the \"Nexus ReGen\" wordmark alone. ~2.1:1.\n *\n * `monochrome` collapses the whole mark to a single `currentColor` — the escape\n * hatch for stamping the logo on a solid brand band (all-white or all-yellow),\n * where the two-tone default would fight the background. Pair it with a text\n * colour utility in `className` (e.g. `monochrome className=\"text-white\"`).\n * `emblemClassName` overrides just the arrow's colour independently.\n *\n * The arrow always points down-left — never flip, mirror or rotate it.\n *\n * @example\n * <NxLogo variant=\"lockup\" className=\"h-8\" />\n * <NxLogo variant=\"wordmark\" monochrome className=\"h-6 text-white\" />\n */\n\ntype NxLogoVariant = \"emblem\" | \"lockup\" | \"wordmark\"\n\n/** Arrow geometry (matches NxEmblem's source): the solid silhouette subpath and\n * the inset knockout, in the 512-canvas path units. Reused here inside the\n * lockup's own coordinate space. */\nconst ARROW_KEYLINE =\n  \"M128.055 9.93506H87.925H7.92499V50.0651H59.555L7.92499 101.685L22.115 115.875L36.305 130.065L87.935 78.4351V130.065H127.905L128.055 9.93506ZM124.625 126.635V50.0651L124.615 50.0551V13.3651H11.355V46.6351H67.845L61.985 52.4951L12.785 101.695L24.545 113.455L36.305 125.215L85.505 76.0151L91.365 70.1551V126.635H124.625Z\"\n\n/** The \"NR\" monogram wordmark from nr-lockup-white.svg (path 2), in the lockup's\n * coordinate space (viewBox 0 0 1000 400, group translate(76.8 93.46) scale(1.665)). */\nconst NR_MONOGRAM =\n  \"M300.785 89.2251C315.375 82.1851 324.475 70.1751 324.475 52.4951V52.1551C324.475 39.7951 320.865 31.0451 313.495 23.6651C305.075 15.2551 291.685 9.93506 270.235 9.93506H211.545V62.8051L168.945 9.93506H127.935L127.925 50.0551L127.935 50.0651L127.925 130.065H171.185V74.6351L215.805 130.065H251.705V95.7451H260.285L282.935 130.065H328.755L300.775 89.2251H300.785ZM269.035 67.0851C278.635 67.0851 284.475 62.7951 284.475 55.4151L284.485 55.4251V55.0751C284.485 47.3451 278.655 43.5751 269.215 43.5751H251.705V67.0851H269.035Z\"\n\n/** The full \"Nexus ReGen\" wordmark letterforms from wordmark-mono-white.svg\n * (paths 2–11, i.e. everything after the arrow), in that asset's coordinate\n * space (group translate(80 100) scale(1.06977)). Two rows: \"NEXUS\" (top),\n * \"REGEN\" (bottom). The arrow path is intentionally excluded. */\nconst WORDMARK_LETTERS: readonly string[] = [\n  \"M723.901 112.471H742.542L772.204 150.575V112.471H791.974V184.56H774.578L743.684 145.02V184.56H723.914V112.471H723.901Z\",\n  \"M658.099 112.471H716.075V129.355H677.869V140.376H712.47V156.13H677.869V167.561H716.588V184.548H658.099V112.459V112.471Z\",\n  \"M583.059 148.715V148.522C583.059 128.329 598.903 112.484 620.29 112.484C632.568 112.484 640.984 116.154 648.412 122.491L637.122 136.155C632.068 131.895 627.423 129.625 620.393 129.625C610.488 129.625 602.675 137.938 602.675 148.535V148.728C602.675 160.018 610.501 168.036 621.483 168.036C626.23 168.036 629.797 167.048 632.568 165.162V156.746H619.007V142.685H650.786V173.771C643.358 180.006 633.453 184.56 620.688 184.56C599.006 184.56 583.059 169.807 583.059 148.715Z\",\n  \"M517.256 112.471H575.233V129.355H537.027V140.376H571.628V156.13H537.027V167.561H575.746V184.548H517.256V112.459V112.471Z\",\n  \"M440.228 112.471H476.484C488.313 112.471 496.306 115.358 501.463 120.195C505.954 124.416 508.25 130.073 508.25 136.976V137.181C508.25 148.304 502.118 155.617 492.47 159.427L510.765 184.548H486.337L470.891 162.712H461.474V184.548H440.228V112.459V112.471ZM475.612 147.073C482.732 147.073 487.004 143.775 487.004 138.528V138.323C487.004 132.562 482.514 129.676 475.496 129.676H461.474V147.085H475.599L475.612 147.073Z\",\n  \"M731.175 91.0205L741.927 78.1782C748.996 83.7462 756.552 86.5302 764.519 86.5302C769.792 86.5302 772.576 84.8367 772.576 81.7576V81.5523C772.576 78.563 770.28 77.1775 760.735 74.7912C746.006 71.4042 734.473 67.3244 734.473 53.0067V52.8014C734.473 39.7667 744.723 30.5038 761.44 30.5038C773.384 30.5038 782.532 33.6855 790.101 39.7538L780.454 53.3916C774.09 48.7088 767.213 46.5278 760.953 46.5278C756.283 46.5278 753.986 48.3111 753.986 51.0053V51.2106C753.986 54.2896 756.373 55.8805 766.123 57.9717C782.044 61.4485 792 66.6316 792 79.6664V79.8717C792 94.0996 780.749 102.567 763.839 102.567C751.408 102.567 739.964 98.6797 731.201 91.0205H731.175Z\",\n  \"M659.048 70.2111V30.4781H678.87V69.8005C678.87 80.0128 683.924 84.8624 691.917 84.8624C699.91 84.8624 705.055 80.3079 705.055 70.3009V30.4781H724.876V69.7107C724.876 92.4574 711.829 102.567 691.712 102.567C671.595 102.567 659.061 92.4574 659.061 70.2111H659.048Z\",\n  \"M651.748 30.4781L628.847 65.5924L652.736 102.554H630.541L617.198 80.7184L603.753 102.554H582.045L605.934 65.9004L583.046 30.4781H605.241L617.493 50.7616L630.041 30.4781H651.748Z\",\n  \"M517.256 30.4781H575.233V47.3617H537.027V58.3823H571.628V74.1369H537.027V85.568H575.746V102.554H517.256V30.4781Z\",\n  \"M440.228 30.4781H458.869L488.531 68.5817V30.4781H508.301V102.567H490.905L460.011 63.0266V102.567H440.241V30.4781H440.228Z\",\n]\n\nfunction NxLogo({\n  variant = \"emblem\",\n  className,\n  monochrome = false,\n  emblemClassName,\n  wordmarkClassName,\n  ...props\n}: Omit<React.ComponentProps<\"span\">, \"children\"> & {\n  variant?: NxLogoVariant\n  /** Collapse to a single currentColor for solid brand bands (pair with a text colour). */\n  monochrome?: boolean\n  /** Override just the arrow emblem's colour (ignored when `monochrome`). */\n  emblemClassName?: string\n  /**\n   * Override just the wordmark letters' colour (ignored when `monochrome`).\n   * The on-navy brand treatment in any colour mode is\n   * `emblemClassName=\"fill-accent-400\" wordmarkClassName=\"fill-white\"`.\n   */\n  wordmarkClassName?: string\n}) {\n  // Two-tone defaults: navy-on-light / yellow-on-dark arrow, navy/white wordmark.\n  // `monochrome` collapses both to `currentColor` so a caller-set text colour paints the whole mark.\n  const emblemFill = monochrome\n    ? \"fill-current\"\n    : cn(\"fill-brand-600 dark:fill-accent-400\", emblemClassName)\n  const wordFill = monochrome\n    ? \"fill-current\"\n    : cn(\"fill-brand-600 dark:fill-white\", wordmarkClassName)\n\n  return (\n    <span\n      data-slot=\"nx-logo\"\n      data-variant={variant}\n      className={cn(\"inline-flex h-6 items-center text-brand-600\", className)}\n      {...props}\n    >\n      {variant === \"emblem\" ? (\n        // The emblem carries its own two-tone default; monochrome forces currentColor.\n        <NxEmblem\n          weight=\"regular\"\n          title=\"Nexus ReGen\"\n          className={cn(\n            \"h-full w-auto\",\n            monochrome\n              ? \"text-current\"\n              : cn(\"text-brand-600 dark:text-accent-400\", emblemClassName)\n          )}\n        />\n      ) : null}\n\n      {variant === \"lockup\" ? (\n        <svg\n          viewBox=\"0 0 1000 400\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          role=\"img\"\n          aria-label=\"Nexus ReGen\"\n          className=\"h-full w-auto\"\n        >\n          <title>Nexus ReGen</title>\n          <g transform=\"translate(76.80596020977275 93.4595854490968) scale(1.6648630650129028)\">\n            {/* Arrow always down-left — never transform this. */}\n            <path\n              className={emblemFill}\n              d={ARROW_KEYLINE}\n              fillRule=\"evenodd\"\n              clipRule=\"evenodd\"\n            />\n            <path\n              className={wordFill}\n              d={NR_MONOGRAM}\n              fillRule=\"evenodd\"\n              clipRule=\"evenodd\"\n            />\n          </g>\n        </svg>\n      ) : null}\n\n      {variant === \"wordmark\" ? (\n        // viewBox cropped to just the letterforms (arrow excluded), computed\n        // from the letters' transformed bounds in wordmark-mono-white.svg.\n        <svg\n          viewBox=\"546 125 393 183\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          role=\"img\"\n          aria-label=\"Nexus ReGen\"\n          className=\"h-full w-auto\"\n        >\n          <title>Nexus ReGen</title>\n          <g transform=\"translate(80 100) scale(1.069767441860465)\">\n            {WORDMARK_LETTERS.map((d, i) => (\n              <path key={i} className={wordFill} d={d} />\n            ))}\n          </g>\n        </svg>\n      ) : null}\n    </span>\n  )\n}\n\nexport { NxLogo }\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:block"
}