{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "hjconsult",
  "homepage": "https://hjconsult.no",
  "items": [
    {
      "name": "lib",
      "type": "registry:lib",
      "title": "Lib",
      "description": "cn(), cva, focus ring and --hj-motion-* token readers.",
      "dependencies": ["class-variance-authority", "clsx", "tailwind-merge"],
      "registryDependencies": [],
      "files": [
        {
          "path": "src/lib/index.ts",
          "type": "registry:lib",
          "target": "hj/lib/index.ts"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "motion",
      "type": "registry:lib",
      "title": "Motion",
      "description": "MotionProvider (Lenis + GSAP ScrollTrigger), Reveal, SplitHeading, Magnetic, Parallax, Counter, motionTokens and MotionPresets.",
      "dependencies": ["@gsap/react", "gsap", "lenis", "motion"],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/motion/index.ts",
          "type": "registry:lib",
          "target": "hj/motion/index.ts"
        },
        {
          "path": "src/motion/gsap.ts",
          "type": "registry:lib",
          "target": "hj/motion/gsap.ts"
        },
        {
          "path": "src/motion/tokens.ts",
          "type": "registry:lib",
          "target": "hj/motion/tokens.ts"
        },
        {
          "path": "src/motion/provider.tsx",
          "type": "registry:lib",
          "target": "hj/motion/provider.tsx"
        },
        {
          "path": "src/motion/use-reduced-motion.ts",
          "type": "registry:lib",
          "target": "hj/motion/use-reduced-motion.ts"
        },
        {
          "path": "src/motion/reveal.tsx",
          "type": "registry:lib",
          "target": "hj/motion/reveal.tsx"
        },
        {
          "path": "src/motion/split-heading.tsx",
          "type": "registry:lib",
          "target": "hj/motion/split-heading.tsx"
        },
        {
          "path": "src/motion/magnetic.tsx",
          "type": "registry:lib",
          "target": "hj/motion/magnetic.tsx"
        },
        {
          "path": "src/motion/parallax.tsx",
          "type": "registry:lib",
          "target": "hj/motion/parallax.tsx"
        },
        {
          "path": "src/motion/counter.tsx",
          "type": "registry:lib",
          "target": "hj/motion/counter.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "a11y",
      "type": "registry:lib",
      "title": "A11y",
      "description": "SkipLink, VisuallyHidden, LiveRegion/announce() and useReducedMotion.",
      "dependencies": ["@radix-ui/react-slot"],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/motion"],
      "files": [
        {
          "path": "src/a11y/index.ts",
          "type": "registry:lib",
          "target": "hj/a11y/index.ts"
        },
        {
          "path": "src/a11y/visually-hidden.tsx",
          "type": "registry:lib",
          "target": "hj/a11y/visually-hidden.tsx"
        },
        {
          "path": "src/a11y/skip-link.tsx",
          "type": "registry:lib",
          "target": "hj/a11y/skip-link.tsx"
        },
        {
          "path": "src/a11y/live-region.tsx",
          "type": "registry:lib",
          "target": "hj/a11y/live-region.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "styles",
      "type": "registry:file",
      "title": "Base styles",
      "description": "Base layer: colour scheme, selection, focus, reduced-motion cut, Lenis and reveal/marquee/skeleton rules. Import after Tailwind and the token sheets.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "src/styles.css",
          "type": "registry:file",
          "target": "hj/styles.css"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "Primary/secondary/outline/ghost/link button with asChild, loading, icon slots and magnetic hover.",
      "dependencies": ["@radix-ui/react-slot", "class-variance-authority", "lucide-react"],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/motion"],
      "files": [
        {
          "path": "src/components/button/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/button/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "icon-button",
      "type": "registry:ui",
      "title": "Icon button",
      "description": "Square icon-only button with a required accessible label.",
      "dependencies": ["@radix-ui/react-slot", "lucide-react"],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/motion", "@hjconsult/button"],
      "files": [
        {
          "path": "src/components/icon-button/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/icon-button/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "link",
      "type": "registry:ui",
      "title": "Link",
      "description": "Styled anchor with animated underline; external links get rel/target and a screen-reader suffix.",
      "dependencies": ["@radix-ui/react-slot", "class-variance-authority"],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/a11y"],
      "files": [
        {
          "path": "src/components/link/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/link/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "heading",
      "type": "registry:ui",
      "title": "Heading",
      "description": "Semantic level independent from fluid visual size; balanced by default.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/heading/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/heading/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "text",
      "type": "registry:ui",
      "title": "Text",
      "description": "Body copy with size, tone and prose measure.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/text/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/text/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "eyebrow",
      "type": "registry:ui",
      "title": "Eyebrow",
      "description": "Mono small-caps label with optional dot or index.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/eyebrow/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/eyebrow/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "container",
      "type": "registry:ui",
      "title": "Container",
      "description": "Centered column with the fluid gutter.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/container/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/container/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "section",
      "type": "registry:ui",
      "title": "Section",
      "description": "Semantic section with fluid vertical rhythm and an inner container.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/container"],
      "files": [
        {
          "path": "src/components/section/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/section/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "grid",
      "type": "registry:ui",
      "title": "Grid & Bento",
      "description": "Responsive grid and a 12-column bento with spanning items.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/grid/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/grid/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "Surface/raised/glass/outline card with interactive lift and slot subcomponents.",
      "dependencies": ["@radix-ui/react-slot", "class-variance-authority"],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/heading", "@hjconsult/text"],
      "files": [
        {
          "path": "src/components/card/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/card/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "Status pill in neutral/accent/alt/positive/warning/danger.",
      "dependencies": ["class-variance-authority"],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/badge/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/badge/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "marquee",
      "type": "registry:ui",
      "title": "Marquee",
      "description": "Pure-CSS infinite scroll; pauses on hover/focus and wraps statically under reduced motion.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/styles"],
      "files": [
        {
          "path": "src/components/marquee/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/marquee/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "Decorative or semantic rule, horizontal or vertical.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/separator/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/separator/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "Shimmering placeholder; static under reduced motion.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/styles"],
      "files": [
        {
          "path": "src/components/skeleton/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/skeleton/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "Round portrait with initials fallback.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/avatar/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/avatar/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "stat",
      "type": "registry:ui",
      "title": "Stat",
      "description": "Big tabular figure with label and trend.",
      "dependencies": ["lucide-react"],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/stat/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/stat/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "logo-mark",
      "type": "registry:ui",
      "title": "Logo mark",
      "description": "Sizing slot for the brand mark.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/logo-mark/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/logo-mark/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "field",
      "type": "registry:ui",
      "title": "Field",
      "description": "Label, description and error wiring for a single control.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib"],
      "files": [
        {
          "path": "src/components/field/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/field/index.tsx"
        },
        {
          "path": "src/components/field/context.ts",
          "type": "registry:ui",
          "target": "hj/components/field/context.ts"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "Text input that reads Field wiring.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/field"],
      "files": [
        {
          "path": "src/components/input/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/input/index.tsx"
        }
      ],
      "cssVars": {}
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "Auto-sizing textarea that reads Field wiring.",
      "dependencies": [],
      "registryDependencies": ["@hjconsult/lib", "@hjconsult/field", "@hjconsult/input"],
      "files": [
        {
          "path": "src/components/textarea/index.tsx",
          "type": "registry:ui",
          "target": "hj/components/textarea/index.tsx"
        }
      ],
      "cssVars": {}
    }
  ]
}
