{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "reveal",
  "type": "registry:ui",
  "title": "Reveal",
  "description": "Secondary content that appears while its scope is hovered, focused, or holds an open menu, and always shows on touch.",
  "dependencies": [
    "@base-ui/react@^1.9.0"
  ],
  "registryDependencies": [
    "https://control-ui.dev/r/core.json"
  ],
  "files": [
    {
      "path": "src/registry/knob-contracts/reveal-knobs.ts",
      "target": "@components/control-ui/knob-contracts/reveal-knobs.ts",
      "type": "registry:component",
      "content": "// Generated from src/registry/sources/control-ui/recipes/reveal.css by scripts/gen-knob-contracts.ts — run `bun run sync:knobs`.\nexport const revealKnobs = [\"--cui-reveal-hidden-opacity\"] as const;\nexport type RevealKnobStyle = Partial<Record<(typeof revealKnobs)[number], string>>;\n"
    },
    {
      "path": "src/registry/sources/control-ui/recipes/reveal.css",
      "target": "@components/control-ui/styles/recipes/reveal.css",
      "type": "registry:file",
      "content": "@layer components {\n  :where([data-control-family=\"reveal\"][data-slot=\"scope\"]) {\n    --cui-reveal-hidden-opacity: 0;\n  }\n\n  :where([data-control-family=\"reveal\"][data-slot=\"content\"]) {\n    transition-property: opacity;\n    transition-duration: var(--duration-fast);\n    transition-timing-function: var(--ease-standard);\n  }\n\n  @media (hover: hover) and (pointer: fine) {\n    :where(\n        [data-control-family=\"reveal\"][data-slot=\"scope\"]:not(:hover, :focus-within, :has([data-popup-open]))\n          [data-control-family=\"reveal\"][data-slot=\"content\"]\n      ) {\n      opacity: var(--cui-reveal-hidden-opacity);\n    }\n  }\n}\n\n@property --cui-reveal-hidden-opacity {\n  syntax: \"<number>\";\n  inherits: true;\n  initial-value: 1;\n}\n"
    },
    {
      "path": "src/registry/sources/control-ui/ui/reveal.tsx",
      "target": "@components/control-ui/ui/reveal.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\n\nimport { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps, CSSProperties } from \"react\";\nimport type { RenderProp } from \"@/components/control-ui/control-props\";\nimport type { RevealKnobStyle } from \"@/components/control-ui/knob-contracts/reveal-knobs\";\n\nexport type RevealScopeProps = Omit<ComponentProps<\"div\">, \"style\"> & {\n  render?: RenderProp<ComponentProps<\"div\">>;\n  style?: CSSProperties & RevealKnobStyle;\n};\n\nexport type RevealProps = Omit<ComponentProps<\"span\">, \"style\"> & {\n  render?: RenderProp<ComponentProps<\"span\">>;\n  style?: CSSProperties & RevealKnobStyle;\n};\n\nexport function RevealScope({ render, ...props }: RevealScopeProps) {\n  return useRender({\n    defaultTagName: \"div\",\n    render,\n    props: {\n      ...props,\n      \"data-control-ui\": \"reveal\",\n      \"data-control-family\": \"reveal\",\n      \"data-slot\": \"scope\",\n    },\n  });\n}\n\nexport function Reveal({ render, ...props }: RevealProps) {\n  return useRender({\n    defaultTagName: \"span\",\n    render,\n    props: {\n      ...props,\n      \"data-control-ui\": \"reveal\",\n      \"data-control-family\": \"reveal\",\n      \"data-slot\": \"content\",\n    },\n  });\n}\n"
    }
  ],
  "css": {
    "@import \"../components/control-ui/styles/recipes/reveal.css\"": {}
  }
}
