{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "scroll-area-gutter",
  "title": "Area-gutter scroll",
  "description": "Styled scroll: the Area-gutter set. 5 decorative scroll variations (RailScrollArea, GrooveScrollArea, WideScrollArea, InsetScrollArea, BorderedScrollArea) on the ai2 token system, driven by CSS token transitions and sized sm to xl. Part of the free styled layer.",
  "dependencies": [],
  "registryDependencies": [
    "@ai2/tokens"
  ],
  "files": [
    {
      "path": "registry/ai2/styled/scroll-area-gutter.tsx",
      "content": "\"use client\"\n\nimport type * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\n/* Scroll-area gutter family: 5 decorative scroll areas. They draw a VISIBLE rail or gutter (track) for the scrollbar, and the thumb slides inside that rail. Track and thumb colours come ONLY from tokens (alpha via color-mix). size -> the viewport height. */\n\nexport type StyledSize = \"sm\" | \"md\" | \"lg\" | \"xl\"\n\nconst height: Record<StyledSize, string> = {\n  sm: \"h-40\",\n  md: \"h-56\",\n  lg: \"h-72\",\n  xl: \"h-96\",\n}\n\nconst base = \"w-full overflow-y-auto rounded-lg border border-border bg-surface-2 p-3\"\n\n/* Varsayilan icerik: kaydirmayi tetikleyecek kadar uzun, token-stilli satirlar. */\nfunction DefaultRows({ count = 16 }: { count?: number }) {\n  return (\n    <div className=\"flex flex-col gap-2\">\n      {Array.from({ length: count }).map((_, i) => (\n        <div\n          key={i}\n          className=\"flex items-center justify-between rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground\"\n        >\n          <span className=\"font-medium\">Satir {i + 1}</span>\n          <span className=\"text-xs text-muted-foreground\">token</span>\n        </div>\n      ))}\n    </div>\n  )\n}\n\ntype Props = {\n  className?: string\n  size?: StyledSize\n  children?: React.ReactNode\n}\n\n/* Rail: dolu, hap seklinde ray; thumb border-transparent + bg-clip-content ile iceride. */\nexport function RailScrollArea({ className, size = \"md\", children }: Props) {\n  return (\n    <div\n      data-slot=\"styled-scroll-area\"\n      className={cn(\n        base,\n        height[size],\n        \"[scrollbar-width:thin] [scrollbar-color:var(--color-border)_var(--color-surface-3)]\",\n        \"[&::-webkit-scrollbar]:w-3.5\",\n        \"[&::-webkit-scrollbar-track]:rounded-full [&::-webkit-scrollbar-track]:bg-[color-mix(in_oklab,var(--color-foreground)_6%,transparent)]\",\n        \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-[3px] [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar-thumb]:bg-clip-content\",\n        className\n      )}\n    >\n      {children ?? <DefaultRows />}\n    </div>\n  )\n}\n\n/* Groove: cerceveli, oyuk goruntulu ray (border + ic bg); thumb dolu. */\nexport function GrooveScrollArea({ className, size = \"md\", children }: Props) {\n  return (\n    <div\n      data-slot=\"styled-scroll-area\"\n      className={cn(\n        base,\n        height[size],\n        \"[scrollbar-width:thin] [scrollbar-color:var(--color-border)_var(--color-surface-3)]\",\n        \"[&::-webkit-scrollbar]:w-3.5\",\n        \"[&::-webkit-scrollbar-track]:rounded-full [&::-webkit-scrollbar-track]:border [&::-webkit-scrollbar-track]:border-solid [&::-webkit-scrollbar-track]:border-border [&::-webkit-scrollbar-track]:bg-[color-mix(in_oklab,var(--color-foreground)_4%,transparent)]\",\n        \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-[3px] [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar-thumb]:bg-clip-content\",\n        className\n      )}\n    >\n      {children ?? <DefaultRows />}\n    </div>\n  )\n}\n\n/* Wide: genis, belirgin ray + thumb. */\nexport function WideScrollArea({ className, size = \"md\", children }: Props) {\n  return (\n    <div\n      data-slot=\"styled-scroll-area\"\n      className={cn(\n        base,\n        height[size],\n        \"[scrollbar-width:auto] [scrollbar-color:var(--color-border)_var(--color-surface-3)]\",\n        \"[&::-webkit-scrollbar]:w-5\",\n        \"[&::-webkit-scrollbar-track]:rounded-full [&::-webkit-scrollbar-track]:bg-[color-mix(in_oklab,var(--color-foreground)_8%,transparent)]\",\n        \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-4 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-[color-mix(in_oklab,var(--color-foreground)_35%,transparent)] [&::-webkit-scrollbar-thumb]:bg-clip-content\",\n        className\n      )}\n    >\n      {children ?? <DefaultRows />}\n    </div>\n  )\n}\n\n/* Inset: the rail leaves a gap at the top and bottom (margin) and the thumb slides inside it. */\nexport function InsetScrollArea({ className, size = \"md\", children }: Props) {\n  return (\n    <div\n      data-slot=\"styled-scroll-area\"\n      className={cn(\n        base,\n        height[size],\n        \"[scrollbar-width:thin] [scrollbar-color:var(--color-border)_var(--color-surface-3)]\",\n        \"[&::-webkit-scrollbar]:w-3\",\n        \"[&::-webkit-scrollbar-track]:my-2 [&::-webkit-scrollbar-track]:rounded-full [&::-webkit-scrollbar-track]:bg-[color-mix(in_oklab,var(--color-foreground)_6%,transparent)]\",\n        \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-2 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar-thumb]:bg-clip-content\",\n        className\n      )}\n    >\n      {children ?? <DefaultRows />}\n    </div>\n  )\n}\n\n/* Bordered: ray seffaf, thumb token cerceveli (hollow-ish). */\nexport function BorderedScrollArea({ className, size = \"md\", children }: Props) {\n  return (\n    <div\n      data-slot=\"styled-scroll-area\"\n      className={cn(\n        base,\n        height[size],\n        \"[scrollbar-width:thin] [scrollbar-color:var(--color-border)_transparent]\",\n        \"[&::-webkit-scrollbar]:w-3.5\",\n        \"[&::-webkit-scrollbar-track]:rounded-full [&::-webkit-scrollbar-track]:bg-[color-mix(in_oklab,var(--color-foreground)_3%,transparent)]\",\n        \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-border [&::-webkit-scrollbar-thumb]:bg-[color-mix(in_oklab,var(--color-foreground)_10%,transparent)]\",\n        className\n      )}\n    >\n      {children ?? <DefaultRows />}\n    </div>\n  )\n}\n",
      "type": "registry:component",
      "target": "components/ui/scroll-area-gutter.tsx"
    }
  ],
  "categories": [
    "styled",
    "scroll"
  ],
  "type": "registry:component"
}