{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "comp-27",
  "type": "registry:component",
  "registryDependencies": [
    "https://coss.com/origin/r/input.json",
    "https://coss.com/origin/r/label.json"
  ],
  "files": [
    {
      "path": "registry/default/components/comp-27.tsx",
      "content": "\"use client\";\n\nimport { LoaderCircleIcon, MicIcon, SearchIcon } from \"lucide-react\";\nimport { useEffect, useId, useState } from \"react\";\n\nimport { Input } from \"@/registry/default/ui/input\";\nimport { Label } from \"@/registry/default/ui/label\";\n\nexport default function Component() {\n  const id = useId();\n  const [inputValue, setInputValue] = useState(\"\");\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n\n  useEffect(() => {\n    if (inputValue) {\n      setIsLoading(true);\n      const timer = setTimeout(() => {\n        setIsLoading(false);\n      }, 500);\n      return () => clearTimeout(timer);\n    }\n    setIsLoading(false);\n  }, [inputValue]);\n\n  return (\n    <div className=\"*:not-first:mt-2\">\n      <Label htmlFor={id}>Search input with loader</Label>\n      <div className=\"relative\">\n        <Input\n          className=\"peer ps-9 pe-9\"\n          id={id}\n          onChange={(e) => setInputValue(e.target.value)}\n          placeholder=\"Search...\"\n          type=\"search\"\n          value={inputValue}\n        />\n        <div className=\"pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 text-muted-foreground/80 peer-disabled:opacity-50\">\n          {isLoading ? (\n            <LoaderCircleIcon\n              aria-label=\"Loading...\"\n              className=\"animate-spin\"\n              role=\"status\"\n              size={16}\n            />\n          ) : (\n            <SearchIcon aria-hidden=\"true\" size={16} />\n          )}\n        </div>\n        <button\n          aria-label=\"Press to speak\"\n          className=\"absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md text-muted-foreground/80 outline-none transition-[color,box-shadow] hover:text-foreground focus:z-10 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n          type=\"submit\"\n        >\n          <MicIcon aria-hidden=\"true\" size={16} />\n        </button>\n      </div>\n    </div>\n  );\n}\n",
      "type": "registry:component"
    }
  ],
  "meta": {
    "tags": [
      "input",
      "label",
      "button",
      "search"
    ]
  }
}